@dxos/plugin-routine 0.0.0

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 (403) hide show
  1. package/LICENSE +105 -0
  2. package/PLUGIN.mdl +475 -0
  3. package/README.md +15 -0
  4. package/dist/lib/neutral/RoutineArticle-UNTMV4CC.mjs +95 -0
  5. package/dist/lib/neutral/RoutineArticle-UNTMV4CC.mjs.map +7 -0
  6. package/dist/lib/neutral/RoutineCompanion-ZZ6WMY7I.mjs +249 -0
  7. package/dist/lib/neutral/RoutineCompanion-ZZ6WMY7I.mjs.map +7 -0
  8. package/dist/lib/neutral/RoutinePlugin.mjs +10 -0
  9. package/dist/lib/neutral/RoutinePlugin.mjs.map +7 -0
  10. package/dist/lib/neutral/RoutinePlugin.node.mjs +1133 -0
  11. package/dist/lib/neutral/RoutinePlugin.node.mjs.map +7 -0
  12. package/dist/lib/neutral/RoutinePlugin.workerd.mjs +36 -0
  13. package/dist/lib/neutral/RoutinePlugin.workerd.mjs.map +7 -0
  14. package/dist/lib/neutral/RoutineSettings-ZJOM4F3S.mjs +48 -0
  15. package/dist/lib/neutral/RoutineSettings-ZJOM4F3S.mjs.map +7 -0
  16. package/dist/lib/neutral/RoutineTraceCompanion-5U6R7LJE.mjs +236 -0
  17. package/dist/lib/neutral/RoutineTraceCompanion-5U6R7LJE.mjs.map +7 -0
  18. package/dist/lib/neutral/SkillArticle-WWDNKW2Z.mjs +27 -0
  19. package/dist/lib/neutral/SkillArticle-WWDNKW2Z.mjs.map +7 -0
  20. package/dist/lib/neutral/app-graph-builder-FALWLZTI.mjs +90 -0
  21. package/dist/lib/neutral/app-graph-builder-FALWLZTI.mjs.map +7 -0
  22. package/dist/lib/neutral/capabilities/index.mjs +25 -0
  23. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  24. package/dist/lib/neutral/capabilities/node.mjs +19 -0
  25. package/dist/lib/neutral/capabilities/node.mjs.map +7 -0
  26. package/dist/lib/neutral/chunk-674LDIUJ.mjs +9 -0
  27. package/dist/lib/neutral/chunk-674LDIUJ.mjs.map +7 -0
  28. package/dist/lib/neutral/chunk-CNYAPXUW.mjs +65 -0
  29. package/dist/lib/neutral/chunk-CNYAPXUW.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-HLO4LYXT.mjs +44 -0
  31. package/dist/lib/neutral/chunk-HLO4LYXT.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  33. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-ODQDVFMZ.mjs +8 -0
  35. package/dist/lib/neutral/chunk-ODQDVFMZ.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-R7J2MU2M.mjs +263 -0
  37. package/dist/lib/neutral/chunk-R7J2MU2M.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-WLNL77C7.mjs +14 -0
  39. package/dist/lib/neutral/chunk-WLNL77C7.mjs.map +7 -0
  40. package/dist/lib/neutral/components/index.mjs +1921 -0
  41. package/dist/lib/neutral/components/index.mjs.map +7 -0
  42. package/dist/lib/neutral/containers/index.mjs +17 -0
  43. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  44. package/dist/lib/neutral/create-object-V23KVDMJ.mjs +25 -0
  45. package/dist/lib/neutral/create-object-V23KVDMJ.mjs.map +7 -0
  46. package/dist/lib/neutral/create-routine-I67BYJA2.mjs +38 -0
  47. package/dist/lib/neutral/create-routine-I67BYJA2.mjs.map +7 -0
  48. package/dist/lib/neutral/create-trigger-from-template-U3KNS77V.mjs +70 -0
  49. package/dist/lib/neutral/create-trigger-from-template-U3KNS77V.mjs.map +7 -0
  50. package/dist/lib/neutral/hooks/index.mjs +47 -0
  51. package/dist/lib/neutral/hooks/index.mjs.map +7 -0
  52. package/dist/lib/neutral/index.mjs +27 -0
  53. package/dist/lib/neutral/index.mjs.map +7 -0
  54. package/dist/lib/neutral/layer-specs-ADQCTTRT.mjs +135 -0
  55. package/dist/lib/neutral/layer-specs-ADQCTTRT.mjs.map +7 -0
  56. package/dist/lib/neutral/meta.json +1 -0
  57. package/dist/lib/neutral/meta.mjs +8 -0
  58. package/dist/lib/neutral/meta.mjs.map +7 -0
  59. package/dist/lib/neutral/navigation-resolver-KQIWUH6F.mjs +18 -0
  60. package/dist/lib/neutral/navigation-resolver-KQIWUH6F.mjs.map +7 -0
  61. package/dist/lib/neutral/operation-handler-QKLJSDCQ.mjs +13 -0
  62. package/dist/lib/neutral/operation-handler-QKLJSDCQ.mjs.map +7 -0
  63. package/dist/lib/neutral/operations/index.mjs +8 -0
  64. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  65. package/dist/lib/neutral/plugin.mjs +16 -0
  66. package/dist/lib/neutral/plugin.mjs.map +7 -0
  67. package/dist/lib/neutral/react-surface-GMO7I7YE.mjs +67 -0
  68. package/dist/lib/neutral/react-surface-GMO7I7YE.mjs.map +7 -0
  69. package/dist/lib/neutral/registry-sync-PHBU6CH2.mjs +86 -0
  70. package/dist/lib/neutral/registry-sync-PHBU6CH2.mjs.map +7 -0
  71. package/dist/lib/neutral/run-routine-HJWXIWLJ.mjs +37 -0
  72. package/dist/lib/neutral/run-routine-HJWXIWLJ.mjs.map +7 -0
  73. package/dist/lib/neutral/templates-IIUCEBAX.mjs +49 -0
  74. package/dist/lib/neutral/templates-IIUCEBAX.mjs.map +7 -0
  75. package/dist/lib/neutral/testing.mjs +8 -0
  76. package/dist/lib/neutral/testing.mjs.map +7 -0
  77. package/dist/lib/neutral/translations.mjs +115 -0
  78. package/dist/lib/neutral/translations.mjs.map +7 -0
  79. package/dist/lib/neutral/trigger-runtime-controller-7FOTH2NP.mjs +77 -0
  80. package/dist/lib/neutral/trigger-runtime-controller-7FOTH2NP.mjs.map +7 -0
  81. package/dist/lib/neutral/types/index.mjs +17 -0
  82. package/dist/lib/neutral/types/index.mjs.map +7 -0
  83. package/dist/types/dx.config.d.ts +28 -0
  84. package/dist/types/dx.config.d.ts.map +1 -0
  85. package/dist/types/src/RoutinePlugin.d.ts +4 -0
  86. package/dist/types/src/RoutinePlugin.d.ts.map +1 -0
  87. package/dist/types/src/RoutinePlugin.node.d.ts +4 -0
  88. package/dist/types/src/RoutinePlugin.node.d.ts.map +1 -0
  89. package/dist/types/src/RoutinePlugin.test.d.ts +2 -0
  90. package/dist/types/src/RoutinePlugin.test.d.ts.map +1 -0
  91. package/dist/types/src/RoutinePlugin.workerd.d.ts +4 -0
  92. package/dist/types/src/RoutinePlugin.workerd.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/app-graph-builder.d.ts +5 -0
  94. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/create-object.d.ts +5 -0
  96. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/create-object.test.d.ts +2 -0
  98. package/dist/types/src/capabilities/create-object.test.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/index.d.ts +12 -0
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/layer-specs.d.ts +5 -0
  102. package/dist/types/src/capabilities/layer-specs.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/navigation-resolver.d.ts +5 -0
  104. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/node.d.ts +9 -0
  106. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  108. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  110. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/registry-sync.d.ts +21 -0
  112. package/dist/types/src/capabilities/registry-sync.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/templates.d.ts +5 -0
  114. package/dist/types/src/capabilities/templates.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/trigger-runtime-controller.d.ts +5 -0
  116. package/dist/types/src/capabilities/trigger-runtime-controller.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts +2 -0
  118. package/dist/types/src/capabilities/trigger-runtime-controller.test.d.ts.map +1 -0
  119. package/dist/types/src/commands/index.d.ts +2 -0
  120. package/dist/types/src/commands/index.d.ts.map +1 -0
  121. package/dist/types/src/commands/trigger/create/index.d.ts +25 -0
  122. package/dist/types/src/commands/trigger/create/index.d.ts.map +1 -0
  123. package/dist/types/src/commands/trigger/create/queue.d.ts +13 -0
  124. package/dist/types/src/commands/trigger/create/queue.d.ts.map +1 -0
  125. package/dist/types/src/commands/trigger/create/subscription.d.ts +15 -0
  126. package/dist/types/src/commands/trigger/create/subscription.d.ts.map +1 -0
  127. package/dist/types/src/commands/trigger/create/timer.d.ts +13 -0
  128. package/dist/types/src/commands/trigger/create/timer.d.ts.map +1 -0
  129. package/dist/types/src/commands/trigger/index.d.ts +57 -0
  130. package/dist/types/src/commands/trigger/index.d.ts.map +1 -0
  131. package/dist/types/src/commands/trigger/list.d.ts +7 -0
  132. package/dist/types/src/commands/trigger/list.d.ts.map +1 -0
  133. package/dist/types/src/commands/trigger/options.d.ts +10 -0
  134. package/dist/types/src/commands/trigger/options.d.ts.map +1 -0
  135. package/dist/types/src/commands/trigger/remove.d.ts +8 -0
  136. package/dist/types/src/commands/trigger/remove.d.ts.map +1 -0
  137. package/dist/types/src/commands/trigger/update/index.d.ts +28 -0
  138. package/dist/types/src/commands/trigger/update/index.d.ts.map +1 -0
  139. package/dist/types/src/commands/trigger/update/queue.d.ts +13 -0
  140. package/dist/types/src/commands/trigger/update/queue.d.ts.map +1 -0
  141. package/dist/types/src/commands/trigger/update/subscription.d.ts +15 -0
  142. package/dist/types/src/commands/trigger/update/subscription.d.ts.map +1 -0
  143. package/dist/types/src/commands/trigger/update/timer.d.ts +13 -0
  144. package/dist/types/src/commands/trigger/update/timer.d.ts.map +1 -0
  145. package/dist/types/src/commands/trigger/util.d.ts +46 -0
  146. package/dist/types/src/commands/trigger/util.d.ts.map +1 -0
  147. package/dist/types/src/components/CreateRoutinePanel/CreateRoutinePanel.d.ts +14 -0
  148. package/dist/types/src/components/CreateRoutinePanel/CreateRoutinePanel.d.ts.map +1 -0
  149. package/dist/types/src/components/CreateRoutinePanel/index.d.ts +2 -0
  150. package/dist/types/src/components/CreateRoutinePanel/index.d.ts.map +1 -0
  151. package/dist/types/src/components/InstructionsEditor/InstructionsEditor.d.ts +16 -0
  152. package/dist/types/src/components/InstructionsEditor/InstructionsEditor.d.ts.map +1 -0
  153. package/dist/types/src/components/InstructionsEditor/InstructionsEditor.stories.d.ts +17 -0
  154. package/dist/types/src/components/InstructionsEditor/InstructionsEditor.stories.d.ts.map +1 -0
  155. package/dist/types/src/components/InstructionsEditor/index.d.ts +2 -0
  156. package/dist/types/src/components/InstructionsEditor/index.d.ts.map +1 -0
  157. package/dist/types/src/components/MasterDetail/MasterDetail.d.ts +51 -0
  158. package/dist/types/src/components/MasterDetail/MasterDetail.d.ts.map +1 -0
  159. package/dist/types/src/components/MasterDetail/MasterDetail.stories.d.ts +16 -0
  160. package/dist/types/src/components/MasterDetail/MasterDetail.stories.d.ts.map +1 -0
  161. package/dist/types/src/components/MasterDetail/index.d.ts +2 -0
  162. package/dist/types/src/components/MasterDetail/index.d.ts.map +1 -0
  163. package/dist/types/src/components/RoutineForm/RoutineForm.d.ts +25 -0
  164. package/dist/types/src/components/RoutineForm/RoutineForm.d.ts.map +1 -0
  165. package/dist/types/src/components/RoutineForm/index.d.ts +2 -0
  166. package/dist/types/src/components/RoutineForm/index.d.ts.map +1 -0
  167. package/dist/types/src/components/Schedule/Schedule.d.ts +80 -0
  168. package/dist/types/src/components/Schedule/Schedule.d.ts.map +1 -0
  169. package/dist/types/src/components/Schedule/Schedule.stories.d.ts +23 -0
  170. package/dist/types/src/components/Schedule/Schedule.stories.d.ts.map +1 -0
  171. package/dist/types/src/components/Schedule/cron.d.ts +44 -0
  172. package/dist/types/src/components/Schedule/cron.d.ts.map +1 -0
  173. package/dist/types/src/components/Schedule/cron.test.d.ts +2 -0
  174. package/dist/types/src/components/Schedule/cron.test.d.ts.map +1 -0
  175. package/dist/types/src/components/Schedule/index.d.ts +4 -0
  176. package/dist/types/src/components/Schedule/index.d.ts.map +1 -0
  177. package/dist/types/src/components/Schedule/types.d.ts +66 -0
  178. package/dist/types/src/components/Schedule/types.d.ts.map +1 -0
  179. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +13 -0
  180. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -0
  181. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +19 -0
  182. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -0
  183. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +21 -0
  184. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -0
  185. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +16 -0
  186. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -0
  187. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts +12 -0
  188. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  189. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  190. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  191. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  192. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  193. package/dist/types/src/components/TemplateEditor/index.d.ts +2 -0
  194. package/dist/types/src/components/TemplateEditor/index.d.ts.map +1 -0
  195. package/dist/types/src/components/TemplateEditor/types.d.ts +18 -0
  196. package/dist/types/src/components/TemplateEditor/types.d.ts.map +1 -0
  197. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +24 -0
  198. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -0
  199. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts +25 -0
  200. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -0
  201. package/dist/types/src/components/TriggerEditor/TriggerKindSelector.d.ts +15 -0
  202. package/dist/types/src/components/TriggerEditor/TriggerKindSelector.d.ts.map +1 -0
  203. package/dist/types/src/components/TriggerEditor/TriggerKindSelector.stories.d.ts +15 -0
  204. package/dist/types/src/components/TriggerEditor/TriggerKindSelector.stories.d.ts.map +1 -0
  205. package/dist/types/src/components/TriggerEditor/index.d.ts +2 -0
  206. package/dist/types/src/components/TriggerEditor/index.d.ts.map +1 -0
  207. package/dist/types/src/components/index.d.ts +8 -0
  208. package/dist/types/src/components/index.d.ts.map +1 -0
  209. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts +14 -0
  210. package/dist/types/src/containers/RoutineArticle/RoutineArticle.d.ts.map +1 -0
  211. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts +20 -0
  212. package/dist/types/src/containers/RoutineArticle/RoutineArticle.stories.d.ts.map +1 -0
  213. package/dist/types/src/containers/RoutineArticle/index.d.ts +2 -0
  214. package/dist/types/src/containers/RoutineArticle/index.d.ts.map +1 -0
  215. package/dist/types/src/containers/RoutineCompanion/RoutineCompanion.d.ts +17 -0
  216. package/dist/types/src/containers/RoutineCompanion/RoutineCompanion.d.ts.map +1 -0
  217. package/dist/types/src/containers/RoutineCompanion/RoutineCompanion.stories.d.ts +15 -0
  218. package/dist/types/src/containers/RoutineCompanion/RoutineCompanion.stories.d.ts.map +1 -0
  219. package/dist/types/src/containers/RoutineCompanion/index.d.ts +3 -0
  220. package/dist/types/src/containers/RoutineCompanion/index.d.ts.map +1 -0
  221. package/dist/types/src/containers/RoutineSettings/RoutineSettings.d.ts +10 -0
  222. package/dist/types/src/containers/RoutineSettings/RoutineSettings.d.ts.map +1 -0
  223. package/dist/types/src/containers/RoutineSettings/index.d.ts +2 -0
  224. package/dist/types/src/containers/RoutineSettings/index.d.ts.map +1 -0
  225. package/dist/types/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.d.ts +9 -0
  226. package/dist/types/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.d.ts.map +1 -0
  227. package/dist/types/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.stories.d.ts +15 -0
  228. package/dist/types/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.stories.d.ts.map +1 -0
  229. package/dist/types/src/containers/RoutineTraceCompanion/index.d.ts +2 -0
  230. package/dist/types/src/containers/RoutineTraceCompanion/index.d.ts.map +1 -0
  231. package/dist/types/src/containers/RoutineTraceCompanion/runs.d.ts +34 -0
  232. package/dist/types/src/containers/RoutineTraceCompanion/runs.d.ts.map +1 -0
  233. package/dist/types/src/containers/RoutineTraceCompanion/runs.test.d.ts +2 -0
  234. package/dist/types/src/containers/RoutineTraceCompanion/runs.test.d.ts.map +1 -0
  235. package/dist/types/src/containers/RoutineTraceCompanion/useRoutineRuns.d.ts +11 -0
  236. package/dist/types/src/containers/RoutineTraceCompanion/useRoutineRuns.d.ts.map +1 -0
  237. package/dist/types/src/containers/SkillArticle/SkillArticle.d.ts +6 -0
  238. package/dist/types/src/containers/SkillArticle/SkillArticle.d.ts.map +1 -0
  239. package/dist/types/src/containers/SkillArticle/index.d.ts +2 -0
  240. package/dist/types/src/containers/SkillArticle/index.d.ts.map +1 -0
  241. package/dist/types/src/containers/index.d.ts +7 -0
  242. package/dist/types/src/containers/index.d.ts.map +1 -0
  243. package/dist/types/src/hooks/index.d.ts +2 -0
  244. package/dist/types/src/hooks/index.d.ts.map +1 -0
  245. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts +12 -0
  246. package/dist/types/src/hooks/useTriggerRuntimeControls.d.ts.map +1 -0
  247. package/dist/types/src/index.d.ts +4 -0
  248. package/dist/types/src/index.d.ts.map +1 -0
  249. package/dist/types/src/meta.d.ts +33 -0
  250. package/dist/types/src/meta.d.ts.map +1 -0
  251. package/dist/types/src/operations/create-routine.d.ts +5 -0
  252. package/dist/types/src/operations/create-routine.d.ts.map +1 -0
  253. package/dist/types/src/operations/create-trigger-from-template.d.ts +5 -0
  254. package/dist/types/src/operations/create-trigger-from-template.d.ts.map +1 -0
  255. package/dist/types/src/operations/index.d.ts +3 -0
  256. package/dist/types/src/operations/index.d.ts.map +1 -0
  257. package/dist/types/src/operations/run-routine.d.ts +5 -0
  258. package/dist/types/src/operations/run-routine.d.ts.map +1 -0
  259. package/dist/types/src/paths.d.ts +5 -0
  260. package/dist/types/src/paths.d.ts.map +1 -0
  261. package/dist/types/src/plugin.d.ts +4 -0
  262. package/dist/types/src/plugin.d.ts.map +1 -0
  263. package/dist/types/src/templates/index.d.ts +11 -0
  264. package/dist/types/src/templates/index.d.ts.map +1 -0
  265. package/dist/types/src/testing/index.d.ts +2 -0
  266. package/dist/types/src/testing/index.d.ts.map +1 -0
  267. package/dist/types/src/testing/test-functions.d.ts +328 -0
  268. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  269. package/dist/types/src/testing.d.ts +2 -0
  270. package/dist/types/src/testing.d.ts.map +1 -0
  271. package/dist/types/src/translations.d.ts +3 -0
  272. package/dist/types/src/translations.d.ts.map +1 -0
  273. package/dist/types/src/types/Routine.d.ts +55 -0
  274. package/dist/types/src/types/Routine.d.ts.map +1 -0
  275. package/dist/types/src/types/Routine.test.d.ts +2 -0
  276. package/dist/types/src/types/Routine.test.d.ts.map +1 -0
  277. package/dist/types/src/types/RoutineCapabilities.d.ts +44 -0
  278. package/dist/types/src/types/RoutineCapabilities.d.ts.map +1 -0
  279. package/dist/types/src/types/RoutineOperation.d.ts +45 -0
  280. package/dist/types/src/types/RoutineOperation.d.ts.map +1 -0
  281. package/dist/types/src/types/index.d.ts +5 -0
  282. package/dist/types/src/types/index.d.ts.map +1 -0
  283. package/dist/types/src/types/schema.d.ts +33 -0
  284. package/dist/types/src/types/schema.d.ts.map +1 -0
  285. package/dist/types/src/util/index.d.ts +3 -0
  286. package/dist/types/src/util/index.d.ts.map +1 -0
  287. package/dist/types/src/util/routines-for-object.d.ts +22 -0
  288. package/dist/types/src/util/routines-for-object.d.ts.map +1 -0
  289. package/dist/types/src/util/routines-for-object.test.d.ts +2 -0
  290. package/dist/types/src/util/routines-for-object.test.d.ts.map +1 -0
  291. package/dist/types/src/util/run-instructions.d.ts +5 -0
  292. package/dist/types/src/util/run-instructions.d.ts.map +1 -0
  293. package/dist/types/src/util/run-instructions.test.d.ts +2 -0
  294. package/dist/types/src/util/run-instructions.test.d.ts.map +1 -0
  295. package/dist/types/tsconfig.tsbuildinfo +1 -0
  296. package/dx.config.ts +33 -0
  297. package/package.json +196 -0
  298. package/src/RoutinePlugin.node.ts +48 -0
  299. package/src/RoutinePlugin.test.ts +27 -0
  300. package/src/RoutinePlugin.tsx +58 -0
  301. package/src/RoutinePlugin.workerd.ts +24 -0
  302. package/src/capabilities/app-graph-builder.ts +80 -0
  303. package/src/capabilities/create-object.test.ts +18 -0
  304. package/src/capabilities/create-object.ts +26 -0
  305. package/src/capabilities/index.ts +22 -0
  306. package/src/capabilities/layer-specs.ts +190 -0
  307. package/src/capabilities/navigation-resolver.ts +21 -0
  308. package/src/capabilities/node.ts +19 -0
  309. package/src/capabilities/operation-handler.ts +16 -0
  310. package/src/capabilities/react-surface.tsx +66 -0
  311. package/src/capabilities/registry-sync.ts +114 -0
  312. package/src/capabilities/templates.ts +17 -0
  313. package/src/capabilities/trigger-runtime-controller.test.ts +107 -0
  314. package/src/capabilities/trigger-runtime-controller.ts +126 -0
  315. package/src/commands/index.ts +5 -0
  316. package/src/commands/trigger/create/index.ts +14 -0
  317. package/src/commands/trigger/create/queue.ts +87 -0
  318. package/src/commands/trigger/create/subscription.ts +126 -0
  319. package/src/commands/trigger/create/timer.ts +90 -0
  320. package/src/commands/trigger/index.ts +16 -0
  321. package/src/commands/trigger/list.ts +69 -0
  322. package/src/commands/trigger/options.ts +47 -0
  323. package/src/commands/trigger/remove.ts +45 -0
  324. package/src/commands/trigger/update/index.ts +14 -0
  325. package/src/commands/trigger/update/queue.ts +191 -0
  326. package/src/commands/trigger/update/subscription.ts +278 -0
  327. package/src/commands/trigger/update/timer.ts +194 -0
  328. package/src/commands/trigger/util.ts +412 -0
  329. package/src/components/CreateRoutinePanel/CreateRoutinePanel.tsx +68 -0
  330. package/src/components/CreateRoutinePanel/index.ts +5 -0
  331. package/src/components/InstructionsEditor/InstructionsEditor.stories.tsx +69 -0
  332. package/src/components/InstructionsEditor/InstructionsEditor.tsx +107 -0
  333. package/src/components/InstructionsEditor/index.ts +5 -0
  334. package/src/components/MasterDetail/MasterDetail.stories.tsx +100 -0
  335. package/src/components/MasterDetail/MasterDetail.tsx +175 -0
  336. package/src/components/MasterDetail/index.ts +5 -0
  337. package/src/components/RoutineForm/RoutineForm.tsx +293 -0
  338. package/src/components/RoutineForm/index.ts +5 -0
  339. package/src/components/Schedule/Schedule.stories.tsx +73 -0
  340. package/src/components/Schedule/Schedule.tsx +527 -0
  341. package/src/components/Schedule/cron.test.ts +230 -0
  342. package/src/components/Schedule/cron.ts +337 -0
  343. package/src/components/Schedule/index.ts +8 -0
  344. package/src/components/Schedule/types.ts +124 -0
  345. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +93 -0
  346. package/src/components/TemplateEditor/TemplateEditor.tsx +77 -0
  347. package/src/components/TemplateEditor/TemplateForm.stories.tsx +76 -0
  348. package/src/components/TemplateEditor/TemplateForm.tsx +204 -0
  349. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +274 -0
  350. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  351. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  352. package/src/components/TemplateEditor/index.ts +5 -0
  353. package/src/components/TemplateEditor/types.tsx +28 -0
  354. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +122 -0
  355. package/src/components/TriggerEditor/TriggerEditor.tsx +365 -0
  356. package/src/components/TriggerEditor/TriggerKindSelector.stories.tsx +42 -0
  357. package/src/components/TriggerEditor/TriggerKindSelector.tsx +87 -0
  358. package/src/components/TriggerEditor/index.ts +5 -0
  359. package/src/components/index.ts +11 -0
  360. package/src/containers/RoutineArticle/RoutineArticle.stories.tsx +146 -0
  361. package/src/containers/RoutineArticle/RoutineArticle.tsx +109 -0
  362. package/src/containers/RoutineArticle/index.ts +5 -0
  363. package/src/containers/RoutineCompanion/RoutineCompanion.stories.tsx +82 -0
  364. package/src/containers/RoutineCompanion/RoutineCompanion.tsx +342 -0
  365. package/src/containers/RoutineCompanion/index.ts +6 -0
  366. package/src/containers/RoutineSettings/RoutineSettings.tsx +65 -0
  367. package/src/containers/RoutineSettings/index.ts +5 -0
  368. package/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.stories.tsx +133 -0
  369. package/src/containers/RoutineTraceCompanion/RoutineTraceCompanion.tsx +125 -0
  370. package/src/containers/RoutineTraceCompanion/index.ts +5 -0
  371. package/src/containers/RoutineTraceCompanion/runs.test.ts +140 -0
  372. package/src/containers/RoutineTraceCompanion/runs.ts +135 -0
  373. package/src/containers/RoutineTraceCompanion/useRoutineRuns.ts +50 -0
  374. package/src/containers/SkillArticle/SkillArticle.tsx +29 -0
  375. package/src/containers/SkillArticle/index.ts +5 -0
  376. package/src/containers/index.ts +11 -0
  377. package/src/hooks/index.ts +6 -0
  378. package/src/hooks/useTriggerRuntimeControls.ts +70 -0
  379. package/src/index.ts +7 -0
  380. package/src/meta.ts +9 -0
  381. package/src/operations/create-routine.ts +39 -0
  382. package/src/operations/create-trigger-from-template.ts +68 -0
  383. package/src/operations/index.ts +11 -0
  384. package/src/operations/run-routine.ts +45 -0
  385. package/src/paths.ts +18 -0
  386. package/src/plugin.ts +11 -0
  387. package/src/templates/index.ts +48 -0
  388. package/src/testing/index.ts +5 -0
  389. package/src/testing/test-functions.ts +76 -0
  390. package/src/testing.ts +7 -0
  391. package/src/translations.ts +125 -0
  392. package/src/types/Routine.test.ts +51 -0
  393. package/src/types/Routine.ts +144 -0
  394. package/src/types/RoutineCapabilities.ts +51 -0
  395. package/src/types/RoutineOperation.ts +104 -0
  396. package/src/types/index.ts +9 -0
  397. package/src/types/schema.ts +31 -0
  398. package/src/util/index.ts +6 -0
  399. package/src/util/routines-for-object.test.ts +109 -0
  400. package/src/util/routines-for-object.ts +89 -0
  401. package/src/util/run-instructions.test.ts +23 -0
  402. package/src/util/run-instructions.ts +12 -0
  403. package/src/vite-env.d.ts +10 -0
package/LICENSE ADDED
@@ -0,0 +1,105 @@
1
+ # Functional Source License, Version 1.1, ALv2 Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-Apache-2.0
6
+
7
+ ## Notice
8
+
9
+ Copyright 2026 DXOS
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the Apache License, Version 2.0 that is effective on the second anniversary of
91
+ the date we make the Software available. On or after that date, you may use the
92
+ Software under the Apache License, Version 2.0, in which case the following
93
+ will apply:
94
+
95
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96
+ this file except in compliance with the License.
97
+
98
+ You may obtain a copy of the License at
99
+
100
+ http://www.apache.org/licenses/LICENSE-2.0
101
+
102
+ Unless required by applicable law or agreed to in writing, software distributed
103
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
105
+ specific language governing permissions and limitations under the License.
package/PLUGIN.mdl ADDED
@@ -0,0 +1,475 @@
1
+ ---
2
+ id: org.dxos.plugin.automation
3
+ name: AutomationPlugin
4
+ version: 0.1.0
5
+ ---
6
+
7
+ A workflow automation engine plugin for DXOS Composer that enables event-driven
8
+ pipelines connecting ECHO objects to persistent compute functions.
9
+
10
+ Triggers listen for ECHO mutations, timer schedules, incoming feeds (email, webhook),
11
+ or data subscriptions and invoke `PersistentOperation` handlers when their conditions
12
+ fire. Each trigger carries optional structured input and is dispatched by a
13
+ per-space `TriggerDispatcher` that runs locally in the browser or is delegated to
14
+ the DXOS edge when the space `computeEnvironment` is `edge`.
15
+
16
+ The plugin integrates with the `@dxos/compute` operation registry and the
17
+ `@dxos/functions-runtime` execution layer. Skill, operation-handler, and
18
+ toolkit contributions from other plugins are gathered at application scope and
19
+ merged before being offered to space-level operation registries, so any plugin
20
+ that contributes a `Capabilities.OperationHandler` automatically becomes
21
+ invocable from an automation trigger.
22
+
23
+ Users interact with automations through the `AutomationPanel` settings surface,
24
+ which lists active triggers for a space (or for a specific ECHO object) and
25
+ opens the `TriggerEditor` form to create, configure, and enable/disable
26
+ individual triggers.
27
+
28
+ ## Extensions
29
+
30
+ The following extension dialects are used in this document.
31
+ Each extension is defined in the Appendix or resolved via its URI.
32
+
33
+ | Term | URI |
34
+ |-------------|-------------------------------|
35
+ | `type` | `org.dxos.mdl.type@1.0` |
36
+ | `feat` | `org.dxos.mdl.feat@1.0` |
37
+ | `test` | `org.dxos.mdl.test@1.0` |
38
+ | `component` | `org.dxos.mdl.component@1.0` |
39
+ | `op` | `org.dxos.mdl.op@1.0` |
40
+
41
+ ## Types
42
+
43
+ Existing types used by this plugin (defined in `@dxos/compute` and `@dxos/functions-runtime`):
44
+
45
+ | Type | Source | Role in AutomationPlugin |
46
+ |----------------------|---------------------------|--------------------------------------------------------------------|
47
+ | `Trigger` | `@dxos/compute` | Persistent trigger configuration (spec, function ref, input, enabled) |
48
+ | `PersistentOperation`| `@dxos/compute` | Registered compute function callable from a trigger |
49
+ | `Trace.Message` | `@dxos/compute` | Execution trace record appended after each trigger run |
50
+ | `Script` | `@dxos/compute` | Source script that produces one or more `PersistentOperation`s |
51
+ | `Feed` | `@dxos/echo` | Feed object that a `feed`-spec trigger listens to |
52
+ | `ComputeGraph` | `@dxos/conductor` | Visual workflow graph selectable as a trigger function |
53
+
54
+ New types defined by this plugin:
55
+
56
+ ```mdl
57
+ type TriggerTemplate
58
+ desc: |
59
+ Lightweight description of a trigger's spec used when creating a trigger
60
+ from a pre-defined template (e.g. from a Skill action).
61
+ literals: timer | feed
62
+ fields:
63
+ type: timer | feed
64
+ cron?: string # required when type === timer; cron expression
65
+ feed?: Feed # required when type === feed; the feed to subscribe to
66
+ ```
67
+
68
+ ## Components
69
+
70
+ ```mdl
71
+ component AutomationPanel
72
+ desc: |
73
+ Settings surface that lists all triggers for a space (or filtered to a
74
+ specific ECHO object) and provides inline create / edit / delete via the
75
+ TriggerEditor form. Displayed inside Settings.Panel at the path
76
+ `<spacePath>/settings/org.dxos.plugin.automation.automations`.
77
+ props:
78
+ space: Space
79
+ object?: Obj.Unknown # when set, only triggers matching this object are shown
80
+ initialTrigger?: Trigger # pre-populate TriggerEditor for a new trigger
81
+ onDone?: () => void
82
+ state:
83
+ trigger?: Trigger # trigger currently open in TriggerEditor (undefined = list view)
84
+ selected?: Trigger # the existing trigger being edited (undefined = new)
85
+ slots:
86
+ (none)
87
+ actions:
88
+ handleAdd() # open TriggerEditor with a blank Trigger
89
+ handleSelect(t: Trigger) # open TriggerEditor for an existing trigger
90
+ handleDelete(t: Trigger) # remove trigger from space.db
91
+ handleSave(t: Trigger) # persist new or update selected trigger
92
+ handleCancel()
93
+ handleForceRunTrigger(t: Trigger) # invoke timer trigger immediately
94
+ handleResetCursor(t: Trigger) # clear feed cursor on a feed trigger
95
+ layout: |
96
+ ┌──────────────────────────────────┐
97
+ │ [list view — triggers exist] │
98
+ │ ┌────────────────────────────┐ │
99
+ │ │ ○ fn-name [▶] [✕] │ │
100
+ │ │ ● fn-name [↺] [✕] │ │
101
+ │ └────────────────────────────┘ │
102
+ │ ───────────────────────────── │
103
+ │ [+ New Trigger] │
104
+ ├──────────────────────────────────┤
105
+ │ [editor view — trigger selected] │
106
+ │ Settings.Item │
107
+ │ └── TriggerEditor │
108
+ └──────────────────────────────────┘
109
+ ```
110
+
111
+ ```mdl
112
+ component TriggerEditor
113
+ desc: |
114
+ Form-driven editor for a single Trigger. Renders a Form.Root backed by the
115
+ Trigger schema with custom field overrides for function/workflow selection,
116
+ spec kind selector, feed selector, subscription query builder, and
117
+ structured input editor.
118
+ props:
119
+ db: Database
120
+ trigger: Trigger
121
+ types: TypeOption[] # available ECHO types for query builder
122
+ tags: Tag[] # available tags for query builder
123
+ readonlySpec?: boolean # lock spec.kind and spec.query (e.g. editing from an object context)
124
+ onSave: (t: Partial<Trigger>) => void
125
+ onCancel: () => void
126
+ state:
127
+ (managed by Form.Root)
128
+ slots:
129
+ (none)
130
+ ```
131
+
132
+ ```mdl
133
+ component FunctionsPanel
134
+ desc: |
135
+ Settings surface listing all PersistentOperation objects in a space.
136
+ Each row shows the function name, optional source script name, a
137
+ "go to script" icon button, and a delete button.
138
+ props:
139
+ space: Space
140
+ state:
141
+ functions: PersistentOperation[]
142
+ scripts: Script[]
143
+ slots:
144
+ (none)
145
+ actions:
146
+ handleGoToScript(fn: PersistentOperation) # navigate to source Script
147
+ handleDelete(fn: PersistentOperation) # remove function via SpaceOperation
148
+ ```
149
+
150
+ ```mdl
151
+ component TemplateEditor
152
+ desc: |
153
+ Markdown + Handlebars source editor backed by a Ref<Text>. Decorates
154
+ Handlebars tags, DXN/URL tokens, and XML nodes. Reused by Routine and
155
+ Skill article surfaces and by downstream plugins (plugin-script,
156
+ plugin-magazine) via the `@dxos/plugin-routine/components` export.
157
+ props:
158
+ id: string
159
+ source?: Ref<Text>
160
+ lineNumbers?: boolean
161
+ ```
162
+
163
+ ```mdl
164
+ component RoutineProperties
165
+ desc: Object-properties form for a Routine, rendered via ObjectProperties.
166
+ props:
167
+ routine: Routine
168
+ ```
169
+
170
+ ## Surfaces
171
+
172
+ ```mdl
173
+ surface skill -> SkillArticle # article for Skill objects
174
+ surface prompt -> RoutineArticle # article for Routine objects (template editor + run)
175
+ surface prompts -> RoutineList # space-home prompt list; dispatches RunPromptInNewChat
176
+ ```
177
+
178
+ ## Operations
179
+
180
+ ```mdl
181
+ op CreateTriggerFromTemplate
182
+ desc: |
183
+ Creates a new Trigger from a lightweight template, optionally wiring it to
184
+ a named Script's PersistentOperation, and navigates to the automations
185
+ settings panel for the target space.
186
+ input:
187
+ db: Database
188
+ template: TriggerTemplate
189
+ enabled?: boolean # default false
190
+ scriptName?: string # if provided, looks up Script by name and wires function ref
191
+ input?: Record<string, any> # optional structured input forwarded to the trigger
192
+ output: void
193
+ effects: [echo:write, layout:navigate]
194
+ requires: [SpaceOperation.AddObject, LayoutOperation.Open]
195
+ note: |
196
+ Resolves the named Script, finds its linked PersistentOperation, and sets
197
+ trigger.function = Ref.make(fn). Template type determines spec:
198
+ timer → Trigger.specTimer(cron)
199
+ feed → Trigger.specFeed(feed)
200
+ Trigger is added as a hidden object so it does not appear in the main graph.
201
+ ```
202
+
203
+ ```mdl
204
+ op RunPromptInNewChat
205
+ desc: Creates a new chat, binds context objects and skills, then runs a prompt.
206
+ input:
207
+ db: Database
208
+ objects?: Obj[]
209
+ skills?: string[]
210
+ prompt: string | RoutineRef
211
+ background?: boolean
212
+ output: Chat
213
+ effects: [echo:write, ai:infer]
214
+ note: |
215
+ Defined here so Routine UI (RoutineList, RoutineArticle) and downstream
216
+ plugins can dispatch it without depending on plugin-assistant. The handler
217
+ is contributed by plugin-assistant (chat creation + AiContext binding).
218
+ When background is true, the prompt runs via the compute runtime without
219
+ opening the chat UI. The returned Chat can be used to track progress.
220
+ ```
221
+
222
+ ## Features
223
+
224
+ ```mdl
225
+ feat F-1: Trigger Management
226
+
227
+ req F-1.1: User can create a Trigger in any space via AutomationPanel.
228
+ req F-1.2: User can edit an existing Trigger's function, spec, and input.
229
+ req F-1.3: User can delete a Trigger; it is removed from space.db.
230
+ req F-1.4: User can enable or disable a Trigger via an inline toggle.
231
+ req F-1.5:
232
+ when: object context provided to AutomationPanel
233
+ then: only triggers matching that object's type or query are shown
234
+ ```
235
+
236
+ ```mdl
237
+ feat F-2: Trigger Dispatch
238
+
239
+ req F-2.1:
240
+ when: space.properties.computeEnvironment === "local"
241
+ then: TriggerDispatcher starts for that space
242
+
243
+ req F-2.2:
244
+ when: space.properties.computeEnvironment === "edge" or "disabled"
245
+ then: TriggerDispatcher stops for that space
246
+
247
+ req F-2.3:
248
+ when: computeEnvironment changes
249
+ then: any in-flight dispatcher transition is cancelled before the new one starts
250
+
251
+ req F-2.4:
252
+ when: trigger spec.kind === "timer" and enabled === true
253
+ then: TriggerDispatcher fires trigger according to cron expression
254
+
255
+ req F-2.5:
256
+ when: trigger spec.kind === "feed"
257
+ then: TriggerDispatcher processes new messages from the linked Feed
258
+
259
+ req F-2.6:
260
+ when: trigger spec.kind === "subscription"
261
+ then: TriggerDispatcher invokes trigger on matching ECHO object mutations
262
+ ```
263
+
264
+ ```mdl
265
+ feat F-3: Force Run and Cursor Reset
266
+
267
+ req F-3.1:
268
+ when: timer trigger is enabled and computeEnvironment !== "disabled"
269
+ then: user can force-run the trigger immediately from AutomationPanel
270
+
271
+ req F-3.2:
272
+ when: computeEnvironment === "local"
273
+ then: force-run invokes TriggerDispatcher.invokeTrigger directly in-process
274
+
275
+ req F-3.3:
276
+ when: computeEnvironment === "edge"
277
+ then: force-run calls FunctionsServiceClient.forceRunCronTrigger via HTTP
278
+
279
+ req F-3.4:
280
+ when: trigger spec.kind === "feed" and a cursor is stored
281
+ then: user can reset the cursor to reprocess the feed from the beginning
282
+ ```
283
+
284
+ ```mdl
285
+ feat F-4: Operation Registry
286
+
287
+ req F-4.1:
288
+ when: plugin activates
289
+ then: all Capabilities.OperationHandler contributions are merged into a single OperationHandlerProvider
290
+
291
+ req F-4.2: OperationRegistry per space resolves operations from the merged OperationHandlerProvider.
292
+ req F-4.3: Skill registry is populated from AppCapabilities.SkillDefinition contributions.
293
+ req F-4.4: OpaqueToolkit aggregates AppCapabilities.Toolkit contributions for agent invocation.
294
+ ```
295
+
296
+ ```mdl
297
+ feat F-5: Trace Sink
298
+
299
+ req F-5.1:
300
+ when: a trigger executes
301
+ then: execution trace messages are written to the space Feed via FeedTraceSink
302
+
303
+ req F-5.2: FeedTraceSink is contributed to Capabilities.TraceSink and routed via makeRoutingSink.
304
+ ```
305
+
306
+ ```mdl
307
+ feat F-6: Create Trigger From Template
308
+
309
+ req F-6.1:
310
+ when: op:CreateTriggerFromTemplate is invoked
311
+ then: a Trigger is created and added as a hidden ECHO object in the target space
312
+
313
+ req F-6.2:
314
+ when: scriptName is provided
315
+ then: the Trigger.function is wired to the PersistentOperation linked to that Script
316
+
317
+ req F-6.3:
318
+ when: template.type === "timer"
319
+ then: Trigger.spec is set via Trigger.specTimer(template.cron)
320
+
321
+ req F-6.4:
322
+ when: template.type === "feed"
323
+ then: Trigger.spec is set via Trigger.specFeed(template.feed)
324
+
325
+ req F-6.5:
326
+ when: trigger is created
327
+ then: layout navigates to the automations settings panel for the space
328
+ ```
329
+
330
+ ## Acceptance
331
+
332
+ ```mdl
333
+ test T-1: Create trigger via AutomationPanel
334
+ given: AutomationPanel rendered for a space with no triggers
335
+ when: user clicks "New Trigger"
336
+ then:
337
+ - TriggerEditor shown with a blank Trigger
338
+ - selected state is undefined (new trigger mode)
339
+ ```
340
+
341
+ ```mdl
342
+ test T-2: Save new trigger
343
+ given: TriggerEditor open with blank Trigger
344
+ when: user fills in a function and spec, then saves
345
+ then:
346
+ - space.db.add called with a new Trigger
347
+ - list view restored
348
+ - onDone called
349
+ ```
350
+
351
+ ```mdl
352
+ test T-3: Edit existing trigger
353
+ given: AutomationPanel listing one trigger
354
+ when: user clicks the trigger row
355
+ then:
356
+ - TriggerEditor opens pre-populated with that trigger's values
357
+ - selected state holds the original trigger
358
+ - saving calls Obj.update on the original trigger
359
+ ```
360
+
361
+ ```mdl
362
+ test T-4: Enable/disable toggle
363
+ given: AutomationPanel showing trigger with enabled = false
364
+ when: user flips the toggle
365
+ then:
366
+ - Obj.update sets trigger.enabled = true
367
+ - toggle reflects new state immediately
368
+ ```
369
+
370
+ ```mdl
371
+ test T-5: Force run timer trigger (local)
372
+ given: timer trigger enabled, computeEnvironment = "local"
373
+ when: user clicks the force-run button
374
+ then:
375
+ - TriggerDispatcher.invokeTrigger called with a TimerEvent
376
+ - no error surfaced to user
377
+ ```
378
+
379
+ ```mdl
380
+ test T-6: Dispatcher lifecycle on environment change
381
+ given: space computeEnvironment = "local", dispatcher running
382
+ when: space.properties.computeEnvironment changes to "edge"
383
+ then:
384
+ - in-flight transition fiber interrupted
385
+ - TriggerDispatcher.stop() called for that space
386
+ ```
387
+
388
+ ```mdl
389
+ test T-7: CreateTriggerFromTemplate with timer
390
+ given: db contains Script "daily-summary", computeEnvironment = "local"
391
+ when: op:CreateTriggerFromTemplate invoked with template={type:"timer",cron:"0 8 * * *"}, scriptName="daily-summary"
392
+ then:
393
+ - Trigger created with spec.kind === "timer", spec.cron === "0 8 * * *"
394
+ - Trigger.function wired to PersistentOperation linked to "daily-summary" script
395
+ - Trigger added as hidden ECHO object
396
+ - layout navigates to automations settings panel
397
+ ```
398
+
399
+ ```mdl
400
+ test T-8: CreateTriggerFromTemplate with feed
401
+ given: db contains a Feed object "email-feed"
402
+ when: op:CreateTriggerFromTemplate invoked with template={type:"feed",feed:<email-feed>}
403
+ then:
404
+ - Trigger created with spec.kind === "feed", spec.feed === Ref to email-feed
405
+ - Trigger added as hidden ECHO object
406
+ ```
407
+
408
+ ---
409
+
410
+ ## Appendix: Extension Definitions
411
+
412
+ Extension block types used in this document are defined below using
413
+ the core `ext` primitive — the only construct the base language provides.
414
+
415
+ ```mdl
416
+ ext type
417
+ uri: org.dxos.mdl.type@1.0
418
+ desc: A named data structure with typed fields and optional literals.
419
+ fields:
420
+ desc?: Prose
421
+ fields?: FieldMap # name[?]: TypeExpr (# inline comment)
422
+ literals?: UnionList # a | b | c
423
+ extends?: TypeRef[]
424
+ ```
425
+
426
+ ```mdl
427
+ ext feat
428
+ uri: org.dxos.mdl.feat@1.0
429
+ desc: A named feature grouping one or more requirements.
430
+ fields:
431
+ desc?: Prose
432
+ req: RequirementList
433
+ nesting: self # feat blocks may contain feat blocks
434
+ ```
435
+
436
+ ```mdl
437
+ ext test
438
+ uri: org.dxos.mdl.test@1.0
439
+ desc: An acceptance scenario expressed as given / when / then steps.
440
+ fields:
441
+ given?: Step | Step[]
442
+ when?: Step | Step[]
443
+ then: Step | Step[]
444
+ tags?: TagList
445
+ ```
446
+
447
+ ```mdl
448
+ ext component
449
+ uri: org.dxos.mdl.component@1.0
450
+ desc: A UI component with props, internal state, slots, actions, and events.
451
+ fields:
452
+ desc?: Prose
453
+ props?: FieldMap # external inputs (immutable inside component)
454
+ state?: FieldMap # internal reactive state
455
+ slots?: FieldMap # named ReactNode injection points
456
+ actions?: ActionMap # methods the component exposes or handles
457
+ emits?: EventMap # events the component raises to its parent
458
+ layout?: CodeBlock # ASCII sketch of visual structure (non-normative)
459
+ ```
460
+
461
+ ```mdl
462
+ ext op
463
+ uri: org.dxos.mdl.op@1.0
464
+ desc: |
465
+ A named operation with typed inputs, outputs, and declared errors.
466
+ Pure ops have no effects or requires. Effectful ops declare both.
467
+ fields:
468
+ desc?: Prose
469
+ input?: FieldMap # named input parameters
470
+ output?: TypeExpr # return type
471
+ errors?: ErrorMap # name: Prose (when this error occurs)
472
+ effects?: EffectList # echo:read | echo:write | http | fs | ...
473
+ requires?: ServiceList # injected service dependencies
474
+ note?: Prose # implementation guidance (non-normative)
475
+ ```
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # @dxos/plugin-automation
2
+
3
+ Automation plugin.
4
+
5
+ ## DXOS Resources
6
+
7
+ - [Website](https://dxos.org)
8
+ - [Developer Documentation](https://docs.dxos.org)
9
+ - Talk to us on [Discord](https://dxos.org/discord)
10
+
11
+ ## Contributions
12
+
13
+ Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
14
+
15
+ License: [FSL-1.1-Apache-2.0](./LICENSE) Copyright 2023 © DXOS
@@ -0,0 +1,95 @@
1
+ import "./chunk-J5LGTIGS.mjs";
2
+
3
+ // src/containers/RoutineArticle/RoutineArticle.tsx
4
+ import { Atom, RegistryContext } from "@effect-atom/atom-react";
5
+ import React, { useCallback, useContext, useMemo } from "react";
6
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
7
+ import { Obj, Ref } from "@dxos/echo";
8
+ import { useObject } from "@dxos/react-client/echo";
9
+ import { Panel } from "@dxos/react-ui";
10
+ import { Menu, MenuBuilder, useMenuBuilder } from "@dxos/react-ui-menu";
11
+ import { RoutineForm } from "#components";
12
+ import { meta } from "#meta";
13
+ import { RoutineOperation } from "#types";
14
+ var RoutineArticle = ({ role, attendableId, subject }) => {
15
+ const { invokePromise } = useOperationInvoker();
16
+ const registry = useContext(RegistryContext);
17
+ const [routine] = useObject(subject);
18
+ const db = Obj.getDatabase(subject);
19
+ const runningAtom = useMemo(() => Atom.make(false), []);
20
+ const canRun = useMemo(() => Boolean(routine.spec) && routine.triggers.length > 0, [
21
+ routine.spec,
22
+ routine.triggers
23
+ ]);
24
+ const handleRun = useCallback(() => {
25
+ if (!invokePromise || !db) {
26
+ return;
27
+ }
28
+ const triggerRef = routine.triggers[0];
29
+ registry.set(runningAtom, true);
30
+ void invokePromise(RoutineOperation.RunRoutine, {
31
+ routine: Ref.make(subject)
32
+ }, {
33
+ spaceId: db.spaceId,
34
+ notify: {
35
+ error: [
36
+ "run-error.message",
37
+ {
38
+ ns: meta.profile.key
39
+ }
40
+ ]
41
+ },
42
+ ...triggerRef ? {
43
+ tracing: {
44
+ trigger: triggerRef
45
+ }
46
+ } : {}
47
+ }).finally(() => registry.set(runningAtom, false));
48
+ }, [
49
+ invokePromise,
50
+ db,
51
+ subject,
52
+ routine,
53
+ registry,
54
+ runningAtom
55
+ ]);
56
+ const menuActions = useArticleMenuActions({
57
+ canRun,
58
+ runningAtom,
59
+ handleRun
60
+ });
61
+ if (!db) {
62
+ return null;
63
+ }
64
+ return /* @__PURE__ */ React.createElement(Menu.Root, {
65
+ ...menuActions,
66
+ attendableId
67
+ }, /* @__PURE__ */ React.createElement(Panel.Root, {
68
+ role
69
+ }, /* @__PURE__ */ React.createElement(Panel.Toolbar, null, /* @__PURE__ */ React.createElement(Menu.Toolbar, {
70
+ className: "dx-document"
71
+ })), /* @__PURE__ */ React.createElement(Panel.Content, null, /* @__PURE__ */ React.createElement(RoutineForm, {
72
+ db,
73
+ routine: subject
74
+ }))));
75
+ };
76
+ var useArticleMenuActions = ({ canRun, runningAtom, handleRun }) => useMenuBuilder((get) => MenuBuilder.make().action("run", {
77
+ label: [
78
+ "run.label",
79
+ {
80
+ ns: meta.profile.key
81
+ }
82
+ ],
83
+ icon: "ph--play--regular",
84
+ disabled: get(runningAtom) || !canRun,
85
+ disposition: "toolbar",
86
+ testId: "routine.toolbar.run"
87
+ }, () => handleRun()).build(), [
88
+ canRun,
89
+ handleRun,
90
+ runningAtom
91
+ ]);
92
+ export {
93
+ RoutineArticle as default
94
+ };
95
+ //# sourceMappingURL=RoutineArticle-UNTMV4CC.mjs.map