@dxos/plugin-automation 0.8.4-main.406dc2a → 0.8.4-main.52d7546f51

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 (293) hide show
  1. package/dist/lib/browser/AutomationPanel-C6MZ22CB.mjs +11 -0
  2. package/dist/lib/browser/AutomationSettings-D7UO5V3Q.mjs +57 -0
  3. package/dist/lib/browser/AutomationSettings-D7UO5V3Q.mjs.map +7 -0
  4. package/dist/lib/browser/FunctionsContainer-5NHAAP5H.mjs +125 -0
  5. package/dist/lib/browser/FunctionsContainer-5NHAAP5H.mjs.map +7 -0
  6. package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs → FunctionsPanel-RD22LYMR.mjs} +3 -3
  7. package/dist/lib/browser/app-graph-builder-HLARI3VW.mjs +85 -0
  8. package/dist/lib/browser/app-graph-builder-HLARI3VW.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-C273ZYLE.mjs +258 -0
  10. package/dist/lib/browser/chunk-C273ZYLE.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-DK7BLEKU.mjs → chunk-JFBUK3WR.mjs} +5 -5
  12. package/dist/lib/browser/chunk-JN7QRQQX.mjs +256 -0
  13. package/dist/lib/browser/chunk-JN7QRQQX.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-JOXPQ27I.mjs +83 -0
  15. package/dist/lib/browser/chunk-JOXPQ27I.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-O5Y2F33G.mjs +8 -0
  17. package/dist/lib/browser/chunk-O5Y2F33G.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-P5AEO35Y.mjs +93 -0
  19. package/dist/lib/browser/chunk-P5AEO35Y.mjs.map +7 -0
  20. package/dist/lib/browser/chunk-PZNBEKO5.mjs +17 -0
  21. package/dist/lib/browser/chunk-PZNBEKO5.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-QNEQ23BF.mjs +98 -0
  23. package/dist/lib/browser/chunk-QNEQ23BF.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +1108 -0
  25. package/dist/lib/browser/cli/index.mjs.map +7 -0
  26. package/dist/lib/browser/compute-runtime-BUBHYS4Y.mjs +119 -0
  27. package/dist/lib/browser/compute-runtime-BUBHYS4Y.mjs.map +7 -0
  28. package/dist/lib/browser/hooks/index.mjs +5 -4
  29. package/dist/lib/browser/index.mjs +61 -59
  30. package/dist/lib/browser/index.mjs.map +4 -4
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/operation-resolver-IN2FRGOT.mjs +83 -0
  33. package/dist/lib/browser/operation-resolver-IN2FRGOT.mjs.map +7 -0
  34. package/dist/lib/browser/{react-surface-G7CG7BML.mjs → react-surface-246NXXJR.mjs} +14 -11
  35. package/dist/lib/browser/react-surface-246NXXJR.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +10 -4
  37. package/dist/lib/node-esm/{AutomationPanel-EETYIR35.mjs → AutomationPanel-RTBY7YFM.mjs} +4 -4
  38. package/dist/lib/node-esm/AutomationSettings-GK4RLSDN.mjs +58 -0
  39. package/dist/lib/node-esm/AutomationSettings-GK4RLSDN.mjs.map +7 -0
  40. package/dist/lib/node-esm/FunctionsContainer-AHHZODM5.mjs +126 -0
  41. package/dist/lib/node-esm/FunctionsContainer-AHHZODM5.mjs.map +7 -0
  42. package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs → FunctionsPanel-V2DKWYMU.mjs} +3 -3
  43. package/dist/lib/node-esm/app-graph-builder-Z2TMQHVX.mjs +86 -0
  44. package/dist/lib/node-esm/app-graph-builder-Z2TMQHVX.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-5MQJPJR2.mjs → chunk-5FXNN3MV.mjs} +6 -2
  46. package/dist/lib/node-esm/chunk-5FXNN3MV.mjs.map +7 -0
  47. package/dist/lib/node-esm/chunk-AENSLAVD.mjs +99 -0
  48. package/dist/lib/node-esm/chunk-AENSLAVD.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-EJPZWAGR.mjs +257 -0
  50. package/dist/lib/node-esm/chunk-EJPZWAGR.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-B7N3H45O.mjs → chunk-K5Z4UGIO.mjs} +5 -5
  52. package/dist/lib/node-esm/chunk-M3UPTGXF.mjs +10 -0
  53. package/dist/lib/node-esm/chunk-M3UPTGXF.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-OJEFRZEV.mjs +259 -0
  55. package/dist/lib/node-esm/chunk-OJEFRZEV.mjs.map +7 -0
  56. package/dist/lib/node-esm/chunk-Q7EMIPMW.mjs +94 -0
  57. package/dist/lib/node-esm/chunk-Q7EMIPMW.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-RX52VKI2.mjs +84 -0
  59. package/dist/lib/node-esm/chunk-RX52VKI2.mjs.map +7 -0
  60. package/dist/lib/node-esm/cli/index.mjs +1109 -0
  61. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  62. package/dist/lib/node-esm/compute-runtime-6UEDBN76.mjs +120 -0
  63. package/dist/lib/node-esm/compute-runtime-6UEDBN76.mjs.map +7 -0
  64. package/dist/lib/node-esm/hooks/index.mjs +5 -4
  65. package/dist/lib/node-esm/index.mjs +61 -59
  66. package/dist/lib/node-esm/index.mjs.map +4 -4
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/operation-resolver-67CEAKXP.mjs +84 -0
  69. package/dist/lib/node-esm/operation-resolver-67CEAKXP.mjs.map +7 -0
  70. package/dist/lib/node-esm/{react-surface-OMZSBDHS.mjs → react-surface-U6762KPI.mjs} +14 -11
  71. package/dist/lib/node-esm/react-surface-U6762KPI.mjs.map +7 -0
  72. package/dist/lib/node-esm/types/index.mjs +10 -4
  73. package/dist/types/src/AutomationPlugin.d.ts +2 -1
  74. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  76. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  77. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  78. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  79. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts +6 -0
  80. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/compute-runtime/index.d.ts +3 -0
  82. package/dist/types/src/capabilities/compute-runtime/index.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/index.d.ts +4 -5
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  86. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  88. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  90. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  92. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  93. package/dist/types/src/cli/commands/index.d.ts +2 -0
  94. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  95. package/dist/types/src/cli/commands/trigger/create/index.d.ts +25 -0
  96. package/dist/types/src/cli/commands/trigger/create/index.d.ts.map +1 -0
  97. package/dist/types/src/cli/commands/trigger/create/queue.d.ts +13 -0
  98. package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +1 -0
  99. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts +15 -0
  100. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +1 -0
  101. package/dist/types/src/cli/commands/trigger/create/timer.d.ts +13 -0
  102. package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +1 -0
  103. package/dist/types/src/cli/commands/trigger/index.d.ts +57 -0
  104. package/dist/types/src/cli/commands/trigger/index.d.ts.map +1 -0
  105. package/dist/types/src/cli/commands/trigger/list.d.ts +7 -0
  106. package/dist/types/src/cli/commands/trigger/list.d.ts.map +1 -0
  107. package/dist/types/src/cli/commands/trigger/options.d.ts +11 -0
  108. package/dist/types/src/cli/commands/trigger/options.d.ts.map +1 -0
  109. package/dist/types/src/cli/commands/trigger/remove.d.ts +8 -0
  110. package/dist/types/src/cli/commands/trigger/remove.d.ts.map +1 -0
  111. package/dist/types/src/cli/commands/trigger/update/index.d.ts +28 -0
  112. package/dist/types/src/cli/commands/trigger/update/index.d.ts.map +1 -0
  113. package/dist/types/src/cli/commands/trigger/update/queue.d.ts +12 -0
  114. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -0
  115. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts +13 -0
  116. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +1 -0
  117. package/dist/types/src/cli/commands/trigger/update/timer.d.ts +11 -0
  118. package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +1 -0
  119. package/dist/types/src/cli/commands/trigger/util.d.ts +46 -0
  120. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -0
  121. package/dist/types/src/cli/index.d.ts +2 -0
  122. package/dist/types/src/cli/index.d.ts.map +1 -0
  123. package/dist/types/src/cli/plugin.d.ts +3 -0
  124. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  125. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +6 -7
  126. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  127. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +4 -0
  128. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/FunctionsContainer.d.ts.map +1 -1
  130. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  131. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts +8 -0
  132. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -0
  133. package/dist/types/src/components/FunctionsRegistry/index.d.ts +2 -0
  134. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -0
  135. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +12 -9
  136. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  137. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts +6 -3
  138. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  139. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +9 -8
  140. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  141. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +72 -2
  142. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/TriggerSettings.d.ts +3 -3
  144. package/dist/types/src/components/TriggerSettings.d.ts.map +1 -1
  145. package/dist/types/src/components/index.d.ts +1 -1
  146. package/dist/types/src/components/index.d.ts.map +1 -1
  147. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +8 -4
  148. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +6 -5
  150. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  151. package/dist/types/src/index.d.ts +2 -2
  152. package/dist/types/src/index.d.ts.map +1 -1
  153. package/dist/types/src/meta.d.ts +2 -2
  154. package/dist/types/src/meta.d.ts.map +1 -1
  155. package/dist/types/src/testing/test-functions.d.ts +202 -3
  156. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  157. package/dist/types/src/translations.d.ts +4 -0
  158. package/dist/types/src/translations.d.ts.map +1 -1
  159. package/dist/types/src/types/capabilities.d.ts +22 -0
  160. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  161. package/dist/types/src/types/events.d.ts +5 -0
  162. package/dist/types/src/types/events.d.ts.map +1 -0
  163. package/dist/types/src/types/index.d.ts +2 -0
  164. package/dist/types/src/types/index.d.ts.map +1 -1
  165. package/dist/types/src/types/schema.d.ts +30 -1
  166. package/dist/types/src/types/schema.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +64 -47
  169. package/src/AutomationPlugin.tsx +15 -34
  170. package/src/capabilities/app-graph-builder/app-graph-builder.ts +72 -0
  171. package/src/capabilities/app-graph-builder/index.ts +7 -0
  172. package/src/capabilities/compute-runtime/compute-runtime.ts +140 -0
  173. package/src/capabilities/compute-runtime/index.ts +7 -0
  174. package/src/capabilities/index.ts +4 -8
  175. package/src/capabilities/operation-resolver/index.ts +7 -0
  176. package/src/capabilities/operation-resolver/operation-resolver.ts +80 -0
  177. package/src/capabilities/react-surface/index.ts +7 -0
  178. package/src/capabilities/react-surface/react-surface.tsx +61 -0
  179. package/src/cli/commands/index.ts +5 -0
  180. package/src/cli/commands/trigger/create/index.ts +14 -0
  181. package/src/cli/commands/trigger/create/queue.ts +89 -0
  182. package/src/cli/commands/trigger/create/subscription.ts +128 -0
  183. package/src/cli/commands/trigger/create/timer.ts +93 -0
  184. package/src/cli/commands/trigger/index.ts +16 -0
  185. package/src/cli/commands/trigger/list.ts +67 -0
  186. package/src/cli/commands/trigger/options.ts +59 -0
  187. package/src/cli/commands/trigger/remove.ts +45 -0
  188. package/src/cli/commands/trigger/update/index.ts +14 -0
  189. package/src/cli/commands/trigger/update/queue.ts +195 -0
  190. package/src/cli/commands/trigger/update/subscription.ts +278 -0
  191. package/src/cli/commands/trigger/update/timer.ts +193 -0
  192. package/src/cli/commands/trigger/util.ts +395 -0
  193. package/src/cli/index.ts +5 -0
  194. package/src/cli/plugin.ts +24 -0
  195. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +5 -6
  196. package/src/components/AutomationPanel/AutomationPanel.tsx +182 -87
  197. package/src/components/AutomationSettings.tsx +6 -6
  198. package/src/components/FunctionsContainer.tsx +12 -5
  199. package/src/components/FunctionsPanel/FunctionsPanel.tsx +38 -23
  200. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +110 -0
  201. package/src/components/FunctionsRegistry/index.ts +5 -0
  202. package/src/components/TriggerEditor/FunctionInputEditor.tsx +33 -32
  203. package/src/components/TriggerEditor/SpecSelector.tsx +11 -9
  204. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +39 -35
  205. package/src/components/TriggerEditor/TriggerEditor.tsx +61 -48
  206. package/src/components/TriggerSettings.tsx +7 -6
  207. package/src/hooks/useComputeRuntimeCallback.ts +45 -8
  208. package/src/hooks/useTriggerRuntimeControls.ts +30 -15
  209. package/src/index.ts +2 -2
  210. package/src/meta.ts +7 -4
  211. package/src/testing/test-functions.ts +2 -2
  212. package/src/translations.ts +5 -0
  213. package/src/{capabilities → types}/capabilities.ts +8 -14
  214. package/src/types/events.ts +11 -0
  215. package/src/types/index.ts +2 -0
  216. package/src/types/schema.ts +23 -2
  217. package/dist/lib/browser/AutomationPanel-3PHA5FTJ.mjs +0 -11
  218. package/dist/lib/browser/AutomationSettings-3EYSPFKB.mjs +0 -69
  219. package/dist/lib/browser/AutomationSettings-3EYSPFKB.mjs.map +0 -7
  220. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs +0 -36
  221. package/dist/lib/browser/FunctionsContainer-HHBMPUOD.mjs.map +0 -7
  222. package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs +0 -81
  223. package/dist/lib/browser/app-graph-builder-DV5HMFX4.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-5ARH77PV.mjs +0 -15
  225. package/dist/lib/browser/chunk-5ARH77PV.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-6TUZQIEN.mjs +0 -14
  227. package/dist/lib/browser/chunk-6TUZQIEN.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-DLLE4FKP.mjs +0 -94
  229. package/dist/lib/browser/chunk-DLLE4FKP.mjs.map +0 -7
  230. package/dist/lib/browser/chunk-MVPRI3DB.mjs +0 -53
  231. package/dist/lib/browser/chunk-MVPRI3DB.mjs.map +0 -7
  232. package/dist/lib/browser/chunk-SUKAEYF3.mjs +0 -267
  233. package/dist/lib/browser/chunk-SUKAEYF3.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-VGBZKM3O.mjs +0 -38
  235. package/dist/lib/browser/chunk-VGBZKM3O.mjs.map +0 -7
  236. package/dist/lib/browser/chunk-VL3KSDVL.mjs +0 -183
  237. package/dist/lib/browser/chunk-VL3KSDVL.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-WWURMV25.mjs +0 -13
  239. package/dist/lib/browser/chunk-WWURMV25.mjs.map +0 -7
  240. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs +0 -160
  241. package/dist/lib/browser/compute-runtime-YJREH6WP.mjs.map +0 -7
  242. package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs +0 -77
  243. package/dist/lib/browser/intent-resolver-D2OHKQRR.mjs.map +0 -7
  244. package/dist/lib/browser/react-surface-G7CG7BML.mjs.map +0 -7
  245. package/dist/lib/node-esm/AutomationSettings-WKSMWITV.mjs +0 -70
  246. package/dist/lib/node-esm/AutomationSettings-WKSMWITV.mjs.map +0 -7
  247. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs +0 -37
  248. package/dist/lib/node-esm/FunctionsContainer-ZKVOBUHV.mjs.map +0 -7
  249. package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs +0 -82
  250. package/dist/lib/node-esm/app-graph-builder-TR2WXPX2.mjs.map +0 -7
  251. package/dist/lib/node-esm/chunk-2EWXIFEK.mjs +0 -16
  252. package/dist/lib/node-esm/chunk-2EWXIFEK.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-5MQJPJR2.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-AKHETVIQ.mjs +0 -184
  255. package/dist/lib/node-esm/chunk-AKHETVIQ.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-CJUI6AKX.mjs +0 -39
  257. package/dist/lib/node-esm/chunk-CJUI6AKX.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-J3XEBEIE.mjs +0 -268
  259. package/dist/lib/node-esm/chunk-J3XEBEIE.mjs.map +0 -7
  260. package/dist/lib/node-esm/chunk-QCA543ZR.mjs +0 -54
  261. package/dist/lib/node-esm/chunk-QCA543ZR.mjs.map +0 -7
  262. package/dist/lib/node-esm/chunk-WHCSOUNN.mjs +0 -16
  263. package/dist/lib/node-esm/chunk-WHCSOUNN.mjs.map +0 -7
  264. package/dist/lib/node-esm/chunk-YQXW3JXD.mjs +0 -95
  265. package/dist/lib/node-esm/chunk-YQXW3JXD.mjs.map +0 -7
  266. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs +0 -161
  267. package/dist/lib/node-esm/compute-runtime-CMEPAYND.mjs.map +0 -7
  268. package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs +0 -78
  269. package/dist/lib/node-esm/intent-resolver-2LGBVXT5.mjs.map +0 -7
  270. package/dist/lib/node-esm/react-surface-OMZSBDHS.mjs.map +0 -7
  271. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  272. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  273. package/dist/types/src/capabilities/capabilities.d.ts +0 -19
  274. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  275. package/dist/types/src/capabilities/compute-runtime.d.ts +0 -5
  276. package/dist/types/src/capabilities/compute-runtime.d.ts.map +0 -1
  277. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  278. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  279. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  280. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  281. package/dist/types/src/events.d.ts +0 -4
  282. package/dist/types/src/events.d.ts.map +0 -1
  283. package/src/capabilities/app-graph-builder.ts +0 -87
  284. package/src/capabilities/compute-runtime.ts +0 -138
  285. package/src/capabilities/intent-resolver.ts +0 -72
  286. package/src/capabilities/react-surface.tsx +0 -55
  287. package/src/events.ts +0 -11
  288. /package/dist/lib/browser/{AutomationPanel-3PHA5FTJ.mjs.map → AutomationPanel-C6MZ22CB.mjs.map} +0 -0
  289. /package/dist/lib/browser/{FunctionsPanel-NRIKAPQV.mjs.map → FunctionsPanel-RD22LYMR.mjs.map} +0 -0
  290. /package/dist/lib/browser/{chunk-DK7BLEKU.mjs.map → chunk-JFBUK3WR.mjs.map} +0 -0
  291. /package/dist/lib/node-esm/{AutomationPanel-EETYIR35.mjs.map → AutomationPanel-RTBY7YFM.mjs.map} +0 -0
  292. /package/dist/lib/node-esm/{FunctionsPanel-SAMRTELO.mjs.map → FunctionsPanel-V2DKWYMU.mjs.map} +0 -0
  293. /package/dist/lib/node-esm/{chunk-B7N3H45O.mjs.map → chunk-K5Z4UGIO.mjs.map} +0 -0
@@ -0,0 +1,110 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+ import { useState } from 'react';
7
+ import React, { useCallback } from 'react';
8
+
9
+ import { Function } from '@dxos/functions';
10
+ import { getDeployedFunctions } from '@dxos/functions-runtime/edge';
11
+ import { useClient } from '@dxos/react-client';
12
+ import { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';
13
+ import { IconButton, useAsyncEffect, useTranslation } from '@dxos/react-ui';
14
+ import { Settings } from '@dxos/react-ui-form';
15
+ import { List } from '@dxos/react-ui-list';
16
+ import { ghostHover, mx } from '@dxos/ui-theme';
17
+
18
+ import { meta } from '../../meta';
19
+
20
+ const grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]';
21
+
22
+ type FunctionsRegistryProps = {
23
+ space: Space;
24
+ };
25
+
26
+ export const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {
27
+ const client = useClient();
28
+ const [loading, setLoading] = useState(true);
29
+ const [functions, setFunctions] = useState<Function.Function[]>([]);
30
+ const { t } = useTranslation(meta.id);
31
+
32
+ const dbFunctions = useQuery(space.db, Filter.type(Function.Function));
33
+
34
+ const state = (func: Function.Function) => {
35
+ const dbFunction = dbFunctions.find((f) => f.key === func.key);
36
+ if (!dbFunction) {
37
+ return 'import';
38
+ }
39
+ if (dbFunction.version === func.version && dbFunction.updated === func.updated) {
40
+ return 'none';
41
+ }
42
+ return 'update';
43
+ };
44
+
45
+ useAsyncEffect(async () => {
46
+ setLoading(true);
47
+ const functions = await getDeployedFunctions(client, true);
48
+ setFunctions(functions);
49
+ setLoading(false);
50
+ }, []);
51
+
52
+ const hanleImportOrUpdate = useCallback(
53
+ async (func: Function.Function) => {
54
+ const functions = await space.db.query(Query.type(Function.Function, { key: func.key })).run();
55
+ const [existingFunc] = functions;
56
+ if (!existingFunc) {
57
+ space.db.add(func);
58
+ return;
59
+ }
60
+ Function.setFrom(existingFunc, func);
61
+ },
62
+ [space],
63
+ );
64
+
65
+ return (
66
+ <Settings.Container>
67
+ {functions.length > 0 && (
68
+ <List.Root<Function.Function> items={functions} isItem={Schema.is(Function.Function)} getId={(func) => func.id}>
69
+ {({ items }) => (
70
+ <div role='list' className='flex flex-col is-full'>
71
+ {items?.map((func) => (
72
+ <List.Item<Function.Function>
73
+ key={func.id}
74
+ item={func}
75
+ classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[3rem]')}
76
+ >
77
+ <div className='flex flex-col truncate'>
78
+ <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>
79
+ <div className='text-xs text-description truncate'>{func.key}</div>
80
+ </div>
81
+ <div className='flex flex-col truncate'>
82
+ <div className='text-xs text-description truncate'>{func.version}</div>
83
+ <div className='text-xs text-description truncate'>
84
+ {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}
85
+ </div>
86
+ </div>
87
+
88
+ <IconButton
89
+ iconOnly
90
+ icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}
91
+ label={
92
+ state(func) === 'update' ? t('update function button label') : t('import function button label')
93
+ }
94
+ disabled={state(func) === 'none'}
95
+ onClick={() => hanleImportOrUpdate(func)}
96
+ />
97
+ </List.Item>
98
+ ))}
99
+ </div>
100
+ )}
101
+ </List.Root>
102
+ )}
103
+
104
+ {functions.length === 0 && !loading && (
105
+ <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>
106
+ )}
107
+ {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}
108
+ </Settings.Container>
109
+ );
110
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export { FunctionsRegistry } from './FunctionsRegistry';
@@ -2,29 +2,26 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import type * as SchemaAST from 'effect/SchemaAST';
5
6
  import React, { useCallback, useMemo } from 'react';
6
7
 
7
- import { Ref, Type } from '@dxos/echo';
8
+ import { type Database, Obj, Ref, Type } from '@dxos/echo';
8
9
  import { type JsonPath } from '@dxos/echo/internal';
9
- import { type FunctionType } from '@dxos/functions';
10
- import { useOnTransition } from '@dxos/react-ui';
11
- import { Form, type FormInputStateProps, type QueryRefOptions, useFormValues } from '@dxos/react-ui-form';
10
+ import { type Function } from '@dxos/functions';
11
+ import { useOnTransition, useTranslation } from '@dxos/react-ui';
12
+ import { Form, type FormFieldStateProps, type FormRootProps, useFormValues } from '@dxos/react-ui-form';
13
+
14
+ import { meta } from '../../meta';
12
15
 
13
16
  export type FunctionInputEditorProps = {
14
- functions: FunctionType[];
15
- onQueryRefOptions: QueryRefOptions;
16
- } & FormInputStateProps;
17
+ type: SchemaAST.AST;
18
+ functions: Function.Function[];
19
+ db?: Database.Database;
20
+ } & FormFieldStateProps;
17
21
 
18
- /**
19
- * Editor component for function input parameters.
20
- */
21
- export const FunctionInputEditor = ({
22
- functions,
23
- getValue,
24
- onValueChange,
25
- onQueryRefOptions,
26
- }: FunctionInputEditorProps) => {
27
- const selectedFunctionValue = useFormValues(['function' as JsonPath]);
22
+ export const FunctionInputEditor = ({ type, functions, db, getValue, onValueChange }: FunctionInputEditorProps) => {
23
+ const { t } = useTranslation(meta.id);
24
+ const selectedFunctionValue = useFormValues(FunctionInputEditor.displayName, ['function' as JsonPath]);
28
25
  const selectedFunctionId = useMemo(() => {
29
26
  if (Ref.isRef(selectedFunctionValue)) {
30
27
  return selectedFunctionValue.dxn.toString().split('dxn:echo:@:').at(1);
@@ -47,20 +44,22 @@ export const FunctionInputEditor = ({
47
44
  return prevValue.dxn.toString() !== selectedFunctionValue.dxn.toString();
48
45
  },
49
46
  (currValue) => currValue !== undefined,
50
- () => onValueChange('object', {}),
47
+ () => onValueChange(type, {}),
51
48
  );
52
49
 
53
50
  const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);
54
51
  const effectSchema = useMemo(() => (inputSchema ? Type.toEffectSchema(inputSchema) : undefined), [inputSchema]);
55
52
  const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;
53
+ const defaultValues = useMemo(() => {
54
+ const raw = getValue() ?? {};
55
+ return Obj.isObject(raw) ? { ...Obj.getSnapshot(raw) } : { ...raw };
56
+ }, [getValue]);
56
57
 
57
- const values = useMemo(() => getValue() ?? {}, [getValue]);
58
-
59
- const handleValuesChanged = useCallback(
60
- (values: any) => {
61
- onValueChange('object', values);
58
+ const handleValuesChanged = useCallback<NonNullable<FormRootProps['onValuesChanged']>>(
59
+ (values) => {
60
+ onValueChange(type, values);
62
61
  },
63
- [onValueChange],
62
+ [type, onValueChange],
64
63
  );
65
64
 
66
65
  if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {
@@ -69,16 +68,18 @@ export const FunctionInputEditor = ({
69
68
 
70
69
  return (
71
70
  <>
72
- <h3 className='text-md'>Function parameters</h3>
73
- {/* TODO(ZaymonFC): Try using <FormFields /> internal component for this nesting.
74
- This would allow errors to flow up to the root context. */}
75
- <Form
71
+ <Form.Label label={t('function parameters label')} asChild />
72
+ <Form.Root
73
+ key={selectedFunction.id}
76
74
  schema={effectSchema}
77
- values={values}
75
+ defaultValues={defaultValues}
76
+ db={db}
78
77
  onValuesChanged={handleValuesChanged}
79
- onQueryRefOptions={onQueryRefOptions}
80
- outerSpacing={false}
81
- />
78
+ >
79
+ <Form.FieldSet />
80
+ </Form.Root>
82
81
  </>
83
82
  );
84
83
  };
84
+
85
+ FunctionInputEditor.displayName = 'AutomationTrigger.FunctionInputEditor';
@@ -5,20 +5,20 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { Filter, Query } from '@dxos/echo';
8
- import { type FunctionTrigger, TriggerKinds, type TriggerType } from '@dxos/functions';
8
+ import { Trigger } from '@dxos/functions';
9
9
  import { useTranslation } from '@dxos/react-ui';
10
- import { type InputProps, SelectInput, useInputProps } from '@dxos/react-ui-form';
10
+ import { type FormFieldComponentProps, SelectField, useFormFieldState } from '@dxos/react-ui-form';
11
11
 
12
12
  import { meta } from '../../meta';
13
13
 
14
- export type SpecSelectorProps = InputProps;
14
+ export type SpecSelectorProps = FormFieldComponentProps;
15
15
 
16
16
  export const SpecSelector = (props: SpecSelectorProps) => {
17
17
  const { t } = useTranslation(meta.id);
18
- const specProps = useInputProps(['spec' satisfies keyof FunctionTrigger]);
18
+ const specProps = useFormFieldState(SpecSelector.displayName, ['spec' satisfies keyof Trigger.Trigger]);
19
19
 
20
20
  const handleTypeChange = useCallback(
21
- (_type: any, value: string): TriggerType | undefined => {
21
+ (_type: any, value: string): Trigger.Spec | undefined => {
22
22
  const getDefaultTriggerSpec = (kind: string) => {
23
23
  switch (kind) {
24
24
  case 'timer':
@@ -47,19 +47,21 @@ export const SpecSelector = (props: SpecSelectorProps) => {
47
47
  }
48
48
 
49
49
  // Update the entire spec object, not just the `spec.kind`.
50
- specProps.onValueChange('object', defaultSpec);
50
+ specProps.onValueChange(props.type, defaultSpec);
51
51
  },
52
- [specProps],
52
+ [props.type, specProps],
53
53
  );
54
54
 
55
55
  const options = useMemo(
56
56
  () =>
57
- TriggerKinds.map((kind) => ({
57
+ Trigger.Kinds.map((kind) => ({
58
58
  value: kind,
59
59
  label: t(`trigger type ${kind}`),
60
60
  })),
61
61
  [t],
62
62
  );
63
63
 
64
- return <SelectInput {...props} options={options} onValueChange={handleTypeChange} />;
64
+ return <SelectField {...props} options={options} onValueChange={handleTypeChange} />;
65
65
  };
66
+
67
+ SpecSelector.displayName = 'Form.SpecSelector';
@@ -6,14 +6,15 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React, { useState } from 'react';
7
7
 
8
8
  import { Filter, Obj, Ref, Tag, Type } from '@dxos/echo';
9
- import { FunctionTrigger, FunctionType } from '@dxos/functions';
9
+ import { Function, Trigger } from '@dxos/functions';
10
10
  import { invariant } from '@dxos/invariant';
11
11
  import { faker } from '@dxos/random';
12
12
  import { useQuery } from '@dxos/react-client/echo';
13
- import { ContactType, useClientProvider, withClientProvider } from '@dxos/react-client/testing';
13
+ import { TestSchema, useClientStory, withClientProvider } from '@dxos/react-client/testing';
14
14
  import { useAsyncEffect } from '@dxos/react-ui';
15
- import { withTheme } from '@dxos/react-ui/testing';
16
- import { DataType } from '@dxos/schema';
15
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
16
+ import { translations as formTranslations } from '@dxos/react-ui-form';
17
+ import { Employer, Organization, Person, Pipeline } from '@dxos/types';
17
18
 
18
19
  import { functions } from '../../testing';
19
20
  import { translations } from '../../translations';
@@ -22,27 +23,27 @@ import { TriggerEditor, type TriggerEditorProps } from './TriggerEditor';
22
23
 
23
24
  const types = [
24
25
  // TODO(burdon): Get label from annotation.
25
- { value: Type.getTypename(DataType.Organization), label: 'Organization' },
26
- { value: Type.getTypename(DataType.Person), label: 'Person' },
27
- { value: Type.getTypename(DataType.Project), label: 'Project' },
28
- { value: Type.getTypename(DataType.Employer), label: 'Employer' },
26
+ { value: Organization.Organization.typename, label: 'Organization' },
27
+ { value: Person.Person.typename, label: 'Person' },
28
+ { value: Type.getTypename(Pipeline.Pipeline), label: 'Project' },
29
+ { value: Employer.Employer.typename, label: 'Employer' },
29
30
  ];
30
31
 
31
32
  const DefaultStory = (props: Partial<TriggerEditorProps>) => {
32
- const { space } = useClientProvider();
33
- const [trigger, setTrigger] = useState<FunctionTrigger>();
34
- const tags = useQuery(space, Filter.type(Tag.Tag));
33
+ const { space } = useClientStory();
34
+ const [trigger, setTrigger] = useState<Trigger.Trigger>();
35
+ const tags = useQuery(space?.db, Filter.type(Tag.Tag));
35
36
 
36
37
  useAsyncEffect(async () => {
37
38
  if (!space) {
38
39
  return;
39
40
  }
40
41
 
41
- const result = await space.db.query(Filter.type(FunctionType)).run();
42
- const fn = result.objects.find((fn) => fn.name === 'example.com/function/forex');
42
+ const functions = await space.db.query(Filter.type(Function.Function)).run();
43
+ const fn = functions.find((fn) => fn.name === 'example.com/function/forex');
43
44
  invariant(fn);
44
45
  const trigger = space.db.add(
45
- Obj.make(FunctionTrigger, {
46
+ Trigger.make({
46
47
  function: Ref.make(fn),
47
48
  spec: { kind: 'webhook' },
48
49
  input: {
@@ -59,16 +60,14 @@ const DefaultStory = (props: Partial<TriggerEditorProps>) => {
59
60
  }
60
61
 
61
62
  return (
62
- <div role='none' className='w-[32rem] bs-fit border border-separator rounded-sm'>
63
- <TriggerEditor
64
- space={space}
65
- trigger={trigger}
66
- types={types}
67
- tags={tags}
68
- onSave={(values) => console.log('on save', values)}
69
- {...props}
70
- />
71
- </div>
63
+ <TriggerEditor
64
+ db={space.db}
65
+ trigger={trigger}
66
+ types={types}
67
+ tags={tags}
68
+ onSave={(values) => console.log('on save', values)}
69
+ {...props}
70
+ />
72
71
  );
73
72
  };
74
73
 
@@ -77,22 +76,27 @@ const meta = {
77
76
  component: TriggerEditor as any,
78
77
  render: DefaultStory,
79
78
  decorators: [
80
- withTheme,
79
+ withTheme(),
80
+ withLayout({ layout: 'column' }),
81
81
  withClientProvider({
82
82
  createIdentity: true,
83
83
  createSpace: true,
84
- types: [Tag.Tag, FunctionType, FunctionTrigger, ContactType],
84
+ types: [Tag.Tag, Function.Function, Trigger.Trigger, TestSchema.ContactType],
85
85
  onCreateSpace: ({ space }) => {
86
- space.db.add(Tag.make({ label: 'Important' }));
87
- space.db.add(Tag.make({ label: 'Investor' }));
88
- space.db.add(Tag.make({ label: 'New' }));
86
+ // Tags.
87
+ ['Important', 'Investor', 'New'].forEach((label) => {
88
+ space.db.add(Tag.make({ label }));
89
+ });
90
+
91
+ // Functions.
92
+ functions.forEach((fn) => {
93
+ space.db.add(Function.make(fn));
94
+ });
89
95
 
90
- for (const fn of functions) {
91
- space.db.add(Obj.make(FunctionType, fn));
92
- }
96
+ // Objects.
93
97
  Array.from({ length: 10 }).map(() => {
94
98
  return space.db.add(
95
- Obj.make(ContactType, {
99
+ Obj.make(TestSchema.ContactType, {
96
100
  name: faker.person.fullName(),
97
101
  identifiers: [],
98
102
  }),
@@ -102,8 +106,8 @@ const meta = {
102
106
  }),
103
107
  ],
104
108
  parameters: {
105
- layout: 'column',
106
- translations,
109
+ layout: 'fullscreen',
110
+ translations: [...formTranslations, ...translations],
107
111
  },
108
112
  } satisfies Meta<typeof DefaultStory>;
109
113
 
@@ -5,61 +5,76 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { ComputeGraph } from '@dxos/conductor';
8
- import { type Query, Type } from '@dxos/echo';
9
- import { FunctionTrigger, FunctionType, ScriptType } from '@dxos/functions';
10
- import { Filter, Ref, type Space, useQuery } from '@dxos/react-client/echo';
8
+ import { DXN, type Database, type Query } from '@dxos/echo';
9
+ import { Function, Script, Trigger } from '@dxos/functions';
10
+ import { Filter, Ref, useQuery } from '@dxos/react-client/echo';
11
11
  import { Input } from '@dxos/react-ui';
12
12
  import { QueryForm, type QueryFormProps } from '@dxos/react-ui-components';
13
- import { type CustomInputMap, Form, InputHeader, SelectInput, useRefQueryLookupHandler } from '@dxos/react-ui-form';
14
-
15
- import { FunctionInputEditor, type FunctionInputEditorProps } from './FunctionInputEditor';
13
+ import {
14
+ type ExcludeId,
15
+ Form,
16
+ FormFieldLabel,
17
+ type FormFieldMap,
18
+ type FormRootProps,
19
+ SelectField,
20
+ omitId,
21
+ } from '@dxos/react-ui-form';
22
+
23
+ import { FunctionInputEditor } from './FunctionInputEditor';
16
24
  import { SpecSelector } from './SpecSelector';
17
25
 
26
+ type TriggerFormSchema = ExcludeId<typeof Trigger.Trigger>;
27
+
18
28
  export type TriggerEditorProps = {
19
- space: Space;
20
- trigger: FunctionTrigger;
29
+ db: Database.Database;
30
+ trigger: Trigger.Trigger;
21
31
  // TODO(wittjosiah): This needs to apply to whole spec but currently only applies to spec.kind & spec.query.
22
32
  readonlySpec?: boolean;
23
- onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;
24
- onCancel?: () => void;
25
- } & Pick<QueryFormProps, 'types' | 'tags'>;
26
-
27
- export const TriggerEditor = ({ space, trigger, readonlySpec, types, tags, onSave, onCancel }: TriggerEditorProps) => {
28
- const handleSave = ({ id: _, ...values }: FunctionTrigger) => {
29
- onSave?.(values);
30
- };
31
-
32
- const handleRefQueryLookup = useRefQueryLookupHandler({ space });
33
- const Custom = useCustomInputs({ space, readonlySpec, types, tags, onQueryRefOptions: handleRefQueryLookup });
33
+ } &
34
+ // prettier-ignore
35
+ Pick<QueryFormProps, 'types' | 'tags'> &
36
+ Pick<FormRootProps<TriggerFormSchema>, 'onSave' | 'onCancel'>;
37
+
38
+ export const TriggerEditor = ({ db, types, tags, readonlySpec, trigger, ...formProps }: TriggerEditorProps) => {
39
+ const fieldMap = useCustomInputs({
40
+ db,
41
+ types,
42
+ tags,
43
+ readonlySpec,
44
+ });
34
45
 
35
46
  return (
36
- <Form
37
- outerSpacing={false}
38
- Custom={Custom}
39
- schema={FunctionTrigger}
47
+ <Form.Root<TriggerFormSchema>
48
+ {...formProps}
49
+ schema={omitId(Trigger.Trigger)}
40
50
  values={trigger}
41
- onSave={handleSave}
42
- onCancel={onCancel}
43
- onQueryRefOptions={handleRefQueryLookup}
44
- />
51
+ db={db}
52
+ fieldMap={fieldMap}
53
+ >
54
+ <Form.Viewport>
55
+ <Form.Content>
56
+ <Form.FieldSet />
57
+ <Form.Actions />
58
+ </Form.Content>
59
+ </Form.Viewport>
60
+ </Form.Root>
45
61
  );
46
62
  };
47
63
 
48
64
  type UseCustomInputsProps = {
49
- space: Space;
65
+ db: Database.Database;
50
66
  readonlySpec?: boolean;
51
- onQueryRefOptions: FunctionInputEditorProps['onQueryRefOptions'];
52
67
  } & Pick<QueryFormProps, 'types' | 'tags'>;
53
68
 
54
- const useCustomInputs = ({ space, readonlySpec, types, tags, onQueryRefOptions }: UseCustomInputsProps) => {
55
- const functions = useQuery(space, Filter.type(FunctionType));
56
- const workflows = useQuery(space, Filter.type(ComputeGraph));
57
- const scripts = useQuery(space, Filter.type(ScriptType));
69
+ const useCustomInputs = ({ db, readonlySpec, types, tags }: UseCustomInputsProps): FormFieldMap => {
70
+ const functions = useQuery(db, Filter.type(Function.Function));
71
+ const workflows = useQuery(db, Filter.type(ComputeGraph));
72
+ const scripts = useQuery(db, Filter.type(Script.Script));
58
73
 
59
74
  return useMemo(
60
- (): CustomInputMap => ({
75
+ (): FormFieldMap => ({
61
76
  // Function selector.
62
- ['function' satisfies keyof FunctionTrigger]: (props) => {
77
+ ['function' satisfies keyof Trigger.Trigger]: (props) => {
63
78
  const getValue = useCallback(() => {
64
79
  const formValue = props.getValue();
65
80
  if (Ref.isRef(formValue)) {
@@ -70,17 +85,17 @@ const useCustomInputs = ({ space, readonlySpec, types, tags, onQueryRefOptions }
70
85
 
71
86
  const handleOnValueChange = useCallback(
72
87
  (_type: any, dxnString: string) => {
73
- const dxn = Type.DXN.parse(dxnString);
88
+ const dxn = DXN.parse(dxnString);
74
89
  if (dxn) {
75
90
  const ref = Ref.fromDXN(dxn);
76
- props.onValueChange('object', ref);
91
+ props.onValueChange(props.type, ref);
77
92
  }
78
93
  },
79
- [props.onValueChange],
94
+ [props.type, props.onValueChange],
80
95
  );
81
96
 
82
97
  return (
83
- <SelectInput
98
+ <SelectField
84
99
  {...props}
85
100
  getValue={getValue as any}
86
101
  onValueChange={handleOnValueChange}
@@ -90,28 +105,26 @@ const useCustomInputs = ({ space, readonlySpec, types, tags, onQueryRefOptions }
90
105
  },
91
106
 
92
107
  // Spec selector.
93
- ['spec.kind' as const]: (props) => <SpecSelector {...props} readonly={readonlySpec ? 'disabled-input' : false} />,
108
+ ['spec.kind' as const]: (props) => <SpecSelector {...props} readonly={readonlySpec} />,
94
109
 
95
110
  // TODO(wittjosiah): Copied from ViewEditor.
96
111
  // Query input editor.
97
112
  ['spec.query' as const]: (props) => {
98
113
  const handleChange = useCallback(
99
- (query: Query.Any) => props.onValueChange('object', { ast: query.ast }),
100
- [props.onValueChange],
114
+ (query: Query.Any) => props.onValueChange(props.type, { ast: query.ast }),
115
+ [props.type, props.onValueChange],
101
116
  );
102
117
 
103
118
  return (
104
119
  <Input.Root>
105
- <InputHeader label={props.label} />
120
+ <FormFieldLabel label={props.label} asChild />
106
121
  <QueryForm initialQuery={(props.getValue() as any).ast} types={types} tags={tags} onChange={handleChange} />
107
122
  </Input.Root>
108
123
  );
109
124
  },
110
125
 
111
126
  // Function input editor.
112
- ['input' as const]: (props) => (
113
- <FunctionInputEditor {...props} functions={functions} onQueryRefOptions={onQueryRefOptions} />
114
- ),
127
+ ['input' as const]: (props) => <FunctionInputEditor {...props} functions={functions} db={db} />,
115
128
  }),
116
129
  [workflows, scripts, functions, readonlySpec],
117
130
  );
@@ -121,7 +134,7 @@ const getWorkflowOptions = (graphs: ComputeGraph[]) => {
121
134
  return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));
122
135
  };
123
136
 
124
- const getFunctionOptions = (scripts: ScriptType[], functions: FunctionType[]) => {
125
- const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
137
+ const getFunctionOptions = (scripts: Script.Script[], functions: Function.Function[]) => {
138
+ const getLabel = (fn: Function.Function) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
126
139
  return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:echo:@:${fn.id}` }));
127
140
  };
@@ -4,22 +4,23 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { type Space } from '@dxos/react-client/echo';
7
+ import { type Database } from '@dxos/echo';
8
8
  import { Input, useTranslation } from '@dxos/react-ui';
9
- import { ControlItemInput } from '@dxos/react-ui-form';
9
+ import { Settings } from '@dxos/react-ui-form';
10
10
 
11
11
  import { useTriggerRuntimeControls } from '../hooks';
12
12
  import { meta } from '../meta';
13
13
 
14
- export const TriggersSettings = ({ space }: { space: Space }) => {
15
- const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(space);
14
+ export const TriggersSettings = ({ db }: { db: Database.Database }) => {
15
+ const { state, start, stop } = useTriggerRuntimeControls(db);
16
+ const isRunning = state?.enabled ?? false;
16
17
  const { t } = useTranslation(meta.id);
17
18
 
18
19
  return (
19
20
  <div className='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
20
- <ControlItemInput title={t('runtime label')} description={t('runtime description')}>
21
+ <Settings.ItemInput title={t('runtime label')} description={t('runtime description')}>
21
22
  <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />
22
- </ControlItemInput>
23
+ </Settings.ItemInput>
23
24
  </div>
24
25
  );
25
26
  };