@dxos/plugin-automation 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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 (259) hide show
  1. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  2. package/dist/lib/browser/chunk-NQY2QL47.mjs +44 -0
  3. package/dist/lib/browser/chunk-NQY2QL47.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-JOXPQ27I.mjs → chunk-WZKRIDQ6.mjs} +9 -38
  5. package/dist/lib/browser/chunk-WZKRIDQ6.mjs.map +7 -0
  6. package/dist/lib/browser/cli/index.mjs +96 -81
  7. package/dist/lib/browser/cli/index.mjs.map +3 -3
  8. package/dist/lib/browser/create-trigger-from-template-J2Z7AAHV.mjs +77 -0
  9. package/dist/lib/browser/create-trigger-from-template-J2Z7AAHV.mjs.map +7 -0
  10. package/dist/lib/browser/hooks/index.mjs +110 -6
  11. package/dist/lib/browser/hooks/index.mjs.map +4 -4
  12. package/dist/lib/browser/index.mjs +60 -92
  13. package/dist/lib/browser/index.mjs.map +4 -4
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/operations/index.mjs +14 -0
  16. package/dist/lib/browser/operations/index.mjs.map +7 -0
  17. package/dist/lib/browser/types/index.mjs +4 -4
  18. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  19. package/dist/lib/node-esm/{chunk-RX52VKI2.mjs → chunk-POUAOKR5.mjs} +9 -37
  20. package/dist/lib/node-esm/chunk-POUAOKR5.mjs.map +7 -0
  21. package/dist/lib/node-esm/chunk-Z6J7TDVZ.mjs +45 -0
  22. package/dist/lib/node-esm/chunk-Z6J7TDVZ.mjs.map +7 -0
  23. package/dist/lib/node-esm/cli/index.mjs +96 -81
  24. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  25. package/dist/lib/node-esm/create-trigger-from-template-TRSHHYEB.mjs +78 -0
  26. package/dist/lib/node-esm/create-trigger-from-template-TRSHHYEB.mjs.map +7 -0
  27. package/dist/lib/node-esm/hooks/index.mjs +110 -6
  28. package/dist/lib/node-esm/hooks/index.mjs.map +4 -4
  29. package/dist/lib/node-esm/index.mjs +60 -92
  30. package/dist/lib/node-esm/index.mjs.map +4 -4
  31. package/dist/lib/node-esm/meta.json +1 -1
  32. package/dist/lib/node-esm/operations/index.mjs +15 -0
  33. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  34. package/dist/lib/node-esm/types/index.mjs +4 -4
  35. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  36. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  37. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/compute-runtime.d.ts +6 -0
  39. package/dist/types/src/capabilities/compute-runtime.d.ts.map +1 -0
  40. package/dist/types/src/capabilities/index.d.ts +6 -4
  41. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  42. package/dist/types/src/capabilities/node.d.ts +3 -0
  43. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  45. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  47. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  48. package/dist/types/src/cli/commands/trigger/create/index.d.ts +1 -1
  49. package/dist/types/src/cli/commands/trigger/create/queue.d.ts +1 -1
  50. package/dist/types/src/cli/commands/trigger/create/queue.d.ts.map +1 -1
  51. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts +1 -1
  52. package/dist/types/src/cli/commands/trigger/create/subscription.d.ts.map +1 -1
  53. package/dist/types/src/cli/commands/trigger/create/timer.d.ts +1 -1
  54. package/dist/types/src/cli/commands/trigger/create/timer.d.ts.map +1 -1
  55. package/dist/types/src/cli/commands/trigger/list.d.ts +1 -1
  56. package/dist/types/src/cli/commands/trigger/list.d.ts.map +1 -1
  57. package/dist/types/src/cli/commands/trigger/remove.d.ts +1 -1
  58. package/dist/types/src/cli/commands/trigger/update/queue.d.ts.map +1 -1
  59. package/dist/types/src/cli/commands/trigger/update/subscription.d.ts.map +1 -1
  60. package/dist/types/src/cli/commands/trigger/update/timer.d.ts.map +1 -1
  61. package/dist/types/src/cli/commands/trigger/util.d.ts +2 -2
  62. package/dist/types/src/cli/commands/trigger/util.d.ts.map +1 -1
  63. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  64. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +3 -4
  65. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  66. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts +28 -30
  67. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  68. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  69. package/dist/types/src/components/FunctionsRegistry/FunctionsRegistry.d.ts.map +1 -1
  70. package/dist/types/src/components/FunctionsRegistry/index.d.ts +3 -1
  71. package/dist/types/src/components/FunctionsRegistry/index.d.ts.map +1 -1
  72. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts +2 -2
  73. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  74. package/dist/types/src/components/TriggerEditor/SpecSelector.d.ts.map +1 -1
  75. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  76. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +90 -91
  77. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/index.d.ts +3 -4
  79. package/dist/types/src/components/index.d.ts.map +1 -1
  80. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts +4 -0
  81. package/dist/types/src/containers/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  82. package/dist/types/src/containers/AutomationSettings/index.d.ts +3 -0
  83. package/dist/types/src/containers/AutomationSettings/index.d.ts.map +1 -0
  84. package/dist/types/src/{components → containers/FunctionsContainer}/FunctionsContainer.d.ts +0 -1
  85. package/dist/types/src/containers/FunctionsContainer/FunctionsContainer.d.ts.map +1 -0
  86. package/dist/types/src/containers/FunctionsContainer/index.d.ts +3 -0
  87. package/dist/types/src/containers/FunctionsContainer/index.d.ts.map +1 -0
  88. package/dist/types/src/containers/TriggerSettings/TriggerSettings.d.ts.map +1 -0
  89. package/dist/types/src/containers/TriggerSettings/index.d.ts +3 -0
  90. package/dist/types/src/containers/TriggerSettings/index.d.ts.map +1 -0
  91. package/dist/types/src/containers/index.d.ts +5 -0
  92. package/dist/types/src/containers/index.d.ts.map +1 -0
  93. package/dist/types/src/hooks/index.d.ts +2 -0
  94. package/dist/types/src/hooks/index.d.ts.map +1 -1
  95. package/dist/types/src/hooks/useComputeRuntime.d.ts +7 -0
  96. package/dist/types/src/hooks/useComputeRuntime.d.ts.map +1 -0
  97. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts +4 -3
  98. package/dist/types/src/hooks/useComputeRuntimeCallback.d.ts.map +1 -1
  99. package/dist/types/src/hooks/useComputeRuntimeService.d.ts +5 -0
  100. package/dist/types/src/hooks/useComputeRuntimeService.d.ts.map +1 -0
  101. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +2 -1
  102. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -1
  103. package/dist/types/src/index.d.ts +2 -5
  104. package/dist/types/src/index.d.ts.map +1 -1
  105. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  106. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  107. package/dist/types/src/operations/definitions.d.ts +19 -0
  108. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  109. package/dist/types/src/operations/index.d.ts +4 -0
  110. package/dist/types/src/operations/index.d.ts.map +1 -0
  111. package/dist/types/src/testing/test-functions.d.ts +16 -14
  112. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  113. package/dist/types/src/translations.d.ts +29 -31
  114. package/dist/types/src/translations.d.ts.map +1 -1
  115. package/dist/types/src/types/capabilities.d.ts +5 -3
  116. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  117. package/dist/types/src/types/schema.d.ts +9 -30
  118. package/dist/types/src/types/schema.d.ts.map +1 -1
  119. package/dist/types/tsconfig.tsbuildinfo +1 -1
  120. package/package.json +73 -46
  121. package/src/AutomationPlugin.tsx +13 -10
  122. package/src/capabilities/app-graph-builder.ts +62 -0
  123. package/src/capabilities/{compute-runtime/compute-runtime.ts → compute-runtime.ts} +68 -21
  124. package/src/capabilities/index.ts +10 -4
  125. package/src/capabilities/operation-handler.ts +16 -0
  126. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +17 -20
  127. package/src/cli/commands/trigger/create/queue.ts +7 -6
  128. package/src/cli/commands/trigger/create/subscription.ts +7 -6
  129. package/src/cli/commands/trigger/create/timer.ts +7 -6
  130. package/src/cli/commands/trigger/list.ts +3 -2
  131. package/src/cli/commands/trigger/remove.ts +2 -2
  132. package/src/cli/commands/trigger/update/queue.ts +12 -12
  133. package/src/cli/commands/trigger/update/subscription.ts +12 -11
  134. package/src/cli/commands/trigger/update/timer.ts +12 -11
  135. package/src/cli/commands/trigger/util.ts +43 -29
  136. package/src/cli/plugin.ts +7 -6
  137. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +9 -7
  138. package/src/components/AutomationPanel/AutomationPanel.tsx +147 -77
  139. package/src/components/FunctionsPanel/FunctionsPanel.tsx +37 -31
  140. package/src/components/FunctionsRegistry/FunctionsRegistry.tsx +27 -24
  141. package/src/components/FunctionsRegistry/index.ts +4 -1
  142. package/src/components/TriggerEditor/FunctionInputEditor.tsx +17 -8
  143. package/src/components/TriggerEditor/SpecSelector.tsx +12 -3
  144. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +52 -9
  145. package/src/components/TriggerEditor/TriggerEditor.tsx +46 -17
  146. package/src/components/index.ts +1 -2
  147. package/src/containers/AutomationSettings/AutomationSettings.tsx +27 -0
  148. package/src/containers/AutomationSettings/index.ts +7 -0
  149. package/src/containers/FunctionsContainer/FunctionsContainer.tsx +33 -0
  150. package/src/containers/FunctionsContainer/index.ts +7 -0
  151. package/src/{components → containers/TriggerSettings}/TriggerSettings.tsx +8 -7
  152. package/src/containers/TriggerSettings/index.ts +6 -0
  153. package/src/containers/index.ts +9 -0
  154. package/src/hooks/index.ts +3 -0
  155. package/src/hooks/useComputeRuntime.ts +15 -0
  156. package/src/hooks/useComputeRuntimeCallback.ts +6 -6
  157. package/src/hooks/useComputeRuntimeService.ts +22 -0
  158. package/src/hooks/useTriggerRuntimeControls.ts +22 -8
  159. package/src/index.ts +2 -6
  160. package/src/meta.ts +1 -1
  161. package/src/operations/create-trigger-from-template.ts +74 -0
  162. package/src/operations/definitions.ts +27 -0
  163. package/src/operations/index.ts +9 -0
  164. package/src/testing/test-functions.ts +8 -5
  165. package/src/translations.ts +35 -36
  166. package/src/types/capabilities.ts +18 -6
  167. package/src/types/events.ts +2 -2
  168. package/src/types/schema.ts +3 -24
  169. package/dist/lib/browser/AutomationPanel-FAS6ADCW.mjs +0 -11
  170. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs +0 -56
  171. package/dist/lib/browser/AutomationSettings-XN2OIYWL.mjs.map +0 -7
  172. package/dist/lib/browser/FunctionsContainer-6QLC7JP4.mjs +0 -129
  173. package/dist/lib/browser/FunctionsContainer-6QLC7JP4.mjs.map +0 -7
  174. package/dist/lib/browser/FunctionsPanel-ZX4J75UM.mjs +0 -10
  175. package/dist/lib/browser/app-graph-builder-LAQMEBMH.mjs +0 -84
  176. package/dist/lib/browser/app-graph-builder-LAQMEBMH.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-54PANILA.mjs +0 -14
  178. package/dist/lib/browser/chunk-54PANILA.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-BFUIVUQH.mjs +0 -102
  180. package/dist/lib/browser/chunk-BFUIVUQH.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-BKFQBKYO.mjs +0 -8
  182. package/dist/lib/browser/chunk-BKFQBKYO.mjs.map +0 -7
  183. package/dist/lib/browser/chunk-JOXPQ27I.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-PZNBEKO5.mjs +0 -17
  185. package/dist/lib/browser/chunk-PZNBEKO5.mjs.map +0 -7
  186. package/dist/lib/browser/chunk-QW3EM35H.mjs +0 -248
  187. package/dist/lib/browser/chunk-QW3EM35H.mjs.map +0 -7
  188. package/dist/lib/browser/chunk-RAF2FJST.mjs +0 -86
  189. package/dist/lib/browser/chunk-RAF2FJST.mjs.map +0 -7
  190. package/dist/lib/browser/chunk-YWLEY2FD.mjs +0 -200
  191. package/dist/lib/browser/chunk-YWLEY2FD.mjs.map +0 -7
  192. package/dist/lib/browser/compute-runtime-WTWLQ67J.mjs +0 -114
  193. package/dist/lib/browser/compute-runtime-WTWLQ67J.mjs.map +0 -7
  194. package/dist/lib/browser/operation-resolver-Q3MWOR7K.mjs +0 -82
  195. package/dist/lib/browser/operation-resolver-Q3MWOR7K.mjs.map +0 -7
  196. package/dist/lib/browser/react-surface-EV3AC62F.mjs +0 -65
  197. package/dist/lib/browser/react-surface-EV3AC62F.mjs.map +0 -7
  198. package/dist/lib/node-esm/AutomationPanel-B7NAGDFA.mjs +0 -12
  199. package/dist/lib/node-esm/AutomationPanel-B7NAGDFA.mjs.map +0 -7
  200. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs +0 -57
  201. package/dist/lib/node-esm/AutomationSettings-M5PMZJ6P.mjs.map +0 -7
  202. package/dist/lib/node-esm/FunctionsContainer-J4O2ULWR.mjs +0 -130
  203. package/dist/lib/node-esm/FunctionsContainer-J4O2ULWR.mjs.map +0 -7
  204. package/dist/lib/node-esm/FunctionsPanel-SS6GIVNU.mjs +0 -11
  205. package/dist/lib/node-esm/FunctionsPanel-SS6GIVNU.mjs.map +0 -7
  206. package/dist/lib/node-esm/app-graph-builder-4UCMXHYY.mjs +0 -85
  207. package/dist/lib/node-esm/app-graph-builder-4UCMXHYY.mjs.map +0 -7
  208. package/dist/lib/node-esm/chunk-2CKVH7JC.mjs +0 -201
  209. package/dist/lib/node-esm/chunk-2CKVH7JC.mjs.map +0 -7
  210. package/dist/lib/node-esm/chunk-5FXNN3MV.mjs +0 -19
  211. package/dist/lib/node-esm/chunk-5FXNN3MV.mjs.map +0 -7
  212. package/dist/lib/node-esm/chunk-7QRUPEHH.mjs +0 -16
  213. package/dist/lib/node-esm/chunk-7QRUPEHH.mjs.map +0 -7
  214. package/dist/lib/node-esm/chunk-HQLVREIX.mjs +0 -87
  215. package/dist/lib/node-esm/chunk-HQLVREIX.mjs.map +0 -7
  216. package/dist/lib/node-esm/chunk-K7GCM342.mjs +0 -10
  217. package/dist/lib/node-esm/chunk-K7GCM342.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-KWKWOGS5.mjs +0 -103
  219. package/dist/lib/node-esm/chunk-KWKWOGS5.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-LJAXQ6CX.mjs +0 -249
  221. package/dist/lib/node-esm/chunk-LJAXQ6CX.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-RX52VKI2.mjs.map +0 -7
  223. package/dist/lib/node-esm/compute-runtime-ZHROOBLY.mjs +0 -115
  224. package/dist/lib/node-esm/compute-runtime-ZHROOBLY.mjs.map +0 -7
  225. package/dist/lib/node-esm/operation-resolver-R5GA4YNO.mjs +0 -83
  226. package/dist/lib/node-esm/operation-resolver-R5GA4YNO.mjs.map +0 -7
  227. package/dist/lib/node-esm/react-surface-S6VZJCEZ.mjs +0 -66
  228. package/dist/lib/node-esm/react-surface-S6VZJCEZ.mjs.map +0 -7
  229. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  230. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  231. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  232. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  233. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts +0 -6
  234. package/dist/types/src/capabilities/compute-runtime/compute-runtime.d.ts.map +0 -1
  235. package/dist/types/src/capabilities/compute-runtime/index.d.ts +0 -3
  236. package/dist/types/src/capabilities/compute-runtime/index.d.ts.map +0 -1
  237. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  238. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  239. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  240. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  241. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  242. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  243. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  244. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  245. package/dist/types/src/components/AutomationSettings.d.ts +0 -5
  246. package/dist/types/src/components/AutomationSettings.d.ts.map +0 -1
  247. package/dist/types/src/components/FunctionsContainer.d.ts.map +0 -1
  248. package/dist/types/src/components/TriggerSettings.d.ts.map +0 -1
  249. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -71
  250. package/src/capabilities/app-graph-builder/index.ts +0 -7
  251. package/src/capabilities/operation-resolver/index.ts +0 -7
  252. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -79
  253. package/src/capabilities/react-surface/index.ts +0 -7
  254. package/src/components/AutomationSettings.tsx +0 -30
  255. package/src/components/FunctionsContainer.tsx +0 -36
  256. /package/dist/lib/browser/{AutomationPanel-FAS6ADCW.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  257. /package/dist/lib/{browser/FunctionsPanel-ZX4J75UM.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  258. /package/dist/types/src/{components → containers/TriggerSettings}/TriggerSettings.d.ts +0 -0
  259. /package/src/capabilities/{compute-runtime/index.ts → node.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Schema from 'effect/Schema';
6
+
7
+ import { Capability } from '@dxos/app-framework';
8
+ import { Database } from '@dxos/echo';
9
+ import { Operation } from '@dxos/operation';
10
+
11
+ import { meta } from '#meta';
12
+ import { TriggerTemplate } from '../types';
13
+
14
+ const AUTOMATION_OPERATION = `${meta.id}.operation`;
15
+
16
+ export const CreateTriggerFromTemplate = Operation.make({
17
+ meta: { key: `${AUTOMATION_OPERATION}.create-trigger-from-template`, name: 'Create Trigger From Template' },
18
+ services: [Capability.Service],
19
+ input: Schema.Struct({
20
+ db: Database.Database,
21
+ template: TriggerTemplate,
22
+ enabled: Schema.optional(Schema.Boolean),
23
+ scriptName: Schema.optional(Schema.String),
24
+ input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
25
+ }),
26
+ output: Schema.Void,
27
+ });
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { OperationHandlerSet } from '@dxos/operation';
6
+
7
+ export * as AutomationOperation from './definitions';
8
+
9
+ export const AutomationOperationHandlerSet = OperationHandlerSet.lazy(() => import('./create-trigger-from-template'));
@@ -5,13 +5,14 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { TestSchema } from '@dxos/client/testing';
8
- import { Type } from '@dxos/echo';
8
+ import { JsonSchema, Ref } from '@dxos/echo';
9
9
 
10
10
  export const functions = [
11
11
  {
12
+ key: 'example.com/function/chess',
12
13
  name: 'example.com/function/chess',
13
14
  version: '0.1.0',
14
- inputSchema: Type.toJsonSchema(
15
+ inputSchema: JsonSchema.toJsonSchema(
15
16
  Schema.Struct({
16
17
  level: Schema.Number.annotations({
17
18
  title: 'Level',
@@ -20,10 +21,11 @@ export const functions = [
20
21
  ),
21
22
  },
22
23
  {
24
+ key: 'example.com/function/forex',
23
25
  name: 'example.com/function/forex',
24
26
  version: '0.1.0',
25
27
  binding: 'FOREX',
26
- inputSchema: Type.toJsonSchema(
28
+ inputSchema: JsonSchema.toJsonSchema(
27
29
  Schema.Struct({
28
30
  from: Schema.String.annotations({ title: 'Currency from' }),
29
31
  to: Schema.String.annotations({ title: 'Currency to' }),
@@ -31,11 +33,12 @@ export const functions = [
31
33
  ),
32
34
  },
33
35
  {
36
+ key: 'example.com/function/ping-contact',
34
37
  name: 'example.com/function/ping-contact',
35
38
  version: '0.0.1',
36
- inputSchema: Type.toJsonSchema(
39
+ inputSchema: JsonSchema.toJsonSchema(
37
40
  Schema.Struct({
38
- contact: Type.Ref(TestSchema.ContactType).annotations({ title: 'Contact' }),
41
+ contact: Ref.Ref(TestSchema.ContactType).annotations({ title: 'Contact' }),
39
42
  }),
40
43
  ),
41
44
  },
@@ -4,49 +4,48 @@
4
4
 
5
5
  import { type Resource } from '@dxos/react-ui';
6
6
 
7
- import { meta } from './meta';
7
+ import { meta } from '#meta';
8
8
 
9
9
  export const translations = [
10
10
  {
11
11
  'en-US': {
12
12
  [meta.id]: {
13
- 'plugin name': 'Automation',
14
- 'automation panel label': 'Automations',
15
- 'script automation label': 'Automation',
16
- 'automation verbose label': 'Manage automations',
17
- 'automation description': 'You can manage all the triggers which automate your space here.',
18
-
19
- 'runtime label': 'Enable Local Runtime',
20
- 'runtime description':
13
+ 'plugin.name': 'Automation',
14
+ 'automation-panel.label': 'Automations',
15
+ 'script-automation.label': 'Automation',
16
+ 'automation-verbose.label': 'Manage automations',
17
+ 'automation.description': 'You can manage all the triggers which automate your space here.',
18
+
19
+ 'runtime.label': 'Enable Local Runtime',
20
+ 'runtime.description':
21
21
  'This will start a trigger dispatcher locally for this space to run triggers on your device while Composer is running.',
22
22
 
23
- 'functions panel label': 'Functions',
24
- 'functions verbose label': 'Manage deployed functions',
25
- 'functions registry verbose label': 'Functions registry',
26
- 'functions registry description': 'Import functions from the registry',
27
- 'functions description': 'You can manage all the functions deployed from your space on EDGE here.',
28
- 'function copy id': 'Copy Function ID',
29
- 'no functions found': 'No functions found',
30
- 'go to function source button label': 'Show function source',
31
- 'delete function button label': 'Delete function',
32
-
33
- 'function parameters label': 'Function parameters',
34
-
35
- 'trigger editor title': 'Configure Trigger',
36
- 'new trigger label': 'Add Trigger',
37
- 'trigger type timer': 'Timer',
38
- 'trigger type webhook': 'Webhook',
39
- 'trigger type websocket': 'Websocket',
40
- 'trigger type subscription': 'Subscription',
41
- 'trigger type email': 'Email',
42
- 'trigger type queue': 'Queue',
43
-
44
- 'trigger copy url': 'Copy URL',
45
- 'trigger copy email': 'Copy Email',
46
-
47
- 'trigger payload add': 'Add',
48
- 'trigger payload remove': 'Remove',
49
- 'trigger payload prop name placeholder': 'New payload property name',
23
+ 'functions-panel.label': 'Functions',
24
+ 'functions-verbose.label': 'Manage deployed functions',
25
+ 'functions-registry-verbose.label': 'Functions registry',
26
+ 'functions-registry.description': 'Import functions from the registry',
27
+ 'functions.description': 'You can manage all the functions deployed from your space on EDGE here.',
28
+ 'show-source-button.label': 'Show source',
29
+ 'delete-function-button.label': 'Delete function',
30
+
31
+ 'function-parameters.label': 'Function parameters',
32
+
33
+ 'trigger-editor.title': 'Configure Trigger',
34
+ 'trigger-editor.description':
35
+ 'Triggers are used to run functions at specific times or when specific events occur.',
36
+ 'new-trigger.label': 'Add Trigger',
37
+
38
+ 'trigger-type.timer.label': 'Timer',
39
+ 'trigger-type.webhook.label': 'Webhook',
40
+ 'trigger-type.websocket.label': 'Websocket',
41
+ 'trigger-type.subscription.label': 'Subscription',
42
+ 'trigger-type.email.label': 'Email',
43
+ 'trigger-type.queue.label': 'Feed',
44
+
45
+ 'trigger-payload-prop-name.placeholder': 'New payload property name',
46
+ 'import-function-button.label': 'Loading...',
47
+ 'loading-functions.message': 'Loading functions...',
48
+ 'update-function-button.label': 'Update',
50
49
  },
51
50
  },
52
51
  },
@@ -6,12 +6,20 @@ import type * as ManagedRuntime from 'effect/ManagedRuntime';
6
6
 
7
7
  import { type AiService, type ToolExecutionService, type ToolResolverService } from '@dxos/ai';
8
8
  import { Capability } from '@dxos/app-framework';
9
- import { type Database } from '@dxos/echo';
10
- import type { CredentialsService, FunctionInvocationService, QueueService, TracingService } from '@dxos/functions';
9
+ import { type Database, type Feed } from '@dxos/echo';
10
+ import type {
11
+ CredentialsService,
12
+ FunctionInvocationService,
13
+ Process,
14
+ QueueService,
15
+ TracingService,
16
+ } from '@dxos/functions';
11
17
  import type { TriggerDispatcher, TriggerStateStore } from '@dxos/functions-runtime';
12
18
  import type { SpaceId } from '@dxos/keys';
19
+ import type { Blueprint } from '@dxos/blueprints';
20
+ import { AgentService } from '@dxos/assistant';
13
21
 
14
- import { meta } from '../meta';
22
+ import { meta } from '#meta';
15
23
 
16
24
  export namespace AutomationCapabilities {
17
25
  /**
@@ -22,10 +30,14 @@ export namespace AutomationCapabilities {
22
30
  | TriggerStateStore
23
31
  | AiService.AiService
24
32
  | Database.Service
33
+ | Feed.Service
25
34
  | QueueService
26
35
  | CredentialsService
27
- | FunctionInvocationService
28
- | TracingService
36
+ | Blueprint.RegistryService
37
+ | AgentService.AgentService
38
+ | Process.ProcessMonitorService
39
+ | TracingService // TODO(dmaretskyi): Probably should not be provided here.
40
+ | FunctionInvocationService // TODO(dmaretskyi): Deprecated
29
41
  // TODO(dmaretskyi): Those should be provided at AI-chat call site.
30
42
  | ToolResolverService
31
43
  | ToolExecutionService;
@@ -38,5 +50,5 @@ export namespace AutomationCapabilities {
38
50
  /**
39
51
  * Runtime for executing agents, functions, and triggers.
40
52
  */
41
- export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}/capability/compute-runtime`);
53
+ export const ComputeRuntime = Capability.make<ComputeRuntimeProvider>(`${meta.id}.capability.compute-runtime`);
42
54
  }
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { ActivationEvent } from '@dxos/app-framework';
6
6
 
7
- import { meta } from '../meta';
7
+ import { meta } from '#meta';
8
8
 
9
9
  export namespace AutomationEvents {
10
- export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}/event/compute-runtime-ready`);
10
+ export const ComputeRuntimeReady = ActivationEvent.make(`${meta.id}.event.compute-runtime-ready`);
11
11
  }
@@ -4,20 +4,18 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { Capability } from '@dxos/app-framework';
8
7
  import { Database } from '@dxos/echo';
9
- import { Operation } from '@dxos/operation';
10
8
 
11
- import { meta } from '../meta';
9
+ import { meta } from '#meta';
12
10
 
13
- const TriggerTemplate = Schema.Union(
11
+ export const TriggerTemplate = Schema.Union(
14
12
  Schema.Struct({ type: Schema.Literal('timer'), cron: Schema.String }),
15
13
  Schema.Struct({ type: Schema.Literal('queue'), queueDXN: Schema.Any }),
16
14
  );
17
15
 
18
16
  export namespace AutomationAction {
19
17
  export class CreateTriggerFromTemplate extends Schema.TaggedClass<CreateTriggerFromTemplate>()(
20
- `${meta.id}/action/create-trigger-from-template`,
18
+ `${meta.id}.action.create-trigger-from-template`,
21
19
  {
22
20
  input: Schema.Struct({
23
21
  db: Database.Database,
@@ -31,22 +29,3 @@ export namespace AutomationAction {
31
29
  },
32
30
  ) {}
33
31
  }
34
-
35
- const AUTOMATION_OPERATION = `${meta.id}/operation`;
36
-
37
- export namespace AutomationOperation {
38
- export const CreateTriggerFromTemplate = Operation.make({
39
- meta: { key: `${AUTOMATION_OPERATION}/create-trigger-from-template`, name: 'Create Trigger From Template' },
40
- services: [Capability.Service],
41
- schema: {
42
- input: Schema.Struct({
43
- db: Database.Database,
44
- template: TriggerTemplate,
45
- enabled: Schema.optional(Schema.Boolean),
46
- scriptName: Schema.optional(Schema.String),
47
- input: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })),
48
- }),
49
- output: Schema.Void,
50
- },
51
- });
52
- }
@@ -1,11 +0,0 @@
1
- import {
2
- AutomationPanel,
3
- AutomationPanel_default
4
- } from "./chunk-YWLEY2FD.mjs";
5
- import "./chunk-QW3EM35H.mjs";
6
- import "./chunk-PZNBEKO5.mjs";
7
- export {
8
- AutomationPanel,
9
- AutomationPanel_default as default
10
- };
11
- //# sourceMappingURL=AutomationPanel-FAS6ADCW.mjs.map
@@ -1,56 +0,0 @@
1
- import {
2
- useTriggerRuntimeControls
3
- } from "./chunk-RAF2FJST.mjs";
4
- import "./chunk-JOXPQ27I.mjs";
5
- import {
6
- AutomationPanel
7
- } from "./chunk-YWLEY2FD.mjs";
8
- import "./chunk-QW3EM35H.mjs";
9
- import {
10
- meta
11
- } from "./chunk-PZNBEKO5.mjs";
12
-
13
- // src/components/AutomationSettings.tsx
14
- import React2 from "react";
15
- import { useTranslation as useTranslation2 } from "@dxos/react-ui";
16
- import { ControlPage, ControlSection } from "@dxos/react-ui-form";
17
-
18
- // src/components/TriggerSettings.tsx
19
- import React from "react";
20
- import { Input, useTranslation } from "@dxos/react-ui";
21
- import { ControlItemInput } from "@dxos/react-ui-form";
22
- var TriggersSettings = ({ db }) => {
23
- const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(db);
24
- const { t } = useTranslation(meta.id);
25
- return /* @__PURE__ */ React.createElement("div", {
26
- className: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]"
27
- }, /* @__PURE__ */ React.createElement(ControlItemInput, {
28
- title: t("runtime label"),
29
- description: t("runtime description")
30
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
31
- classNames: "justify-self-end",
32
- checked: isRunning,
33
- onCheckedChange: isRunning ? stop : start
34
- })));
35
- };
36
-
37
- // src/components/AutomationSettings.tsx
38
- var AutomationSettings = (props) => {
39
- const { t } = useTranslation2(meta.id);
40
- return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
41
- title: t("automation verbose label", {
42
- ns: meta.id
43
- }),
44
- description: t("automation description", {
45
- ns: meta.id
46
- })
47
- }, /* @__PURE__ */ React2.createElement(AutomationPanel, props), /* @__PURE__ */ React2.createElement(TriggersSettings, {
48
- db: props.space.db
49
- })));
50
- };
51
- var AutomationSettings_default = AutomationSettings;
52
- export {
53
- AutomationSettings,
54
- AutomationSettings_default as default
55
- };
56
- //# sourceMappingURL=AutomationSettings-XN2OIYWL.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/AutomationSettings.tsx", "../../../src/components/TriggerSettings.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { AutomationPanel, type AutomationPanelProps } from './AutomationPanel';\nimport { TriggersSettings } from './TriggerSettings';\n\nexport const AutomationSettings = (props: AutomationPanelProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('automation verbose label', { ns: meta.id })}\n description={t('automation description', { ns: meta.id })}\n >\n <AutomationPanel {...props} />\n <TriggersSettings db={props.space.db} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default AutomationSettings;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Database } from '@dxos/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { ControlItemInput } from '@dxos/react-ui-form';\n\nimport { useTriggerRuntimeControls } from '../hooks';\nimport { meta } from '../meta';\n\nexport const TriggersSettings = ({ db }: { db: Database.Database }) => {\n const { triggers, isRunning, start, stop } = useTriggerRuntimeControls(db);\n const { t } = useTranslation(meta.id);\n\n return (\n <div className='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>\n <ControlItemInput title={t('runtime label')} description={t('runtime description')}>\n <Input.Switch classNames='justify-self-end' checked={isRunning} onCheckedChange={isRunning ? stop : start} />\n </ControlItemInput>\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;AAIA,OAAOA,YAAW;AAElB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,sBAAsB;;;ACH5C,OAAOC,WAAW;AAGlB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,wBAAwB;AAK1B,IAAMC,mBAAmB,CAAC,EAAEC,GAAE,MAA6B;AAChE,QAAM,EAAEC,UAAUC,WAAWC,OAAOC,KAAI,IAAKC,0BAA0BL,EAAAA;AACvE,QAAM,EAAEM,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,SACE,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACC,kBAAAA;IAAiBC,OAAOP,EAAE,eAAA;IAAkBQ,aAAaR,EAAE,qBAAA;KAC1D,sBAAA,cAACS,MAAMC,QAAM;IAACC,YAAW;IAAmBC,SAAShB;IAAWiB,iBAAiBjB,YAAYE,OAAOD;;AAI5G;;;ADVO,IAAMiB,qBAAqB,CAACC,UAAAA;AACjC,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,SACE,gBAAAC,OAAA,cAACC,aAAAA,MACC,gBAAAD,OAAA,cAACE,gBAAAA;IACCC,OAAOP,EAAE,4BAA4B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IACnDM,aAAaT,EAAE,0BAA0B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAEvD,gBAAAC,OAAA,cAACM,iBAAoBX,KAAAA,GACrB,gBAAAK,OAAA,cAACO,kBAAAA;IAAiBC,IAAIb,MAAMc,MAAMD;;AAI1C;AAEA,IAAA,6BAAed;",
6
- "names": ["React", "useTranslation", "ControlPage", "ControlSection", "React", "Input", "useTranslation", "ControlItemInput", "TriggersSettings", "db", "triggers", "isRunning", "start", "stop", "useTriggerRuntimeControls", "t", "useTranslation", "meta", "id", "div", "className", "ControlItemInput", "title", "description", "Input", "Switch", "classNames", "checked", "onCheckedChange", "AutomationSettings", "props", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "AutomationPanel", "TriggersSettings", "db", "space"]
7
- }
@@ -1,129 +0,0 @@
1
- import {
2
- FunctionsPanel
3
- } from "./chunk-BFUIVUQH.mjs";
4
- import {
5
- meta
6
- } from "./chunk-PZNBEKO5.mjs";
7
-
8
- // src/components/FunctionsContainer.tsx
9
- import React2 from "react";
10
- import { useTranslation as useTranslation2 } from "@dxos/react-ui";
11
- import { ControlPage, ControlSection } from "@dxos/react-ui-form";
12
-
13
- // src/components/FunctionsRegistry/FunctionsRegistry.tsx
14
- import * as Schema from "effect/Schema";
15
- import { useState } from "react";
16
- import React, { useCallback } from "react";
17
- import { Function } from "@dxos/functions";
18
- import { getDeployedFunctions } from "@dxos/functions-runtime/edge";
19
- import { useClient } from "@dxos/react-client";
20
- import { Filter, Query, useQuery } from "@dxos/react-client/echo";
21
- import { useAsyncEffect } from "@dxos/react-ui";
22
- import { IconButton, useTranslation } from "@dxos/react-ui";
23
- import { controlItemClasses } from "@dxos/react-ui-form";
24
- import { List } from "@dxos/react-ui-list";
25
- import { ghostHover, mx } from "@dxos/ui-theme";
26
- var grid = "grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]";
27
- var FunctionsRegistry = ({ space }) => {
28
- const client = useClient();
29
- const [loading, setLoading] = useState(true);
30
- const [functions, setFunctions] = useState([]);
31
- const { t } = useTranslation(meta.id);
32
- const dbFunctions = useQuery(space.db, Filter.type(Function.Function));
33
- const state = (func) => {
34
- const dbFunction = dbFunctions.find((f) => f.key === func.key);
35
- if (!dbFunction) {
36
- return "import";
37
- }
38
- if (dbFunction.version === func.version && dbFunction.updated === func.updated) {
39
- return "none";
40
- }
41
- return "update";
42
- };
43
- useAsyncEffect(async () => {
44
- setLoading(true);
45
- const functions2 = await getDeployedFunctions(client, true);
46
- setFunctions(functions2);
47
- setLoading(false);
48
- }, []);
49
- const hanleImportOrUpdate = useCallback(async (func) => {
50
- const functions2 = await space.db.query(Query.type(Function.Function, {
51
- key: func.key
52
- })).run();
53
- const [existingFunc] = functions2;
54
- if (!existingFunc) {
55
- space.db.add(func);
56
- return;
57
- }
58
- Function.setFrom(existingFunc, func);
59
- }, [
60
- space
61
- ]);
62
- return /* @__PURE__ */ React.createElement("div", {
63
- role: "none",
64
- className: mx(controlItemClasses)
65
- }, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
66
- items: functions,
67
- isItem: Schema.is(Function.Function),
68
- getId: (func) => func.id
69
- }, ({ items }) => /* @__PURE__ */ React.createElement("div", {
70
- role: "list",
71
- className: "flex flex-col is-full"
72
- }, items?.map((func) => /* @__PURE__ */ React.createElement(List.Item, {
73
- key: func.id,
74
- item: func,
75
- classNames: mx(grid, ghostHover, "items-center", "pli-2", "min-bs-[3rem]")
76
- }, /* @__PURE__ */ React.createElement("div", {
77
- className: "flex flex-col truncate"
78
- }, /* @__PURE__ */ React.createElement(List.ItemTitle, {
79
- classNames: "truncate"
80
- }, func.name), /* @__PURE__ */ React.createElement("div", {
81
- className: "text-xs text-description truncate"
82
- }, func.key)), /* @__PURE__ */ React.createElement("div", {
83
- className: "flex flex-col truncate"
84
- }, /* @__PURE__ */ React.createElement("div", {
85
- className: "text-xs text-description truncate"
86
- }, func.version), /* @__PURE__ */ React.createElement("div", {
87
- className: "text-xs text-description truncate"
88
- }, func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : "")), /* @__PURE__ */ React.createElement(IconButton, {
89
- iconOnly: true,
90
- icon: state(func) === "update" ? "ph--arrows-clockwise--regular" : "ph--download--regular",
91
- label: state(func) === "update" ? t("update function button label") : t("import function button label"),
92
- disabled: state(func) === "none",
93
- onClick: () => hanleImportOrUpdate(func)
94
- }))))), functions.length === 0 && !loading && /* @__PURE__ */ React.createElement("div", {
95
- className: "text-center plb-4 text-gray-500"
96
- }, t("no functions found")), loading && /* @__PURE__ */ React.createElement("div", {
97
- className: "text-center plb-4 text-gray-500"
98
- }, t("loading functions")));
99
- };
100
-
101
- // src/components/FunctionsContainer.tsx
102
- var FunctionsContainer = ({ space }) => {
103
- const { t } = useTranslation2(meta.id);
104
- return /* @__PURE__ */ React2.createElement(ControlPage, null, /* @__PURE__ */ React2.createElement(ControlSection, {
105
- title: t("functions verbose label", {
106
- ns: meta.id
107
- }),
108
- description: t("functions description", {
109
- ns: meta.id
110
- })
111
- }, /* @__PURE__ */ React2.createElement(FunctionsPanel, {
112
- space
113
- })), /* @__PURE__ */ React2.createElement(ControlSection, {
114
- title: t("functions registry verbose label", {
115
- ns: meta.id
116
- }),
117
- description: t("functions registry description", {
118
- ns: meta.id
119
- })
120
- }, /* @__PURE__ */ React2.createElement(FunctionsRegistry, {
121
- space
122
- })));
123
- };
124
- var FunctionsContainer_default = FunctionsContainer;
125
- export {
126
- FunctionsContainer,
127
- FunctionsContainer_default as default
128
- };
129
- //# sourceMappingURL=FunctionsContainer-6QLC7JP4.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/FunctionsContainer.tsx", "../../../src/components/FunctionsRegistry/FunctionsRegistry.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Space } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\n\nimport { FunctionsPanel } from './FunctionsPanel';\nimport { FunctionsRegistry } from './FunctionsRegistry';\n\nexport const FunctionsContainer = ({ space }: { space: Space }) => {\n const { t } = useTranslation(meta.id);\n return (\n <ControlPage>\n <ControlSection\n title={t('functions verbose label', { ns: meta.id })}\n description={t('functions description', { ns: meta.id })}\n >\n <FunctionsPanel space={space} />\n </ControlSection>\n <ControlSection\n title={t('functions registry verbose label', { ns: meta.id })}\n description={t('functions registry description', { ns: meta.id })}\n >\n <FunctionsRegistry space={space} />\n </ControlSection>\n </ControlPage>\n );\n};\n\nexport default FunctionsContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport { useState } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Function } from '@dxos/functions';\nimport { getDeployedFunctions } from '@dxos/functions-runtime/edge';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, Query, type Space, useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\nimport { IconButton, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_1fr_auto] min-bs-[2.5rem]';\n\ntype FunctionsRegistryProps = {\n space: Space;\n};\n\nexport const FunctionsRegistry = ({ space }: FunctionsRegistryProps) => {\n const client = useClient();\n const [loading, setLoading] = useState(true);\n const [functions, setFunctions] = useState<Function.Function[]>([]);\n const { t } = useTranslation(meta.id);\n\n const dbFunctions = useQuery(space.db, Filter.type(Function.Function));\n\n const state = (func: Function.Function) => {\n const dbFunction = dbFunctions.find((f) => f.key === func.key);\n if (!dbFunction) {\n return 'import';\n }\n if (dbFunction.version === func.version && dbFunction.updated === func.updated) {\n return 'none';\n }\n return 'update';\n };\n\n useAsyncEffect(async () => {\n setLoading(true);\n const functions = await getDeployedFunctions(client, true);\n setFunctions(functions);\n setLoading(false);\n }, []);\n\n const hanleImportOrUpdate = useCallback(\n async (func: Function.Function) => {\n const functions = await space.db.query(Query.type(Function.Function, { key: func.key })).run();\n const [existingFunc] = functions;\n if (!existingFunc) {\n space.db.add(func);\n return;\n }\n Function.setFrom(existingFunc, func);\n },\n [space],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n {functions.length > 0 && (\n <List.Root<Function.Function> items={functions} isItem={Schema.is(Function.Function)} getId={(func) => func.id}>\n {({ items }) => (\n <div role='list' className='flex flex-col is-full'>\n {items?.map((func) => (\n <List.Item<Function.Function>\n key={func.id}\n item={func}\n classNames={mx(grid, ghostHover, 'items-center', 'pli-2', 'min-bs-[3rem]')}\n >\n <div className='flex flex-col truncate'>\n <List.ItemTitle classNames='truncate'>{func.name}</List.ItemTitle>\n <div className='text-xs text-description truncate'>{func.key}</div>\n </div>\n <div className='flex flex-col truncate'>\n <div className='text-xs text-description truncate'>{func.version}</div>\n <div className='text-xs text-description truncate'>\n {func.updated ? `Uploaded ${new Date(func.updated).toLocaleString()}` : ''}\n </div>\n </div>\n\n <IconButton\n iconOnly\n icon={state(func) === 'update' ? 'ph--arrows-clockwise--regular' : 'ph--download--regular'}\n label={\n state(func) === 'update' ? t('update function button label') : t('import function button label')\n }\n disabled={state(func) === 'none'}\n onClick={() => hanleImportOrUpdate(func)}\n />\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {functions.length === 0 && !loading && (\n <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>\n )}\n {loading && <div className='text-center plb-4 text-gray-500'>{t('loading functions')}</div>}\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,OAAOA,YAAW;AAGlB,SAASC,kBAAAA,uBAAsB;AAC/B,SAASC,aAAaC,sBAAsB;;;ACJ5C,YAAYC,YAAY;AACxB,SAASC,gBAAgB;AACzB,OAAOC,SAASC,mBAAmB;AAEnC,SAASC,gBAAgB;AACzB,SAASC,4BAA4B;AACrC,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,OAAmBC,gBAAgB;AACpD,SAASC,sBAAsB;AAC/B,SAASC,YAAYC,sBAAsB;AAC3C,SAASC,0BAA0B;AACnC,SAASC,YAAY;AACrB,SAASC,YAAYC,UAAU;AAI/B,IAAMC,OAAO;AAMN,IAAMC,oBAAoB,CAAC,EAAEC,MAAK,MAA0B;AACjE,QAAMC,SAASC,UAAAA;AACf,QAAM,CAACC,SAASC,UAAAA,IAAcC,SAAS,IAAA;AACvC,QAAM,CAACC,WAAWC,YAAAA,IAAgBF,SAA8B,CAAA,CAAE;AAClE,QAAM,EAAEG,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,QAAMC,cAAcC,SAASb,MAAMc,IAAIC,OAAOC,KAAKC,SAASA,QAAQ,CAAA;AAEpE,QAAMC,QAAQ,CAACC,SAAAA;AACb,UAAMC,aAAaR,YAAYS,KAAK,CAACC,MAAMA,EAAEC,QAAQJ,KAAKI,GAAG;AAC7D,QAAI,CAACH,YAAY;AACf,aAAO;IACT;AACA,QAAIA,WAAWI,YAAYL,KAAKK,WAAWJ,WAAWK,YAAYN,KAAKM,SAAS;AAC9E,aAAO;IACT;AACA,WAAO;EACT;AAEAC,iBAAe,YAAA;AACbtB,eAAW,IAAA;AACX,UAAME,aAAY,MAAMqB,qBAAqB1B,QAAQ,IAAA;AACrDM,iBAAaD,UAAAA;AACbF,eAAW,KAAA;EACb,GAAG,CAAA,CAAE;AAEL,QAAMwB,sBAAsBC,YAC1B,OAAOV,SAAAA;AACL,UAAMb,aAAY,MAAMN,MAAMc,GAAGgB,MAAMC,MAAMf,KAAKC,SAASA,UAAU;MAAEM,KAAKJ,KAAKI;IAAI,CAAA,CAAA,EAAIS,IAAG;AAC5F,UAAM,CAACC,YAAAA,IAAgB3B;AACvB,QAAI,CAAC2B,cAAc;AACjBjC,YAAMc,GAAGoB,IAAIf,IAAAA;AACb;IACF;AACAF,aAASkB,QAAQF,cAAcd,IAAAA;EACjC,GACA;IAACnB;GAAM;AAGT,SACE,sBAAA,cAACoC,OAAAA;IAAIC,MAAK;IAAOC,WAAWC,GAAGC,kBAAAA;KAC5BlC,UAAUmC,SAAS,KAClB,sBAAA,cAACC,KAAKC,MAAI;IAAoBC,OAAOtC;IAAWuC,QAAeC,UAAG7B,SAASA,QAAQ;IAAG8B,OAAO,CAAC5B,SAASA,KAAKR;KACzG,CAAC,EAAEiC,MAAK,MACP,sBAAA,cAACR,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACxBM,OAAOI,IAAI,CAAC7B,SACX,sBAAA,cAACuB,KAAKO,MAAI;IACR1B,KAAKJ,KAAKR;IACVuC,MAAM/B;IACNgC,YAAYZ,GAAGzC,MAAMsD,YAAY,gBAAgB,SAAS,eAAA;KAE1D,sBAAA,cAAChB,OAAAA;IAAIE,WAAU;KACb,sBAAA,cAACI,KAAKW,WAAS;IAACF,YAAW;KAAYhC,KAAKmC,IAAI,GAChD,sBAAA,cAAClB,OAAAA;IAAIE,WAAU;KAAqCnB,KAAKI,GAAG,CAAA,GAE9D,sBAAA,cAACa,OAAAA;IAAIE,WAAU;KACb,sBAAA,cAACF,OAAAA;IAAIE,WAAU;KAAqCnB,KAAKK,OAAO,GAChE,sBAAA,cAACY,OAAAA;IAAIE,WAAU;KACZnB,KAAKM,UAAU,YAAY,IAAI8B,KAAKpC,KAAKM,OAAO,EAAE+B,eAAc,CAAA,KAAO,EAAA,CAAA,GAI5E,sBAAA,cAACC,YAAAA;IACCC,UAAAA;IACAC,MAAMzC,MAAMC,IAAAA,MAAU,WAAW,kCAAkC;IACnEyC,OACE1C,MAAMC,IAAAA,MAAU,WAAWX,EAAE,8BAAA,IAAkCA,EAAE,8BAAA;IAEnEqD,UAAU3C,MAAMC,IAAAA,MAAU;IAC1B2C,SAAS,MAAMlC,oBAAoBT,IAAAA;UAShDb,UAAUmC,WAAW,KAAK,CAACtC,WAC1B,sBAAA,cAACiC,OAAAA;IAAIE,WAAU;KAAmC9B,EAAE,oBAAA,CAAA,GAErDL,WAAW,sBAAA,cAACiC,OAAAA;IAAIE,WAAU;KAAmC9B,EAAE,mBAAA,CAAA,CAAA;AAGtE;;;AD/FO,IAAMuD,qBAAqB,CAAC,EAAEC,MAAK,MAAoB;AAC5D,QAAM,EAAEC,EAAC,IAAKC,gBAAeC,KAAKC,EAAE;AACpC,SACE,gBAAAC,OAAA,cAACC,aAAAA,MACC,gBAAAD,OAAA,cAACE,gBAAAA;IACCC,OAAOP,EAAE,2BAA2B;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IAClDM,aAAaT,EAAE,yBAAyB;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAEtD,gBAAAC,OAAA,cAACM,gBAAAA;IAAeX;OAElB,gBAAAK,OAAA,cAACE,gBAAAA;IACCC,OAAOP,EAAE,oCAAoC;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;IAC3DM,aAAaT,EAAE,kCAAkC;MAAEQ,IAAIN,KAAKC;IAAG,CAAA;KAE/D,gBAAAC,OAAA,cAACO,mBAAAA;IAAkBZ;;AAI3B;AAEA,IAAA,6BAAeD;",
6
- "names": ["React", "useTranslation", "ControlPage", "ControlSection", "Schema", "useState", "React", "useCallback", "Function", "getDeployedFunctions", "useClient", "Filter", "Query", "useQuery", "useAsyncEffect", "IconButton", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsRegistry", "space", "client", "useClient", "loading", "setLoading", "useState", "functions", "setFunctions", "t", "useTranslation", "meta", "id", "dbFunctions", "useQuery", "db", "Filter", "type", "Function", "state", "func", "dbFunction", "find", "f", "key", "version", "updated", "useAsyncEffect", "getDeployedFunctions", "hanleImportOrUpdate", "useCallback", "query", "Query", "run", "existingFunc", "add", "setFrom", "div", "role", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "is", "getId", "map", "Item", "item", "classNames", "ghostHover", "ItemTitle", "name", "Date", "toLocaleString", "IconButton", "iconOnly", "icon", "label", "disabled", "onClick", "FunctionsContainer", "space", "t", "useTranslation", "meta", "id", "React", "ControlPage", "ControlSection", "title", "ns", "description", "FunctionsPanel", "FunctionsRegistry"]
7
- }
@@ -1,10 +0,0 @@
1
- import {
2
- FunctionsPanel,
3
- FunctionsPanel_default
4
- } from "./chunk-BFUIVUQH.mjs";
5
- import "./chunk-PZNBEKO5.mjs";
6
- export {
7
- FunctionsPanel,
8
- FunctionsPanel_default as default
9
- };
10
- //# sourceMappingURL=FunctionsPanel-ZX4J75UM.mjs.map
@@ -1,84 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-PZNBEKO5.mjs";
4
-
5
- // src/capabilities/app-graph-builder/app-graph-builder.ts
6
- import * as Effect from "effect/Effect";
7
- import { Capability, Common } from "@dxos/app-framework";
8
- import { Script } from "@dxos/functions";
9
- import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
10
- import { GraphBuilder, NodeMatcher } from "@dxos/plugin-graph";
11
- import { meta as spaceMeta } from "@dxos/plugin-space";
12
- var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
13
- const extensions = yield* Effect.all([
14
- GraphBuilder.createExtension({
15
- id: `${meta.id}/space-settings-automation`,
16
- match: NodeMatcher.whenNodeType(`${spaceMeta.id}/settings`),
17
- connector: (node) => Effect.succeed([
18
- {
19
- id: `automation-${node.id}`,
20
- type: `${meta.id}/space-settings-automation`,
21
- data: `${meta.id}/space-settings-automation`,
22
- properties: {
23
- label: [
24
- "automation panel label",
25
- {
26
- ns: meta.id
27
- }
28
- ],
29
- icon: "ph--lightning--regular"
30
- }
31
- }
32
- ])
33
- }),
34
- GraphBuilder.createExtension({
35
- id: `${meta.id}/space-settings-functions`,
36
- match: NodeMatcher.whenNodeType(`${spaceMeta.id}/settings`),
37
- connector: (node) => Effect.succeed([
38
- {
39
- id: `functions-${node.id}`,
40
- type: `${meta.id}/space-settings-functions`,
41
- data: `${meta.id}/space-settings-functions`,
42
- properties: {
43
- label: [
44
- "functions panel label",
45
- {
46
- ns: meta.id
47
- }
48
- ],
49
- icon: "ph--function--regular"
50
- }
51
- }
52
- ])
53
- }),
54
- GraphBuilder.createTypeExtension({
55
- id: `${meta.id}/script-companion`,
56
- type: Script.Script,
57
- connector: (script) => Effect.succeed([
58
- {
59
- id: [
60
- script.id,
61
- "automation"
62
- ].join(ATTENDABLE_PATH_SEPARATOR),
63
- type: PLANK_COMPANION_TYPE,
64
- data: "automation",
65
- properties: {
66
- label: [
67
- "script automation label",
68
- {
69
- ns: meta.id
70
- }
71
- ],
72
- icon: "ph--lightning--regular",
73
- disposition: "hidden"
74
- }
75
- }
76
- ])
77
- })
78
- ]);
79
- return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);
80
- }));
81
- export {
82
- app_graph_builder_default as default
83
- };
84
- //# sourceMappingURL=app-graph-builder-LAQMEBMH.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability, Common } from '@dxos/app-framework';\nimport { Script } from '@dxos/functions';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { GraphBuilder, NodeMatcher } from '@dxos/plugin-graph';\nimport { meta as spaceMeta } from '@dxos/plugin-space';\n\nimport { meta } from '../../meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: `${meta.id}/space-settings-automation`,\n match: NodeMatcher.whenNodeType(`${spaceMeta.id}/settings`),\n connector: (node) =>\n Effect.succeed([\n {\n id: `automation-${node.id}`,\n type: `${meta.id}/space-settings-automation`,\n data: `${meta.id}/space-settings-automation`,\n properties: {\n label: ['automation panel label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n },\n },\n ]),\n }),\n GraphBuilder.createExtension({\n id: `${meta.id}/space-settings-functions`,\n match: NodeMatcher.whenNodeType(`${spaceMeta.id}/settings`),\n connector: (node) =>\n Effect.succeed([\n {\n id: `functions-${node.id}`,\n type: `${meta.id}/space-settings-functions`,\n data: `${meta.id}/space-settings-functions`,\n properties: {\n label: ['functions panel label', { ns: meta.id }],\n icon: 'ph--function--regular',\n },\n },\n ]),\n }),\n GraphBuilder.createTypeExtension({\n id: `${meta.id}/script-companion`,\n type: Script.Script,\n connector: (script) =>\n Effect.succeed([\n {\n id: [script.id, 'automation'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'automation',\n properties: {\n label: ['script automation label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n disposition: 'hidden',\n },\n },\n ]),\n }),\n ]);\n\n return Capability.contributes(Common.Capability.AppGraphBuilder, extensions);\n }),\n);\n"],
5
- "mappings": ";;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,YAAYC,cAAc;AACnC,SAASC,cAAc;AACvB,SAASC,2BAA2BC,4BAA4B;AAChE,SAASC,cAAcC,mBAAmB;AAC1C,SAASC,QAAQC,iBAAiB;AAIlC,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCC,aAAaC,gBAAgB;MAC3BC,IAAI,GAAGC,KAAKD,EAAE;MACdE,OAAOC,YAAYC,aAAa,GAAGC,UAAUL,EAAE,WAAW;MAC1DM,WAAW,CAACC,SACHC,eAAQ;QACb;UACER,IAAI,cAAcO,KAAKP,EAAE;UACzBS,MAAM,GAAGR,KAAKD,EAAE;UAChBU,MAAM,GAAGT,KAAKD,EAAE;UAChBW,YAAY;YACVC,OAAO;cAAC;cAA0B;gBAAEC,IAAIZ,KAAKD;cAAG;;YAChDc,MAAM;UACR;QACF;OACD;IACL,CAAA;IACAhB,aAAaC,gBAAgB;MAC3BC,IAAI,GAAGC,KAAKD,EAAE;MACdE,OAAOC,YAAYC,aAAa,GAAGC,UAAUL,EAAE,WAAW;MAC1DM,WAAW,CAACC,SACHC,eAAQ;QACb;UACER,IAAI,aAAaO,KAAKP,EAAE;UACxBS,MAAM,GAAGR,KAAKD,EAAE;UAChBU,MAAM,GAAGT,KAAKD,EAAE;UAChBW,YAAY;YACVC,OAAO;cAAC;cAAyB;gBAAEC,IAAIZ,KAAKD;cAAG;;YAC/Cc,MAAM;UACR;QACF;OACD;IACL,CAAA;IACAhB,aAAaiB,oBAAoB;MAC/Bf,IAAI,GAAGC,KAAKD,EAAE;MACdS,MAAMO,OAAOA;MACbV,WAAW,CAACW,WACHT,eAAQ;QACb;UACER,IAAI;YAACiB,OAAOjB;YAAI;YAAckB,KAAKC,yBAAAA;UACnCV,MAAMW;UACNV,MAAM;UACNC,YAAY;YACVC,OAAO;cAAC;cAA2B;gBAAEC,IAAIZ,KAAKD;cAAG;;YACjDc,MAAM;YACNO,aAAa;UACf;QACF;OACD;IACL,CAAA;GACD;AAED,SAAO5B,WAAW6B,YAAYC,OAAO9B,WAAW+B,iBAAiB5B,UAAAA;AACnE,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "Common", "Script", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "GraphBuilder", "NodeMatcher", "meta", "spaceMeta", "Capability", "makeModule", "fnUntraced", "extensions", "all", "GraphBuilder", "createExtension", "id", "meta", "match", "NodeMatcher", "whenNodeType", "spaceMeta", "connector", "node", "succeed", "type", "data", "properties", "label", "ns", "icon", "createTypeExtension", "Script", "script", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "disposition", "contributes", "Common", "AppGraphBuilder"]
7
- }
@@ -1,14 +0,0 @@
1
- // src/components/index.ts
2
- import { lazy } from "react";
3
- var AutomationPanel = lazy(() => import("./AutomationPanel-FAS6ADCW.mjs"));
4
- var AutomationSettings = lazy(() => import("./AutomationSettings-XN2OIYWL.mjs"));
5
- var FunctionsContainer = lazy(() => import("./FunctionsContainer-6QLC7JP4.mjs"));
6
- var FunctionsPanel = lazy(() => import("./FunctionsPanel-ZX4J75UM.mjs"));
7
-
8
- export {
9
- AutomationPanel,
10
- AutomationSettings,
11
- FunctionsContainer,
12
- FunctionsPanel
13
- };
14
- //# sourceMappingURL=chunk-54PANILA.mjs.map