@dxos/plugin-automation 0.8.4-main.e8ec1fe → 0.8.4-main.effb148878

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 (346) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/neutral/AutomationPanel-OS3ZWYJK.mjs +12 -0
  4. package/dist/lib/neutral/AutomationPlugin.mjs +10 -0
  5. package/dist/lib/neutral/AutomationPlugin.node.mjs +1118 -0
  6. package/dist/lib/neutral/AutomationPlugin.node.mjs.map +7 -0
  7. package/dist/lib/neutral/AutomationPlugin.workerd.mjs +23 -0
  8. package/dist/lib/neutral/AutomationPlugin.workerd.mjs.map +7 -0
  9. package/dist/lib/neutral/AutomationSettings-CAFY3J7H.mjs +32 -0
  10. package/dist/lib/neutral/AutomationSettings-CAFY3J7H.mjs.map +7 -0
  11. package/dist/lib/neutral/FunctionsContainer-V5AM45ZI.mjs +38 -0
  12. package/dist/lib/neutral/FunctionsContainer-V5AM45ZI.mjs.map +7 -0
  13. package/dist/lib/neutral/FunctionsPanel-L32Z67B7.mjs +97 -0
  14. package/dist/lib/neutral/FunctionsPanel-L32Z67B7.mjs.map +7 -0
  15. package/dist/lib/neutral/FunctionsRegistry-RTCY3LXE.mjs +95 -0
  16. package/dist/lib/neutral/FunctionsRegistry-RTCY3LXE.mjs.map +7 -0
  17. package/dist/lib/neutral/TriggerSettings-XCHIZPOR.mjs +9 -0
  18. package/dist/lib/neutral/app-graph-builder-4QOUKY5L.mjs +75 -0
  19. package/dist/lib/neutral/app-graph-builder-4QOUKY5L.mjs.map +7 -0
  20. package/dist/lib/neutral/capabilities/index.mjs +17 -0
  21. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  22. package/dist/lib/neutral/capabilities/node.mjs +15 -0
  23. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  24. package/dist/lib/neutral/chunk-2H6X4VQY.mjs +435 -0
  25. package/dist/lib/neutral/chunk-2H6X4VQY.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-2JP77CMN.mjs +42 -0
  27. package/dist/lib/neutral/chunk-2JP77CMN.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-33VXVTV4.mjs +38 -0
  29. package/dist/lib/neutral/chunk-33VXVTV4.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-ARUHHM4Q.mjs +12 -0
  31. package/dist/lib/neutral/chunk-ARUHHM4Q.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-CMM3AFHR.mjs +111 -0
  33. package/dist/lib/neutral/chunk-CMM3AFHR.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-EBSOLOP6.mjs +8 -0
  35. package/dist/lib/neutral/chunk-EBSOLOP6.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  37. package/dist/lib/neutral/chunk-KV7RZLFS.mjs +344 -0
  38. package/dist/lib/neutral/chunk-KV7RZLFS.mjs.map +7 -0
  39. package/dist/lib/neutral/chunk-QLBA6Y46.mjs +39 -0
  40. package/dist/lib/neutral/chunk-QLBA6Y46.mjs.map +7 -0
  41. package/dist/lib/neutral/chunk-XC5EPVE3.mjs +76 -0
  42. package/dist/lib/neutral/chunk-XC5EPVE3.mjs.map +7 -0
  43. package/dist/lib/neutral/components/index.mjs +16 -0
  44. package/dist/lib/neutral/containers/index.mjs +13 -0
  45. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  46. package/dist/lib/neutral/create-trigger-from-template-IOQZDDSH.mjs +68 -0
  47. package/dist/lib/neutral/create-trigger-from-template-IOQZDDSH.mjs.map +7 -0
  48. package/dist/lib/neutral/hooks/index.mjs +10 -0
  49. package/dist/lib/neutral/index.mjs +16 -0
  50. package/dist/lib/neutral/layer-specs-B22CIT3U.mjs +160 -0
  51. package/dist/lib/neutral/layer-specs-B22CIT3U.mjs.map +7 -0
  52. package/dist/lib/neutral/meta.json +1 -0
  53. package/dist/lib/neutral/meta.mjs +8 -0
  54. package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs +13 -0
  55. package/dist/lib/neutral/operation-handler-YXGYH5W5.mjs.map +7 -0
  56. package/dist/lib/neutral/operations/index.mjs +8 -0
  57. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  58. package/dist/lib/neutral/plugin.mjs +16 -0
  59. package/dist/lib/neutral/plugin.mjs.map +7 -0
  60. package/dist/lib/neutral/react-surface-3OGMAMKV.mjs +57 -0
  61. package/dist/lib/neutral/react-surface-3OGMAMKV.mjs.map +7 -0
  62. package/dist/lib/neutral/testing.mjs +8 -0
  63. package/dist/lib/neutral/testing.mjs.map +7 -0
  64. package/dist/lib/neutral/translations.mjs +60 -0
  65. package/dist/lib/neutral/translations.mjs.map +7 -0
  66. package/dist/lib/neutral/trigger-runtime-controller-BOEJYGWC.mjs +77 -0
  67. package/dist/lib/neutral/trigger-runtime-controller-BOEJYGWC.mjs.map +7 -0
  68. package/dist/lib/neutral/types/index.mjs +12 -0
  69. package/dist/lib/neutral/types/index.mjs.map +7 -0
  70. package/dist/types/src/AutomationPlugin.d.ts +3 -1
  71. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  72. package/dist/types/src/AutomationPlugin.node.d.ts +4 -0
  73. package/dist/types/src/AutomationPlugin.node.d.ts.map +1 -0
  74. package/dist/types/src/AutomationPlugin.test.d.ts +2 -0
  75. package/dist/types/src/AutomationPlugin.test.d.ts.map +1 -0
  76. package/dist/types/src/AutomationPlugin.workerd.d.ts +4 -0
  77. package/dist/types/src/AutomationPlugin.workerd.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  79. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/index.d.ts +7 -5
  81. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/layer-specs.d.ts +5 -0
  83. package/dist/types/src/capabilities/layer-specs.d.ts.map +1 -0
  84. package/dist/types/src/capabilities/node.d.ts +7 -0
  85. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  86. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  87. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  89. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/trigger-runtime-controller.d.ts +5 -0
  91. package/dist/types/src/capabilities/trigger-runtime-controller.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts +2 -0
  93. package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts.map +1 -0
  94. package/dist/types/src/commands/index.d.ts +2 -0
  95. package/dist/types/src/commands/index.d.ts.map +1 -0
  96. package/dist/types/src/commands/trigger/create/index.d.ts +25 -0
  97. package/dist/types/src/commands/trigger/create/index.d.ts.map +1 -0
  98. package/dist/types/src/commands/trigger/create/queue.d.ts +13 -0
  99. package/dist/types/src/commands/trigger/create/queue.d.ts.map +1 -0
  100. package/dist/types/src/commands/trigger/create/subscription.d.ts +15 -0
  101. package/dist/types/src/commands/trigger/create/subscription.d.ts.map +1 -0
  102. package/dist/types/src/commands/trigger/create/timer.d.ts +13 -0
  103. package/dist/types/src/commands/trigger/create/timer.d.ts.map +1 -0
  104. package/dist/types/src/commands/trigger/index.d.ts +57 -0
  105. package/dist/types/src/commands/trigger/index.d.ts.map +1 -0
  106. package/dist/types/src/commands/trigger/list.d.ts +7 -0
  107. package/dist/types/src/commands/trigger/list.d.ts.map +1 -0
  108. package/dist/types/src/commands/trigger/options.d.ts +10 -0
  109. package/dist/types/src/commands/trigger/options.d.ts.map +1 -0
  110. package/dist/types/src/commands/trigger/remove.d.ts +8 -0
  111. package/dist/types/src/commands/trigger/remove.d.ts.map +1 -0
  112. package/dist/types/src/commands/trigger/update/index.d.ts +28 -0
  113. package/dist/types/src/commands/trigger/update/index.d.ts.map +1 -0
  114. package/dist/types/src/commands/trigger/update/queue.d.ts +11 -0
  115. package/dist/types/src/commands/trigger/update/queue.d.ts.map +1 -0
  116. package/dist/types/src/commands/trigger/update/subscription.d.ts +13 -0
  117. package/dist/types/src/commands/trigger/update/subscription.d.ts.map +1 -0
  118. package/dist/types/src/commands/trigger/update/timer.d.ts +11 -0
  119. package/dist/types/src/commands/trigger/update/timer.d.ts.map +1 -0
  120. package/dist/types/src/commands/trigger/util.d.ts +85 -0
  121. package/dist/types/src/commands/trigger/util.d.ts.map +1 -0
  122. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +5 -6
  123. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  124. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +45 -30
  125. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/AutomationPanel/TriggerEdgeMetadata.d.ts +18 -0
  127. package/dist/types/src/components/AutomationPanel/TriggerEdgeMetadata.d.ts.map +1 -0
  128. package/dist/types/src/components/AutomationPanel/index.d.ts.map +1 -1
  129. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/FunctionsPanel/index.d.ts.map +1 -1
  131. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  132. package/dist/types/src/components/FunctionsRegistry/index.d.ts +3 -1
  133. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -1
  134. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
  135. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  136. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  137. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  138. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +8 -7
  139. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  140. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +118 -32
  141. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  142. package/dist/types/src/components/index.d.ts +3 -4
  143. package/dist/types/src/components/index.d.ts.map +1 -1
  144. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +6 -0
  145. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  146. package/dist/types/src/containers/AutomationSettings/index.d.ts +2 -0
  147. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
  148. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts +4 -0
  149. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
  150. package/dist/types/src/containers/FunctionsContainer/index.d.ts +2 -0
  151. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
  152. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
  153. package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
  154. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
  155. package/dist/types/src/containers/index.d.ts +5 -0
  156. package/dist/types/src/containers/index.d.ts.map +1 -0
  157. package/dist/types/src/hooks/index.d.ts +1 -1
  158. package/dist/types/src/hooks/index.d.ts.map +1 -1
  159. package/dist/types/src/hooks/useEdgeTriggersDispatcherStatus.d.ts +13 -0
  160. package/dist/types/src/hooks/useEdgeTriggersDispatcherStatus.d.ts.map +1 -0
  161. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +5 -4
  162. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +1 -5
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +2 -2
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  168. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  169. package/dist/types/src/operations/index.d.ts +3 -0
  170. package/dist/types/src/operations/index.d.ts.map +1 -0
  171. package/dist/types/src/plugin.d.ts +4 -0
  172. package/dist/types/src/plugin.d.ts.map +1 -0
  173. package/dist/types/src/testing/test-functions.d.ts +204 -3
  174. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  175. package/dist/types/src/testing.d.ts +2 -0
  176. package/dist/types/src/testing.d.ts.map +1 -0
  177. package/dist/types/src/translations.d.ts +45 -31
  178. package/dist/types/src/translations.d.ts.map +1 -1
  179. package/dist/types/src/types/AutomationOperation.d.ts +21 -0
  180. package/dist/types/src/types/AutomationOperation.d.ts.map +1 -0
  181. package/dist/types/src/types/index.d.ts +1 -0
  182. package/dist/types/src/types/index.d.ts.map +1 -1
  183. package/dist/types/src/types/schema.d.ts +13 -5
  184. package/dist/types/src/types/schema.d.ts.map +1 -1
  185. package/dist/types/tsconfig.tsbuildinfo +1 -1
  186. package/package.json +145 -70
  187. package/src/AutomationPlugin.node.ts +32 -0
  188. package/src/AutomationPlugin.test.ts +27 -0
  189. package/src/AutomationPlugin.tsx +24 -38
  190. package/src/AutomationPlugin.workerd.ts +18 -0
  191. package/src/capabilities/app-graph-builder.ts +59 -80
  192. package/src/capabilities/index.ts +13 -7
  193. package/src/capabilities/layer-specs.ts +230 -0
  194. package/src/capabilities/node.ts +17 -0
  195. package/src/capabilities/operation-handler.ts +16 -0
  196. package/src/capabilities/react-surface.tsx +49 -46
  197. package/src/capabilities/trigger-runtime-controller.test.ts +103 -0
  198. package/src/capabilities/trigger-runtime-controller.ts +126 -0
  199. package/src/commands/index.ts +5 -0
  200. package/src/commands/trigger/create/index.ts +14 -0
  201. package/src/commands/trigger/create/queue.ts +87 -0
  202. package/src/commands/trigger/create/subscription.ts +125 -0
  203. package/src/commands/trigger/create/timer.ts +90 -0
  204. package/src/commands/trigger/index.ts +16 -0
  205. package/src/commands/trigger/list.ts +70 -0
  206. package/src/commands/trigger/options.ts +47 -0
  207. package/src/commands/trigger/remove.ts +45 -0
  208. package/src/commands/trigger/update/index.ts +14 -0
  209. package/src/commands/trigger/update/queue.ts +191 -0
  210. package/src/commands/trigger/update/subscription.ts +279 -0
  211. package/src/commands/trigger/update/timer.ts +195 -0
  212. package/src/commands/trigger/util.ts +410 -0
  213. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +15 -8
  214. package/src/components/AutomationPanel/AutomationPanel.tsx +245 -86
  215. package/src/components/AutomationPanel/TriggerEdgeMetadata.tsx +148 -0
  216. package/src/components/FunctionsPanel/FunctionsPanel.tsx +43 -42
  217. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +38 -54
  218. package/src/components/FunctionsRegistry/index.ts +4 -1
  219. package/src/components/TriggerEditor/FunctionInputEditor.tsx +36 -35
  220. package/src/components/TriggerEditor/SpecSelector.tsx +26 -20
  221. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +92 -39
  222. package/src/components/TriggerEditor/TriggerEditor.tsx +171 -54
  223. package/src/components/index.ts +1 -2
  224. package/src/containers/AutomationSettings/AutomationSettings.tsx +31 -0
  225. package/src/containers/AutomationSettings/index.ts +5 -0
  226. package/src/containers/FunctionsContainer/FunctionsContainer.tsx +33 -0
  227. package/src/containers/FunctionsContainer/index.ts +5 -0
  228. package/src/containers/TriggerSettings/TriggerSettings.tsx +48 -0
  229. package/src/containers/TriggerSettings/index.ts +6 -0
  230. package/src/containers/index.ts +9 -0
  231. package/src/hooks/index.ts +2 -1
  232. package/src/hooks/useEdgeTriggersDispatcherStatus.ts +78 -0
  233. package/src/hooks/useTriggerRuntimeControls.ts +38 -19
  234. package/src/index.ts +1 -6
  235. package/src/meta.ts +25 -6
  236. package/src/operations/create-trigger-from-template.ts +70 -0
  237. package/src/operations/index.ts +7 -0
  238. package/src/plugin.ts +11 -0
  239. package/src/testing/test-functions.ts +12 -9
  240. package/src/testing.ts +7 -0
  241. package/src/translations.ts +53 -36
  242. package/src/types/AutomationOperation.ts +39 -0
  243. package/src/types/index.ts +2 -0
  244. package/src/types/schema.ts +6 -6
  245. package/dist/lib/browser/AutomationPanel-7OECLR5N.mjs +0 -11
  246. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs +0 -68
  247. package/dist/lib/browser/AutomationSettings-KCZISXI6.mjs.map +0 -7
  248. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs +0 -151
  249. package/dist/lib/browser/FunctionsContainer-MIWEISRR.mjs.map +0 -7
  250. package/dist/lib/browser/FunctionsPanel-CRW6SJUN.mjs +0 -10
  251. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs +0 -81
  252. package/dist/lib/browser/app-graph-builder-W7LLC6XW.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-EPEXQP45.mjs +0 -14
  254. package/dist/lib/browser/chunk-EPEXQP45.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-JW7XSPYW.mjs +0 -267
  256. package/dist/lib/browser/chunk-JW7XSPYW.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-LZQFZO3B.mjs +0 -17
  258. package/dist/lib/browser/chunk-LZQFZO3B.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-NAPXRXTY.mjs +0 -100
  260. package/dist/lib/browser/chunk-NAPXRXTY.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-QKFBHAGN.mjs +0 -184
  262. package/dist/lib/browser/chunk-QKFBHAGN.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-TWWFNOIR.mjs +0 -109
  264. package/dist/lib/browser/chunk-TWWFNOIR.mjs.map +0 -7
  265. package/dist/lib/browser/chunk-XAKZ4ANY.mjs +0 -15
  266. package/dist/lib/browser/chunk-XAKZ4ANY.mjs.map +0 -7
  267. package/dist/lib/browser/chunk-YBPJCY3F.mjs +0 -38
  268. package/dist/lib/browser/chunk-YBPJCY3F.mjs.map +0 -7
  269. package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs +0 -113
  270. package/dist/lib/browser/compute-runtime-EIQTHJFZ.mjs.map +0 -7
  271. package/dist/lib/browser/hooks/index.mjs +0 -13
  272. package/dist/lib/browser/index.mjs +0 -130
  273. package/dist/lib/browser/index.mjs.map +0 -7
  274. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs +0 -77
  275. package/dist/lib/browser/intent-resolver-5HR7M7T6.mjs.map +0 -7
  276. package/dist/lib/browser/meta.json +0 -1
  277. package/dist/lib/browser/react-surface-YQW7WCFW.mjs +0 -64
  278. package/dist/lib/browser/react-surface-YQW7WCFW.mjs.map +0 -7
  279. package/dist/lib/browser/types/index.mjs +0 -8
  280. package/dist/lib/node-esm/AutomationPanel-HCVFNHGQ.mjs +0 -12
  281. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs +0 -69
  282. package/dist/lib/node-esm/AutomationSettings-UUUPVNUJ.mjs.map +0 -7
  283. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs +0 -152
  284. package/dist/lib/node-esm/FunctionsContainer-6OB3JN5O.mjs.map +0 -7
  285. package/dist/lib/node-esm/FunctionsPanel-RVVCS6VH.mjs +0 -11
  286. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs +0 -82
  287. package/dist/lib/node-esm/app-graph-builder-SLQOO7GH.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-6YRKST6M.mjs +0 -185
  289. package/dist/lib/node-esm/chunk-6YRKST6M.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs +0 -19
  291. package/dist/lib/node-esm/chunk-CEVIVRTY.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-CPP35BE6.mjs +0 -16
  293. package/dist/lib/node-esm/chunk-CPP35BE6.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs +0 -39
  295. package/dist/lib/node-esm/chunk-ECJKIUBO.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs +0 -16
  297. package/dist/lib/node-esm/chunk-KB7NFEYY.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-PICJ2REN.mjs +0 -101
  299. package/dist/lib/node-esm/chunk-PICJ2REN.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-RVK52XGK.mjs +0 -110
  301. package/dist/lib/node-esm/chunk-RVK52XGK.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-W76WUTZY.mjs +0 -268
  303. package/dist/lib/node-esm/chunk-W76WUTZY.mjs.map +0 -7
  304. package/dist/lib/node-esm/compute-runtime-URROOC34.mjs +0 -114
  305. package/dist/lib/node-esm/compute-runtime-URROOC34.mjs.map +0 -7
  306. package/dist/lib/node-esm/hooks/index.mjs +0 -14
  307. package/dist/lib/node-esm/index.mjs +0 -131
  308. package/dist/lib/node-esm/index.mjs.map +0 -7
  309. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs +0 -78
  310. package/dist/lib/node-esm/intent-resolver-KDRYB5BC.mjs.map +0 -7
  311. package/dist/lib/node-esm/meta.json +0 -1
  312. package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs +0 -65
  313. package/dist/lib/node-esm/react-surface-NNHYNBO6.mjs.map +0 -7
  314. package/dist/lib/node-esm/types/index.mjs +0 -9
  315. package/dist/types/src/capabilities/capabilities.d.ts +0 -20
  316. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  318. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  320. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  321. package/dist/types/src/components/AutomationSettings.d.ts +0 -5
  322. package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
  323. package/dist/types/src/components/FunctionsContainer.d.ts +0 -7
  324. package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
  325. package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
  326. package/dist/types/src/events.d.ts +0 -4
  327. package/dist/types/src/events.d.ts.map +0 -1
  328. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +0 -12
  329. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +0 -1
  330. package/src/capabilities/capabilities.ts +0 -41
  331. package/src/capabilities/compute-runtime.ts +0 -127
  332. package/src/capabilities/intent-resolver.ts +0 -72
  333. package/src/components/AutomationSettings.tsx +0 -30
  334. package/src/components/FunctionsContainer.tsx +0 -36
  335. package/src/components/TriggerSettings.tsx +0 -25
  336. package/src/events.ts +0 -11
  337. package/src/hooks/useComputeRuntimeCallback.ts +0 -68
  338. /package/dist/lib/{browser/AutomationPanel-7OECLR5N.mjs.map → neutral/AutomationPanel-OS3ZWYJK.mjs.map} +0 -0
  339. /package/dist/lib/{browser/FunctionsPanel-CRW6SJUN.mjs.map → neutral/AutomationPlugin.mjs.map} +0 -0
  340. /package/dist/lib/{browser/hooks/index.mjs.map → neutral/TriggerSettings-XCHIZPOR.mjs.map} +0 -0
  341. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  342. /package/dist/lib/{node-esm/hooks → neutral/components}/index.mjs.map +0 -0
  343. /package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
  344. /package/dist/lib/{node-esm/AutomationPanel-HCVFNHGQ.mjs.map → neutral/index.mjs.map} +0 -0
  345. /package/dist/lib/{node-esm/FunctionsPanel-RVVCS6VH.mjs.map → neutral/meta.mjs.map} +0 -0
  346. /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
@@ -0,0 +1,279 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Command from '@effect/cli/Command';
6
+ import * as Options from '@effect/cli/Options';
7
+ import * as Prompt from '@effect/cli/Prompt';
8
+ import * as Console from 'effect/Console';
9
+ import * as Effect from 'effect/Effect';
10
+ import * as Match from 'effect/Match';
11
+ import * as Option from 'effect/Option';
12
+
13
+ import { CommandConfig } from '@dxos/cli-util';
14
+ import { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';
15
+ import { Common } from '@dxos/cli-util';
16
+ import { Operation, Trigger } from '@dxos/compute';
17
+ import { Database, Filter, JsonSchema, Obj, Query, Ref } from '@dxos/echo';
18
+ import { DXN, EchoURI } from '@dxos/keys';
19
+
20
+ import { Deep, Delay, Enabled, Input, TriggerId, Typename } from '../options';
21
+ import { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';
22
+
23
+ export const subscription = Command.make(
24
+ 'subscription',
25
+ {
26
+ spaceId: Common.spaceId.pipe(Options.optional),
27
+ id: TriggerId.pipe(Options.optional),
28
+ enabled: Enabled,
29
+ functionId: Common.functionId.pipe(Options.optional),
30
+ typename: Typename.pipe(Options.optional),
31
+ deep: Deep.pipe(Options.optional),
32
+ delay: Delay.pipe(Options.optional),
33
+ input: Input.pipe(Options.optional),
34
+ },
35
+ (options) =>
36
+ Effect.gen(function* () {
37
+ const { json } = yield* CommandConfig;
38
+
39
+ const triggerId = yield* Option.match(options.id, {
40
+ onNone: () => selectTrigger('subscription'),
41
+ onSome: (id) => Effect.succeed(id),
42
+ });
43
+ const dxn = EchoURI.make({ objectId: triggerId });
44
+ const trigger = yield* Database.resolve(Ref.fromURI(dxn), Trigger.Trigger);
45
+ if (trigger.spec?.kind !== 'subscription') {
46
+ return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));
47
+ }
48
+
49
+ const currentFn = yield* updateFunction(trigger, options.functionId);
50
+ yield* updateSpec(trigger, options.typename, options.deep, options.delay);
51
+ yield* updateInput(trigger, currentFn, options.input);
52
+ yield* updateEnabled(trigger, options.id, options.enabled);
53
+
54
+ if (json) {
55
+ yield* Console.log(JSON.stringify(trigger, null, 2));
56
+ } else {
57
+ yield* Console.log(print(yield* printTrigger(trigger)));
58
+ }
59
+
60
+ yield* flushAndSync({ indexes: true });
61
+ }),
62
+ ).pipe(
63
+ Command.withDescription('Update a subscription trigger.'),
64
+ Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),
65
+ Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),
66
+ );
67
+
68
+ /**
69
+ * Extracts the current typename from a subscription trigger's query AST.
70
+ */
71
+ const extractCurrentTypename = (spec: Trigger.SubscriptionSpec | undefined): Option.Option<string> => {
72
+ if (!spec?.query?.ast) {
73
+ return Option.none();
74
+ }
75
+ return Match.value(spec.query.ast).pipe(
76
+ Match.withReturnType<Option.Option<string>>(),
77
+ Match.when({ type: 'select' }, (q) =>
78
+ Match.value(q.filter).pipe(
79
+ Match.withReturnType<Option.Option<string>>(),
80
+ Match.when({ type: 'object' }, (f) =>
81
+ Option.fromNullable(f.typename).pipe(
82
+ Option.flatMap((dxn) => Option.fromNullable(DXN.isDXN(dxn) ? DXN.getName(dxn) : undefined)),
83
+ ),
84
+ ),
85
+ Match.orElse(() => Option.none()),
86
+ ),
87
+ ),
88
+ Match.orElse(() => Option.none()),
89
+ );
90
+ };
91
+
92
+ /**
93
+ * Handles updating the function for a trigger.
94
+ * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.
95
+ * @returns The current function (either original or newly assigned)
96
+ */
97
+ const updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {
98
+ let currentFn: Operation.PersistentOperation | undefined = trigger.function
99
+ ? yield* Database.load(trigger.function) as any
100
+ : undefined;
101
+ if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {
102
+ currentFn = undefined;
103
+ }
104
+ const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;
105
+ const shouldChangeFunction = yield* Option.match(functionIdOption, {
106
+ onNone: () =>
107
+ Prompt.confirm({
108
+ message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,
109
+ initial: false,
110
+ }).pipe(Prompt.run),
111
+ onSome: () => Effect.succeed(true),
112
+ });
113
+ if (shouldChangeFunction) {
114
+ const functionId = yield* Option.match(functionIdOption, {
115
+ onNone: () => selectFunction(),
116
+ onSome: (id) => Effect.succeed(id),
117
+ });
118
+ const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));
119
+ const foundFn = functions.find((fn) => fn.id === functionId);
120
+ if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {
121
+ return yield* Effect.fail(new Error(`Function not found: ${functionId}`));
122
+ }
123
+ Obj.update(trigger, (trigger) => {
124
+ trigger.function = Ref.make(foundFn);
125
+ });
126
+ currentFn = foundFn;
127
+ }
128
+
129
+ if (!currentFn) {
130
+ const functionId =
131
+ (trigger.function ? EchoURI.getObjectId(EchoURI.tryParse(trigger.function.uri)!) : undefined) ?? 'unknown';
132
+ return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));
133
+ }
134
+
135
+ return currentFn;
136
+ });
137
+
138
+ /**
139
+ * Handles updating the subscription trigger spec (typename, deep, delay).
140
+ * Prompts for confirmation if no spec options are provided, then updates the spec if confirmed.
141
+ */
142
+ const updateSpec = Effect.fn(function* (
143
+ trigger: Trigger.Trigger,
144
+ typenameOption: Option.Option<string>,
145
+ deepOption: Option.Option<boolean>,
146
+ delayOption: Option.Option<number>,
147
+ ) {
148
+ const currentSpec = trigger.spec?.kind === 'subscription' ? trigger.spec : undefined;
149
+ const currentTypename = extractCurrentTypename(currentSpec);
150
+ const currentTypenameStr = Option.getOrUndefined(currentTypename);
151
+ const currentDeep = currentSpec?.options?.deep;
152
+ const currentDelay = currentSpec?.options?.delay;
153
+ const specParts: string[] = [];
154
+ if (currentTypenameStr) {
155
+ specParts.push(`typename: ${currentTypenameStr}`);
156
+ }
157
+ if (currentDeep !== undefined) {
158
+ specParts.push(`deep: ${currentDeep}`);
159
+ }
160
+ if (currentDelay !== undefined) {
161
+ specParts.push(`delay: ${currentDelay}`);
162
+ }
163
+ const currentSpecStr = specParts.length > 0 ? specParts.join(', ') : 'none';
164
+
165
+ const hasSpecOption = Option.isSome(typenameOption) || Option.isSome(deepOption) || Option.isSome(delayOption);
166
+ const shouldChangeSpec = yield* hasSpecOption
167
+ ? Effect.succeed(true)
168
+ : Prompt.confirm({
169
+ message: `Change the trigger spec (current: ${currentSpecStr})?`,
170
+ initial: false,
171
+ }).pipe(Prompt.run);
172
+ if (shouldChangeSpec) {
173
+ const typename = yield* Option.match(typenameOption, {
174
+ onNone: () =>
175
+ Prompt.text({
176
+ message: `Enter type name${currentTypenameStr ? ` (current: ${currentTypenameStr})` : ''}:`,
177
+ }).pipe(Prompt.run),
178
+ onSome: (value) => Effect.succeed(value),
179
+ });
180
+ const queryAst = Query.select(Filter.type(typename)).ast;
181
+
182
+ const deepOptionValue = yield* Option.match(deepOption, {
183
+ onNone: () =>
184
+ Prompt.confirm({
185
+ message: 'Watch changes to nested properties (deep)?',
186
+ initial: currentSpec?.options?.deep ?? false,
187
+ }).pipe(
188
+ Prompt.run,
189
+ Effect.map((value) => (value ? Option.some(value) : Option.none())),
190
+ ),
191
+ onSome: () => Effect.succeed(Option.some(true)),
192
+ });
193
+
194
+ const delayOptionValue = yield* Option.match(delayOption, {
195
+ onNone: () =>
196
+ Effect.gen(function* () {
197
+ const currentDelay = currentSpec?.options?.delay;
198
+ const delayStr = yield* Prompt.text({
199
+ message: `Debounce delay in milliseconds (optional, press Enter to skip)${currentDelay ? ` (current: ${currentDelay})` : ''}:`,
200
+ }).pipe(Prompt.run);
201
+ return delayStr === '' ? Option.none<number>() : Option.some(parseInt(delayStr, 10));
202
+ }),
203
+ onSome: (value) => Effect.succeed(Option.some(value)),
204
+ });
205
+
206
+ const subscriptionOptions: { deep?: boolean; delay?: number } = {};
207
+ if (Option.isSome(deepOptionValue)) {
208
+ subscriptionOptions.deep = deepOptionValue.value;
209
+ }
210
+ if (Option.isSome(delayOptionValue)) {
211
+ subscriptionOptions.delay = delayOptionValue.value;
212
+ }
213
+
214
+ Obj.update(trigger, (trigger) => {
215
+ const spec = trigger.spec;
216
+ if (spec?.kind === 'subscription') {
217
+ // Cast needed because QueryAST types are deeply readonly but spec.query expects mutable.
218
+ spec.query = { ast: queryAst } as NonNullable<typeof spec.query>;
219
+ spec.options = Object.keys(subscriptionOptions).length > 0 ? subscriptionOptions : undefined;
220
+ }
221
+ });
222
+ }
223
+ });
224
+
225
+ /**
226
+ * Handles updating the input for a trigger.
227
+ * Prompts for confirmation if input is not provided, then updates the input if confirmed.
228
+ */
229
+ const updateInput = Effect.fn(function* (
230
+ trigger: Trigger.Trigger,
231
+ fn: Operation.PersistentOperation,
232
+ inputOption: Option.Option<Record<string, any>>,
233
+ ) {
234
+ const currentInput = trigger.input as Record<string, any> | undefined;
235
+ const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';
236
+ const shouldChangeInput = yield* Option.match(inputOption, {
237
+ onNone: () =>
238
+ Effect.gen(function* () {
239
+ yield* Console.log(`Current input: ${currentInputStr}`);
240
+ return yield* Prompt.confirm({
241
+ message: 'Change input?',
242
+ initial: false,
243
+ }).pipe(Prompt.run);
244
+ }),
245
+ onSome: () => Effect.succeed(true),
246
+ });
247
+ if (shouldChangeInput) {
248
+ const inputObj = yield* Option.match(inputOption, {
249
+ onNone: () =>
250
+ promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),
251
+ onSome: (value) => Effect.succeed(value as Record<string, any>),
252
+ });
253
+ Obj.update(trigger, (trigger) => {
254
+ trigger.input = inputObj;
255
+ });
256
+ }
257
+ });
258
+
259
+ /**
260
+ * Handles updating the enabled status for a trigger.
261
+ * Prompts for enabled if id is not provided.
262
+ */
263
+ const updateEnabled = Effect.fn(function* (
264
+ trigger: Trigger.Trigger,
265
+ idOption: Option.Option<string>,
266
+ enabled: boolean,
267
+ ) {
268
+ const enabledValue = yield* Option.match(idOption, {
269
+ onNone: () =>
270
+ Prompt.confirm({
271
+ message: 'Enable the trigger?',
272
+ initial: trigger.enabled,
273
+ }).pipe(Prompt.run),
274
+ onSome: () => Effect.succeed(enabled),
275
+ });
276
+ Obj.update(trigger, (trigger) => {
277
+ trigger.enabled = enabledValue;
278
+ });
279
+ });
@@ -0,0 +1,195 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Command from '@effect/cli/Command';
6
+ import * as Options from '@effect/cli/Options';
7
+ import * as Prompt from '@effect/cli/Prompt';
8
+ import * as Console from 'effect/Console';
9
+ import * as Effect from 'effect/Effect';
10
+ import * as Option from 'effect/Option';
11
+
12
+ import { CommandConfig } from '@dxos/cli-util';
13
+ import { flushAndSync, print, spaceLayer, withTypes } from '@dxos/cli-util';
14
+ import { Common } from '@dxos/cli-util';
15
+ import { Operation, Trigger } from '@dxos/compute';
16
+ import { Database, Filter, JsonSchema, Obj, Ref } from '@dxos/echo';
17
+ import { EchoURI } from '@dxos/keys';
18
+
19
+ import { Cron, Enabled, Input, TriggerId } from '../options';
20
+ import { printTrigger, promptForSchemaInput, selectFunction, selectTrigger } from '../util';
21
+
22
+ export const timer = Command.make(
23
+ 'timer',
24
+ {
25
+ spaceId: Common.spaceId.pipe(Options.optional),
26
+ id: TriggerId.pipe(Options.optional),
27
+ enabled: Enabled,
28
+ functionId: Common.functionId.pipe(Options.optional),
29
+ cron: Cron.pipe(Options.optional),
30
+ input: Input.pipe(Options.optional),
31
+ },
32
+ (options) =>
33
+ Effect.gen(function* () {
34
+ const { json } = yield* CommandConfig;
35
+
36
+ const triggerId = yield* Option.match(options.id, {
37
+ onNone: () => selectTrigger('timer'),
38
+ onSome: (id) => Effect.succeed(id),
39
+ });
40
+ const dxn = EchoURI.make({ objectId: triggerId });
41
+ const trigger = yield* Database.resolve(Ref.fromURI(dxn), Trigger.Trigger);
42
+ if (!trigger.spec || trigger.spec?.kind !== 'timer') {
43
+ return yield* Effect.fail(new Error(`Invalid trigger type: ${trigger.spec?.kind}`));
44
+ }
45
+
46
+ const currentFn = yield* updateFunction(trigger, options.functionId);
47
+ yield* updateCron(trigger, options.cron);
48
+ yield* updateInput(trigger, currentFn, options.input);
49
+ yield* updateEnabled(trigger, options.id, options.enabled);
50
+
51
+ if (json) {
52
+ yield* Console.log(JSON.stringify(trigger, null, 2));
53
+ } else {
54
+ yield* Console.log(print(yield* printTrigger(trigger)));
55
+ }
56
+
57
+ yield* flushAndSync({ indexes: true });
58
+ }),
59
+ ).pipe(
60
+ Command.withDescription('Update a timer trigger.'),
61
+ Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),
62
+ Command.provideEffectDiscard(() => withTypes(Operation.PersistentOperation, Trigger.Trigger)),
63
+ );
64
+
65
+ /**
66
+ * Handles updating the function for a trigger.
67
+ * Prompts for confirmation if functionId is not provided, then updates the function if confirmed.
68
+ * @returns The current function (either original or newly assigned)
69
+ */
70
+ const updateFunction = Effect.fn(function* (trigger: Trigger.Trigger, functionIdOption: Option.Option<string>) {
71
+ let currentFn: Operation.PersistentOperation | undefined = trigger.function
72
+ ? yield* Database.load(trigger.function) as any
73
+ : undefined;
74
+ if (currentFn && !Obj.instanceOf(Operation.PersistentOperation, currentFn)) {
75
+ currentFn = undefined;
76
+ }
77
+ const currentFunctionName = currentFn ? (currentFn.name ?? currentFn.id) : undefined;
78
+ const shouldChangeFunction = yield* Option.match(functionIdOption, {
79
+ onNone: () =>
80
+ Prompt.confirm({
81
+ message: `Change the function${currentFunctionName ? ` (current: ${currentFunctionName})` : ''}?`,
82
+ initial: false,
83
+ }).pipe(Prompt.run),
84
+ onSome: () => Effect.succeed(true),
85
+ });
86
+ if (shouldChangeFunction) {
87
+ const functionId = yield* Option.match(functionIdOption, {
88
+ onNone: () => selectFunction(),
89
+ onSome: (id) => Effect.succeed(id),
90
+ });
91
+ const functions = yield* Database.runQuery(Filter.type(Operation.PersistentOperation));
92
+ const foundFn = functions.find((fn) => fn.id === functionId);
93
+ if (!foundFn || !Obj.instanceOf(Operation.PersistentOperation, foundFn)) {
94
+ return yield* Effect.fail(new Error(`Function not found: ${functionId}`));
95
+ }
96
+ Obj.update(trigger, (trigger) => {
97
+ trigger.function = Ref.make(foundFn);
98
+ });
99
+ currentFn = foundFn;
100
+ }
101
+
102
+ if (!currentFn) {
103
+ const functionId =
104
+ (trigger.function ? EchoURI.getObjectId(EchoURI.tryParse(trigger.function.uri)!) : undefined) ?? 'unknown';
105
+ return yield* Effect.fail(new Error(`Invalid reference for ${functionId}`));
106
+ }
107
+
108
+ return currentFn;
109
+ });
110
+
111
+ /**
112
+ * Handles updating the cron expression for a timer trigger.
113
+ * Prompts for confirmation if cron is not provided, then updates the cron if confirmed.
114
+ */
115
+ const updateCron = Effect.fn(function* (trigger: Trigger.Trigger, cronOption: Option.Option<string>) {
116
+ const currentCron = trigger.spec?.kind === 'timer' ? trigger.spec.cron : undefined;
117
+ const shouldChangeCron = yield* Option.match(cronOption, {
118
+ onNone: () =>
119
+ Prompt.confirm({
120
+ message: `Change the cron expression${currentCron ? ` (current: ${currentCron})` : ''}?`,
121
+ initial: false,
122
+ }).pipe(Prompt.run),
123
+ onSome: () => Effect.succeed(true),
124
+ });
125
+ if (shouldChangeCron) {
126
+ const cron = yield* Option.match(cronOption, {
127
+ onNone: () =>
128
+ Prompt.text({
129
+ message: `Enter cron expression${currentCron ? ` (current: ${currentCron})` : ''}:`,
130
+ }).pipe(Prompt.run),
131
+ onSome: (value) => Effect.succeed(value),
132
+ });
133
+ Obj.update(trigger, (trigger) => {
134
+ if (trigger.spec?.kind === 'timer') {
135
+ trigger.spec.cron = cron;
136
+ }
137
+ });
138
+ }
139
+ });
140
+
141
+ /**
142
+ * Handles updating the input for a trigger.
143
+ * Prompts for confirmation if input is not provided, then updates the input if confirmed.
144
+ */
145
+ const updateInput = Effect.fn(function* (
146
+ trigger: Trigger.Trigger,
147
+ fn: Operation.PersistentOperation,
148
+ inputOption: Option.Option<Record<string, any>>,
149
+ ) {
150
+ const currentInput = trigger.input as Record<string, any> | undefined;
151
+ const currentInputStr = currentInput ? JSON.stringify(currentInput) : 'none';
152
+ const shouldChangeInput = yield* Option.match(inputOption, {
153
+ onNone: () =>
154
+ Effect.gen(function* () {
155
+ yield* Console.log(`Current input: ${currentInputStr}`);
156
+ return yield* Prompt.confirm({
157
+ message: 'Change input?',
158
+ initial: false,
159
+ }).pipe(Prompt.run);
160
+ }),
161
+ onSome: () => Effect.succeed(true),
162
+ });
163
+ if (shouldChangeInput) {
164
+ const inputObj = yield* Option.match(inputOption, {
165
+ onNone: () =>
166
+ promptForSchemaInput(fn.inputSchema ? JsonSchema.toEffectSchema(fn.inputSchema) : undefined, currentInput),
167
+ onSome: (value) => Effect.succeed(value as Record<string, any>),
168
+ });
169
+ Obj.update(trigger, (trigger) => {
170
+ trigger.input = inputObj;
171
+ });
172
+ }
173
+ });
174
+
175
+ /**
176
+ * Handles updating the enabled status for a trigger.
177
+ * Prompts for enabled if id is not provided.
178
+ */
179
+ const updateEnabled = Effect.fn(function* (
180
+ trigger: Trigger.Trigger,
181
+ idOption: Option.Option<string>,
182
+ enabled: boolean,
183
+ ) {
184
+ const enabledValue = yield* Option.match(idOption, {
185
+ onNone: () =>
186
+ Prompt.confirm({
187
+ message: 'Enable the trigger?',
188
+ initial: trigger.enabled,
189
+ }).pipe(Prompt.run),
190
+ onSome: () => Effect.succeed(enabled),
191
+ });
192
+ Obj.update(trigger, (trigger) => {
193
+ trigger.enabled = enabledValue;
194
+ });
195
+ });