@dxos/plugin-automation 0.8.3-main.672df60 → 0.8.3-staging.0fa589b

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 (116) hide show
  1. package/dist/lib/browser/{AutomationContainer-HQK7FTN6.mjs → AutomationContainer-OGNK3HD5.mjs} +5 -7
  2. package/dist/lib/browser/AutomationContainer-OGNK3HD5.mjs.map +7 -0
  3. package/dist/lib/browser/{AutomationPanel-GU37N5LO.mjs → AutomationPanel-PRIIAXD5.mjs} +3 -3
  4. package/dist/lib/browser/{FunctionsContainer-B7RDWVMX.mjs → FunctionsContainer-JY7V7PLF.mjs} +2 -2
  5. package/dist/lib/browser/{FunctionsPanel-LCCPDIT6.mjs → FunctionsPanel-LY4IFKR7.mjs} +2 -2
  6. package/dist/lib/browser/{app-graph-builder-BYECL42X.mjs → app-graph-builder-T34RV5UA.mjs} +3 -3
  7. package/dist/lib/browser/app-graph-builder-T34RV5UA.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-D2ESAYQD.mjs → chunk-C5VOC5EE.mjs} +8 -10
  9. package/dist/lib/browser/chunk-C5VOC5EE.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-4QTXMPBC.mjs → chunk-N5VLW7UZ.mjs} +13 -12
  11. package/dist/lib/browser/chunk-N5VLW7UZ.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-ZTRYR6RJ.mjs → chunk-RHSCK7AU.mjs} +2 -2
  13. package/dist/lib/browser/{chunk-ZTRYR6RJ.mjs.map → chunk-RHSCK7AU.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-ELQ2FX5G.mjs → chunk-VQWJ5UYA.mjs} +5 -5
  15. package/dist/lib/browser/index.mjs +5 -5
  16. package/dist/lib/browser/{intent-resolver-ZRBBYZUX.mjs → intent-resolver-AX46HSU7.mjs} +3 -4
  17. package/dist/lib/browser/intent-resolver-AX46HSU7.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-VKO6PA2P.mjs → react-surface-Z7A272CA.mjs} +7 -11
  20. package/dist/lib/browser/react-surface-Z7A272CA.mjs.map +7 -0
  21. package/dist/lib/node/{AutomationContainer-5J7LJK7L.cjs → AutomationContainer-B7PSJFIS.cjs} +8 -10
  22. package/dist/lib/node/AutomationContainer-B7PSJFIS.cjs.map +7 -0
  23. package/dist/lib/node/{AutomationPanel-NPDBUQ7D.cjs → AutomationPanel-XYLZU4MI.cjs} +8 -8
  24. package/dist/lib/node/{AutomationPanel-NPDBUQ7D.cjs.map → AutomationPanel-XYLZU4MI.cjs.map} +2 -2
  25. package/dist/lib/node/{FunctionsContainer-LNLDZUZ6.cjs → FunctionsContainer-4FGOQW5X.cjs} +6 -6
  26. package/dist/lib/node/{FunctionsPanel-7AOXIQMA.cjs → FunctionsPanel-EWWAZK3W.cjs} +7 -7
  27. package/dist/lib/node/{FunctionsPanel-7AOXIQMA.cjs.map → FunctionsPanel-EWWAZK3W.cjs.map} +2 -2
  28. package/dist/lib/node/{app-graph-builder-DUKR2BRB.cjs → app-graph-builder-5XRIIV7E.cjs} +6 -6
  29. package/dist/lib/node/app-graph-builder-5XRIIV7E.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-WXQAVUBJ.cjs → chunk-6X3XJ4VI.cjs} +5 -5
  31. package/dist/lib/node/{chunk-WXQAVUBJ.cjs.map → chunk-6X3XJ4VI.cjs.map} +3 -3
  32. package/dist/lib/node/{chunk-4O627QZU.cjs → chunk-IXUCZ3YY.cjs} +16 -18
  33. package/dist/lib/node/chunk-IXUCZ3YY.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-O42NQYQT.cjs → chunk-LQ6XK4N5.cjs} +11 -10
  35. package/dist/lib/node/chunk-LQ6XK4N5.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-DOLMQUQ5.cjs → chunk-TH4XDKAY.cjs} +8 -8
  37. package/dist/lib/node/index.cjs +10 -10
  38. package/dist/lib/node/{intent-resolver-JC4Q4TYU.cjs → intent-resolver-EAREQZFE.cjs} +5 -6
  39. package/dist/lib/node/intent-resolver-EAREQZFE.cjs.map +7 -0
  40. package/dist/lib/node/meta.json +1 -1
  41. package/dist/lib/node/{react-surface-HB3MYTCK.cjs → react-surface-OI6CDHEI.cjs} +18 -21
  42. package/dist/lib/node/react-surface-OI6CDHEI.cjs.map +7 -0
  43. package/dist/lib/node-esm/{AutomationContainer-OJGH76X2.mjs → AutomationContainer-ANCUYDDA.mjs} +5 -7
  44. package/dist/lib/node-esm/AutomationContainer-ANCUYDDA.mjs.map +7 -0
  45. package/dist/lib/node-esm/{AutomationPanel-HIWEJUWL.mjs → AutomationPanel-Y3ODAHH7.mjs} +3 -3
  46. package/dist/lib/node-esm/{FunctionsContainer-PPR6XNNR.mjs → FunctionsContainer-25M5VT3J.mjs} +2 -2
  47. package/dist/lib/node-esm/{FunctionsPanel-SBXKWTHR.mjs → FunctionsPanel-HVGF5AJP.mjs} +2 -2
  48. package/dist/lib/node-esm/{app-graph-builder-UAXHKKGW.mjs → app-graph-builder-DYWAKQM3.mjs} +3 -3
  49. package/dist/lib/node-esm/app-graph-builder-DYWAKQM3.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-5IAHBEHR.mjs → chunk-2IH4VB3R.mjs} +2 -2
  51. package/dist/lib/node-esm/{chunk-5IAHBEHR.mjs.map → chunk-2IH4VB3R.mjs.map} +3 -3
  52. package/dist/lib/node-esm/{chunk-P2FKMPRE.mjs → chunk-2T2OZC3A.mjs} +8 -10
  53. package/dist/lib/node-esm/chunk-2T2OZC3A.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-D5HK4XLC.mjs → chunk-UFHDB2OA.mjs} +13 -12
  55. package/dist/lib/node-esm/chunk-UFHDB2OA.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-Z7VAQDEE.mjs → chunk-WJHKFPX2.mjs} +5 -5
  57. package/dist/lib/node-esm/index.mjs +5 -5
  58. package/dist/lib/node-esm/{intent-resolver-KRCXJEDR.mjs → intent-resolver-WXHFNJJI.mjs} +3 -4
  59. package/dist/lib/node-esm/intent-resolver-WXHFNJJI.mjs.map +7 -0
  60. package/dist/lib/node-esm/meta.json +1 -1
  61. package/dist/lib/node-esm/{react-surface-TRKCIZAB.mjs → react-surface-TP6IYSR4.mjs} +7 -11
  62. package/dist/lib/node-esm/react-surface-TP6IYSR4.mjs.map +7 -0
  63. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  65. package/dist/types/src/components/AutomationContainer.d.ts +2 -4
  66. package/dist/types/src/components/AutomationContainer.d.ts.map +1 -1
  67. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +3 -2
  68. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  69. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  71. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  72. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  73. package/dist/types/src/components/index.d.ts +1 -3
  74. package/dist/types/src/components/index.d.ts.map +1 -1
  75. package/dist/types/src/testing/test-functions.d.ts +3 -2
  76. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  77. package/package.json +25 -25
  78. package/src/capabilities/app-graph-builder.ts +2 -2
  79. package/src/capabilities/intent-resolver.ts +2 -3
  80. package/src/capabilities/react-surface.tsx +4 -9
  81. package/src/components/AutomationContainer.tsx +3 -4
  82. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +3 -2
  83. package/src/components/AutomationPanel/AutomationPanel.tsx +52 -53
  84. package/src/components/FunctionsPanel/FunctionsPanel.tsx +24 -22
  85. package/src/components/TriggerEditor/FunctionInputEditor.tsx +6 -5
  86. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +4 -4
  87. package/src/components/TriggerEditor/TriggerEditor.tsx +1 -0
  88. package/src/testing/test-functions.ts +7 -13
  89. package/dist/lib/browser/AutomationContainer-HQK7FTN6.mjs.map +0 -7
  90. package/dist/lib/browser/app-graph-builder-BYECL42X.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-4QTXMPBC.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-D2ESAYQD.mjs.map +0 -7
  93. package/dist/lib/browser/intent-resolver-ZRBBYZUX.mjs.map +0 -7
  94. package/dist/lib/browser/react-surface-VKO6PA2P.mjs.map +0 -7
  95. package/dist/lib/node/AutomationContainer-5J7LJK7L.cjs.map +0 -7
  96. package/dist/lib/node/app-graph-builder-DUKR2BRB.cjs.map +0 -7
  97. package/dist/lib/node/chunk-4O627QZU.cjs.map +0 -7
  98. package/dist/lib/node/chunk-O42NQYQT.cjs.map +0 -7
  99. package/dist/lib/node/intent-resolver-JC4Q4TYU.cjs.map +0 -7
  100. package/dist/lib/node/react-surface-HB3MYTCK.cjs.map +0 -7
  101. package/dist/lib/node-esm/AutomationContainer-OJGH76X2.mjs.map +0 -7
  102. package/dist/lib/node-esm/app-graph-builder-UAXHKKGW.mjs.map +0 -7
  103. package/dist/lib/node-esm/chunk-D5HK4XLC.mjs.map +0 -7
  104. package/dist/lib/node-esm/chunk-P2FKMPRE.mjs.map +0 -7
  105. package/dist/lib/node-esm/intent-resolver-KRCXJEDR.mjs.map +0 -7
  106. package/dist/lib/node-esm/react-surface-TRKCIZAB.mjs.map +0 -7
  107. /package/dist/lib/browser/{AutomationPanel-GU37N5LO.mjs.map → AutomationPanel-PRIIAXD5.mjs.map} +0 -0
  108. /package/dist/lib/browser/{FunctionsContainer-B7RDWVMX.mjs.map → FunctionsContainer-JY7V7PLF.mjs.map} +0 -0
  109. /package/dist/lib/browser/{FunctionsPanel-LCCPDIT6.mjs.map → FunctionsPanel-LY4IFKR7.mjs.map} +0 -0
  110. /package/dist/lib/browser/{chunk-ELQ2FX5G.mjs.map → chunk-VQWJ5UYA.mjs.map} +0 -0
  111. /package/dist/lib/node/{FunctionsContainer-LNLDZUZ6.cjs.map → FunctionsContainer-4FGOQW5X.cjs.map} +0 -0
  112. /package/dist/lib/node/{chunk-DOLMQUQ5.cjs.map → chunk-TH4XDKAY.cjs.map} +0 -0
  113. /package/dist/lib/node-esm/{AutomationPanel-HIWEJUWL.mjs.map → AutomationPanel-Y3ODAHH7.mjs.map} +0 -0
  114. /package/dist/lib/node-esm/{FunctionsContainer-PPR6XNNR.mjs.map → FunctionsContainer-25M5VT3J.mjs.map} +0 -0
  115. /package/dist/lib/node-esm/{FunctionsPanel-SBXKWTHR.mjs.map → FunctionsPanel-HVGF5AJP.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{chunk-Z7VAQDEE.mjs.map → chunk-WJHKFPX2.mjs.map} +0 -0
@@ -26,20 +26,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_HB3MYTCK_exports = {};
30
- __export(react_surface_HB3MYTCK_exports, {
29
+ var react_surface_OI6CDHEI_exports = {};
30
+ __export(react_surface_OI6CDHEI_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_HB3MYTCK_exports);
34
- var import_chunk_DOLMQUQ5 = require("./chunk-DOLMQUQ5.cjs");
35
- var import_chunk_O42NQYQT = require("./chunk-O42NQYQT.cjs");
33
+ module.exports = __toCommonJS(react_surface_OI6CDHEI_exports);
34
+ var import_chunk_TH4XDKAY = require("./chunk-TH4XDKAY.cjs");
35
+ var import_chunk_LQ6XK4N5 = require("./chunk-LQ6XK4N5.cjs");
36
36
  var import_chunk_3EF7MLFX = require("./chunk-3EF7MLFX.cjs");
37
37
  var import_react = __toESM(require("react"));
38
38
  var import_app_framework = require("@dxos/app-framework");
39
- var import_echo_schema = require("@dxos/echo-schema");
39
+ var import_echo = require("@dxos/echo");
40
40
  var import_functions = require("@dxos/functions");
41
- var import_echo = require("@dxos/react-client/echo");
42
- var import_react_ui_stack = require("@dxos/react-ui-stack");
41
+ var import_echo2 = require("@dxos/react-client/echo");
43
42
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
44
43
  (0, import_app_framework.createSurface)({
45
44
  id: `${import_chunk_3EF7MLFX.meta.id}/space-settings-automation`,
@@ -47,12 +46,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
47
46
  filter: (data) => data.subject === `${import_chunk_3EF7MLFX.meta.id}/space-settings-automation`,
48
47
  component: () => {
49
48
  const layout = (0, import_app_framework.useLayout)();
50
- const { spaceId } = (0, import_echo.parseId)(layout.workspace);
51
- const space = (0, import_echo.useSpace)(spaceId);
49
+ const { spaceId } = (0, import_echo2.parseId)(layout.workspace);
50
+ const space = (0, import_echo2.useSpace)(spaceId);
52
51
  if (!space || !spaceId) {
53
52
  return null;
54
53
  }
55
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.AutomationContainer, {
54
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_TH4XDKAY.AutomationContainer, {
56
55
  space
57
56
  });
58
57
  }
@@ -63,12 +62,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
63
62
  filter: (data) => data.subject === `${import_chunk_3EF7MLFX.meta.id}/space-settings-functions`,
64
63
  component: () => {
65
64
  const layout = (0, import_app_framework.useLayout)();
66
- const { spaceId } = (0, import_echo.parseId)(layout.workspace);
67
- const space = (0, import_echo.useSpace)(spaceId);
65
+ const { spaceId } = (0, import_echo2.parseId)(layout.workspace);
66
+ const space = (0, import_echo2.useSpace)(spaceId);
68
67
  if (!space || !spaceId) {
69
68
  return null;
70
69
  }
71
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.FunctionsContainer, {
70
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_TH4XDKAY.FunctionsContainer, {
72
71
  space
73
72
  });
74
73
  }
@@ -76,15 +75,13 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
76
75
  (0, import_app_framework.createSurface)({
77
76
  id: `${import_chunk_3EF7MLFX.meta.id}/companion/automation`,
78
77
  role: "article",
79
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_functions.ScriptType, data.companionTo) && data.subject === "automation",
78
+ filter: (data) => import_echo.Obj.instanceOf(import_functions.ScriptType, data.companionTo) && data.subject === "automation",
80
79
  component: ({ data, role }) => {
81
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
82
- role
83
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.AutomationPanel, {
84
- space: (0, import_echo.getSpace)(data.companionTo),
80
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_TH4XDKAY.AutomationContainer, {
81
+ space: (0, import_echo2.getSpace)(data.companionTo),
85
82
  object: data.companionTo
86
- }));
83
+ });
87
84
  }
88
85
  })
89
86
  ]);
90
- //# sourceMappingURL=react-surface-HB3MYTCK.cjs.map
87
+ //# sourceMappingURL=react-surface-OI6CDHEI.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useLayout } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { getSpace, parseId, useSpace } from '@dxos/react-client/echo';\n\nimport { AutomationContainer, FunctionsContainer } from '../components';\nimport { meta } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${meta.id}/space-settings-automation`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/space-settings-automation`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <AutomationContainer space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/space-settings-functions`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/space-settings-functions`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <FunctionsContainer space={space} />;\n },\n }),\n createSurface({\n id: `${meta.id}/companion/automation`,\n role: 'article',\n filter: (data): data is { companionTo: ScriptType; subject: 'automation' } =>\n Obj.instanceOf(ScriptType, data.companionTo) && data.subject === 'automation',\n component: ({ data, role }) => {\n return <AutomationContainer space={getSpace(data.companionTo)!} object={data.companionTo} />;\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAoE;AACpE,kBAAoB;AACpB,uBAA2B;AAC3B,IAAAA,eAA4C;AAK5C,IAAA,wBAAe,UACbC,kCAAYC,kCAAaC,cAAc;MACrCC,oCAAc;IACZC,IAAI,GAAGC,2BAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKC,YAAY,GAAGJ,2BAAKD,EAAE;IAC1EM,WAAW,MAAA;AACT,YAAMC,aAASC,gCAAAA;AACf,YAAM,EAAEC,QAAO,QAAKC,sBAAQH,OAAOI,SAAS;AAC5C,YAAMC,YAAQC,uBAASJ,OAAAA;AACvB,UAAI,CAACG,SAAS,CAACH,SAAS;AACtB,eAAO;MACT;AAEA,aAAO,6BAAAK,QAAA,cAACC,2CAAAA;QAAoBH;;IAC9B;EACF,CAAA;MACAb,oCAAc;IACZC,IAAI,GAAGC,2BAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SAAsCA,KAAKC,YAAY,GAAGJ,2BAAKD,EAAE;IAC1EM,WAAW,MAAA;AACT,YAAMC,aAASC,gCAAAA;AACf,YAAM,EAAEC,QAAO,QAAKC,sBAAQH,OAAOI,SAAS;AAC5C,YAAMC,YAAQC,uBAASJ,OAAAA;AACvB,UAAI,CAACG,SAAS,CAACH,SAAS;AACtB,eAAO;MACT;AAEA,aAAO,6BAAAK,QAAA,cAACE,0CAAAA;QAAmBJ;;IAC7B;EACF,CAAA;MACAb,oCAAc;IACZC,IAAI,GAAGC,2BAAKD,EAAE;IACdE,MAAM;IACNC,QAAQ,CAACC,SACPa,gBAAIC,WAAWC,6BAAYf,KAAKgB,WAAW,KAAKhB,KAAKC,YAAY;IACnEC,WAAW,CAAC,EAAEF,MAAMF,KAAI,MAAE;AACxB,aAAO,6BAAAY,QAAA,cAACC,2CAAAA;QAAoBH,WAAOS,uBAASjB,KAAKgB,WAAW;QAAIE,QAAQlB,KAAKgB;;IAC/E;EACF,CAAA;CACD;",
6
+ "names": ["import_echo", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "subject", "component", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "React", "AutomationContainer", "FunctionsContainer", "Obj", "instanceOf", "ScriptType", "companionTo", "getSpace", "object"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AutomationPanel
4
- } from "./chunk-P2FKMPRE.mjs";
5
- import "./chunk-D5HK4XLC.mjs";
4
+ } from "./chunk-2T2OZC3A.mjs";
5
+ import "./chunk-UFHDB2OA.mjs";
6
6
  import {
7
7
  AUTOMATION_PLUGIN
8
8
  } from "./chunk-HCCLRNMJ.mjs";
@@ -13,7 +13,7 @@ import React from "react";
13
13
  import { useTranslation } from "@dxos/react-ui";
14
14
  import { ControlSection, ControlPage } from "@dxos/react-ui-form";
15
15
  import { StackItem } from "@dxos/react-ui-stack";
16
- var AutomationContainer = ({ space }) => {
16
+ var AutomationContainer = (props) => {
17
17
  var _effect = _useSignals();
18
18
  try {
19
19
  const { t } = useTranslation(AUTOMATION_PLUGIN);
@@ -26,9 +26,7 @@ var AutomationContainer = ({ space }) => {
26
26
  description: t("automation description", {
27
27
  ns: AUTOMATION_PLUGIN
28
28
  })
29
- }, /* @__PURE__ */ React.createElement(AutomationPanel, {
30
- space
31
- }))));
29
+ }, /* @__PURE__ */ React.createElement(AutomationPanel, props))));
32
30
  } finally {
33
31
  _effect.f();
34
32
  }
@@ -38,4 +36,4 @@ export {
38
36
  AutomationContainer,
39
37
  AutomationContainer_default as default
40
38
  };
41
- //# sourceMappingURL=AutomationContainer-OJGH76X2.mjs.map
39
+ //# sourceMappingURL=AutomationContainer-ANCUYDDA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlSection, ControlPage } from '@dxos/react-ui-form';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { AutomationPanel, type AutomationPanelProps } from './AutomationPanel';\nimport { AUTOMATION_PLUGIN } from '../meta';\n\nexport const AutomationContainer = (props: AutomationPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n return (\n <StackItem.Content classNames='block overflow-y-auto'>\n <ControlPage>\n <ControlSection\n title={t('automation verbose label', { ns: AUTOMATION_PLUGIN })}\n description={t('automation description', { ns: AUTOMATION_PLUGIN })}\n >\n <AutomationPanel {...props} />\n </ControlSection>\n </ControlPage>\n </StackItem.Content>\n );\n};\n\nexport default AutomationContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,gBAAgBC,mBAAmB;AAC5C,SAASC,iBAAiB;AAKnB,IAAMC,sBAAsB,CAACC,UAAAA;;;AAClC,UAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAC7B,WACE,sBAAA,cAACC,UAAUC,SAAO;MAACC,YAAW;OAC5B,sBAAA,cAACC,aAAAA,MACC,sBAAA,cAACC,gBAAAA;MACCC,OAAOR,EAAE,4BAA4B;QAAES,IAAIP;MAAkB,CAAA;MAC7DQ,aAAaV,EAAE,0BAA0B;QAAES,IAAIP;MAAkB,CAAA;OAEjE,sBAAA,cAACS,iBAAoBZ,KAAAA,CAAAA,CAAAA,CAAAA;;;;AAK/B;AAEA,IAAA,8BAAeD;",
6
+ "names": ["React", "useTranslation", "ControlSection", "ControlPage", "StackItem", "AutomationContainer", "props", "t", "useTranslation", "AUTOMATION_PLUGIN", "StackItem", "Content", "classNames", "ControlPage", "ControlSection", "title", "ns", "description", "AutomationPanel"]
7
+ }
@@ -2,11 +2,11 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  AutomationPanel,
4
4
  AutomationPanel_default
5
- } from "./chunk-P2FKMPRE.mjs";
6
- import "./chunk-D5HK4XLC.mjs";
5
+ } from "./chunk-2T2OZC3A.mjs";
6
+ import "./chunk-UFHDB2OA.mjs";
7
7
  import "./chunk-HCCLRNMJ.mjs";
8
8
  export {
9
9
  AutomationPanel,
10
10
  AutomationPanel_default as default
11
11
  };
12
- //# sourceMappingURL=AutomationPanel-HIWEJUWL.mjs.map
12
+ //# sourceMappingURL=AutomationPanel-Y3ODAHH7.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  FunctionsPanel
4
- } from "./chunk-5IAHBEHR.mjs";
4
+ } from "./chunk-2IH4VB3R.mjs";
5
5
  import {
6
6
  AUTOMATION_PLUGIN
7
7
  } from "./chunk-HCCLRNMJ.mjs";
@@ -37,4 +37,4 @@ export {
37
37
  FunctionsContainer,
38
38
  FunctionsContainer_default as default
39
39
  };
40
- //# sourceMappingURL=FunctionsContainer-PPR6XNNR.mjs.map
40
+ //# sourceMappingURL=FunctionsContainer-25M5VT3J.mjs.map
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  FunctionsPanel,
4
4
  FunctionsPanel_default
5
- } from "./chunk-5IAHBEHR.mjs";
5
+ } from "./chunk-2IH4VB3R.mjs";
6
6
  import "./chunk-HCCLRNMJ.mjs";
7
7
  export {
8
8
  FunctionsPanel,
9
9
  FunctionsPanel_default as default
10
10
  };
11
- //# sourceMappingURL=FunctionsPanel-SBXKWTHR.mjs.map
11
+ //# sourceMappingURL=FunctionsPanel-HVGF5AJP.mjs.map
@@ -7,7 +7,7 @@ import {
7
7
  import { Rx } from "@effect-rx/rx-react";
8
8
  import { Option, pipe } from "effect";
9
9
  import { Capabilities, contributes } from "@dxos/app-framework";
10
- import { isInstanceOf } from "@dxos/echo-schema";
10
+ import { Obj } from "@dxos/echo";
11
11
  import { ScriptType } from "@dxos/functions";
12
12
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
13
13
  import { createExtension } from "@dxos/plugin-graph";
@@ -53,7 +53,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
53
53
  }),
54
54
  createExtension({
55
55
  id: `${meta.id}/script-companion`,
56
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => isInstanceOf(ScriptType, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
56
+ connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ScriptType, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
57
57
  {
58
58
  id: [
59
59
  node2.id,
@@ -78,4 +78,4 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
78
78
  export {
79
79
  app_graph_builder_default as default
80
80
  };
81
- //# sourceMappingURL=app-graph-builder-UAXHKKGW.mjs.map
81
+ //# sourceMappingURL=app-graph-builder-DYWAKQM3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { ScriptType } from '@dxos/functions';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension } from '@dxos/plugin-graph';\nimport { SPACE_PLUGIN } from '@dxos/plugin-space';\n\nimport { meta } from '../meta';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/space-settings-automation`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${SPACE_PLUGIN}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\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 Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/space-settings-functions`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.type === `${SPACE_PLUGIN}/settings` ? Option.some(node) : Option.none())),\n Option.map((node) => [\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 Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/script-companion`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ScriptType, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.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 Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;AAIA,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SAASC,cAAcC,mBAAuC;AAC9D,SAASC,WAAW;AACpB,SAASC,kBAAkB;AAC3B,SAASC,sBAAsBC,iCAAiC;AAChE,SAASC,uBAAuB;AAChC,SAASC,oBAAoB;AAI7B,IAAA,4BAAe,CAACC,YACdC,YAAYC,aAAaC,iBAAiB;EACxCC,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKO,SAAS,GAAGC,YAAAA,cAA0BH,OAAOI,KAAKT,KAAAA,IAAQK,OAAOK,KAAI,CAAA,GACpGL,OAAOM,IAAI,CAACX,UAAS;MACnB;QACEH,IAAI,cAAcG,MAAKH,EAAE;QACzBU,MAAM,GAAGT,KAAKD,EAAE;QAChBe,MAAM,GAAGd,KAAKD,EAAE;QAChBgB,YAAY;UACVC,OAAO;YAAC;YAA0B;cAAEC,IAAIjB,KAAKD;YAAG;;UAChDmB,MAAM;QACR;MACF;KACD,GACDX,OAAOY,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACArB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKO,SAAS,GAAGC,YAAAA,cAA0BH,OAAOI,KAAKT,KAAAA,IAAQK,OAAOK,KAAI,CAAA,GACpGL,OAAOM,IAAI,CAACX,UAAS;MACnB;QACEH,IAAI,aAAaG,MAAKH,EAAE;QACxBU,MAAM,GAAGT,KAAKD,EAAE;QAChBe,MAAM,GAAGd,KAAKD,EAAE;QAChBgB,YAAY;UACVC,OAAO;YAAC;YAAyB;cAAEC,IAAIjB,KAAKD;YAAG;;UAC/CmB,MAAM;QACR;MACF;KACD,GACDX,OAAOY,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;EACArB,gBAAgB;IACdC,IAAI,GAAGC,KAAKD,EAAE;IACdE,WAAW,CAACC,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUkB,IAAIC,WAAWC,YAAYpB,MAAKY,IAAI,IAAIP,OAAOI,KAAKT,KAAAA,IAAQK,OAAOK,KAAI,CAAA,GACjGL,OAAOM,IAAI,CAACX,UAAS;MACnB;QACEH,IAAI;UAACG,MAAKH;UAAI;UAAcwB,KAAKC,yBAAAA;QACjCf,MAAMgB;QACNX,MAAM;QACNC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIjB,KAAKD;YAAG;;UACjDmB,MAAM;UACNQ,aAAa;QACf;MACF;KACD,GACDnB,OAAOY,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAGjC,CAAA;CACD;",
6
+ "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "Obj", "ScriptType", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "SPACE_PLUGIN", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "connector", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "type", "SPACE_PLUGIN", "some", "none", "map", "data", "properties", "label", "ns", "icon", "getOrElse", "Obj", "instanceOf", "ScriptType", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "disposition"]
7
+ }
@@ -58,7 +58,7 @@ var FunctionsPanel = ({ space }) => {
58
58
  return /* @__PURE__ */ React.createElement("div", {
59
59
  role: "none",
60
60
  className: mx(controlItemClasses)
61
- }, /* @__PURE__ */ React.createElement(List.Root, {
61
+ }, functions.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
62
62
  items: functions,
63
63
  isItem: Schema.is(FunctionType),
64
64
  getId: (func) => func.id
@@ -92,4 +92,4 @@ export {
92
92
  FunctionsPanel,
93
93
  FunctionsPanel_default
94
94
  };
95
- //# sourceMappingURL=chunk-5IAHBEHR.mjs.map
95
+ //# sourceMappingURL=chunk-2IH4VB3R.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FunctionsPanel/FunctionsPanel.tsx", "../../../src/components/FunctionsPanel/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { FunctionType, ScriptType } from '@dxos/functions';\nimport { Filter, fullyQualifiedId, useQuery, type Space } from '@dxos/react-client/echo';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_auto] min-bs-[2.5rem]';\n\nexport type FunctionsPanelProps = {\n space: Space;\n};\n\nexport const FunctionsPanel = ({ space }: FunctionsPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const functions = useQuery(space, Filter.type(FunctionType));\n const scripts = useQuery(space, Filter.type(ScriptType));\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const functionToScriptMap = useMemo(\n () =>\n functions.reduce(\n (map, func) => {\n const scriptId = func.source?.target?.id;\n if (scriptId) {\n const script = scripts.find((s) => s.id === scriptId);\n if (script) {\n map[func.id] = script;\n }\n }\n return map;\n },\n {} as Record<string, ScriptType>,\n ),\n [functions, scripts],\n );\n\n const getScriptName = useCallback(\n (func: FunctionType) => {\n const script = functionToScriptMap[func.id];\n return script?.name;\n },\n [functionToScriptMap],\n );\n\n const handleGoToScript = useCallback(\n (func: FunctionType) => {\n const script = functionToScriptMap[func.id];\n if (script) {\n void dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [fullyQualifiedId(script)] }));\n }\n },\n [functionToScriptMap, dispatch],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n <List.Root<FunctionType> items={functions} isItem={Schema.is(FunctionType)} getId={(func) => func.id}>\n {({ items }) => (\n <div role='list' className='flex flex-col w-full'>\n {items?.map((func) => (\n <List.Item<FunctionType>\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 {getScriptName(func) && (\n <div className='text-xs text-description truncate'>{getScriptName(func)}</div>\n )}\n </div>\n {functionToScriptMap[func.id] && (\n <Button onClick={() => handleGoToScript(func)}>{t('go to function source button label')}</Button>\n )}\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n\n {functions.length === 0 && <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsPanel } from './FunctionsPanel';\n\nexport * from './FunctionsPanel';\nexport default FunctionsPanel;\n"],
5
- "mappings": ";;;;;;;AAIA,SAASA,cAAc;AACvB,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAASC,cAAcC,cAAcC,2BAA2B;AAChE,SAASC,cAAcC,kBAAkB;AACzC,SAASC,QAAQC,kBAAkBC,gBAA4B;AAC/D,SAASC,QAAQC,sBAAsB;AACvC,SAASC,0BAA0B;AACnC,SAASC,YAAY;AACrB,SAASC,YAAYC,UAAU;AAI/B,IAAMC,OAAO;AAMN,IAAMC,iBAAiB,CAAC,EAAEC,MAAK,MAAuB;;;AAC3D,UAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAC7B,UAAMC,YAAYC,SAASL,OAAOM,OAAOC,KAAKC,YAAAA,CAAAA;AAC9C,UAAMC,UAAUJ,SAASL,OAAOM,OAAOC,KAAKG,UAAAA,CAAAA;AAC5C,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,UAAMC,sBAAsBC,QAC1B,MACEX,UAAUY,OACR,CAACC,KAAKC,SAAAA;AACJ,YAAMC,WAAWD,KAAKE,QAAQC,QAAQC;AACtC,UAAIH,UAAU;AACZ,cAAMI,SAASd,QAAQe,KAAK,CAACC,MAAMA,EAAEH,OAAOH,QAAAA;AAC5C,YAAII,QAAQ;AACVN,cAAIC,KAAKI,EAAE,IAAIC;QACjB;MACF;AACA,aAAON;IACT,GACA,CAAC,CAAA,GAEL;MAACb;MAAWK;KAAQ;AAGtB,UAAMiB,gBAAgBC,YACpB,CAACT,SAAAA;AACC,YAAMK,SAAST,oBAAoBI,KAAKI,EAAE;AAC1C,aAAOC,QAAQK;IACjB,GACA;MAACd;KAAoB;AAGvB,UAAMe,mBAAmBF,YACvB,CAACT,SAAAA;AACC,YAAMK,SAAST,oBAAoBI,KAAKI,EAAE;AAC1C,UAAIC,QAAQ;AACV,aAAKX,SAASkB,aAAaC,aAAaC,MAAM;UAAEC,MAAM;UAAQC,SAAS;YAACC,iBAAiBZ,MAAAA;;QAAS,CAAA,CAAA;MACpG;IACF,GACA;MAACT;MAAqBF;KAAS;AAGjC,WACE,sBAAA,cAACwB,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAGC,kBAAAA;OAC7B,sBAAA,cAACC,KAAKC,MAAI;MAAeC,OAAOvC;MAAWwC,QAAQC,OAAOC,GAAGtC,YAAAA;MAAeuC,OAAO,CAAC7B,SAASA,KAAKI;OAC/F,CAAC,EAAEqB,MAAK,MACP,sBAAA,cAACP,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACxBK,OAAO1B,IAAI,CAACC,SACX,sBAAA,cAACuB,KAAKO,MAAI;MACRC,KAAK/B,KAAKI;MACV4B,MAAMhC;MACNiC,YAAYZ,GAAGzC,MAAMsD,YAAY,gBAAgB,SAAS,eAAA;OAE1D,sBAAA,cAAChB,OAAAA;MAAIE,WAAU;OACb,sBAAA,cAACG,KAAKY,WAAS;MAACF,YAAW;OAAYjC,KAAKU,IAAI,GAC/CF,cAAcR,IAAAA,KACb,sBAAA,cAACkB,OAAAA;MAAIE,WAAU;OAAqCZ,cAAcR,IAAAA,CAAAA,CAAAA,GAGrEJ,oBAAoBI,KAAKI,EAAE,KAC1B,sBAAA,cAACgC,QAAAA;MAAOC,SAAS,MAAM1B,iBAAiBX,IAAAA;OAAQjB,EAAE,oCAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAQ7DG,UAAUoD,WAAW,KAAK,sBAAA,cAACpB,OAAAA;MAAIE,WAAU;OAAmCrC,EAAE,oBAAA,CAAA,CAAA;;;;AAGrF;;;ACvFA,IAAA,yBAAewD;",
6
- "names": ["Schema", "React", "useCallback", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "FunctionType", "ScriptType", "Filter", "fullyQualifiedId", "useQuery", "Button", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsPanel", "space", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "type", "FunctionType", "scripts", "ScriptType", "dispatchPromise", "dispatch", "useIntentDispatcher", "functionToScriptMap", "useMemo", "reduce", "map", "func", "scriptId", "source", "target", "id", "script", "find", "s", "getScriptName", "useCallback", "name", "handleGoToScript", "createIntent", "LayoutAction", "Open", "part", "subject", "fullyQualifiedId", "div", "role", "className", "mx", "controlItemClasses", "List", "Root", "items", "isItem", "Schema", "is", "getId", "Item", "key", "item", "classNames", "ghostHover", "ItemTitle", "Button", "onClick", "length", "FunctionsPanel"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { FunctionType, ScriptType } from '@dxos/functions';\nimport { Filter, fullyQualifiedId, useQuery, type Space } from '@dxos/react-client/echo';\nimport { Button, useTranslation } from '@dxos/react-ui';\nimport { controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nconst grid = 'grid grid-cols-[1fr_auto] min-bs-[2.5rem]';\n\nexport type FunctionsPanelProps = {\n space: Space;\n};\n\nexport const FunctionsPanel = ({ space }: FunctionsPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const functions = useQuery(space, Filter.type(FunctionType));\n const scripts = useQuery(space, Filter.type(ScriptType));\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const functionToScriptMap = useMemo(\n () =>\n functions.reduce(\n (map, func) => {\n const scriptId = func.source?.target?.id;\n if (scriptId) {\n const script = scripts.find((s) => s.id === scriptId);\n if (script) {\n map[func.id] = script;\n }\n }\n return map;\n },\n {} as Record<string, ScriptType>,\n ),\n [functions, scripts],\n );\n\n const getScriptName = useCallback(\n (func: FunctionType) => {\n const script = functionToScriptMap[func.id];\n return script?.name;\n },\n [functionToScriptMap],\n );\n\n const handleGoToScript = useCallback(\n (func: FunctionType) => {\n const script = functionToScriptMap[func.id];\n if (script) {\n void dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [fullyQualifiedId(script)] }));\n }\n },\n [functionToScriptMap, dispatch],\n );\n\n return (\n <div role='none' className={mx(controlItemClasses)}>\n {functions.length > 0 && (\n <List.Root<FunctionType> items={functions} isItem={Schema.is(FunctionType)} getId={(func) => func.id}>\n {({ items }) => (\n <div role='list' className='flex flex-col w-full'>\n {items?.map((func) => (\n <List.Item<FunctionType>\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 {getScriptName(func) && (\n <div className='text-xs text-description truncate'>{getScriptName(func)}</div>\n )}\n </div>\n {functionToScriptMap[func.id] && (\n <Button onClick={() => handleGoToScript(func)}>{t('go to function source button label')}</Button>\n )}\n </List.Item>\n ))}\n </div>\n )}\n </List.Root>\n )}\n\n {functions.length === 0 && <div className='text-center plb-4 text-gray-500'>{t('no functions found')}</div>}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { FunctionsPanel } from './FunctionsPanel';\n\nexport * from './FunctionsPanel';\nexport default FunctionsPanel;\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,cAAc;AACvB,OAAOC,SAASC,aAAaC,eAAe;AAE5C,SAASC,cAAcC,cAAcC,2BAA2B;AAChE,SAASC,cAAcC,kBAAkB;AACzC,SAASC,QAAQC,kBAAkBC,gBAA4B;AAC/D,SAASC,QAAQC,sBAAsB;AACvC,SAASC,0BAA0B;AACnC,SAASC,YAAY;AACrB,SAASC,YAAYC,UAAU;AAI/B,IAAMC,OAAO;AAMN,IAAMC,iBAAiB,CAAC,EAAEC,MAAK,MAAuB;;;AAC3D,UAAM,EAAEC,EAAC,IAAKC,eAAeC,iBAAAA;AAC7B,UAAMC,YAAYC,SAASL,OAAOM,OAAOC,KAAKC,YAAAA,CAAAA;AAC9C,UAAMC,UAAUJ,SAASL,OAAOM,OAAOC,KAAKG,UAAAA,CAAAA;AAC5C,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,UAAMC,sBAAsBC,QAC1B,MACEX,UAAUY,OACR,CAACC,KAAKC,SAAAA;AACJ,YAAMC,WAAWD,KAAKE,QAAQC,QAAQC;AACtC,UAAIH,UAAU;AACZ,cAAMI,SAASd,QAAQe,KAAK,CAACC,MAAMA,EAAEH,OAAOH,QAAAA;AAC5C,YAAII,QAAQ;AACVN,cAAIC,KAAKI,EAAE,IAAIC;QACjB;MACF;AACA,aAAON;IACT,GACA,CAAC,CAAA,GAEL;MAACb;MAAWK;KAAQ;AAGtB,UAAMiB,gBAAgBC,YACpB,CAACT,SAAAA;AACC,YAAMK,SAAST,oBAAoBI,KAAKI,EAAE;AAC1C,aAAOC,QAAQK;IACjB,GACA;MAACd;KAAoB;AAGvB,UAAMe,mBAAmBF,YACvB,CAACT,SAAAA;AACC,YAAMK,SAAST,oBAAoBI,KAAKI,EAAE;AAC1C,UAAIC,QAAQ;AACV,aAAKX,SAASkB,aAAaC,aAAaC,MAAM;UAAEC,MAAM;UAAQC,SAAS;YAACC,iBAAiBZ,MAAAA;;QAAS,CAAA,CAAA;MACpG;IACF,GACA;MAACT;MAAqBF;KAAS;AAGjC,WACE,sBAAA,cAACwB,OAAAA;MAAIC,MAAK;MAAOC,WAAWC,GAAGC,kBAAAA;OAC5BpC,UAAUqC,SAAS,KAClB,sBAAA,cAACC,KAAKC,MAAI;MAAeC,OAAOxC;MAAWyC,QAAQC,OAAOC,GAAGvC,YAAAA;MAAewC,OAAO,CAAC9B,SAASA,KAAKI;OAC/F,CAAC,EAAEsB,MAAK,MACP,sBAAA,cAACR,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACxBM,OAAO3B,IAAI,CAACC,SACX,sBAAA,cAACwB,KAAKO,MAAI;MACRC,KAAKhC,KAAKI;MACV6B,MAAMjC;MACNkC,YAAYb,GAAGzC,MAAMuD,YAAY,gBAAgB,SAAS,eAAA;OAE1D,sBAAA,cAACjB,OAAAA;MAAIE,WAAU;OACb,sBAAA,cAACI,KAAKY,WAAS;MAACF,YAAW;OAAYlC,KAAKU,IAAI,GAC/CF,cAAcR,IAAAA,KACb,sBAAA,cAACkB,OAAAA;MAAIE,WAAU;OAAqCZ,cAAcR,IAAAA,CAAAA,CAAAA,GAGrEJ,oBAAoBI,KAAKI,EAAE,KAC1B,sBAAA,cAACiC,QAAAA;MAAOC,SAAS,MAAM3B,iBAAiBX,IAAAA;OAAQjB,EAAE,oCAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAS/DG,UAAUqC,WAAW,KAAK,sBAAA,cAACL,OAAAA;MAAIE,WAAU;OAAmCrC,EAAE,oBAAA,CAAA,CAAA;;;;AAGrF;;;ACzFA,IAAA,yBAAewD;",
6
+ "names": ["Schema", "React", "useCallback", "useMemo", "createIntent", "LayoutAction", "useIntentDispatcher", "FunctionType", "ScriptType", "Filter", "fullyQualifiedId", "useQuery", "Button", "useTranslation", "controlItemClasses", "List", "ghostHover", "mx", "grid", "FunctionsPanel", "space", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "type", "FunctionType", "scripts", "ScriptType", "dispatchPromise", "dispatch", "useIntentDispatcher", "functionToScriptMap", "useMemo", "reduce", "map", "func", "scriptId", "source", "target", "id", "script", "find", "s", "getScriptName", "useCallback", "name", "handleGoToScript", "createIntent", "LayoutAction", "Open", "part", "subject", "fullyQualifiedId", "div", "role", "className", "mx", "controlItemClasses", "length", "List", "Root", "items", "isItem", "Schema", "is", "getId", "Item", "key", "item", "classNames", "ghostHover", "ItemTitle", "Button", "onClick", "FunctionsPanel"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  TriggerEditor
4
- } from "./chunk-D5HK4XLC.mjs";
4
+ } from "./chunk-UFHDB2OA.mjs";
5
5
  import {
6
6
  AUTOMATION_PLUGIN
7
7
  } from "./chunk-HCCLRNMJ.mjs";
@@ -10,9 +10,10 @@ import {
10
10
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
11
11
  import { Schema } from "effect";
12
12
  import React, { useState } from "react";
13
- import { FunctionType, FunctionTrigger, FunctionTriggerSchema, TriggerKind, ScriptType } from "@dxos/functions";
13
+ import { Filter, Obj } from "@dxos/echo";
14
+ import { FunctionType, FunctionTrigger, FunctionTriggerSchema, ScriptType, TriggerKind } from "@dxos/functions";
14
15
  import { useClient } from "@dxos/react-client";
15
- import { live, Filter, useQuery, getSpace } from "@dxos/react-client/echo";
16
+ import { useQuery, getSpace } from "@dxos/react-client/echo";
16
17
  import { Clipboard, IconButton, Input, Separator, useTranslation } from "@dxos/react-ui";
17
18
  import { ControlItem, controlItemClasses } from "@dxos/react-ui-form";
18
19
  import { List } from "@dxos/react-ui-list";
@@ -34,7 +35,7 @@ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
34
35
  setSelected(trigger2);
35
36
  };
36
37
  const handleAdd = () => {
37
- setTrigger(live(FunctionTriggerSchema, {}));
38
+ setTrigger(Obj.make(FunctionTriggerSchema, {}));
38
39
  setSelected(void 0);
39
40
  };
40
41
  const handleDelete = (trigger2) => {
@@ -46,7 +47,7 @@ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
46
47
  if (selected) {
47
48
  Object.assign(selected, trigger2);
48
49
  } else {
49
- space.db.add(live(FunctionTrigger, trigger2));
50
+ space.db.add(Obj.make(FunctionTrigger, trigger2));
50
51
  }
51
52
  setTrigger(void 0);
52
53
  setSelected(void 0);
@@ -67,9 +68,6 @@ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
67
68
  }));
68
69
  }
69
70
  return /* @__PURE__ */ React.createElement("div", {
70
- className: "flex flex-col w-full"
71
- }, /* @__PURE__ */ React.createElement("div", {
72
- role: "none",
73
71
  className: controlItemClasses
74
72
  }, triggers.length > 0 && /* @__PURE__ */ React.createElement(List.Root, {
75
73
  items: triggers,
@@ -104,7 +102,7 @@ var AutomationPanel = ({ space, object, initialTrigger, onDone }) => {
104
102
  icon: "ph--plus--regular",
105
103
  label: t("new trigger label"),
106
104
  onClick: handleAdd
107
- })));
105
+ }));
108
106
  } finally {
109
107
  _effect.f();
110
108
  }
@@ -147,4 +145,4 @@ export {
147
145
  AutomationPanel,
148
146
  AutomationPanel_default
149
147
  };
150
- //# sourceMappingURL=chunk-P2FKMPRE.mjs.map
148
+ //# sourceMappingURL=chunk-2T2OZC3A.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React, { useState } from 'react';\n\nimport { Filter, Obj } from '@dxos/echo';\nimport {\n FunctionType,\n FunctionTrigger,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n ScriptType,\n TriggerKind,\n} from '@dxos/functions';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { useQuery, type Space, getSpace } from '@dxos/react-client/echo';\nimport { Clipboard, IconButton, Input, Separator, useTranslation } from '@dxos/react-ui';\nimport { ControlItem, controlItemClasses } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover, mx } from '@dxos/react-ui-theme';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { TriggerEditor, type TriggerEditorProps } from '../TriggerEditor';\n\nconst grid = 'grid grid-cols-[40px_1fr_32px] min-bs-[2.5rem]';\n\nexport type AutomationPanelProps = {\n space: Space;\n object?: Obj.Any;\n initialTrigger?: FunctionTriggerType;\n onDone?: () => void;\n};\n\n// TODO(burdon): Factor out common layout with ViewEditor.\nexport const AutomationPanel = ({ space, object, initialTrigger, onDone }: AutomationPanelProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const client = useClient();\n const triggers = useQuery(space, Filter.type(FunctionTrigger));\n const functions = useQuery(space, Filter.type(FunctionType));\n const scripts = useQuery(space, Filter.type(ScriptType));\n\n const [trigger, setTrigger] = useState<FunctionTriggerType | undefined>(initialTrigger);\n const [selected, setSelected] = useState<FunctionTrigger>();\n\n const handleSelect = (trigger: FunctionTrigger) => {\n const { id: _, ...values } = trigger;\n setTrigger(values);\n setSelected(trigger);\n };\n\n const handleAdd = () => {\n setTrigger(Obj.make(FunctionTriggerSchema, {}));\n setSelected(undefined);\n };\n\n const handleDelete = (trigger: FunctionTrigger) => {\n space.db.remove(trigger);\n setTrigger(undefined);\n setSelected(undefined);\n };\n\n const handleSave: TriggerEditorProps['onSave'] = (trigger) => {\n if (selected) {\n Object.assign(selected, trigger);\n } else {\n space.db.add(Obj.make(FunctionTrigger, trigger));\n }\n\n setTrigger(undefined);\n setSelected(undefined);\n onDone?.();\n };\n\n const handleCancel: TriggerEditorProps['onCancel'] = () => {\n setTrigger(undefined);\n onDone?.();\n };\n\n if (trigger) {\n return (\n <ControlItem title={t('trigger editor title')}>\n <TriggerEditor space={space} trigger={trigger} onSave={handleSave} onCancel={handleCancel} />\n </ControlItem>\n );\n }\n\n return (\n <div className={controlItemClasses}>\n {triggers.length > 0 && (\n <List.Root<FunctionTrigger> items={triggers} isItem={Schema.is(FunctionTrigger)} getId={(field) => field.id}>\n {({ items: triggers }) => (\n <div role='list' className='flex flex-col w-full'>\n {triggers?.map((trigger) => {\n const copyAction = getCopyAction(client, trigger);\n return (\n <List.Item<FunctionTrigger>\n key={trigger.id}\n item={trigger}\n classNames={mx(grid, ghostHover, 'items-center', 'px-2')}\n >\n <Input.Root>\n <Input.Switch\n checked={trigger.enabled}\n onCheckedChange={(checked) => (trigger.enabled = checked)}\n />\n </Input.Root>\n\n <div className={'flex'}>\n <List.ItemTitle\n classNames='px-1 cursor-pointer w-0 shrink truncate'\n onClick={() => handleSelect(trigger)}\n >\n {getFunctionName(scripts, functions, trigger) ?? '∅'}\n </List.ItemTitle>\n\n {/* TODO: a better way to expose copy action */}\n {copyAction && (\n <Clipboard.IconButton\n label={t(copyAction.translationKey)}\n value={copyAction.contentProvider()}\n />\n )}\n </div>\n\n <List.ItemDeleteButton onClick={() => handleDelete(trigger)} />\n </List.Item>\n );\n })}\n </div>\n )}\n </List.Root>\n )}\n {triggers.length > 0 && <Separator classNames='mlb-4' />}\n <IconButton icon='ph--plus--regular' label={t('new trigger label')} onClick={handleAdd} />\n </div>\n );\n};\n\nconst getCopyAction = (client: Client, trigger: FunctionTrigger | undefined) => {\n if (trigger?.spec?.kind === TriggerKind.Email) {\n return { translationKey: 'trigger copy email', contentProvider: () => `${getSpace(trigger)!.id}@dxos.network` };\n }\n\n if (trigger?.spec?.kind === TriggerKind.Webhook) {\n return { translationKey: 'trigger copy url', contentProvider: () => getWebhookUrl(client, trigger) };\n }\n\n return undefined;\n};\n\nconst getWebhookUrl = (client: Client, trigger: FunctionTrigger) => {\n const spaceId = getSpace(trigger)!.id;\n const edgeUrl = new URL(client.config.values.runtime!.services!.edge!.url!);\n const isSecure = edgeUrl.protocol.startsWith('https') || edgeUrl.protocol.startsWith('wss');\n edgeUrl.protocol = isSecure ? 'https' : 'http';\n return new URL(`/webhook/${spaceId}:${trigger.id}`, edgeUrl).toString();\n};\n\nconst getFunctionName = (scripts: ScriptType[], functions: FunctionType[], trigger: FunctionTriggerType) => {\n // TODO(wittjosiah): Truncation should be done in the UI.\n // Warning that the List component is currently a can of worms.\n const shortId = trigger.function && `${trigger.function.dxn.toString().slice(0, 16)}…`;\n const functionObject = functions.find((fn) => fn === trigger.function?.target);\n if (!functionObject) {\n return shortId;\n }\n\n return scripts.find((s) => functionObject.source?.target?.id === s.id)?.name ?? shortId;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport * from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "React", "useState", "Filter", "Obj", "FunctionType", "FunctionTrigger", "FunctionTriggerSchema", "ScriptType", "TriggerKind", "useClient", "useQuery", "getSpace", "Clipboard", "IconButton", "Input", "Separator", "useTranslation", "ControlItem", "controlItemClasses", "List", "ghostHover", "mx", "grid", "AutomationPanel", "space", "object", "initialTrigger", "onDone", "t", "useTranslation", "AUTOMATION_PLUGIN", "client", "useClient", "triggers", "useQuery", "Filter", "type", "FunctionTrigger", "functions", "FunctionType", "scripts", "ScriptType", "trigger", "setTrigger", "useState", "selected", "setSelected", "handleSelect", "id", "_", "values", "handleAdd", "Obj", "make", "FunctionTriggerSchema", "undefined", "handleDelete", "db", "remove", "handleSave", "Object", "assign", "add", "handleCancel", "ControlItem", "title", "TriggerEditor", "onSave", "onCancel", "div", "className", "controlItemClasses", "length", "List", "Root", "items", "isItem", "Schema", "is", "getId", "field", "role", "map", "copyAction", "getCopyAction", "Item", "key", "item", "classNames", "mx", "ghostHover", "Input", "Switch", "checked", "enabled", "onCheckedChange", "ItemTitle", "onClick", "getFunctionName", "Clipboard", "IconButton", "label", "translationKey", "value", "contentProvider", "ItemDeleteButton", "Separator", "icon", "spec", "kind", "TriggerKind", "Email", "getSpace", "Webhook", "getWebhookUrl", "spaceId", "edgeUrl", "URL", "config", "runtime", "services", "edge", "url", "isSecure", "protocol", "startsWith", "toString", "shortId", "function", "dxn", "slice", "functionObject", "find", "fn", "target", "s", "source", "name", "AutomationPanel"]
7
+ }
@@ -7,15 +7,15 @@ import {
7
7
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
8
8
  import React3, { useCallback as useCallback3, useMemo as useMemo3 } from "react";
9
9
  import { ComputeGraph } from "@dxos/conductor";
10
- import { Type } from "@dxos/echo";
10
+ import { Type as Type2 } from "@dxos/echo";
11
11
  import { FunctionType, FunctionTriggerSchema, ScriptType } from "@dxos/functions";
12
- import { Filter, Ref, useQuery } from "@dxos/react-client/echo";
12
+ import { Filter, Ref as Ref2, useQuery } from "@dxos/react-client/echo";
13
13
  import { Form as Form2, SelectInput as SelectInput2, useRefQueryLookupHandler } from "@dxos/react-ui-form";
14
14
 
15
15
  // packages/plugins/plugin-automation/src/components/TriggerEditor/FunctionInputEditor.tsx
16
16
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
17
17
  import React, { useCallback, useMemo } from "react";
18
- import { RefImpl, toEffectSchema } from "@dxos/echo-schema";
18
+ import { Ref, Type } from "@dxos/echo";
19
19
  import { useOnTransition } from "@dxos/react-ui";
20
20
  import { Form, useFormValues } from "@dxos/react-ui-form";
21
21
  var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptions }) => {
@@ -25,13 +25,13 @@ var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptio
25
25
  "function"
26
26
  ]);
27
27
  const selectedFunctionId = useMemo(() => {
28
- if (selectedFunctionValue instanceof RefImpl) {
28
+ if (Ref.isRef(selectedFunctionValue)) {
29
29
  return selectedFunctionValue.dxn.toString().split("dxn:echo:@:").at(1);
30
30
  }
31
31
  }, [
32
32
  selectedFunctionValue
33
33
  ]);
34
- const selectedFunction = useMemo(() => functions.find((f) => f.id === selectedFunctionId), [
34
+ const selectedFunction = useMemo(() => functions.find((fn) => fn.id === selectedFunctionId), [
35
35
  functions,
36
36
  selectedFunctionId
37
37
  ]);
@@ -45,7 +45,7 @@ var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptio
45
45
  const inputSchema = useMemo(() => selectedFunction?.inputSchema, [
46
46
  selectedFunction
47
47
  ]);
48
- const effectSchema = useMemo(() => inputSchema ? toEffectSchema(inputSchema) : void 0, [
48
+ const effectSchema = useMemo(() => inputSchema ? Type.toEffectSchema(inputSchema) : void 0, [
49
49
  inputSchema
50
50
  ]);
51
51
  const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;
@@ -65,9 +65,9 @@ var FunctionInputEditor = ({ functions, getValue, onValueChange, onQueryRefOptio
65
65
  }, "Function parameters"), /* @__PURE__ */ React.createElement(Form, {
66
66
  schema: effectSchema,
67
67
  values,
68
- classNames: "p-0",
69
68
  onValuesChanged: handleValuesChanged,
70
- onQueryRefOptions
69
+ onQueryRefOptions,
70
+ outerSpacing: false
71
71
  }));
72
72
  } finally {
73
73
  _effect.f();
@@ -153,6 +153,7 @@ var TriggerEditor = ({ space, trigger, onSave, onCancel }) => {
153
153
  });
154
154
  const Custom = useCustomInputs(space, handleRefQueryLookup);
155
155
  return /* @__PURE__ */ React3.createElement(Form2, {
156
+ outerSpacing: false,
156
157
  Custom,
157
158
  schema: FunctionTriggerSchema,
158
159
  values: trigger,
@@ -173,7 +174,7 @@ var useCustomInputs = (space, onQueryRefOptions) => {
173
174
  ["function"]: (props) => {
174
175
  const getValue = useCallback3(() => {
175
176
  const formValue = props.getValue();
176
- if (Ref.isRef(formValue)) {
177
+ if (Ref2.isRef(formValue)) {
177
178
  return formValue.dxn.toString();
178
179
  }
179
180
  return void 0;
@@ -181,9 +182,9 @@ var useCustomInputs = (space, onQueryRefOptions) => {
181
182
  props
182
183
  ]);
183
184
  const handleOnValueChange = useCallback3((_type, dxnString) => {
184
- const dxn = Type.DXN.parse(dxnString);
185
+ const dxn = Type2.DXN.parse(dxnString);
185
186
  if (dxn) {
186
- const ref = Ref.fromDXN(dxn);
187
+ const ref = Ref2.fromDXN(dxn);
187
188
  props.onValueChange("object", ref);
188
189
  }
189
190
  }, [
@@ -227,4 +228,4 @@ var getFunctionOptions = (scripts, functions) => {
227
228
  export {
228
229
  TriggerEditor
229
230
  };
230
- //# sourceMappingURL=chunk-D5HK4XLC.mjs.map
231
+ //# sourceMappingURL=chunk-UFHDB2OA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx", "../../../src/components/TriggerEditor/FunctionInputEditor.tsx", "../../../src/components/TriggerEditor/SpecSelector.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n} from '@dxos/functions';\nimport { Filter, Ref, useQuery, type Space } from '@dxos/react-client/echo';\nimport { type CustomInputMap, Form, SelectInput, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nimport { FunctionInputEditor, type FunctionInputEditorProps } from './FunctionInputEditor';\nimport { SpecSelector } from './SpecSelector';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n const Custom = useCustomInputs(space, handleRefQueryLookup);\n\n return (\n <Form\n outerSpacing={false}\n Custom={Custom}\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n onQueryRefOptions={handleRefQueryLookup}\n />\n );\n};\n\nconst useCustomInputs = (space: Space, onQueryRefOptions: FunctionInputEditorProps['onQueryRefOptions']) => {\n const functions = useQuery(space, Filter.type(FunctionType));\n const workflows = useQuery(space, Filter.type(ComputeGraph));\n const scripts = useQuery(space, Filter.type(ScriptType));\n\n return useMemo(\n (): CustomInputMap => ({\n // Function selector.\n ['function' satisfies keyof FunctionTriggerType]: (props) => {\n const getValue = useCallback(() => {\n const formValue = props.getValue();\n if (Ref.isRef(formValue)) {\n return formValue.dxn.toString() as string;\n }\n return undefined;\n }, [props]);\n\n const handleOnValueChange = useCallback(\n (_type: any, dxnString: string) => {\n const dxn = Type.DXN.parse(dxnString);\n if (dxn) {\n const ref = Ref.fromDXN(dxn);\n props.onValueChange('object', ref);\n }\n },\n [props.onValueChange],\n );\n\n return (\n <SelectInput\n {...props}\n getValue={getValue as any}\n onValueChange={handleOnValueChange}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n );\n },\n\n // Spec selector.\n ['spec.kind' as const]: SpecSelector,\n\n // Function input editor.\n ['input' as const]: (props) => (\n <FunctionInputEditor {...props} functions={functions} onQueryRefOptions={onQueryRefOptions} />\n ),\n }),\n [workflows, scripts, functions],\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:echo:@:${fn.id}` }));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Ref, Type } from '@dxos/echo';\nimport { type JsonPath } from '@dxos/echo-schema';\nimport { type FunctionType } from '@dxos/functions';\nimport { useOnTransition } from '@dxos/react-ui';\nimport { Form, type FormInputStateProps, type QueryRefOptions, useFormValues } from '@dxos/react-ui-form';\n\nexport type FunctionInputEditorProps = {\n functions: FunctionType[];\n onQueryRefOptions: QueryRefOptions;\n} & FormInputStateProps;\n\n/**\n * Editor component for function input parameters.\n */\nexport const FunctionInputEditor = ({\n functions,\n getValue,\n onValueChange,\n onQueryRefOptions,\n}: FunctionInputEditorProps) => {\n const selectedFunctionValue = useFormValues(['function' as JsonPath]);\n const selectedFunctionId = useMemo(() => {\n if (Ref.isRef(selectedFunctionValue)) {\n return selectedFunctionValue.dxn.toString().split('dxn:echo:@:').at(1);\n }\n }, [selectedFunctionValue]);\n\n const selectedFunction = useMemo(\n () => functions.find((fn) => fn.id === selectedFunctionId),\n [functions, selectedFunctionId],\n );\n\n useOnTransition(\n // Clear function parameter input when the function changes.\n selectedFunctionValue,\n (prevValue) => prevValue !== undefined && prevValue !== selectedFunctionValue,\n (currValue) => currValue !== undefined,\n () => onValueChange('object', {}),\n );\n\n const inputSchema = useMemo(() => selectedFunction?.inputSchema, [selectedFunction]);\n const effectSchema = useMemo(() => (inputSchema ? Type.toEffectSchema(inputSchema) : undefined), [inputSchema]);\n const propertyCount = inputSchema?.properties ? Object.keys(inputSchema.properties).length : 0;\n\n const values = useMemo(() => getValue() ?? {}, [getValue]);\n\n const handleValuesChanged = useCallback(\n (values: any) => {\n onValueChange('object', values);\n },\n [onValueChange],\n );\n\n if (selectedFunction === undefined || effectSchema === undefined || propertyCount === 0) {\n return null;\n }\n\n return (\n <>\n <h3 className='text-md'>Function parameters</h3>\n {/* TODO(ZaymonFC): Try using <FormFields /> internal component for this nesting.\n This would allow errors to flow up to the root context. */}\n <Form\n schema={effectSchema}\n values={values}\n onValuesChanged={handleValuesChanged}\n onQueryRefOptions={onQueryRefOptions}\n outerSpacing={false}\n />\n </>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { type FunctionTriggerType, TriggerKind, type TriggerType } from '@dxos/functions';\nimport { useTranslation } from '@dxos/react-ui';\nimport { SelectInput, type InputProps, useInputProps } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type SpecSelectorProps = InputProps;\n\nexport const SpecSelector = (props: SpecSelectorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const specProps = useInputProps(['spec' satisfies keyof FunctionTriggerType]);\n\n const handleTypeChange = useCallback(\n (_type: any, value: string): TriggerType | undefined => {\n const getDefaultTriggerSpec = (kind: string) => {\n switch (kind) {\n case TriggerKind.Timer:\n return { kind: TriggerKind.Timer, cron: '' };\n case TriggerKind.Subscription:\n return { kind: TriggerKind.Subscription, filter: {} };\n case TriggerKind.Queue:\n return { kind: TriggerKind.Queue, queue: '' };\n case TriggerKind.Email:\n return { kind: TriggerKind.Email };\n case TriggerKind.Webhook:\n return { kind: TriggerKind.Webhook };\n default:\n return undefined;\n }\n };\n\n const defaultSpec = getDefaultTriggerSpec(value);\n if (!defaultSpec) {\n return;\n }\n\n // Update the entire spec object, not just the `spec.kind`.\n specProps.onValueChange('object', defaultSpec);\n },\n [specProps],\n );\n\n const options = useMemo(\n () =>\n Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n })),\n [t],\n );\n\n return <SelectInput {...props} options={options} onValueChange={handleTypeChange} />;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "ComputeGraph", "Type", "FunctionType", "FunctionTriggerSchema", "ScriptType", "Filter", "Ref", "useQuery", "Form", "SelectInput", "useRefQueryLookupHandler", "React", "useCallback", "useMemo", "Ref", "Type", "useOnTransition", "Form", "useFormValues", "FunctionInputEditor", "functions", "getValue", "onValueChange", "onQueryRefOptions", "selectedFunctionValue", "useFormValues", "selectedFunctionId", "useMemo", "Ref", "isRef", "dxn", "toString", "split", "at", "selectedFunction", "find", "fn", "id", "useOnTransition", "prevValue", "undefined", "currValue", "inputSchema", "effectSchema", "Type", "toEffectSchema", "propertyCount", "properties", "Object", "keys", "length", "values", "handleValuesChanged", "useCallback", "h3", "className", "Form", "schema", "onValuesChanged", "outerSpacing", "React", "useCallback", "useMemo", "TriggerKind", "useTranslation", "SelectInput", "useInputProps", "SpecSelector", "props", "t", "useTranslation", "AUTOMATION_PLUGIN", "specProps", "useInputProps", "handleTypeChange", "useCallback", "_type", "value", "getDefaultTriggerSpec", "kind", "TriggerKind", "Timer", "cron", "Subscription", "filter", "Queue", "queue", "Email", "Webhook", "undefined", "defaultSpec", "onValueChange", "options", "useMemo", "Object", "values", "map", "label", "React", "SelectInput", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "handleSave", "values", "handleRefQueryLookup", "useRefQueryLookupHandler", "Custom", "useCustomInputs", "React", "Form", "outerSpacing", "schema", "FunctionTriggerSchema", "onQueryRefOptions", "functions", "useQuery", "Filter", "type", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "useMemo", "props", "getValue", "useCallback", "formValue", "Ref", "isRef", "dxn", "toString", "undefined", "handleOnValueChange", "_type", "dxnString", "Type", "DXN", "parse", "ref", "fromDXN", "onValueChange", "SelectInput", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "SpecSelector", "FunctionInputEditor", "graphs", "map", "graph", "label", "id", "value", "getLabel", "fn", "find", "s", "source", "target", "name"]
7
+ }
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
 
3
3
  // packages/plugins/plugin-automation/src/components/index.ts
4
4
  import { lazy } from "react";
5
- var AutomationContainer = lazy(() => import("./AutomationContainer-OJGH76X2.mjs"));
6
- var AutomationPanel = lazy(() => import("./AutomationPanel-HIWEJUWL.mjs"));
7
- var FunctionsContainer = lazy(() => import("./FunctionsContainer-PPR6XNNR.mjs"));
8
- var FunctionsPanel = lazy(() => import("./FunctionsPanel-SBXKWTHR.mjs"));
5
+ var AutomationContainer = lazy(() => import("./AutomationContainer-ANCUYDDA.mjs"));
6
+ var AutomationPanel = lazy(() => import("./AutomationPanel-Y3ODAHH7.mjs"));
7
+ var FunctionsContainer = lazy(() => import("./FunctionsContainer-25M5VT3J.mjs"));
8
+ var FunctionsPanel = lazy(() => import("./FunctionsPanel-HVGF5AJP.mjs"));
9
9
 
10
10
  export {
11
11
  AutomationContainer,
@@ -13,4 +13,4 @@ export {
13
13
  FunctionsContainer,
14
14
  FunctionsPanel
15
15
  };
16
- //# sourceMappingURL=chunk-Z7VAQDEE.mjs.map
16
+ //# sourceMappingURL=chunk-WJHKFPX2.mjs.map
@@ -4,10 +4,10 @@ import {
4
4
  AutomationPanel,
5
5
  FunctionsContainer,
6
6
  FunctionsPanel
7
- } from "./chunk-Z7VAQDEE.mjs";
7
+ } from "./chunk-WJHKFPX2.mjs";
8
8
  import {
9
9
  TriggerEditor
10
- } from "./chunk-D5HK4XLC.mjs";
10
+ } from "./chunk-UFHDB2OA.mjs";
11
11
  import {
12
12
  AUTOMATION_PLUGIN,
13
13
  meta
@@ -20,9 +20,9 @@ import { ClientCapabilities, ClientEvents } from "@dxos/plugin-client";
20
20
 
21
21
  // packages/plugins/plugin-automation/src/capabilities/index.ts
22
22
  import { lazy } from "@dxos/app-framework";
23
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-UAXHKKGW.mjs"));
24
- var IntentResolver = lazy(() => import("./intent-resolver-KRCXJEDR.mjs"));
25
- var ReactSurface = lazy(() => import("./react-surface-TRKCIZAB.mjs"));
23
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-DYWAKQM3.mjs"));
24
+ var IntentResolver = lazy(() => import("./intent-resolver-WXHFNJJI.mjs"));
25
+ var ReactSurface = lazy(() => import("./react-surface-TP6IYSR4.mjs"));
26
26
 
27
27
  // packages/plugins/plugin-automation/src/translations.ts
28
28
  var translations_default = [
@@ -6,9 +6,8 @@ import "./chunk-HCCLRNMJ.mjs";
6
6
 
7
7
  // packages/plugins/plugin-automation/src/capabilities/intent-resolver.ts
8
8
  import { contributes, Capabilities, createResolver, createIntent, LayoutAction } from "@dxos/app-framework";
9
- import { Ref } from "@dxos/echo";
9
+ import { Obj, Ref } from "@dxos/echo";
10
10
  import { FunctionTrigger, FunctionType, ScriptType, TriggerKind } from "@dxos/functions";
11
- import { live } from "@dxos/live-object";
12
11
  import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
13
12
  import { SpaceAction } from "@dxos/plugin-space/types";
14
13
  import { Filter } from "@dxos/react-client/echo";
@@ -16,7 +15,7 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
16
15
  createResolver({
17
16
  intent: AutomationAction.CreateTriggerFromTemplate,
18
17
  resolve: async ({ space, template, enabled = false, scriptName, input }) => {
19
- const trigger = live(FunctionTrigger, {
18
+ const trigger = Obj.make(FunctionTrigger, {
20
19
  enabled,
21
20
  input
22
21
  });
@@ -75,4 +74,4 @@ var intent_resolver_default = (context) => contributes(Capabilities.IntentResolv
75
74
  export {
76
75
  intent_resolver_default as default
77
76
  };
78
- //# sourceMappingURL=intent-resolver-KRCXJEDR.mjs.map
77
+ //# sourceMappingURL=intent-resolver-WXHFNJJI.mjs.map