@dxos/plugin-automation 0.8.4-main.72ec0f3 → 0.8.4-main.7996785055

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 (348) hide show
  1. package/dist/lib/browser/AutomationPanel-UPV6GR5B.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-OJ4VECH7.mjs +37 -0
  3. package/dist/lib/browser/AutomationSettings-OJ4VECH7.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-DJB2M6DI.mjs +43 -0
  5. package/dist/lib/browser/FunctionsContainer-DJB2M6DI.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-CRW6SJUN.mjs → FunctionsPanel-FFGPFXSF.mjs} +3 -3
  7. package/dist/lib/browser/FunctionsRegistry-7FVC2YMN.mjs +10 -0
  8. package/dist/lib/browser/TriggerSettings-3UW3UTJE.mjs +11 -0
  9. package/dist/lib/browser/app-graph-builder-FHMSJUKB.mjs +82 -0
  10. package/dist/lib/browser/app-graph-builder-FHMSJUKB.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-3KUXM6DD.mjs +31 -0
  12. package/dist/lib/browser/chunk-3KUXM6DD.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-4HKBI6EW.mjs +295 -0
  14. package/dist/lib/browser/chunk-4HKBI6EW.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-7SRDQVB2.mjs +275 -0
  16. package/dist/lib/browser/chunk-7SRDQVB2.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-NAPXRXTY.mjs → chunk-FNYP7F2T.mjs} +29 -36
  18. package/dist/lib/browser/chunk-FNYP7F2T.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-LZQFZO3B.mjs → chunk-H4ZAXPLY.mjs} +9 -2
  20. package/dist/lib/browser/chunk-H4ZAXPLY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-YBPJCY3F.mjs → chunk-HAGI3PXT.mjs} +22 -5
  22. package/dist/lib/browser/chunk-HAGI3PXT.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-UI4Q7M5V.mjs +8 -0
  24. package/dist/lib/browser/chunk-UI4Q7M5V.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-UJZVGZBO.mjs +98 -0
  26. package/dist/lib/browser/chunk-UJZVGZBO.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-VMFDCTFG.mjs +44 -0
  28. package/dist/lib/browser/chunk-VMFDCTFG.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-YPUJSTT3.mjs +8 -0
  30. package/dist/lib/browser/chunk-YPUJSTT3.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-ZDSWGE3W.mjs +101 -0
  32. package/dist/lib/browser/chunk-ZDSWGE3W.mjs.map +7 -0
  33. package/dist/lib/browser/cli/index.mjs +1127 -0
  34. package/dist/lib/browser/cli/index.mjs.map +7 -0
  35. package/dist/lib/browser/compute-runtime-Y3GEKNFP.mjs +128 -0
  36. package/dist/lib/browser/compute-runtime-Y3GEKNFP.mjs.map +7 -0
  37. package/dist/lib/browser/create-trigger-from-template-GVYDOR56.mjs +78 -0
  38. package/dist/lib/browser/create-trigger-from-template-GVYDOR56.mjs.map +7 -0
  39. package/dist/lib/browser/hooks/index.mjs +3 -3
  40. package/dist/lib/browser/index.mjs +57 -63
  41. package/dist/lib/browser/index.mjs.map +4 -4
  42. package/dist/lib/browser/meta.json +1 -1
  43. package/dist/lib/browser/operation-handler-OBMV73N3.mjs +17 -0
  44. package/dist/lib/browser/operation-handler-OBMV73N3.mjs.map +7 -0
  45. package/dist/lib/browser/operations/index.mjs +13 -0
  46. package/dist/lib/browser/operations/index.mjs.map +7 -0
  47. package/dist/lib/browser/react-surface-YRA4ZGCL.mjs +65 -0
  48. package/dist/lib/browser/react-surface-YRA4ZGCL.mjs.map +7 -0
  49. package/dist/lib/browser/types/index.mjs +10 -4
  50. package/dist/lib/node-esm/{AutomationPanel-HCVFNHGQ.mjs → AutomationPanel-TLKFNGI7.mjs} +4 -4
  51. package/dist/lib/node-esm/AutomationPanel-TLKFNGI7.mjs.map +7 -0
  52. package/dist/lib/node-esm/AutomationSettings-QAMDNV4N.mjs +38 -0
  53. package/dist/lib/node-esm/AutomationSettings-QAMDNV4N.mjs.map +7 -0
  54. package/dist/lib/node-esm/FunctionsContainer-2QRAWQGX.mjs +44 -0
  55. package/dist/lib/node-esm/FunctionsContainer-2QRAWQGX.mjs.map +7 -0
  56. package/dist/lib/node-esm/{FunctionsPanel-RVVCS6VH.mjs → FunctionsPanel-G3UFETZW.mjs} +3 -3
  57. package/dist/lib/node-esm/FunctionsPanel-G3UFETZW.mjs.map +7 -0
  58. package/dist/lib/node-esm/FunctionsRegistry-KB7NMKET.mjs +11 -0
  59. package/dist/lib/node-esm/FunctionsRegistry-KB7NMKET.mjs.map +7 -0
  60. package/dist/lib/node-esm/TriggerSettings-KL75WR7U.mjs +12 -0
  61. package/dist/lib/node-esm/TriggerSettings-KL75WR7U.mjs.map +7 -0
  62. package/dist/lib/node-esm/app-graph-builder-OVST2O6U.mjs +83 -0
  63. package/dist/lib/node-esm/app-graph-builder-OVST2O6U.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-CEVIVRTY.mjs → chunk-ANHRRBQW.mjs} +8 -2
  65. package/dist/lib/node-esm/chunk-ANHRRBQW.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-ECJKIUBO.mjs → chunk-DXL5YA73.mjs} +22 -5
  67. package/dist/lib/node-esm/chunk-DXL5YA73.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-GVKXGLAF.mjs +296 -0
  69. package/dist/lib/node-esm/chunk-GVKXGLAF.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-PICJ2REN.mjs → chunk-HT2NACMK.mjs} +29 -36
  71. package/dist/lib/node-esm/chunk-HT2NACMK.mjs.map +7 -0
  72. package/dist/lib/node-esm/chunk-JYMW4Z5N.mjs +45 -0
  73. package/dist/lib/node-esm/chunk-JYMW4Z5N.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-L6MEXN7V.mjs +32 -0
  75. package/dist/lib/node-esm/chunk-L6MEXN7V.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-O5QHCG5A.mjs +276 -0
  77. package/dist/lib/node-esm/chunk-O5QHCG5A.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-OKFUZA72.mjs +10 -0
  79. package/dist/lib/node-esm/chunk-OKFUZA72.mjs.map +7 -0
  80. package/dist/lib/node-esm/chunk-P3Q5IBZF.mjs +102 -0
  81. package/dist/lib/node-esm/chunk-P3Q5IBZF.mjs.map +7 -0
  82. package/dist/lib/node-esm/chunk-SUG55563.mjs +99 -0
  83. package/dist/lib/node-esm/chunk-SUG55563.mjs.map +7 -0
  84. package/dist/lib/node-esm/chunk-TGVY4GMA.mjs +10 -0
  85. package/dist/lib/node-esm/chunk-TGVY4GMA.mjs.map +7 -0
  86. package/dist/lib/node-esm/cli/index.mjs +1128 -0
  87. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  88. package/dist/lib/node-esm/compute-runtime-X2FXU47A.mjs +129 -0
  89. package/dist/lib/node-esm/compute-runtime-X2FXU47A.mjs.map +7 -0
  90. package/dist/lib/node-esm/create-trigger-from-template-HF7XIIRQ.mjs +79 -0
  91. package/dist/lib/node-esm/create-trigger-from-template-HF7XIIRQ.mjs.map +7 -0
  92. package/dist/lib/node-esm/hooks/index.mjs +3 -3
  93. package/dist/lib/node-esm/index.mjs +57 -63
  94. package/dist/lib/node-esm/index.mjs.map +4 -4
  95. package/dist/lib/node-esm/meta.json +1 -1
  96. package/dist/lib/node-esm/operation-handler-CI67LMB3.mjs +18 -0
  97. package/dist/lib/node-esm/operation-handler-CI67LMB3.mjs.map +7 -0
  98. package/dist/lib/node-esm/operations/index.mjs +14 -0
  99. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  100. package/dist/lib/node-esm/react-surface-C5MRQ2E3.mjs +66 -0
  101. package/dist/lib/node-esm/react-surface-C5MRQ2E3.mjs.map +7 -0
  102. package/dist/lib/node-esm/types/index.mjs +10 -4
  103. package/dist/types/src/AutomationPlugin.d.ts +2 -1
  104. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  106. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  108. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts +6 -0
  110. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/compute-runtime/index.d.ts +3 -0
  112. package/dist/types/src/capabilities/compute-runtime/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/index.d.ts +4 -5
  114. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  116. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  118. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  120. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  122. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  123. package/dist/types/src/cli/commands/index.d.ts +2 -0
  124. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  125. package/dist/types/src/cli/commands/trigger/create/index.d.ts +25 -0
  126. package/dist/types/src/cli/commands/trigger/create/index.d.ts.map +1 -0
  127. package/dist/types/src/cli/commands/trigger/create/queue.d.ts +13 -0
  128. package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +1 -0
  129. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts +15 -0
  130. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +1 -0
  131. package/dist/types/src/cli/commands/trigger/create/timer.d.ts +13 -0
  132. package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +1 -0
  133. package/dist/types/src/cli/commands/trigger/index.d.ts +57 -0
  134. package/dist/types/src/cli/commands/trigger/index.d.ts.map +1 -0
  135. package/dist/types/src/cli/commands/trigger/list.d.ts +7 -0
  136. package/dist/types/src/cli/commands/trigger/list.d.ts.map +1 -0
  137. package/dist/types/src/cli/commands/trigger/options.d.ts +11 -0
  138. package/dist/types/src/cli/commands/trigger/options.d.ts.map +1 -0
  139. package/dist/types/src/cli/commands/trigger/remove.d.ts +8 -0
  140. package/dist/types/src/cli/commands/trigger/remove.d.ts.map +1 -0
  141. package/dist/types/src/cli/commands/trigger/update/index.d.ts +28 -0
  142. package/dist/types/src/cli/commands/trigger/update/index.d.ts.map +1 -0
  143. package/dist/types/src/cli/commands/trigger/update/queue.d.ts +12 -0
  144. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -0
  145. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts +13 -0
  146. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +1 -0
  147. package/dist/types/src/cli/commands/trigger/update/timer.d.ts +11 -0
  148. package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +1 -0
  149. package/dist/types/src/cli/commands/trigger/util.d.ts +46 -0
  150. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -0
  151. package/dist/types/src/cli/index.d.ts +2 -0
  152. package/dist/types/src/cli/index.d.ts.map +1 -0
  153. package/dist/types/src/cli/plugin.d.ts +3 -0
  154. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  155. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +4 -5
  156. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  157. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +2 -0
  158. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  159. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  160. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  161. package/dist/types/src/components/FunctionsRegistry/index.d.ts +3 -1
  162. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -1
  163. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
  164. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  165. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  166. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  167. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +7 -6
  168. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  169. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +73 -2
  170. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/index.d.ts +3 -4
  172. package/dist/types/src/components/index.d.ts.map +1 -1
  173. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +4 -0
  174. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  175. package/dist/types/src/containers/AutomationSettings/index.d.ts +3 -0
  176. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
  177. package/dist/types/src/{components → containers/FunctionsContainer}/FunctionsContainer.d.ts +0 -1
  178. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
  179. package/dist/types/src/containers/FunctionsContainer/index.d.ts +3 -0
  180. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
  181. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts +6 -0
  182. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
  183. package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
  184. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
  185. package/dist/types/src/containers/index.d.ts +5 -0
  186. package/dist/types/src/containers/index.d.ts.map +1 -0
  187. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +7 -6
  188. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +4 -3
  190. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  191. package/dist/types/src/index.d.ts +1 -2
  192. package/dist/types/src/index.d.ts.map +1 -1
  193. package/dist/types/src/meta.d.ts +2 -2
  194. package/dist/types/src/meta.d.ts.map +1 -1
  195. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  196. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  197. package/dist/types/src/operations/definitions.d.ts +19 -0
  198. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  199. package/dist/types/src/operations/index.d.ts +4 -0
  200. package/dist/types/src/operations/index.d.ts.map +1 -0
  201. package/dist/types/src/testing/test-functions.d.ts +204 -3
  202. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  203. package/dist/types/src/translations.d.ts +2 -0
  204. package/dist/types/src/translations.d.ts.map +1 -1
  205. package/dist/types/src/types/capabilities.d.ts +23 -0
  206. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  207. package/dist/types/src/types/events.d.ts +5 -0
  208. package/dist/types/src/types/events.d.ts.map +1 -0
  209. package/dist/types/src/types/index.d.ts +2 -0
  210. package/dist/types/src/types/index.d.ts.map +1 -1
  211. package/dist/types/src/types/schema.d.ts +11 -3
  212. package/dist/types/src/types/schema.d.ts.map +1 -1
  213. package/dist/types/tsconfig.tsbuildinfo +1 -1
  214. package/package.json +73 -50
  215. package/src/AutomationPlugin.tsx +16 -34
  216. package/src/capabilities/app-graph-builder/app-graph-builder.ts +72 -0
  217. package/src/capabilities/app-graph-builder/index.ts +7 -0
  218. package/src/capabilities/compute-runtime/compute-runtime.ts +156 -0
  219. package/src/capabilities/compute-runtime/index.ts +7 -0
  220. package/src/capabilities/index.ts +4 -8
  221. package/src/capabilities/operation-handler/index.ts +11 -0
  222. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  223. package/src/capabilities/react-surface/index.ts +7 -0
  224. package/src/capabilities/react-surface/react-surface.tsx +57 -0
  225. package/src/cli/commands/index.ts +5 -0
  226. package/src/cli/commands/trigger/create/index.ts +14 -0
  227. package/src/cli/commands/trigger/create/queue.ts +90 -0
  228. package/src/cli/commands/trigger/create/subscription.ts +129 -0
  229. package/src/cli/commands/trigger/create/timer.ts +94 -0
  230. package/src/cli/commands/trigger/index.ts +16 -0
  231. package/src/cli/commands/trigger/list.ts +68 -0
  232. package/src/cli/commands/trigger/options.ts +59 -0
  233. package/src/cli/commands/trigger/remove.ts +45 -0
  234. package/src/cli/commands/trigger/update/index.ts +14 -0
  235. package/src/cli/commands/trigger/update/queue.ts +196 -0
  236. package/src/cli/commands/trigger/update/subscription.ts +279 -0
  237. package/src/cli/commands/trigger/update/timer.ts +194 -0
  238. package/src/cli/commands/trigger/util.ts +409 -0
  239. package/src/cli/index.ts +5 -0
  240. package/src/cli/plugin.ts +24 -0
  241. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +8 -6
  242. package/src/components/AutomationPanel/AutomationPanel.tsx +170 -72
  243. package/src/components/FunctionsPanel/FunctionsPanel.tsx +27 -30
  244. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +28 -46
  245. package/src/components/FunctionsRegistry/index.ts +4 -1
  246. package/src/components/TriggerEditor/FunctionInputEditor.tsx +34 -33
  247. package/src/components/TriggerEditor/SpecSelector.tsx +9 -7
  248. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +76 -30
  249. package/src/components/TriggerEditor/TriggerEditor.tsx +95 -48
  250. package/src/components/index.ts +1 -2
  251. package/src/{components → containers/AutomationSettings}/AutomationSettings.tsx +9 -12
  252. package/src/containers/AutomationSettings/index.ts +7 -0
  253. package/src/{components → containers/FunctionsContainer}/FunctionsContainer.tsx +10 -13
  254. package/src/containers/FunctionsContainer/index.ts +7 -0
  255. package/src/containers/TriggerSettings/TriggerSettings.tsx +26 -0
  256. package/src/containers/TriggerSettings/index.ts +6 -0
  257. package/src/containers/index.ts +9 -0
  258. package/src/hooks/useComputeRuntimeCallback.ts +12 -12
  259. package/src/hooks/useTriggerRuntimeControls.ts +28 -14
  260. package/src/index.ts +1 -2
  261. package/src/meta.ts +3 -3
  262. package/src/operations/create-trigger-from-template.ts +74 -0
  263. package/src/operations/definitions.ts +27 -0
  264. package/src/operations/index.ts +9 -0
  265. package/src/testing/test-functions.ts +9 -6
  266. package/src/translations.ts +4 -0
  267. package/src/{capabilities → types}/capabilities.ts +11 -7
  268. package/src/types/events.ts +11 -0
  269. package/src/types/index.ts +2 -0
  270. package/src/types/schema.ts +4 -4
  271. package/dist/lib/browser/AutomationPanel-7OECLR5N.mjs +0 -11
  272. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs +0 -68
  273. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs.map +0 -7
  274. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs +0 -151
  275. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs.map +0 -7
  276. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs +0 -81
  277. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-EPEXQP45.mjs +0 -14
  279. package/dist/lib/browser/chunk-EPEXQP45.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-JW7XSPYW.mjs +0 -267
  281. package/dist/lib/browser/chunk-JW7XSPYW.mjs.map +0 -7
  282. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +0 -7
  283. package/dist/lib/browser/chunk-NAPXRXTY.mjs.map +0 -7
  284. package/dist/lib/browser/chunk-QKFBHAGN.mjs +0 -184
  285. package/dist/lib/browser/chunk-QKFBHAGN.mjs.map +0 -7
  286. package/dist/lib/browser/chunk-TWWFNOIR.mjs +0 -109
  287. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +0 -7
  288. package/dist/lib/browser/chunk-XAKZ4ANY.mjs +0 -15
  289. package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-YBPJCY3F.mjs.map +0 -7
  291. package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs +0 -113
  292. package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs.map +0 -7
  293. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs +0 -77
  294. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +0 -7
  295. package/dist/lib/browser/react-surface-YQW7WCFW.mjs +0 -64
  296. package/dist/lib/browser/react-surface-YQW7WCFW.mjs.map +0 -7
  297. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs +0 -69
  298. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs.map +0 -7
  299. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs +0 -152
  300. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs.map +0 -7
  301. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs +0 -82
  302. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-6YRKST6M.mjs +0 -185
  304. package/dist/lib/node-esm/chunk-6YRKST6M.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-CPP35BE6.mjs +0 -16
  307. package/dist/lib/node-esm/chunk-CPP35BE6.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs.map +0 -7
  309. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs +0 -16
  310. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +0 -7
  311. package/dist/lib/node-esm/chunk-PICJ2REN.mjs.map +0 -7
  312. package/dist/lib/node-esm/chunk-RVK52XGK.mjs +0 -110
  313. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +0 -7
  314. package/dist/lib/node-esm/chunk-W76WUTZY.mjs +0 -268
  315. package/dist/lib/node-esm/chunk-W76WUTZY.mjs.map +0 -7
  316. package/dist/lib/node-esm/compute-runtime-URROOC34.mjs +0 -114
  317. package/dist/lib/node-esm/compute-runtime-URROOC34.mjs.map +0 -7
  318. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs +0 -78
  319. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +0 -7
  320. package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs +0 -65
  321. package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs.map +0 -7
  322. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  323. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  324. package/dist/types/src/capabilities/capabilities.d.ts +0 -20
  325. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  326. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  327. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  328. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  329. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  330. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  331. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  332. package/dist/types/src/components/AutomationSettings.d.ts +0 -5
  333. package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
  334. package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
  335. package/dist/types/src/components/TriggerSettings.d.ts +0 -6
  336. package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
  337. package/dist/types/src/events.d.ts +0 -4
  338. package/dist/types/src/events.d.ts.map +0 -1
  339. package/src/capabilities/app-graph-builder.ts +0 -87
  340. package/src/capabilities/compute-runtime.ts +0 -127
  341. package/src/capabilities/intent-resolver.ts +0 -72
  342. package/src/capabilities/react-surface.tsx +0 -56
  343. package/src/components/TriggerSettings.tsx +0 -25
  344. package/src/events.ts +0 -11
  345. /package/dist/lib/browser/{AutomationPanel-7OECLR5N.mjs.map → AutomationPanel-UPV6GR5B.mjs.map} +0 -0
  346. /package/dist/lib/browser/{FunctionsPanel-CRW6SJUN.mjs.map → FunctionsPanel-FFGPFXSF.mjs.map} +0 -0
  347. /package/dist/lib/{node-esm/AutomationPanel-HCVFNHGQ.mjs.map → browser/FunctionsRegistry-7FVC2YMN.mjs.map} +0 -0
  348. /package/dist/lib/{node-esm/FunctionsPanel-RVVCS6VH.mjs.map → browser/TriggerSettings-3UW3UTJE.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/cli/plugin.ts", "../../../../src/cli/commands/trigger/index.ts", "../../../../src/cli/commands/trigger/create/index.ts", "../../../../src/cli/commands/trigger/create/queue.ts", "../../../../src/cli/commands/trigger/options.ts", "../../../../src/cli/commands/trigger/util.ts", "../../../../src/cli/commands/trigger/create/subscription.ts", "../../../../src/cli/commands/trigger/create/timer.ts", "../../../../src/cli/commands/trigger/list.ts", "../../../../src/cli/commands/trigger/remove.ts", "../../../../src/cli/commands/trigger/update/index.ts", "../../../../src/cli/commands/trigger/update/queue.ts", "../../../../src/cli/commands/trigger/update/subscription.ts", "../../../../src/cli/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 { ClientEvents } from '@dxos/plugin-client/types';\n\n// NOTE: Must not import from index to avoid pulling in react dependencies.\nimport { ComputeRuntime } from '../capabilities/compute-runtime';\nimport { meta } from '../meta';\nimport { AutomationEvents } from '../types';\n\nimport { trigger } from './commands';\n\nexport const AutomationPlugin = Plugin.define(meta).pipe(\n AppPlugin.addCommandModule({ commands: [trigger] }),\n Plugin.addModule({\n activatesOn: ClientEvents.ClientReady,\n activatesAfter: [AutomationEvents.ComputeRuntimeReady],\n activate: ComputeRuntime,\n }),\n Plugin.make,\n);\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 { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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: {\n kind: 'queue',\n queue: queueDxn,\n },\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 { Annotation, Database, Entity, Feed, Filter, Obj, Ref, Type } from '@dxos/echo';\nimport { getProperties } from '@dxos/effect';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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(Filter.type(Trigger.Trigger));\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 { Database, Filter, JsonSchema, Query, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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 queryAst = Query.select(Filter.type(typename)).ast;\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: {\n kind: 'subscription',\n query: {\n ast: queryAst,\n },\n options: 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 { Database, Filter, JsonSchema, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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: {\n kind: 'timer',\n cron,\n },\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 { Context } from '@dxos/context';\nimport { Database, Filter } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\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(Filter.type(Trigger.Trigger));\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 { DXN } from '@dxos/echo';\nimport { Database } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\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 { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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\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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n if (mutableTrigger.spec?.kind === 'queue') {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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 { DXN, Database, Filter, JsonSchema, Obj, Query, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n const spec = mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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 { DXN, Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';\nimport { Trigger } from '@dxos/functions';\nimport { Operation } from '@dxos/operation';\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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n if (mutableTrigger.spec?.kind === 'timer') {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.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.change(trigger, (mutableTrigger) => {\n mutableTrigger.enabled = enabledValue;\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Plugin", "AppPlugin", "ClientEvents", "Command", "Command", "Command", "Options", "Prompt", "Console", "Effect", "HashMap", "Option", "CommandConfig", "flushAndSync", "print", "spaceLayer", "withTypes", "Common", "Database", "Filter", "JsonSchema", "Ref", "Trigger", "Operation", "Options", "Schema", "DXN", "TriggerId", "text", "pipe", "withDescription", "Enabled", "boolean", "ifPresent", "Input", "keyValueMap", "Typename", "Deep", "Delay", "integer", "Cron", "DXNSchema", "String", "transform", "instanceOf", "DXN", "decode", "value", "parse", "encode", "toString", "Queue", "withSchema", "Prompt", "Ansi", "Console", "Effect", "Match", "Option", "SchemaAST", "FormBuilder", "Annotation", "Database", "Entity", "Feed", "Filter", "Obj", "Ref", "Type", "getProperties", "Trigger", "Operation", "FeedAnnotation", "getTriggerRemoteStatus", "trigger", "remoteCronIds", "spec", "kind", "includes", "id", "printTrigger", "fn", "remoteStatus", "function", "Database", "load", "FormBuilder", "make", "title", "pipe", "set", "enabled", "green", "blackBright", "option", "fromNullable", "type", "withReturnType", "when", "yellow", "exhaustive", "nest", "key", "Obj", "getDXN", "toString", "nestedOption", "map", "printSpec", "build", "printTimer", "printSubscription", "printWebhook", "printQueue", "cron", "query", "raw", "method", "port", "queue", "promptForSchemaInput", "schema", "defaults", "ast", "isTypeLiteral", "properties", "getProperties", "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", "Ref", "isRefType", "isDefaultTemplate", "startsWith", "endsWith", "useTemplate", "templateStr", "annotation", "Annotation", "ReferenceAnnotation", "getFromAst", "getOrThrow", "objects", "runQuery", "Filter", "typename", "select", "obj", "Entity", "getLabel", "getDescription", "selectFunction", "functions", "Operation", "PersistentOperation", "fail", "Error", "selectTrigger", "triggers", "Trigger", "filteredTriggers", "all", "gen", "functionName", "instanceOf", "selectQueue", "schemas", "runSchemaQuery", "location", "feedSchemas", "FeedAnnotation", "get", "isSome", "queueChoices", "Type", "getTypename", "feedRef", "feed", "feedObj", "promise", "tryLoad", "Feed", "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", "kind", "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", "Database", "Filter", "JsonSchema", "Query", "Ref", "Trigger", "Operation", "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", "queryAst", "Query", "select", "ast", "deepOption", "confirm", "initial", "map", "some", "none", "delayOption", "delayStr", "parseInt", "subscriptionOptions", "isSome", "promptForSchemaInput", "inputSchema", "JsonSchema", "toEffectSchema", "undefined", "Object", "fromEntries", "toEntries", "trigger", "Trigger", "function", "Ref", "spec", "kind", "query", "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", "Database", "Filter", "JsonSchema", "Ref", "Trigger", "Operation", "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", "kind", "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", "Context", "Database", "Filter", "Trigger", "list", "make", "spaceId", "Common", "pipe", "optional", "fn", "spaceIdOption", "json", "CommandConfig", "triggers", "Database", "runQuery", "Filter", "type", "Trigger", "remoteCronIds", "gen", "client", "ClientService", "spaceIdWithDefault", "result", "promise", "edge", "http", "getCronTriggers", "Context", "default", "catchAll", "succeed", "cronIds", "triggersWithStatus", "map", "trigger", "remoteStatus", "getTriggerRemoteStatus", "log", "JSON", "stringify", "length", "items", "all", "printTrigger", "printList", "withDescription", "provide", "spaceLayer", "Command", "Options", "Console", "Effect", "Option", "CommandConfig", "Common", "print", "spaceLayer", "withTypes", "DXN", "Database", "Trigger", "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", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "Trigger", "Operation", "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", "change", "mutableTrigger", "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", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Query", "Ref", "Trigger", "Operation", "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", "change", "mutableTrigger", "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", "DXN", "Database", "Filter", "JsonSchema", "Obj", "Ref", "Trigger", "Operation", "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", "change", "mutableTrigger", "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", "addCommandModule", "commands", "trigger", "addModule", "activatesOn", "ClientEvents", "ClientReady", "activatesAfter", "AutomationEvents", "ComputeRuntimeReady", "activate", "ComputeRuntime", "make"]
7
+ }
@@ -0,0 +1,128 @@
1
+ import {
2
+ AutomationCapabilities
3
+ } from "./chunk-HAGI3PXT.mjs";
4
+ import "./chunk-H4ZAXPLY.mjs";
5
+
6
+ // src/capabilities/compute-runtime/compute-runtime.ts
7
+ import * as BrowserKeyValueStore from "@effect/platform-browser/BrowserKeyValueStore";
8
+ import { Registry } from "@effect-atom/atom";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Layer from "effect/Layer";
11
+ import * as ManagedRuntime from "effect/ManagedRuntime";
12
+ import { GenericToolkit } from "@dxos/ai";
13
+ import { Capabilities, Capability } from "@dxos/app-framework";
14
+ import { AppCapabilities } from "@dxos/app-toolkit";
15
+ import { ToolExecutionServices } from "@dxos/assistant";
16
+ import { SpaceProperties } from "@dxos/client/echo";
17
+ import { Resource } from "@dxos/context";
18
+ import { Database, Feed, Obj, Query, Ref } from "@dxos/echo";
19
+ import { createFeedServiceLayer } from "@dxos/echo-db";
20
+ import { CredentialsService, QueueService } from "@dxos/functions";
21
+ import { FunctionImplementationResolver, FunctionInvocationServiceLayerWithLocalLoopbackExecutor, RemoteFunctionExecutionService, TracingServiceExt, TriggerDispatcher, TriggerStateStore } from "@dxos/functions-runtime";
22
+ import { invariant } from "@dxos/invariant";
23
+ import { OperationHandlerSet } from "@dxos/operation";
24
+ import { ClientCapabilities } from "@dxos/plugin-client/types";
25
+ import { Blueprint } from "@dxos/blueprints";
26
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-automation/src/capabilities/compute-runtime/compute-runtime.ts";
27
+ var compute_runtime_default = Capability.makeModule(Effect.fnUntraced(function* () {
28
+ const capabilities = yield* Capability.Service;
29
+ const provider = yield* Effect.tryPromise(() => new ComputeRuntimeProviderImpl(capabilities).open());
30
+ return Capability.contributes(AutomationCapabilities.ComputeRuntime, provider, () => Effect.tryPromise(() => provider.close()));
31
+ }));
32
+ var ComputeRuntimeProviderImpl = class extends Resource {
33
+ #runtimes = /* @__PURE__ */ new Map();
34
+ #capabilities;
35
+ constructor(capabilities) {
36
+ super();
37
+ this.#capabilities = capabilities;
38
+ }
39
+ async _open() {
40
+ }
41
+ async _close() {
42
+ await Promise.all(Array.from(this.#runtimes.values()).map((rt) => rt.dispose()));
43
+ this.#runtimes.clear();
44
+ }
45
+ getRuntime(spaceId) {
46
+ if (this.#runtimes.has(spaceId)) {
47
+ return this.#runtimes.get(spaceId);
48
+ }
49
+ const layer = Layer.unwrapEffect(Effect.gen(this, function* () {
50
+ const client = this.#capabilities.get(ClientCapabilities.Client);
51
+ const aiServiceLayer = this.#capabilities.get(AppCapabilities.AiServiceLayer) ?? Layer.die("AiService not found");
52
+ const registry = this.#capabilities.get(Capabilities.AtomRegistry);
53
+ const operationHandlers = OperationHandlerSet.merge(...this.#capabilities.getAll(Capabilities.OperationHandler));
54
+ const genericToolkitProvider = Layer.succeed(GenericToolkit.Provider, {
55
+ getToolkit: () => {
56
+ const toolkits = this.#capabilities.getAll(AppCapabilities.Toolkit);
57
+ return GenericToolkit.merge(...toolkits);
58
+ }
59
+ });
60
+ const blueprints = this.#capabilities.getAll(AppCapabilities.BlueprintDefinition).flatMap((blueprint) => blueprint.make());
61
+ const space = client.spaces.get(spaceId);
62
+ invariant(space, `Invalid space: ${spaceId}`, {
63
+ F: __dxlog_file,
64
+ L: 94,
65
+ S: this,
66
+ A: [
67
+ "space",
68
+ "`Invalid space: ${spaceId}`"
69
+ ]
70
+ });
71
+ yield* Effect.promise(() => space.waitUntilReady());
72
+ return Layer.mergeAll(
73
+ TriggerDispatcher.layer({
74
+ timeControl: "natural"
75
+ }),
76
+ // TODO(dmaretskyi): Make blueprints reactive and registry accept an atom.
77
+ Layer.succeed(Blueprint.RegistryService, new Blueprint.Registry(blueprints))
78
+ ).pipe(Layer.provideMerge(Layer.succeed(Capability.Service, this.#capabilities)), Layer.provideMerge(Layer.succeed(Registry.AtomRegistry, registry)), Layer.provideMerge(Layer.mergeAll(TracingServiceLive, TriggerStateStore.layerKv.pipe(Layer.provide(BrowserKeyValueStore.layerLocalStorage)), ToolExecutionServices)), Layer.provideMerge(FunctionInvocationServiceLayerWithLocalLoopbackExecutor.pipe(Layer.provideMerge(genericToolkitProvider), Layer.provideMerge(FunctionImplementationResolver.layerTest({
79
+ functions: operationHandlers
80
+ })), Layer.provideMerge(RemoteFunctionExecutionService.fromClient(
81
+ client,
82
+ // If agent is not enabled do not provide spaceId because space context will be unavailable on EDGE.
83
+ client.config.get("runtime.client.edgeFeatures.agents") ? spaceId : void 0
84
+ )), Layer.provideMerge(aiServiceLayer), Layer.provideMerge(CredentialsService.layerFromDatabase()), Layer.provideMerge(space ? Database.layer(space.db) : Database.notAvailable), Layer.provideMerge(space ? QueueService.layer(space.queues) : QueueService.notAvailable), Layer.provideMerge(space ? createFeedServiceLayer(space.queues) : Feed.notAvailable))));
85
+ }));
86
+ const runtime = ManagedRuntime.make(layer);
87
+ this.#runtimes.set(spaceId, runtime);
88
+ return runtime;
89
+ }
90
+ };
91
+ var TracingServiceLive = Layer.unwrapEffect(Effect.gen(function* () {
92
+ const objects = yield* Database.runQuery(Query.type(SpaceProperties));
93
+ const [properties] = objects;
94
+ invariant(properties, void 0, {
95
+ F: __dxlog_file,
96
+ L: 143,
97
+ S: this,
98
+ A: [
99
+ "properties",
100
+ ""
101
+ ]
102
+ });
103
+ if (!properties.invocationTraceQueue || !properties.invocationTraceQueue.target) {
104
+ const queue2 = yield* QueueService.createQueue({
105
+ subspaceTag: "trace"
106
+ });
107
+ Obj.change(properties, (obj) => {
108
+ obj.invocationTraceQueue = Ref.fromDXN(queue2.dxn);
109
+ });
110
+ }
111
+ const queue = properties.invocationTraceQueue.target;
112
+ invariant(queue, void 0, {
113
+ F: __dxlog_file,
114
+ L: 153,
115
+ S: this,
116
+ A: [
117
+ "queue",
118
+ ""
119
+ ]
120
+ });
121
+ return TracingServiceExt.layerInvocationsQueue({
122
+ invocationTraceQueue: queue
123
+ });
124
+ }));
125
+ export {
126
+ compute_runtime_default as default
127
+ };
128
+ //# sourceMappingURL=compute-runtime-Y3GEKNFP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/compute-runtime/compute-runtime.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as BrowserKeyValueStore from '@effect/platform-browser/BrowserKeyValueStore';\nimport { Registry } from '@effect-atom/atom';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as ManagedRuntime from 'effect/ManagedRuntime';\n\nimport { GenericToolkit } from '@dxos/ai';\nimport { Capabilities, Capability, type CapabilityManager } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { ToolExecutionServices } from '@dxos/assistant';\nimport { SpaceProperties } from '@dxos/client/echo';\nimport { Resource } from '@dxos/context';\nimport { Database, Feed, Obj, Query, Ref } from '@dxos/echo';\nimport { createFeedServiceLayer } from '@dxos/echo-db';\nimport { CredentialsService, QueueService } from '@dxos/functions';\nimport {\n FunctionImplementationResolver,\n FunctionInvocationServiceLayerWithLocalLoopbackExecutor,\n RemoteFunctionExecutionService,\n TracingServiceExt,\n TriggerDispatcher,\n TriggerStateStore,\n} from '@dxos/functions-runtime';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId } from '@dxos/keys';\nimport { OperationHandlerSet } from '@dxos/operation';\nimport { ClientCapabilities } from '@dxos/plugin-client/types';\n\nimport { AutomationCapabilities } from '../../types';\nimport { Blueprint } from '@dxos/blueprints';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n const provider = yield* Effect.tryPromise(() => new ComputeRuntimeProviderImpl(capabilities).open());\n return Capability.contributes(AutomationCapabilities.ComputeRuntime, provider, () =>\n Effect.tryPromise(() => provider.close()),\n );\n }),\n);\n\n/**\n * Adapts plugin capabilities to runtime layers.\n */\nclass ComputeRuntimeProviderImpl extends Resource implements AutomationCapabilities.ComputeRuntimeProvider {\n readonly #runtimes = new Map<SpaceId, AutomationCapabilities.ComputeRuntime>();\n readonly #capabilities: CapabilityManager.CapabilityManager;\n\n constructor(capabilities: CapabilityManager.CapabilityManager) {\n super();\n this.#capabilities = capabilities;\n }\n\n protected override async _open() {}\n\n protected override async _close() {\n await Promise.all(Array.from(this.#runtimes.values()).map((rt) => rt.dispose()));\n this.#runtimes.clear();\n }\n\n getRuntime(spaceId: SpaceId): AutomationCapabilities.ComputeRuntime {\n if (this.#runtimes.has(spaceId)) {\n return this.#runtimes.get(spaceId)!;\n }\n\n const layer = Layer.unwrapEffect(\n Effect.gen(this, function* () {\n const client = this.#capabilities.get(ClientCapabilities.Client);\n const aiServiceLayer =\n this.#capabilities.get(AppCapabilities.AiServiceLayer) ?? Layer.die('AiService not found');\n const registry = this.#capabilities.get(Capabilities.AtomRegistry);\n\n // TODO(dmaretskyi): Make these reactive.\n const operationHandlers = OperationHandlerSet.merge(\n ...this.#capabilities.getAll(Capabilities.OperationHandler),\n );\n\n const genericToolkitProvider = Layer.succeed(GenericToolkit.Provider, {\n getToolkit: () => {\n const toolkits = this.#capabilities.getAll(AppCapabilities.Toolkit);\n return GenericToolkit.merge(...toolkits);\n },\n });\n\n const blueprints = this.#capabilities\n .getAll(AppCapabilities.BlueprintDefinition)\n .flatMap((blueprint) => blueprint.make());\n\n const space = client.spaces.get(spaceId);\n invariant(space, `Invalid space: ${spaceId}`);\n yield* Effect.promise(() => space.waitUntilReady());\n\n return Layer.mergeAll(\n TriggerDispatcher.layer({ timeControl: 'natural' }),\n // TODO(dmaretskyi): Make blueprints reactive and registry accept an atom.\n Layer.succeed(Blueprint.RegistryService, new Blueprint.Registry(blueprints)),\n ).pipe(\n Layer.provideMerge(Layer.succeed(Capability.Service, this.#capabilities)),\n Layer.provideMerge(Layer.succeed(Registry.AtomRegistry, registry)),\n Layer.provideMerge(\n Layer.mergeAll(\n TracingServiceLive,\n TriggerStateStore.layerKv.pipe(Layer.provide(BrowserKeyValueStore.layerLocalStorage)),\n ToolExecutionServices,\n ),\n ),\n Layer.provideMerge(\n FunctionInvocationServiceLayerWithLocalLoopbackExecutor.pipe(\n Layer.provideMerge(genericToolkitProvider),\n Layer.provideMerge(FunctionImplementationResolver.layerTest({ functions: operationHandlers })),\n Layer.provideMerge(\n RemoteFunctionExecutionService.fromClient(\n client,\n // If agent is not enabled do not provide spaceId because space context will be unavailable on EDGE.\n client.config.get('runtime.client.edgeFeatures.agents') ? spaceId : undefined,\n ),\n ),\n Layer.provideMerge(aiServiceLayer),\n Layer.provideMerge(CredentialsService.layerFromDatabase()),\n Layer.provideMerge(space ? Database.layer(space.db) : Database.notAvailable),\n Layer.provideMerge(space ? QueueService.layer(space.queues) : QueueService.notAvailable),\n Layer.provideMerge(space ? createFeedServiceLayer(space.queues) : Feed.notAvailable),\n ),\n ),\n );\n }),\n );\n\n const runtime = ManagedRuntime.make(layer);\n this.#runtimes.set(spaceId, runtime);\n return runtime;\n }\n}\n\nconst TracingServiceLive = Layer.unwrapEffect(\n Effect.gen(function* () {\n const objects = yield* Database.runQuery(Query.type(SpaceProperties));\n const [properties] = objects;\n invariant(properties);\n // TODO(burdon): Check ref target has loaded?\n if (!properties.invocationTraceQueue || !properties.invocationTraceQueue.target) {\n const queue = yield* QueueService.createQueue({ subspaceTag: 'trace' });\n Obj.change(properties, (obj) => {\n obj.invocationTraceQueue = Ref.fromDXN(queue.dxn);\n });\n }\n\n const queue = properties.invocationTraceQueue.target;\n invariant(queue);\n return TracingServiceExt.layerInvocationsQueue({ invocationTraceQueue: queue });\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["BrowserKeyValueStore", "Registry", "Effect", "Layer", "ManagedRuntime", "GenericToolkit", "Capabilities", "Capability", "AppCapabilities", "ToolExecutionServices", "SpaceProperties", "Resource", "Database", "Feed", "Obj", "Query", "Ref", "createFeedServiceLayer", "CredentialsService", "QueueService", "FunctionImplementationResolver", "FunctionInvocationServiceLayerWithLocalLoopbackExecutor", "RemoteFunctionExecutionService", "TracingServiceExt", "TriggerDispatcher", "TriggerStateStore", "invariant", "OperationHandlerSet", "ClientCapabilities", "Blueprint", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "provider", "tryPromise", "ComputeRuntimeProviderImpl", "open", "contributes", "AutomationCapabilities", "ComputeRuntime", "close", "Resource", "Map", "_open", "_close", "Promise", "all", "Array", "from", "values", "map", "rt", "dispose", "clear", "getRuntime", "spaceId", "has", "get", "layer", "unwrapEffect", "gen", "client", "ClientCapabilities", "Client", "aiServiceLayer", "AppCapabilities", "AiServiceLayer", "die", "registry", "Capabilities", "AtomRegistry", "operationHandlers", "OperationHandlerSet", "merge", "getAll", "OperationHandler", "genericToolkitProvider", "succeed", "GenericToolkit", "Provider", "getToolkit", "toolkits", "Toolkit", "blueprints", "BlueprintDefinition", "flatMap", "blueprint", "make", "space", "spaces", "invariant", "promise", "waitUntilReady", "mergeAll", "TriggerDispatcher", "timeControl", "RegistryService", "Registry", "pipe", "provideMerge", "TracingServiceLive", "TriggerStateStore", "layerKv", "provide", "layerLocalStorage", "ToolExecutionServices", "FunctionInvocationServiceLayerWithLocalLoopbackExecutor", "FunctionImplementationResolver", "layerTest", "functions", "RemoteFunctionExecutionService", "fromClient", "config", "undefined", "CredentialsService", "layerFromDatabase", "Database", "db", "notAvailable", "QueueService", "queues", "createFeedServiceLayer", "Feed", "runtime", "set", "objects", "runQuery", "Query", "type", "SpaceProperties", "properties", "invocationTraceQueue", "target", "queue", "createQueue", "subspaceTag", "Obj", "change", "obj", "Ref", "fromDXN", "dxn", "TracingServiceExt", "layerInvocationsQueue"]
7
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ CreateTriggerFromTemplate
3
+ } from "./chunk-VMFDCTFG.mjs";
4
+ import "./chunk-HAGI3PXT.mjs";
5
+ import {
6
+ meta
7
+ } from "./chunk-H4ZAXPLY.mjs";
8
+
9
+ // src/operations/create-trigger-from-template.ts
10
+ import * as Effect from "effect/Effect";
11
+ import { LayoutOperation, getSpacePath } from "@dxos/app-toolkit";
12
+ import { Obj, Ref } from "@dxos/echo";
13
+ import { Script, Trigger } from "@dxos/functions";
14
+ import { Operation } from "@dxos/operation";
15
+ import { SpaceOperation } from "@dxos/plugin-space/operations";
16
+ import { Filter } from "@dxos/react-client/echo";
17
+ var handler = CreateTriggerFromTemplate.pipe(Operation.withHandler(Effect.fnUntraced(function* ({ db, template, enabled = false, scriptName, input }) {
18
+ const trigger = Trigger.make({
19
+ enabled,
20
+ input
21
+ });
22
+ if (scriptName) {
23
+ const scripts = yield* Effect.promise(() => db.query(Filter.type(Script.Script, {
24
+ name: scriptName
25
+ })).run());
26
+ const [script] = scripts;
27
+ if (script) {
28
+ const functions = yield* Effect.promise(() => db.query(Filter.type(Operation.PersistentOperation, {
29
+ source: Ref.make(script)
30
+ })).run());
31
+ const [fn] = functions;
32
+ if (fn) {
33
+ Obj.change(trigger, (obj) => {
34
+ obj.function = Ref.make(fn);
35
+ });
36
+ }
37
+ }
38
+ }
39
+ switch (template.type) {
40
+ case "timer": {
41
+ Obj.change(trigger, (obj) => {
42
+ obj.spec = {
43
+ kind: "timer",
44
+ cron: template.cron
45
+ };
46
+ });
47
+ break;
48
+ }
49
+ case "queue": {
50
+ Obj.change(trigger, (obj) => {
51
+ obj.spec = {
52
+ kind: "queue",
53
+ queue: template.queueDXN.toString()
54
+ };
55
+ });
56
+ break;
57
+ }
58
+ default: {
59
+ break;
60
+ }
61
+ }
62
+ yield* Operation.invoke(SpaceOperation.AddObject, {
63
+ object: trigger,
64
+ target: db,
65
+ hidden: true
66
+ });
67
+ yield* Operation.invoke(LayoutOperation.Open, {
68
+ subject: [
69
+ `${getSpacePath(db.spaceId)}/settings/${meta.id}.automations`
70
+ ],
71
+ workspace: getSpacePath(db.spaceId)
72
+ });
73
+ })));
74
+ var create_trigger_from_template_default = handler;
75
+ export {
76
+ create_trigger_from_template_default as default
77
+ };
78
+ //# sourceMappingURL=create-trigger-from-template-GVYDOR56.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/create-trigger-from-template.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { LayoutOperation, getSpacePath } from '@dxos/app-toolkit';\nimport { Obj, Ref } from '@dxos/echo';\nimport { Script, Trigger } from '@dxos/functions';\nimport { type DXN } from '@dxos/keys';\nimport { Operation } from '@dxos/operation';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { Filter } from '@dxos/react-client/echo';\n\nimport { meta } from '../meta';\nimport { CreateTriggerFromTemplate } from './definitions';\n\nconst handler: Operation.WithHandler<typeof CreateTriggerFromTemplate> = CreateTriggerFromTemplate.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ db, template, enabled = false, scriptName, input }) {\n const trigger = Trigger.make({ enabled, input });\n\n // TODO(wittjosiah): Factor out function lookup by script name?\n if (scriptName) {\n const scripts = yield* Effect.promise(() => db.query(Filter.type(Script.Script, { name: scriptName })).run());\n const [script] = scripts;\n if (script) {\n const functions = yield* Effect.promise(() =>\n db.query(Filter.type(Operation.PersistentOperation, { source: Ref.make(script) })).run(),\n );\n const [fn] = functions;\n if (fn) {\n Obj.change(trigger, (obj) => {\n obj.function = Ref.make(fn);\n });\n }\n }\n }\n\n switch (template.type) {\n case 'timer': {\n Obj.change(trigger, (obj) => {\n obj.spec = { kind: 'timer', cron: template.cron };\n });\n break;\n }\n case 'queue': {\n Obj.change(trigger, (obj) => {\n obj.spec = {\n kind: 'queue',\n queue: (template.queueDXN as DXN).toString(),\n };\n });\n break;\n }\n default: {\n break;\n }\n }\n\n yield* Operation.invoke(SpaceOperation.AddObject, {\n object: trigger,\n target: db,\n hidden: true,\n });\n yield* Operation.invoke(LayoutOperation.Open, {\n subject: [`${getSpacePath(db.spaceId)}/settings/${meta.id}.automations`],\n workspace: getSpacePath(db.spaceId),\n });\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiBC,oBAAoB;AAC9C,SAASC,KAAKC,WAAW;AACzB,SAASC,QAAQC,eAAe;AAEhC,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAKvB,IAAMC,UAAmEC,0BAA0BC,KACjGC,UAAUC,YACDC,kBAAW,WAAW,EAAEC,IAAIC,UAAUC,UAAU,OAAOC,YAAYC,MAAK,GAAE;AAC/E,QAAMC,UAAUC,QAAQC,KAAK;IAAEL;IAASE;EAAM,CAAA;AAG9C,MAAID,YAAY;AACd,UAAMK,UAAU,OAAcC,eAAQ,MAAMT,GAAGU,MAAMC,OAAOC,KAAKC,OAAOA,QAAQ;MAAEC,MAAMX;IAAW,CAAA,CAAA,EAAIY,IAAG,CAAA;AAC1G,UAAM,CAACC,MAAAA,IAAUR;AACjB,QAAIQ,QAAQ;AACV,YAAMC,YAAY,OAAcR,eAAQ,MACtCT,GAAGU,MAAMC,OAAOC,KAAKf,UAAUqB,qBAAqB;QAAEC,QAAQC,IAAIb,KAAKS,MAAAA;MAAQ,CAAA,CAAA,EAAID,IAAG,CAAA;AAExF,YAAM,CAACM,EAAAA,IAAMJ;AACb,UAAII,IAAI;AACNC,YAAIC,OAAOlB,SAAS,CAACmB,QAAAA;AACnBA,cAAIC,WAAWL,IAAIb,KAAKc,EAAAA;QAC1B,CAAA;MACF;IACF;EACF;AAEA,UAAQpB,SAASW,MAAI;IACnB,KAAK,SAAS;AACZU,UAAIC,OAAOlB,SAAS,CAACmB,QAAAA;AACnBA,YAAIE,OAAO;UAAEC,MAAM;UAASC,MAAM3B,SAAS2B;QAAK;MAClD,CAAA;AACA;IACF;IACA,KAAK,SAAS;AACZN,UAAIC,OAAOlB,SAAS,CAACmB,QAAAA;AACnBA,YAAIE,OAAO;UACTC,MAAM;UACNE,OAAQ5B,SAAS6B,SAAiBC,SAAQ;QAC5C;MACF,CAAA;AACA;IACF;IACA,SAAS;AACP;IACF;EACF;AAEA,SAAOlC,UAAUmC,OAAOC,eAAeC,WAAW;IAChDC,QAAQ9B;IACR+B,QAAQpC;IACRqC,QAAQ;EACV,CAAA;AACA,SAAOxC,UAAUmC,OAAOM,gBAAgBC,MAAM;IAC5CC,SAAS;MAAC,GAAGC,aAAazC,GAAG0C,OAAO,CAAA,aAAcC,KAAKC,EAAE;;IACzDC,WAAWJ,aAAazC,GAAG0C,OAAO;EACpC,CAAA;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,uCAAehD;",
6
+ "names": ["Effect", "LayoutOperation", "getSpacePath", "Obj", "Ref", "Script", "Trigger", "Operation", "SpaceOperation", "Filter", "handler", "CreateTriggerFromTemplate", "pipe", "Operation", "withHandler", "fnUntraced", "db", "template", "enabled", "scriptName", "input", "trigger", "Trigger", "make", "scripts", "promise", "query", "Filter", "type", "Script", "name", "run", "script", "functions", "PersistentOperation", "source", "Ref", "fn", "Obj", "change", "obj", "function", "spec", "kind", "cron", "queue", "queueDXN", "toString", "invoke", "SpaceOperation", "AddObject", "object", "target", "hidden", "LayoutOperation", "Open", "subject", "getSpacePath", "spaceId", "meta", "id", "workspace"]
7
+ }
@@ -2,9 +2,9 @@ import {
2
2
  invokeFunctionWithTracing,
3
3
  useComputeRuntimeCallback,
4
4
  useTriggerRuntimeControls
5
- } from "../chunk-NAPXRXTY.mjs";
6
- import "../chunk-XAKZ4ANY.mjs";
7
- import "../chunk-LZQFZO3B.mjs";
5
+ } from "../chunk-FNYP7F2T.mjs";
6
+ import "../chunk-HAGI3PXT.mjs";
7
+ import "../chunk-H4ZAXPLY.mjs";
8
8
  export {
9
9
  invokeFunctionWithTracing,
10
10
  useComputeRuntimeCallback,