@dxos/plugin-automation 0.8.4-main.d05673bc65 → 0.8.4-main.dfabb4ec29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/dist/lib/neutral/AutomationPanel-64U7W3SJ.mjs +11 -0
  2. package/dist/lib/neutral/AutomationPlugin.mjs +38 -0
  3. package/dist/lib/neutral/AutomationPlugin.mjs.map +7 -0
  4. package/dist/lib/{browser/cli/index.mjs → neutral/AutomationPlugin.node.mjs} +111 -113
  5. package/dist/lib/neutral/AutomationPlugin.node.mjs.map +7 -0
  6. package/dist/lib/neutral/AutomationSettings-NNL2AVNT.mjs +31 -0
  7. package/dist/lib/neutral/AutomationSettings-NNL2AVNT.mjs.map +7 -0
  8. package/dist/lib/neutral/FunctionsContainer-CU2FVKZF.mjs +38 -0
  9. package/dist/lib/neutral/FunctionsContainer-CU2FVKZF.mjs.map +7 -0
  10. package/dist/lib/{browser/chunk-75XLBFAG.mjs → neutral/FunctionsPanel-GLCUBEDT.mjs} +20 -21
  11. package/dist/lib/neutral/FunctionsPanel-GLCUBEDT.mjs.map +7 -0
  12. package/dist/lib/{node-esm/chunk-6JVB3IHW.mjs → neutral/FunctionsRegistry-VRU4FBVH.mjs} +16 -19
  13. package/dist/lib/neutral/FunctionsRegistry-VRU4FBVH.mjs.map +7 -0
  14. package/dist/lib/neutral/TriggerSettings-XCHIZPOR.mjs +9 -0
  15. package/dist/lib/neutral/app-graph-builder-GDCGRYEP.mjs +75 -0
  16. package/dist/lib/neutral/app-graph-builder-GDCGRYEP.mjs.map +7 -0
  17. package/dist/lib/neutral/capabilities/index.mjs +15 -0
  18. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  19. package/dist/lib/neutral/capabilities/node.mjs +13 -0
  20. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  21. package/dist/lib/neutral/chunk-2JP77CMN.mjs +42 -0
  22. package/dist/lib/neutral/chunk-2JP77CMN.mjs.map +7 -0
  23. package/dist/lib/{browser/chunk-EL64ZPPN.mjs → neutral/chunk-ATECY555.mjs} +6 -3
  24. package/dist/lib/{browser/chunk-EL64ZPPN.mjs.map → neutral/chunk-ATECY555.mjs.map} +3 -3
  25. package/dist/lib/neutral/chunk-DSCOLDT5.mjs +93 -0
  26. package/dist/lib/neutral/chunk-DSCOLDT5.mjs.map +7 -0
  27. package/dist/lib/{browser/chunk-O23LHDEX.mjs → neutral/chunk-FKFFU54G.mjs} +22 -21
  28. package/dist/lib/neutral/chunk-FKFFU54G.mjs.map +7 -0
  29. package/dist/lib/neutral/chunk-GDNOJOAR.mjs +8 -0
  30. package/dist/lib/neutral/chunk-GDNOJOAR.mjs.map +7 -0
  31. package/dist/lib/neutral/chunk-IGGNE2XI.mjs +12 -0
  32. package/dist/lib/neutral/chunk-IGGNE2XI.mjs.map +7 -0
  33. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  34. package/dist/lib/{browser/chunk-BWEKRPFJ.mjs → neutral/chunk-N735CP33.mjs} +24 -33
  35. package/dist/lib/neutral/chunk-N735CP33.mjs.map +7 -0
  36. package/dist/lib/neutral/components/index.mjs +16 -0
  37. package/dist/lib/neutral/compute-runtime-2Q5MGOR6.mjs +220 -0
  38. package/dist/lib/neutral/compute-runtime-2Q5MGOR6.mjs.map +7 -0
  39. package/dist/lib/neutral/containers/index.mjs +13 -0
  40. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  41. package/dist/lib/neutral/create-trigger-from-template-5FT7O7OU.mjs +69 -0
  42. package/dist/lib/neutral/create-trigger-from-template-5FT7O7OU.mjs.map +7 -0
  43. package/dist/lib/neutral/hooks/index.mjs +129 -0
  44. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  45. package/dist/lib/neutral/index.mjs +20 -0
  46. package/dist/lib/neutral/meta.json +1 -0
  47. package/dist/lib/neutral/meta.mjs +8 -0
  48. package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs +13 -0
  49. package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs.map +7 -0
  50. package/dist/lib/neutral/operations/index.mjs +8 -0
  51. package/dist/lib/neutral/plugin.mjs +16 -0
  52. package/dist/lib/neutral/plugin.mjs.map +7 -0
  53. package/dist/lib/neutral/react-surface-3OGMAMKV.mjs +57 -0
  54. package/dist/lib/neutral/react-surface-3OGMAMKV.mjs.map +7 -0
  55. package/dist/lib/neutral/translations.mjs +47 -0
  56. package/dist/lib/neutral/translations.mjs.map +7 -0
  57. package/dist/lib/neutral/types/index.mjs +16 -0
  58. package/dist/types/src/AutomationPlugin.d.ts +1 -0
  59. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  60. package/dist/types/src/{cli/plugin.d.ts → AutomationPlugin.node.d.ts} +2 -1
  61. package/dist/types/src/AutomationPlugin.node.d.ts.map +1 -0
  62. package/dist/types/src/AutomationPlugin.test.d.ts +2 -0
  63. package/dist/types/src/AutomationPlugin.test.d.ts.map +1 -0
  64. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/{compute-runtime/compute-runtime.d.ts → compute-runtime.d.ts} +9 -1
  66. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
  67. package/dist/types/src/capabilities/index.d.ts +6 -4
  68. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/node.d.ts +6 -0
  70. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  71. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  72. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  73. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  74. package/dist/types/src/commands/index.d.ts.map +1 -0
  75. package/dist/types/src/{cli/commands → commands}/trigger/create/index.d.ts +6 -6
  76. package/dist/types/src/commands/trigger/create/index.d.ts.map +1 -0
  77. package/dist/types/src/{cli/commands → commands}/trigger/create/queue.d.ts +1 -1
  78. package/dist/types/src/commands/trigger/create/queue.d.ts.map +1 -0
  79. package/dist/types/src/{cli/commands → commands}/trigger/create/subscription.d.ts +1 -1
  80. package/dist/types/src/commands/trigger/create/subscription.d.ts.map +1 -0
  81. package/dist/types/src/{cli/commands → commands}/trigger/create/timer.d.ts +1 -1
  82. package/dist/types/src/commands/trigger/create/timer.d.ts.map +1 -0
  83. package/dist/types/src/{cli/commands → commands}/trigger/index.d.ts +7 -7
  84. package/dist/types/src/commands/trigger/index.d.ts.map +1 -0
  85. package/dist/types/src/{cli/commands → commands}/trigger/list.d.ts +1 -1
  86. package/dist/types/src/commands/trigger/list.d.ts.map +1 -0
  87. package/dist/types/src/commands/trigger/options.d.ts.map +1 -0
  88. package/dist/types/src/{cli/commands → commands}/trigger/remove.d.ts +1 -1
  89. package/dist/types/src/commands/trigger/remove.d.ts.map +1 -0
  90. package/dist/types/src/{cli/commands → commands}/trigger/update/index.d.ts +5 -5
  91. package/dist/types/src/commands/trigger/update/index.d.ts.map +1 -0
  92. package/dist/types/src/commands/trigger/update/queue.d.ts.map +1 -0
  93. package/dist/types/src/commands/trigger/update/subscription.d.ts.map +1 -0
  94. package/dist/types/src/commands/trigger/update/timer.d.ts.map +1 -0
  95. package/dist/types/src/{cli/commands → commands}/trigger/util.d.ts +2 -2
  96. package/dist/types/src/commands/trigger/util.d.ts.map +1 -0
  97. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -1
  98. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  99. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +32 -32
  100. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  101. package/dist/types/src/components/AutomationPanel/index.d.ts.map +1 -1
  102. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  103. package/dist/types/src/components/FunctionsPanel/index.d.ts.map +1 -1
  104. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  105. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -1
  106. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +6 -6
  107. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  108. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +4 -4
  109. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  110. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -1
  111. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  112. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +95 -93
  113. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  114. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +3 -1
  115. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -1
  116. package/dist/types/src/containers/AutomationSettings/index.d.ts +1 -2
  117. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -1
  118. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts +2 -4
  119. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -1
  120. package/dist/types/src/containers/FunctionsContainer/index.d.ts +1 -2
  121. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -1
  122. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts +3 -3
  123. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -1
  124. package/dist/types/src/hooks/index.d.ts +2 -0
  125. package/dist/types/src/hooks/index.d.ts.map +1 -1
  126. package/dist/types/src/hooks/useComputeRuntime.d.ts +8 -0
  127. package/dist/types/src/hooks/useComputeRuntime.d.ts.map +1 -0
  128. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +1 -4
  129. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  130. package/dist/types/src/hooks/useComputeRuntimeService.d.ts +17 -0
  131. package/dist/types/src/hooks/useComputeRuntimeService.d.ts.map +1 -0
  132. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +1 -1
  133. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  134. package/dist/types/src/index.d.ts +0 -3
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/meta.d.ts.map +1 -1
  137. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  138. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  139. package/dist/types/src/operations/index.d.ts +3 -0
  140. package/dist/types/src/operations/index.d.ts.map +1 -0
  141. package/dist/types/src/plugin.d.ts +4 -0
  142. package/dist/types/src/plugin.d.ts.map +1 -0
  143. package/dist/types/src/testing/test-functions.d.ts +78 -76
  144. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  145. package/dist/types/src/translations.d.ts +32 -33
  146. package/dist/types/src/translations.d.ts.map +1 -1
  147. package/dist/types/src/types/AutomationCapabilities.d.ts +22 -0
  148. package/dist/types/src/types/AutomationCapabilities.d.ts.map +1 -0
  149. package/dist/types/src/types/AutomationEvents.d.ts +3 -0
  150. package/dist/types/src/types/AutomationEvents.d.ts.map +1 -0
  151. package/dist/types/src/types/AutomationOperation.d.ts +19 -0
  152. package/dist/types/src/types/AutomationOperation.d.ts.map +1 -0
  153. package/dist/types/src/types/index.d.ts +3 -2
  154. package/dist/types/src/types/index.d.ts.map +1 -1
  155. package/dist/types/src/types/schema.d.ts +7 -28
  156. package/dist/types/src/types/schema.d.ts.map +1 -1
  157. package/dist/types/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +115 -66
  159. package/src/AutomationPlugin.node.ts +29 -0
  160. package/src/AutomationPlugin.test.ts +27 -0
  161. package/src/AutomationPlugin.tsx +11 -9
  162. package/src/capabilities/app-graph-builder.ts +66 -0
  163. package/src/capabilities/compute-runtime.ts +325 -0
  164. package/src/capabilities/index.ts +10 -4
  165. package/src/capabilities/node.ts +13 -0
  166. package/src/capabilities/operation-handler.ts +16 -0
  167. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +17 -15
  168. package/src/{cli/commands → commands}/trigger/create/queue.ts +4 -7
  169. package/src/{cli/commands → commands}/trigger/create/subscription.ts +8 -11
  170. package/src/{cli/commands → commands}/trigger/create/timer.ts +4 -7
  171. package/src/{cli/commands → commands}/trigger/list.ts +7 -4
  172. package/src/{cli/commands → commands}/trigger/remove.ts +1 -1
  173. package/src/{cli/commands → commands}/trigger/update/queue.ts +16 -17
  174. package/src/{cli/commands → commands}/trigger/update/subscription.ts +15 -15
  175. package/src/{cli/commands → commands}/trigger/update/timer.ts +16 -16
  176. package/src/{cli/commands → commands}/trigger/util.ts +13 -7
  177. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +6 -5
  178. package/src/components/AutomationPanel/AutomationPanel.tsx +51 -43
  179. package/src/components/FunctionsPanel/FunctionsPanel.tsx +31 -24
  180. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +22 -18
  181. package/src/components/TriggerEditor/FunctionInputEditor.tsx +4 -4
  182. package/src/components/TriggerEditor/SpecSelector.tsx +17 -13
  183. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +13 -13
  184. package/src/components/TriggerEditor/TriggerEditor.tsx +8 -12
  185. package/src/containers/AutomationSettings/AutomationSettings.tsx +11 -7
  186. package/src/containers/AutomationSettings/index.ts +1 -3
  187. package/src/containers/FunctionsContainer/FunctionsContainer.tsx +11 -11
  188. package/src/containers/FunctionsContainer/index.ts +1 -3
  189. package/src/containers/TriggerSettings/TriggerSettings.tsx +32 -10
  190. package/src/hooks/index.ts +3 -0
  191. package/src/hooks/useComputeRuntime.ts +30 -0
  192. package/src/hooks/useComputeRuntimeCallback.ts +4 -39
  193. package/src/hooks/useComputeRuntimeService.ts +64 -0
  194. package/src/hooks/useTriggerRuntimeControls.ts +6 -3
  195. package/src/index.ts +0 -4
  196. package/src/meta.ts +2 -1
  197. package/src/operations/create-trigger-from-template.ts +72 -0
  198. package/src/operations/index.ts +7 -0
  199. package/src/plugin.ts +11 -0
  200. package/src/testing/test-functions.ts +6 -3
  201. package/src/translations.ts +38 -39
  202. package/src/types/AutomationCapabilities.ts +48 -0
  203. package/src/types/AutomationEvents.ts +11 -0
  204. package/src/types/AutomationOperation.ts +30 -0
  205. package/src/types/index.ts +4 -2
  206. package/src/types/schema.ts +2 -23
  207. package/dist/lib/browser/AutomationPanel-IGLIQY2N.mjs +0 -11
  208. package/dist/lib/browser/AutomationSettings-EDO3N5WI.mjs +0 -37
  209. package/dist/lib/browser/AutomationSettings-EDO3N5WI.mjs.map +0 -7
  210. package/dist/lib/browser/FunctionsContainer-R4ZMYSFJ.mjs +0 -43
  211. package/dist/lib/browser/FunctionsContainer-R4ZMYSFJ.mjs.map +0 -7
  212. package/dist/lib/browser/FunctionsPanel-NMA4RYJL.mjs +0 -10
  213. package/dist/lib/browser/FunctionsRegistry-TMKAEG5E.mjs +0 -10
  214. package/dist/lib/browser/TriggerSettings-56AIMOEC.mjs +0 -11
  215. package/dist/lib/browser/app-graph-builder-74ILZP25.mjs +0 -83
  216. package/dist/lib/browser/app-graph-builder-74ILZP25.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-75XLBFAG.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-BWEKRPFJ.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-FUVAC5EC.mjs +0 -96
  220. package/dist/lib/browser/chunk-FUVAC5EC.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-GVHAETEQ.mjs +0 -83
  222. package/dist/lib/browser/chunk-GVHAETEQ.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-H2MV4XE6.mjs +0 -31
  224. package/dist/lib/browser/chunk-H2MV4XE6.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-O23LHDEX.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-OAZ2JYXV.mjs +0 -93
  227. package/dist/lib/browser/chunk-OAZ2JYXV.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-Z7F7X2C5.mjs +0 -8
  229. package/dist/lib/browser/chunk-Z7F7X2C5.mjs.map +0 -7
  230. package/dist/lib/browser/cli/index.mjs.map +0 -7
  231. package/dist/lib/browser/compute-runtime-F3UMRKCL.mjs +0 -124
  232. package/dist/lib/browser/compute-runtime-F3UMRKCL.mjs.map +0 -7
  233. package/dist/lib/browser/hooks/index.mjs +0 -13
  234. package/dist/lib/browser/index.mjs +0 -123
  235. package/dist/lib/browser/index.mjs.map +0 -7
  236. package/dist/lib/browser/meta.json +0 -1
  237. package/dist/lib/browser/operation-resolver-IRC2DZU7.mjs +0 -84
  238. package/dist/lib/browser/operation-resolver-IRC2DZU7.mjs.map +0 -7
  239. package/dist/lib/browser/react-surface-5MFPVWIN.mjs +0 -65
  240. package/dist/lib/browser/react-surface-5MFPVWIN.mjs.map +0 -7
  241. package/dist/lib/browser/types/index.mjs +0 -14
  242. package/dist/lib/node-esm/AutomationPanel-O2BCQA7P.mjs +0 -12
  243. package/dist/lib/node-esm/AutomationPanel-O2BCQA7P.mjs.map +0 -7
  244. package/dist/lib/node-esm/AutomationSettings-LJNRQUX7.mjs +0 -38
  245. package/dist/lib/node-esm/AutomationSettings-LJNRQUX7.mjs.map +0 -7
  246. package/dist/lib/node-esm/FunctionsContainer-GYRPQZM7.mjs +0 -44
  247. package/dist/lib/node-esm/FunctionsContainer-GYRPQZM7.mjs.map +0 -7
  248. package/dist/lib/node-esm/FunctionsPanel-DCXXLSVP.mjs +0 -11
  249. package/dist/lib/node-esm/FunctionsPanel-DCXXLSVP.mjs.map +0 -7
  250. package/dist/lib/node-esm/FunctionsRegistry-7WCHC64E.mjs +0 -11
  251. package/dist/lib/node-esm/FunctionsRegistry-7WCHC64E.mjs.map +0 -7
  252. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs +0 -12
  253. package/dist/lib/node-esm/TriggerSettings-ONY5ZUKW.mjs.map +0 -7
  254. package/dist/lib/node-esm/app-graph-builder-VDXPOWCH.mjs +0 -84
  255. package/dist/lib/node-esm/app-graph-builder-VDXPOWCH.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-2UF55HSG.mjs +0 -94
  257. package/dist/lib/node-esm/chunk-2UF55HSG.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-6B4WZRVH.mjs +0 -84
  259. package/dist/lib/node-esm/chunk-6B4WZRVH.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-6JVB3IHW.mjs.map +0 -7
  261. package/dist/lib/node-esm/chunk-FPXVLTEY.mjs +0 -270
  262. package/dist/lib/node-esm/chunk-FPXVLTEY.mjs.map +0 -7
  263. package/dist/lib/node-esm/chunk-JVUE5PMI.mjs +0 -32
  264. package/dist/lib/node-esm/chunk-JVUE5PMI.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-K7T2MVB7.mjs +0 -98
  266. package/dist/lib/node-esm/chunk-K7T2MVB7.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-Q5JSKD6Z.mjs +0 -295
  268. package/dist/lib/node-esm/chunk-Q5JSKD6Z.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-R5YEWJCG.mjs +0 -10
  270. package/dist/lib/node-esm/chunk-R5YEWJCG.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-WC5AT7B3.mjs +0 -19
  272. package/dist/lib/node-esm/chunk-WC5AT7B3.mjs.map +0 -7
  273. package/dist/lib/node-esm/cli/index.mjs +0 -1116
  274. package/dist/lib/node-esm/cli/index.mjs.map +0 -7
  275. package/dist/lib/node-esm/compute-runtime-AMFVJMF2.mjs +0 -125
  276. package/dist/lib/node-esm/compute-runtime-AMFVJMF2.mjs.map +0 -7
  277. package/dist/lib/node-esm/hooks/index.mjs +0 -14
  278. package/dist/lib/node-esm/index.mjs +0 -124
  279. package/dist/lib/node-esm/index.mjs.map +0 -7
  280. package/dist/lib/node-esm/meta.json +0 -1
  281. package/dist/lib/node-esm/operation-resolver-CBLQHL4N.mjs +0 -85
  282. package/dist/lib/node-esm/operation-resolver-CBLQHL4N.mjs.map +0 -7
  283. package/dist/lib/node-esm/react-surface-Z74AHU4T.mjs +0 -66
  284. package/dist/lib/node-esm/react-surface-Z74AHU4T.mjs.map +0 -7
  285. package/dist/lib/node-esm/types/index.mjs +0 -15
  286. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  287. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  288. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  289. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +0 -1
  290. package/dist/types/src/capabilities/compute-runtime/index.d.ts +0 -3
  291. package/dist/types/src/capabilities/compute-runtime/index.d.ts.map +0 -1
  292. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  293. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  294. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  295. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  296. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  297. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  298. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  299. package/dist/types/src/cli/commands/index.d.ts.map +0 -1
  300. package/dist/types/src/cli/commands/trigger/create/index.d.ts.map +0 -1
  301. package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +0 -1
  302. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +0 -1
  303. package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +0 -1
  304. package/dist/types/src/cli/commands/trigger/index.d.ts.map +0 -1
  305. package/dist/types/src/cli/commands/trigger/list.d.ts.map +0 -1
  306. package/dist/types/src/cli/commands/trigger/options.d.ts.map +0 -1
  307. package/dist/types/src/cli/commands/trigger/remove.d.ts.map +0 -1
  308. package/dist/types/src/cli/commands/trigger/update/index.d.ts.map +0 -1
  309. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +0 -1
  310. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +0 -1
  311. package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +0 -1
  312. package/dist/types/src/cli/commands/trigger/util.d.ts.map +0 -1
  313. package/dist/types/src/cli/index.d.ts +0 -2
  314. package/dist/types/src/cli/index.d.ts.map +0 -1
  315. package/dist/types/src/cli/plugin.d.ts.map +0 -1
  316. package/dist/types/src/types/capabilities.d.ts +0 -22
  317. package/dist/types/src/types/capabilities.d.ts.map +0 -1
  318. package/dist/types/src/types/events.d.ts +0 -5
  319. package/dist/types/src/types/events.d.ts.map +0 -1
  320. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -73
  321. package/src/capabilities/app-graph-builder/index.ts +0 -7
  322. package/src/capabilities/compute-runtime/compute-runtime.ts +0 -146
  323. package/src/capabilities/compute-runtime/index.ts +0 -7
  324. package/src/capabilities/operation-resolver/index.ts +0 -7
  325. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -80
  326. package/src/capabilities/react-surface/index.ts +0 -7
  327. package/src/cli/index.ts +0 -5
  328. package/src/cli/plugin.ts +0 -24
  329. package/src/types/capabilities.ts +0 -43
  330. package/src/types/events.ts +0 -11
  331. /package/dist/lib/{browser/AutomationPanel-IGLIQY2N.mjs.map → neutral/AutomationPanel-64U7W3SJ.mjs.map} +0 -0
  332. /package/dist/lib/{browser/FunctionsPanel-NMA4RYJL.mjs.map → neutral/TriggerSettings-XCHIZPOR.mjs.map} +0 -0
  333. /package/dist/lib/{browser/FunctionsRegistry-TMKAEG5E.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  334. /package/dist/lib/{browser/hooks → neutral/components}/index.mjs.map +0 -0
  335. /package/dist/lib/{browser/types → neutral}/index.mjs.map +0 -0
  336. /package/dist/lib/{browser/TriggerSettings-56AIMOEC.mjs.map → neutral/meta.mjs.map} +0 -0
  337. /package/dist/lib/{node-esm/hooks → neutral/operations}/index.mjs.map +0 -0
  338. /package/dist/lib/{node-esm → neutral}/types/index.mjs.map +0 -0
  339. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  340. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
  341. /package/dist/types/src/{cli/commands → commands}/index.d.ts +0 -0
  342. /package/dist/types/src/{cli/commands → commands}/trigger/options.d.ts +0 -0
  343. /package/dist/types/src/{cli/commands → commands}/trigger/update/queue.d.ts +0 -0
  344. /package/dist/types/src/{cli/commands → commands}/trigger/update/subscription.d.ts +0 -0
  345. /package/dist/types/src/{cli/commands → commands}/trigger/update/timer.d.ts +0 -0
  346. /package/src/{cli/commands → commands}/index.ts +0 -0
  347. /package/src/{cli/commands → commands}/trigger/create/index.ts +0 -0
  348. /package/src/{cli/commands → commands}/trigger/index.ts +0 -0
  349. /package/src/{cli/commands → commands}/trigger/options.ts +0 -0
  350. /package/src/{cli/commands → commands}/trigger/update/index.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/AutomationPlugin.node.ts", "../../../src/commands/trigger/index.ts", "../../../src/commands/trigger/create/index.ts", "../../../src/commands/trigger/create/queue.ts", "../../../src/commands/trigger/options.ts", "../../../src/commands/trigger/util.ts", "../../../src/commands/trigger/create/subscription.ts", "../../../src/commands/trigger/create/timer.ts", "../../../src/commands/trigger/list.ts", "../../../src/commands/trigger/remove.ts", "../../../src/commands/trigger/update/index.ts", "../../../src/commands/trigger/update/queue.ts", "../../../src/commands/trigger/update/subscription.ts", "../../../src/commands/trigger/update/timer.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Operation, Trace, Trigger } from '@dxos/compute';\nimport { ClientEvents } from '@dxos/plugin-client';\n\nimport { AppGraphBuilder, ComputeRuntime, OperationHandler } from '#capabilities';\nimport { meta } from '#meta';\nimport { AutomationEvents } from '#types';\n\nimport { trigger } from './commands';\n\nexport const AutomationPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addCommandModule({ commands: [trigger] }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({ schema: [Operation.PersistentOperation, Trigger.Trigger, Trace.Message] }),\n Plugin.addModule({\n activatesOn: ClientEvents.ClientReady,\n firesAfterActivation: [AutomationEvents.ComputeRuntimeReady],\n activate: ComputeRuntime,\n }),\n Plugin.make,\n);\n\nexport default AutomationPlugin;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { create } from './create';\nimport { list } from './list';\nimport { remove } from './remove';\nimport { update } from './update';\n\n// TODO(wittjosiah): Rename to automation to align with Composer?\nexport const trigger = Command.make('trigger').pipe(\n Command.withDescription('Manage EDGE triggers.'),\n Command.withSubcommands([create, list, remove, update]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { queue } from './queue';\nimport { subscription } from './subscription';\nimport { timer } from './timer';\n\nexport const create = Command.make('create').pipe(\n Command.withDescription('Create a trigger.'),\n Command.withSubcommands([subscription, timer, queue]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\n\nimport { Enabled, Input, Queue } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectQueue } from '../util';\n\nexport const queue = Command.make(\n 'queue',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n queue: Queue.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const queueDxn = yield* Option.match(options.queue, {\n onNone: () => selectQueue(),\n onSome: (dxn) => Effect.succeed(dxn.toString()),\n });\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specQueue(queueDxn),\n input,\n });\n\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a queue trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Options from '@effect/cli/Options';\nimport * as Schema from 'effect/Schema';\n\nimport { DXN } from '@dxos/keys';\n\nexport const TriggerId = Options.text('id').pipe(Options.withDescription('The id of the trigger.'));\n\nexport const Enabled = Options.boolean('enabled', { ifPresent: true }).pipe(\n Options.withDescription('Whether the trigger is enabled.'),\n);\n\nexport const Input = Options.keyValueMap('input').pipe(\n Options.withDescription(\"Input data to pass to the function. Must match the function's input schema.\"),\n);\n\n//\n// Subscription\n//\n\nexport const Typename = Options.text('typename').pipe(\n Options.withDescription('The type name to query for the subscription trigger.'),\n);\n\nexport const Deep = Options.boolean('deep', { ifPresent: true }).pipe(\n Options.withDescription('Watch changes to nested properties (not just creation).'),\n);\n\nexport const Delay = Options.integer('delay').pipe(\n Options.withDescription('Debounce changes with a delay in milliseconds.'),\n);\n\n//\n// Timer\n//\n\nexport const Cron = Options.text('cron').pipe(\n Options.withDescription('The cron expression to use for the timer trigger.'),\n);\n\n//\n// Queue\n//\n\n// TODO(dmaretskyi): Extract\nconst DXNSchema = Schema.String.pipe(\n Schema.transform(Schema.instanceOf(DXN), {\n decode: (value: string) => DXN.parse(value),\n encode: (value: DXN) => value.toString(),\n }),\n);\n\nexport const Queue = Options.text('queue').pipe(\n Options.withDescription('The DXN of the queue for the queue trigger.'),\n Options.withSchema(DXNSchema),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Ansi from '@effect/printer-ansi/Ansi';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport * as SchemaAST from 'effect/SchemaAST';\n\nimport { FormBuilder } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { Annotation, Database, Entity, Feed, Filter, Obj, Query, Ref, Type } from '@dxos/echo';\nimport { getProperties } from '@dxos/effect';\nimport { FeedAnnotation } from '@dxos/schema';\n\nexport type TriggerRemoteStatus = 'available' | 'not available' | 'n/a';\n\n/**\n * Determines the remote status of a trigger.\n * Only timer/cron triggers can be checked for remote availability.\n */\nexport const getTriggerRemoteStatus = (trigger: Trigger.Trigger, remoteCronIds: string[]): TriggerRemoteStatus => {\n if (trigger.spec?.kind !== 'timer') {\n return 'n/a';\n }\n return remoteCronIds.includes(trigger.id) ? 'available' : 'not available';\n};\n\n/**\n * Pretty prints a trigger with ANSI colors.\n */\nexport const printTrigger = Effect.fn(function* (trigger: Trigger.Trigger, remoteStatus?: TriggerRemoteStatus) {\n const fn = trigger.function && (yield* Database.load(trigger.function));\n\n return FormBuilder.make({\n title: trigger.id,\n }).pipe(\n FormBuilder.set(\n 'status',\n trigger.enabled ? 'enabled' : 'disabled',\n trigger.enabled ? Ansi.green : Ansi.blackBright,\n ),\n FormBuilder.option('kind', Option.fromNullable(trigger.spec?.kind)),\n FormBuilder.option(\n 'remote',\n Option.fromNullable(remoteStatus),\n Match.type<TriggerRemoteStatus>().pipe(\n Match.withReturnType<Ansi.Ansi>(),\n Match.when('available', () => Ansi.green),\n Match.when('not available', () => Ansi.yellow),\n Match.when('n/a', () => Ansi.blackBright),\n Match.exhaustive,\n ),\n ),\n FormBuilder.when(\n fn,\n FormBuilder.nest(\n 'function',\n FormBuilder.make().pipe(\n FormBuilder.set('key', (fn as Operation.PersistentOperation).key),\n FormBuilder.set('dxn', Obj.getDXN(fn as Obj.Unknown).toString()),\n ),\n ),\n ),\n FormBuilder.nestedOption('spec', Option.fromNullable(trigger.spec).pipe(Option.map(printSpec))),\n FormBuilder.build,\n );\n});\n\nconst printSpec = <T extends Trigger.Spec>(spec: T): FormBuilder.FormBuilder => {\n switch (spec.kind) {\n case 'timer':\n return printTimer(spec);\n case 'subscription':\n return printSubscription(spec);\n case 'webhook':\n return printWebhook(spec);\n case 'queue':\n return printQueue(spec);\n default:\n return FormBuilder.make({}).pipe(FormBuilder.set('unknown', 'Unknown spec type'));\n }\n};\n\nconst printTimer = (spec: Trigger.TimerSpec) => FormBuilder.make({}).pipe(FormBuilder.set('cron', spec.cron));\n\nconst printSubscription = (spec: Trigger.SubscriptionSpec) =>\n FormBuilder.make({}).pipe(FormBuilder.set('query', spec.query?.raw ?? '[Query AST]'));\n\nconst printWebhook = (spec: Trigger.WebhookSpec) =>\n FormBuilder.make({}).pipe(FormBuilder.set('method', spec.method), FormBuilder.set('port', spec.port));\n\nconst printQueue = (spec: Trigger.QueueSpec) => FormBuilder.make({}).pipe(FormBuilder.set('queue', spec.queue));\n\n/**\n * Prompts for input values based on an Effect schema.\n * First shows a multi-select to choose which properties to specify,\n * then prompts for values of the selected properties.\n * Required properties are automatically included and cannot be unselected.\n * @param schema - The Effect schema to prompt for\n * @param defaults - Optional default values to use as initial values and pre-select optional properties\n */\nexport const promptForSchemaInput = Effect.fn(function* (\n schema: Schema.Schema.AnyNoContext | undefined,\n defaults?: Record<string, any> | undefined,\n) {\n if (!schema) {\n return {};\n }\n\n const ast = schema.ast;\n\n // Check if it's a struct/object type\n if (!SchemaAST.isTypeLiteral(ast)) {\n return {};\n }\n\n const properties = getProperties(ast);\n if (properties.length === 0) {\n return {};\n }\n\n // Separate required and optional properties\n const requiredProperties: typeof properties = [];\n const optionalProperties: typeof properties = [];\n\n for (const prop of properties) {\n if (prop.isOptional) {\n optionalProperties.push(prop);\n } else {\n requiredProperties.push(prop);\n }\n }\n\n // Build property info\n const propertyInfo = properties.map((prop) => {\n const key = prop.name.toString();\n return {\n prop,\n key,\n isRequired: !prop.isOptional,\n };\n });\n\n // Multi-select: show all properties and let user select which optional ones to include\n const selectedKeys = new Set<string>();\n\n // Required properties are automatically selected\n for (const info of propertyInfo) {\n if (info.isRequired) {\n selectedKeys.add(info.key);\n }\n }\n\n // Show required properties that will be automatically included\n if (requiredProperties.length > 0) {\n const requiredNames = requiredProperties.map((p) => {\n const info = propertyInfo.find((i) => i.prop === p);\n return info?.key ?? p.name.toString();\n });\n yield* Console.log(`Required properties (will be included): ${requiredNames.join(', ')}`);\n }\n\n // For optional properties, use multi-select to choose which ones to include\n if (optionalProperties.length > 0) {\n const optionalInfo = propertyInfo.filter((info) => !info.isRequired);\n const choices = optionalInfo.map((info) => {\n const hasDefault = defaults?.[info.key] !== undefined;\n const defaultText = hasDefault ? ` (current: ${JSON.stringify(defaults[info.key])})` : '';\n return {\n title: `${info.key}${defaultText}`,\n value: info.key,\n description: hasDefault ? 'Has default value' : undefined,\n };\n });\n\n const selected = yield* Prompt.multiSelect({\n message: 'Select optional properties to include:',\n choices,\n });\n\n // Add selected optional properties to selectedKeys\n for (const key of selected) {\n selectedKeys.add(String(key));\n }\n }\n\n // If no properties selected (shouldn't happen if there are required ones), return empty\n if (selectedKeys.size === 0) {\n return {};\n }\n\n // Prompt for values of selected properties\n const inputObj: Record<string, any> = {};\n\n for (const info of propertyInfo) {\n if (!selectedKeys.has(info.key)) {\n continue;\n }\n\n const key = info.key;\n const propType = info.prop.type;\n const schemaDefault = Option.getOrUndefined(SchemaAST.getDefaultAnnotation(propType));\n const defaultValue = defaults?.[key] ?? schemaDefault;\n\n if (SchemaAST.isBooleanKeyword(propType)) {\n const initialValue =\n typeof defaultValue === 'boolean' ? defaultValue : typeof schemaDefault === 'boolean' ? schemaDefault : false;\n const value = yield* Prompt.confirm({\n message: `${info.key}${defaults?.[key] !== undefined ? ` (current: ${defaults[key]})` : ''}:`,\n initial: initialValue,\n });\n inputObj[key] = value;\n } else if (SchemaAST.isNumberKeyword(propType)) {\n const currentValue = typeof defaultValue === 'number' ? String(defaultValue) : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : parseFloat(valueStr) || 0;\n } else if (SchemaAST.isStringKeyword(propType)) {\n const currentValue = typeof defaultValue === 'string' ? defaultValue : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : valueStr;\n } else if (Ref.isRefType(propType)) {\n const isDefaultTemplate =\n typeof defaultValue === 'string' && defaultValue.startsWith('{{') && defaultValue.endsWith('}}');\n const useTemplate = yield* Prompt.confirm({\n message: `Use a template to specify ${info.key}?${isDefaultTemplate ? ' (current: template)' : ''}`,\n initial: isDefaultTemplate,\n });\n if (useTemplate) {\n const currentValue = typeof defaultValue === 'string' ? defaultValue : '';\n const templateStr = yield* Prompt.text({\n message: `${info.key} template${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = templateStr === '' && defaultValue !== undefined ? defaultValue : templateStr;\n } else {\n const annotation = Annotation.ReferenceAnnotation.getFromAst(propType).pipe(Option.getOrThrow);\n const objects = yield* Database.runQuery(Filter.typename(annotation.typename));\n if (objects.length === 0) {\n inputObj[key] = undefined;\n } else {\n const selected = yield* Prompt.select({\n message: `Select ${info.key}:`,\n choices: objects.map((obj: Entity.Any) => ({\n title: Entity.getLabel(obj) ?? obj.id,\n value: Ref.make(obj),\n description: Entity.getDescription(obj),\n })),\n });\n inputObj[key] = selected;\n }\n }\n } else {\n // For other types, prompt as string and let validation handle it\n const currentValue = defaultValue !== undefined ? String(defaultValue) : '';\n const valueStr = yield* Prompt.text({\n message: `${info.key}${currentValue ? ` (current: ${currentValue}, press Enter to keep)` : ''}:`,\n }).pipe(Prompt.run);\n inputObj[key] = valueStr === '' && defaultValue !== undefined ? defaultValue : valueStr;\n }\n }\n\n return inputObj;\n});\n\n/**\n * Selects a function interactively from available functions in the database.\n * Queries the database for functions and prompts the user to select one.\n */\nexport const selectFunction = Effect.fn(function* () {\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n\n if (functions.length === 0) {\n return yield* Effect.fail(new Error('No functions available'));\n }\n\n const selected = yield* Prompt.select({\n message: 'Select a function:',\n choices: functions.map((fn: Operation.PersistentOperation) => ({\n title: fn.name ?? fn.id,\n value: fn.id,\n description: fn.description,\n })),\n });\n\n return String(selected);\n});\n\n/**\n * Selects a trigger interactively from available triggers.\n * If kind is provided, filters triggers by that kind.\n * Queries the database for triggers and prompts the user to select one.\n */\nexport const selectTrigger = Effect.fn(function* (kind?: Trigger.Kind) {\n const triggers = yield* Database.runQuery(\n Query.select(Filter.type(Trigger.Trigger)).debugLabel('cli.trigger.selectTrigger'),\n );\n const filteredTriggers = kind ? triggers.filter((trigger) => trigger.spec?.kind === kind) : triggers;\n\n if (filteredTriggers.length === 0) {\n return yield* Effect.fail(new Error(kind ? `No ${kind} triggers available` : 'No triggers available'));\n }\n\n const choices = yield* Effect.all(\n filteredTriggers.map((trigger) =>\n Effect.gen(function* () {\n const fn = trigger.function ? yield* Database.load(trigger.function) : undefined;\n const functionName =\n fn && Obj.instanceOf(Operation.PersistentOperation, fn) ? (fn.name ?? fn.key ?? fn.id) : undefined;\n const title = functionName ?? trigger.id;\n const description = `${trigger.enabled ? 'enabled' : 'disabled'} - ${trigger.spec?.kind ?? 'unknown'}`;\n\n return {\n title,\n value: trigger.id,\n description,\n };\n }),\n ),\n );\n\n const selected = yield* Prompt.select({\n message: kind ? `Select a ${kind} trigger:` : 'Select a trigger:',\n choices,\n });\n\n return String(selected);\n});\n\n/**\n * Selects a queue interactively from available queues in the database.\n * Queries schemas with FeedAnnotation, then queries objects of those types,\n * and extracts queue DXNs from the objects' feed properties.\n */\nexport const selectQueue = Effect.fn(function* () {\n // Query schema registry for schemas with FeedAnnotation.\n const schemas = yield* Database.runSchemaQuery({ location: ['database', 'runtime'] });\n\n // Filter schemas that have FeedAnnotation.\n const feedSchemas = schemas.filter((schema) => {\n const annotation = FeedAnnotation.get(schema);\n return Option.isSome(annotation) && annotation.value === true;\n });\n\n if (feedSchemas.length === 0) {\n return yield* Effect.fail(new Error('No schemas with Feed annotation found'));\n }\n\n // Collect all objects with queues.\n const queueChoices: Array<{ title: string; value: string; description?: string }> = [];\n\n // Process each feed schema, loading the Feed object to extract queue DXN.\n for (const schema of feedSchemas) {\n yield* Effect.gen(function* () {\n const typename = Type.getTypename(schema);\n const objects = yield* Database.runQuery(Filter.type(typename));\n\n for (const obj of objects) {\n // Access the feed property (which is a Ref<Feed>).\n const feedRef = (obj as any).feed as Ref.Ref<any> | undefined;\n if (!feedRef) {\n continue;\n }\n\n const feedObj = yield* Effect.promise(() => feedRef.tryLoad());\n if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj)) {\n continue;\n }\n\n const queueDxn = Feed.getQueueDxn(feedObj);\n if (!queueDxn) {\n continue;\n }\n\n const label = Obj.getLabel(obj) ?? obj.id;\n const description = Obj.getTypename(obj);\n\n queueChoices.push({\n title: label,\n value: queueDxn.toString(),\n description,\n });\n }\n }).pipe(Effect.catchAll(() => Effect.void));\n }\n\n if (queueChoices.length === 0) {\n return yield* Effect.fail(new Error('No objects with queue properties found'));\n }\n\n const selected = yield* Prompt.select({\n message: 'Select a queue:',\n choices: queueChoices,\n });\n\n return String(selected);\n});\n\n/**\n * Pretty prints trigger removal result with ANSI colors.\n */\nexport const printTriggerRemoved = (id: string) =>\n FormBuilder.make({ title: 'Trigger removed' }).pipe(FormBuilder.set('id', id), FormBuilder.build);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { Database, Filter, JsonSchema, Query, Ref } from '@dxos/echo';\n\nimport { Deep, Delay, Enabled, Input, Typename } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction } from '../util';\n\nexport const subscription = Command.make(\n 'subscription',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n typename: Typename.pipe(Options.optional),\n deep: Deep.pipe(Options.optional),\n delay: Delay.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const typename = yield* Option.match(options.typename, {\n onNone: () =>\n Prompt.text({\n message: 'Enter type name:',\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n const subscriptionQuery = Query.select(Filter.type(typename));\n\n const deepOption = yield* Option.match(options.deep, {\n onNone: () =>\n Prompt.confirm({\n message: 'Watch changes to nested properties (deep)?',\n initial: false,\n }).pipe(\n Prompt.run,\n Effect.map((value) => (value ? Option.some(value) : Option.none())),\n ),\n onSome: () => Effect.succeed(Option.some(true)),\n });\n\n const delayOption = yield* Option.match(options.delay, {\n onNone: () =>\n Effect.gen(function* () {\n const delayStr = yield* Prompt.text({\n message: 'Debounce delay in milliseconds (optional, press Enter to skip):',\n }).pipe(Prompt.run);\n return delayStr === '' ? Option.none<number>() : Option.some(parseInt(delayStr, 10));\n }),\n onSome: (value) => Effect.succeed(Option.some(value)),\n });\n\n const subscriptionOptions: { deep?: boolean; delay?: number } = {};\n if (Option.isSome(deepOption)) {\n subscriptionOptions.deep = deepOption.value;\n }\n if (Option.isSome(delayOption)) {\n subscriptionOptions.delay = delayOption.value;\n }\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specSubscription(\n subscriptionQuery,\n Object.keys(subscriptionOptions).length > 0 ? subscriptionOptions : undefined,\n ),\n input,\n });\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a subscription trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as HashMap from 'effect/HashMap';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\n\nimport { Cron, Enabled, Input } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction } from '../util';\n\n// trigger create timer --cron \"0 0 * * *\" --functionId <functionId>\nexport const timer = Command.make(\n 'timer',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n cron: Cron.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const functionId = yield* Option.match(options.functionId, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const fn = functions.find((fn) => fn.id === functionId);\n if (!fn) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n\n const cron = yield* Option.match(options.cron, {\n onNone: () =>\n Prompt.text({\n message: 'Enter cron expression:',\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n\n const input = yield* Option.match(options.input, {\n onNone: () => promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined),\n onSome: (value) => Effect.succeed(Object.fromEntries(HashMap.toEntries(value))),\n });\n\n // Always prompt for enabled if functionId is not provided.\n const enabled = yield* Option.match(options.functionId, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: true,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(options.enabled),\n });\n\n const trigger = Trigger.make({\n function: Ref.make(fn),\n enabled,\n spec: Trigger.specTimer(cron),\n input,\n });\n\n yield* Database.add(trigger);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Create a timer trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, Common, printList, spaceIdWithDefault, spaceLayer } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { Trigger } from '@dxos/compute';\nimport { Context } from '@dxos/context';\nimport { Database, Filter, Query } from '@dxos/echo';\n\nimport { getTriggerRemoteStatus, printTrigger } from './util';\n\nexport const list = Command.make(\n 'list',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n },\n Effect.fn(function* ({ spaceId: spaceIdOption }) {\n const { json } = yield* CommandConfig;\n\n // Fetch local triggers\n const triggers = yield* Database.runQuery(\n Query.select(Filter.type(Trigger.Trigger)).debugLabel('cli.trigger.list'),\n );\n\n // Fetch remote cron triggers to check availability\n const remoteCronIds = yield* Effect.gen(function* () {\n const client = yield* ClientService;\n const spaceId = yield* spaceIdWithDefault(spaceIdOption);\n const result = yield* Effect.promise(() => client.edge.http.getCronTriggers(Context.default(), spaceId)).pipe(\n Effect.catchAll(() => Effect.succeed({ cronIds: [] })),\n );\n return result.cronIds;\n });\n\n // Determine remote status for each trigger\n const triggersWithStatus = triggers.map((trigger) => ({\n trigger,\n remoteStatus: getTriggerRemoteStatus(trigger, remoteCronIds),\n }));\n\n // Print triggers\n if (json) {\n yield* Console.log(\n JSON.stringify(\n triggersWithStatus.map(({ trigger, remoteStatus }) => ({ ...trigger, remoteStatus })),\n null,\n 2,\n ),\n );\n } else {\n if (triggersWithStatus.length === 0) {\n yield* Console.log('No triggers found.');\n } else {\n const items = yield* Effect.all(\n triggersWithStatus.map(({ trigger, remoteStatus }) => printTrigger(trigger, remoteStatus)),\n );\n yield* Console.log(printList(items));\n }\n }\n }),\n).pipe(\n Command.withDescription('List triggers configured on EDGE.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Trigger } from '@dxos/compute';\nimport { DXN } from '@dxos/echo';\nimport { Database } from '@dxos/echo';\n\nimport { TriggerId } from './options';\nimport { printTriggerRemoved, selectTrigger } from './util';\n\nexport const remove = Command.make(\n 'remove',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger(),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n yield* Database.remove(trigger);\n if (json) {\n yield* Console.log(JSON.stringify({ id: trigger.id, removed: true }, null, 2));\n } else {\n yield* Console.log(print(printTriggerRemoved(trigger.id)));\n }\n }),\n).pipe(\n Command.withDescription('Remove a trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Trigger.Trigger)),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { queue } from './queue';\nimport { subscription } from './subscription';\nimport { timer } from './timer';\n\nexport const update = Command.make('update').pipe(\n Command.withDescription('Update a trigger.'),\n Command.withSubcommands([subscription, timer, queue]),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\n\nimport { Enabled, Input, Queue, TriggerId } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectQueue, selectTrigger } from '../util';\n\nexport const queue = Command.make(\n 'queue',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n queue: Queue.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('queue'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (trigger.spec?.kind !== 'queue') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateQueue(trigger, options.queue);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a queue trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the queue DXN for a queue trigger.\n * Prompts for confirmation if queue is not provided, then updates the queue if confirmed.\n */\nconst updateQueue = Effect.fn(function* (trigger: Trigger.Trigger, queueOption: Option.Option<DXN>) {\n const currentQueue = trigger.spec?.kind === 'queue' ? trigger.spec.queue : undefined;\n const currentQueueStr = currentQueue\n ? typeof currentQueue === 'string'\n ? currentQueue\n : String(currentQueue)\n : undefined;\n const shouldChangeQueue = yield* Option.match(queueOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the queue${currentQueueStr ? ` (current: ${currentQueueStr})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeQueue) {\n const queueDxn = yield* Option.match(queueOption, {\n onNone: () => selectQueue(),\n onSome: (dxn) => Effect.succeed(dxn.toString()),\n });\n Obj.update(trigger, (trigger) => {\n if (trigger.spec?.kind === 'queue') {\n trigger.spec.queue = queueDxn;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { DXN, Database, Filter, JsonSchema, Obj, Query, Ref } from '@dxos/echo';\n\nimport { Deep, Delay, Enabled, Input, TriggerId, Typename } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';\n\nexport const subscription = Command.make(\n 'subscription',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n typename: Typename.pipe(Options.optional),\n deep: Deep.pipe(Options.optional),\n delay: Delay.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('subscription'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (trigger.spec?.kind !== 'subscription') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateSpec(trigger, options.typename, options.deep, options.delay);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a subscription trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Extracts the current typename from a subscription trigger's query AST.\n */\nconst extractCurrentTypename = (spec: Trigger.SubscriptionSpec | undefined): Option.Option<string> => {\n if (!spec?.query?.ast) {\n return Option.none();\n }\n return Match.value(spec.query.ast).pipe(\n Match.withReturnType<Option.Option<string>>(),\n Match.when({ type: 'select' }, (q) =>\n Match.value(q.filter).pipe(\n Match.withReturnType<Option.Option<string>>(),\n Match.when({ type: 'object' }, (f) =>\n Option.fromNullable(f.typename).pipe(\n Option.flatMap((dxn) => Option.fromNullable(DXN.tryParse(dxn))),\n Option.flatMap((dxn) => Option.fromNullable(dxn.asTypeDXN()?.type)),\n ),\n ),\n Match.orElse(() => Option.none()),\n ),\n ),\n Match.orElse(() => Option.none()),\n );\n};\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the subscription trigger spec (typename, deep, delay).\n * Prompts for confirmation if no spec options are provided, then updates the spec if confirmed.\n */\nconst updateSpec = Effect.fn(function* (\n trigger: Trigger.Trigger,\n typenameOption: Option.Option<string>,\n deepOption: Option.Option<boolean>,\n delayOption: Option.Option<number>,\n) {\n const currentSpec = trigger.spec?.kind === 'subscription' ? trigger.spec : undefined;\n const currentTypename = extractCurrentTypename(currentSpec);\n const currentTypenameStr = Option.getOrUndefined(currentTypename);\n const currentDeep = currentSpec?.options?.deep;\n const currentDelay = currentSpec?.options?.delay;\n const specParts: string[] = [];\n if (currentTypenameStr) {\n specParts.push(`typename: ${currentTypenameStr}`);\n }\n if (currentDeep !== undefined) {\n specParts.push(`deep: ${currentDeep}`);\n }\n if (currentDelay !== undefined) {\n specParts.push(`delay: ${currentDelay}`);\n }\n const currentSpecStr = specParts.length > 0 ? specParts.join(', ') : 'none';\n\n const hasSpecOption = Option.isSome(typenameOption) || Option.isSome(deepOption) || Option.isSome(delayOption);\n const shouldChangeSpec = yield* hasSpecOption\n ? Effect.succeed(true)\n : Prompt.confirm({\n message: `Change the trigger spec (current: ${currentSpecStr})?`,\n initial: false,\n }).pipe(Prompt.run);\n if (shouldChangeSpec) {\n const typename = yield* Option.match(typenameOption, {\n onNone: () =>\n Prompt.text({\n message: `Enter type name${currentTypenameStr ? ` (current: ${currentTypenameStr})` : ''}:`,\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n const queryAst = Query.select(Filter.type(typename)).ast;\n\n const deepOptionValue = yield* Option.match(deepOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Watch changes to nested properties (deep)?',\n initial: currentSpec?.options?.deep ?? false,\n }).pipe(\n Prompt.run,\n Effect.map((value) => (value ? Option.some(value) : Option.none())),\n ),\n onSome: () => Effect.succeed(Option.some(true)),\n });\n\n const delayOptionValue = yield* Option.match(delayOption, {\n onNone: () =>\n Effect.gen(function* () {\n const currentDelay = currentSpec?.options?.delay;\n const delayStr = yield* Prompt.text({\n message: `Debounce delay in milliseconds (optional, press Enter to skip)${currentDelay ? ` (current: ${currentDelay})` : ''}:`,\n }).pipe(Prompt.run);\n return delayStr === '' ? Option.none<number>() : Option.some(parseInt(delayStr, 10));\n }),\n onSome: (value) => Effect.succeed(Option.some(value)),\n });\n\n const subscriptionOptions: { deep?: boolean; delay?: number } = {};\n if (Option.isSome(deepOptionValue)) {\n subscriptionOptions.deep = deepOptionValue.value;\n }\n if (Option.isSome(delayOptionValue)) {\n subscriptionOptions.delay = delayOptionValue.value;\n }\n\n Obj.update(trigger, (trigger) => {\n const spec = trigger.spec;\n if (spec?.kind === 'subscription') {\n // Cast needed because QueryAST types are deeply readonly but spec.query expects mutable.\n spec.query = { ast: queryAst } as NonNullable<typeof spec.query>;\n spec.options = Object.keys(subscriptionOptions).length > 0 ? subscriptionOptions : undefined;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';\nimport { Common } from '@dxos/cli-util';\nimport { Operation, Trigger } from '@dxos/compute';\nimport { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\n\nimport { Cron, Enabled, Input, TriggerId } from '../options';\nimport { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';\n\nexport const timer = Command.make(\n 'timer',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n id: TriggerId.pipe(Options.optional),\n enabled: Enabled,\n functionId: Common.functionId.pipe(Options.optional),\n cron: Cron.pipe(Options.optional),\n input: Input.pipe(Options.optional),\n },\n (options) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n\n const triggerId = yield* Option.match(options.id, {\n onNone: () => selectTrigger('timer'),\n onSome: (id) => Effect.succeed(id),\n });\n const dxn = DXN.fromLocalObjectId(triggerId);\n const trigger = yield* Database.resolve(dxn, Trigger.Trigger);\n if (!trigger.spec || trigger.spec?.kind !== 'timer') {\n return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));\n }\n\n const currentFn = yield* updateFunction(trigger, options.functionId);\n yield* updateCron(trigger, options.cron);\n yield* updateInput(trigger, currentFn, options.input);\n yield* updateEnabled(trigger, options.id, options.enabled);\n\n if (json) {\n yield* Console.log(JSON.stringify(trigger, null, 2));\n } else {\n yield* Console.log(print(yield* printTrigger(trigger)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Update a timer trigger.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),\n);\n\n/**\n * Handles updating the function for a trigger.\n * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.\n * @returns The current function (either original or newly assigned)\n */\nconst updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {\n let currentFn: Operation.PersistentOperation | undefined = trigger.function\n ? yield* Database.load(trigger.function) as any\n : undefined;\n if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {\n currentFn = undefined;\n }\n const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;\n const shouldChangeFunction = yield* Option.match(functionIdOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeFunction) {\n const functionId = yield* Option.match(functionIdOption, {\n onNone: () => selectFunction(),\n onSome: (id) => Effect.succeed(id),\n });\n const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));\n const foundFn = functions.find((fn) => fn.id === functionId);\n if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {\n return yield* Effect.fail(new Error(`Function not found: ${functionId}`));\n }\n Obj.update(trigger, (trigger) => {\n trigger.function = Ref.make(foundFn);\n });\n currentFn = foundFn;\n }\n\n if (!currentFn) {\n const functionId = trigger.function?.dxn.asEchoDXN()?.echoId ?? 'unknown';\n return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));\n }\n\n return currentFn;\n});\n\n/**\n * Handles updating the cron expression for a timer trigger.\n * Prompts for confirmation if cron is not provided, then updates the cron if confirmed.\n */\nconst updateCron = Effect.fn(function* (trigger: Trigger.Trigger, cronOption: Option.Option<string>) {\n const currentCron = trigger.spec?.kind === 'timer' ? trigger.spec.cron : undefined;\n const shouldChangeCron = yield* Option.match(cronOption, {\n onNone: () =>\n Prompt.confirm({\n message: `Change the cron expression${currentCron ? ` (current: ${currentCron})` : ''}?`,\n initial: false,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeCron) {\n const cron = yield* Option.match(cronOption, {\n onNone: () =>\n Prompt.text({\n message: `Enter cron expression${currentCron ? ` (current: ${currentCron})` : ''}:`,\n }).pipe(Prompt.run),\n onSome: (value) => Effect.succeed(value),\n });\n Obj.update(trigger, (trigger) => {\n if (trigger.spec?.kind === 'timer') {\n trigger.spec.cron = cron;\n }\n });\n }\n});\n\n/**\n * Handles updating the input for a trigger.\n * Prompts for confirmation if input is not provided, then updates the input if confirmed.\n */\nconst updateInput = Effect.fn(function* (\n trigger: Trigger.Trigger,\n fn: Operation.PersistentOperation,\n inputOption: Option.Option<Record<string, any>>,\n) {\n const currentInput = trigger.input as Record<string, any> | undefined;\n const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';\n const shouldChangeInput = yield* Option.match(inputOption, {\n onNone: () =>\n Effect.gen(function* () {\n yield* Console.log(`Current input: ${currentInputStr}`);\n return yield* Prompt.confirm({\n message: 'Change input?',\n initial: false,\n }).pipe(Prompt.run);\n }),\n onSome: () => Effect.succeed(true),\n });\n if (shouldChangeInput) {\n const inputObj = yield* Option.match(inputOption, {\n onNone: () =>\n promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),\n onSome: (value) => Effect.succeed(value as Record<string, any>),\n });\n Obj.update(trigger, (trigger) => {\n trigger.input = inputObj;\n });\n }\n});\n\n/**\n * Handles updating the enabled status for a trigger.\n * Prompts for enabled if id is not provided.\n */\nconst updateEnabled = Effect.fn(function* (\n trigger: Trigger.Trigger,\n idOption: Option.Option<string>,\n enabled: boolean,\n) {\n const enabledValue = yield* Option.match(idOption, {\n onNone: () =>\n Prompt.confirm({\n message: 'Enable the trigger?',\n initial: trigger.enabled,\n }).pipe(Prompt.run),\n onSome: () => Effect.succeed(enabled),\n });\n Obj.update(trigger, (trigger) => {\n trigger.enabled = enabledValue;\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Plugin", "AppPlugin", "Operation", "Trace", "Trigger", "ClientEvents", "AppGraphBuilder", "ComputeRuntime", "OperationHandler", "meta", "AutomationEvents", "Command", "Command", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "Database", "Filter", "JsonSchema", "Ref", "Options", "Schema", "DXN", "TriggerId", "text", "pipe", "withDescription", "Enabled", "boolean", "ifPresent", "Input", "keyValueMap", "Typename", "Deep", "Delay", "integer", "Cron", "DXNSchema", "String", "transform", "instanceOf", "decode", "value", "parse", "encode", "toString", "Queue", "withSchema", "Prompt", "Ansi", "Console", "Effect", "Match", "Option", "SchemaAST", "FormBuilder", "Operation", "Trigger", "Annotation", "Database", "Entity", "Feed", "Filter", "Obj", "Query", "Ref", "Type", "getProperties", "FeedAnnotation", "getTriggerRemoteStatus", "trigger", "remoteCronIds", "spec", "kind", "includes", "id", "printTrigger", "fn", "remoteStatus", "function", "load", "make", "title", "pipe", "set", "enabled", "green", "blackBright", "option", "fromNullable", "type", "withReturnType", "when", "yellow", "exhaustive", "nest", "key", "getDXN", "toString", "nestedOption", "map", "printSpec", "build", "printTimer", "printSubscription", "printWebhook", "printQueue", "cron", "query", "raw", "method", "port", "queue", "promptForSchemaInput", "schema", "defaults", "ast", "isTypeLiteral", "properties", "length", "requiredProperties", "optionalProperties", "prop", "isOptional", "push", "propertyInfo", "name", "isRequired", "selectedKeys", "Set", "info", "add", "requiredNames", "p", "find", "i", "log", "join", "optionalInfo", "filter", "choices", "hasDefault", "undefined", "defaultText", "JSON", "stringify", "value", "description", "selected", "multiSelect", "message", "String", "size", "inputObj", "has", "propType", "schemaDefault", "getOrUndefined", "getDefaultAnnotation", "defaultValue", "isBooleanKeyword", "initialValue", "confirm", "initial", "isNumberKeyword", "currentValue", "valueStr", "text", "run", "parseFloat", "isStringKeyword", "isRefType", "isDefaultTemplate", "startsWith", "endsWith", "useTemplate", "templateStr", "annotation", "ReferenceAnnotation", "getFromAst", "getOrThrow", "objects", "runQuery", "typename", "select", "obj", "getLabel", "getDescription", "selectFunction", "functions", "PersistentOperation", "fail", "Error", "selectTrigger", "triggers", "debugLabel", "filteredTriggers", "all", "gen", "functionName", "instanceOf", "selectQueue", "schemas", "runSchemaQuery", "location", "feedSchemas", "get", "isSome", "queueChoices", "getTypename", "feedRef", "feed", "feedObj", "promise", "tryLoad", "queueDxn", "getQueueDxn", "label", "catchAll", "void", "printTriggerRemoved", "queue", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "Queue", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "queueDxn", "selectQueue", "dxn", "toString", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "value", "Object", "fromEntries", "toEntries", "confirm", "message", "initial", "run", "trigger", "Trigger", "function", "Ref", "spec", "specQueue", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "Database", "Filter", "JsonSchema", "Query", "Ref", "subscription", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "typename", "Typename", "deep", "Deep", "delay", "Delay", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "text", "message", "run", "value", "subscriptionQuery", "Query", "select", "deepOption", "confirm", "initial", "map", "some", "none", "delayOption", "delayStr", "parseInt", "subscriptionOptions", "isSome", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "Object", "fromEntries", "toEntries", "trigger", "Trigger", "function", "Ref", "spec", "specSubscription", "keys", "length", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "Database", "Filter", "JsonSchema", "Ref", "timer", "make", "spaceId", "Common", "pipe", "optional", "enabled", "Enabled", "functionId", "cron", "Cron", "input", "Input", "options", "gen", "json", "CommandConfig", "match", "onNone", "selectFunction", "onSome", "id", "succeed", "functions", "Database", "runQuery", "Filter", "type", "Operation", "PersistentOperation", "fn", "find", "fail", "Error", "text", "message", "run", "value", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "Object", "fromEntries", "toEntries", "confirm", "initial", "trigger", "Trigger", "function", "Ref", "spec", "specTimer", "add", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "create", "make", "pipe", "withDescription", "withSubcommands", "subscription", "timer", "queue", "Command", "Options", "Console", "Effect", "CommandConfig", "Common", "printList", "spaceIdWithDefault", "spaceLayer", "ClientService", "Trigger", "Context", "Database", "Filter", "Query", "list", "Effect", "spaceId", "spaceIdOption", "json", "CommandConfig", "triggers", "Database", "remoteCronIds", "Query", "Filter", "Trigger", "spaceIdWithDefault", "result", "cronIds", "getTriggerRemoteStatus", "trigger", "remoteStatus", "triggersWithStatus", "Command", "Options", "Console", "Effect", "Option", "CommandConfig", "Common", "print", "spaceLayer", "withTypes", "Trigger", "DXN", "Database", "remove", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "log", "JSON", "stringify", "removed", "print", "printTriggerRemoved", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Command", "Command", "Options", "Prompt", "Console", "Effect", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "queue", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "Queue", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateQueue", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "type", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "queueOption", "currentQueue", "currentQueueStr", "String", "shouldChangeQueue", "queueDxn", "selectQueue", "toString", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "value", "idOption", "enabledValue", "Command", "Options", "Prompt", "Console", "Effect", "Match", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Query", "Ref", "subscription", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "typename", "Typename", "deep", "Deep", "delay", "Delay", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateSpec", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "extractCurrentTypename", "query", "ast", "none", "value", "withReturnType", "when", "type", "q", "filter", "f", "fromNullable", "flatMap", "tryParse", "asTypeDXN", "orElse", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "typenameOption", "deepOption", "delayOption", "currentSpec", "currentTypename", "currentTypenameStr", "getOrUndefined", "currentDeep", "currentDelay", "specParts", "push", "currentSpecStr", "length", "join", "hasSpecOption", "isSome", "shouldChangeSpec", "text", "queryAst", "Query", "select", "deepOptionValue", "map", "some", "delayOptionValue", "delayStr", "parseInt", "subscriptionOptions", "Object", "keys", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "idOption", "enabledValue", "Command", "Options", "Prompt", "Console", "Effect", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Operation", "Trigger", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "timer", "make", "spaceId", "Common", "pipe", "optional", "id", "TriggerId", "enabled", "Enabled", "functionId", "cron", "Cron", "input", "Input", "options", "gen", "json", "CommandConfig", "triggerId", "match", "onNone", "selectTrigger", "onSome", "succeed", "dxn", "DXN", "fromLocalObjectId", "trigger", "Database", "resolve", "Trigger", "spec", "kind", "fail", "Error", "currentFn", "updateFunction", "updateCron", "updateInput", "updateEnabled", "log", "JSON", "stringify", "print", "printTrigger", "flushAndSync", "indexes", "withDescription", "provide", "spaceLayer", "provideEffectDiscard", "withTypes", "Operation", "PersistentOperation", "fn", "functionIdOption", "function", "load", "undefined", "Obj", "instanceOf", "currentFunctionName", "name", "shouldChangeFunction", "confirm", "message", "initial", "run", "selectFunction", "functions", "runQuery", "Filter", "type", "foundFn", "find", "update", "Ref", "asEchoDXN", "echoId", "cronOption", "currentCron", "shouldChangeCron", "text", "value", "inputOption", "currentInput", "currentInputStr", "shouldChangeInput", "inputObj", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "idOption", "enabledValue", "update", "make", "pipe", "withDescription", "withSubcommands", "subscription", "timer", "queue", "trigger", "make", "pipe", "withDescription", "withSubcommands", "create", "list", "remove", "update", "AutomationPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addCommandModule", "commands", "trigger", "addOperationHandlerModule", "OperationHandler", "addSchemaModule", "schema", "Operation", "PersistentOperation", "Trigger", "Trace", "Message", "addModule", "activatesOn", "ClientEvents", "ClientReady", "firesAfterActivation", "AutomationEvents", "ComputeRuntimeReady", "ComputeRuntime", "make"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ AutomationPanel
3
+ } from "./chunk-FKFFU54G.mjs";
4
+ import {
5
+ TriggersSettings
6
+ } from "./chunk-2JP77CMN.mjs";
7
+ import "./chunk-N735CP33.mjs";
8
+ import "./chunk-J5LGTIGS.mjs";
9
+
10
+ // src/containers/AutomationSettings/AutomationSettings.tsx
11
+ import React from "react";
12
+ import { useTranslation } from "@dxos/react-ui";
13
+ import { Settings } from "@dxos/react-ui-form";
14
+ import { meta } from "#meta";
15
+ var AutomationSettings = (props) => {
16
+ const { t } = useTranslation(meta.id);
17
+ return /* @__PURE__ */ React.createElement(Settings.Viewport, null, /* @__PURE__ */ React.createElement(Settings.Section, {
18
+ title: t("automation-verbose.label", {
19
+ ns: meta.id
20
+ }),
21
+ description: t("automation.description", {
22
+ ns: meta.id
23
+ })
24
+ }, /* @__PURE__ */ React.createElement(AutomationPanel, props), /* @__PURE__ */ React.createElement(TriggersSettings, {
25
+ space: props.space
26
+ })));
27
+ };
28
+ export {
29
+ AutomationSettings as default
30
+ };
31
+ //# sourceMappingURL=AutomationSettings-NNL2AVNT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/AutomationSettings/AutomationSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\n\nimport { AutomationPanel, type AutomationPanelProps } from '../../components/AutomationPanel';\nimport { TriggersSettings } from '../TriggerSettings';\n\nexport type AutomationSettingsProps = AppSurface.SpaceArticleProps<Omit<AutomationPanelProps, 'space'>>;\n\nexport const AutomationSettings = (props: AutomationSettingsProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <Settings.Viewport>\n <Settings.Section\n title={t('automation-verbose.label', { ns: meta.id })}\n description={t('automation.description', { ns: meta.id })}\n >\n <AutomationPanel {...props} />\n <TriggersSettings space={props.space} />\n </Settings.Section>\n </Settings.Viewport>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAOd,IAAMC,qBAAqB,CAACC,UAAAA;AACjC,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,SACE,sBAAA,cAACC,SAASC,UAAQ,MAChB,sBAAA,cAACD,SAASE,SAAO;IACfC,OAAOP,EAAE,4BAA4B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IACnDM,aAAaT,EAAE,0BAA0B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAEvD,sBAAA,cAACO,iBAAoBX,KAAAA,GACrB,sBAAA,cAACY,kBAAAA;IAAiBC,OAAOb,MAAMa;;AAIvC;",
6
+ "names": ["React", "useTranslation", "Settings", "meta", "AutomationSettings", "props", "t", "useTranslation", "meta", "id", "Settings", "Viewport", "Section", "title", "ns", "description", "AutomationPanel", "TriggersSettings", "space"]
7
+ }
@@ -0,0 +1,38 @@
1
+ import {
2
+ FunctionsPanel,
3
+ FunctionsRegistry
4
+ } from "./chunk-IGGNE2XI.mjs";
5
+ import "./chunk-N735CP33.mjs";
6
+ import "./chunk-J5LGTIGS.mjs";
7
+
8
+ // src/containers/FunctionsContainer/FunctionsContainer.tsx
9
+ import React from "react";
10
+ import { useTranslation } from "@dxos/react-ui";
11
+ import { Settings } from "@dxos/react-ui-form";
12
+ import { meta } from "#meta";
13
+ var FunctionsContainer = ({ space }) => {
14
+ const { t } = useTranslation(meta.id);
15
+ return /* @__PURE__ */ React.createElement(Settings.Viewport, null, /* @__PURE__ */ React.createElement(Settings.Section, {
16
+ title: t("functions-verbose.label", {
17
+ ns: meta.id
18
+ }),
19
+ description: t("functions.description", {
20
+ ns: meta.id
21
+ })
22
+ }, /* @__PURE__ */ React.createElement(FunctionsPanel, {
23
+ space
24
+ })), /* @__PURE__ */ React.createElement(Settings.Section, {
25
+ title: t("functions-registry-verbose.label", {
26
+ ns: meta.id
27
+ }),
28
+ description: t("functions-registry.description", {
29
+ ns: meta.id
30
+ })
31
+ }, /* @__PURE__ */ React.createElement(FunctionsRegistry, {
32
+ space
33
+ })));
34
+ };
35
+ export {
36
+ FunctionsContainer as default
37
+ };
38
+ //# sourceMappingURL=FunctionsContainer-CU2FVKZF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/FunctionsContainer/FunctionsContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\n\nimport { FunctionsPanel, FunctionsRegistry } from '../../components';\n\nexport const FunctionsContainer = ({ space }: AppSurface.SpaceArticleProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <Settings.Viewport>\n <Settings.Section\n title={t('functions-verbose.label', { ns: meta.id })}\n description={t('functions.description', { ns: meta.id })}\n >\n <FunctionsPanel space={space} />\n </Settings.Section>\n <Settings.Section\n title={t('functions-registry-verbose.label', { ns: meta.id })}\n description={t('functions-registry.description', { ns: meta.id })}\n >\n <FunctionsRegistry space={space} />\n </Settings.Section>\n </Settings.Viewport>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAId,IAAMC,qBAAqB,CAAC,EAAEC,MAAK,MAAgC;AACxE,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,SACE,sBAAA,cAACC,SAASC,UAAQ,MAChB,sBAAA,cAACD,SAASE,SAAO;IACfC,OAAOP,EAAE,2BAA2B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IAClDM,aAAaT,EAAE,yBAAyB;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAEtD,sBAAA,cAACO,gBAAAA;IAAeX;OAElB,sBAAA,cAACK,SAASE,SAAO;IACfC,OAAOP,EAAE,oCAAoC;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IAC3DM,aAAaT,EAAE,kCAAkC;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAE/D,sBAAA,cAACQ,mBAAAA;IAAkBZ;;AAI3B;",
6
+ "names": ["React", "useTranslation", "Settings", "meta", "FunctionsContainer", "space", "t", "useTranslation", "meta", "id", "Settings", "Viewport", "Section", "title", "ns", "description", "FunctionsPanel", "FunctionsRegistry"]
7
+ }
@@ -1,22 +1,21 @@
1
- import {
2
- meta
3
- } from "./chunk-EL64ZPPN.mjs";
1
+ import "./chunk-J5LGTIGS.mjs";
4
2
 
5
3
  // src/components/FunctionsPanel/FunctionsPanel.tsx
6
4
  import * as Schema from "effect/Schema";
7
5
  import React, { useCallback, useMemo } from "react";
8
6
  import { useOperationInvoker } from "@dxos/app-framework/ui";
9
7
  import { LayoutOperation, getObjectPathFromObject } from "@dxos/app-toolkit";
10
- import { Function, Script } from "@dxos/functions";
11
- import { SpaceOperation } from "@dxos/plugin-space/types";
8
+ import { Operation, Script } from "@dxos/compute";
9
+ import { SpaceOperation } from "@dxos/plugin-space";
12
10
  import { Filter, useQuery } from "@dxos/react-client/echo";
13
- import { Button, IconButton, useTranslation } from "@dxos/react-ui";
11
+ import { IconButton, useTranslation } from "@dxos/react-ui";
14
12
  import { Settings } from "@dxos/react-ui-form";
15
13
  import { List } from "@dxos/react-ui-list";
16
14
  import { ghostHover, mx } from "@dxos/ui-theme";
15
+ import { meta } from "#meta";
17
16
  var FunctionsPanel = ({ space }) => {
18
17
  const { t } = useTranslation(meta.id);
19
- const functions = useQuery(space.db, Filter.type(Function.Function));
18
+ const functions = useQuery(space.db, Filter.type(Operation.PersistentOperation));
20
19
  const scripts = useQuery(space.db, Filter.type(Script.Script));
21
20
  const { invokePromise } = useOperationInvoker();
22
21
  const functionToScriptMap = useMemo(() => functions.reduce((map, func) => {
@@ -58,9 +57,9 @@ var FunctionsPanel = ({ space }) => {
58
57
  }), [
59
58
  invokePromise
60
59
  ]);
61
- return /* @__PURE__ */ React.createElement(Settings.Container, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
60
+ return /* @__PURE__ */ React.createElement(Settings.Panel, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
62
61
  items: functions,
63
- isItem: Schema.is(Function.Function),
62
+ isItem: Schema.is(Operation.PersistentOperation),
64
63
  getId: (func) => func.id
65
64
  }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
66
65
  role: "list",
@@ -68,30 +67,30 @@ var FunctionsPanel = ({ space }) => {
68
67
  }, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
69
68
  key: func.id,
70
69
  item: func,
71
- classNames: mx("grid grid-cols-[1fr_auto] min-h-[2.5rem] min-h-[3rem] px-2 items-center", ghostHover)
70
+ classNames: mx("grid grid-cols-[1fr_min-content_auto] min-h-[2.5rem] min-h-[3rem] px-2 items-center", ghostHover)
72
71
  }, /* @__PURE__ */ React.createElement("div", {
73
72
  className: "flex flex-col truncate"
74
73
  }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
75
74
  classNames: "truncate"
76
- }, func.name), getScriptName(func) && /* @__PURE__ */ React.createElement("div", {
75
+ }, func.name), getScriptName(func) && /* @__PURE__ */ React.createElement("p", {
77
76
  className: "text-xs text-description truncate"
78
- }, getScriptName(func))), functionToScriptMap[func.id] && /* @__PURE__ */ React.createElement(Button, {
79
- onClick: () => handleGoToScript(func)
80
- }, t("go to function source button label")), /* @__PURE__ */ React.createElement(IconButton, {
77
+ }, getScriptName(func))), functionToScriptMap[func.id] && /* @__PURE__ */ React.createElement(IconButton, {
78
+ icon: "ph--arrow-square-out--regular",
81
79
  iconOnly: true,
80
+ label: t("show-source-button.label"),
81
+ onClick: () => handleGoToScript(func)
82
+ }) || /* @__PURE__ */ React.createElement("div", null), /* @__PURE__ */ React.createElement(IconButton, {
82
83
  icon: "ph--trash--regular",
83
- label: t("delete function button label"),
84
+ iconOnly: true,
85
+ label: t("delete-function-button.label"),
84
86
  onClick: () => handleDelete(func)
85
- }))))), functions.length === 0 && /* @__PURE__ */ React.createElement("div", {
86
- className: "text-center py-4 text-description"
87
- }, t("no functions found")));
87
+ }))))));
88
88
  };
89
89
 
90
90
  // src/components/FunctionsPanel/index.ts
91
91
  var FunctionsPanel_default = FunctionsPanel;
92
-
93
92
  export {
94
93
  FunctionsPanel,
95
- FunctionsPanel_default
94
+ FunctionsPanel_default as default
96
95
  };
97
- //# sourceMappingURL=chunk-75XLBFAG.mjs.map
96
+ //# sourceMappingURL=FunctionsPanel-GLCUBEDT.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsPanel/FunctionsPanel.tsx", "../../../src/components/FunctionsPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { LayoutOperation, getObjectPathFromObject } from '@dxos/app-toolkit';\nimport { Operation, Script } from '@dxos/compute';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nexport type FunctionsPanelProps = {\n space: Space;\n};\n\nexport const FunctionsPanel = ({ space }: FunctionsPanelProps) => {\n const { t } = useTranslation(meta.id);\n const functions = useQuery(space.db, Filter.type(Operation.PersistentOperation));\n const scripts = useQuery(space.db, Filter.type(Script.Script));\n const { invokePromise } = useOperationInvoker();\n\n const functionToScriptMap = useMemo(\n () =>\n functions.reduce(\n (map, func) => {\n const scriptId = func.source?.target?.id;\n if (scriptId) {\n const script = scripts.find((s) => s.id === scriptId);\n if (script) {\n map[func.id] = script;\n }\n }\n return map;\n },\n {} as Record<string, Script.Script>,\n ),\n [functions, scripts],\n );\n\n const getScriptName = useCallback(\n (func: Operation.PersistentOperation) => {\n const script = functionToScriptMap[func.id];\n return script?.name;\n },\n [functionToScriptMap],\n );\n\n const handleGoToScript = useCallback(\n (func: Operation.PersistentOperation) => {\n const script = functionToScriptMap[func.id];\n if (script) {\n void invokePromise(LayoutOperation.Open, { subject: [getObjectPathFromObject(script)] });\n }\n },\n [functionToScriptMap, invokePromise],\n );\n\n const handleDelete = useCallback(\n (func: Operation.PersistentOperation) => invokePromise(SpaceOperation.RemoveObjects, { objects: [func] }),\n [invokePromise],\n );\n\n return (\n <Settings.Panel>\n {functions.length > 0 && (\n <List.Root<Operation.PersistentOperation>\n items={functions}\n isItem={Schema.is(Operation.PersistentOperation)}\n getId={(func) => func.id}\n >\n {({ items }) => (\n <div role='list' className='flex flex-col w-full'>\n {items?.map((func) => (\n <List.Item<Operation.PersistentOperation>\n key={func.id}\n item={func}\n classNames={mx(\n 'grid grid-cols-[1fr_min-content_auto] min-h-[2.5rem] min-h-[3rem] px-2 items-center',\n ghostHover,\n )}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n {getScriptName(func) && <p className='text-xs text-description truncate'>{getScriptName(func)}</p>}\n </div>\n {(functionToScriptMap[func.id] && (\n <IconButton\n icon='ph--arrow-square-out--regular'\n iconOnly\n label={t('show-source-button.label')}\n onClick={() => handleGoToScript(func)}\n />\n )) || <div />}\n <IconButton\n icon='ph--trash--regular'\n iconOnly\n label={t('delete-function-button.label')}\n onClick={() => handleDelete(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n </Settings.Panel>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsPanel } from './FunctionsPanel';\n\nexport * from './FunctionsPanel';\nexport default FunctionsPanel;\n"],
5
+ "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAASC,2BAA2B;AACpC,SAASC,iBAAiBC,+BAA+B;AACzD,SAASC,WAAWC,cAAc;AAClC,SAASC,sBAAsB;AAC/B,SAASC,QAAoBC,gBAAgB;AAC7C,SAASC,YAAYC,sBAAsB;AAC3C,SAASC,gBAAgB;AACzB,SAASC,YAAY;AACrB,SAASC,YAAYC,UAAU;AAE/B,SAASC,YAAY;AAMd,IAAMC,iBAAiB,CAAC,EAAEC,MAAK,MAAuB;AAC3D,QAAM,EAAEC,EAAC,IAAKR,eAAeK,KAAKI,EAAE;AACpC,QAAMC,YAAYZ,SAASS,MAAMI,IAAId,OAAOe,KAAKlB,UAAUmB,mBAAmB,CAAA;AAC9E,QAAMC,UAAUhB,SAASS,MAAMI,IAAId,OAAOe,KAAKjB,OAAOA,MAAM,CAAA;AAC5D,QAAM,EAAEoB,cAAa,IAAKxB,oBAAAA;AAE1B,QAAMyB,sBAAsB1B,QAC1B,MACEoB,UAAUO,OACR,CAACC,KAAKC,SAAAA;AACJ,UAAMC,WAAWD,KAAKE,QAAQC,QAAQb;AACtC,QAAIW,UAAU;AACZ,YAAMG,SAAST,QAAQU,KAAK,CAACC,MAAMA,EAAEhB,OAAOW,QAAAA;AAC5C,UAAIG,QAAQ;AACVL,YAAIC,KAAKV,EAAE,IAAIc;MACjB;IACF;AACA,WAAOL;EACT,GACA,CAAC,CAAA,GAEL;IAACR;IAAWI;GAAQ;AAGtB,QAAMY,gBAAgBrC,YACpB,CAAC8B,SAAAA;AACC,UAAMI,SAASP,oBAAoBG,KAAKV,EAAE;AAC1C,WAAOc,QAAQI;EACjB,GACA;IAACX;GAAoB;AAGvB,QAAMY,mBAAmBvC,YACvB,CAAC8B,SAAAA;AACC,UAAMI,SAASP,oBAAoBG,KAAKV,EAAE;AAC1C,QAAIc,QAAQ;AACV,WAAKR,cAAcvB,gBAAgBqC,MAAM;QAAEC,SAAS;UAACrC,wBAAwB8B,MAAAA;;MAAS,CAAA;IACxF;EACF,GACA;IAACP;IAAqBD;GAAc;AAGtC,QAAMgB,eAAe1C,YACnB,CAAC8B,SAAwCJ,cAAcnB,eAAeoC,eAAe;IAAEC,SAAS;MAACd;;EAAM,CAAA,GACvG;IAACJ;GAAc;AAGjB,SACE,sBAAA,cAACd,SAASiC,OAAK,MACZxB,UAAUyB,SAAS,KAClB,sBAAA,cAACjC,KAAKkC,MAAI;IACRC,OAAO3B;IACP4B,QAAeC,UAAG7C,UAAUmB,mBAAmB;IAC/C2B,OAAO,CAACrB,SAASA,KAAKV;KAErB,CAAC,EAAE4B,MAAK,MACP,sBAAA,cAACI,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACxBN,OAAOnB,IAAI,CAACC,SACX,sBAAA,cAACjB,KAAK0C,MAAI;IACRC,KAAK1B,KAAKV;IACVqC,MAAM3B;IACN4B,YAAY3C,GACV,uFACAD,UAAAA;KAGF,sBAAA,cAACsC,OAAAA;IAAIE,WAAU;KACb,sBAAA,cAACzC,KAAK8C,WAAS;IAACD,YAAW;KAAY5B,KAAKQ,IAAI,GAC/CD,cAAcP,IAAAA,KAAS,sBAAA,cAAC8B,KAAAA;IAAEN,WAAU;KAAqCjB,cAAcP,IAAAA,CAAAA,CAAAA,GAExFH,oBAAoBG,KAAKV,EAAE,KAC3B,sBAAA,cAACV,YAAAA;IACCmD,MAAK;IACLC,UAAAA;IACAC,OAAO5C,EAAE,0BAAA;IACT6C,SAAS,MAAMzB,iBAAiBT,IAAAA;QAE9B,sBAAA,cAACsB,OAAAA,IAAAA,GACP,sBAAA,cAAC1C,YAAAA;IACCmD,MAAK;IACLC,UAAAA;IACAC,OAAO5C,EAAE,8BAAA;IACT6C,SAAS,MAAMtB,aAAaZ,IAAAA;;AAUhD;;;AC5GA,IAAA,yBAAemC;",
6
+ "names": ["Schema", "React", "useCallback", "useMemo", "useOperationInvoker", "LayoutOperation", "getObjectPathFromObject", "Operation", "Script", "SpaceOperation", "Filter", "useQuery", "IconButton", "useTranslation", "Settings", "List", "ghostHover", "mx", "meta", "FunctionsPanel", "space", "t", "id", "functions", "db", "type", "PersistentOperation", "scripts", "invokePromise", "functionToScriptMap", "reduce", "map", "func", "scriptId", "source", "target", "script", "find", "s", "getScriptName", "name", "handleGoToScript", "Open", "subject", "handleDelete", "RemoveObjects", "objects", "Panel", "length", "Root", "items", "isItem", "is", "getId", "div", "role", "className", "Item", "key", "item", "classNames", "ItemTitle", "p", "icon", "iconOnly", "label", "onClick", "FunctionsPanel"]
7
+ }
@@ -1,13 +1,11 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- meta
4
- } from "./chunk-WC5AT7B3.mjs";
1
+ import "./chunk-J5LGTIGS.mjs";
5
2
 
6
3
  // src/components/FunctionsRegistry/FunctionsRegistry.tsx
7
4
  import * as Schema from "effect/Schema";
8
5
  import { useState } from "react";
9
6
  import React, { useCallback } from "react";
10
- import { Function } from "@dxos/functions";
7
+ import * as OperationModule from "@dxos/compute";
8
+ import { Context } from "@dxos/context";
11
9
  import { getDeployedFunctions } from "@dxos/functions-runtime/edge";
12
10
  import { useClient } from "@dxos/react-client";
13
11
  import { Filter, Query, useQuery } from "@dxos/react-client/echo";
@@ -15,13 +13,15 @@ import { IconButton, useAsyncEffect, useTranslation } from "@dxos/react-ui";
15
13
  import { Settings } from "@dxos/react-ui-form";
16
14
  import { List } from "@dxos/react-ui-list";
17
15
  import { ghostHover, mx } from "@dxos/ui-theme";
16
+ import { meta } from "#meta";
17
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/components/FunctionsRegistry/FunctionsRegistry.tsx";
18
18
  var grid = "grid grid-cols-[1fr_1fr_auto] min-h-[2.5rem]";
19
19
  var FunctionsRegistry = ({ space }) => {
20
20
  const client = useClient();
21
21
  const [loading, setLoading] = useState(true);
22
22
  const [functions, setFunctions] = useState([]);
23
23
  const { t } = useTranslation(meta.id);
24
- const dbFunctions = useQuery(space.db, Filter.type(Function.Function));
24
+ const dbFunctions = useQuery(space.db, Filter.type(OperationModule.Operation.PersistentOperation));
25
25
  const state = (func) => {
26
26
  const dbFunction = dbFunctions.find((f) => f.key === func.key);
27
27
  if (!dbFunction) {
@@ -34,12 +34,12 @@ var FunctionsRegistry = ({ space }) => {
34
34
  };
35
35
  useAsyncEffect(async () => {
36
36
  setLoading(true);
37
- const functions2 = await getDeployedFunctions(client, true);
37
+ const functions2 = await getDeployedFunctions(Context.default(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 36 }), client, true);
38
38
  setFunctions(functions2);
39
39
  setLoading(false);
40
40
  }, []);
41
41
  const hanleImportOrUpdate = useCallback(async (func) => {
42
- const functions2 = await space.db.query(Query.type(Function.Function, {
42
+ const functions2 = await space.db.query(Query.type(OperationModule.Operation.PersistentOperation, {
43
43
  key: func.key
44
44
  })).run();
45
45
  const [existingFunc] = functions2;
@@ -47,13 +47,13 @@ var FunctionsRegistry = ({ space }) => {
47
47
  space.db.add(func);
48
48
  return;
49
49
  }
50
- Function.setFrom(existingFunc, func);
50
+ OperationModule.Operation.setFrom(existingFunc, func);
51
51
  }, [
52
52
  space
53
53
  ]);
54
- return /* @__PURE__ */ React.createElement(Settings.Container, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
54
+ return /* @__PURE__ */ React.createElement(Settings.Panel, null, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
55
55
  items: functions,
56
- isItem: Schema.is(Function.Function),
56
+ isItem: Schema.is(OperationModule.Operation.PersistentOperation),
57
57
  getId: (func) => func.id
58
58
  }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
59
59
  role: "list",
@@ -77,21 +77,18 @@ var FunctionsRegistry = ({ space }) => {
77
77
  }, func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : "")), /* @__PURE__ */ React.createElement(IconButton, {
78
78
  iconOnly: true,
79
79
  icon: state(func) === "update" ? "ph--arrows-clockwise--regular" : "ph--download--regular",
80
- label: state(func) === "update" ? t("update function button label") : t("import function button label"),
80
+ label: state(func) === "update" ? t("update-function-button.label") : t("import-function-button.label"),
81
81
  disabled: state(func) === "none",
82
82
  onClick: () => hanleImportOrUpdate(func)
83
- }))))), functions.length === 0 && !loading && /* @__PURE__ */ React.createElement("div", {
83
+ }))))), loading && /* @__PURE__ */ React.createElement("div", {
84
84
  className: "text-center py-4 text-gray-500"
85
- }, t("no functions found")), loading && /* @__PURE__ */ React.createElement("div", {
86
- className: "text-center py-4 text-gray-500"
87
- }, t("loading functions")));
85
+ }, t("loading-functions.message")));
88
86
  };
89
87
 
90
88
  // src/components/FunctionsRegistry/index.ts
91
89
  var FunctionsRegistry_default = FunctionsRegistry;
92
-
93
90
  export {
94
91
  FunctionsRegistry,
95
- FunctionsRegistry_default
92
+ FunctionsRegistry_default as default
96
93
  };
97
- //# sourceMappingURL=chunk-6JVB3IHW.mjs.map
94
+ //# sourceMappingURL=FunctionsRegistry-VRU4FBVH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx", "../../../src/components/FunctionsRegistry/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport { useState } from 'react';\nimport React, { useCallback } from 'react';\n\nimport * as OperationModule from '@dxos/compute';\nimport { Context } from '@dxos/context';\nimport { getDeployedFunctions } from '@dxos/functions-runtime/edge';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-h-[2.5rem]';\n\ntype FunctionsRegistryProps = {\n space: Space;\n};\n\nexport const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {\n const client = useClient();\n const [loading, setLoading] = useState(true);\n const [functions, setFunctions] = useState<OperationModule.Operation.PersistentOperation[]>([]);\n const { t } = useTranslation(meta.id);\n\n const dbFunctions = useQuery(space.db, Filter.type(OperationModule.Operation.PersistentOperation));\n\n const state = (func: OperationModule.Operation.PersistentOperation) => {\n const dbFunction = dbFunctions.find((f) => f.key === func.key);\n if (!dbFunction) {\n return 'import';\n }\n if (dbFunction.version === func.version && dbFunction.updated === func.updated) {\n return 'none';\n }\n return 'update';\n };\n\n useAsyncEffect(async () => {\n setLoading(true);\n const functions = await getDeployedFunctions(Context.default(), client, true);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const hanleImportOrUpdate = useCallback(\n async (func: OperationModule.Operation.PersistentOperation) => {\n const functions = await space.db\n .query(Query.type(OperationModule.Operation.PersistentOperation, { key: func.key }))\n .run();\n const [existingFunc] = functions;\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n OperationModule.Operation.setFrom(existingFunc, func);\n },\n [space],\n );\n\n return (\n <Settings.Panel>\n {functions.length > 0 && (\n <List.Root<OperationModule.Operation.PersistentOperation>\n items={functions}\n isItem={Schema.is(OperationModule.Operation.PersistentOperation)}\n getId={(func) => func.id}\n >\n {({ items }) => (\n <div role='list' className='flex flex-col w-full'>\n {items?.map((func) => (\n <List.Item<OperationModule.Operation.PersistentOperation>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2', 'min-h-[3rem]')}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n <div className='text-xs text-description truncate'>{func.key}</div>\n </div>\n <div className='flex flex-col truncate'>\n <div className='text-xs text-description truncate'>{func.version}</div>\n <div className='text-xs text-description truncate'>\n {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}\n </div>\n </div>\n\n <IconButton\n iconOnly\n icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}\n label={\n state(func) === 'update' ? t('update-function-button.label') : t('import-function-button.label')\n }\n disabled={state(func) === 'none'}\n onClick={() => hanleImportOrUpdate(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {loading && <div className='text-center py-4 text-gray-500'>{t('loading-functions.message')}</div>}\n </Settings.Panel>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport { FunctionsRegistry };\nexport default FunctionsRegistry;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "useState", "React", "useCallback", "OperationModule", "Context", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "IconButton", "useAsyncEffect", "useTranslation", "Settings", "List", "ghostHover", "mx", "meta", "client", "loading", "functions", "setFunctions", "dbFunctions", "space", "state", "func", "dbFunction", "find", "f", "setLoading", "hanleImportOrUpdate", "run", "existingFunc", "Operation", "PersistentOperation", "getId", "div", "role", "className", "items", "map", "item", "classNames", "ItemTitle", "key", "updated", "Date", "toLocaleString", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsRegistry"]
7
+ }