@dxos/plugin-automation 0.7.5-labs.e27f9b9 → 0.7.5-labs.f5080a1

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 (154) hide show
  1. package/dist/lib/browser/AutomationPanel-YPD3AGQN.mjs +8 -0
  2. package/dist/lib/browser/ChatContainer-ODZECATM.mjs +12 -0
  3. package/dist/lib/browser/{ai-client-AARXEMMJ.mjs → ai-client-UJLNYP7B.mjs} +3 -3
  4. package/dist/lib/browser/{app-graph-builder-B4U34VSR.mjs → app-graph-builder-3H5TCRG4.mjs} +2 -2
  5. package/dist/lib/browser/{chunk-7XADMUOW.mjs → chunk-43WRHV2L.mjs} +21 -76
  6. package/dist/lib/browser/chunk-43WRHV2L.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-HZ4TA7HY.mjs → chunk-BQHXJZ4K.mjs} +2 -2
  8. package/dist/lib/browser/{chunk-5SLV6AUA.mjs → chunk-DL7XA62G.mjs} +344 -180
  9. package/dist/lib/browser/chunk-DL7XA62G.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-DQ7ZSYJJ.mjs} +2 -2
  11. package/dist/lib/browser/{chunk-HKX3D3ZP.mjs.map → chunk-DQ7ZSYJJ.mjs.map} +2 -2
  12. package/dist/lib/browser/{chunk-IYSMXX6Q.mjs → chunk-PQGFC2ZO.mjs} +13 -12
  13. package/dist/lib/{node-esm/chunk-3KB5HRXA.mjs.map → browser/chunk-PQGFC2ZO.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-RAVNWHNE.mjs → chunk-Z54KIF6H.mjs} +5 -5
  15. package/dist/lib/browser/chunk-Z54KIF6H.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +11 -10
  17. package/dist/lib/browser/index.mjs.map +3 -3
  18. package/dist/lib/browser/{intent-resolver-754MPV7H.mjs → intent-resolver-5YVZJFS3.mjs} +3 -3
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-4QZ6AKBF.mjs → react-surface-WRHRCEV5.mjs} +9 -9
  21. package/dist/lib/browser/react-surface-WRHRCEV5.mjs.map +7 -0
  22. package/dist/lib/browser/types/index.mjs +6 -6
  23. package/dist/lib/node/{AutomationPanel-LRDEDGXI.cjs → AutomationPanel-CO26O75P.cjs} +7 -7
  24. package/dist/lib/node/{AutomationPanel-LRDEDGXI.cjs.map → AutomationPanel-CO26O75P.cjs.map} +2 -2
  25. package/dist/lib/node/{ChatContainer-6LZX4K2Z.cjs → ChatContainer-5URBEXQD.cjs} +10 -10
  26. package/dist/lib/node/ChatContainer-5URBEXQD.cjs.map +7 -0
  27. package/dist/lib/node/{ai-client-SA35GN5Q.cjs → ai-client-AOB6TLNW.cjs} +7 -7
  28. package/dist/lib/node/{app-graph-builder-ENVDOPS4.cjs → app-graph-builder-CDEQJEHY.cjs} +14 -14
  29. package/dist/lib/node/{chunk-ZS5RZ7RM.cjs → chunk-AWZVJZ2I.cjs} +6 -6
  30. package/dist/lib/node/{chunk-HEYQONXC.cjs → chunk-D2QQXWOY.cjs} +26 -26
  31. package/dist/lib/node/{chunk-HEYQONXC.cjs.map → chunk-D2QQXWOY.cjs.map} +3 -3
  32. package/dist/lib/node/chunk-H3RSMGJG.cjs +173 -0
  33. package/dist/lib/node/chunk-H3RSMGJG.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-6VMSH4P6.cjs → chunk-NH7STAX6.cjs} +392 -241
  35. package/dist/lib/node/chunk-NH7STAX6.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-WWU5FVAO.cjs → chunk-OCW5GAVZ.cjs} +9 -9
  37. package/dist/lib/node/chunk-OCW5GAVZ.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-TQEDPRY5.cjs} +5 -5
  39. package/dist/lib/node/{chunk-5VF5JKUN.cjs.map → chunk-TQEDPRY5.cjs.map} +2 -2
  40. package/dist/lib/node/index.cjs +73 -72
  41. package/dist/lib/node/index.cjs.map +3 -3
  42. package/dist/lib/node/{intent-resolver-CNVBSG4E.cjs → intent-resolver-MJFZT5IU.cjs} +8 -8
  43. package/dist/lib/node/meta.json +1 -1
  44. package/dist/lib/node/{react-surface-5HYLBDC3.cjs → react-surface-HDAVE6NU.cjs} +18 -18
  45. package/dist/lib/node/react-surface-HDAVE6NU.cjs.map +7 -0
  46. package/dist/lib/node/types/index.cjs +13 -13
  47. package/dist/lib/node/types/index.cjs.map +1 -1
  48. package/dist/lib/node-esm/{AutomationPanel-ZV7VEEPP.mjs → AutomationPanel-VQZUKPK2.mjs} +3 -3
  49. package/dist/lib/node-esm/{ChatContainer-PPVMC2FC.mjs → ChatContainer-23QIVDG5.mjs} +5 -5
  50. package/dist/lib/node-esm/{ai-client-2ZA4TYFZ.mjs → ai-client-RUCCJ7JZ.mjs} +3 -3
  51. package/dist/lib/node-esm/{app-graph-builder-IYOUCQZT.mjs → app-graph-builder-GR3URVNX.mjs} +2 -2
  52. package/dist/lib/node-esm/{chunk-EVTLHDM2.mjs → chunk-7JO77AAS.mjs} +21 -76
  53. package/dist/lib/node-esm/chunk-7JO77AAS.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-JFHI22MF.mjs} +2 -2
  55. package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs.map → chunk-JFHI22MF.mjs.map} +2 -2
  56. package/dist/lib/node-esm/{chunk-WISKXX7U.mjs → chunk-JJFWFS6P.mjs} +344 -180
  57. package/dist/lib/node-esm/chunk-JJFWFS6P.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs → chunk-LSSWQIQD.mjs} +2 -2
  59. package/dist/lib/node-esm/{chunk-MS7OIGVR.mjs → chunk-NSVQZ3EH.mjs} +5 -5
  60. package/dist/lib/node-esm/chunk-NSVQZ3EH.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-3KB5HRXA.mjs → chunk-VN2AFV25.mjs} +13 -12
  62. package/dist/lib/{browser/chunk-IYSMXX6Q.mjs.map → node-esm/chunk-VN2AFV25.mjs.map} +3 -3
  63. package/dist/lib/node-esm/index.mjs +11 -10
  64. package/dist/lib/node-esm/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/{intent-resolver-RQBXW442.mjs → intent-resolver-FCKNRTKQ.mjs} +3 -3
  66. package/dist/lib/node-esm/meta.json +1 -1
  67. package/dist/lib/node-esm/{react-surface-SS5WCRJ2.mjs → react-surface-FZ5OFRDE.mjs} +9 -9
  68. package/dist/lib/node-esm/react-surface-FZ5OFRDE.mjs.map +7 -0
  69. package/dist/lib/node-esm/types/index.mjs +6 -6
  70. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  71. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +0 -1
  72. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +1 -1
  73. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  75. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  76. package/dist/types/src/hooks/index.d.ts +3 -1
  77. package/dist/types/src/hooks/index.d.ts.map +1 -1
  78. package/dist/types/src/hooks/processor.d.ts +7 -2
  79. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  80. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -0
  81. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
  82. package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
  83. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
  84. package/dist/types/src/hooks/useServices.d.ts +7 -0
  85. package/dist/types/src/hooks/useServices.d.ts.map +1 -0
  86. package/dist/types/src/meta.d.ts.map +1 -1
  87. package/dist/types/src/testing/index.d.ts +2 -1
  88. package/dist/types/src/testing/index.d.ts.map +1 -1
  89. package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +1 -1
  90. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  91. package/dist/types/src/testing/test-services.d.ts +5 -0
  92. package/dist/types/src/testing/test-services.d.ts.map +1 -0
  93. package/dist/types/src/types/registry.d.ts +7 -6
  94. package/dist/types/src/types/registry.d.ts.map +1 -1
  95. package/dist/types/src/types/schema.d.ts +94 -69
  96. package/dist/types/src/types/schema.d.ts.map +1 -1
  97. package/package.json +50 -50
  98. package/src/AutomationPlugin.tsx +2 -2
  99. package/src/capabilities/react-surface.tsx +4 -2
  100. package/src/components/ChatContainer/ChatContainer.tsx +15 -80
  101. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +2 -1
  102. package/src/components/ServiceRegistry/ServiceRegistry.tsx +7 -7
  103. package/src/components/Thread/StatusLine.tsx +1 -1
  104. package/src/components/Thread/Tabbed.stories.tsx +1 -1
  105. package/src/components/Thread/Thread.tsx +1 -1
  106. package/src/components/Thread/ThreadMessage.tsx +24 -16
  107. package/src/components/Thread/ToggleContainer.stories.tsx +1 -1
  108. package/src/components/TriggerEditor/TriggerEditor.tsx +2 -4
  109. package/src/hooks/index.ts +3 -1
  110. package/src/hooks/processor.ts +16 -7
  111. package/src/hooks/useChatProcessor.tsx +86 -0
  112. package/src/hooks/useMessageQueue.ts +23 -0
  113. package/src/hooks/{useServiceRegistry.ts → useServices.ts} +8 -2
  114. package/src/meta.ts +2 -1
  115. package/src/testing/index.ts +2 -1
  116. package/src/testing/test-services.ts +131 -0
  117. package/src/types/registry.ts +17 -80
  118. package/src/types/schema.ts +20 -8
  119. package/dist/lib/browser/AutomationPanel-WFJZAW4F.mjs +0 -8
  120. package/dist/lib/browser/ChatContainer-OFCOZ5T2.mjs +0 -12
  121. package/dist/lib/browser/chunk-5SLV6AUA.mjs.map +0 -7
  122. package/dist/lib/browser/chunk-7XADMUOW.mjs.map +0 -7
  123. package/dist/lib/browser/chunk-RAVNWHNE.mjs.map +0 -7
  124. package/dist/lib/browser/react-surface-4QZ6AKBF.mjs.map +0 -7
  125. package/dist/lib/node/ChatContainer-6LZX4K2Z.cjs.map +0 -7
  126. package/dist/lib/node/chunk-6VMSH4P6.cjs.map +0 -7
  127. package/dist/lib/node/chunk-LU4HQWJD.cjs +0 -226
  128. package/dist/lib/node/chunk-LU4HQWJD.cjs.map +0 -7
  129. package/dist/lib/node/chunk-WWU5FVAO.cjs.map +0 -7
  130. package/dist/lib/node/react-surface-5HYLBDC3.cjs.map +0 -7
  131. package/dist/lib/node-esm/chunk-EVTLHDM2.mjs.map +0 -7
  132. package/dist/lib/node-esm/chunk-MS7OIGVR.mjs.map +0 -7
  133. package/dist/lib/node-esm/chunk-WISKXX7U.mjs.map +0 -7
  134. package/dist/lib/node-esm/react-surface-SS5WCRJ2.mjs.map +0 -7
  135. package/dist/types/src/hooks/useServiceRegistry.d.ts +0 -3
  136. package/dist/types/src/hooks/useServiceRegistry.d.ts.map +0 -1
  137. package/dist/types/src/testing/testing.d.ts.map +0 -1
  138. /package/dist/lib/browser/{AutomationPanel-WFJZAW4F.mjs.map → AutomationPanel-YPD3AGQN.mjs.map} +0 -0
  139. /package/dist/lib/browser/{ChatContainer-OFCOZ5T2.mjs.map → ChatContainer-ODZECATM.mjs.map} +0 -0
  140. /package/dist/lib/browser/{ai-client-AARXEMMJ.mjs.map → ai-client-UJLNYP7B.mjs.map} +0 -0
  141. /package/dist/lib/browser/{app-graph-builder-B4U34VSR.mjs.map → app-graph-builder-3H5TCRG4.mjs.map} +0 -0
  142. /package/dist/lib/browser/{chunk-HZ4TA7HY.mjs.map → chunk-BQHXJZ4K.mjs.map} +0 -0
  143. /package/dist/lib/browser/{intent-resolver-754MPV7H.mjs.map → intent-resolver-5YVZJFS3.mjs.map} +0 -0
  144. /package/dist/lib/node/{ai-client-SA35GN5Q.cjs.map → ai-client-AOB6TLNW.cjs.map} +0 -0
  145. /package/dist/lib/node/{app-graph-builder-ENVDOPS4.cjs.map → app-graph-builder-CDEQJEHY.cjs.map} +0 -0
  146. /package/dist/lib/node/{chunk-ZS5RZ7RM.cjs.map → chunk-AWZVJZ2I.cjs.map} +0 -0
  147. /package/dist/lib/node/{intent-resolver-CNVBSG4E.cjs.map → intent-resolver-MJFZT5IU.cjs.map} +0 -0
  148. /package/dist/lib/node-esm/{AutomationPanel-ZV7VEEPP.mjs.map → AutomationPanel-VQZUKPK2.mjs.map} +0 -0
  149. /package/dist/lib/node-esm/{ChatContainer-PPVMC2FC.mjs.map → ChatContainer-23QIVDG5.mjs.map} +0 -0
  150. /package/dist/lib/node-esm/{ai-client-2ZA4TYFZ.mjs.map → ai-client-RUCCJ7JZ.mjs.map} +0 -0
  151. /package/dist/lib/node-esm/{app-graph-builder-IYOUCQZT.mjs.map → app-graph-builder-GR3URVNX.mjs.map} +0 -0
  152. /package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs.map → chunk-LSSWQIQD.mjs.map} +0 -0
  153. /package/dist/lib/node-esm/{intent-resolver-RQBXW442.mjs.map → intent-resolver-FCKNRTKQ.mjs.map} +0 -0
  154. /package/src/testing/{testing.ts → test-functions.ts} +0 -0
@@ -2,21 +2,21 @@ import {
2
2
  AutomationPanel,
3
3
  ChatContainer,
4
4
  ServiceRegistry
5
- } from "./chunk-IYSMXX6Q.mjs";
6
- import "./chunk-RAVNWHNE.mjs";
7
- import "./chunk-5SLV6AUA.mjs";
8
- import "./chunk-HZ4TA7HY.mjs";
5
+ } from "./chunk-PQGFC2ZO.mjs";
6
+ import "./chunk-Z54KIF6H.mjs";
7
+ import "./chunk-DL7XA62G.mjs";
8
+ import "./chunk-BQHXJZ4K.mjs";
9
9
  import {
10
10
  AIChatType
11
- } from "./chunk-7XADMUOW.mjs";
11
+ } from "./chunk-43WRHV2L.mjs";
12
12
  import {
13
13
  AUTOMATION_PLUGIN
14
- } from "./chunk-HKX3D3ZP.mjs";
14
+ } from "./chunk-DQ7ZSYJJ.mjs";
15
15
 
16
16
  // packages/plugins/experimental/plugin-automation/src/capabilities/react-surface.tsx
17
17
  import React from "react";
18
18
  import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
19
- import { getSpace, isEchoObject } from "@dxos/react-client/echo";
19
+ import { getSpace, isEchoObject, isSpace } from "@dxos/react-client/echo";
20
20
  var react_surface_default = () => contributes(Capabilities.ReactSurface, [
21
21
  createSurface({
22
22
  id: `${AUTOMATION_PLUGIN}/ai-chat`,
@@ -31,7 +31,7 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
31
31
  id: `${AUTOMATION_PLUGIN}/service-registry`,
32
32
  role: "complementary--service-registry",
33
33
  component: ({ data }) => /* @__PURE__ */ React.createElement(ServiceRegistry, {
34
- space: getSpace(data.subject)
34
+ space: isSpace(data.subject) ? data.subject : getSpace(data.subject)
35
35
  })
36
36
  }),
37
37
  createSurface({
@@ -47,4 +47,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
47
47
  export {
48
48
  react_surface_default as default
49
49
  };
50
- //# sourceMappingURL=react-surface-4QZ6AKBF.mjs.map
50
+ //# sourceMappingURL=react-surface-WRHRCEV5.mjs.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 } from '@dxos/app-framework';\nimport { getSpace, isEchoObject, isSpace, type ReactiveEchoObject } from '@dxos/react-client/echo';\n\nimport { AutomationPanel, ChatContainer, ServiceRegistry } from '../components';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { AIChatType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${AUTOMATION_PLUGIN}/ai-chat`,\n role: 'article',\n filter: (data): data is { subject: AIChatType } => data.subject instanceof AIChatType,\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/service-registry`,\n role: 'complementary--service-registry',\n component: ({ data }) => (\n <ServiceRegistry space={isSpace(data.subject) ? data.subject : getSpace(data.subject)!} />\n ),\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/automation`,\n role: 'complementary--automation',\n filter: (data): data is { subject: ReactiveEchoObject<any> } =>\n isEchoObject(data.subject) && !!getSpace(data.subject),\n component: ({ data }) => <AutomationPanel space={getSpace(data.subject)!} object={data.subject} />,\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,UAAUC,cAAcC,eAAwC;AAMzE,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA0CA,KAAKC,mBAAmBC;IAC3EC,WAAW,CAAC,EAAEH,MAAMF,KAAI,MAAO,sBAAA,cAACM,eAAAA;MAAcN;MAAYO,MAAML,KAAKC;;EACvE,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNK,WAAW,CAAC,EAAEH,KAAI,MAChB,sBAAA,cAACM,iBAAAA;MAAgBC,OAAOC,QAAQR,KAAKC,OAAO,IAAID,KAAKC,UAAUQ,SAAST,KAAKC,OAAO;;EAExF,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,iBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPU,aAAaV,KAAKC,OAAO,KAAK,CAAC,CAACQ,SAAST,KAAKC,OAAO;IACvDE,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACW,iBAAAA;MAAgBJ,OAAOE,SAAST,KAAKC,OAAO;MAAIW,QAAQZ,KAAKC;;EACzF,CAAA;CACD;",
6
+ "names": ["React", "Capabilities", "contributes", "createSurface", "getSpace", "isEchoObject", "isSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "AUTOMATION_PLUGIN", "role", "filter", "data", "subject", "AIChatType", "component", "ChatContainer", "chat", "ServiceRegistry", "space", "isSpace", "getSpace", "isEchoObject", "AutomationPanel", "object"]
7
+ }
@@ -6,10 +6,10 @@ import {
6
6
  ChainInputType,
7
7
  ChainPromptType,
8
8
  ChainType,
9
- MockServiceRegistry,
10
- ServiceType
11
- } from "../chunk-7XADMUOW.mjs";
12
- import "../chunk-HKX3D3ZP.mjs";
9
+ ServiceType,
10
+ categoryIcons
11
+ } from "../chunk-43WRHV2L.mjs";
12
+ import "../chunk-DQ7ZSYJJ.mjs";
13
13
  export {
14
14
  AIChatType,
15
15
  ApiAuthorization,
@@ -18,7 +18,7 @@ export {
18
18
  ChainInputType,
19
19
  ChainPromptType,
20
20
  ChainType,
21
- MockServiceRegistry,
22
- ServiceType
21
+ ServiceType,
22
+ categoryIcons
23
23
  };
24
24
  //# sourceMappingURL=index.mjs.map
@@ -16,11 +16,11 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var AutomationPanel_LRDEDGXI_exports = {};
20
- __export(AutomationPanel_LRDEDGXI_exports, {
21
- default: () => import_chunk_WWU5FVAO.AutomationPanel_default
19
+ var AutomationPanel_CO26O75P_exports = {};
20
+ __export(AutomationPanel_CO26O75P_exports, {
21
+ default: () => import_chunk_OCW5GAVZ.AutomationPanel_default
22
22
  });
23
- module.exports = __toCommonJS(AutomationPanel_LRDEDGXI_exports);
24
- var import_chunk_WWU5FVAO = require("./chunk-WWU5FVAO.cjs");
25
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
26
- //# sourceMappingURL=AutomationPanel-LRDEDGXI.cjs.map
23
+ module.exports = __toCommonJS(AutomationPanel_CO26O75P_exports);
24
+ var import_chunk_OCW5GAVZ = require("./chunk-OCW5GAVZ.cjs");
25
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
26
+ //# sourceMappingURL=AutomationPanel-CO26O75P.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["AutomationPanel-LRDEDGXI.cjs"],
4
- "sourcesContent": ["import {\n AutomationPanel_default\n} from \"./chunk-WWU5FVAO.cjs\";\nimport \"./chunk-5VF5JKUN.cjs\";\nexport {\n AutomationPanel_default as default\n};\n//# sourceMappingURL=AutomationPanel-LRDEDGXI.cjs.map\n"],
3
+ "sources": ["AutomationPanel-CO26O75P.cjs"],
4
+ "sourcesContent": ["import {\n AutomationPanel_default\n} from \"./chunk-OCW5GAVZ.cjs\";\nimport \"./chunk-TQEDPRY5.cjs\";\nexport {\n AutomationPanel_default as default\n};\n//# sourceMappingURL=AutomationPanel-CO26O75P.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAEO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -16,18 +16,18 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ChatContainer_6LZX4K2Z_exports = {};
20
- __export(ChatContainer_6LZX4K2Z_exports, {
21
- ChatContainer: () => import_chunk_6VMSH4P6.ChatContainer,
22
- default: () => import_chunk_6VMSH4P6.ChatContainer_default
19
+ var ChatContainer_5URBEXQD_exports = {};
20
+ __export(ChatContainer_5URBEXQD_exports, {
21
+ ChatContainer: () => import_chunk_NH7STAX6.ChatContainer,
22
+ default: () => import_chunk_NH7STAX6.ChatContainer_default
23
23
  });
24
- module.exports = __toCommonJS(ChatContainer_6LZX4K2Z_exports);
25
- var import_chunk_6VMSH4P6 = require("./chunk-6VMSH4P6.cjs");
26
- var import_chunk_ZS5RZ7RM = require("./chunk-ZS5RZ7RM.cjs");
27
- var import_chunk_LU4HQWJD = require("./chunk-LU4HQWJD.cjs");
28
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
24
+ module.exports = __toCommonJS(ChatContainer_5URBEXQD_exports);
25
+ var import_chunk_NH7STAX6 = require("./chunk-NH7STAX6.cjs");
26
+ var import_chunk_AWZVJZ2I = require("./chunk-AWZVJZ2I.cjs");
27
+ var import_chunk_H3RSMGJG = require("./chunk-H3RSMGJG.cjs");
28
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
29
29
  // Annotate the CommonJS export names for ESM import in node:
30
30
  0 && (module.exports = {
31
31
  ChatContainer
32
32
  });
33
- //# sourceMappingURL=ChatContainer-6LZX4K2Z.cjs.map
33
+ //# sourceMappingURL=ChatContainer-5URBEXQD.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["ChatContainer-5URBEXQD.cjs"],
4
+ "sourcesContent": ["import {\n ChatContainer,\n ChatContainer_default\n} from \"./chunk-NH7STAX6.cjs\";\nimport \"./chunk-AWZVJZ2I.cjs\";\nimport \"./chunk-H3RSMGJG.cjs\";\nimport \"./chunk-TQEDPRY5.cjs\";\nexport {\n ChatContainer,\n ChatContainer_default as default\n};\n//# sourceMappingURL=ChatContainer-5URBEXQD.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;AACP,4BAAO;AACP,4BAAO;",
6
+ "names": []
7
+ }
@@ -16,13 +16,13 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ai_client_SA35GN5Q_exports = {};
20
- __export(ai_client_SA35GN5Q_exports, {
19
+ var ai_client_AOB6TLNW_exports = {};
20
+ __export(ai_client_AOB6TLNW_exports, {
21
21
  default: () => ai_client_default
22
22
  });
23
- module.exports = __toCommonJS(ai_client_SA35GN5Q_exports);
24
- var import_chunk_ZS5RZ7RM = require("./chunk-ZS5RZ7RM.cjs");
25
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
23
+ module.exports = __toCommonJS(ai_client_AOB6TLNW_exports);
24
+ var import_chunk_AWZVJZ2I = require("./chunk-AWZVJZ2I.cjs");
25
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_assistant = require("@dxos/assistant");
28
28
  var import_plugin_client = require("@dxos/plugin-client");
@@ -33,6 +33,6 @@ var ai_client_default = (context) => {
33
33
  const aiClient = new import_assistant.AIServiceClientImpl({
34
34
  endpoint
35
35
  });
36
- return (0, import_app_framework.contributes)(import_chunk_ZS5RZ7RM.AutomationCapabilities.AiClient, aiClient);
36
+ return (0, import_app_framework.contributes)(import_chunk_AWZVJZ2I.AutomationCapabilities.AiClient, aiClient);
37
37
  };
38
- //# sourceMappingURL=ai-client-SA35GN5Q.cjs.map
38
+ //# sourceMappingURL=ai-client-AOB6TLNW.cjs.map
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var app_graph_builder_ENVDOPS4_exports = {};
20
- __export(app_graph_builder_ENVDOPS4_exports, {
19
+ var app_graph_builder_CDEQJEHY_exports = {};
20
+ __export(app_graph_builder_CDEQJEHY_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_ENVDOPS4_exports);
24
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
23
+ module.exports = __toCommonJS(app_graph_builder_CDEQJEHY_exports);
24
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
25
25
  var import_app_framework = require("@dxos/app-framework");
26
26
  var import_plugin_client = require("@dxos/plugin-client");
27
27
  var import_plugin_graph = require("@dxos/plugin-graph");
@@ -31,7 +31,7 @@ var app_graph_builder_default = (context) => {
31
31
  const resolve = (typename) => context.requestCapabilities(import_app_framework.Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
32
32
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
33
33
  (0, import_plugin_graph.createExtension)({
34
- id: `${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/service-registry`,
34
+ id: `${import_chunk_TQEDPRY5.AUTOMATION_PLUGIN}/service-registry`,
35
35
  resolver: ({ id }) => {
36
36
  if (!id.endsWith("~service-registry")) {
37
37
  return;
@@ -52,7 +52,7 @@ var app_graph_builder_default = (context) => {
52
52
  label: [
53
53
  "service registry label",
54
54
  {
55
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
55
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
56
56
  }
57
57
  ],
58
58
  object: null,
@@ -62,7 +62,7 @@ var app_graph_builder_default = (context) => {
62
62
  }
63
63
  }),
64
64
  (0, import_plugin_graph.createExtension)({
65
- id: `${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/automation-for-subject`,
65
+ id: `${import_chunk_TQEDPRY5.AUTOMATION_PLUGIN}/automation-for-subject`,
66
66
  resolver: ({ id }) => {
67
67
  if (!id.endsWith("~automation")) {
68
68
  return;
@@ -78,12 +78,12 @@ var app_graph_builder_default = (context) => {
78
78
  const label2 = space ? space.properties.name || [
79
79
  "unnamed space label",
80
80
  {
81
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
81
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
82
82
  }
83
83
  ] : [
84
84
  "unnamed object settings label",
85
85
  {
86
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
86
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
87
87
  }
88
88
  ];
89
89
  return {
@@ -109,7 +109,7 @@ var app_graph_builder_default = (context) => {
109
109
  const label = meta.label?.(object) || object.name || meta.placeholder || [
110
110
  "unnamed object settings label",
111
111
  {
112
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
112
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
113
113
  }
114
114
  ];
115
115
  return {
@@ -125,7 +125,7 @@ var app_graph_builder_default = (context) => {
125
125
  }
126
126
  }),
127
127
  (0, import_plugin_graph.createExtension)({
128
- id: `${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/assistant-for-subject`,
128
+ id: `${import_chunk_TQEDPRY5.AUTOMATION_PLUGIN}/assistant-for-subject`,
129
129
  resolver: ({ id }) => {
130
130
  if (!id.endsWith("~assistant")) {
131
131
  return;
@@ -145,7 +145,7 @@ var app_graph_builder_default = (context) => {
145
145
  label: [
146
146
  "assistant panel label",
147
147
  {
148
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
148
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
149
149
  }
150
150
  ],
151
151
  object: null,
@@ -165,7 +165,7 @@ var app_graph_builder_default = (context) => {
165
165
  label: [
166
166
  "assistant panel label",
167
167
  {
168
- ns: import_chunk_5VF5JKUN.AUTOMATION_PLUGIN
168
+ ns: import_chunk_TQEDPRY5.AUTOMATION_PLUGIN
169
169
  }
170
170
  ],
171
171
  object
@@ -175,4 +175,4 @@ var app_graph_builder_default = (context) => {
175
175
  })
176
176
  ]);
177
177
  };
178
- //# sourceMappingURL=app-graph-builder-ENVDOPS4.cjs.map
178
+ //# sourceMappingURL=app-graph-builder-CDEQJEHY.cjs.map
@@ -16,19 +16,19 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_ZS5RZ7RM_exports = {};
20
- __export(chunk_ZS5RZ7RM_exports, {
19
+ var chunk_AWZVJZ2I_exports = {};
20
+ __export(chunk_AWZVJZ2I_exports, {
21
21
  AutomationCapabilities: () => AutomationCapabilities
22
22
  });
23
- module.exports = __toCommonJS(chunk_ZS5RZ7RM_exports);
24
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
23
+ module.exports = __toCommonJS(chunk_AWZVJZ2I_exports);
24
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
25
25
  var import_app_framework = require("@dxos/app-framework");
26
26
  var AutomationCapabilities;
27
27
  (function(AutomationCapabilities2) {
28
- AutomationCapabilities2.AiClient = (0, import_app_framework.defineCapability)(`${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/capability/ai-client`);
28
+ AutomationCapabilities2.AiClient = (0, import_app_framework.defineCapability)(`${import_chunk_TQEDPRY5.AUTOMATION_PLUGIN}/capability/ai-client`);
29
29
  })(AutomationCapabilities || (AutomationCapabilities = {}));
30
30
  // Annotate the CommonJS export names for ESM import in node:
31
31
  0 && (module.exports = {
32
32
  AutomationCapabilities
33
33
  });
34
- //# sourceMappingURL=chunk-ZS5RZ7RM.cjs.map
34
+ //# sourceMappingURL=chunk-AWZVJZ2I.cjs.map
@@ -26,17 +26,17 @@ 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 chunk_HEYQONXC_exports = {};
30
- __export(chunk_HEYQONXC_exports, {
29
+ var chunk_D2QQXWOY_exports = {};
30
+ __export(chunk_D2QQXWOY_exports, {
31
31
  AutomationPanel: () => AutomationPanel,
32
32
  ChatContainer: () => ChatContainer,
33
33
  PromptEditor: () => PromptEditor,
34
34
  ServiceRegistry: () => ServiceRegistry
35
35
  });
36
- module.exports = __toCommonJS(chunk_HEYQONXC_exports);
37
- var import_chunk_6VMSH4P6 = require("./chunk-6VMSH4P6.cjs");
38
- var import_chunk_LU4HQWJD = require("./chunk-LU4HQWJD.cjs");
39
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
36
+ module.exports = __toCommonJS(chunk_D2QQXWOY_exports);
37
+ var import_chunk_NH7STAX6 = require("./chunk-NH7STAX6.cjs");
38
+ var import_chunk_H3RSMGJG = require("./chunk-H3RSMGJG.cjs");
39
+ var import_chunk_TQEDPRY5 = require("./chunk-TQEDPRY5.cjs");
40
40
  var import_react = __toESM(require("react"));
41
41
  var import_echo = require("@dxos/react-client/echo");
42
42
  var import_react_ui = require("@dxos/react-ui");
@@ -82,15 +82,15 @@ var promptExtension = [
82
82
  ];
83
83
  var inputTypes = [
84
84
  {
85
- value: import_chunk_LU4HQWJD.ChainInputType.VALUE,
85
+ value: import_chunk_H3RSMGJG.ChainInputType.VALUE,
86
86
  label: "Value"
87
87
  },
88
88
  {
89
- value: import_chunk_LU4HQWJD.ChainInputType.PASS_THROUGH,
89
+ value: import_chunk_H3RSMGJG.ChainInputType.PASS_THROUGH,
90
90
  label: "Pass through"
91
91
  },
92
92
  {
93
- value: import_chunk_LU4HQWJD.ChainInputType.RETRIEVER,
93
+ value: import_chunk_H3RSMGJG.ChainInputType.RETRIEVER,
94
94
  label: "Retriever"
95
95
  },
96
96
  // {
@@ -102,15 +102,15 @@ var inputTypes = [
102
102
  // label: 'Query',
103
103
  // },
104
104
  {
105
- value: import_chunk_LU4HQWJD.ChainInputType.RESOLVER,
105
+ value: import_chunk_H3RSMGJG.ChainInputType.RESOLVER,
106
106
  label: "Resolver"
107
107
  },
108
108
  {
109
- value: import_chunk_LU4HQWJD.ChainInputType.CONTEXT,
109
+ value: import_chunk_H3RSMGJG.ChainInputType.CONTEXT,
110
110
  label: "Context"
111
111
  },
112
112
  {
113
- value: import_chunk_LU4HQWJD.ChainInputType.SCHEMA,
113
+ value: import_chunk_H3RSMGJG.ChainInputType.SCHEMA,
114
114
  label: "Schema"
115
115
  }
116
116
  ];
@@ -156,7 +156,7 @@ var usePromptInputs = (prompt) => {
156
156
  ]);
157
157
  };
158
158
  var PromptEditor = ({ prompt, commandEditable = true }) => {
159
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_5VF5JKUN.AUTOMATION_PLUGIN);
159
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_TQEDPRY5.AUTOMATION_PLUGIN);
160
160
  const { themeMode } = (0, import_react_ui.useThemeContext)();
161
161
  const { parentRef } = (0, import_react_ui_editor.useTextEditor)(() => ({
162
162
  initialValue: prompt.template,
@@ -218,7 +218,7 @@ var PromptEditor = ({ prompt, commandEditable = true }) => {
218
218
  }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
219
219
  value: String(input.type),
220
220
  onValueChange: (type) => {
221
- input.type = getInputType(type) ?? import_chunk_LU4HQWJD.ChainInputType.VALUE;
221
+ input.type = getInputType(type) ?? import_chunk_H3RSMGJG.ChainInputType.VALUE;
222
222
  }
223
223
  }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, {
224
224
  placeholder: "Type",
@@ -229,10 +229,10 @@ var PromptEditor = ({ prompt, commandEditable = true }) => {
229
229
  }, label)))))))), /* @__PURE__ */ import_react.default.createElement("td", {
230
230
  className: "p-1 pr-2"
231
231
  }, input.type !== void 0 && [
232
- import_chunk_LU4HQWJD.ChainInputType.VALUE,
233
- import_chunk_LU4HQWJD.ChainInputType.CONTEXT,
234
- import_chunk_LU4HQWJD.ChainInputType.RESOLVER,
235
- import_chunk_LU4HQWJD.ChainInputType.SCHEMA
232
+ import_chunk_H3RSMGJG.ChainInputType.VALUE,
233
+ import_chunk_H3RSMGJG.ChainInputType.CONTEXT,
234
+ import_chunk_H3RSMGJG.ChainInputType.RESOLVER,
235
+ import_chunk_H3RSMGJG.ChainInputType.SCHEMA
236
236
  ].includes(input.type) && /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
237
237
  placeholder: t("command placeholder"),
238
238
  classNames: (0, import_react_ui_theme.mx)("is-full bg-transparent"),
@@ -243,8 +243,8 @@ var PromptEditor = ({ prompt, commandEditable = true }) => {
243
243
  }))))))))));
244
244
  };
245
245
  var ServiceRegistry = ({ space }) => {
246
- const matchingServices = (0, import_chunk_6VMSH4P6.useServiceRegistry)(space);
247
- const enabledServices = (0, import_echo3.useQuery)(space, import_echo2.Filter.schema(import_chunk_LU4HQWJD.ServiceType));
246
+ const matchingServices = (0, import_chunk_NH7STAX6.useServices)(space);
247
+ const enabledServices = (0, import_echo3.useQuery)(space, import_echo2.Filter.schema(import_chunk_H3RSMGJG.ServiceType));
248
248
  const services = (0, import_react2.useMemo)(() => {
249
249
  return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
250
250
  }, [
@@ -259,7 +259,7 @@ var ServiceRegistry = ({ space }) => {
259
259
  }
260
260
  };
261
261
  return /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.List, {
262
- classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-3 overflow-y-auto scrollbar-thin"
262
+ classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
263
263
  }, services.map((service) => /* @__PURE__ */ import_react2.default.createElement(ServiceItem, {
264
264
  key: service.serviceId,
265
265
  service,
@@ -275,7 +275,7 @@ var ServiceItem = ({ service, enabled, setEnabled }) => {
275
275
  }, /* @__PURE__ */ import_react2.default.createElement("div", {
276
276
  className: "flex gow justify-center items-center"
277
277
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Icon, {
278
- icon: "ph--placeholder--regular",
278
+ icon: import_chunk_H3RSMGJG.categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
279
279
  size: 6
280
280
  })), /* @__PURE__ */ import_react2.default.createElement("div", {
281
281
  className: "grow items-center truncate mie-2"
@@ -287,11 +287,11 @@ var ServiceItem = ({ service, enabled, setEnabled }) => {
287
287
  })))), /* @__PURE__ */ import_react2.default.createElement("div", {
288
288
  className: "grid grid-cols-[40px_1fr]"
289
289
  }, /* @__PURE__ */ import_react2.default.createElement("div", null), /* @__PURE__ */ import_react2.default.createElement("div", {
290
- className: "text-sm text-subdued line-clamp-2"
290
+ className: "text-sm text-subdued line-clamp-2 mie-1"
291
291
  }, service.description)));
292
292
  };
293
- var AutomationPanel = (0, import_react3.lazy)(() => import("./AutomationPanel-LRDEDGXI.cjs"));
294
- var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-6LZX4K2Z.cjs"));
293
+ var AutomationPanel = (0, import_react3.lazy)(() => import("./AutomationPanel-CO26O75P.cjs"));
294
+ var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-5URBEXQD.cjs"));
295
295
  // Annotate the CommonJS export names for ESM import in node:
296
296
  0 && (module.exports = {
297
297
  AutomationPanel,
@@ -299,4 +299,4 @@ var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-6LZX4K
299
299
  PromptEditor,
300
300
  ServiceRegistry
301
301
  });
302
- //# sourceMappingURL=chunk-HEYQONXC.cjs.map
302
+ //# sourceMappingURL=chunk-D2QQXWOY.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/PromptEditor/PromptEditor.tsx", "../../../src/components/PromptEditor/prompt-extension.ts", "../../../src/components/ServiceRegistry/ServiceRegistry.tsx", "../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React, { useEffect } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { Input, Select, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { attentionSurface, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { nonNullable } from '@dxos/util';\n\nimport { nameRegex, promptExtension } from './prompt-extension';\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { type ChainInput, ChainInputType, type ChainPromptType } from '../../types';\n\nconst inputTypes = [\n {\n value: ChainInputType.VALUE,\n label: 'Value',\n },\n {\n value: ChainInputType.PASS_THROUGH,\n label: 'Pass through',\n },\n {\n value: ChainInputType.RETRIEVER,\n label: 'Retriever',\n },\n // {\n // value: ChainInputType.FUNCTION,\n // label: 'Function',\n // },\n // {\n // value: ChainInputType.QUERY,\n // label: 'Query',\n // },\n {\n value: ChainInputType.RESOLVER,\n label: 'Resolver',\n },\n {\n value: ChainInputType.CONTEXT,\n label: 'Context',\n },\n {\n value: ChainInputType.SCHEMA,\n label: 'Schema',\n },\n];\n\nconst getInputType = (type: string) => inputTypes.find(({ value }) => String(value) === type)?.value;\n\nconst usePromptInputs = (prompt: ChainPromptType) => {\n useEffect(() => {\n const text = prompt.template ?? '';\n if (!prompt.inputs) {\n prompt.inputs = []; // TODO(burdon): Required?\n }\n\n const regex = new RegExp(nameRegex, 'g');\n const variables = new Set<string>([...text.matchAll(regex)].map((m) => m[1]));\n\n // Create map of unclaimed inputs.\n const unclaimed = new Map<string, ChainInput>(\n prompt.inputs?.filter(nonNullable).map((input) => [input.name, input]),\n );\n const missing: string[] = [];\n Array.from(variables.values()).forEach((name) => {\n if (unclaimed.has(name)) {\n unclaimed.delete(name);\n } else {\n missing.push(name);\n }\n });\n\n // Match or create new inputs.\n const values = unclaimed.values();\n missing.forEach((name) => {\n const next = values.next().value;\n if (next) {\n next.name = name;\n } else {\n prompt.inputs?.push({ name });\n }\n });\n\n // Remove unclaimed (deleted) inputs.\n // TODO(burdon): If user types incorrect name value, it will be deleted. Garbage collect?\n for (const input of values) {\n prompt.inputs.splice(prompt.inputs.indexOf(input), 1);\n }\n }, [prompt.template]);\n};\n\nexport type PromptEditorProps = {\n prompt: ChainPromptType;\n commandEditable?: boolean;\n schema?: S.Schema<any, any, any>;\n};\n\nexport const PromptEditor = ({ prompt, commandEditable = true }: PromptEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const { themeMode } = useThemeContext();\n\n const { parentRef } = useTextEditor(\n () => ({\n initialValue: prompt.template,\n extensions: [\n createDataExtensions({\n id: prompt.id,\n text: prompt.template !== undefined ? createDocAccessor(prompt, ['template']) : undefined,\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: '!p-3' },\n },\n }),\n promptExtension,\n ],\n }),\n [themeMode, prompt],\n );\n\n usePromptInputs(prompt);\n\n return (\n <div className={mx('flex flex-col w-full overflow-hidden gap-4', groupBorder)}>\n {commandEditable && (\n <div className='flex items-center pl-4'>\n <span className='text-neutral-500'>/</span>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent m-2')}\n value={prompt.command ?? ''}\n onChange={(event) => {\n prompt.command = event.target.value.replace(/\\w/g, '');\n }}\n />\n </Input.Root>\n </div>\n )}\n\n <div ref={parentRef} className={mx(attentionSurface, 'rounded', 'min-h-[120px]')} />\n\n {(prompt.inputs?.length ?? 0) > 0 && (\n <div className='flex flex-col'>\n {/* TODO(zan): Improve layout with grid */}\n <table className='w-full table-fixed border-collapse my-2'>\n <tbody>\n {prompt.inputs?.filter(nonNullable).map((input) => (\n <tr key={input.name}>\n <td className='w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate'>\n <code className='px-2'>{input.name}</code>\n </td>\n <td className='w-[120px] p-1'>\n <Input.Root>\n <Select.Root\n value={String(input.type)}\n onValueChange={(type) => {\n input.type = getInputType(type) ?? ChainInputType.VALUE;\n }}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {inputTypes.map(({ value, label }) => (\n <Select.Option key={value} value={String(value)}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </td>\n <td className='p-1 pr-2'>\n {input.type !== undefined &&\n [\n ChainInputType.VALUE,\n ChainInputType.CONTEXT,\n ChainInputType.RESOLVER,\n ChainInputType.SCHEMA,\n ].includes(input.type) && (\n <div>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent')}\n value={input.value ?? ''}\n onChange={(event) => {\n input.value = event.target.value;\n }}\n />\n </Input.Root>\n </div>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const nameRegex = /\\{([\\w-]+)}/;\n\nconst parser = StreamLanguage.define({\n token: (stream) => {\n if (stream.eatSpace()) {\n return null;\n }\n if (stream.match(/^#.*/)) {\n return 'lineComment';\n }\n if (stream.match(/^-+$/)) {\n return 'lineComment';\n }\n if (stream.match(nameRegex)) {\n return 'variableName';\n }\n stream.next();\n return null;\n },\n});\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n */\nconst highlightStyles = HighlightStyle.define([\n {\n tag: tags.variableName,\n class: mx('rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm'),\n },\n]);\n\nexport const promptExtension: Extension = [parser, syntaxHighlighting(highlightStyles)];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServiceRegistry } from '../../hooks';\nimport { ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServiceRegistry(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-3 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon='ph--placeholder--regular' size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AutomationPanel';\nexport * from './ChatContainer';\nexport * from './MarkdownViewer';\nexport * from './PromptEditor';\nexport * from './ServiceRegistry';\nexport * from './Thread';\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n"],
5
- "mappings": "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",
6
- "names": ["import_react_ui_editor", "import_react_ui_theme", "import_react", "import_echo", "import_react_ui", "nameRegex", "parser", "StreamLanguage", "define", "token", "stream", "eatSpace", "match", "next", "highlightStyles", "HighlightStyle", "tag", "tags", "variableName", "class", "mx", "promptExtension", "syntaxHighlighting", "inputTypes", "value", "ChainInputType", "VALUE", "label", "PASS_THROUGH", "RETRIEVER", "RESOLVER", "CONTEXT", "SCHEMA", "getInputType", "type", "find", "String", "usePromptInputs", "prompt", "useEffect", "text", "template", "inputs", "regex", "RegExp", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "nonNullable", "input", "name", "missing", "Array", "from", "values", "forEach", "has", "delete", "push", "splice", "indexOf", "PromptEditor", "commandEditable", "t", "useTranslation", "AUTOMATION_PLUGIN", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "initialValue", "extensions", "createDataExtensions", "id", "undefined", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "content", "className", "React", "div", "groupBorder", "span", "Input", "Root", "TextInput", "classNames", "command", "onChange", "event", "target", "replace", "ref", "attentionSurface", "length", "table", "tbody", "tr", "key", "td", "code", "Select", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "Option", "includes", "ServiceRegistry", "space", "matchingServices", "useServiceRegistry", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "service", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "List", "ServiceItem", "setEnabled", "ListItem", "Icon", "icon", "size", "Switch", "checked", "onClick", "description", "AutomationPanel", "lazy", "ChatContainer"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React, { useEffect } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { Input, Select, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { attentionSurface, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { nonNullable } from '@dxos/util';\n\nimport { nameRegex, promptExtension } from './prompt-extension';\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { type ChainInput, ChainInputType, type ChainPromptType } from '../../types';\n\nconst inputTypes = [\n {\n value: ChainInputType.VALUE,\n label: 'Value',\n },\n {\n value: ChainInputType.PASS_THROUGH,\n label: 'Pass through',\n },\n {\n value: ChainInputType.RETRIEVER,\n label: 'Retriever',\n },\n // {\n // value: ChainInputType.FUNCTION,\n // label: 'Function',\n // },\n // {\n // value: ChainInputType.QUERY,\n // label: 'Query',\n // },\n {\n value: ChainInputType.RESOLVER,\n label: 'Resolver',\n },\n {\n value: ChainInputType.CONTEXT,\n label: 'Context',\n },\n {\n value: ChainInputType.SCHEMA,\n label: 'Schema',\n },\n];\n\nconst getInputType = (type: string) => inputTypes.find(({ value }) => String(value) === type)?.value;\n\nconst usePromptInputs = (prompt: ChainPromptType) => {\n useEffect(() => {\n const text = prompt.template ?? '';\n if (!prompt.inputs) {\n prompt.inputs = []; // TODO(burdon): Required?\n }\n\n const regex = new RegExp(nameRegex, 'g');\n const variables = new Set<string>([...text.matchAll(regex)].map((m) => m[1]));\n\n // Create map of unclaimed inputs.\n const unclaimed = new Map<string, ChainInput>(\n prompt.inputs?.filter(nonNullable).map((input) => [input.name, input]),\n );\n const missing: string[] = [];\n Array.from(variables.values()).forEach((name) => {\n if (unclaimed.has(name)) {\n unclaimed.delete(name);\n } else {\n missing.push(name);\n }\n });\n\n // Match or create new inputs.\n const values = unclaimed.values();\n missing.forEach((name) => {\n const next = values.next().value;\n if (next) {\n next.name = name;\n } else {\n prompt.inputs?.push({ name });\n }\n });\n\n // Remove unclaimed (deleted) inputs.\n // TODO(burdon): If user types incorrect name value, it will be deleted. Garbage collect?\n for (const input of values) {\n prompt.inputs.splice(prompt.inputs.indexOf(input), 1);\n }\n }, [prompt.template]);\n};\n\nexport type PromptEditorProps = {\n prompt: ChainPromptType;\n commandEditable?: boolean;\n schema?: S.Schema<any, any, any>;\n};\n\nexport const PromptEditor = ({ prompt, commandEditable = true }: PromptEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const { themeMode } = useThemeContext();\n\n const { parentRef } = useTextEditor(\n () => ({\n initialValue: prompt.template,\n extensions: [\n createDataExtensions({\n id: prompt.id,\n text: prompt.template !== undefined ? createDocAccessor(prompt, ['template']) : undefined,\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: '!p-3' },\n },\n }),\n promptExtension,\n ],\n }),\n [themeMode, prompt],\n );\n\n usePromptInputs(prompt);\n\n return (\n <div className={mx('flex flex-col w-full overflow-hidden gap-4', groupBorder)}>\n {commandEditable && (\n <div className='flex items-center pl-4'>\n <span className='text-neutral-500'>/</span>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent m-2')}\n value={prompt.command ?? ''}\n onChange={(event) => {\n prompt.command = event.target.value.replace(/\\w/g, '');\n }}\n />\n </Input.Root>\n </div>\n )}\n\n <div ref={parentRef} className={mx(attentionSurface, 'rounded', 'min-h-[120px]')} />\n\n {(prompt.inputs?.length ?? 0) > 0 && (\n <div className='flex flex-col'>\n {/* TODO(zan): Improve layout with grid */}\n <table className='w-full table-fixed border-collapse my-2'>\n <tbody>\n {prompt.inputs?.filter(nonNullable).map((input) => (\n <tr key={input.name}>\n <td className='w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate'>\n <code className='px-2'>{input.name}</code>\n </td>\n <td className='w-[120px] p-1'>\n <Input.Root>\n <Select.Root\n value={String(input.type)}\n onValueChange={(type) => {\n input.type = getInputType(type) ?? ChainInputType.VALUE;\n }}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {inputTypes.map(({ value, label }) => (\n <Select.Option key={value} value={String(value)}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </td>\n <td className='p-1 pr-2'>\n {input.type !== undefined &&\n [\n ChainInputType.VALUE,\n ChainInputType.CONTEXT,\n ChainInputType.RESOLVER,\n ChainInputType.SCHEMA,\n ].includes(input.type) && (\n <div>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent')}\n value={input.value ?? ''}\n onChange={(event) => {\n input.value = event.target.value;\n }}\n />\n </Input.Root>\n </div>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const nameRegex = /\\{([\\w-]+)}/;\n\nconst parser = StreamLanguage.define({\n token: (stream) => {\n if (stream.eatSpace()) {\n return null;\n }\n if (stream.match(/^#.*/)) {\n return 'lineComment';\n }\n if (stream.match(/^-+$/)) {\n return 'lineComment';\n }\n if (stream.match(nameRegex)) {\n return 'variableName';\n }\n stream.next();\n return null;\n },\n});\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n */\nconst highlightStyles = HighlightStyle.define([\n {\n tag: tags.variableName,\n class: mx('rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm'),\n },\n]);\n\nexport const promptExtension: Extension = [parser, syntaxHighlighting(highlightStyles)];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServices } from '../../hooks';\nimport { categoryIcons, ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled/filter.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServices(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AutomationPanel';\nexport * from './ChatContainer';\nexport * from './MarkdownViewer';\nexport * from './PromptEditor';\nexport * from './ServiceRegistry';\nexport * from './Thread';\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react_ui_editor", "import_react_ui_theme", "import_react", "import_echo", "import_react_ui", "nameRegex", "parser", "StreamLanguage", "define", "token", "stream", "eatSpace", "match", "next", "highlightStyles", "HighlightStyle", "tag", "tags", "variableName", "class", "mx", "promptExtension", "syntaxHighlighting", "inputTypes", "value", "ChainInputType", "VALUE", "label", "PASS_THROUGH", "RETRIEVER", "RESOLVER", "CONTEXT", "SCHEMA", "getInputType", "type", "find", "String", "usePromptInputs", "prompt", "useEffect", "text", "template", "inputs", "regex", "RegExp", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "nonNullable", "input", "name", "missing", "Array", "from", "values", "forEach", "has", "delete", "push", "splice", "indexOf", "PromptEditor", "commandEditable", "t", "useTranslation", "AUTOMATION_PLUGIN", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "initialValue", "extensions", "createDataExtensions", "id", "undefined", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "content", "className", "React", "div", "groupBorder", "span", "Input", "Root", "TextInput", "classNames", "command", "onChange", "event", "target", "replace", "ref", "attentionSurface", "length", "table", "tbody", "tr", "key", "td", "code", "Select", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "Option", "includes", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "service", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "List", "ServiceItem", "setEnabled", "ListItem", "Icon", "icon", "categoryIcons", "category", "size", "Switch", "checked", "onClick", "description", "AutomationPanel", "lazy", "ChatContainer"]
7
7
  }