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

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 (318) hide show
  1. package/PLUGIN.mdl +9 -9
  2. package/dist/lib/neutral/{DeploymentDialog-M3AFYQHC.mjs → DeploymentDialog-7OIIL7LB.mjs} +10 -10
  3. package/dist/lib/neutral/DeploymentDialog-7OIIL7LB.mjs.map +7 -0
  4. package/dist/lib/neutral/{NotebookArticle-NV4AHOOS.mjs → NotebookArticle-AOBB3XGD.mjs} +28 -46
  5. package/dist/lib/neutral/NotebookArticle-AOBB3XGD.mjs.map +7 -0
  6. package/dist/lib/neutral/{ScriptArticle-QW26LOKU.mjs → ScriptArticle-I3DOJARR.mjs} +4 -4
  7. package/dist/lib/neutral/ScriptArticle-I3DOJARR.mjs.map +7 -0
  8. package/dist/lib/neutral/ScriptPlugin.mjs +6 -6
  9. package/dist/lib/neutral/ScriptPlugin.mjs.map +4 -4
  10. package/dist/lib/neutral/ScriptPlugin.node.mjs +3 -3
  11. package/dist/lib/neutral/ScriptPlugin.node.mjs.map +3 -3
  12. package/dist/lib/neutral/{ScriptProperties-RLXNAN3N.mjs → ScriptProperties-RHDQGMGT.mjs} +153 -154
  13. package/dist/lib/neutral/ScriptProperties-RHDQGMGT.mjs.map +7 -0
  14. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs +35 -0
  15. package/dist/lib/neutral/ScriptSettings-NS3ZY7ZR.mjs.map +7 -0
  16. package/dist/lib/neutral/{app-graph-builder-7AWFCEQF.mjs → app-graph-builder-POP3CX6G.mjs} +3 -3
  17. package/dist/lib/neutral/{app-graph-builder-7AWFCEQF.mjs.map → app-graph-builder-POP3CX6G.mjs.map} +3 -3
  18. package/dist/lib/neutral/capabilities/index.mjs +8 -8
  19. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  20. package/dist/lib/neutral/capabilities/node.mjs +6 -6
  21. package/dist/lib/neutral/capabilities/node.mjs.map +3 -3
  22. package/dist/lib/neutral/{chunk-HABDH5SS.mjs → chunk-652CIABA.mjs} +14 -13
  23. package/dist/lib/neutral/chunk-652CIABA.mjs.map +7 -0
  24. package/dist/lib/neutral/{chunk-TRKXIP2Q.mjs → chunk-6DOWVKIW.mjs} +4 -5
  25. package/dist/lib/neutral/chunk-6DOWVKIW.mjs.map +7 -0
  26. package/dist/lib/neutral/{chunk-BDHDBPVM.mjs → chunk-CHNFYLKW.mjs} +12 -12
  27. package/dist/lib/neutral/chunk-CHNFYLKW.mjs.map +7 -0
  28. package/dist/lib/neutral/{chunk-VXDJH6OL.mjs → chunk-INFWOSTM.mjs} +14 -8
  29. package/dist/lib/neutral/chunk-INFWOSTM.mjs.map +7 -0
  30. package/dist/lib/neutral/{chunk-BKXYHCJ6.mjs → chunk-KSVKXCTX.mjs} +2 -2
  31. package/dist/lib/neutral/chunk-NVV5UYY4.mjs +50 -0
  32. package/dist/lib/neutral/chunk-NVV5UYY4.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-USJ44FIU.mjs +8 -0
  34. package/dist/lib/neutral/{chunk-XFM63AKT.mjs.map → chunk-USJ44FIU.mjs.map} +1 -1
  35. package/dist/lib/neutral/{chunk-PHKPB5JN.mjs → chunk-WAGQ77UQ.mjs} +16 -16
  36. package/dist/lib/neutral/chunk-WAGQ77UQ.mjs.map +7 -0
  37. package/dist/lib/neutral/components/index.mjs +124 -93
  38. package/dist/lib/neutral/components/index.mjs.map +4 -4
  39. package/dist/lib/neutral/containers/index.mjs +6 -4
  40. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  41. package/dist/lib/neutral/{create-AAA53WDL.mjs → create-SGHWWTET.mjs} +4 -4
  42. package/dist/lib/neutral/{create-AAA53WDL.mjs.map → create-SGHWWTET.mjs.map} +4 -4
  43. package/dist/lib/neutral/{create-object-FZM5ASWM.mjs → create-object-QW66KQWS.mjs} +1 -3
  44. package/dist/lib/neutral/{create-object-FZM5ASWM.mjs.map → create-object-QW66KQWS.mjs.map} +3 -3
  45. package/dist/lib/neutral/{create-script-P46JOEHH.mjs → create-script-CIEJOBIU.mjs} +4 -4
  46. package/dist/lib/neutral/{create-script-P46JOEHH.mjs.map → create-script-CIEJOBIU.mjs.map} +3 -3
  47. package/dist/lib/neutral/{delete-HCQIQFVP.mjs → delete-72RXVLVI.mjs} +3 -3
  48. package/dist/lib/neutral/{delete-HCQIQFVP.mjs.map → delete-72RXVLVI.mjs.map} +1 -1
  49. package/dist/lib/neutral/{deploy-7JVMMHSH.mjs → deploy-PJTJAQZY.mjs} +10 -6
  50. package/dist/lib/neutral/deploy-PJTJAQZY.mjs.map +7 -0
  51. package/dist/lib/neutral/hooks/index.mjs +6 -6
  52. package/dist/lib/neutral/hooks/index.mjs.map +3 -3
  53. package/dist/lib/neutral/index.mjs +9 -9
  54. package/dist/lib/neutral/{inspect-invocations-TAOYDT4H.mjs → inspect-invocations-ZUXVUAML.mjs} +5 -5
  55. package/dist/lib/neutral/inspect-invocations-ZUXVUAML.mjs.map +7 -0
  56. package/dist/lib/neutral/{install-function-FJIE2JAI.mjs → install-function-YFDZLVMJ.mjs} +4 -4
  57. package/dist/lib/neutral/{install-function-FJIE2JAI.mjs.map → install-function-YFDZLVMJ.mjs.map} +1 -1
  58. package/dist/lib/neutral/{invoke-3HVWY2KF.mjs → invoke-CDRBQ2WA.mjs} +4 -4
  59. package/dist/lib/neutral/{invoke-3HVWY2KF.mjs.map → invoke-CDRBQ2WA.mjs.map} +1 -1
  60. package/dist/lib/neutral/meta.json +1 -1
  61. package/dist/lib/neutral/meta.mjs +1 -1
  62. package/dist/lib/neutral/{operation-handler-YMUADD7Y.mjs → operation-handler-M3B6IRMV.mjs} +3 -3
  63. package/dist/lib/neutral/{operation-handler-YMUADD7Y.mjs.map → operation-handler-M3B6IRMV.mjs.map} +1 -1
  64. package/dist/lib/neutral/operations/index.mjs +1 -1
  65. package/dist/lib/neutral/plugin.mjs +2 -2
  66. package/dist/lib/neutral/{query-deployed-functions-F4FHJNWO.mjs → query-deployed-functions-RBQMGON2.mjs} +4 -4
  67. package/dist/lib/neutral/{query-deployed-functions-F4FHJNWO.mjs.map → query-deployed-functions-RBQMGON2.mjs.map} +1 -1
  68. package/dist/lib/neutral/{react-surface-ACNZ35FV.mjs → react-surface-GEXOZLBC.mjs} +7 -8
  69. package/dist/lib/neutral/react-surface-GEXOZLBC.mjs.map +7 -0
  70. package/dist/lib/neutral/{read-RQESBAQI.mjs → read-OY3K5R3V.mjs} +3 -3
  71. package/dist/lib/neutral/{read-RQESBAQI.mjs.map → read-OY3K5R3V.mjs.map} +3 -3
  72. package/dist/lib/neutral/{settings-VJBW4OMK.mjs → settings-FD7HXEY6.mjs} +3 -3
  73. package/dist/lib/neutral/{settings-VJBW4OMK.mjs.map → settings-FD7HXEY6.mjs.map} +3 -3
  74. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs +15 -0
  75. package/dist/lib/neutral/skill-definition-JZ7UYBT7.mjs.map +7 -0
  76. package/dist/lib/neutral/skills/index.mjs +10 -0
  77. package/dist/lib/neutral/templates/index.mjs +1 -1
  78. package/dist/lib/neutral/translations.mjs +7 -8
  79. package/dist/lib/neutral/translations.mjs.map +3 -3
  80. package/dist/lib/neutral/types/index.mjs +2 -2
  81. package/dist/lib/neutral/update-Z5VGOLBN.mjs +44 -0
  82. package/dist/lib/neutral/update-Z5VGOLBN.mjs.map +7 -0
  83. package/dist/types/dx.config.d.ts +28 -0
  84. package/dist/types/dx.config.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -2
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/compiler.d.ts +1 -2
  88. package/dist/types/src/capabilities/compiler.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/create-object.d.ts +1 -12
  90. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/index.d.ts +6 -17
  92. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/node.d.ts +4 -15
  94. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  96. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/settings.d.ts +1 -3
  98. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
  100. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
  101. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  102. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +2 -3
  103. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  104. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +18 -21
  105. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -1
  107. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  108. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +18 -21
  109. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  110. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  111. package/dist/types/src/components/index.d.ts +0 -2
  112. package/dist/types/src/components/index.d.ts.map +1 -1
  113. package/dist/types/src/constants.d.ts.map +1 -1
  114. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  115. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts +18 -21
  116. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  117. package/dist/types/src/containers/NotebookArticle/NotebookArticle.d.ts.map +1 -1
  118. package/dist/types/src/containers/NotebookArticle/NotebookArticle.stories.d.ts.map +1 -1
  119. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts +20 -23
  120. package/dist/types/src/containers/ScriptArticle/ScriptArticle.stories.d.ts.map +1 -1
  121. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -1
  122. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts +20 -23
  123. package/dist/types/src/containers/ScriptProperties/ScriptProperties.stories.d.ts.map +1 -1
  124. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts +7 -0
  125. package/dist/types/src/containers/ScriptProperties/SkillEditor.d.ts.map +1 -0
  126. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts +8 -0
  127. package/dist/types/src/containers/ScriptSettings/ScriptSettings.d.ts.map +1 -0
  128. package/dist/types/src/{components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts → containers/ScriptSettings/ScriptSettings.stories.d.ts} +20 -23
  129. package/dist/types/src/containers/ScriptSettings/ScriptSettings.stories.d.ts.map +1 -0
  130. package/dist/types/src/containers/ScriptSettings/index.d.ts +2 -0
  131. package/dist/types/src/containers/ScriptSettings/index.d.ts.map +1 -0
  132. package/dist/types/src/containers/index.d.ts +1 -0
  133. package/dist/types/src/containers/index.d.ts.map +1 -1
  134. package/dist/types/src/hooks/deploy.d.ts +14 -15
  135. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  136. package/dist/types/src/hooks/format.d.ts +6 -1
  137. package/dist/types/src/hooks/format.d.ts.map +1 -1
  138. package/dist/types/src/hooks/template.d.ts +6 -1
  139. package/dist/types/src/hooks/template.d.ts.map +1 -1
  140. package/dist/types/src/index.d.ts +1 -1
  141. package/dist/types/src/index.d.ts.map +1 -1
  142. package/dist/types/src/meta.d.ts +32 -2
  143. package/dist/types/src/meta.d.ts.map +1 -1
  144. package/dist/types/src/operations/create-script.d.ts.map +1 -1
  145. package/dist/types/src/skills/functions/create.d.ts.map +1 -0
  146. package/dist/types/src/skills/functions/definitions.d.ts +75 -0
  147. package/dist/types/src/skills/functions/definitions.d.ts.map +1 -0
  148. package/dist/types/src/skills/functions/delete.d.ts +7 -0
  149. package/dist/types/src/skills/functions/delete.d.ts.map +1 -0
  150. package/dist/types/src/skills/functions/deploy.d.ts +11 -0
  151. package/dist/types/src/skills/functions/deploy.d.ts.map +1 -0
  152. package/dist/types/src/skills/functions/index.d.ts.map +1 -0
  153. package/dist/types/src/skills/functions/inspect-invocations.d.ts +18 -0
  154. package/dist/types/src/skills/functions/inspect-invocations.d.ts.map +1 -0
  155. package/dist/types/src/skills/functions/install-function.d.ts.map +1 -0
  156. package/dist/types/src/skills/functions/invoke.d.ts +11 -0
  157. package/dist/types/src/skills/functions/invoke.d.ts.map +1 -0
  158. package/dist/types/src/skills/functions/query-deployed-functions.d.ts.map +1 -0
  159. package/dist/types/src/skills/functions/read.d.ts +11 -0
  160. package/dist/types/src/skills/functions/read.d.ts.map +1 -0
  161. package/dist/types/src/skills/functions/update.d.ts +16 -0
  162. package/dist/types/src/skills/functions/update.d.ts.map +1 -0
  163. package/dist/types/src/skills/index.d.ts +2 -0
  164. package/dist/types/src/skills/index.d.ts.map +1 -0
  165. package/dist/types/src/skills/script-skill.d.ts +4 -0
  166. package/dist/types/src/skills/script-skill.d.ts.map +1 -0
  167. package/dist/types/src/templates/chess-bot.d.ts +1 -4
  168. package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
  169. package/dist/types/src/templates/commentary.d.ts +1 -4
  170. package/dist/types/src/templates/commentary.d.ts.map +1 -1
  171. package/dist/types/src/testing/test-script.d.ts.map +1 -1
  172. package/dist/types/src/translations.d.ts +18 -21
  173. package/dist/types/src/translations.d.ts.map +1 -1
  174. package/dist/types/src/types/Notebook.d.ts +11 -81
  175. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  176. package/dist/types/src/types/ScriptCapabilities.d.ts.map +1 -1
  177. package/dist/types/src/types/ScriptEvents.d.ts.map +1 -1
  178. package/dist/types/src/types/ScriptOperation.d.ts +2 -10
  179. package/dist/types/src/types/ScriptOperation.d.ts.map +1 -1
  180. package/dist/types/src/util/deploy.d.ts +1 -1
  181. package/dist/types/src/util/deploy.d.ts.map +1 -1
  182. package/dist/types/tsconfig.tsbuildinfo +1 -1
  183. package/dx.config.ts +26 -0
  184. package/package.json +77 -75
  185. package/src/ScriptPlugin.node.ts +2 -2
  186. package/src/ScriptPlugin.test.ts +2 -2
  187. package/src/ScriptPlugin.tsx +3 -3
  188. package/src/capabilities/app-graph-builder.ts +2 -2
  189. package/src/capabilities/create-object.ts +0 -2
  190. package/src/capabilities/index.ts +1 -7
  191. package/src/capabilities/node.ts +1 -7
  192. package/src/capabilities/operation-handler.ts +1 -1
  193. package/src/capabilities/react-surface.tsx +11 -9
  194. package/src/capabilities/settings.ts +2 -2
  195. package/src/capabilities/skill-definition.ts +14 -0
  196. package/src/components/NotebookStack/NotebookCell.tsx +13 -31
  197. package/src/components/NotebookStack/NotebookMenu.tsx +1 -1
  198. package/src/components/NotebookStack/NotebookStack.stories.tsx +3 -3
  199. package/src/components/NotebookStack/NotebookStack.tsx +102 -44
  200. package/src/components/QueryEditor/QueryEditor.stories.tsx +2 -7
  201. package/src/components/ScriptToolbar/ScriptToolbar.tsx +3 -2
  202. package/src/components/TestPanel/TestPanel.tsx +1 -1
  203. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +2 -2
  204. package/src/components/TypescriptEditor/TypescriptEditor.tsx +7 -7
  205. package/src/components/index.ts +0 -4
  206. package/src/constants.ts +1 -1
  207. package/src/containers/DeploymentDialog/DeploymentDialog.tsx +15 -9
  208. package/src/containers/NotebookArticle/NotebookArticle.stories.tsx +6 -5
  209. package/src/containers/NotebookArticle/NotebookArticle.tsx +21 -43
  210. package/src/containers/ScriptArticle/ScriptArticle.stories.tsx +5 -5
  211. package/src/containers/ScriptArticle/ScriptArticle.tsx +3 -3
  212. package/src/containers/ScriptProperties/FunctionBinding.tsx +2 -2
  213. package/src/containers/ScriptProperties/FunctionPublishing.tsx +2 -2
  214. package/src/containers/ScriptProperties/ScriptProperties.stories.tsx +5 -5
  215. package/src/containers/ScriptProperties/ScriptProperties.tsx +13 -6
  216. package/src/containers/ScriptProperties/{BlueprintEditor.tsx → SkillEditor.tsx} +23 -23
  217. package/src/{components/ScriptPluginSettings/ScriptPluginSettings.stories.tsx → containers/ScriptSettings/ScriptSettings.stories.tsx} +4 -4
  218. package/src/containers/ScriptSettings/ScriptSettings.tsx +47 -0
  219. package/src/containers/ScriptSettings/index.ts +5 -0
  220. package/src/containers/index.ts +1 -0
  221. package/src/e2e/ai.test.ts +14 -11
  222. package/src/e2e/deploy.test.ts +5 -1
  223. package/src/hooks/deploy.ts +4 -4
  224. package/src/hooks/format.ts +1 -1
  225. package/src/index.ts +1 -1
  226. package/src/meta.ts +3 -19
  227. package/src/operations/create-script.ts +1 -1
  228. package/src/{blueprints → skills}/functions/create.ts +1 -1
  229. package/src/{blueprints → skills}/functions/definitions.ts +4 -2
  230. package/src/{blueprints → skills}/functions/deploy.ts +7 -2
  231. package/src/{blueprints → skills}/functions/inspect-invocations.ts +2 -2
  232. package/src/{blueprints → skills}/functions/read.ts +1 -1
  233. package/src/skills/functions/update.ts +48 -0
  234. package/src/skills/index.ts +5 -0
  235. package/src/{blueprints/script-blueprint.ts → skills/script-skill.ts} +12 -12
  236. package/src/templates/anthropic.ts +1 -1
  237. package/src/templates/chess-bot.ts +2 -2
  238. package/src/templates/commentary.ts +8 -7
  239. package/src/templates/discord.ts +1 -1
  240. package/src/templates/gmail.ts +1 -1
  241. package/src/testing/test-notebook.ts +5 -5
  242. package/src/testing/test-script.ts +1 -1
  243. package/src/translations.ts +7 -8
  244. package/src/types/Notebook.ts +9 -13
  245. package/src/types/ScriptCapabilities.ts +4 -2
  246. package/src/types/ScriptEvents.ts +1 -1
  247. package/src/types/ScriptOperation.ts +3 -3
  248. package/src/util/deploy.ts +7 -3
  249. package/src/util/functions.ts +3 -3
  250. package/dist/lib/neutral/DeploymentDialog-M3AFYQHC.mjs.map +0 -7
  251. package/dist/lib/neutral/NotebookArticle-NV4AHOOS.mjs.map +0 -7
  252. package/dist/lib/neutral/ScriptArticle-QW26LOKU.mjs.map +0 -7
  253. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs +0 -31
  254. package/dist/lib/neutral/ScriptPluginSettings-T4JMUSHN.mjs.map +0 -7
  255. package/dist/lib/neutral/ScriptProperties-RLXNAN3N.mjs.map +0 -7
  256. package/dist/lib/neutral/blueprint-definition-PJ7I3JIQ.mjs +0 -15
  257. package/dist/lib/neutral/blueprint-definition-PJ7I3JIQ.mjs.map +0 -7
  258. package/dist/lib/neutral/blueprints/index.mjs +0 -10
  259. package/dist/lib/neutral/chunk-BDHDBPVM.mjs.map +0 -7
  260. package/dist/lib/neutral/chunk-HABDH5SS.mjs.map +0 -7
  261. package/dist/lib/neutral/chunk-PHKPB5JN.mjs.map +0 -7
  262. package/dist/lib/neutral/chunk-TRKXIP2Q.mjs.map +0 -7
  263. package/dist/lib/neutral/chunk-UA3BWOCZ.mjs +0 -38
  264. package/dist/lib/neutral/chunk-UA3BWOCZ.mjs.map +0 -7
  265. package/dist/lib/neutral/chunk-VXDJH6OL.mjs.map +0 -7
  266. package/dist/lib/neutral/chunk-XFM63AKT.mjs +0 -8
  267. package/dist/lib/neutral/deploy-7JVMMHSH.mjs.map +0 -7
  268. package/dist/lib/neutral/inspect-invocations-TAOYDT4H.mjs.map +0 -7
  269. package/dist/lib/neutral/react-surface-ACNZ35FV.mjs.map +0 -7
  270. package/dist/lib/neutral/update-CO7B6UBS.mjs +0 -63
  271. package/dist/lib/neutral/update-CO7B6UBS.mjs.map +0 -7
  272. package/dist/types/src/blueprints/functions/create.d.ts.map +0 -1
  273. package/dist/types/src/blueprints/functions/definitions.d.ts +0 -135
  274. package/dist/types/src/blueprints/functions/definitions.d.ts.map +0 -1
  275. package/dist/types/src/blueprints/functions/delete.d.ts +0 -17
  276. package/dist/types/src/blueprints/functions/delete.d.ts.map +0 -1
  277. package/dist/types/src/blueprints/functions/deploy.d.ts +0 -21
  278. package/dist/types/src/blueprints/functions/deploy.d.ts.map +0 -1
  279. package/dist/types/src/blueprints/functions/index.d.ts.map +0 -1
  280. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts +0 -28
  281. package/dist/types/src/blueprints/functions/inspect-invocations.d.ts.map +0 -1
  282. package/dist/types/src/blueprints/functions/install-function.d.ts.map +0 -1
  283. package/dist/types/src/blueprints/functions/invoke.d.ts +0 -21
  284. package/dist/types/src/blueprints/functions/invoke.d.ts.map +0 -1
  285. package/dist/types/src/blueprints/functions/query-deployed-functions.d.ts.map +0 -1
  286. package/dist/types/src/blueprints/functions/read.d.ts +0 -21
  287. package/dist/types/src/blueprints/functions/read.d.ts.map +0 -1
  288. package/dist/types/src/blueprints/functions/update.d.ts +0 -26
  289. package/dist/types/src/blueprints/functions/update.d.ts.map +0 -1
  290. package/dist/types/src/blueprints/index.d.ts +0 -2
  291. package/dist/types/src/blueprints/index.d.ts.map +0 -1
  292. package/dist/types/src/blueprints/script-blueprint.d.ts +0 -4
  293. package/dist/types/src/blueprints/script-blueprint.d.ts.map +0 -1
  294. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -6
  295. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  296. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts +0 -8
  297. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +0 -1
  298. package/dist/types/src/components/ScriptPluginSettings/ScriptPluginSettings.stories.d.ts.map +0 -1
  299. package/dist/types/src/components/ScriptPluginSettings/index.d.ts +0 -2
  300. package/dist/types/src/components/ScriptPluginSettings/index.d.ts.map +0 -1
  301. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts +0 -7
  302. package/dist/types/src/containers/ScriptProperties/BlueprintEditor.d.ts.map +0 -1
  303. package/src/blueprints/functions/update.ts +0 -68
  304. package/src/blueprints/index.ts +0 -5
  305. package/src/capabilities/blueprint-definition.ts +0 -19
  306. package/src/components/ScriptPluginSettings/ScriptPluginSettings.tsx +0 -42
  307. package/src/components/ScriptPluginSettings/index.ts +0 -5
  308. /package/dist/lib/neutral/{chunk-BKXYHCJ6.mjs.map → chunk-KSVKXCTX.mjs.map} +0 -0
  309. /package/dist/lib/neutral/{blueprints → skills}/index.mjs.map +0 -0
  310. /package/dist/types/src/{blueprints → skills}/functions/create.d.ts +0 -0
  311. /package/dist/types/src/{blueprints → skills}/functions/index.d.ts +0 -0
  312. /package/dist/types/src/{blueprints → skills}/functions/install-function.d.ts +0 -0
  313. /package/dist/types/src/{blueprints → skills}/functions/query-deployed-functions.d.ts +0 -0
  314. /package/src/{blueprints → skills}/functions/delete.ts +0 -0
  315. /package/src/{blueprints → skills}/functions/index.ts +0 -0
  316. /package/src/{blueprints → skills}/functions/install-function.ts +0 -0
  317. /package/src/{blueprints → skills}/functions/invoke.ts +0 -0
  318. /package/src/{blueprints → skills}/functions/query-deployed-functions.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/ScriptPlugin.tsx", "raw-loader:/__w/dxos/dxos/packages/plugins/plugin-script/PLUGIN.mdl?raw"],
4
- "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 BlueprintDefinition,\n Compiler,\n CreateObject,\n OperationHandler,\n ReactSurface,\n ScriptSettings,\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.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\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.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },\n }),\n Plugin.make,\n);\n\nexport default ScriptPlugin;\n", "---\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 blueprint 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 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 ScriptToolbar (run, deploy, \u2026) \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 TypescriptEditor (CodeMirror) \u2502\n \u2502 \u2502\n \u2502 // script source \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\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) \u2192 void\n onAuthenticate: () \u2192 Promise<void>\n```\n\n## Operations\n\nBlueprint 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 Blueprint\n\n req F-5.1: A blueprint with key `org.dxos.blueprint.script` is contributed via `addBlueprintDefinitionModule`.\n req F-5.2: Blueprint 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: Blueprint 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: Blueprint tools resolve\n given: composer-app with plugin-script loaded\n when: AppCapabilities.BlueprintDefinition is queried for `org.dxos.blueprint.script`\n then:\n - blueprint 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 \u2014 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"],
5
- "mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,cAAc;AAEvB,SACEC,iBACAC,qBACAC,UACAC,cACAC,kBACAC,cACAC,sBACK;AACP,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;;;ACnB7B;;;ADwBO,IAAMC,eAAeC,OAAOC,OAAOC,IAAAA,EAAMC,KAC9CC,UAAUC,kBAAkB;EAAEC,UAAUC;AAAgB,CAAA,GACxDH,UAAUI,6BAA6B;EAAEF,UAAUG;AAAoB,CAAA,GACvEL,UAAUM,sBAAsB;EAAEJ,UAAUK;AAAa,CAAA,GACzDP,UAAUQ,0BAA0B;EAAEN,UAAUO;AAAiB,CAAA,GACjET,UAAUU,gBAAgB;EAAEC,QAAQ;IAACC,OAAOA;;AAAQ,CAAA,GACpDZ,UAAUa,iBAAiB;EAAEX,UAAUY;AAAa,CAAA,GACpDd,UAAUe,sBAAsB;EAAEC;AAAa,CAAA,GAC/CpB,OAAOqB,UAAU;EACfC,aAAaC,oBAAoBC;EACjClB,UAAUmB;AACZ,CAAA,GACAzB,OAAOqB,UAAU;EACfC,aAAaI,aAAaC;EAC1BrB,UAAUsB;AACZ,CAAA,GACAxB,UAAUyB,qBAAqB;EAC7BC,OAAO;IAAEC,UAAU7B,KAAK8B;IAAIC,MAAM;IAAcC,SAASC;IAAYC,UAAU;EAAoB;AACrG,CAAA,GACApC,OAAOqC,IAAI;AAGb,IAAA,uBAAetC;",
6
- "names": ["Plugin", "AppActivationEvents", "AppPlugin", "Script", "AppGraphBuilder", "BlueprintDefinition", "Compiler", "CreateObject", "OperationHandler", "ReactSurface", "ScriptSettings", "meta", "translations", "ScriptEvents", "ScriptPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addBlueprintDefinitionModule", "BlueprintDefinition", "addCreateObjectModule", "CreateObject", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "Script", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "addModule", "activatesOn", "AppActivationEvents", "SetupSettings", "ScriptSettings", "ScriptEvents", "SetupCompiler", "Compiler", "addPluginAssetModule", "asset", "pluginId", "id", "path", "content", "pluginSpec", "mimeType", "make"]
3
+ "sources": ["../../../src/ScriptPlugin.tsx", "raw-loader:/__w/dxos/dxos/packages/plugins/plugin-script/PLUGIN.mdl"],
4
+ "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", "---\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 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 ScriptToolbar (run, deploy, \u2026) \u2502\n \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 TypescriptEditor (CodeMirror) \u2502\n \u2502 \u2502\n \u2502 // script source \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\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) \u2192 void\n onAuthenticate: () \u2192 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 \u2014 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"],
5
+ "mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,cAAc;AAEvB,SACEC,iBACAC,UACAC,cACAC,kBACAC,cACAC,gBACAC,uBACK;AACP,SAASC,YAAY;AACrB,SAASC,oBAAoB;AAC7B,SAASC,oBAAoB;;;ACnB7B;;;ADwBO,IAAMC,eAAeC,OAAOC,OAAOC,IAAAA,EAAMC,KAC9CC,UAAUC,kBAAkB;EAAEC,UAAUC;AAAgB,CAAA,GACxDH,UAAUI,yBAAyB;EAAEF,UAAUG;AAAgB,CAAA,GAC/DL,UAAUM,sBAAsB;EAAEJ,UAAUK;AAAa,CAAA,GACzDP,UAAUQ,0BAA0B;EAAEN,UAAUO;AAAiB,CAAA,GACjET,UAAUU,gBAAgB;EAAEC,QAAQ;IAACC,OAAOA;;AAAQ,CAAA,GACpDZ,UAAUa,iBAAiB;EAAEX,UAAUY;AAAa,CAAA,GACpDd,UAAUe,sBAAsB;EAAEC;AAAa,CAAA,GAC/CpB,OAAOqB,UAAU;EACfC,aAAaC,oBAAoBC;EACjClB,UAAUmB;AACZ,CAAA,GACAzB,OAAOqB,UAAU;EACfC,aAAaI,aAAaC;EAC1BrB,UAAUsB;AACZ,CAAA,GACAxB,UAAUyB,qBAAqB;EAC7BC,OAAO;IAAEC,UAAU7B,KAAK8B,QAAQC;IAAKC,MAAM;IAAcC,SAASC;IAAYC,UAAU;EAAoB;AAC9G,CAAA,GACArC,OAAOsC,IAAI;AAGb,IAAA,uBAAevC;",
6
+ "names": ["Plugin", "AppActivationEvents", "AppPlugin", "Script", "AppGraphBuilder", "Compiler", "CreateObject", "OperationHandler", "ReactSurface", "ScriptSettings", "SkillDefinition", "meta", "translations", "ScriptEvents", "ScriptPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addSkillDefinitionModule", "SkillDefinition", "addCreateObjectModule", "CreateObject", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "Script", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "addModule", "activatesOn", "AppActivationEvents", "SetupSettings", "ScriptSettings", "ScriptEvents", "SetupCompiler", "Compiler", "addPluginAssetModule", "asset", "pluginId", "profile", "key", "path", "content", "pluginSpec", "mimeType", "make"]
7
7
  }
@@ -4,12 +4,12 @@ import "./chunk-J5LGTIGS.mjs";
4
4
  import { Plugin } from "@dxos/app-framework";
5
5
  import { AppPlugin } from "@dxos/app-toolkit";
6
6
  import { Script } from "@dxos/compute";
7
- import { AppGraphBuilder, BlueprintDefinition, CreateObject, OperationHandler } from "#capabilities";
7
+ import { AppGraphBuilder, CreateObject, OperationHandler, SkillDefinition } from "#capabilities";
8
8
  import { meta } from "#meta";
9
9
  var ScriptPlugin = Plugin.define(meta).pipe(AppPlugin.addAppGraphModule({
10
10
  activate: AppGraphBuilder
11
- }), AppPlugin.addBlueprintDefinitionModule({
12
- activate: BlueprintDefinition
11
+ }), AppPlugin.addSkillDefinitionModule({
12
+ activate: SkillDefinition
13
13
  }), AppPlugin.addCreateObjectModule({
14
14
  activate: CreateObject
15
15
  }), AppPlugin.addOperationHandlerModule({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ScriptPlugin.node.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Script } from '@dxos/compute';\n\nimport { AppGraphBuilder, BlueprintDefinition, CreateObject, OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\n\nexport const ScriptPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addBlueprintDefinitionModule({ activate: BlueprintDefinition }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Script.Script] }),\n Plugin.make,\n);\n\nexport default ScriptPlugin;\n"],
5
- "mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AAEvB,SAASC,iBAAiBC,qBAAqBC,cAAcC,wBAAwB;AACrF,SAASC,YAAY;AAEd,IAAMC,eAAeR,OAAOS,OAAOF,IAAAA,EAAMG,KAC9CT,UAAUU,kBAAkB;EAAEC,UAAUT;AAAgB,CAAA,GACxDF,UAAUY,6BAA6B;EAAED,UAAUR;AAAoB,CAAA,GACvEH,UAAUa,sBAAsB;EAAEF,UAAUP;AAAa,CAAA,GACzDJ,UAAUc,0BAA0B;EAAEH,UAAUN;AAAiB,CAAA,GACjEL,UAAUe,gBAAgB;EAAEC,QAAQ;IAACf,OAAOA;;AAAQ,CAAA,GACpDF,OAAOkB,IAAI;AAGb,IAAA,4BAAeV;",
6
- "names": ["Plugin", "AppPlugin", "Script", "AppGraphBuilder", "BlueprintDefinition", "CreateObject", "OperationHandler", "meta", "ScriptPlugin", "define", "pipe", "addAppGraphModule", "activate", "addBlueprintDefinitionModule", "addCreateObjectModule", "addOperationHandlerModule", "addSchemaModule", "schema", "make"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Script } from '@dxos/compute';\n\nimport { AppGraphBuilder, CreateObject, OperationHandler, SkillDefinition } from '#capabilities';\nimport { meta } from '#meta';\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 Plugin.make,\n);\n\nexport default ScriptPlugin;\n"],
5
+ "mappings": ";;;AAIA,SAASA,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AAEvB,SAASC,iBAAiBC,cAAcC,kBAAkBC,uBAAuB;AACjF,SAASC,YAAY;AAEd,IAAMC,eAAeR,OAAOS,OAAOF,IAAAA,EAAMG,KAC9CT,UAAUU,kBAAkB;EAAEC,UAAUT;AAAgB,CAAA,GACxDF,UAAUY,yBAAyB;EAAED,UAAUN;AAAgB,CAAA,GAC/DL,UAAUa,sBAAsB;EAAEF,UAAUR;AAAa,CAAA,GACzDH,UAAUc,0BAA0B;EAAEH,UAAUP;AAAiB,CAAA,GACjEJ,UAAUe,gBAAgB;EAAEC,QAAQ;IAACf,OAAOA;;AAAQ,CAAA,GACpDF,OAAOkB,IAAI;AAGb,IAAA,4BAAeV;",
6
+ "names": ["Plugin", "AppPlugin", "Script", "AppGraphBuilder", "CreateObject", "OperationHandler", "SkillDefinition", "meta", "ScriptPlugin", "define", "pipe", "addAppGraphModule", "activate", "addSkillDefinitionModule", "addCreateObjectModule", "addOperationHandlerModule", "addSchemaModule", "schema", "make"]
7
7
  }
@@ -2,133 +2,37 @@ import "./chunk-J5LGTIGS.mjs";
2
2
 
3
3
  // src/containers/ScriptProperties/ScriptProperties.tsx
4
4
  import React4 from "react";
5
+ import { Form as Form4 } from "@dxos/react-ui-form";
5
6
 
6
- // src/containers/ScriptProperties/BlueprintEditor.tsx
7
- import React, { useCallback, useState } from "react";
8
- import { ToolId } from "@dxos/ai";
9
- import { Blueprint, Template } from "@dxos/compute";
7
+ // src/containers/ScriptProperties/FunctionBinding.tsx
8
+ import React, { useCallback } from "react";
10
9
  import { Operation } from "@dxos/compute";
11
10
  import { Filter, Obj, Ref } from "@dxos/echo";
11
+ import { getUserFunctionIdInMetadata } from "@dxos/functions";
12
+ import { getInvocationUrl } from "@dxos/functions-runtime";
13
+ import { useClient } from "@dxos/react-client";
12
14
  import { useQuery } from "@dxos/react-client/echo";
13
- import { Button, Input, useAsyncEffect, useTranslation } from "@dxos/react-ui";
15
+ import { Clipboard, Input, useControlledState, useTranslation } from "@dxos/react-ui";
14
16
  import { Form } from "@dxos/react-ui-form";
15
- import { kebabize } from "@dxos/util";
16
17
  import { meta } from "#meta";
17
- var BlueprintEditor = ({ object }) => {
18
- const { t } = useTranslation(meta.id);
18
+ var FunctionBinding = ({ object }) => {
19
+ const { t } = useTranslation(meta.profile.key);
20
+ const client = useClient();
19
21
  const db = Obj.getDatabase(object);
20
22
  const [fn] = useQuery(db, Filter.type(Operation.PersistentOperation, {
21
23
  source: Ref.make(object)
22
24
  }));
23
- const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));
24
- const [creating, setCreating] = useState(false);
25
- const [instructions, setInstructions] = useState(`You can run the script "${object.name ?? "script"}".`);
26
- const blueprintKey = `org.dxos.blueprint.${kebabize(object.name ?? "script")}`;
27
- const existingBlueprint = blueprints.find((bp) => Obj.getMeta(bp).key === blueprintKey);
28
- const fnKey = fn ? Obj.getMeta(fn).key : void 0;
29
- useAsyncEffect(async () => {
30
- if (!existingBlueprint) {
31
- return;
32
- }
33
- const source = await existingBlueprint.instructions.source.load();
34
- setInstructions(source.content ?? "");
35
- }, [
36
- existingBlueprint
37
- ]);
38
- const handleSave = useCallback(async () => {
39
- if (!db) {
40
- return;
41
- }
42
- setCreating(true);
43
- try {
44
- if (existingBlueprint) {
45
- const text = await existingBlueprint.instructions.source.load();
46
- Obj.update(text, (text2) => {
47
- text2.content = instructions;
48
- });
49
- if (fnKey) {
50
- const toolId = ToolId.make(fnKey);
51
- if (!existingBlueprint.tools?.includes(toolId)) {
52
- Obj.update(existingBlueprint, (existingBlueprint2) => {
53
- existingBlueprint2.tools = [
54
- ...existingBlueprint2.tools ?? [],
55
- toolId
56
- ];
57
- });
58
- }
59
- }
60
- } else if (fnKey) {
61
- db.add(Blueprint.make({
62
- key: blueprintKey,
63
- name: object.name ?? "Script",
64
- instructions: Template.make({
65
- source: instructions
66
- }),
67
- tools: [
68
- ToolId.make(fnKey)
69
- ]
70
- }));
71
- }
72
- await db.flush();
73
- } finally {
74
- setCreating(false);
75
- }
76
- }, [
77
- db,
78
- existingBlueprint,
79
- fnKey,
80
- blueprintKey,
81
- object.name,
82
- instructions
83
- ]);
84
- return /* @__PURE__ */ React.createElement("div", {
85
- className: "flex flex-col"
86
- }, /* @__PURE__ */ React.createElement(Form.Section, {
87
- label: t("blueprint-editor.label"),
88
- description: t("blueprint-editor.description")
89
- }), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("blueprint-instructions.label")), /* @__PURE__ */ React.createElement(Input.TextArea, {
90
- placeholder: t("blueprint-instructions.placeholder"),
91
- rows: 6,
92
- value: instructions,
93
- onChange: (event) => setInstructions(event.target.value),
94
- classNames: "resize-y"
95
- })), /* @__PURE__ */ React.createElement("div", {
96
- className: "pt-2"
97
- }, /* @__PURE__ */ React.createElement(Button, {
98
- disabled: !existingBlueprint && !fnKey || creating,
99
- onClick: handleSave
100
- }, t(existingBlueprint ? "update-blueprint.label" : "create-blueprint.label"))));
101
- };
102
-
103
- // src/containers/ScriptProperties/FunctionBinding.tsx
104
- import React2, { useCallback as useCallback2 } from "react";
105
- import { Operation as Operation2 } from "@dxos/compute";
106
- import { Filter as Filter2, Obj as Obj2, Ref as Ref2 } from "@dxos/echo";
107
- import { getUserFunctionIdInMetadata } from "@dxos/functions";
108
- import { getInvocationUrl } from "@dxos/functions-runtime";
109
- import { useClient } from "@dxos/react-client";
110
- import { useQuery as useQuery2 } from "@dxos/react-client/echo";
111
- import { Clipboard, Input as Input2, useControlledState, useTranslation as useTranslation2 } from "@dxos/react-ui";
112
- import { Form as Form2 } from "@dxos/react-ui-form";
113
- import { meta as meta2 } from "#meta";
114
- var FunctionBinding = ({ object }) => {
115
- const { t } = useTranslation2(meta2.id);
116
- const client = useClient();
117
- const db = Obj2.getDatabase(object);
118
- const [fn] = useQuery2(db, Filter2.type(Operation2.PersistentOperation, {
119
- source: Ref2.make(object)
120
- }));
121
- const functionId = fn && getUserFunctionIdInMetadata(Obj2.getMeta(fn));
25
+ const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));
122
26
  const functionUrl = functionId && getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? "", {
123
27
  spaceId: db?.spaceId
124
28
  });
125
29
  const [binding, setBinding] = useControlledState(fn?.binding ?? "");
126
- const handleBindingChange = useCallback2((event) => setBinding(event.target.value), [
30
+ const handleBindingChange = useCallback((event) => setBinding(event.target.value), [
127
31
  setBinding
128
32
  ]);
129
- const handleBindingBlur = useCallback2(() => {
33
+ const handleBindingBlur = useCallback(() => {
130
34
  if (fn) {
131
- Obj2.update(fn, (fn2) => {
35
+ Obj.update(fn, (fn2) => {
132
36
  fn2.binding = binding;
133
37
  });
134
38
  }
@@ -139,21 +43,21 @@ var FunctionBinding = ({ object }) => {
139
43
  if (!fn) {
140
44
  return null;
141
45
  }
142
- return /* @__PURE__ */ React2.createElement("div", {
46
+ return /* @__PURE__ */ React.createElement("div", {
143
47
  className: "flex flex-col"
144
- }, /* @__PURE__ */ React2.createElement(Form2.Section, {
145
- label: t("remote-function-settings.heading")
146
- }), functionUrl && /* @__PURE__ */ React2.createElement(Input2.Root, null, /* @__PURE__ */ React2.createElement(Input2.Label, null, t("function-url.label")), /* @__PURE__ */ React2.createElement(Input2.TextInput, {
48
+ }, /* @__PURE__ */ React.createElement(Form.Section, {
49
+ title: t("remote-function-settings.heading")
50
+ }), functionUrl && /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("function-url.label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
147
51
  disabled: true,
148
52
  value: functionUrl,
149
53
  onChange: (event) => {
150
- Obj2.update(fn, (fn2) => {
54
+ Obj.update(fn, (fn2) => {
151
55
  fn2.name = event.target.value;
152
56
  });
153
57
  }
154
- }), /* @__PURE__ */ React2.createElement(Clipboard.IconButton, {
58
+ }), /* @__PURE__ */ React.createElement(Clipboard.IconButton, {
155
59
  value: functionUrl
156
- })), /* @__PURE__ */ React2.createElement(Input2.Root, null, /* @__PURE__ */ React2.createElement(Input2.Label, null, t("function-binding.label")), /* @__PURE__ */ React2.createElement(Input2.TextInput, {
60
+ })), /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, t("function-binding.label")), /* @__PURE__ */ React.createElement(Input.TextInput, {
157
61
  placeholder: t("function-binding.placeholder"),
158
62
  value: binding,
159
63
  onChange: handleBindingChange,
@@ -163,28 +67,28 @@ var FunctionBinding = ({ object }) => {
163
67
 
164
68
  // src/containers/ScriptProperties/FunctionPublishing.tsx
165
69
  import { Octokit } from "@octokit/core";
166
- import React3, { useCallback as useCallback3, useState as useState2 } from "react";
70
+ import React2, { useCallback as useCallback2, useState } from "react";
167
71
  import { useOperationInvoker } from "@dxos/app-framework/ui";
168
72
  import { SettingsOperation } from "@dxos/app-toolkit";
169
- import { Filter as Filter3, Obj as Obj3 } from "@dxos/echo";
73
+ import { Filter as Filter2, Obj as Obj2 } from "@dxos/echo";
170
74
  import { log } from "@dxos/log";
171
- import { useQuery as useQuery3 } from "@dxos/react-client/echo";
172
- import { Button as Button2, Clipboard as Clipboard2, Message, useAsyncEffect as useAsyncEffect2, useTranslation as useTranslation3 } from "@dxos/react-ui";
173
- import { Form as Form3 } from "@dxos/react-ui-form";
75
+ import { useQuery as useQuery2 } from "@dxos/react-client/echo";
76
+ import { Button, Clipboard as Clipboard2, Message, useAsyncEffect, useTranslation as useTranslation2 } from "@dxos/react-ui";
77
+ import { Form as Form2 } from "@dxos/react-ui-form";
174
78
  import { AccessToken } from "@dxos/types";
175
- import { kebabize as kebabize2 } from "@dxos/util";
176
- import { meta as meta3 } from "#meta";
79
+ import { kebabize } from "@dxos/util";
80
+ import { meta as meta2 } from "#meta";
177
81
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/containers/ScriptProperties/FunctionPublishing.tsx";
178
82
  var FunctionPublishing = ({ object }) => {
179
- const { t } = useTranslation3(meta3.id);
83
+ const { t } = useTranslation2(meta2.profile.key);
180
84
  const { invokePromise } = useOperationInvoker();
181
- const db = Obj3.getDatabase(object);
182
- const [githubToken] = useQuery3(db, Filter3.type(AccessToken.AccessToken, {
85
+ const db = Obj2.getDatabase(object);
86
+ const [githubToken] = useQuery2(db, Filter2.type(AccessToken.AccessToken, {
183
87
  source: "github.com"
184
88
  }));
185
- const gistKey = Obj3.getMeta(object).keys.find(({ source }) => source === "github.com");
186
- const [gistUrl, setGistUrl] = useState2();
187
- useAsyncEffect2(async () => {
89
+ const gistKey = Obj2.getMeta(object).keys.find(({ source }) => source === "github.com");
90
+ const [gistUrl, setGistUrl] = useState();
91
+ useAsyncEffect(async () => {
188
92
  const token = githubToken?.token;
189
93
  const gistId = gistKey?.id;
190
94
  if (!token || !gistId) {
@@ -207,26 +111,26 @@ var FunctionPublishing = ({ object }) => {
207
111
  githubToken,
208
112
  gistKey
209
113
  ]);
210
- const handleOpenTokenManager = useCallback3(() => invokePromise(SettingsOperation.Open, {
114
+ const handleOpenTokenManager = useCallback2(() => invokePromise(SettingsOperation.Open, {
211
115
  plugin: "org.dxos.plugin.token-manager"
212
116
  }), [
213
117
  invokePromise
214
118
  ]);
215
- const [publishing, setPublishing] = useState2(false);
216
- const handlePublish = useCallback3(async () => {
119
+ const [publishing, setPublishing] = useState(false);
120
+ const handlePublish = useCallback2(async () => {
217
121
  setPublishing(true);
218
122
  const octokit = new Octokit({
219
123
  auth: githubToken.token
220
124
  });
221
125
  const source = await object.source.load();
222
- const filename = object.name ? kebabize2(object.name) : "composer-script";
126
+ const filename = object.name ? kebabize(object.name) : "composer-script";
223
127
  const files = {
224
128
  [`${filename}.ts`]: {
225
129
  content: source.content
226
130
  }
227
131
  };
228
132
  try {
229
- const meta4 = Obj3.getMeta(object);
133
+ const meta4 = Obj2.getMeta(object);
230
134
  const githubKey = meta4.keys.find(({ source: source2 }) => source2 === "github.com");
231
135
  const gistId = githubKey?.id;
232
136
  if (gistId) {
@@ -241,8 +145,8 @@ var FunctionPublishing = ({ object }) => {
241
145
  });
242
146
  const gistId2 = response.data.id;
243
147
  if (gistId2) {
244
- Obj3.update(object, (object2) => {
245
- Obj3.getMeta(object2).keys.push({
148
+ Obj2.update(object, (object2) => {
149
+ Obj2.getMeta(object2).keys.push({
246
150
  source: "github.com",
247
151
  id: gistId2
248
152
  });
@@ -256,42 +160,137 @@ var FunctionPublishing = ({ object }) => {
256
160
  object,
257
161
  githubToken
258
162
  ]);
259
- return /* @__PURE__ */ React3.createElement("div", {
163
+ return /* @__PURE__ */ React2.createElement("div", {
260
164
  className: "flex flex-col"
261
- }, /* @__PURE__ */ React3.createElement(Form3.Section, {
262
- label: t("script-publish-settings.label"),
165
+ }, /* @__PURE__ */ React2.createElement(Form2.Section, {
166
+ title: t("script-publish-settings.label"),
263
167
  description: t("script-publish-settings.description")
264
- }), !githubToken && /* @__PURE__ */ React3.createElement("div", {
168
+ }), !githubToken && /* @__PURE__ */ React2.createElement("div", {
265
169
  className: "flex flex-col py-form-gap"
266
- }, /* @__PURE__ */ React3.createElement(Message.Root, {
170
+ }, /* @__PURE__ */ React2.createElement(Message.Root, {
267
171
  valence: "info"
268
- }, /* @__PURE__ */ React3.createElement(Message.Title, null, t("no-github-token.label"))), /* @__PURE__ */ React3.createElement("div", {
172
+ }, /* @__PURE__ */ React2.createElement(Message.Title, null, t("no-github-token.label"))), /* @__PURE__ */ React2.createElement("div", {
269
173
  className: "flex pt-form-gap"
270
- }, /* @__PURE__ */ React3.createElement(Button2, {
174
+ }, /* @__PURE__ */ React2.createElement(Button, {
271
175
  onClick: handleOpenTokenManager
272
- }, t("open-token-manager.label")))), githubToken && /* @__PURE__ */ React3.createElement("div", {
176
+ }, t("open-token-manager.label")))), githubToken && /* @__PURE__ */ React2.createElement("div", {
273
177
  className: "flex justify-end gap-2"
274
- }, gistUrl && /* @__PURE__ */ React3.createElement(Clipboard2.IconButton, {
178
+ }, gistUrl && /* @__PURE__ */ React2.createElement(Clipboard2.IconButton, {
275
179
  value: gistUrl
276
- }), /* @__PURE__ */ React3.createElement(Button2, {
180
+ }), /* @__PURE__ */ React2.createElement(Button, {
277
181
  disabled: publishing,
278
182
  onClick: handlePublish
279
183
  }, t("publish.label"))));
280
184
  };
281
185
 
186
+ // src/containers/ScriptProperties/SkillEditor.tsx
187
+ import React3, { useCallback as useCallback3, useState as useState2 } from "react";
188
+ import { ToolId } from "@dxos/ai";
189
+ import { Skill, Template } from "@dxos/compute";
190
+ import { Operation as Operation2 } from "@dxos/compute";
191
+ import { Filter as Filter3, Obj as Obj3, Ref as Ref2 } from "@dxos/echo";
192
+ import { useQuery as useQuery3 } from "@dxos/react-client/echo";
193
+ import { Button as Button2, Input as Input2, useAsyncEffect as useAsyncEffect2, useTranslation as useTranslation3 } from "@dxos/react-ui";
194
+ import { Form as Form3 } from "@dxos/react-ui-form";
195
+ import { kebabize as kebabize2 } from "@dxos/util";
196
+ import { meta as meta3 } from "#meta";
197
+ var SkillEditor = ({ object }) => {
198
+ const { t } = useTranslation3(meta3.profile.key);
199
+ const db = Obj3.getDatabase(object);
200
+ const [fn] = useQuery3(db, Filter3.type(Operation2.PersistentOperation, {
201
+ source: Ref2.make(object)
202
+ }));
203
+ const skills = useQuery3(db, Filter3.type(Skill.Skill));
204
+ const [creating, setCreating] = useState2(false);
205
+ const [instructions, setInstructions] = useState2(`You can run the script "${object.name ?? "script"}".`);
206
+ const skillKey = `org.dxos.skill.${kebabize2(object.name ?? "script")}`;
207
+ const existingSkill = skills.find((bp) => Obj3.getMeta(bp).key === skillKey);
208
+ const fnKey = fn ? Obj3.getMeta(fn).key : void 0;
209
+ useAsyncEffect2(async () => {
210
+ if (!existingSkill) {
211
+ return;
212
+ }
213
+ const source = await existingSkill.instructions.source.load();
214
+ setInstructions(source.content ?? "");
215
+ }, [
216
+ existingSkill
217
+ ]);
218
+ const handleSave = useCallback3(async () => {
219
+ if (!db) {
220
+ return;
221
+ }
222
+ setCreating(true);
223
+ try {
224
+ if (existingSkill) {
225
+ const text = await existingSkill.instructions.source.load();
226
+ Obj3.update(text, (text2) => {
227
+ text2.content = instructions;
228
+ });
229
+ if (fnKey) {
230
+ const toolId = ToolId.make(fnKey);
231
+ if (!existingSkill.tools?.includes(toolId)) {
232
+ Obj3.update(existingSkill, (existingSkill2) => {
233
+ existingSkill2.tools = [
234
+ ...existingSkill2.tools ?? [],
235
+ toolId
236
+ ];
237
+ });
238
+ }
239
+ }
240
+ } else if (fnKey) {
241
+ db.add(Skill.make({
242
+ key: skillKey,
243
+ name: object.name ?? "Script",
244
+ instructions: Template.make({
245
+ source: instructions
246
+ }),
247
+ tools: [
248
+ ToolId.make(fnKey)
249
+ ]
250
+ }));
251
+ }
252
+ await db.flush();
253
+ } finally {
254
+ setCreating(false);
255
+ }
256
+ }, [
257
+ db,
258
+ existingSkill,
259
+ fnKey,
260
+ skillKey,
261
+ object.name,
262
+ instructions
263
+ ]);
264
+ return /* @__PURE__ */ React3.createElement("div", {
265
+ className: "flex flex-col"
266
+ }, /* @__PURE__ */ React3.createElement(Form3.Section, {
267
+ title: t("skill-editor.label"),
268
+ description: t("skill-editor.description")
269
+ }), /* @__PURE__ */ React3.createElement(Input2.Root, null, /* @__PURE__ */ React3.createElement(Input2.Label, null, t("skill-instructions.label")), /* @__PURE__ */ React3.createElement(Input2.TextArea, {
270
+ placeholder: t("skill-instructions.placeholder"),
271
+ rows: 6,
272
+ value: instructions,
273
+ onChange: (event) => setInstructions(event.target.value),
274
+ classNames: "resize-y"
275
+ })), /* @__PURE__ */ React3.createElement("div", {
276
+ className: "pt-2"
277
+ }, /* @__PURE__ */ React3.createElement(Button2, {
278
+ disabled: !existingSkill && !fnKey || creating,
279
+ onClick: handleSave
280
+ }, t(existingSkill ? "update-skill.label" : "create-skill.label"))));
281
+ };
282
+
282
283
  // src/containers/ScriptProperties/ScriptProperties.tsx
283
284
  var ScriptProperties = ({ subject: object }) => {
284
- return /* @__PURE__ */ React4.createElement("div", {
285
- className: "flex flex-col py-form-gap gap-form-section-gap"
286
- }, /* @__PURE__ */ React4.createElement(FunctionBinding, {
285
+ return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(Form4.Section, null, /* @__PURE__ */ React4.createElement(FunctionBinding, {
287
286
  object
288
- }), /* @__PURE__ */ React4.createElement(BlueprintEditor, {
287
+ })), /* @__PURE__ */ React4.createElement(Form4.Section, null, /* @__PURE__ */ React4.createElement(SkillEditor, {
289
288
  object
290
- }), /* @__PURE__ */ React4.createElement(FunctionPublishing, {
289
+ })), /* @__PURE__ */ React4.createElement(Form4.Section, null, /* @__PURE__ */ React4.createElement(FunctionPublishing, {
291
290
  object
292
- }));
291
+ })));
293
292
  };
294
293
  export {
295
294
  ScriptProperties as default
296
295
  };
297
- //# sourceMappingURL=ScriptProperties-RLXNAN3N.mjs.map
296
+ //# sourceMappingURL=ScriptProperties-RHDQGMGT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/ScriptProperties/ScriptProperties.tsx", "../../../src/containers/ScriptProperties/FunctionBinding.tsx", "../../../src/containers/ScriptProperties/FunctionPublishing.tsx", "../../../src/containers/ScriptProperties/SkillEditor.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Script } from '@dxos/compute';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { FunctionBinding } from './FunctionBinding';\nimport { FunctionPublishing } from './FunctionPublishing';\nimport { SkillEditor } from './SkillEditor';\n\nexport type ScriptPropertiesProps = AppSurface.ObjectPropertiesProps<Script.Script>;\n\nexport const ScriptProperties = ({ subject: object }: ScriptPropertiesProps) => {\n return (\n <>\n <Form.Section>\n <FunctionBinding object={object} />\n </Form.Section>\n <Form.Section>\n <SkillEditor object={object} />\n </Form.Section>\n <Form.Section>\n <FunctionPublishing object={object} />\n </Form.Section>\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { type Script } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { getInvocationUrl } from '@dxos/functions-runtime';\nimport { useClient } from '@dxos/react-client';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Input, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\n\nexport type FunctionBindingProps = { object: Script.Script };\n\nexport const FunctionBinding = ({ object }: FunctionBindingProps) => {\n const { t } = useTranslation(meta.profile.key);\n const client = useClient();\n const db = Obj.getDatabase(object);\n\n const [fn] = useQuery(db, Filter.type(Operation.PersistentOperation, { source: Ref.make(object) }));\n const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n const functionUrl =\n functionId &&\n getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: db?.spaceId,\n });\n\n const [binding, setBinding] = useControlledState(fn?.binding ?? '');\n const handleBindingChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => setBinding(event.target.value),\n [setBinding],\n );\n\n const handleBindingBlur = useCallback(() => {\n if (fn) {\n Obj.update(fn, (fn) => {\n fn.binding = binding;\n });\n }\n }, [fn, binding]);\n\n if (!fn) {\n return null;\n }\n\n return (\n <div className='flex flex-col'>\n <Form.Section title={t('remote-function-settings.heading')} />\n\n {functionUrl && (\n <Input.Root>\n <Input.Label>{t('function-url.label')}</Input.Label>\n <Input.TextInput\n disabled\n value={functionUrl}\n onChange={(event) => {\n Obj.update(fn, (fn) => {\n fn.name = event.target.value;\n });\n }}\n />\n <Clipboard.IconButton value={functionUrl} />\n </Input.Root>\n )}\n\n <Input.Root>\n <Input.Label>{t('function-binding.label')}</Input.Label>\n <Input.TextInput\n placeholder={t('function-binding.placeholder')}\n value={binding}\n onChange={handleBindingChange}\n onBlur={handleBindingBlur}\n />\n </Input.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { useCallback, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { SettingsOperation } from '@dxos/app-toolkit';\nimport { type Script } from '@dxos/compute';\nimport { Filter, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Message, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { AccessToken } from '@dxos/types';\nimport { kebabize } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport type FunctionPublishingProps = { object: Script.Script };\n\n// TODO(burdon): Move to separate tab?\nexport const FunctionPublishing = ({ object }: FunctionPublishingProps) => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n const db = Obj.getDatabase(object);\n\n const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));\n const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useAsyncEffect(async () => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\n try {\n const octokit = new Octokit({ auth: githubToken.token });\n const response = await octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n });\n setGistUrl(response.data.html_url);\n } catch (err) {\n log.catch(err);\n setGistUrl(undefined);\n }\n }, [githubToken, gistKey]);\n\n const handleOpenTokenManager = useCallback(\n () =>\n invokePromise(SettingsOperation.Open, {\n plugin: 'org.dxos.plugin.token-manager',\n }),\n [invokePromise],\n );\n\n const [publishing, setPublishing] = useState(false);\n const handlePublish = useCallback(async () => {\n setPublishing(true);\n const octokit = new Octokit({ auth: githubToken.token });\n const source = await object.source.load();\n const filename = object.name ? kebabize(object.name) : 'composer-script';\n const files = { [`${filename}.ts`]: { content: source.content } };\n\n try {\n // TODO(wittjosiah): Factor out to intent.\n const meta = Obj.getMeta(object);\n const githubKey = meta.keys.find(({ source }) => source === 'github.com');\n const gistId = githubKey?.id;\n if (gistId) {\n await octokit.request('PATCH /gists/{gist_id}', {\n gist_id: gistId,\n files,\n });\n } else {\n const response = await octokit.request('POST /gists', {\n public: true,\n files,\n });\n const gistId = response.data.id;\n if (gistId) {\n Obj.update(object, (object) => {\n Obj.getMeta(object).keys.push({ source: 'github.com', id: gistId });\n });\n }\n }\n } finally {\n setPublishing(false);\n }\n }, [object, githubToken]);\n\n return (\n <div className='flex flex-col'>\n <Form.Section title={t('script-publish-settings.label')} description={t('script-publish-settings.description')} />\n\n {!githubToken && (\n <div className='flex flex-col py-form-gap'>\n <Message.Root valence='info'>\n <Message.Title>{t('no-github-token.label')}</Message.Title>\n </Message.Root>\n <div className='flex pt-form-gap'>\n <Button onClick={handleOpenTokenManager}>{t('open-token-manager.label')}</Button>\n </div>\n </div>\n )}\n\n {githubToken && (\n <div className='flex justify-end gap-2'>\n {gistUrl && <Clipboard.IconButton value={gistUrl} />}\n <Button disabled={publishing} onClick={handlePublish}>\n {t('publish.label')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { ToolId } from '@dxos/ai';\nimport { Skill, Template } from '@dxos/compute';\nimport { type Script } from '@dxos/compute';\nimport { Operation } from '@dxos/compute';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Button, Input, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { kebabize } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport type SkillEditorProps = { object: Script.Script };\n\nexport const SkillEditor = ({ object }: SkillEditorProps) => {\n const { t } = useTranslation(meta.profile.key);\n const db = Obj.getDatabase(object);\n const [fn] = useQuery(db, Filter.type(Operation.PersistentOperation, { source: Ref.make(object) }));\n const skills = useQuery(db, Filter.type(Skill.Skill));\n\n const [creating, setCreating] = useState(false);\n // TODO(burdon): Remove?\n const [instructions, setInstructions] = useState<string>(`You can run the script \"${object.name ?? 'script'}\".`);\n const skillKey = `org.dxos.skill.${kebabize(object.name ?? 'script')}`;\n const existingSkill = skills.find((bp) => Obj.getMeta(bp).key === skillKey);\n const fnKey = fn ? Obj.getMeta(fn).key : undefined;\n\n useAsyncEffect(async () => {\n if (!existingSkill) {\n return;\n }\n\n const source = await existingSkill.instructions.source.load();\n setInstructions(source.content ?? '');\n }, [existingSkill]);\n\n const handleSave = useCallback(async () => {\n if (!db) {\n return;\n }\n\n setCreating(true);\n try {\n if (existingSkill) {\n const text = await existingSkill.instructions.source.load();\n Obj.update(text, (text) => {\n text.content = instructions;\n });\n\n if (fnKey) {\n const toolId = ToolId.make(fnKey);\n if (!existingSkill.tools?.includes(toolId)) {\n Obj.update(existingSkill, (existingSkill) => {\n existingSkill.tools = [...(existingSkill.tools ?? []), toolId];\n });\n }\n }\n } else if (fnKey) {\n db.add(\n Skill.make({\n key: skillKey,\n name: object.name ?? 'Script',\n instructions: Template.make({ source: instructions }),\n tools: [ToolId.make(fnKey)],\n }),\n );\n }\n await db.flush();\n } finally {\n setCreating(false);\n }\n }, [db, existingSkill, fnKey, skillKey, object.name, instructions]);\n\n return (\n <div className='flex flex-col'>\n <Form.Section title={t('skill-editor.label')} description={t('skill-editor.description')} />\n\n <Input.Root>\n <Input.Label>{t('skill-instructions.label')}</Input.Label>\n <Input.TextArea\n placeholder={t('skill-instructions.placeholder')}\n rows={6}\n value={instructions}\n onChange={(event) => setInstructions(event.target.value)}\n classNames='resize-y'\n />\n </Input.Root>\n\n <div className='pt-2'>\n <Button disabled={(!existingSkill && !fnKey) || creating} onClick={handleSave}>\n {t(existingSkill ? 'update-skill.label' : 'create-skill.label')}\n </Button>\n </div>\n </div>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "Form", "React", "useCallback", "Operation", "Filter", "Obj", "Ref", "getUserFunctionIdInMetadata", "getInvocationUrl", "useClient", "useQuery", "Clipboard", "Input", "useControlledState", "useTranslation", "Form", "meta", "FunctionBinding", "object", "t", "profile", "key", "client", "db", "getDatabase", "fn", "type", "PersistentOperation", "source", "make", "functionId", "getMeta", "functionUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "binding", "setBinding", "handleBindingChange", "event", "target", "value", "handleBindingBlur", "update", "div", "className", "Section", "title", "Root", "Label", "TextInput", "disabled", "onChange", "name", "IconButton", "placeholder", "onBlur", "Octokit", "React", "useCallback", "useState", "useOperationInvoker", "SettingsOperation", "Filter", "Obj", "log", "useQuery", "Button", "Clipboard", "Message", "useAsyncEffect", "useTranslation", "Form", "AccessToken", "kebabize", "meta", "invokePromise", "db", "object", "githubToken", "source", "gistKey", "token", "gistId", "setGistUrl", "undefined", "response", "err", "setPublishing", "files", "content", "githubKey", "id", "octokit", "gist_id", "getMeta", "Section", "title", "t", "className", "valence", "Title", "onClick", "handleOpenTokenManager", "gistUrl", "IconButton", "value", "disabled", "handlePublish", "React", "useCallback", "useState", "ToolId", "Skill", "Template", "Operation", "Filter", "Obj", "Ref", "useQuery", "Button", "Input", "useAsyncEffect", "useTranslation", "Form", "kebabize", "meta", "SkillEditor", "object", "t", "profile", "key", "db", "getDatabase", "fn", "type", "PersistentOperation", "source", "make", "skills", "creating", "setCreating", "instructions", "setInstructions", "name", "skillKey", "existingSkill", "find", "bp", "getMeta", "fnKey", "undefined", "load", "content", "handleSave", "text", "update", "toolId", "tools", "includes", "add", "flush", "div", "className", "Section", "title", "description", "Root", "Label", "TextArea", "placeholder", "rows", "value", "onChange", "event", "target", "classNames", "disabled", "onClick", "ScriptProperties", "subject", "object", "React", "Form", "Section", "FunctionBinding", "SkillEditor", "FunctionPublishing"]
7
+ }