@dxos/plugin-assistant 0.8.2-main.f11618f → 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 (166) hide show
  1. package/dist/lib/browser/{AssistantDialog-I47GUXWR.mjs → AssistantDialog-DTWVEQBB.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-GAYN3FEF.mjs → ChatContainer-ZNKENYKZ.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-OK5SMYJC.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-ZXKGE3H5.mjs → app-graph-builder-HTK3HFGM.mjs} +71 -61
  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-BGMQ2YYP.mjs → chunk-7VDZP5WX.mjs} +4 -4
  10. package/dist/lib/browser/{chunk-BGMQ2YYP.mjs.map → chunk-7VDZP5WX.mjs.map} +2 -2
  11. package/dist/lib/browser/{chunk-7CAHKTZQ.mjs → chunk-OWZHLWW5.mjs} +66 -91
  12. package/dist/lib/browser/chunk-OWZHLWW5.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +3 -3
  14. package/dist/lib/browser/{intent-resolver-W6XREK5F.mjs → intent-resolver-QV5AAVJZ.mjs} +4 -9
  15. package/dist/lib/browser/intent-resolver-QV5AAVJZ.mjs.map +7 -0
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{react-surface-QMI5KG4H.mjs → react-surface-JJPYWEIN.mjs} +9 -9
  18. package/dist/lib/browser/react-surface-JJPYWEIN.mjs.map +7 -0
  19. package/dist/lib/browser/{settings-LAJZQI4H.mjs → settings-OZX7J65A.mjs} +2 -2
  20. package/dist/lib/browser/types/index.mjs +1 -1
  21. package/dist/lib/node/{AssistantDialog-SDS2TE5L.cjs → AssistantDialog-RJJHZI63.cjs} +7 -7
  22. package/dist/lib/node/{ChatContainer-U6AVMAHY.cjs → ChatContainer-WVAAOEOH.cjs} +7 -7
  23. package/dist/lib/node/{ai-client-3EVTLXTT.cjs → ai-client-OUPSRQT7.cjs} +6 -6
  24. package/dist/lib/node/ai-client-OUPSRQT7.cjs.map +7 -0
  25. package/dist/lib/node/{app-graph-builder-TXHPXIIC.cjs → app-graph-builder-LEO63CZZ.cjs} +74 -64
  26. package/dist/lib/node/app-graph-builder-LEO63CZZ.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-XBJO453B.cjs → chunk-GQ3XS5FZ.cjs} +9 -9
  28. package/dist/lib/node/{chunk-XBJO453B.cjs.map → chunk-GQ3XS5FZ.cjs.map} +2 -2
  29. package/dist/lib/node/{chunk-CWHFK36A.cjs → chunk-OOHFSPWR.cjs} +72 -91
  30. package/dist/lib/node/chunk-OOHFSPWR.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-5UELRDHQ.cjs → chunk-VG2UQY4S.cjs} +74 -72
  32. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
  33. package/dist/lib/node/index.cjs +39 -39
  34. package/dist/lib/node/{intent-resolver-MUJMV7II.cjs → intent-resolver-QDGZMWLY.cjs} +10 -15
  35. package/dist/lib/node/intent-resolver-QDGZMWLY.cjs.map +7 -0
  36. package/dist/lib/node/meta.json +1 -1
  37. package/dist/lib/node/{react-surface-SAJF4XBB.cjs → react-surface-XNEIJJYJ.cjs} +22 -22
  38. package/dist/lib/node/react-surface-XNEIJJYJ.cjs.map +7 -0
  39. package/dist/lib/node/{settings-NPXTE6ND.cjs → settings-WLTC7XO5.cjs} +6 -6
  40. package/dist/lib/node/types/index.cjs +13 -13
  41. package/dist/lib/node/types/index.cjs.map +1 -1
  42. package/dist/lib/node-esm/{AssistantDialog-KGA5HBFO.mjs → AssistantDialog-D33WZUGR.mjs} +3 -3
  43. package/dist/lib/node-esm/{ChatContainer-XPNXNPSW.mjs → ChatContainer-FAYGNMQW.mjs} +3 -3
  44. package/dist/lib/node-esm/{ai-client-LYCBXZI7.mjs → ai-client-RZQWEDUX.mjs} +3 -3
  45. package/dist/lib/node-esm/ai-client-RZQWEDUX.mjs.map +7 -0
  46. package/dist/lib/node-esm/{app-graph-builder-SV4WC2E2.mjs → app-graph-builder-WXJNZDYB.mjs} +71 -61
  47. package/dist/lib/node-esm/app-graph-builder-WXJNZDYB.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-R7Q3OHWG.mjs → chunk-74GFINWJ.mjs} +4 -4
  49. package/dist/lib/node-esm/{chunk-R7Q3OHWG.mjs.map → chunk-74GFINWJ.mjs.map} +2 -2
  50. package/dist/lib/node-esm/{chunk-XFUXN5QU.mjs → chunk-ED55ZE4G.mjs} +66 -91
  51. package/dist/lib/node-esm/chunk-ED55ZE4G.mjs.map +7 -0
  52. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
  53. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
  54. package/dist/lib/node-esm/index.mjs +3 -3
  55. package/dist/lib/node-esm/{intent-resolver-DZY2O2DG.mjs → intent-resolver-Q3I6S6HN.mjs} +4 -9
  56. package/dist/lib/node-esm/intent-resolver-Q3I6S6HN.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-R43NHNMC.mjs → react-surface-RI3JONQY.mjs} +9 -9
  59. package/dist/lib/node-esm/react-surface-RI3JONQY.mjs.map +7 -0
  60. package/dist/lib/node-esm/{settings-K3JDH2I5.mjs → settings-CLE57WEP.mjs} +2 -2
  61. package/dist/lib/node-esm/types/index.mjs +1 -1
  62. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  63. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  65. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/index.d.ts +2 -178
  67. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  68. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  69. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  70. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  71. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  72. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  73. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  74. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  75. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  76. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  77. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  79. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  80. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  81. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  83. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  84. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  85. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  86. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  87. package/dist/types/src/hooks/index.d.ts +0 -1
  88. package/dist/types/src/hooks/index.d.ts.map +1 -1
  89. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  90. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  91. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  92. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  93. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  94. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  95. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  96. package/dist/types/src/tools/function.d.ts +2 -2
  97. package/dist/types/src/tools/function.d.ts.map +1 -1
  98. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  99. package/dist/types/src/translations.d.ts +6 -60
  100. package/dist/types/src/translations.d.ts.map +1 -1
  101. package/dist/types/src/types/service.d.ts +96 -95
  102. package/dist/types/src/types/service.d.ts.map +1 -1
  103. package/dist/types/src/types/template.d.ts +52 -52
  104. package/dist/types/src/types/template.d.ts.map +1 -1
  105. package/dist/types/src/types/types.d.ts +19 -19
  106. package/dist/types/src/types/types.d.ts.map +1 -1
  107. package/dist/types/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +64 -58
  109. package/src/capabilities/ai-client.ts +4 -4
  110. package/src/capabilities/app-graph-builder.ts +166 -106
  111. package/src/capabilities/intent-resolver.ts +2 -5
  112. package/src/capabilities/react-surface.tsx +5 -5
  113. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  114. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  115. package/src/components/Prompt/PromptBar.tsx +4 -12
  116. package/src/components/PromptSettings.tsx +2 -2
  117. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  118. package/src/components/Thread/Thread.stories.tsx +12 -15
  119. package/src/components/Thread/ThreadContainer.stories.tsx +7 -7
  120. package/src/components/Thread/ThreadMessage.tsx +1 -1
  121. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  122. package/src/components/Toolbox/Toolbox.tsx +3 -3
  123. package/src/hooks/index.ts +0 -1
  124. package/src/hooks/useChatProcessor.tsx +5 -5
  125. package/src/hooks/useContextProvider.ts +20 -16
  126. package/src/hooks/useMessageQueue.ts +2 -2
  127. package/src/tools/function.ts +4 -6
  128. package/src/tools/openapi.ts +4 -3
  129. package/src/types/service.ts +39 -37
  130. package/src/types/template.ts +27 -25
  131. package/src/types/types.ts +18 -18
  132. package/dist/lib/browser/ai-client-OK5SMYJC.mjs.map +0 -7
  133. package/dist/lib/browser/app-graph-builder-ZXKGE3H5.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-7CAHKTZQ.mjs.map +0 -7
  135. package/dist/lib/browser/chunk-E7BN4QKP.mjs +0 -190
  136. package/dist/lib/browser/chunk-E7BN4QKP.mjs.map +0 -7
  137. package/dist/lib/browser/intent-resolver-W6XREK5F.mjs.map +0 -7
  138. package/dist/lib/browser/react-surface-QMI5KG4H.mjs.map +0 -7
  139. package/dist/lib/node/ai-client-3EVTLXTT.cjs.map +0 -7
  140. package/dist/lib/node/app-graph-builder-TXHPXIIC.cjs.map +0 -7
  141. package/dist/lib/node/chunk-5UELRDHQ.cjs.map +0 -7
  142. package/dist/lib/node/chunk-CWHFK36A.cjs.map +0 -7
  143. package/dist/lib/node/intent-resolver-MUJMV7II.cjs.map +0 -7
  144. package/dist/lib/node/react-surface-SAJF4XBB.cjs.map +0 -7
  145. package/dist/lib/node-esm/ai-client-LYCBXZI7.mjs.map +0 -7
  146. package/dist/lib/node-esm/app-graph-builder-SV4WC2E2.mjs.map +0 -7
  147. package/dist/lib/node-esm/chunk-ECYNZYEG.mjs +0 -191
  148. package/dist/lib/node-esm/chunk-ECYNZYEG.mjs.map +0 -7
  149. package/dist/lib/node-esm/chunk-XFUXN5QU.mjs.map +0 -7
  150. package/dist/lib/node-esm/intent-resolver-DZY2O2DG.mjs.map +0 -7
  151. package/dist/lib/node-esm/react-surface-R43NHNMC.mjs.map +0 -7
  152. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  153. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  154. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  155. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  156. package/src/hooks/invocation-handler.ts +0 -107
  157. package/src/hooks/useLocalTriggerManager.ts +0 -82
  158. /package/dist/lib/browser/{AssistantDialog-I47GUXWR.mjs.map → AssistantDialog-DTWVEQBB.mjs.map} +0 -0
  159. /package/dist/lib/browser/{ChatContainer-GAYN3FEF.mjs.map → ChatContainer-ZNKENYKZ.mjs.map} +0 -0
  160. /package/dist/lib/browser/{settings-LAJZQI4H.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  161. /package/dist/lib/node/{AssistantDialog-SDS2TE5L.cjs.map → AssistantDialog-RJJHZI63.cjs.map} +0 -0
  162. /package/dist/lib/node/{ChatContainer-U6AVMAHY.cjs.map → ChatContainer-WVAAOEOH.cjs.map} +0 -0
  163. /package/dist/lib/node/{settings-NPXTE6ND.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  164. /package/dist/lib/node-esm/{AssistantDialog-KGA5HBFO.mjs.map → AssistantDialog-D33WZUGR.mjs.map} +0 -0
  165. /package/dist/lib/node-esm/{ChatContainer-XPNXNPSW.mjs.map → ChatContainer-FAYGNMQW.mjs.map} +0 -0
  166. /package/dist/lib/node-esm/{settings-K3JDH2I5.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 ChatContainer_U6AVMAHY_exports = {};
30
- __export(ChatContainer_U6AVMAHY_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_U6AVMAHY_exports);
35
- var import_chunk_CWHFK36A = require("./chunk-CWHFK36A.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_5UELRDHQ = require("./chunk-5UELRDHQ.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_CWHFK36A.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-U6AVMAHY.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_3EVTLXTT_exports = {};
20
- __export(ai_client_3EVTLXTT_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_3EVTLXTT_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-3EVTLXTT.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_TXHPXIIC_exports = {};
20
- __export(app_graph_builder_TXHPXIIC_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_TXHPXIIC_exports);
24
- var import_chunk_5UELRDHQ = require("./chunk-5UELRDHQ.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,15 +89,15 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
88
89
  }
89
90
  }
90
91
  }
91
- ]
92
+ ]), import_effect.Option.getOrElse(() => [])))
92
93
  }),
93
94
  (0, import_plugin_graph.createExtension)({
94
95
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/object-chat-companion`,
95
- filter: (node) => (0, import_echo.isLiveObject)(node.data) && node.data.assistantChatQueue && node.data.type !== import_chunk_5UELRDHQ.AIChatType.typename,
96
- 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) => [
97
98
  {
98
99
  id: [
99
- node.id,
100
+ node2.id,
100
101
  "assistant-chat"
101
102
  ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
102
103
  type: import_types.PLANK_COMPANION_TYPE,
@@ -108,73 +109,82 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
108
109
  ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
109
110
  }
110
111
  ],
111
- icon: "ph--star-four--regular",
112
+ icon: "ph--sparkle--regular",
112
113
  position: "hoist"
113
114
  }
114
115
  }
115
- ]
116
+ ]), import_effect.Option.getOrElse(() => [])))
116
117
  }),
117
118
  (0, import_plugin_graph.createExtension)({
118
119
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/root`,
119
- filter: (node) => node.type === import_types2.SPACE_TYPE,
120
- connector: ({ node }) => {
121
- const templates = (0, import_plugin_space.memoizeQuery)(node.data, import_echo.Filter.schema(import_chunk_5UELRDHQ.TemplateType));
122
- return templates.length > 0 ? [
123
- {
124
- id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
125
- type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
126
- data: null,
127
- properties: {
128
- label: [
129
- "templates label",
130
- {
131
- ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
132
- }
133
- ],
134
- icon: "ph--file-code--regular",
135
- space: node.data
136
- }
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));
137
125
  }
138
- ] : [];
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(() => [])));
139
145
  }
140
146
  }),
141
147
  (0, import_plugin_graph.createExtension)({
142
148
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
143
- filter: (node) => node.id === `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/templates`,
144
- connector: ({ node }) => {
145
- const templates = (0, import_plugin_space.memoizeQuery)(node.properties.space, import_echo.Filter.schema(import_chunk_5UELRDHQ.TemplateType));
146
- return templates.toSorted((a, b) => {
147
- const nameA = a.name ?? "";
148
- const nameB = b.name ?? "";
149
- return nameA.localeCompare(nameB);
150
- }).map((template) => ({
151
- id: (0, import_echo.fullyQualifiedId)(template),
152
- type: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/template`,
153
- data: template,
154
- properties: {
155
- label: template.name ?? [
156
- "object placeholder",
157
- {
158
- ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
159
- }
160
- ],
161
- 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));
162
154
  }
163
- }));
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(() => [])));
164
174
  }
165
175
  })
166
176
  ]);
167
177
  var getOrCreateChat = async (dispatch, space) => {
168
- const { objects } = await space.db.query(import_echo.Filter.schema(import_chunk_5UELRDHQ.AIChatType)).run();
178
+ const { objects } = await space.db.query(import_echo.Filter.type(import_chunk_VG2UQY4S.AIChatType)).run();
169
179
  if (objects.length > 0) {
170
180
  return objects[objects.length - 1];
171
181
  }
172
- const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_5UELRDHQ.AssistantAction.CreateChat, {
182
+ const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_VG2UQY4S.AssistantAction.CreateChat, {
173
183
  spaceId: space.id
174
184
  }));
175
- (0, import_invariant.invariant)(data?.object instanceof import_chunk_5UELRDHQ.AIChatType, void 0, {
185
+ (0, import_invariant.invariant)(data?.object instanceof import_chunk_VG2UQY4S.AIChatType, void 0, {
176
186
  F: __dxlog_file,
177
- L: 160,
187
+ L: 220,
178
188
  S: void 0,
179
189
  A: [
180
190
  "data?.object instanceof AIChatType",
@@ -187,4 +197,4 @@ var getOrCreateChat = async (dispatch, space) => {
187
197
  }));
188
198
  return data.object;
189
199
  };
190
- //# sourceMappingURL=app-graph-builder-TXHPXIIC.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,16 +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_XBJO453B_exports = {};
30
- __export(chunk_XBJO453B_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
35
  TemplateContainer: () => TemplateContainer
36
36
  });
37
- module.exports = __toCommonJS(chunk_XBJO453B_exports);
38
- var import_chunk_5UELRDHQ = require("./chunk-5UELRDHQ.cjs");
37
+ module.exports = __toCommonJS(chunk_GQ3XS5FZ_exports);
38
+ var import_chunk_VG2UQY4S = require("./chunk-VG2UQY4S.cjs");
39
39
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
40
40
  var import_react = __toESM(require("react"));
41
41
  var import_assistant = require("@dxos/assistant");
@@ -70,7 +70,7 @@ var AssistantSettings = ({ settings }) => {
70
70
  placeholder: t("settings llm provider label")
71
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
72
  value: DEFAULT_VALUE
73
- }, t("settings default label")), import_chunk_5UELRDHQ.LLM_PROVIDERS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
73
+ }, t("settings default label")), import_chunk_VG2UQY4S.LLM_PROVIDERS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
74
74
  key: model,
75
75
  value: model
76
76
  }, LLM_PROVIDER_LABELS[model]))))))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
@@ -142,7 +142,7 @@ var PromptSettings = ({ template }) => {
142
142
  onValueChange: handleKindChange
143
143
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Toolbar.Button, {
144
144
  asChild: true
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_5UELRDHQ.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, {
146
146
  key: kind,
147
147
  value: kind
148
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, {
@@ -155,8 +155,8 @@ var PromptSettings = ({ template }) => {
155
155
  onChange: handleDescriptionChange
156
156
  }))));
157
157
  };
158
- var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-SDS2TE5L.cjs"));
159
- var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-U6AVMAHY.cjs"));
158
+ var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-RJJHZI63.cjs"));
159
+ var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-WVAAOEOH.cjs"));
160
160
  var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-EQXKHWTF.cjs"));
161
161
  // Annotate the CommonJS export names for ESM import in node:
162
162
  0 && (module.exports = {
@@ -166,4 +166,4 @@ var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContaine
166
166
  PromptSettings,
167
167
  TemplateContainer
168
168
  });
169
- //# sourceMappingURL=chunk-XBJO453B.cjs.map
169
+ //# sourceMappingURL=chunk-GQ3XS5FZ.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 as S } 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<S.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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",
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
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
7
  }