@dxos/plugin-assistant 0.8.2-main.12df754 → 0.8.2-main.30e4dbb

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 (185) hide show
  1. package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs → AssistantDialog-BUHPFIHN.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs → ChatContainer-X7JBCLFK.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-OK5SMYJC.mjs} +1 -1
  4. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs.map → ai-client-OK5SMYJC.mjs.map} +2 -2
  5. package/dist/lib/browser/{app-graph-builder-GU6ZWSP4.mjs → app-graph-builder-JJCBQZGC.mjs} +7 -37
  6. package/dist/lib/browser/app-graph-builder-JJCBQZGC.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-PFIXSSN2.mjs} +24 -69
  10. package/dist/lib/browser/chunk-PFIXSSN2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FQ4L5NYW.mjs → chunk-QGZETTI3.mjs} +111 -121
  12. package/dist/lib/browser/chunk-QGZETTI3.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-54SA6LXM.mjs} +4 -4
  16. package/dist/lib/browser/intent-resolver-54SA6LXM.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-JOATHBJ4.mjs → react-surface-JSHNKGXY.mjs} +9 -18
  19. package/dist/lib/browser/react-surface-JSHNKGXY.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-XIAFCAGB.cjs} +7 -7
  23. package/dist/lib/node/{ChatContainer-UWYNOALW.cjs → ChatContainer-MAGI5QD6.cjs} +7 -7
  24. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-3EVTLXTT.cjs} +4 -4
  25. package/dist/lib/node/{ai-client-URCCYU6B.cjs.map → ai-client-3EVTLXTT.cjs.map} +2 -2
  26. package/dist/lib/node/{app-graph-builder-CEMLCKAF.cjs → app-graph-builder-7EJJHBRH.cjs} +14 -44
  27. package/dist/lib/node/app-graph-builder-7EJJHBRH.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-ENBPNIJZ.cjs → chunk-EWY6HDMS.cjs} +118 -121
  29. package/dist/lib/node/chunk-EWY6HDMS.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-KWBQ5P7D.cjs → chunk-V4WPZXN2.cjs} +28 -69
  31. package/dist/lib/node/chunk-V4WPZXN2.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-UP5FPVWP.cjs} +11 -11
  37. package/dist/lib/node/intent-resolver-UP5FPVWP.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7RIXMLMN.cjs → react-surface-M3OXAXKR.cjs} +22 -30
  40. package/dist/lib/node/react-surface-M3OXAXKR.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-SDGQK5TF.mjs} +3 -3
  45. package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs → ChatContainer-AM4BDTXU.mjs} +3 -3
  46. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-LYCBXZI7.mjs} +1 -1
  47. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs.map → ai-client-LYCBXZI7.mjs.map} +2 -2
  48. package/dist/lib/node-esm/{app-graph-builder-Y45WYAWL.mjs → app-graph-builder-ZDI7EVEN.mjs} +7 -37
  49. package/dist/lib/node-esm/app-graph-builder-ZDI7EVEN.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-JE47GNTB.mjs → chunk-RDU7QEFL.mjs} +111 -121
  51. package/dist/lib/node-esm/chunk-RDU7QEFL.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-PFWTW22U.mjs → chunk-RN3I3BVC.mjs} +24 -69
  53. package/dist/lib/node-esm/chunk-RN3I3BVC.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-JKWFZYLN.mjs} +4 -4
  59. package/dist/lib/node-esm/intent-resolver-JKWFZYLN.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-RZBDBP42.mjs} +9 -18
  62. package/dist/lib/node-esm/react-surface-RZBDBP42.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.map +1 -1
  66. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/index.d.ts +1 -1
  68. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  70. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  71. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  72. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  73. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  74. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  75. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  76. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  77. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  78. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  80. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  81. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  82. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  84. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  86. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  87. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  88. package/dist/types/src/components/index.d.ts +0 -1
  89. package/dist/types/src/components/index.d.ts.map +1 -1
  90. package/dist/types/src/hooks/index.d.ts +0 -1
  91. package/dist/types/src/hooks/index.d.ts.map +1 -1
  92. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  93. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  94. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  95. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  96. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  97. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  98. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  99. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  100. package/dist/types/src/tools/function.d.ts +2 -2
  101. package/dist/types/src/tools/function.d.ts.map +1 -1
  102. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +6 -60
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types/service.d.ts +96 -95
  106. package/dist/types/src/types/service.d.ts.map +1 -1
  107. package/dist/types/src/types/template.d.ts +52 -52
  108. package/dist/types/src/types/template.d.ts.map +1 -1
  109. package/dist/types/src/types/types.d.ts +20 -18
  110. package/dist/types/src/types/types.d.ts.map +1 -1
  111. package/dist/types/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +61 -58
  113. package/src/AssistantPlugin.tsx +2 -2
  114. package/src/capabilities/ai-client.ts +0 -1
  115. package/src/capabilities/app-graph-builder.ts +4 -28
  116. package/src/capabilities/index.ts +1 -1
  117. package/src/capabilities/intent-resolver.ts +2 -2
  118. package/src/capabilities/react-surface.tsx +6 -19
  119. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  120. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  121. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  122. package/src/components/Prompt/PromptBar.tsx +4 -12
  123. package/src/components/PromptSettings.tsx +2 -2
  124. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  125. package/src/components/Thread/Thread.stories.tsx +12 -15
  126. package/src/components/Thread/ThreadContainer.stories.tsx +9 -9
  127. package/src/components/Thread/ThreadMessage.tsx +6 -3
  128. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  129. package/src/components/Toolbox/Toolbox.tsx +1 -1
  130. package/src/components/index.ts +0 -1
  131. package/src/hooks/index.ts +0 -1
  132. package/src/hooks/processor.ts +25 -2
  133. package/src/hooks/useChatProcessor.tsx +5 -4
  134. package/src/hooks/useContextProvider.ts +9 -9
  135. package/src/tools/function.ts +4 -6
  136. package/src/tools/openapi.ts +4 -3
  137. package/src/translations.ts +1 -1
  138. package/src/types/service.ts +39 -37
  139. package/src/types/template.ts +27 -25
  140. package/src/types/types.ts +20 -17
  141. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-FQ4L5NYW.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  144. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +0 -7
  146. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +0 -7
  147. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +0 -7
  148. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +0 -7
  149. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  150. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  151. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +0 -7
  152. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +0 -7
  153. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +0 -7
  154. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +0 -7
  155. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-JE47GNTB.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  158. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +0 -7
  160. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +0 -7
  161. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +0 -7
  162. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  163. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  164. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  165. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  166. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  167. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  168. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  169. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  170. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  171. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  172. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  173. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  174. package/src/components/ServiceRegistry/index.ts +0 -5
  175. package/src/hooks/invocation-handler.ts +0 -107
  176. package/src/hooks/useLocalTriggerManager.ts +0 -82
  177. /package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs.map → AssistantDialog-BUHPFIHN.mjs.map} +0 -0
  178. /package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs.map → ChatContainer-X7JBCLFK.mjs.map} +0 -0
  179. /package/dist/lib/browser/{settings-PAJLJEVW.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  180. /package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs.map → AssistantDialog-XIAFCAGB.cjs.map} +0 -0
  181. /package/dist/lib/node/{ChatContainer-UWYNOALW.cjs.map → ChatContainer-MAGI5QD6.cjs.map} +0 -0
  182. /package/dist/lib/node/{settings-JBEYMZ4S.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  183. /package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs.map → AssistantDialog-SDGQK5TF.mjs.map} +0 -0
  184. /package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs.map → ChatContainer-AM4BDTXU.mjs.map} +0 -0
  185. /package/dist/lib/node-esm/{settings-KAMA6RIY.mjs.map → settings-CLE57WEP.mjs.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  ThreadContainer
3
- } from "./chunk-FQ4L5NYW.mjs";
3
+ } from "./chunk-QGZETTI3.mjs";
4
4
  import "./chunk-TXJWGWJ7.mjs";
5
- import "./chunk-IAMR2FAE.mjs";
5
+ import "./chunk-5P7U35RJ.mjs";
6
6
  import {
7
7
  ASSISTANT_PLUGIN
8
8
  } from "./chunk-3HCI5FIL.mjs";
@@ -114,4 +114,4 @@ export {
114
114
  AssistantDialog,
115
115
  AssistantDialog_default as default
116
116
  };
117
- //# sourceMappingURL=AssistantDialog-77B4BSXR.mjs.map
117
+ //# sourceMappingURL=AssistantDialog-BUHPFIHN.mjs.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  ThreadContainer
3
- } from "./chunk-FQ4L5NYW.mjs";
3
+ } from "./chunk-QGZETTI3.mjs";
4
4
  import "./chunk-TXJWGWJ7.mjs";
5
- import "./chunk-IAMR2FAE.mjs";
5
+ import "./chunk-5P7U35RJ.mjs";
6
6
  import {
7
7
  ASSISTANT_PLUGIN
8
8
  } from "./chunk-3HCI5FIL.mjs";
@@ -30,4 +30,4 @@ export {
30
30
  ChatContainer,
31
31
  ChatContainer_default as default
32
32
  };
33
- //# sourceMappingURL=ChatContainer-4AMJKO3T.mjs.map
33
+ //# sourceMappingURL=ChatContainer-X7JBCLFK.mjs.map
@@ -32,4 +32,4 @@ var ai_client_default = (context) => {
32
32
  export {
33
33
  ai_client_default as default
34
34
  };
35
- //# sourceMappingURL=ai-client-CDZLSNXE.mjs.map
35
+ //# sourceMappingURL=ai-client-OK5SMYJC.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 PluginsContext } 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: PluginsContext) => {\n const client = context.requestCapability(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 // TODO(burdon): Could be undefined.\n const settings = context\n .requestCapability(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,SAASA,QAAQC,cAAc;AAE/B,SAASC,cAAcC,mBAAwC;AAC/D,SAA+BC,qBAAqBC,oBAAoB;AACxE,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,mBAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,KAAKE,OAAwB,IAAIC,oBAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,cAAcC,OAAO,MAAA;AAEzB,UAAMC,WAAWhB,QACdE,kBAAkBe,aAAaC,aAAa,EAC5CC,SAAiCC,gBAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,aAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,oBAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,SAAOmB,YAAYC,sBAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } 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: PluginsContext) => {\n const client = context.requestCapability(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 .requestCapability(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,SAASA,QAAQC,cAAc;AAE/B,SAASC,cAAcC,mBAAwC;AAC/D,SAA+BC,qBAAqBC,oBAAoB;AACxE,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,mBAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,KAAKE,OAAwB,IAAIC,oBAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,cAAcC,OAAO,MAAA;AACzB,UAAMC,WAAWhB,QACdE,kBAAkBe,aAAaC,aAAa,EAC5CC,SAAiCC,gBAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,aAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,oBAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,SAAOmB,YAAYC,sBAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
6
6
  "names": ["effect", "signal", "Capabilities", "contributes", "AIServiceEdgeClient", "OllamaClient", "ClientCapabilities", "DEFAULT_AI_SERVICE_URL", "context", "client", "requestCapability", "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
7
  }
@@ -2,7 +2,7 @@ import {
2
2
  AIChatType,
3
3
  AssistantAction,
4
4
  TemplateType
5
- } from "./chunk-IAMR2FAE.mjs";
5
+ } from "./chunk-5P7U35RJ.mjs";
6
6
  import {
7
7
  ASSISTANT_DIALOG,
8
8
  ASSISTANT_PLUGIN
@@ -12,11 +12,11 @@ import {
12
12
  import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
13
13
  import { invariant } from "@dxos/invariant";
14
14
  import { ClientCapabilities } from "@dxos/plugin-client";
15
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
15
+ import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
16
16
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
17
17
  import { memoizeQuery } from "@dxos/plugin-space";
18
18
  import { SPACE_TYPE, SpaceAction } from "@dxos/plugin-space/types";
19
- import { Filter, fullyQualifiedId, getSpace, isLiveObject, parseId } from "@dxos/react-client/echo";
19
+ import { Filter, fullyQualifiedId, getSpace, isLiveObject } from "@dxos/react-client/echo";
20
20
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
21
21
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
22
22
  createExtension({
@@ -65,7 +65,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
65
65
  ns: ASSISTANT_PLUGIN
66
66
  }
67
67
  ],
68
- icon: "ph--star-four--regular",
68
+ icon: "ph--sparkle--regular",
69
69
  disposition: "pin-end",
70
70
  position: "hoist",
71
71
  keyBinding: {
@@ -76,36 +76,6 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
76
76
  }
77
77
  ]
78
78
  }),
79
- createExtension({
80
- id: `${ASSISTANT_PLUGIN}/service-registry`,
81
- filter: (node) => node.id === "root",
82
- connector: ({ node }) => {
83
- const layout = context.requestCapability(Capabilities.Layout);
84
- const client = context.requestCapability(ClientCapabilities.Client);
85
- const { spaceId } = parseId(layout.workspace);
86
- const space = spaceId ? client.spaces.get(spaceId) : null;
87
- return [
88
- {
89
- id: [
90
- node.id,
91
- "service-registry"
92
- ].join(ATTENDABLE_PATH_SEPARATOR),
93
- type: DECK_COMPANION_TYPE,
94
- data: space,
95
- properties: {
96
- label: [
97
- "service registry label",
98
- {
99
- ns: ASSISTANT_PLUGIN
100
- }
101
- ],
102
- icon: "ph--plugs--regular",
103
- disposition: "hidden"
104
- }
105
- }
106
- ];
107
- }
108
- }),
109
79
  createExtension({
110
80
  id: `${ASSISTANT_PLUGIN}/object-chat-companion`,
111
81
  filter: (node) => isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,
@@ -124,7 +94,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
124
94
  ns: ASSISTANT_PLUGIN
125
95
  }
126
96
  ],
127
- icon: "ph--star-four--regular",
97
+ icon: "ph--sparkle--regular",
128
98
  position: "hoist"
129
99
  }
130
100
  }
@@ -190,7 +160,7 @@ var getOrCreateChat = async (dispatch, space) => {
190
160
  }));
191
161
  invariant(data?.object instanceof AIChatType, void 0, {
192
162
  F: __dxlog_file,
193
- L: 184,
163
+ L: 160,
194
164
  S: void 0,
195
165
  A: [
196
166
  "data?.object instanceof AIChatType",
@@ -206,4 +176,4 @@ var getOrCreateChat = async (dispatch, space) => {
206
176
  export {
207
177
  app_graph_builder_default as default
208
178
  };
209
- //# sourceMappingURL=app-graph-builder-GU6ZWSP4.mjs.map
179
+ //# sourceMappingURL=app-graph-builder-JJCBQZGC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\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, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, fullyQualifiedId, getSpace, isLiveObject } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(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.findNode(layout.active[0]);\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 }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n filter: (node): node is Node<AIChatType> =>\n isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,\n connector: ({ 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 }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n filter: (node): node is Node<Space> => node.type === SPACE_TYPE,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.data, Filter.schema(TemplateType));\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: node.data,\n },\n },\n ]\n : [];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));\n return templates\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 }),\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.schema(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": ["Capabilities", "contributes", "createIntent", "LayoutAction", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "ROOT_ID", "memoizeQuery", "SPACE_TYPE", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isLiveObject", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "isLiveObject", "assistantChatQueue", "type", "AIChatType", "typename", "connector", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "SPACE_TYPE", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "run", "AssistantAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -0,0 +1,192 @@
1
+ import {
2
+ ASSISTANT_PLUGIN
3
+ } from "./chunk-3HCI5FIL.mjs";
4
+
5
+ // packages/plugins/plugin-assistant/src/types/chat.ts
6
+ import { Expando, Ref, TypedObject } from "@dxos/echo-schema";
7
+ var AIChatType = class extends TypedObject({
8
+ typename: "dxos.org/type/AIChat",
9
+ version: "0.1.0"
10
+ })({
11
+ // TODO(wittjosiah): Should be a ref to a Queue.
12
+ assistantChatQueue: Ref(Expando)
13
+ }) {
14
+ };
15
+
16
+ // packages/plugins/plugin-assistant/src/types/service.ts
17
+ import { Schema } from "effect";
18
+ import { ComputeGraph } from "@dxos/conductor";
19
+ import { Ref as Ref2, TypedObject as TypedObject2 } from "@dxos/echo-schema";
20
+ import { FunctionType } from "@dxos/functions";
21
+ var ApiAuthorizationKey = Schema.Struct({
22
+ type: Schema.Literal("api-key"),
23
+ key: Schema.String,
24
+ placement: Schema.Union(Schema.Struct({
25
+ type: Schema.Literal("authorization-header")
26
+ }), Schema.Struct({
27
+ type: Schema.Literal("query"),
28
+ name: Schema.String
29
+ }))
30
+ });
31
+ var ApiAuthorizationOauth = Schema.Struct({
32
+ type: Schema.Literal("oauth"),
33
+ clientId: Schema.String,
34
+ clientSecret: Schema.String,
35
+ tokenUrl: Schema.String,
36
+ grantType: Schema.String
37
+ });
38
+ var ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
39
+ var ServiceInterfaceFunction = Schema.Struct({
40
+ kind: Schema.Literal("function"),
41
+ fn: Ref2(FunctionType)
42
+ });
43
+ var ServiceInterfaceWorkflow = Schema.Struct({
44
+ kind: Schema.Literal("workflow"),
45
+ workflow: Ref2(ComputeGraph)
46
+ });
47
+ var ServiceInterfaceApi = Schema.Struct({
48
+ kind: Schema.Literal("api"),
49
+ /**
50
+ * URL to fetch the openapi schema.
51
+ */
52
+ schemaUrl: Schema.optional(Schema.String),
53
+ /**
54
+ * Inlined openapi schema.
55
+ */
56
+ schema: Schema.optional(Schema.Any),
57
+ /**
58
+ * Authorization configuration if required.
59
+ */
60
+ authorization: Schema.optional(ApiAuthorization)
61
+ });
62
+ var ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
63
+ var ServiceType = class extends TypedObject2({
64
+ typename: "dxos.org/type/ServiceType",
65
+ version: "0.1.0"
66
+ })({
67
+ serviceId: Schema.String,
68
+ name: Schema.optional(Schema.String),
69
+ description: Schema.optional(Schema.String),
70
+ category: Schema.optional(Schema.String),
71
+ enabled: Schema.optional(Schema.Boolean),
72
+ /**
73
+ * Entries exposed: functions, workflows, and APIs.
74
+ */
75
+ interfaces: Schema.optional(Schema.Array(ServiceInterface))
76
+ }) {
77
+ };
78
+ var categoryIcons = {
79
+ finance: "ph--bank--regular",
80
+ health: "ph--heart--regular",
81
+ geolocation: "ph--globe-simple--regular",
82
+ education: "ph--books--regular",
83
+ entertainment: "ph--music-notes--regular",
84
+ shopping: "ph--shopping-cart--regular",
85
+ travel: "ph--airplane-takeoff--regular",
86
+ utilities: "ph--lightning--regular",
87
+ weather: "ph--cloud-rain--regular"
88
+ };
89
+
90
+ // packages/plugins/plugin-assistant/src/types/template.ts
91
+ import { Schema as Schema2 } from "effect";
92
+ import { TypedObject as TypedObject3 } from "@dxos/echo-schema";
93
+ var TemplateInputType;
94
+ (function(TemplateInputType2) {
95
+ TemplateInputType2[TemplateInputType2["VALUE"] = 0] = "VALUE";
96
+ TemplateInputType2[TemplateInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
97
+ TemplateInputType2[TemplateInputType2["RETRIEVER"] = 2] = "RETRIEVER";
98
+ TemplateInputType2[TemplateInputType2["FUNCTION"] = 3] = "FUNCTION";
99
+ TemplateInputType2[TemplateInputType2["QUERY"] = 4] = "QUERY";
100
+ TemplateInputType2[TemplateInputType2["RESOLVER"] = 5] = "RESOLVER";
101
+ TemplateInputType2[TemplateInputType2["CONTEXT"] = 6] = "CONTEXT";
102
+ TemplateInputType2[TemplateInputType2["SCHEMA"] = 7] = "SCHEMA";
103
+ })(TemplateInputType || (TemplateInputType = {}));
104
+ var TemplateInputSchema = Schema2.mutable(Schema2.Struct({
105
+ name: Schema2.String,
106
+ type: Schema2.optional(Schema2.Enums(TemplateInputType)),
107
+ value: Schema2.optional(Schema2.String)
108
+ }));
109
+ var TemplateKinds = [
110
+ "always",
111
+ "schema-matching",
112
+ "automatically",
113
+ "manual"
114
+ ];
115
+ var TemplateKindSchema = Schema2.Union(Schema2.Struct({
116
+ include: Schema2.Literal("always")
117
+ }), Schema2.Struct({
118
+ include: Schema2.Literal("schema-matching"),
119
+ typename: Schema2.String
120
+ }), Schema2.Struct({
121
+ include: Schema2.Literal("automatically"),
122
+ description: Schema2.String
123
+ }), Schema2.Struct({
124
+ include: Schema2.Literal("manual")
125
+ }));
126
+ var TemplateType = class extends TypedObject3({
127
+ typename: "dxos.org/type/Template",
128
+ version: "0.1.0"
129
+ })({
130
+ name: Schema2.optional(Schema2.String),
131
+ kind: Schema2.mutable(TemplateKindSchema),
132
+ source: Schema2.String,
133
+ inputs: Schema2.optional(Schema2.mutable(Schema2.Array(TemplateInputSchema))),
134
+ command: Schema2.optional(Schema2.String)
135
+ }) {
136
+ };
137
+
138
+ // packages/plugins/plugin-assistant/src/types/types.ts
139
+ import { Schema as Schema3 } from "effect";
140
+ var AssistantAction;
141
+ (function(AssistantAction2) {
142
+ const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;
143
+ class CreateChat extends Schema3.TaggedClass()(`${ASSISTANT_ACTION}/create-chat`, {
144
+ input: Schema3.Struct({
145
+ spaceId: Schema3.optional(Schema3.String),
146
+ name: Schema3.optional(Schema3.String)
147
+ }),
148
+ output: Schema3.Struct({
149
+ object: AIChatType
150
+ })
151
+ }) {
152
+ }
153
+ AssistantAction2.CreateChat = CreateChat;
154
+ class CreateTemplate extends Schema3.TaggedClass()(`${ASSISTANT_ACTION}/create-template`, {
155
+ input: Schema3.Struct({
156
+ name: Schema3.optional(Schema3.String)
157
+ }),
158
+ output: Schema3.Struct({
159
+ object: TemplateType
160
+ })
161
+ }) {
162
+ }
163
+ AssistantAction2.CreateTemplate = CreateTemplate;
164
+ })(AssistantAction || (AssistantAction = {}));
165
+ var LLM_PROVIDERS = [
166
+ "edge",
167
+ "ollama",
168
+ "lmstudio"
169
+ ];
170
+ var AssistantSettingsSchema = Schema3.mutable(Schema3.Struct({
171
+ llmProvider: Schema3.optional(Schema3.Literal(...LLM_PROVIDERS)),
172
+ edgeModel: Schema3.optional(Schema3.String),
173
+ ollamaModel: Schema3.optional(Schema3.String),
174
+ lmstudioModel: Schema3.optional(Schema3.String),
175
+ customPrompts: Schema3.optional(Schema3.Boolean)
176
+ }));
177
+
178
+ export {
179
+ AIChatType,
180
+ ApiAuthorization,
181
+ ServiceType,
182
+ categoryIcons,
183
+ TemplateInputType,
184
+ TemplateInputSchema,
185
+ TemplateKinds,
186
+ TemplateKindSchema,
187
+ TemplateType,
188
+ AssistantAction,
189
+ LLM_PROVIDERS,
190
+ AssistantSettingsSchema
191
+ };
192
+ //# sourceMappingURL=chunk-5P7U35RJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/chat.ts", "../../../src/types/service.ts", "../../../src/types/template.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Expando, Ref, TypedObject } from '@dxos/echo-schema';\n\nexport class AIChatType extends TypedObject({ typename: 'dxos.org/type/AIChat', version: '0.1.0' })({\n // TODO(wittjosiah): Should be a ref to a Queue.\n assistantChatQueue: Ref(Expando),\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Ref, TypedObject, type Ref$ } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Ref(FunctionType) as Ref$<FunctionType>,\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to Schema.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = Schema.mutable(\n Schema.Struct({\n name: Schema.String,\n type: Schema.optional(Schema.Enums(TemplateInputType)),\n value: Schema.optional(Schema.String),\n }),\n);\n\nexport type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = Schema.Union(\n Schema.Struct({\n include: Schema.Literal('always'),\n }),\n Schema.Struct({\n include: Schema.Literal('schema-matching'),\n typename: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('automatically'),\n description: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;\nexport class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({\n name: Schema.optional(Schema.String),\n kind: Schema.mutable(TemplateKindSchema),\n source: Schema.String,\n inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),\n command: Schema.optional(Schema.String),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { AIChatType } from './chat';\nimport { TemplateType } from './template';\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantAction {\n const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;\n\n export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {\n input: Schema.Struct({\n spaceId: Schema.optional(Schema.String),\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: AIChatType,\n }),\n }) {}\n\n export class CreateTemplate extends Schema.TaggedClass<CreateTemplate>()(`${ASSISTANT_ACTION}/create-template`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: TemplateType,\n }),\n }) {}\n}\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n\nexport const AssistantSettingsSchema = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type AssistantSettingsProps = Schema.Schema.Type<typeof AssistantSettingsSchema>;\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,SAASC,KAAKC,mBAAmB;AAEnC,IAAMC,aAAN,cAAyBC,YAAY;EAAEC,UAAU;EAAwBC,SAAS;AAAQ,CAAA,EAAG;;EAElGC,oBAAoBC,IAAIC,OAAAA;AAC1B,CAAA,EAAA;AAAI;;;ACLJ,SAASC,cAAc;AAEvB,SAASC,oBAAoB;AAC7B,SAASC,OAAAA,MAAKC,eAAAA,oBAA8B;AAC5C,SAASC,oBAAoB;AAE7B,IAAMC,sBAAsBC,OAAOC,OAAO;EACxCC,MAAMF,OAAOG,QAAQ,SAAA;EACrBC,KAAKJ,OAAOK;EACZC,WAAWN,OAAOO,MAChBP,OAAOC,OAAO;IACZC,MAAMF,OAAOG,QAAQ,sBAAA;EACvB,CAAA,GACAH,OAAOC,OAAO;IACZC,MAAMF,OAAOG,QAAQ,OAAA;IACrBK,MAAMR,OAAOK;EACf,CAAA,CAAA;AAEJ,CAAA;AAEA,IAAMI,wBAAwBT,OAAOC,OAAO;EAC1CC,MAAMF,OAAOG,QAAQ,OAAA;EACrBO,UAAUV,OAAOK;EACjBM,cAAcX,OAAOK;EACrBO,UAAUZ,OAAOK;EACjBQ,WAAWb,OAAOK;AACpB,CAAA;AAEO,IAAMS,mBAAmBd,OAAOO,MAAMR,qBAAqBU,qBAAAA;AAGlE,IAAMM,2BAA2Bf,OAAOC,OAAO;EAC7Ce,MAAMhB,OAAOG,QAAQ,UAAA;EACrBc,IAAIC,KAAIC,YAAAA;AACV,CAAA;AAEA,IAAMC,2BAA2BpB,OAAOC,OAAO;EAC7Ce,MAAMhB,OAAOG,QAAQ,UAAA;EACrBkB,UAAUH,KAAII,YAAAA;AAChB,CAAA;AAEA,IAAMC,sBAAsBvB,OAAOC,OAAO;EACxCe,MAAMhB,OAAOG,QAAQ,KAAA;;;;EAKrBqB,WAAWxB,OAAOyB,SAASzB,OAAOK,MAAM;;;;EAKxCqB,QAAQ1B,OAAOyB,SAASzB,OAAO2B,GAAG;;;;EAKlCC,eAAe5B,OAAOyB,SAASX,gBAAAA;AACjC,CAAA;AAEA,IAAMe,mBAAmB7B,OAAOO,MAAMQ,0BAA0BK,0BAA0BG,mBAAAA;AAGnF,IAAMO,cAAN,cAA0BC,aAAY;EAAEC,UAAU;EAA6BC,SAAS;AAAQ,CAAA,EAAG;EACxGC,WAAWlC,OAAOK;EAClBG,MAAMR,OAAOyB,SAASzB,OAAOK,MAAM;EACnC8B,aAAanC,OAAOyB,SAASzB,OAAOK,MAAM;EAC1C+B,UAAUpC,OAAOyB,SAASzB,OAAOK,MAAM;EACvCgC,SAASrC,OAAOyB,SAASzB,OAAOsC,OAAO;;;;EAKvCC,YAAYvC,OAAOyB,SAASzB,OAAOwC,MAAMX,gBAAAA,CAAAA;AAC3C,CAAA,EAAA;AAAI;AAeG,IAAMY,gBAAwC;EACnDC,SAAS;EACTC,QAAQ;EACRC,aAAa;EACbC,WAAW;EACXC,eAAe;EACfC,UAAU;EACVC,QAAQ;EACRC,WAAW;EACXC,SAAS;AACX;;;ACnGA,SAASC,UAAAA,eAAc;AAEvB,SAASC,eAAAA,oBAAmB;;UAGhBC,oBAAAA;;;;;;;;;GAAAA,sBAAAA,oBAAAA,CAAAA,EAAAA;AAWL,IAAMC,sBAAsBC,QAAOC,QACxCD,QAAOE,OAAO;EACZC,MAAMH,QAAOI;EACbC,MAAML,QAAOM,SAASN,QAAOO,MAAMT,iBAAAA,CAAAA;EACnCU,OAAOR,QAAOM,SAASN,QAAOI,MAAM;AACtC,CAAA,CAAA;AAKK,IAAMK,gBAAgB;EAAC;EAAU;EAAmB;EAAiB;;AAGrE,IAAMC,qBAAqBV,QAAOW,MACvCX,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,QAAA;AAC1B,CAAA,GACAb,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,iBAAA;EACxBC,UAAUd,QAAOI;AACnB,CAAA,GACAJ,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,eAAA;EACxBE,aAAaf,QAAOI;AACtB,CAAA,GACAJ,QAAOE,OAAO;EACZU,SAASZ,QAAOa,QAAQ,QAAA;AAC1B,CAAA,CAAA;AAIK,IAAMG,eAAN,cAA2BC,aAAY;EAAEH,UAAU;EAA0BI,SAAS;AAAQ,CAAA,EAAG;EACtGf,MAAMH,QAAOM,SAASN,QAAOI,MAAM;EACnCe,MAAMnB,QAAOC,QAAQS,kBAAAA;EACrBU,QAAQpB,QAAOI;EACfiB,QAAQrB,QAAOM,SAASN,QAAOC,QAAQD,QAAOsB,MAAMvB,mBAAAA,CAAAA,CAAAA;EACpDwB,SAASvB,QAAOM,SAASN,QAAOI,MAAM;AACxC,CAAA,EAAA;AAAI;;;ACrDJ,SAASoB,UAAAA,eAAc;;UAMNC,kBAAAA;AACf,QAAMC,mBAAmB,GAAGC,gBAAAA;EAErB,MAAMC,mBAAmBC,QAAOC,YAAW,EAAe,GAAGJ,gBAAAA,gBAAgC;IAClGK,OAAOF,QAAOG,OAAO;MACnBC,SAASJ,QAAOK,SAASL,QAAOM,MAAM;MACtCC,MAAMP,QAAOK,SAASL,QAAOM,MAAM;IACrC,CAAA;IACAE,QAAQR,QAAOG,OAAO;MACpBM,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;mBARSX,aAAAA;EAUN,MAAMY,uBAAuBX,QAAOC,YAAW,EAAmB,GAAGJ,gBAAAA,oBAAoC;IAC9GK,OAAOF,QAAOG,OAAO;MACnBI,MAAMP,QAAOK,SAASL,QAAOM,MAAM;IACrC,CAAA;IACAE,QAAQR,QAAOG,OAAO;MACpBM,QAAQG;IACV,CAAA;EACF,CAAA,EAAA;EAAI;mBAPSD,iBAAAA;AAQf,GArBiBf,oBAAAA,kBAAAA,CAAAA,EAAAA;AAuBV,IAAMiB,gBAAgB;EAAC;EAAQ;EAAU;;AAEzC,IAAMC,0BAA0Bd,QAAOe,QAC5Cf,QAAOG,OAAO;EACZa,aAAahB,QAAOK,SAASL,QAAOiB,QAAO,GAAIJ,aAAAA,CAAAA;EAC/CK,WAAWlB,QAAOK,SAASL,QAAOM,MAAM;EACxCa,aAAanB,QAAOK,SAASL,QAAOM,MAAM;EAC1Cc,eAAepB,QAAOK,SAASL,QAAOM,MAAM;EAC5Ce,eAAerB,QAAOK,SAASL,QAAOsB,OAAO;AAC/C,CAAA,CAAA;",
6
+ "names": ["Expando", "Ref", "TypedObject", "AIChatType", "TypedObject", "typename", "version", "assistantChatQueue", "Ref", "Expando", "Schema", "ComputeGraph", "Ref", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "Schema", "TypedObject", "TemplateInputType", "TemplateInputSchema", "Schema", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "TypedObject", "version", "kind", "source", "inputs", "Array", "command", "Schema", "AssistantAction", "ASSISTANT_ACTION", "ASSISTANT_PLUGIN", "CreateChat", "Schema", "TaggedClass", "input", "Struct", "spaceId", "optional", "String", "name", "output", "object", "AIChatType", "CreateTemplate", "TemplateType", "LLM_PROVIDERS", "AssistantSettingsSchema", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean"]
7
+ }
@@ -1,11 +1,7 @@
1
1
  import {
2
- useServices
3
- } from "./chunk-FQ4L5NYW.mjs";
4
- import {
5
- ServiceType,
6
- TemplateKinds,
7
- categoryIcons
8
- } from "./chunk-IAMR2FAE.mjs";
2
+ LLM_PROVIDERS,
3
+ TemplateKinds
4
+ } from "./chunk-5P7U35RJ.mjs";
9
5
  import {
10
6
  ASSISTANT_PLUGIN
11
7
  } from "./chunk-3HCI5FIL.mjs";
@@ -16,6 +12,11 @@ import { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from "@dxos/assistant";
16
12
  import { Input, Select, useTranslation } from "@dxos/react-ui";
17
13
  import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
18
14
  var DEFAULT_VALUE = "__default";
15
+ var LLM_PROVIDER_LABELS = {
16
+ edge: "DXOS",
17
+ ollama: "Ollama",
18
+ lmstudio: "LM Studio"
19
+ };
19
20
  var AssistantSettings = ({ settings }) => {
20
21
  const { t } = useTranslation(ASSISTANT_PLUGIN);
21
22
  return /* @__PURE__ */ React.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
@@ -25,10 +26,19 @@ var AssistantSettings = ({ settings }) => {
25
26
  onCheckedChange: (checked) => settings.customPrompts = checked
26
27
  })), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
27
28
  label: t("settings llm provider label")
28
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
29
- checked: settings.llmProvider === "ollama",
30
- onCheckedChange: (checked) => settings.llmProvider = checked ? "ollama" : "edge"
31
- })), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
29
+ }, /* @__PURE__ */ React.createElement(Select.Root, {
30
+ value: settings.llmProvider ?? "edge",
31
+ onValueChange: (value) => {
32
+ settings.llmProvider = value === DEFAULT_VALUE ? void 0 : value;
33
+ }
34
+ }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
35
+ placeholder: t("settings llm provider label")
36
+ }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, /* @__PURE__ */ React.createElement(Select.Option, {
37
+ value: DEFAULT_VALUE
38
+ }, t("settings default label")), LLM_PROVIDERS.map((model) => /* @__PURE__ */ React.createElement(Select.Option, {
39
+ key: model,
40
+ value: model
41
+ }, LLM_PROVIDER_LABELS[model]))))))), /* @__PURE__ */ React.createElement(DeprecatedFormInput, {
32
42
  label: t("settings edge llm model label")
33
43
  }, /* @__PURE__ */ React.createElement(Select.Root, {
34
44
  value: settings.edgeModel ?? DEFAULT_VALUE,
@@ -117,72 +127,17 @@ var PromptSettings = ({ template }) => {
117
127
  }))));
118
128
  };
119
129
 
120
- // packages/plugins/plugin-assistant/src/components/ServiceRegistry/ServiceRegistry.tsx
121
- import React3, { useMemo } from "react";
122
- import { Filter } from "@dxos/client/echo";
123
- import { useQuery } from "@dxos/react-client/echo";
124
- import { Icon, Input as Input3, List, ListItem } from "@dxos/react-ui";
125
- var ServiceRegistry = ({ space }) => {
126
- const matchingServices = useServices(space);
127
- const enabledServices = useQuery(space, Filter.schema(ServiceType));
128
- const services = useMemo(() => {
129
- return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
130
- }, [
131
- matchingServices,
132
- enabledServices
133
- ]);
134
- const handleSetEnabled = (service, enabled) => {
135
- if (enabled) {
136
- space.db.add(service);
137
- } else {
138
- space.db.remove(service);
139
- }
140
- };
141
- return /* @__PURE__ */ React3.createElement(List, {
142
- classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
143
- }, services.map((service) => /* @__PURE__ */ React3.createElement(ServiceItem, {
144
- key: service.serviceId,
145
- service,
146
- enabled: service.enabled,
147
- setEnabled: (enabled) => handleSetEnabled(service, enabled)
148
- })));
149
- };
150
- var ServiceItem = ({ service, enabled, setEnabled }) => {
151
- return /* @__PURE__ */ React3.createElement(ListItem.Root, {
152
- classNames: "flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator"
153
- }, /* @__PURE__ */ React3.createElement("div", {
154
- className: "grid grid-cols-[40px_1fr_40px]"
155
- }, /* @__PURE__ */ React3.createElement("div", {
156
- className: "flex gow justify-center items-center"
157
- }, /* @__PURE__ */ React3.createElement(Icon, {
158
- icon: categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
159
- size: 6
160
- })), /* @__PURE__ */ React3.createElement("div", {
161
- className: "grow items-center truncate mie-2"
162
- }, service.name), /* @__PURE__ */ React3.createElement("div", {
163
- className: "flex gow justify-center items-center"
164
- }, /* @__PURE__ */ React3.createElement(Input3.Root, null, /* @__PURE__ */ React3.createElement(Input3.Switch, {
165
- checked: enabled,
166
- onClick: () => setEnabled?.(!enabled)
167
- })))), /* @__PURE__ */ React3.createElement("div", {
168
- className: "grid grid-cols-[40px_1fr]"
169
- }, /* @__PURE__ */ React3.createElement("div", null), /* @__PURE__ */ React3.createElement("div", {
170
- className: "text-sm text-subdued line-clamp-2 mie-1"
171
- }, service.description)));
172
- };
173
-
174
130
  // packages/plugins/plugin-assistant/src/components/index.ts
175
131
  import { lazy } from "react";
176
- var AssistantDialog = lazy(() => import("./AssistantDialog-77B4BSXR.mjs"));
177
- var ChatContainer = lazy(() => import("./ChatContainer-4AMJKO3T.mjs"));
132
+ var AssistantDialog = lazy(() => import("./AssistantDialog-BUHPFIHN.mjs"));
133
+ var ChatContainer = lazy(() => import("./ChatContainer-X7JBCLFK.mjs"));
178
134
  var TemplateContainer = lazy(() => import("./TemplateContainer-WKU5XFSO.mjs"));
179
135
 
180
136
  export {
181
137
  AssistantSettings,
182
138
  PromptSettings,
183
- ServiceRegistry,
184
139
  AssistantDialog,
185
140
  ChatContainer,
186
141
  TemplateContainer
187
142
  };
188
- //# sourceMappingURL=chunk-SBFJKCVU.mjs.map
143
+ //# sourceMappingURL=chunk-PFIXSSN2.mjs.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": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "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", "Match", "React", "useCallback", "debounce", "Input", "Select", "Toolbar", "useTranslation", "PromptSettings", "template", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "React", "div", "className", "h2", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Content", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "lazy", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
7
+ }