@dxos/plugin-assistant 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (192) hide show
  1. package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs → AssistantDialog-DTWVEQBB.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs → ChatContainer-ZNKENYKZ.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-5PRCXI7N.mjs} +3 -3
  4. package/dist/lib/browser/ai-client-5PRCXI7N.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-builder-GU6ZWSP4.mjs → app-graph-builder-HTK3HFGM.mjs} +72 -92
  6. package/dist/lib/browser/app-graph-builder-HTK3HFGM.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5P7U35RJ.mjs +192 -0
  8. package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SBFJKCVU.mjs → chunk-7VDZP5WX.mjs} +24 -69
  10. package/dist/lib/browser/chunk-7VDZP5WX.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FQ4L5NYW.mjs → chunk-OWZHLWW5.mjs} +115 -129
  12. package/dist/lib/browser/chunk-OWZHLWW5.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +8 -8
  14. package/dist/lib/browser/index.mjs.map +2 -2
  15. package/dist/lib/browser/{intent-resolver-YAQELTFQ.mjs → intent-resolver-QV5AAVJZ.mjs} +4 -9
  16. package/dist/lib/browser/intent-resolver-QV5AAVJZ.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-JOATHBJ4.mjs → react-surface-JJPYWEIN.mjs} +9 -18
  19. package/dist/lib/browser/react-surface-JJPYWEIN.mjs.map +7 -0
  20. package/dist/lib/browser/{settings-PAJLJEVW.mjs → settings-OZX7J65A.mjs} +2 -2
  21. package/dist/lib/browser/types/index.mjs +3 -1
  22. package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs → AssistantDialog-RJJHZI63.cjs} +7 -7
  23. package/dist/lib/node/{ChatContainer-UWYNOALW.cjs → ChatContainer-WVAAOEOH.cjs} +7 -7
  24. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-OUPSRQT7.cjs} +6 -6
  25. package/dist/lib/node/ai-client-OUPSRQT7.cjs.map +7 -0
  26. package/dist/lib/node/{app-graph-builder-CEMLCKAF.cjs → app-graph-builder-LEO63CZZ.cjs} +74 -94
  27. package/dist/lib/node/app-graph-builder-LEO63CZZ.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-KWBQ5P7D.cjs → chunk-GQ3XS5FZ.cjs} +28 -69
  29. package/dist/lib/node/chunk-GQ3XS5FZ.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-ENBPNIJZ.cjs → chunk-OOHFSPWR.cjs} +122 -129
  31. package/dist/lib/node/chunk-OOHFSPWR.cjs.map +7 -0
  32. package/dist/lib/node/chunk-VG2UQY4S.cjs +216 -0
  33. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
  34. package/dist/lib/node/index.cjs +41 -41
  35. package/dist/lib/node/index.cjs.map +3 -3
  36. package/dist/lib/node/{intent-resolver-RNMYSJ3E.cjs → intent-resolver-QDGZMWLY.cjs} +10 -15
  37. package/dist/lib/node/intent-resolver-QDGZMWLY.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7RIXMLMN.cjs → react-surface-XNEIJJYJ.cjs} +22 -30
  40. package/dist/lib/node/react-surface-XNEIJJYJ.cjs.map +7 -0
  41. package/dist/lib/node/{settings-JBEYMZ4S.cjs → settings-WLTC7XO5.cjs} +6 -6
  42. package/dist/lib/node/types/index.cjs +14 -12
  43. package/dist/lib/node/types/index.cjs.map +2 -2
  44. package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs → AssistantDialog-D33WZUGR.mjs} +3 -3
  45. package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs → ChatContainer-FAYGNMQW.mjs} +3 -3
  46. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-RZQWEDUX.mjs} +3 -3
  47. package/dist/lib/node-esm/ai-client-RZQWEDUX.mjs.map +7 -0
  48. package/dist/lib/node-esm/{app-graph-builder-Y45WYAWL.mjs → app-graph-builder-WXJNZDYB.mjs} +72 -92
  49. package/dist/lib/node-esm/app-graph-builder-WXJNZDYB.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-PFWTW22U.mjs → chunk-74GFINWJ.mjs} +24 -69
  51. package/dist/lib/node-esm/chunk-74GFINWJ.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-JE47GNTB.mjs → chunk-ED55ZE4G.mjs} +115 -129
  53. package/dist/lib/node-esm/chunk-ED55ZE4G.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
  55. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
  56. package/dist/lib/node-esm/index.mjs +8 -8
  57. package/dist/lib/node-esm/index.mjs.map +2 -2
  58. package/dist/lib/node-esm/{intent-resolver-V2ZFI5C4.mjs → intent-resolver-Q3I6S6HN.mjs} +4 -9
  59. package/dist/lib/node-esm/intent-resolver-Q3I6S6HN.mjs.map +7 -0
  60. package/dist/lib/node-esm/meta.json +1 -1
  61. package/dist/lib/node-esm/{react-surface-UUHNOYST.mjs → react-surface-RI3JONQY.mjs} +9 -18
  62. package/dist/lib/node-esm/react-surface-RI3JONQY.mjs.map +7 -0
  63. package/dist/lib/node-esm/{settings-KAMA6RIY.mjs → settings-CLE57WEP.mjs} +2 -2
  64. package/dist/lib/node-esm/types/index.mjs +3 -1
  65. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  66. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  68. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/index.d.ts +3 -179
  70. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  73. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  74. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  75. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  76. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  77. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  78. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  79. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  80. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  81. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  83. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  84. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  87. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  89. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  90. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  91. package/dist/types/src/components/index.d.ts +0 -1
  92. package/dist/types/src/components/index.d.ts.map +1 -1
  93. package/dist/types/src/hooks/index.d.ts +0 -1
  94. package/dist/types/src/hooks/index.d.ts.map +1 -1
  95. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  96. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  97. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  98. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  99. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  101. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  102. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  103. package/dist/types/src/tools/function.d.ts +2 -2
  104. package/dist/types/src/tools/function.d.ts.map +1 -1
  105. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  106. package/dist/types/src/translations.d.ts +6 -60
  107. package/dist/types/src/translations.d.ts.map +1 -1
  108. package/dist/types/src/types/service.d.ts +96 -95
  109. package/dist/types/src/types/service.d.ts.map +1 -1
  110. package/dist/types/src/types/template.d.ts +52 -52
  111. package/dist/types/src/types/template.d.ts.map +1 -1
  112. package/dist/types/src/types/types.d.ts +20 -18
  113. package/dist/types/src/types/types.d.ts.map +1 -1
  114. package/dist/types/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +64 -58
  116. package/src/AssistantPlugin.tsx +2 -2
  117. package/src/capabilities/ai-client.ts +4 -5
  118. package/src/capabilities/app-graph-builder.ts +167 -131
  119. package/src/capabilities/index.ts +1 -1
  120. package/src/capabilities/intent-resolver.ts +2 -5
  121. package/src/capabilities/react-surface.tsx +6 -19
  122. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  123. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  124. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  125. package/src/components/Prompt/PromptBar.tsx +4 -12
  126. package/src/components/PromptSettings.tsx +2 -2
  127. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  128. package/src/components/Thread/Thread.stories.tsx +12 -15
  129. package/src/components/Thread/ThreadContainer.stories.tsx +9 -9
  130. package/src/components/Thread/ThreadMessage.tsx +6 -3
  131. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  132. package/src/components/Toolbox/Toolbox.tsx +3 -3
  133. package/src/components/index.ts +0 -1
  134. package/src/hooks/index.ts +0 -1
  135. package/src/hooks/processor.ts +25 -2
  136. package/src/hooks/useChatProcessor.tsx +7 -6
  137. package/src/hooks/useContextProvider.ts +20 -16
  138. package/src/hooks/useMessageQueue.ts +2 -2
  139. package/src/tools/function.ts +4 -6
  140. package/src/tools/openapi.ts +4 -3
  141. package/src/translations.ts +1 -1
  142. package/src/types/service.ts +39 -37
  143. package/src/types/template.ts +27 -25
  144. package/src/types/types.ts +20 -17
  145. package/dist/lib/browser/ai-client-CDZLSNXE.mjs.map +0 -7
  146. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-FQ4L5NYW.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  149. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +0 -7
  151. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +0 -7
  152. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +0 -7
  153. package/dist/lib/node/ai-client-URCCYU6B.cjs.map +0 -7
  154. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +0 -7
  155. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  156. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  157. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +0 -7
  158. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +0 -7
  159. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +0 -7
  160. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +0 -7
  161. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs.map +0 -7
  162. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +0 -7
  163. package/dist/lib/node-esm/chunk-JE47GNTB.mjs.map +0 -7
  164. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  165. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  166. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +0 -7
  167. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +0 -7
  168. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +0 -7
  169. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  170. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  171. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  172. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  173. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  174. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  175. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  176. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  177. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  178. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  179. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  180. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  181. package/src/components/ServiceRegistry/index.ts +0 -5
  182. package/src/hooks/invocation-handler.ts +0 -107
  183. package/src/hooks/useLocalTriggerManager.ts +0 -82
  184. /package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs.map → AssistantDialog-DTWVEQBB.mjs.map} +0 -0
  185. /package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs.map → ChatContainer-ZNKENYKZ.mjs.map} +0 -0
  186. /package/dist/lib/browser/{settings-PAJLJEVW.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  187. /package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs.map → AssistantDialog-RJJHZI63.cjs.map} +0 -0
  188. /package/dist/lib/node/{ChatContainer-UWYNOALW.cjs.map → ChatContainer-WVAAOEOH.cjs.map} +0 -0
  189. /package/dist/lib/node/{settings-JBEYMZ4S.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  190. /package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs.map → AssistantDialog-D33WZUGR.mjs.map} +0 -0
  191. /package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs.map → ChatContainer-FAYGNMQW.mjs.map} +0 -0
  192. /package/dist/lib/node-esm/{settings-KAMA6RIY.mjs.map → settings-CLE57WEP.mjs.map} +0 -0
@@ -26,15 +26,15 @@ 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 AssistantDialog_7V7RRSIL_exports = {};
30
- __export(AssistantDialog_7V7RRSIL_exports, {
29
+ var AssistantDialog_RJJHZI63_exports = {};
30
+ __export(AssistantDialog_RJJHZI63_exports, {
31
31
  AssistantDialog: () => AssistantDialog,
32
32
  default: () => AssistantDialog_default
33
33
  });
34
- module.exports = __toCommonJS(AssistantDialog_7V7RRSIL_exports);
35
- var import_chunk_ENBPNIJZ = require("./chunk-ENBPNIJZ.cjs");
34
+ module.exports = __toCommonJS(AssistantDialog_RJJHZI63_exports);
35
+ var import_chunk_OOHFSPWR = require("./chunk-OOHFSPWR.cjs");
36
36
  var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
37
- var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
37
+ var import_chunk_VG2UQY4S = require("./chunk-VG2UQY4S.cjs");
38
38
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
39
39
  var import_react = __toESM(require("react"));
40
40
  var import_app_framework = require("@dxos/app-framework");
@@ -125,7 +125,7 @@ var AssistantDialog = ({ chat }) => {
125
125
  open,
126
126
  onOpenChange: setOpen,
127
127
  title: t("assistant dialog title")
128
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_ENBPNIJZ.ThreadContainer, {
128
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_OOHFSPWR.ThreadContainer, {
129
129
  chat,
130
130
  onOpenChange: setOpen,
131
131
  settings,
@@ -138,4 +138,4 @@ var AssistantDialog_default = AssistantDialog;
138
138
  0 && (module.exports = {
139
139
  AssistantDialog
140
140
  });
141
- //# sourceMappingURL=AssistantDialog-7V7RRSIL.cjs.map
141
+ //# sourceMappingURL=AssistantDialog-RJJHZI63.cjs.map
@@ -26,15 +26,15 @@ 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 ChatContainer_UWYNOALW_exports = {};
30
- __export(ChatContainer_UWYNOALW_exports, {
29
+ var ChatContainer_WVAAOEOH_exports = {};
30
+ __export(ChatContainer_WVAAOEOH_exports, {
31
31
  ChatContainer: () => ChatContainer,
32
32
  default: () => ChatContainer_default
33
33
  });
34
- module.exports = __toCommonJS(ChatContainer_UWYNOALW_exports);
35
- var import_chunk_ENBPNIJZ = require("./chunk-ENBPNIJZ.cjs");
34
+ module.exports = __toCommonJS(ChatContainer_WVAAOEOH_exports);
35
+ var import_chunk_OOHFSPWR = require("./chunk-OOHFSPWR.cjs");
36
36
  var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
37
- var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
37
+ var import_chunk_VG2UQY4S = require("./chunk-VG2UQY4S.cjs");
38
38
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
39
39
  var import_react = __toESM(require("react"));
40
40
  var import_app_framework = require("@dxos/app-framework");
@@ -46,7 +46,7 @@ var ChatContainer = ({ role, chat, associatedArtifact }) => {
46
46
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
47
47
  role,
48
48
  classNames: "container-max-width"
49
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_ENBPNIJZ.ThreadContainer, {
49
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_OOHFSPWR.ThreadContainer, {
50
50
  chat,
51
51
  settings,
52
52
  transcription,
@@ -58,4 +58,4 @@ var ChatContainer_default = ChatContainer;
58
58
  0 && (module.exports = {
59
59
  ChatContainer
60
60
  });
61
- //# sourceMappingURL=ChatContainer-UWYNOALW.cjs.map
61
+ //# sourceMappingURL=ChatContainer-WVAAOEOH.cjs.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 ai_client_URCCYU6B_exports = {};
20
- __export(ai_client_URCCYU6B_exports, {
19
+ var ai_client_OUPSRQT7_exports = {};
20
+ __export(ai_client_OUPSRQT7_exports, {
21
21
  default: () => ai_client_default
22
22
  });
23
- module.exports = __toCommonJS(ai_client_URCCYU6B_exports);
23
+ module.exports = __toCommonJS(ai_client_OUPSRQT7_exports);
24
24
  var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
25
25
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
26
26
  var import_signals_core = require("@preact/signals-core");
@@ -29,13 +29,13 @@ var import_assistant = require("@dxos/assistant");
29
29
  var import_plugin_client = require("@dxos/plugin-client");
30
30
  var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
31
31
  var ai_client_default = (context) => {
32
- const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
32
+ const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
33
33
  const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
34
34
  const ai = (0, import_signals_core.signal)(new import_assistant.AIServiceEdgeClient({
35
35
  endpoint
36
36
  }));
37
37
  const unsubscribe = (0, import_signals_core.effect)(() => {
38
- const settings = context.requestCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN)?.value;
38
+ const settings = context.getCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN)?.value;
39
39
  if (settings?.llmProvider === "ollama") {
40
40
  ai.value = new import_assistant.OllamaClient();
41
41
  } else {
@@ -46,4 +46,4 @@ var ai_client_default = (context) => {
46
46
  });
47
47
  return (0, import_app_framework.contributes)(import_chunk_GBUNQ257.AssistantCapabilities.AiClient, ai, () => unsubscribe());
48
48
  };
49
- //# sourceMappingURL=ai-client-URCCYU6B.cjs.map
49
+ //# sourceMappingURL=ai-client-OUPSRQT7.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/ai-client.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantCapabilities } from './capabilities';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps } from '../types';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n\n const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n ai.value = new OllamaClient();\n } else {\n ai.value = new AIServiceEdgeClient({ endpoint });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAA+B;AAE/B,2BAA8D;AAC9D,uBAAwE;AACxE,2BAAmC;AAOnC,IAAMA,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,cAAcC,wCAAmBC,MAAM;AAC9D,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,SAAKE,4BAAwB,IAAIC,qCAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,kBAAcC,4BAAO,MAAA;AACzB,UAAMC,WAAWhB,QACdE,cAAce,kCAAaC,aAAa,EACxCC,SAAiCC,sCAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,8BAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,qCAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,aAAOmB,kCAAYC,4CAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
6
+ "names": ["DEFAULT_AI_SERVICE_URL", "context", "client", "getCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "signal", "AIServiceEdgeClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaClient", "contributes", "AssistantCapabilities", "AiClient"]
7
+ }
@@ -16,13 +16,15 @@ 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_CEMLCKAF_exports = {};
20
- __export(app_graph_builder_CEMLCKAF_exports, {
19
+ var app_graph_builder_LEO63CZZ_exports = {};
20
+ __export(app_graph_builder_LEO63CZZ_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_CEMLCKAF_exports);
24
- var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
23
+ module.exports = __toCommonJS(app_graph_builder_LEO63CZZ_exports);
24
+ var import_chunk_VG2UQY4S = require("./chunk-VG2UQY4S.cjs");
25
25
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
26
+ var import_rx_react = require("@effect-rx/rx-react");
27
+ var import_effect = require("effect");
26
28
  var import_app_framework = require("@dxos/app-framework");
27
29
  var import_invariant = require("@dxos/invariant");
28
30
  var import_plugin_client = require("@dxos/plugin-client");
@@ -35,20 +37,19 @@ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistan
35
37
  var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
36
38
  (0, import_plugin_graph.createExtension)({
37
39
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/assistant`,
38
- filter: (node) => node.id === import_plugin_graph.ROOT_ID,
39
- actions: () => [
40
+ actions: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.id === import_plugin_graph.ROOT_ID ? import_effect.Option.some(node2) : import_effect.Option.none()), import_effect.Option.map(() => [
40
41
  {
41
42
  id: `${import_app_framework.LayoutAction.UpdateDialog._tag}/assistant/open`,
42
43
  data: async () => {
43
- const { dispatchPromise: dispatch } = context.requestCapability(import_app_framework.Capabilities.IntentDispatcher);
44
- const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
45
- const layout = context.requestCapability(import_app_framework.Capabilities.Layout);
46
- const { graph } = context.requestCapability(import_app_framework.Capabilities.AppGraph);
44
+ const { dispatchPromise: dispatch } = context.getCapability(import_app_framework.Capabilities.IntentDispatcher);
45
+ const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
46
+ const layout = context.getCapability(import_app_framework.Capabilities.Layout);
47
+ const { graph } = context.getCapability(import_app_framework.Capabilities.AppGraph);
47
48
  let chat;
48
49
  if (layout.active.length > 0) {
49
- const node = graph.findNode(layout.active[0]);
50
- if (node) {
51
- const space = (0, import_echo.getSpace)(node.data);
50
+ const node2 = graph.getNode(layout.active[0]).pipe(import_effect.Option.getOrNull);
51
+ if (node2) {
52
+ const space = (0, import_echo.getSpace)(node2.data);
52
53
  if (space) {
53
54
  chat = await getOrCreateChat(dispatch, space);
54
55
  }
@@ -79,7 +80,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
79
80
  ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
80
81
  }
81
82
  ],
82
- icon: "ph--star-four--regular",
83
+ icon: "ph--sparkle--regular",
83
84
  disposition: "pin-end",
84
85
  position: "hoist",
85
86
  keyBinding: {
@@ -88,45 +89,15 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
88
89
  }
89
90
  }
90
91
  }
91
- ]
92
- }),
93
- (0, import_plugin_graph.createExtension)({
94
- id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/service-registry`,
95
- filter: (node) => node.id === "root",
96
- connector: ({ node }) => {
97
- const layout = context.requestCapability(import_app_framework.Capabilities.Layout);
98
- const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
99
- const { spaceId } = (0, import_echo.parseId)(layout.workspace);
100
- const space = spaceId ? client.spaces.get(spaceId) : null;
101
- return [
102
- {
103
- id: [
104
- node.id,
105
- "service-registry"
106
- ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
107
- type: import_types.DECK_COMPANION_TYPE,
108
- data: space,
109
- properties: {
110
- label: [
111
- "service registry label",
112
- {
113
- ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
114
- }
115
- ],
116
- icon: "ph--plugs--regular",
117
- disposition: "hidden"
118
- }
119
- }
120
- ];
121
- }
92
+ ]), import_effect.Option.getOrElse(() => [])))
122
93
  }),
123
94
  (0, import_plugin_graph.createExtension)({
124
95
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/object-chat-companion`,
125
- filter: (node) => (0, import_echo.isLiveObject)(node.data) && node.data.assistantChatQueue && node.data.type !== import_chunk_APRU3QWK.AIChatType.typename,
126
- connector: ({ node }) => [
96
+ // TODO(burdon): Add to all objects?
97
+ connector: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => (0, import_echo.isLiveObject)(node2.data) && node2.data.assistantChatQueue && node2.data.type !== import_chunk_VG2UQY4S.AIChatType.typename ? import_effect.Option.some(node2) : import_effect.Option.none()), import_effect.Option.map((node2) => [
127
98
  {
128
99
  id: [
129
- node.id,
100
+ node2.id,
130
101
  "assistant-chat"
131
102
  ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
132
103
  type: import_types.PLANK_COMPANION_TYPE,
@@ -138,73 +109,82 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
138
109
  ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
139
110
  }
140
111
  ],
141
- icon: "ph--star-four--regular",
112
+ icon: "ph--sparkle--regular",
142
113
  position: "hoist"
143
114
  }
144
115
  }
145
- ]
116
+ ]), import_effect.Option.getOrElse(() => [])))
146
117
  }),
147
118
  (0, import_plugin_graph.createExtension)({
148
119
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/root`,
149
- filter: (node) => node.type === import_types2.SPACE_TYPE,
150
- connector: ({ node }) => {
151
- const templates = (0, import_plugin_space.memoizeQuery)(node.data, import_echo.Filter.schema(import_chunk_APRU3QWK.TemplateType));
152
- return templates.length > 0 ? [
153
- {
154
- id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
155
- type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
156
- data: null,
157
- properties: {
158
- label: [
159
- "templates label",
160
- {
161
- ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
162
- }
163
- ],
164
- icon: "ph--file-code--regular",
165
- space: node.data
166
- }
120
+ connector: (node) => {
121
+ let query;
122
+ return import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.type === import_types2.SPACE_TYPE && (0, import_echo.isSpace)(node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((space) => {
123
+ if (!query) {
124
+ query = space.db.query(import_echo.Query.type(import_chunk_VG2UQY4S.TemplateType));
167
125
  }
168
- ] : [];
126
+ const templates = get((0, import_plugin_space.rxFromQuery)(query));
127
+ return templates.length > 0 ? [
128
+ {
129
+ id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
130
+ type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
131
+ data: null,
132
+ properties: {
133
+ label: [
134
+ "templates label",
135
+ {
136
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
137
+ }
138
+ ],
139
+ icon: "ph--file-code--regular",
140
+ space
141
+ }
142
+ }
143
+ ] : [];
144
+ }), import_effect.Option.getOrElse(() => [])));
169
145
  }
170
146
  }),
171
147
  (0, import_plugin_graph.createExtension)({
172
148
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
173
- filter: (node) => node.id === `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
174
- connector: ({ node }) => {
175
- const templates = (0, import_plugin_space.memoizeQuery)(node.properties.space, import_echo.Filter.schema(import_chunk_APRU3QWK.TemplateType));
176
- return templates.toSorted((a, b) => {
177
- const nameA = a.name ?? "";
178
- const nameB = b.name ?? "";
179
- return nameA.localeCompare(nameB);
180
- }).map((template) => ({
181
- id: (0, import_echo.fullyQualifiedId)(template),
182
- type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/template`,
183
- data: template,
184
- properties: {
185
- label: template.name ?? [
186
- "object placeholder",
187
- {
188
- ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
189
- }
190
- ],
191
- icon: "ph--file-code--regular"
149
+ connector: (node) => {
150
+ let query;
151
+ return import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.id === `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates` && (0, import_echo.isSpace)(node2.properties.space) ? import_effect.Option.some(node2.properties.space) : import_effect.Option.none()), import_effect.Option.map((space) => {
152
+ if (!query) {
153
+ query = space.db.query(import_echo.Query.type(import_chunk_VG2UQY4S.TemplateType));
192
154
  }
193
- }));
155
+ return get((0, import_plugin_space.rxFromQuery)(query)).toSorted((a, b) => {
156
+ const nameA = a.name ?? "";
157
+ const nameB = b.name ?? "";
158
+ return nameA.localeCompare(nameB);
159
+ }).map((template) => ({
160
+ id: (0, import_echo.fullyQualifiedId)(template),
161
+ type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/template`,
162
+ data: template,
163
+ properties: {
164
+ label: template.name ?? [
165
+ "object placeholder",
166
+ {
167
+ ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
168
+ }
169
+ ],
170
+ icon: "ph--file-code--regular"
171
+ }
172
+ }));
173
+ }), import_effect.Option.getOrElse(() => [])));
194
174
  }
195
175
  })
196
176
  ]);
197
177
  var getOrCreateChat = async (dispatch, space) => {
198
- const { objects } = await space.db.query(import_echo.Filter.schema(import_chunk_APRU3QWK.AIChatType)).run();
178
+ const { objects } = await space.db.query(import_echo.Filter.type(import_chunk_VG2UQY4S.AIChatType)).run();
199
179
  if (objects.length > 0) {
200
180
  return objects[objects.length - 1];
201
181
  }
202
- const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_APRU3QWK.AssistantAction.CreateChat, {
182
+ const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_VG2UQY4S.AssistantAction.CreateChat, {
203
183
  spaceId: space.id
204
184
  }));
205
- (0, import_invariant.invariant)(data?.object instanceof import_chunk_APRU3QWK.AIChatType, void 0, {
185
+ (0, import_invariant.invariant)(data?.object instanceof import_chunk_VG2UQY4S.AIChatType, void 0, {
206
186
  F: __dxlog_file,
207
- L: 184,
187
+ L: 220,
208
188
  S: void 0,
209
189
  A: [
210
190
  "data?.object instanceof AIChatType",
@@ -217,4 +197,4 @@ var getOrCreateChat = async (dispatch, space) => {
217
197
  }));
218
198
  return data.object;
219
199
  };
220
- //# sourceMappingURL=app-graph-builder-CEMLCKAF.cjs.map
200
+ //# sourceMappingURL=app-graph-builder-LEO63CZZ.cjs.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 {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID } from '@dxos/plugin-graph';\nimport { rxFromQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n fullyQualifiedId,\n getSpace,\n isLiveObject,\n isSpace,\n Query,\n type QueryResult,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const layout = context.getCapability(Capabilities.Layout);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.getNode(layout.active[0]).pipe(Option.getOrNull);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n // TODO(burdon): Add to all objects?\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename\n ? Option.some(node)\n : Option.none(),\n ),\n Option.map((node) => [\n {\n id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n\n const templates = get(rxFromQuery(query));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space,\n },\n },\n ]\n : [];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.id === `${ASSISTANT_PLUGIN}/templates` && isSpace(node.properties.space)\n ? Option.some(node.properties.space)\n : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n return get(rxFromQuery(query))\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['object placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.type(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_types", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "getNode", "getOrNull", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "isLiveObject", "assistantChatQueue", "type", "AIChatType", "typename", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "query", "SPACE_TYPE", "isSpace", "db", "Query", "TemplateType", "templates", "rxFromQuery", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "template", "fullyQualifiedId", "objects", "Filter", "run", "AssistantAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -26,18 +26,16 @@ 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_KWBQ5P7D_exports = {};
30
- __export(chunk_KWBQ5P7D_exports, {
29
+ var chunk_GQ3XS5FZ_exports = {};
30
+ __export(chunk_GQ3XS5FZ_exports, {
31
31
  AssistantDialog: () => AssistantDialog,
32
32
  AssistantSettings: () => AssistantSettings,
33
33
  ChatContainer: () => ChatContainer,
34
34
  PromptSettings: () => PromptSettings,
35
- ServiceRegistry: () => ServiceRegistry,
36
35
  TemplateContainer: () => TemplateContainer
37
36
  });
38
- module.exports = __toCommonJS(chunk_KWBQ5P7D_exports);
39
- var import_chunk_ENBPNIJZ = require("./chunk-ENBPNIJZ.cjs");
40
- var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
37
+ module.exports = __toCommonJS(chunk_GQ3XS5FZ_exports);
38
+ var import_chunk_VG2UQY4S = require("./chunk-VG2UQY4S.cjs");
41
39
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
42
40
  var import_react = __toESM(require("react"));
43
41
  var import_assistant = require("@dxos/assistant");
@@ -47,12 +45,13 @@ var import_effect = require("effect");
47
45
  var import_react2 = __toESM(require("react"));
48
46
  var import_async = require("@dxos/async");
49
47
  var import_react_ui2 = require("@dxos/react-ui");
50
- var import_react3 = __toESM(require("react"));
51
- var import_echo = require("@dxos/client/echo");
52
- var import_echo2 = require("@dxos/react-client/echo");
53
- var import_react_ui3 = require("@dxos/react-ui");
54
- var import_react4 = require("react");
48
+ var import_react3 = require("react");
55
49
  var DEFAULT_VALUE = "__default";
50
+ var LLM_PROVIDER_LABELS = {
51
+ edge: "DXOS",
52
+ ollama: "Ollama",
53
+ lmstudio: "LM Studio"
54
+ };
56
55
  var AssistantSettings = ({ settings }) => {
57
56
  const { t } = (0, import_react_ui.useTranslation)(import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN);
58
57
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormContainer, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
@@ -62,10 +61,19 @@ var AssistantSettings = ({ settings }) => {
62
61
  onCheckedChange: (checked) => settings.customPrompts = checked
63
62
  })), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
64
63
  label: t("settings llm provider label")
65
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Switch, {
66
- checked: settings.llmProvider === "ollama",
67
- onCheckedChange: (checked) => settings.llmProvider = checked ? "ollama" : "edge"
68
- })), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
64
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
65
+ value: settings.llmProvider ?? "edge",
66
+ onValueChange: (value) => {
67
+ settings.llmProvider = value === DEFAULT_VALUE ? void 0 : value;
68
+ }
69
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, {
70
+ placeholder: t("settings llm provider label")
71
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
72
+ value: DEFAULT_VALUE
73
+ }, t("settings default label")), import_chunk_VG2UQY4S.LLM_PROVIDERS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
74
+ key: model,
75
+ value: model
76
+ }, LLM_PROVIDER_LABELS[model]))))))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
69
77
  label: t("settings edge llm model label")
70
78
  }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
71
79
  value: settings.edgeModel ?? DEFAULT_VALUE,
@@ -134,7 +142,7 @@ var PromptSettings = ({ template }) => {
134
142
  onValueChange: handleKindChange
135
143
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Toolbar.Button, {
136
144
  asChild: true
137
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.TriggerButton, null)), /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Portal, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Content, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Viewport, null, import_chunk_APRU3QWK.TemplateKinds.map((kind) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Option, {
145
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.TriggerButton, null)), /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Portal, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Content, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Viewport, null, import_chunk_VG2UQY4S.TemplateKinds.map((kind) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Option, {
138
146
  key: kind,
139
147
  value: kind
140
148
  }, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Input.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Input.TextInput, {
@@ -147,64 +155,15 @@ var PromptSettings = ({ template }) => {
147
155
  onChange: handleDescriptionChange
148
156
  }))));
149
157
  };
150
- var ServiceRegistry = ({ space }) => {
151
- const matchingServices = (0, import_chunk_ENBPNIJZ.useServices)(space);
152
- const enabledServices = (0, import_echo2.useQuery)(space, import_echo.Filter.schema(import_chunk_APRU3QWK.ServiceType));
153
- const services = (0, import_react3.useMemo)(() => {
154
- return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
155
- }, [
156
- matchingServices,
157
- enabledServices
158
- ]);
159
- const handleSetEnabled = (service, enabled) => {
160
- if (enabled) {
161
- space.db.add(service);
162
- } else {
163
- space.db.remove(service);
164
- }
165
- };
166
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.List, {
167
- classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
168
- }, services.map((service) => /* @__PURE__ */ import_react3.default.createElement(ServiceItem, {
169
- key: service.serviceId,
170
- service,
171
- enabled: service.enabled,
172
- setEnabled: (enabled) => handleSetEnabled(service, enabled)
173
- })));
174
- };
175
- var ServiceItem = ({ service, enabled, setEnabled }) => {
176
- return /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.ListItem.Root, {
177
- classNames: "flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator"
178
- }, /* @__PURE__ */ import_react3.default.createElement("div", {
179
- className: "grid grid-cols-[40px_1fr_40px]"
180
- }, /* @__PURE__ */ import_react3.default.createElement("div", {
181
- className: "flex gow justify-center items-center"
182
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Icon, {
183
- icon: import_chunk_APRU3QWK.categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
184
- size: 6
185
- })), /* @__PURE__ */ import_react3.default.createElement("div", {
186
- className: "grow items-center truncate mie-2"
187
- }, service.name), /* @__PURE__ */ import_react3.default.createElement("div", {
188
- className: "flex gow justify-center items-center"
189
- }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Switch, {
190
- checked: enabled,
191
- onClick: () => setEnabled?.(!enabled)
192
- })))), /* @__PURE__ */ import_react3.default.createElement("div", {
193
- className: "grid grid-cols-[40px_1fr]"
194
- }, /* @__PURE__ */ import_react3.default.createElement("div", null), /* @__PURE__ */ import_react3.default.createElement("div", {
195
- className: "text-sm text-subdued line-clamp-2 mie-1"
196
- }, service.description)));
197
- };
198
- var AssistantDialog = (0, import_react4.lazy)(() => import("./AssistantDialog-7V7RRSIL.cjs"));
199
- var ChatContainer = (0, import_react4.lazy)(() => import("./ChatContainer-UWYNOALW.cjs"));
200
- var TemplateContainer = (0, import_react4.lazy)(() => import("./TemplateContainer-EQXKHWTF.cjs"));
158
+ var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-RJJHZI63.cjs"));
159
+ var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-WVAAOEOH.cjs"));
160
+ var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-EQXKHWTF.cjs"));
201
161
  // Annotate the CommonJS export names for ESM import in node:
202
162
  0 && (module.exports = {
203
163
  AssistantDialog,
204
164
  AssistantSettings,
205
165
  ChatContainer,
206
166
  PromptSettings,
207
- ServiceRegistry,
208
167
  TemplateContainer
209
168
  });
210
- //# sourceMappingURL=chunk-KWBQ5P7D.cjs.map
169
+ //# sourceMappingURL=chunk-GQ3XS5FZ.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/components/PromptSettings.tsx", "../../../src/components/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/assistant';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { LLM_PROVIDERS, type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out default Selector.\nconst DEFAULT_VALUE = '__default';\n\nconst LLM_PROVIDER_LABELS = {\n edge: 'DXOS',\n ollama: 'Ollama',\n lmstudio: 'LM Studio',\n} as const;\n\nexport const AssistantSettings = ({ settings }: { settings: AssistantSettingsProps }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings llm provider label')}>\n <Select.Root\n value={settings.llmProvider ?? 'edge'}\n onValueChange={(value) => {\n settings.llmProvider = value === DEFAULT_VALUE ? undefined : (value as any);\n }}\n >\n <Select.TriggerButton placeholder={t('settings llm provider label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {LLM_PROVIDERS.map((model) => (\n <Select.Option key={model} value={model}>\n {LLM_PROVIDER_LABELS[model]}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Match, type Schema } from 'effect';\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { Input, Select, Toolbar, useTranslation } from '@dxos/react-ui';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateType, type TemplateKindSchema } from '../types';\n\nexport const PromptSettings = ({ template }: { template: TemplateType }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n const handleKindChange = useCallback(\n (value: string) => {\n const kind = Match.type<string>().pipe(\n Match.withReturnType<Schema.Schema.Type<typeof TemplateKindSchema>>(),\n Match.when('always', () => ({ include: 'always' })),\n Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),\n Match.when('automatically', () => ({ include: 'automatically', description: '' })),\n Match.orElse(() => ({ include: 'manual' })),\n )(value);\n\n template.kind = kind;\n },\n [template],\n );\n\n const handleTypenameChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'schema-matching') {\n template.kind.typename = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n const handleDescriptionChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'automatically') {\n template.kind.description = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n return (\n <div className='p-2 flex flex-col gap-4'>\n <h2>{t('prompt rules label')}</h2>\n <Toolbar.Root>\n <Select.Root value={template.kind.include} onValueChange={handleKindChange}>\n <Toolbar.Button asChild>\n <Select.TriggerButton />\n </Toolbar.Button>\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {TemplateKinds.map((kind) => (\n <Select.Option key={kind} value={kind}>\n {kind}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n {template.kind.include === 'schema-matching' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('typename placeholder')}\n defaultValue={template.kind.typename}\n onChange={handleTypenameChange}\n />\n </Input.Root>\n )}\n {template.kind.include === 'automatically' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('description placeholder')}\n defaultValue={template.kind.description}\n onChange={handleDescriptionChange}\n />\n </Input.Root>\n )}\n </Toolbar.Root>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AssistantSettings';\nexport * from './PromptSettings';\nexport * from './TemplateEditor';\nexport * from './Thread';\nexport * from './Toolbox';\n\n// TODO(burdon): Lazy loading causes issues with Tabster.\n// Repro: open assistant dialog then close.\n// https://github.com/microsoft/fluentui/issues/34020\nexport const AssistantDialog = lazy(() => import('./AssistantDialog'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "PromptSettings", "template", "handleKindChange", "useCallback", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "div", "className", "h2", "Toolbar", "Button", "asChild", "TemplateKinds", "TextInput", "defaultValue", "onChange", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
7
+ }