@dxos/plugin-assistant 0.8.3-main.672df60 → 0.8.3-staging.0fa589b

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 (220) hide show
  1. package/dist/lib/browser/{AssistantDialog-UAZSN6GT.mjs → AssistantDialog-MQOOR364.mjs} +5 -4
  2. package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs +321 -0
  3. package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatContainer-UTN3AO5U.mjs → ChatContainer-C2NEAS3A.mjs} +5 -4
  5. package/dist/lib/browser/{TemplateContainer-AKUYL4AV.mjs → TemplateContainer-QQHVOTSI.mjs} +2 -2
  6. package/dist/lib/browser/TemplateContainer-QQHVOTSI.mjs.map +7 -0
  7. package/dist/lib/browser/{ai-client-COXVUC6V.mjs → ai-client-MK2ZZII2.mjs} +12 -8
  8. package/dist/lib/browser/ai-client-MK2ZZII2.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-56OZ5RW4.mjs → app-graph-builder-E4H5DCOJ.mjs} +52 -33
  10. package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-NBSPGIHL.mjs → chunk-AAOKC2JN.mjs} +17 -15
  12. package/dist/lib/browser/chunk-AAOKC2JN.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-6SD7S7W5.mjs → chunk-BI6AHRNJ.mjs} +8 -8
  14. package/dist/lib/browser/{chunk-6SD7S7W5.mjs.map → chunk-BI6AHRNJ.mjs.map} +3 -3
  15. package/dist/lib/browser/{chunk-Q6XE3O3E.mjs → chunk-JO4W3MF7.mjs} +44 -73
  16. package/dist/lib/browser/chunk-JO4W3MF7.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-MEGMOFJB.mjs +16 -0
  18. package/dist/lib/browser/chunk-MEGMOFJB.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-3F44MBHU.mjs → chunk-UE3IZ4PN.mjs} +1 -1
  20. package/dist/lib/browser/{chunk-3F44MBHU.mjs.map → chunk-UE3IZ4PN.mjs.map} +2 -2
  21. package/dist/lib/browser/index.mjs +84 -30
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/{intent-resolver-GWELYIX2.mjs → intent-resolver-3UICTGPM.mjs} +12 -8
  24. package/dist/lib/browser/intent-resolver-3UICTGPM.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-DGS34EON.mjs → react-surface-LXCNUSZN.mjs} +29 -14
  27. package/dist/lib/browser/react-surface-LXCNUSZN.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-BTFB7IQ6.mjs → settings-XRHXVWGB.mjs} +4 -4
  29. package/dist/lib/browser/settings-XRHXVWGB.mjs.map +7 -0
  30. package/dist/lib/browser/types/index.mjs +1 -1
  31. package/dist/lib/node/{AssistantDialog-RTB5Q7FP.cjs → AssistantDialog-AN4Z6YUV.cjs} +9 -8
  32. package/dist/lib/node/{AssistantDialog-RTB5Q7FP.cjs.map → AssistantDialog-AN4Z6YUV.cjs.map} +1 -1
  33. package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs +344 -0
  34. package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs.map +7 -0
  35. package/dist/lib/node/{ChatContainer-P3JL4VZ7.cjs → ChatContainer-VKYBQHUB.cjs} +9 -8
  36. package/dist/lib/node/{ChatContainer-P3JL4VZ7.cjs.map → ChatContainer-VKYBQHUB.cjs.map} +1 -1
  37. package/dist/lib/node/{TemplateContainer-CTG2MB4W.cjs → TemplateContainer-JZF2DCCG.cjs} +5 -5
  38. package/dist/lib/node/TemplateContainer-JZF2DCCG.cjs.map +7 -0
  39. package/dist/lib/node/{ai-client-R2CGEYZW.cjs → ai-client-7HNSMUMT.cjs} +14 -10
  40. package/dist/lib/node/ai-client-7HNSMUMT.cjs.map +7 -0
  41. package/dist/lib/node/{app-graph-builder-QLF353LH.cjs → app-graph-builder-PPR5B5KU.cjs} +63 -44
  42. package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs.map +7 -0
  43. package/dist/lib/node/chunk-FUAGEO7Q.cjs +52 -0
  44. package/dist/lib/node/chunk-FUAGEO7Q.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-BWL5A3O5.cjs → chunk-IKZBMHSW.cjs} +14 -14
  46. package/dist/lib/node/{chunk-BWL5A3O5.cjs.map → chunk-IKZBMHSW.cjs.map} +3 -3
  47. package/dist/lib/node/{chunk-UNVDZOLA.cjs → chunk-LMDJEGZ2.cjs} +28 -26
  48. package/dist/lib/node/chunk-LMDJEGZ2.cjs.map +7 -0
  49. package/dist/lib/node/{chunk-PG7YNQ4R.cjs → chunk-NIDICM57.cjs} +66 -96
  50. package/dist/lib/node/chunk-NIDICM57.cjs.map +7 -0
  51. package/dist/lib/node/{chunk-TS3H5OSX.cjs → chunk-QGPWY6GW.cjs} +4 -4
  52. package/dist/lib/node/{chunk-TS3H5OSX.cjs.map → chunk-QGPWY6GW.cjs.map} +2 -2
  53. package/dist/lib/node/index.cjs +129 -73
  54. package/dist/lib/node/index.cjs.map +4 -4
  55. package/dist/lib/node/{intent-resolver-U7663JU7.cjs → intent-resolver-QSWGTKON.cjs} +17 -13
  56. package/dist/lib/node/intent-resolver-QSWGTKON.cjs.map +7 -0
  57. package/dist/lib/node/meta.json +1 -1
  58. package/dist/lib/node/{react-surface-QXZTILW6.cjs → react-surface-D3NBYRZ6.cjs} +41 -26
  59. package/dist/lib/node/react-surface-D3NBYRZ6.cjs.map +7 -0
  60. package/dist/lib/node/{settings-LBJMT6YB.cjs → settings-2JXLKYGE.cjs} +7 -7
  61. package/dist/lib/node/settings-2JXLKYGE.cjs.map +7 -0
  62. package/dist/lib/node/types/index.cjs +14 -14
  63. package/dist/lib/node/types/index.cjs.map +1 -1
  64. package/dist/lib/node-esm/{AssistantDialog-DONAO6SA.mjs → AssistantDialog-6WEMLUPU.mjs} +5 -4
  65. package/dist/lib/{browser/AssistantDialog-UAZSN6GT.mjs.map → node-esm/AssistantDialog-6WEMLUPU.mjs.map} +1 -1
  66. package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs +322 -0
  67. package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs.map +7 -0
  68. package/dist/lib/node-esm/{ChatContainer-FVIGCDIG.mjs → ChatContainer-3MVBTUJN.mjs} +5 -4
  69. package/dist/lib/{browser/ChatContainer-UTN3AO5U.mjs.map → node-esm/ChatContainer-3MVBTUJN.mjs.map} +1 -1
  70. package/dist/lib/node-esm/{TemplateContainer-IVDQ4XQG.mjs → TemplateContainer-SOEWY2ZN.mjs} +2 -2
  71. package/dist/lib/node-esm/TemplateContainer-SOEWY2ZN.mjs.map +7 -0
  72. package/dist/lib/node-esm/{ai-client-I5LXHMOZ.mjs → ai-client-XGZBJ6BE.mjs} +12 -8
  73. package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs.map +7 -0
  74. package/dist/lib/node-esm/{app-graph-builder-5YX5TKKT.mjs → app-graph-builder-3SY5MBIK.mjs} +52 -33
  75. package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-34EX6E5Q.mjs +18 -0
  77. package/dist/lib/node-esm/chunk-34EX6E5Q.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-HLPGKJ7N.mjs → chunk-3UEZLJ2V.mjs} +1 -1
  79. package/dist/lib/node-esm/{chunk-HLPGKJ7N.mjs.map → chunk-3UEZLJ2V.mjs.map} +2 -2
  80. package/dist/lib/node-esm/{chunk-TQYSF2GS.mjs → chunk-J6UXXZGJ.mjs} +17 -15
  81. package/dist/lib/node-esm/chunk-J6UXXZGJ.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-MNH6E6EB.mjs → chunk-OD574YIU.mjs} +44 -73
  83. package/dist/lib/node-esm/chunk-OD574YIU.mjs.map +7 -0
  84. package/dist/lib/node-esm/{chunk-GJE4WCUJ.mjs → chunk-UCOFKNKN.mjs} +8 -8
  85. package/dist/lib/node-esm/{chunk-GJE4WCUJ.mjs.map → chunk-UCOFKNKN.mjs.map} +3 -3
  86. package/dist/lib/node-esm/index.mjs +84 -30
  87. package/dist/lib/node-esm/index.mjs.map +4 -4
  88. package/dist/lib/node-esm/{intent-resolver-N5TM3RTL.mjs → intent-resolver-E6MXTYAU.mjs} +12 -8
  89. package/dist/lib/node-esm/intent-resolver-E6MXTYAU.mjs.map +7 -0
  90. package/dist/lib/node-esm/meta.json +1 -1
  91. package/dist/lib/node-esm/{react-surface-FTKGQQD2.mjs → react-surface-7HA5EDWY.mjs} +29 -14
  92. package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs.map +7 -0
  93. package/dist/lib/node-esm/{settings-TGCCAH5D.mjs → settings-5IAY6BT4.mjs} +4 -4
  94. package/dist/lib/node-esm/settings-5IAY6BT4.mjs.map +7 -0
  95. package/dist/lib/node-esm/types/index.mjs +1 -1
  96. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  98. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  101. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +1 -1
  103. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  105. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/BlueprintContainer.d.ts +9 -0
  107. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  108. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +8 -3
  109. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -1
  110. package/dist/types/src/components/BlueprintEditor/index.d.ts +1 -2
  111. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +1 -1
  112. package/dist/types/src/components/TemplateContainer.d.ts +2 -2
  113. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  114. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  116. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +1 -1
  117. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/index.d.ts +4 -3
  119. package/dist/types/src/components/index.d.ts.map +1 -1
  120. package/dist/types/src/events.d.ts +4 -0
  121. package/dist/types/src/events.d.ts.map +1 -0
  122. package/dist/types/src/hooks/processor.d.ts +3 -3
  123. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useMessageQueue.d.ts +8 -8
  125. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  126. package/dist/types/src/index.d.ts +2 -0
  127. package/dist/types/src/index.d.ts.map +1 -1
  128. package/dist/types/src/parser/filter-generator.d.ts +1 -1
  129. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  130. package/dist/types/src/queue-logger.d.ts +11 -0
  131. package/dist/types/src/queue-logger.d.ts.map +1 -0
  132. package/dist/types/src/stories/Query.stories.d.ts.map +1 -1
  133. package/dist/types/src/stories/Research.stories.d.ts +1 -1
  134. package/dist/types/src/stories/Research.stories.d.ts.map +1 -1
  135. package/dist/types/src/testing/test-blueprint.d.ts +4 -10
  136. package/dist/types/src/testing/test-blueprint.d.ts.map +1 -1
  137. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  138. package/dist/types/src/translations.d.ts +15 -0
  139. package/dist/types/src/translations.d.ts.map +1 -1
  140. package/dist/types/src/types/chat.d.ts +13 -10
  141. package/dist/types/src/types/chat.d.ts.map +1 -1
  142. package/dist/types/src/types/service.d.ts +88 -9
  143. package/dist/types/src/types/service.d.ts.map +1 -1
  144. package/dist/types/src/types/template.d.ts +3 -23
  145. package/dist/types/src/types/template.d.ts.map +1 -1
  146. package/dist/types/src/types/types.d.ts +6 -6
  147. package/package.json +71 -68
  148. package/src/AssistantPlugin.tsx +30 -7
  149. package/src/capabilities/ai-client.ts +11 -6
  150. package/src/capabilities/app-graph-builder.ts +69 -54
  151. package/src/capabilities/capabilities.ts +3 -2
  152. package/src/capabilities/intent-resolver.ts +12 -5
  153. package/src/capabilities/react-surface.tsx +23 -19
  154. package/src/capabilities/settings.ts +2 -2
  155. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -0
  156. package/src/components/BlueprintContainer.tsx +148 -0
  157. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +2 -2
  158. package/src/components/BlueprintEditor/BlueprintEditor.tsx +31 -21
  159. package/src/components/BlueprintEditor/index.ts +1 -3
  160. package/src/components/PromptSettings.tsx +1 -1
  161. package/src/components/TemplateContainer.tsx +5 -2
  162. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  163. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  164. package/src/components/Thread/Thread.stories.tsx +19 -27
  165. package/src/components/Thread/ThreadContainer.stories.tsx +11 -12
  166. package/src/components/Thread/ThreadContainer.tsx +3 -4
  167. package/src/components/Thread/reducer.ts +3 -3
  168. package/src/components/index.ts +1 -1
  169. package/src/events.ts +11 -0
  170. package/src/hooks/processor.ts +4 -4
  171. package/src/hooks/useContextProvider.ts +13 -16
  172. package/src/hooks/useMessageQueue.ts +3 -2
  173. package/src/index.ts +2 -0
  174. package/src/parser/filter-generator.test.ts +1 -1
  175. package/src/parser/filter-generator.ts +1 -1
  176. package/src/queue-logger.ts +125 -0
  177. package/src/stories/Query.stories.tsx +28 -29
  178. package/src/stories/Research.stories.tsx +32 -46
  179. package/src/stories/test-data.ts +12 -12
  180. package/src/testing/test-blueprint.ts +14 -6
  181. package/src/testing/test-services.ts +6 -6
  182. package/src/tools/function.ts +2 -2
  183. package/src/tools/openapi.test.ts +7 -13
  184. package/src/tools/openapi.ts +5 -5
  185. package/src/translations.ts +19 -5
  186. package/src/types/chat.ts +3 -4
  187. package/src/types/service.ts +8 -4
  188. package/src/types/template.ts +11 -3
  189. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs +0 -45
  190. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs.map +0 -7
  191. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs.map +0 -7
  192. package/dist/lib/browser/ai-client-COXVUC6V.mjs.map +0 -7
  193. package/dist/lib/browser/app-graph-builder-56OZ5RW4.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-NBSPGIHL.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-Q6XE3O3E.mjs.map +0 -7
  196. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs.map +0 -7
  197. package/dist/lib/browser/react-surface-DGS34EON.mjs.map +0 -7
  198. package/dist/lib/browser/settings-BTFB7IQ6.mjs.map +0 -7
  199. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs +0 -72
  200. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs.map +0 -7
  201. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs.map +0 -7
  202. package/dist/lib/node/ai-client-R2CGEYZW.cjs.map +0 -7
  203. package/dist/lib/node/app-graph-builder-QLF353LH.cjs.map +0 -7
  204. package/dist/lib/node/chunk-PG7YNQ4R.cjs.map +0 -7
  205. package/dist/lib/node/chunk-UNVDZOLA.cjs.map +0 -7
  206. package/dist/lib/node/intent-resolver-U7663JU7.cjs.map +0 -7
  207. package/dist/lib/node/react-surface-QXZTILW6.cjs.map +0 -7
  208. package/dist/lib/node/settings-LBJMT6YB.cjs.map +0 -7
  209. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs +0 -47
  210. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs.map +0 -7
  211. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs.map +0 -7
  212. package/dist/lib/node-esm/ai-client-I5LXHMOZ.mjs.map +0 -7
  213. package/dist/lib/node-esm/app-graph-builder-5YX5TKKT.mjs.map +0 -7
  214. package/dist/lib/node-esm/chunk-MNH6E6EB.mjs.map +0 -7
  215. package/dist/lib/node-esm/chunk-TQYSF2GS.mjs.map +0 -7
  216. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs.map +0 -7
  217. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs.map +0 -7
  218. package/dist/lib/node-esm/settings-TGCCAH5D.mjs.map +0 -7
  219. /package/dist/lib/{node-esm/AssistantDialog-DONAO6SA.mjs.map → browser/AssistantDialog-MQOOR364.mjs.map} +0 -0
  220. /package/dist/lib/{node-esm/ChatContainer-FVIGCDIG.mjs.map → browser/ChatContainer-C2NEAS3A.mjs.map} +0 -0
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/ChatContainer.tsx"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\nexport type ChatContainerProps = {\n role: string;\n chat: AIChatType;\n associatedArtifact?: AssociatedArtifact;\n};\n\n// TODO(burdon): Attention.\nexport const ChatContainer: FC<ChatContainerProps> = ({ role, chat, associatedArtifact }) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <ThreadContainer\n chat={chat}\n settings={settings}\n transcription={transcription}\n associatedArtifact={associatedArtifact}\n />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAA+B;AAE/B,2BAA6D;AAE7D,kCAA0C;AAC1C,4BAA0B;AAanB,IAAMA,gBAAwC,CAAC,EAAEC,MAAMC,MAAMC,mBAAkB,MAAE;;;AACtF,UAAMC,oBAAgBC,sCAAgBC,sDAA0BC,WAAW,EAAEC,SAAS;AACtF,UAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCC,sCAAAA,GAAmBC;AAE/G,WACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;MAACjB;MAAYkB,YAAW;OACxC,6BAAAH,QAAA,cAACI,uCAAAA;MACClB;MACAO;MACAL;MACAD;;;;;AAIR;AAEA,IAAA,wBAAeH;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAA+B;AAE/B,2BAA6D;AAE7D,kCAA0C;AAC1C,4BAA0B;AAanB,IAAMA,gBAAwC,CAAC,EAAEC,MAAMC,MAAMC,mBAAkB,MAAE;;;AACtF,UAAMC,oBAAgBC,sCAAgBC,sDAA0BC,WAAW,EAAEC,SAAS;AACtF,UAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCC,sCAAAA,GAAmBC;AAE/G,WACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;MAACjB;MAAYkB,YAAW;OACxC,6BAAAH,QAAA,cAACI,uCAAAA;MACClB;MACAO;MACAL;MACAD;;;;;AAIR;AAEA,IAAA,wBAAeH;",
6
6
  "names": ["ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "React", "StackItem", "Content", "classNames", "ThreadContainer"]
7
7
  }
@@ -26,18 +26,18 @@ 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 TemplateContainer_CTG2MB4W_exports = {};
30
- __export(TemplateContainer_CTG2MB4W_exports, {
29
+ var TemplateContainer_JZF2DCCG_exports = {};
30
+ __export(TemplateContainer_JZF2DCCG_exports, {
31
31
  TemplateContainer: () => TemplateContainer,
32
32
  default: () => TemplateContainer_default
33
33
  });
34
- module.exports = __toCommonJS(TemplateContainer_CTG2MB4W_exports);
34
+ module.exports = __toCommonJS(TemplateContainer_JZF2DCCG_exports);
35
35
  var import_chunk_4EEWTDQK = require("./chunk-4EEWTDQK.cjs");
36
36
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
37
37
  var import_tracking = require("@preact-signals/safe-react/tracking");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_react_ui_stack = require("@dxos/react-ui-stack");
40
- var TemplateContainer = ({ template, role }) => {
40
+ var TemplateContainer = ({ role, template }) => {
41
41
  var _effect = (0, import_tracking.useSignals)();
42
42
  try {
43
43
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
@@ -55,4 +55,4 @@ var TemplateContainer_default = TemplateContainer;
55
55
  0 && (module.exports = {
56
56
  TemplateContainer
57
57
  });
58
- //# sourceMappingURL=TemplateContainer-CTG2MB4W.cjs.map
58
+ //# sourceMappingURL=TemplateContainer-JZF2DCCG.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TemplateContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { StackItem, type StackItemContentProps } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { type TemplateType } from '../types';\n\nexport const TemplateContainer = ({\n role,\n template,\n}: Pick<StackItemContentProps, 'role'> & { template: TemplateType }) => {\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,4BAAsD;AAK/C,IAAMA,oBAAoB,CAAC,EAChCC,MACAC,SAAQ,MACyD;;;AACjE,WACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;MAACJ;MAAYK,YAAW;OACxC,6BAAAH,QAAA,cAACI,sCAAAA;MAAeL;;;;;AAGtB;AAEA,IAAA,4BAAeF;",
6
+ "names": ["TemplateContainer", "role", "template", "React", "StackItem", "Content", "classNames", "TemplateEditor"]
7
+ }
@@ -16,12 +16,12 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ai_client_R2CGEYZW_exports = {};
20
- __export(ai_client_R2CGEYZW_exports, {
19
+ var ai_client_7HNSMUMT_exports = {};
20
+ __export(ai_client_7HNSMUMT_exports, {
21
21
  default: () => ai_client_default
22
22
  });
23
- module.exports = __toCommonJS(ai_client_R2CGEYZW_exports);
24
- var import_chunk_TS3H5OSX = require("./chunk-TS3H5OSX.cjs");
23
+ module.exports = __toCommonJS(ai_client_7HNSMUMT_exports);
24
+ var import_chunk_QGPWY6GW = require("./chunk-QGPWY6GW.cjs");
25
25
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
26
26
  var import_signals_core = require("@preact/signals-core");
27
27
  var import_ai = require("@dxos/ai");
@@ -31,19 +31,23 @@ var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
31
31
  var ai_client_default = (context) => {
32
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
- const ai = (0, import_signals_core.signal)(new import_ai.AIServiceEdgeClient({
34
+ const aiClient = (0, import_signals_core.signal)(new import_ai.EdgeAiServiceClient({
35
35
  endpoint
36
36
  }));
37
37
  const unsubscribe = (0, import_signals_core.effect)(() => {
38
38
  const settings = context.getCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_P74TWGMG.ASSISTANT_PLUGIN)?.value;
39
39
  if (settings?.llmProvider === "ollama") {
40
- ai.value = new import_ai.OllamaClient();
40
+ aiClient.value = new import_ai.OllamaAiServiceClient();
41
41
  } else {
42
- ai.value = new import_ai.AIServiceEdgeClient({
43
- endpoint
42
+ aiClient.value = new import_ai.EdgeAiServiceClient({
43
+ endpoint,
44
+ defaultGenerationOptions: {
45
+ // model: '@anthropic/claude-sonnet-4-20250514',
46
+ model: "@anthropic/claude-3-5-haiku-20241022"
47
+ }
44
48
  });
45
49
  }
46
50
  });
47
- return (0, import_app_framework.contributes)(import_chunk_TS3H5OSX.AssistantCapabilities.AiClient, ai, () => unsubscribe());
51
+ return (0, import_app_framework.contributes)(import_chunk_QGPWY6GW.AssistantCapabilities.AiClient, aiClient, () => unsubscribe());
48
52
  };
49
- //# sourceMappingURL=ai-client-R2CGEYZW.cjs.map
53
+ //# sourceMappingURL=ai-client-7HNSMUMT.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 { type AiServiceClient, EdgeAiServiceClient, OllamaAiServiceClient } from '@dxos/ai';\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\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 const aiClient = signal<AiServiceClient>(new EdgeAiServiceClient({ 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 aiClient.value = new OllamaAiServiceClient();\n } else {\n aiClient.value = new EdgeAiServiceClient({\n endpoint,\n defaultGenerationOptions: {\n // model: '@anthropic/claude-sonnet-4-20250514',\n model: '@anthropic/claude-3-5-haiku-20241022',\n },\n });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, aiClient, () => unsubscribe());\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAA+B;AAE/B,gBAAiF;AACjF,2BAA8D;AAC9D,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;AACvE,QAAMa,eAAWC,4BAAwB,IAAIC,8BAAoB;IAAET;EAAS,CAAA,CAAA;AAE5E,QAAMU,kBAAcC,4BAAO,MAAA;AACzB,UAAMC,WAAWjB,QACdE,cAAcgB,kCAAaC,aAAa,EACxCC,SAAiCC,sCAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCX,eAASU,QAAQ,IAAIE,gCAAAA;IACvB,OAAO;AACLZ,eAASU,QAAQ,IAAIR,8BAAoB;QACvCT;QACAoB,0BAA0B;;UAExBC,OAAO;QACT;MACF,CAAA;IACF;EACF,CAAA;AAEA,aAAOC,kCAAYC,4CAAsBC,UAAUjB,UAAU,MAAMG,YAAAA,CAAAA;AACrE;",
6
+ "names": ["DEFAULT_AI_SERVICE_URL", "context", "client", "getCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "aiClient", "signal", "EdgeAiServiceClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaAiServiceClient", "defaultGenerationOptions", "model", "contributes", "AssistantCapabilities", "AiClient"]
7
+ }
@@ -16,24 +16,25 @@ 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_QLF353LH_exports = {};
20
- __export(app_graph_builder_QLF353LH_exports, {
19
+ var app_graph_builder_PPR5B5KU_exports = {};
20
+ __export(app_graph_builder_PPR5B5KU_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_QLF353LH_exports);
24
- var import_chunk_UNVDZOLA = require("./chunk-UNVDZOLA.cjs");
23
+ module.exports = __toCommonJS(app_graph_builder_PPR5B5KU_exports);
24
+ var import_chunk_LMDJEGZ2 = require("./chunk-LMDJEGZ2.cjs");
25
25
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
26
26
  var import_rx_react = require("@effect-rx/rx-react");
27
27
  var import_effect = require("effect");
28
28
  var import_app_framework = require("@dxos/app-framework");
29
- var import_echo_schema = require("@dxos/echo-schema");
29
+ var import_assistant = require("@dxos/assistant");
30
+ var import_echo = require("@dxos/echo");
30
31
  var import_invariant = require("@dxos/invariant");
31
32
  var import_plugin_client = require("@dxos/plugin-client");
32
33
  var import_types = require("@dxos/plugin-deck/types");
33
34
  var import_plugin_graph = require("@dxos/plugin-graph");
34
35
  var import_plugin_space = require("@dxos/plugin-space");
35
36
  var import_types2 = require("@dxos/plugin-space/types");
36
- var import_echo = require("@dxos/react-client/echo");
37
+ var import_echo2 = require("@dxos/react-client/echo");
37
38
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
38
39
  var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
39
40
  (0, import_plugin_graph.createExtension)({
@@ -44,21 +45,8 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
44
45
  data: async () => {
45
46
  const { dispatchPromise: dispatch } = context.getCapability(import_app_framework.Capabilities.IntentDispatcher);
46
47
  const client = context.getCapability(import_plugin_client.ClientCapabilities.Client);
47
- const layout = context.getCapability(import_app_framework.Capabilities.Layout);
48
- const { graph } = context.getCapability(import_app_framework.Capabilities.AppGraph);
49
- let chat;
50
- if (layout.active.length > 0) {
51
- const node2 = graph.getNode(layout.active[0]).pipe(import_effect.Option.getOrNull);
52
- if (node2) {
53
- const space = (0, import_echo.getSpace)(node2.data);
54
- if (space) {
55
- chat = await getOrCreateChat(dispatch, space);
56
- }
57
- }
58
- } else {
59
- const space = client.spaces.default;
60
- chat = await getOrCreateChat(dispatch, space);
61
- }
48
+ const space = (0, import_plugin_space.getActiveSpace)(context) ?? client.spaces.default;
49
+ const chat = await getOrCreateChat(dispatch, space);
62
50
  if (!chat) {
63
51
  return;
64
52
  }
@@ -96,21 +84,27 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
96
84
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/object-chat-companion`,
97
85
  connector: (node) => {
98
86
  let query;
99
- return import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => (0, import_echo.isEchoObject)(node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.flatMap((object) => {
100
- const space = (0, import_echo.getSpace)(object);
101
- return space ? import_effect.Option.some({
102
- space,
103
- object
104
- }) : import_effect.Option.none();
105
- }), import_effect.Option.map(({ space, object }) => {
87
+ return import_rx_react.Rx.make((get) => {
88
+ const nodeOption = get(node);
89
+ if (import_effect.Option.isNone(nodeOption)) {
90
+ return [];
91
+ }
92
+ const object = nodeOption.value.data;
93
+ if (!import_echo.Obj.isObject(object)) {
94
+ return [];
95
+ }
96
+ const space = (0, import_echo2.getSpace)(object);
97
+ if (!space) {
98
+ return [];
99
+ }
106
100
  if (!query) {
107
- query = space.db.query(import_echo.Query.select(import_echo.Filter.ids(object.id)).targetOf(import_chunk_UNVDZOLA.CompanionTo).source());
101
+ query = space.db.query(import_echo2.Query.select(import_echo2.Filter.ids(object.id)).targetOf(import_chunk_LMDJEGZ2.CompanionTo).source());
108
102
  }
109
103
  const chat = get((0, import_plugin_space.rxFromQuery)(query))[0];
110
104
  return [
111
105
  {
112
106
  id: [
113
- (0, import_echo.fullyQualifiedId)(object),
107
+ (0, import_echo2.fullyQualifiedId)(object),
114
108
  "assistant-chat"
115
109
  ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
116
110
  type: import_types.PLANK_COMPANION_TYPE,
@@ -128,16 +122,39 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
128
122
  }
129
123
  }
130
124
  ];
131
- }), import_effect.Option.getOrElse(() => [])));
125
+ });
132
126
  }
133
127
  }),
128
+ (0, import_plugin_graph.createExtension)({
129
+ id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/blueprint-logs`,
130
+ connector: (node) => import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => import_echo.Obj.instanceOf(import_assistant.Blueprint, node2.data) ? import_effect.Option.some(node2) : import_effect.Option.none()), import_effect.Option.map((node2) => [
131
+ {
132
+ id: [
133
+ node2.id,
134
+ "logs"
135
+ ].join(import_types.ATTENDABLE_PATH_SEPARATOR),
136
+ type: import_types.PLANK_COMPANION_TYPE,
137
+ data: "logs",
138
+ properties: {
139
+ label: [
140
+ "blueprint logs label",
141
+ {
142
+ ns: import_chunk_P74TWGMG.ASSISTANT_PLUGIN
143
+ }
144
+ ],
145
+ icon: "ph--clock-countdown--regular",
146
+ disposition: "hidden"
147
+ }
148
+ }
149
+ ]), import_effect.Option.getOrElse(() => [])))
150
+ }),
134
151
  (0, import_plugin_graph.createExtension)({
135
152
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/root`,
136
153
  connector: (node) => {
137
154
  let query;
138
- 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) => {
155
+ 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_echo2.isSpace)(node2.data) ? import_effect.Option.some(node2.data) : import_effect.Option.none()), import_effect.Option.map((space) => {
139
156
  if (!query) {
140
- query = space.db.query(import_echo.Query.type(import_chunk_UNVDZOLA.TemplateType));
157
+ query = space.db.query(import_echo2.Query.type(import_chunk_LMDJEGZ2.TemplateType));
141
158
  }
142
159
  const templates = get((0, import_plugin_space.rxFromQuery)(query));
143
160
  return templates.length > 0 ? [
@@ -164,16 +181,16 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
164
181
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/templates`,
165
182
  connector: (node) => {
166
183
  let query;
167
- return import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.id === `${import_chunk_P74TWGMG.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) => {
184
+ return import_rx_react.Rx.make((get) => (0, import_effect.pipe)(get(node), import_effect.Option.flatMap((node2) => node2.id === `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/templates` && (0, import_echo2.isSpace)(node2.properties.space) ? import_effect.Option.some(node2.properties.space) : import_effect.Option.none()), import_effect.Option.map((space) => {
168
185
  if (!query) {
169
- query = space.db.query(import_echo.Query.type(import_chunk_UNVDZOLA.TemplateType));
186
+ query = space.db.query(import_echo2.Query.type(import_chunk_LMDJEGZ2.TemplateType));
170
187
  }
171
188
  return get((0, import_plugin_space.rxFromQuery)(query)).toSorted((a, b) => {
172
189
  const nameA = a.name ?? "";
173
190
  const nameB = b.name ?? "";
174
191
  return nameA.localeCompare(nameB);
175
192
  }).map((template) => ({
176
- id: (0, import_echo.fullyQualifiedId)(template),
193
+ id: (0, import_echo2.fullyQualifiedId)(template),
177
194
  type: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/template`,
178
195
  data: template,
179
196
  properties: {
@@ -191,19 +208,21 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
191
208
  })
192
209
  ]);
193
210
  var getOrCreateChat = async (dispatch, space) => {
194
- const { objects } = await space.db.query(import_echo.Filter.type(import_chunk_UNVDZOLA.AIChatType)).run();
195
- if (objects.length > 0) {
196
- return objects[objects.length - 1];
211
+ const { objects: allChats } = await space.db.query(import_echo2.Query.type(import_chunk_LMDJEGZ2.AIChatType)).run();
212
+ const { objects: relatedChats } = await space.db.query(import_echo2.Query.type(import_chunk_LMDJEGZ2.AIChatType).sourceOf(import_chunk_LMDJEGZ2.CompanionTo).source()).run();
213
+ const chats = allChats.filter((chat) => !relatedChats.includes(chat));
214
+ if (chats.length > 0) {
215
+ return chats[chats.length - 1];
197
216
  }
198
- const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_UNVDZOLA.AssistantAction.CreateChat, {
217
+ const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_LMDJEGZ2.AssistantAction.CreateChat, {
199
218
  space
200
219
  }));
201
- (0, import_invariant.invariant)((0, import_echo_schema.isInstanceOf)(import_chunk_UNVDZOLA.AIChatType, data?.object), void 0, {
220
+ (0, import_invariant.invariant)(import_echo.Obj.instanceOf(import_chunk_LMDJEGZ2.AIChatType, data?.object), void 0, {
202
221
  F: __dxlog_file,
203
- L: 230,
222
+ L: 245,
204
223
  S: void 0,
205
224
  A: [
206
- "isInstanceOf(AIChatType, data?.object)",
225
+ "Obj.instanceOf(AIChatType, data?.object)",
207
226
  ""
208
227
  ]
209
228
  });
@@ -213,4 +232,4 @@ var getOrCreateChat = async (dispatch, space) => {
213
232
  }));
214
233
  return data.object;
215
234
  };
216
- //# sourceMappingURL=app-graph-builder-QLF353LH.cjs.map
235
+ //# sourceMappingURL=app-graph-builder-PPR5B5KU.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 { Blueprint } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\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 { getActiveSpace, rxFromQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n Query,\n type QueryResult,\n fullyQualifiedId,\n getSpace,\n isSpace,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, CompanionTo, 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\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\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 connector: (node) => {\n let query: QueryResult<AIChatType> | undefined;\n return Rx.make((get) => {\n const nodeOption = get(node);\n if (Option.isNone(nodeOption)) {\n return [];\n }\n\n const object = nodeOption.value.data;\n if (!Obj.isObject(object)) {\n return [];\n }\n\n const space = getSpace(object);\n if (!space) {\n return [];\n }\n\n if (!query) {\n query = space.db.query(Query.select(Filter.ids(object.id)).targetOf(CompanionTo).source());\n }\n\n const chat = get(rxFromQuery(query))[0];\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: chat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n });\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/blueprint-logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Blueprint, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['blueprint logs label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\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 // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(AIChatType)).run();\n const { objects: relatedChats } = await space.db.query(Query.type(AIChatType).sourceOf(CompanionTo).source()).run();\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (chats.length > 0) {\n // TODO(burdon): Is this the most recent?\n return chats[chats.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(AIChatType, data?.object));\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", "import_echo", "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", "space", "getActiveSpace", "spaces", "default", "chat", "getOrCreateChat", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "query", "nodeOption", "isNone", "object", "value", "Obj", "isObject", "getSpace", "db", "Query", "select", "Filter", "ids", "targetOf", "CompanionTo", "source", "rxFromQuery", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Blueprint", "SPACE_TYPE", "isSpace", "TemplateType", "templates", "length", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "template", "objects", "allChats", "AIChatType", "run", "relatedChats", "sourceOf", "chats", "filter", "includes", "AssistantAction", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var chunk_FUAGEO7Q_exports = {};
30
+ __export(chunk_FUAGEO7Q_exports, {
31
+ AiClient: () => AiClient,
32
+ AppGraphBuilder: () => AppGraphBuilder,
33
+ IntentResolver: () => IntentResolver,
34
+ ReactSurface: () => ReactSurface,
35
+ Settings: () => Settings
36
+ });
37
+ module.exports = __toCommonJS(chunk_FUAGEO7Q_exports);
38
+ var import_app_framework = require("@dxos/app-framework");
39
+ var AiClient = (0, import_app_framework.lazy)(() => import("./ai-client-7HNSMUMT.cjs"));
40
+ var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-PPR5B5KU.cjs"));
41
+ var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-QSWGTKON.cjs"));
42
+ var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-D3NBYRZ6.cjs"));
43
+ var Settings = (0, import_app_framework.lazy)(() => import("./settings-2JXLKYGE.cjs"));
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ AiClient,
47
+ AppGraphBuilder,
48
+ IntentResolver,
49
+ ReactSurface,
50
+ Settings
51
+ });
52
+ //# sourceMappingURL=chunk-FUAGEO7Q.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AiClient = lazy(() => import('./ai-client'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const Settings = lazy(() => import('./settings'));\n\nexport * from './capabilities';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAqB;AAEd,IAAMA,eAAWC,2BAAK,MAAM,OAAO,0BAAA,CAAA;AACnC,IAAMC,sBAAkBD,2BAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAME,qBAAiBF,2BAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,mBAAeH,2BAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMI,eAAWJ,2BAAK,MAAM,OAAO,yBAAA,CAAA;",
6
+ "names": ["AiClient", "lazy", "AppGraphBuilder", "IntentResolver", "ReactSurface", "Settings"]
7
+ }
@@ -26,17 +26,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_BWL5A3O5_exports = {};
30
- __export(chunk_BWL5A3O5_exports, {
29
+ var chunk_IKZBMHSW_exports = {};
30
+ __export(chunk_IKZBMHSW_exports, {
31
31
  AssistantDialog: () => AssistantDialog,
32
32
  AssistantSettings: () => AssistantSettings,
33
- BlueprintEditor: () => BlueprintEditor,
33
+ BlueprintContainer: () => BlueprintContainer,
34
34
  ChatContainer: () => ChatContainer,
35
35
  PromptSettings: () => PromptSettings,
36
36
  TemplateContainer: () => TemplateContainer
37
37
  });
38
- module.exports = __toCommonJS(chunk_BWL5A3O5_exports);
39
- var import_chunk_UNVDZOLA = require("./chunk-UNVDZOLA.cjs");
38
+ module.exports = __toCommonJS(chunk_IKZBMHSW_exports);
39
+ var import_chunk_LMDJEGZ2 = require("./chunk-LMDJEGZ2.cjs");
40
40
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
41
41
  var import_tracking = require("@preact-signals/safe-react/tracking");
42
42
  var import_react = __toESM(require("react"));
@@ -75,7 +75,7 @@ var AssistantSettings = ({ settings }) => {
75
75
  placeholder: t("settings llm provider label")
76
76
  }), /* @__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, {
77
77
  value: DEFAULT_VALUE
78
- }, t("settings default label")), import_chunk_UNVDZOLA.LLM_PROVIDERS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
78
+ }, t("settings default label")), import_chunk_LMDJEGZ2.LLM_PROVIDERS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
79
79
  key: model,
80
80
  value: model
81
81
  }, LLM_PROVIDER_LABELS[model]))))))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
@@ -146,13 +146,13 @@ var PromptSettings = ({ template }) => {
146
146
  template.kind.include
147
147
  ]);
148
148
  return /* @__PURE__ */ import_react2.default.createElement("div", {
149
- className: "p-2 flex flex-col gap-4"
149
+ className: "flex flex-col gap-4"
150
150
  }, /* @__PURE__ */ import_react2.default.createElement("h2", null, t("prompt rules label")), /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Toolbar.Root, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Root, {
151
151
  value: template.kind.include,
152
152
  onValueChange: handleKindChange
153
153
  }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Toolbar.Button, {
154
154
  asChild: true
155
- }, /* @__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_UNVDZOLA.TemplateKinds.map((kind) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Option, {
155
+ }, /* @__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_LMDJEGZ2.TemplateKinds.map((kind) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Select.Option, {
156
156
  key: kind,
157
157
  value: kind
158
158
  }, 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, {
@@ -168,17 +168,17 @@ var PromptSettings = ({ template }) => {
168
168
  _effect.f();
169
169
  }
170
170
  };
171
- var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-RTB5Q7FP.cjs"));
172
- var BlueprintEditor = (0, import_react3.lazy)(() => import("./BlueprintEditor-43VM3XPO.cjs"));
173
- var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-P3JL4VZ7.cjs"));
174
- var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-CTG2MB4W.cjs"));
171
+ var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-AN4Z6YUV.cjs"));
172
+ var BlueprintContainer = (0, import_react3.lazy)(() => import("./BlueprintContainer-NOWLDYCZ.cjs"));
173
+ var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-VKYBQHUB.cjs"));
174
+ var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-JZF2DCCG.cjs"));
175
175
  // Annotate the CommonJS export names for ESM import in node:
176
176
  0 && (module.exports = {
177
177
  AssistantDialog,
178
178
  AssistantSettings,
179
- BlueprintEditor,
179
+ BlueprintContainer,
180
180
  ChatContainer,
181
181
  PromptSettings,
182
182
  TemplateContainer
183
183
  });
184
- //# sourceMappingURL=chunk-BWL5A3O5.cjs.map
184
+ //# sourceMappingURL=chunk-IKZBMHSW.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/ai';\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 './AmbientDialog';\nexport * from './AssistantSettings';\nexport * from './Prompt';\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 BlueprintEditor = lazy(() => import('./BlueprintEditor'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_react_ui", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "PromptSettings", "template", "handleKindChange", "useCallback", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "div", "className", "h2", "Toolbar", "Button", "asChild", "TemplateKinds", "TextInput", "defaultValue", "onChange", "AssistantDialog", "lazy", "BlueprintEditor", "ChatContainer", "TemplateContainer"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/ai';\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='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 './AmbientDialog';\nexport * from './AssistantSettings';\nexport * from './Prompt';\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 BlueprintContainer = lazy(() => import('./BlueprintContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_react_ui", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "PromptSettings", "template", "handleKindChange", "useCallback", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "div", "className", "h2", "Toolbar", "Button", "asChild", "TemplateKinds", "TextInput", "defaultValue", "onChange", "AssistantDialog", "lazy", "BlueprintContainer", "ChatContainer", "TemplateContainer"]
7
7
  }