@dxos/plugin-automation 0.8.2 → 0.8.3-main.7f5a14c

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 (107) hide show
  1. package/dist/lib/browser/{AutomationContainer-HQK7FTN6.mjs → AutomationContainer-IAQGOQPO.mjs} +3 -3
  2. package/dist/lib/browser/{AutomationPanel-GU37N5LO.mjs → AutomationPanel-77TR23ZV.mjs} +3 -3
  3. package/dist/lib/browser/{FunctionsContainer-B7RDWVMX.mjs → FunctionsContainer-JY7V7PLF.mjs} +2 -2
  4. package/dist/lib/browser/{FunctionsPanel-LCCPDIT6.mjs → FunctionsPanel-LY4IFKR7.mjs} +2 -2
  5. package/dist/lib/browser/{app-graph-builder-BYECL42X.mjs → app-graph-builder-T34RV5UA.mjs} +3 -3
  6. package/dist/lib/browser/app-graph-builder-T34RV5UA.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-ELQ2FX5G.mjs → chunk-2D5D5VGH.mjs} +5 -5
  8. package/dist/lib/browser/{chunk-4QTXMPBC.mjs → chunk-AMRTLGYK.mjs} +13 -12
  9. package/dist/lib/browser/chunk-AMRTLGYK.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-ZTRYR6RJ.mjs → chunk-RHSCK7AU.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-ZTRYR6RJ.mjs.map → chunk-RHSCK7AU.mjs.map} +3 -3
  12. package/dist/lib/browser/{chunk-D2ESAYQD.mjs → chunk-X76MKXLI.mjs} +7 -6
  13. package/dist/lib/browser/chunk-X76MKXLI.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +5 -5
  15. package/dist/lib/browser/{intent-resolver-ZRBBYZUX.mjs → intent-resolver-AX46HSU7.mjs} +3 -4
  16. package/dist/lib/browser/intent-resolver-AX46HSU7.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-VKO6PA2P.mjs → react-surface-D6OIQ5M3.mjs} +5 -5
  19. package/dist/lib/browser/react-surface-D6OIQ5M3.mjs.map +7 -0
  20. package/dist/lib/node/{AutomationContainer-5J7LJK7L.cjs → AutomationContainer-3THVCUVM.cjs} +7 -7
  21. package/dist/lib/node/{AutomationPanel-NPDBUQ7D.cjs → AutomationPanel-377JQC32.cjs} +8 -8
  22. package/dist/lib/node/{AutomationPanel-NPDBUQ7D.cjs.map → AutomationPanel-377JQC32.cjs.map} +2 -2
  23. package/dist/lib/node/{FunctionsContainer-LNLDZUZ6.cjs → FunctionsContainer-4FGOQW5X.cjs} +6 -6
  24. package/dist/lib/node/{FunctionsPanel-7AOXIQMA.cjs → FunctionsPanel-EWWAZK3W.cjs} +7 -7
  25. package/dist/lib/node/{FunctionsPanel-7AOXIQMA.cjs.map → FunctionsPanel-EWWAZK3W.cjs.map} +2 -2
  26. package/dist/lib/node/{app-graph-builder-DUKR2BRB.cjs → app-graph-builder-5XRIIV7E.cjs} +6 -6
  27. package/dist/lib/node/app-graph-builder-5XRIIV7E.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-DOLMQUQ5.cjs → chunk-6W2YZFBI.cjs} +8 -8
  29. package/dist/lib/node/{chunk-WXQAVUBJ.cjs → chunk-6X3XJ4VI.cjs} +5 -5
  30. package/dist/lib/node/{chunk-WXQAVUBJ.cjs.map → chunk-6X3XJ4VI.cjs.map} +3 -3
  31. package/dist/lib/node/{chunk-O42NQYQT.cjs → chunk-BRTNJRKZ.cjs} +11 -10
  32. package/dist/lib/node/chunk-BRTNJRKZ.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-4O627QZU.cjs → chunk-HRCATGPK.cjs} +15 -14
  34. package/dist/lib/node/chunk-HRCATGPK.cjs.map +7 -0
  35. package/dist/lib/node/index.cjs +10 -10
  36. package/dist/lib/node/{intent-resolver-JC4Q4TYU.cjs → intent-resolver-EAREQZFE.cjs} +5 -6
  37. package/dist/lib/node/intent-resolver-EAREQZFE.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-HB3MYTCK.cjs → react-surface-3GAUAT3E.cjs} +17 -17
  40. package/dist/lib/node/react-surface-3GAUAT3E.cjs.map +7 -0
  41. package/dist/lib/node-esm/{AutomationContainer-OJGH76X2.mjs → AutomationContainer-ZBXWGOLM.mjs} +3 -3
  42. package/dist/lib/node-esm/{AutomationPanel-HIWEJUWL.mjs → AutomationPanel-CAY4KMIP.mjs} +3 -3
  43. package/dist/lib/node-esm/{FunctionsContainer-PPR6XNNR.mjs → FunctionsContainer-25M5VT3J.mjs} +2 -2
  44. package/dist/lib/node-esm/{FunctionsPanel-SBXKWTHR.mjs → FunctionsPanel-HVGF5AJP.mjs} +2 -2
  45. package/dist/lib/node-esm/{app-graph-builder-UAXHKKGW.mjs → app-graph-builder-DYWAKQM3.mjs} +3 -3
  46. package/dist/lib/node-esm/app-graph-builder-DYWAKQM3.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-5IAHBEHR.mjs → chunk-2IH4VB3R.mjs} +2 -2
  48. package/dist/lib/node-esm/{chunk-5IAHBEHR.mjs.map → chunk-2IH4VB3R.mjs.map} +3 -3
  49. package/dist/lib/node-esm/{chunk-Z7VAQDEE.mjs → chunk-GR7KE2GV.mjs} +5 -5
  50. package/dist/lib/node-esm/{chunk-D5HK4XLC.mjs → chunk-VHGPYWCH.mjs} +13 -12
  51. package/dist/lib/node-esm/chunk-VHGPYWCH.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-P2FKMPRE.mjs → chunk-YHYLO7DL.mjs} +7 -6
  53. package/dist/lib/node-esm/chunk-YHYLO7DL.mjs.map +7 -0
  54. package/dist/lib/node-esm/index.mjs +5 -5
  55. package/dist/lib/node-esm/{intent-resolver-KRCXJEDR.mjs → intent-resolver-WXHFNJJI.mjs} +3 -4
  56. package/dist/lib/node-esm/intent-resolver-WXHFNJJI.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-TRKCIZAB.mjs → react-surface-CUZNFLES.mjs} +5 -5
  59. package/dist/lib/node-esm/react-surface-CUZNFLES.mjs.map +7 -0
  60. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  61. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +3 -2
  62. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  63. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/FunctionsPanel/FunctionsPanel.d.ts.map +1 -1
  65. package/dist/types/src/components/TriggerEditor/FunctionInputEditor.d.ts.map +1 -1
  66. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  67. package/dist/types/src/testing/test-functions.d.ts +3 -2
  68. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  69. package/package.json +25 -25
  70. package/src/capabilities/app-graph-builder.ts +2 -2
  71. package/src/capabilities/intent-resolver.ts +2 -3
  72. package/src/capabilities/react-surface.tsx +2 -2
  73. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +3 -2
  74. package/src/components/AutomationPanel/AutomationPanel.tsx +6 -5
  75. package/src/components/FunctionsPanel/FunctionsPanel.tsx +24 -22
  76. package/src/components/TriggerEditor/FunctionInputEditor.tsx +6 -5
  77. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +4 -4
  78. package/src/components/TriggerEditor/TriggerEditor.tsx +1 -0
  79. package/src/testing/test-functions.ts +7 -13
  80. package/dist/lib/browser/app-graph-builder-BYECL42X.mjs.map +0 -7
  81. package/dist/lib/browser/chunk-4QTXMPBC.mjs.map +0 -7
  82. package/dist/lib/browser/chunk-D2ESAYQD.mjs.map +0 -7
  83. package/dist/lib/browser/intent-resolver-ZRBBYZUX.mjs.map +0 -7
  84. package/dist/lib/browser/react-surface-VKO6PA2P.mjs.map +0 -7
  85. package/dist/lib/node/app-graph-builder-DUKR2BRB.cjs.map +0 -7
  86. package/dist/lib/node/chunk-4O627QZU.cjs.map +0 -7
  87. package/dist/lib/node/chunk-O42NQYQT.cjs.map +0 -7
  88. package/dist/lib/node/intent-resolver-JC4Q4TYU.cjs.map +0 -7
  89. package/dist/lib/node/react-surface-HB3MYTCK.cjs.map +0 -7
  90. package/dist/lib/node-esm/app-graph-builder-UAXHKKGW.mjs.map +0 -7
  91. package/dist/lib/node-esm/chunk-D5HK4XLC.mjs.map +0 -7
  92. package/dist/lib/node-esm/chunk-P2FKMPRE.mjs.map +0 -7
  93. package/dist/lib/node-esm/intent-resolver-KRCXJEDR.mjs.map +0 -7
  94. package/dist/lib/node-esm/react-surface-TRKCIZAB.mjs.map +0 -7
  95. /package/dist/lib/browser/{AutomationContainer-HQK7FTN6.mjs.map → AutomationContainer-IAQGOQPO.mjs.map} +0 -0
  96. /package/dist/lib/browser/{AutomationPanel-GU37N5LO.mjs.map → AutomationPanel-77TR23ZV.mjs.map} +0 -0
  97. /package/dist/lib/browser/{FunctionsContainer-B7RDWVMX.mjs.map → FunctionsContainer-JY7V7PLF.mjs.map} +0 -0
  98. /package/dist/lib/browser/{FunctionsPanel-LCCPDIT6.mjs.map → FunctionsPanel-LY4IFKR7.mjs.map} +0 -0
  99. /package/dist/lib/browser/{chunk-ELQ2FX5G.mjs.map → chunk-2D5D5VGH.mjs.map} +0 -0
  100. /package/dist/lib/node/{AutomationContainer-5J7LJK7L.cjs.map → AutomationContainer-3THVCUVM.cjs.map} +0 -0
  101. /package/dist/lib/node/{FunctionsContainer-LNLDZUZ6.cjs.map → FunctionsContainer-4FGOQW5X.cjs.map} +0 -0
  102. /package/dist/lib/node/{chunk-DOLMQUQ5.cjs.map → chunk-6W2YZFBI.cjs.map} +0 -0
  103. /package/dist/lib/node-esm/{AutomationContainer-OJGH76X2.mjs.map → AutomationContainer-ZBXWGOLM.mjs.map} +0 -0
  104. /package/dist/lib/node-esm/{AutomationPanel-HIWEJUWL.mjs.map → AutomationPanel-CAY4KMIP.mjs.map} +0 -0
  105. /package/dist/lib/node-esm/{FunctionsContainer-PPR6XNNR.mjs.map → FunctionsContainer-25M5VT3J.mjs.map} +0 -0
  106. /package/dist/lib/node-esm/{FunctionsPanel-SBXKWTHR.mjs.map → FunctionsPanel-HVGF5AJP.mjs.map} +0 -0
  107. /package/dist/lib/node-esm/{chunk-Z7VAQDEE.mjs.map → chunk-GR7KE2GV.mjs.map} +0 -0
@@ -26,19 +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_3GAUAT3E_exports = {};
30
+ __export(react_surface_3GAUAT3E_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_3GAUAT3E_exports);
34
+ var import_chunk_6W2YZFBI = require("./chunk-6W2YZFBI.cjs");
35
+ var import_chunk_BRTNJRKZ = require("./chunk-BRTNJRKZ.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");
41
+ var import_echo2 = require("@dxos/react-client/echo");
42
42
  var import_react_ui_stack = require("@dxos/react-ui-stack");
43
43
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
44
44
  (0, import_app_framework.createSurface)({
@@ -47,12 +47,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
47
47
  filter: (data) => data.subject === `${import_chunk_3EF7MLFX.meta.id}/space-settings-automation`,
48
48
  component: () => {
49
49
  const layout = (0, import_app_framework.useLayout)();
50
- const { spaceId } = (0, import_echo.parseId)(layout.workspace);
51
- const space = (0, import_echo.useSpace)(spaceId);
50
+ const { spaceId } = (0, import_echo2.parseId)(layout.workspace);
51
+ const space = (0, import_echo2.useSpace)(spaceId);
52
52
  if (!space || !spaceId) {
53
53
  return null;
54
54
  }
55
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.AutomationContainer, {
55
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_6W2YZFBI.AutomationContainer, {
56
56
  space
57
57
  });
58
58
  }
@@ -63,12 +63,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
63
63
  filter: (data) => data.subject === `${import_chunk_3EF7MLFX.meta.id}/space-settings-functions`,
64
64
  component: () => {
65
65
  const layout = (0, import_app_framework.useLayout)();
66
- const { spaceId } = (0, import_echo.parseId)(layout.workspace);
67
- const space = (0, import_echo.useSpace)(spaceId);
66
+ const { spaceId } = (0, import_echo2.parseId)(layout.workspace);
67
+ const space = (0, import_echo2.useSpace)(spaceId);
68
68
  if (!space || !spaceId) {
69
69
  return null;
70
70
  }
71
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.FunctionsContainer, {
71
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_6W2YZFBI.FunctionsContainer, {
72
72
  space
73
73
  });
74
74
  }
@@ -76,15 +76,15 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
76
76
  (0, import_app_framework.createSurface)({
77
77
  id: `${import_chunk_3EF7MLFX.meta.id}/companion/automation`,
78
78
  role: "article",
79
- filter: (data) => (0, import_echo_schema.isInstanceOf)(import_functions.ScriptType, data.companionTo) && data.subject === "automation",
79
+ filter: (data) => import_echo.Obj.instanceOf(import_functions.ScriptType, data.companionTo) && data.subject === "automation",
80
80
  component: ({ data, role }) => {
81
81
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
82
82
  role
83
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_DOLMQUQ5.AutomationPanel, {
84
- space: (0, import_echo.getSpace)(data.companionTo),
83
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_6W2YZFBI.AutomationPanel, {
84
+ space: (0, import_echo2.getSpace)(data.companionTo),
85
85
  object: data.companionTo
86
86
  }));
87
87
  }
88
88
  })
89
89
  ]);
90
- //# sourceMappingURL=react-surface-HB3MYTCK.cjs.map
90
+ //# sourceMappingURL=react-surface-3GAUAT3E.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';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { AutomationContainer, AutomationPanel, 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 (\n <StackItem.Content role={role}>\n <AutomationPanel space={getSpace(data.companionTo)!} object={data.companionTo} />\n </StackItem.Content>\n );\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAoE;AACpE,kBAAoB;AACpB,uBAA2B;AAC3B,IAAAA,eAA4C;AAC5C,4BAA0B;AAK1B,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,aACE,6BAAAY,QAAA,cAACO,gCAAUC,SAAO;QAACpB;SACjB,6BAAAY,QAAA,cAACS,uCAAAA;QAAgBX,WAAOY,uBAASpB,KAAKgB,WAAW;QAAIK,QAAQrB,KAAKgB;;IAGxE;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", "StackItem", "Content", "AutomationPanel", "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-YHYLO7DL.mjs";
5
+ import "./chunk-VHGPYWCH.mjs";
6
6
  import {
7
7
  AUTOMATION_PLUGIN
8
8
  } from "./chunk-HCCLRNMJ.mjs";
@@ -38,4 +38,4 @@ export {
38
38
  AutomationContainer,
39
39
  AutomationContainer_default as default
40
40
  };
41
- //# sourceMappingURL=AutomationContainer-OJGH76X2.mjs.map
41
+ //# sourceMappingURL=AutomationContainer-ZBXWGOLM.mjs.map
@@ -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-YHYLO7DL.mjs";
6
+ import "./chunk-VHGPYWCH.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-CAY4KMIP.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
  }
@@ -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-ZBXWGOLM.mjs"));
6
+ var AutomationPanel = lazy(() => import("./AutomationPanel-CAY4KMIP.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-GR7KE2GV.mjs.map
@@ -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
+ flush: true
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
+ flush: true,
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-VHGPYWCH.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 flush\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 flush\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", "flush", "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", "flush", "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
+ }
@@ -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-VHGPYWCH.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);
@@ -147,4 +148,4 @@ export {
147
148
  AutomationPanel,
148
149
  AutomationPanel_default
149
150
  };
150
- //# sourceMappingURL=chunk-P2FKMPRE.mjs.map
151
+ //# sourceMappingURL=chunk-YHYLO7DL.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='flex flex-col w-full'>\n <div role='none' 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 </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", "role", "controlItemClasses", "length", "List", "Root", "items", "isItem", "Schema", "is", "getId", "field", "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
+ }
@@ -4,10 +4,10 @@ import {
4
4
  AutomationPanel,
5
5
  FunctionsContainer,
6
6
  FunctionsPanel
7
- } from "./chunk-Z7VAQDEE.mjs";
7
+ } from "./chunk-GR7KE2GV.mjs";
8
8
  import {
9
9
  TriggerEditor
10
- } from "./chunk-D5HK4XLC.mjs";
10
+ } from "./chunk-VHGPYWCH.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-CUZNFLES.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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n contributes,\n Capabilities,\n createResolver,\n type PluginContext,\n createIntent,\n LayoutAction,\n} from '@dxos/app-framework';\nimport { Obj, Ref } from '@dxos/echo';\nimport { FunctionTrigger, FunctionType, ScriptType, TriggerKind } from '@dxos/functions';\nimport { type DXN } from '@dxos/keys';\nimport { ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Filter } from '@dxos/react-client/echo';\n\nimport { AutomationAction } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: AutomationAction.CreateTriggerFromTemplate,\n resolve: async ({ space, template, enabled = false, scriptName, input }) => {\n const trigger = Obj.make(FunctionTrigger, { enabled, input });\n\n // TODO(wittjosiah): Factor out function lookup by script name?\n if (scriptName) {\n const {\n objects: [script],\n } = await space.db.query(Filter.type(ScriptType, { name: scriptName })).run();\n if (script) {\n const {\n objects: [fn],\n } = await space.db.query(Filter.type(FunctionType, { source: Ref.make(script) })).run();\n if (fn) {\n trigger.function = Ref.make(fn);\n }\n }\n }\n\n switch (template.type) {\n case 'timer': {\n trigger.spec = { kind: TriggerKind.Timer, cron: template.cron };\n break;\n }\n case 'queue': {\n trigger.spec = { kind: TriggerKind.Queue, queue: (template.queueDXN as DXN).toString() };\n break;\n }\n default: {\n break;\n }\n }\n\n return {\n intents: [\n createIntent(SpaceAction.AddObject, { object: trigger, target: space }),\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [`automation-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`],\n options: {\n workspace: space.id,\n },\n }),\n ],\n };\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;AAIA,SACEA,aACAC,cACAC,gBAEAC,cACAC,oBACK;AACP,SAASC,KAAKC,WAAW;AACzB,SAASC,iBAAiBC,cAAcC,YAAYC,mBAAmB;AAEvE,SAASC,iCAAiC;AAC1C,SAASC,mBAAmB;AAC5B,SAASC,cAAc;AAIvB,IAAA,0BAAe,CAACC,YACdC,YAAYC,aAAaC,gBAAgB;EACvCC,eAAe;IACbC,QAAQC,iBAAiBC;IACzBC,SAAS,OAAO,EAAEC,OAAOC,UAAUC,UAAU,OAAOC,YAAYC,MAAK,MAAE;AACrE,YAAMC,UAAUC,IAAIC,KAAKC,iBAAiB;QAAEN;QAASE;MAAM,CAAA;AAG3D,UAAID,YAAY;AACd,cAAM,EACJM,SAAS,CAACC,MAAAA,EAAO,IACf,MAAMV,MAAMW,GAAGC,MAAMC,OAAOC,KAAKC,YAAY;UAAEC,MAAMb;QAAW,CAAA,CAAA,EAAIc,IAAG;AAC3E,YAAIP,QAAQ;AACV,gBAAM,EACJD,SAAS,CAACS,EAAAA,EAAG,IACX,MAAMlB,MAAMW,GAAGC,MAAMC,OAAOC,KAAKK,cAAc;YAAEC,QAAQC,IAAId,KAAKG,MAAAA;UAAQ,CAAA,CAAA,EAAIO,IAAG;AACrF,cAAIC,IAAI;AACNb,oBAAQiB,WAAWD,IAAId,KAAKW,EAAAA;UAC9B;QACF;MACF;AAEA,cAAQjB,SAASa,MAAI;QACnB,KAAK,SAAS;AACZT,kBAAQkB,OAAO;YAAEC,MAAMC,YAAYC;YAAOC,MAAM1B,SAAS0B;UAAK;AAC9D;QACF;QACA,KAAK,SAAS;AACZtB,kBAAQkB,OAAO;YAAEC,MAAMC,YAAYG;YAAOC,OAAQ5B,SAAS6B,SAAiBC,SAAQ;UAAG;AACvF;QACF;QACA,SAAS;AACP;QACF;MACF;AAEA,aAAO;QACLC,SAAS;UACPC,aAAaC,YAAYC,WAAW;YAAEC,QAAQ/B;YAASgC,QAAQrC;UAAM,CAAA;UACrEiC,aAAaK,aAAaC,MAAM;YAC9BC,MAAM;YACNC,SAAS;cAAC,sBAAsBC,yBAAAA,GAA4B1C,MAAM2C,EAAE;;YACpEC,SAAS;cACPC,WAAW7C,MAAM2C;YACnB;UACF,CAAA;;MAEJ;IACF;EACF,CAAA;CACD;",
6
+ "names": ["contributes", "Capabilities", "createResolver", "createIntent", "LayoutAction", "Obj", "Ref", "FunctionTrigger", "FunctionType", "ScriptType", "TriggerKind", "ATTENDABLE_PATH_SEPARATOR", "SpaceAction", "Filter", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AutomationAction", "CreateTriggerFromTemplate", "resolve", "space", "template", "enabled", "scriptName", "input", "trigger", "Obj", "make", "FunctionTrigger", "objects", "script", "db", "query", "Filter", "type", "ScriptType", "name", "run", "fn", "FunctionType", "source", "Ref", "function", "spec", "kind", "TriggerKind", "Timer", "cron", "Queue", "queue", "queueDXN", "toString", "intents", "createIntent", "SpaceAction", "AddObject", "object", "target", "LayoutAction", "Open", "part", "subject", "ATTENDABLE_PATH_SEPARATOR", "id", "options", "workspace"]
7
+ }