@dxos/plugin-assistant 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850

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 (295) hide show
  1. package/dist/lib/browser/AssistantDialog-K6POM23O.mjs +46 -0
  2. package/dist/lib/browser/AssistantDialog-K6POM23O.mjs.map +7 -0
  3. package/dist/lib/browser/ChatContainer-QTO4LE2C.mjs +39 -0
  4. package/dist/lib/{node-esm/ChatContainer-FAYGNMQW.mjs.map → browser/ChatContainer-QTO4LE2C.mjs.map} +1 -1
  5. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs +28 -0
  6. package/dist/lib/{node-esm/TemplateContainer-3LEBT5ZC.mjs.map → browser/TemplateContainer-AKUYL4AV.mjs.map} +1 -1
  7. package/dist/lib/browser/{ai-client-5PRCXI7N.mjs → ai-client-COXVUC6V.mjs} +4 -4
  8. package/dist/lib/browser/ai-client-COXVUC6V.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-HTK3HFGM.mjs → app-graph-builder-YH4EGNBC.mjs} +45 -28
  10. package/dist/lib/browser/app-graph-builder-YH4EGNBC.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-TXJWGWJ7.mjs → chunk-3F44MBHU.mjs} +3 -3
  12. package/dist/lib/browser/chunk-3F44MBHU.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-IHEBFO5O.mjs +205 -0
  14. package/dist/lib/browser/chunk-IHEBFO5O.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-JQFUME3B.mjs +87 -0
  16. package/dist/lib/{node-esm/chunk-PBZA7XJR.mjs.map → browser/chunk-JQFUME3B.mjs.map} +1 -1
  17. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +96 -0
  18. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-OWZHLWW5.mjs → chunk-QTW7KVDO.mjs} +1595 -1452
  20. package/dist/lib/browser/chunk-QTW7KVDO.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-USJBRB3H.mjs +155 -0
  22. package/dist/lib/browser/chunk-USJBRB3H.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-3HCI5FIL.mjs → chunk-XOZ7YMO3.mjs} +3 -3
  24. package/dist/lib/browser/{chunk-3HCI5FIL.mjs.map → chunk-XOZ7YMO3.mjs.map} +1 -1
  25. package/dist/lib/browser/index.mjs +24 -10
  26. package/dist/lib/browser/index.mjs.map +3 -3
  27. package/dist/lib/browser/{intent-resolver-QV5AAVJZ.mjs → intent-resolver-63EAHENI.mjs} +6 -5
  28. package/dist/lib/browser/intent-resolver-63EAHENI.mjs.map +7 -0
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/browser/react-surface-XCV6NR75.mjs +131 -0
  31. package/dist/lib/browser/react-surface-XCV6NR75.mjs.map +7 -0
  32. package/dist/lib/browser/{settings-OZX7J65A.mjs → settings-SHNQ4XXP.mjs} +3 -3
  33. package/dist/lib/browser/types/index.mjs +4 -2
  34. package/dist/lib/node/AssistantDialog-FDATKYE5.cjs +72 -0
  35. package/dist/lib/node/AssistantDialog-FDATKYE5.cjs.map +7 -0
  36. package/dist/lib/node/{ChatContainer-WVAAOEOH.cjs → ChatContainer-5CLHJOIQ.cjs} +25 -19
  37. package/dist/lib/node/{ChatContainer-WVAAOEOH.cjs.map → ChatContainer-5CLHJOIQ.cjs.map} +1 -1
  38. package/dist/lib/node/{TemplateContainer-EQXKHWTF.cjs → TemplateContainer-CTG2MB4W.cjs} +18 -12
  39. package/dist/lib/node/{TemplateContainer-EQXKHWTF.cjs.map → TemplateContainer-CTG2MB4W.cjs.map} +1 -1
  40. package/dist/lib/node/{ai-client-OUPSRQT7.cjs → ai-client-R2CGEYZW.cjs} +12 -12
  41. package/dist/lib/node/ai-client-R2CGEYZW.cjs.map +7 -0
  42. package/dist/lib/node/{app-graph-builder-LEO63CZZ.cjs → app-graph-builder-PSHIOW3Q.cjs} +62 -46
  43. package/dist/lib/node/app-graph-builder-PSHIOW3Q.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-XI2ARIEO.cjs → chunk-4EEWTDQK.cjs} +45 -39
  45. package/dist/lib/node/{chunk-XI2ARIEO.cjs.map → chunk-4EEWTDQK.cjs.map} +1 -1
  46. package/dist/lib/node/chunk-FLJWJ35M.cjs +181 -0
  47. package/dist/lib/node/chunk-FLJWJ35M.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-OOHFSPWR.cjs → chunk-H4A42LNR.cjs} +1126 -983
  49. package/dist/lib/node/chunk-H4A42LNR.cjs.map +7 -0
  50. package/dist/lib/node/chunk-HRNIUYVQ.cjs +128 -0
  51. package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +7 -0
  52. package/dist/lib/node/{chunk-Q5XWEMHB.cjs → chunk-P74TWGMG.cjs} +6 -6
  53. package/dist/lib/node/{chunk-Q5XWEMHB.cjs.map → chunk-P74TWGMG.cjs.map} +1 -1
  54. package/dist/lib/node/chunk-RXPA2C2A.cjs +230 -0
  55. package/dist/lib/node/chunk-RXPA2C2A.cjs.map +7 -0
  56. package/dist/lib/node/{chunk-GBUNQ257.cjs → chunk-TS3H5OSX.cjs} +7 -7
  57. package/dist/lib/node/chunk-TS3H5OSX.cjs.map +7 -0
  58. package/dist/lib/node/index.cjs +72 -59
  59. package/dist/lib/node/index.cjs.map +3 -3
  60. package/dist/lib/node/{intent-resolver-QDGZMWLY.cjs → intent-resolver-66F7WLW6.cjs} +13 -12
  61. package/dist/lib/node/intent-resolver-66F7WLW6.cjs.map +7 -0
  62. package/dist/lib/node/meta.json +1 -1
  63. package/dist/lib/node/react-surface-TASAPRPQ.cjs +145 -0
  64. package/dist/lib/node/react-surface-TASAPRPQ.cjs.map +7 -0
  65. package/dist/lib/node/{settings-WLTC7XO5.cjs → settings-ERKLO6IO.cjs} +8 -8
  66. package/dist/lib/node/types/index.cjs +16 -14
  67. package/dist/lib/node/types/index.cjs.map +2 -2
  68. package/dist/lib/node-esm/AssistantDialog-PIMYK774.mjs +47 -0
  69. package/dist/lib/node-esm/AssistantDialog-PIMYK774.mjs.map +7 -0
  70. package/dist/lib/node-esm/ChatContainer-QTC5NYE2.mjs +40 -0
  71. package/dist/lib/{browser/ChatContainer-ZNKENYKZ.mjs.map → node-esm/ChatContainer-QTC5NYE2.mjs.map} +1 -1
  72. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs +29 -0
  73. package/dist/lib/{browser/TemplateContainer-WKU5XFSO.mjs.map → node-esm/TemplateContainer-IVDQ4XQG.mjs.map} +1 -1
  74. package/dist/lib/node-esm/{ai-client-RZQWEDUX.mjs → ai-client-I5LXHMOZ.mjs} +4 -4
  75. package/dist/lib/node-esm/ai-client-I5LXHMOZ.mjs.map +7 -0
  76. package/dist/lib/node-esm/{app-graph-builder-WXJNZDYB.mjs → app-graph-builder-Z3GMMJMD.mjs} +45 -28
  77. package/dist/lib/node-esm/app-graph-builder-Z3GMMJMD.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs → chunk-BB2TAT4P.mjs} +3 -3
  79. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs.map → chunk-BB2TAT4P.mjs.map} +1 -1
  80. package/dist/lib/node-esm/chunk-CDAILLCU.mjs +98 -0
  81. package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +7 -0
  82. package/dist/lib/node-esm/{chunk-6JK5HEUQ.mjs → chunk-HLPGKJ7N.mjs} +3 -3
  83. package/dist/lib/node-esm/chunk-HLPGKJ7N.mjs.map +7 -0
  84. package/dist/lib/node-esm/{chunk-PBZA7XJR.mjs → chunk-OYN6HLXZ.mjs} +42 -36
  85. package/dist/lib/{browser/chunk-NFUHCW2J.mjs.map → node-esm/chunk-OYN6HLXZ.mjs.map} +1 -1
  86. package/dist/lib/node-esm/chunk-QU626JMR.mjs +156 -0
  87. package/dist/lib/node-esm/chunk-QU626JMR.mjs.map +7 -0
  88. package/dist/lib/node-esm/{chunk-ED55ZE4G.mjs → chunk-SI5LOQEO.mjs} +1595 -1452
  89. package/dist/lib/node-esm/chunk-SI5LOQEO.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-ZKBACPIW.mjs +206 -0
  91. package/dist/lib/node-esm/chunk-ZKBACPIW.mjs.map +7 -0
  92. package/dist/lib/node-esm/index.mjs +24 -10
  93. package/dist/lib/node-esm/index.mjs.map +3 -3
  94. package/dist/lib/node-esm/{intent-resolver-Q3I6S6HN.mjs → intent-resolver-X3PWH7KM.mjs} +6 -5
  95. package/dist/lib/node-esm/intent-resolver-X3PWH7KM.mjs.map +7 -0
  96. package/dist/lib/node-esm/meta.json +1 -1
  97. package/dist/lib/node-esm/react-surface-QMIQCXUM.mjs +132 -0
  98. package/dist/lib/node-esm/react-surface-QMIQCXUM.mjs.map +7 -0
  99. package/dist/lib/node-esm/{settings-CLE57WEP.mjs → settings-IVQRZUCU.mjs} +3 -3
  100. package/dist/lib/node-esm/types/index.mjs +4 -2
  101. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/ai-client.d.ts +1 -1
  103. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/index.d.ts +1 -1
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  111. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +3 -1
  112. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  113. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +8 -0
  114. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -0
  115. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +8 -0
  116. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +1 -0
  117. package/dist/types/src/components/BlueprintEditor/index.d.ts +2 -0
  118. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +1 -0
  119. package/dist/types/src/components/Prompt/Prompt.d.ts +5 -2
  120. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  121. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +6 -3
  122. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/Prompt/PromptBar.d.ts +9 -4
  124. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  125. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +9 -0
  126. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +1 -0
  127. package/dist/types/src/components/Prompt/autocomplete.d.ts +5 -1
  128. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  129. package/dist/types/src/components/Thread/Thread.d.ts +2 -2
  130. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  131. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -1
  132. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  133. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  134. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  135. package/dist/types/src/components/Thread/ThreadMessage.d.ts +4 -2
  136. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  137. package/dist/types/src/components/Thread/ToolInvocations.d.ts +1 -1
  138. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  139. package/dist/types/src/components/Thread/reducer.d.ts +1 -1
  140. package/dist/types/src/components/Thread/reducer.d.ts.map +1 -1
  141. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -1
  142. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  143. package/dist/types/src/components/index.d.ts +2 -0
  144. package/dist/types/src/components/index.d.ts.map +1 -1
  145. package/dist/types/src/experimental/transcription/index.d.ts +1 -0
  146. package/dist/types/src/experimental/transcription/index.d.ts.map +1 -0
  147. package/dist/types/src/hooks/processor.d.ts +6 -5
  148. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  150. package/dist/types/src/hooks/useMessageQueue.d.ts +11 -7
  151. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  152. package/dist/types/src/parser/filter-generator.d.ts +4 -0
  153. package/dist/types/src/parser/filter-generator.d.ts.map +1 -0
  154. package/dist/types/src/parser/filter-generator.test.d.ts +2 -0
  155. package/dist/types/src/parser/filter-generator.test.d.ts.map +1 -0
  156. package/dist/types/src/parser/index.d.ts +4 -0
  157. package/dist/types/src/parser/index.d.ts.map +1 -0
  158. package/dist/types/src/parser/query-parser.d.ts +15 -0
  159. package/dist/types/src/parser/query-parser.d.ts.map +1 -0
  160. package/dist/types/src/parser/query-parser.test.d.ts +2 -0
  161. package/dist/types/src/parser/query-parser.test.d.ts.map +1 -0
  162. package/dist/types/src/parser/types.d.ts +24 -0
  163. package/dist/types/src/parser/types.d.ts.map +1 -0
  164. package/dist/types/src/stories/Prompt.stories.d.ts +8 -0
  165. package/dist/types/src/stories/Prompt.stories.d.ts.map +1 -0
  166. package/dist/types/src/stories/Query.stories.d.ts +19 -0
  167. package/dist/types/src/stories/Query.stories.d.ts.map +1 -0
  168. package/dist/types/src/stories/Research.stories.d.ts +15 -0
  169. package/dist/types/src/stories/Research.stories.d.ts.map +1 -0
  170. package/dist/types/src/stories/test-data.d.ts +3 -0
  171. package/dist/types/src/stories/test-data.d.ts.map +1 -0
  172. package/dist/types/src/stories/testing.d.ts +12 -0
  173. package/dist/types/src/stories/testing.d.ts.map +1 -0
  174. package/dist/types/src/testing/blueprint.d.ts +7 -0
  175. package/dist/types/src/testing/blueprint.d.ts.map +1 -0
  176. package/dist/types/src/testing/index.d.ts +1 -0
  177. package/dist/types/src/testing/index.d.ts.map +1 -1
  178. package/dist/types/src/testing/test-functions.d.ts +1 -1
  179. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  180. package/dist/types/src/tools/function.d.ts +4 -4
  181. package/dist/types/src/tools/function.d.ts.map +1 -1
  182. package/dist/types/src/tools/openapi.d.ts +3 -3
  183. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  184. package/dist/types/src/translations.d.ts +63 -6
  185. package/dist/types/src/translations.d.ts.map +1 -1
  186. package/dist/types/src/types/chat.d.ts +18 -8
  187. package/dist/types/src/types/chat.d.ts.map +1 -1
  188. package/dist/types/src/types/types.d.ts +6 -3
  189. package/dist/types/src/types/types.d.ts.map +1 -1
  190. package/package.json +73 -61
  191. package/src/AssistantPlugin.tsx +5 -4
  192. package/src/capabilities/ai-client.ts +1 -1
  193. package/src/capabilities/app-graph-builder.ts +34 -24
  194. package/src/capabilities/capabilities.ts +1 -1
  195. package/src/capabilities/intent-resolver.ts +3 -2
  196. package/src/capabilities/react-surface.tsx +58 -13
  197. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  198. package/src/components/AmbientDialog/AmbientDialog.tsx +27 -13
  199. package/src/components/AssistantDialog.tsx +1 -1
  200. package/src/components/AssistantSettings/AssistantSettings.tsx +1 -1
  201. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +32 -0
  202. package/src/components/BlueprintEditor/BlueprintEditor.tsx +41 -0
  203. package/src/components/BlueprintEditor/index.ts +5 -0
  204. package/src/components/Prompt/Prompt.stories.tsx +59 -52
  205. package/src/components/Prompt/Prompt.tsx +24 -10
  206. package/src/components/Prompt/PromptBar.stories.tsx +68 -0
  207. package/src/components/Prompt/PromptBar.tsx +82 -80
  208. package/src/components/Prompt/autocomplete.ts +14 -8
  209. package/src/components/Prompt/references.ts +3 -3
  210. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  211. package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
  212. package/src/components/Thread/Thread.stories.tsx +2 -2
  213. package/src/components/Thread/Thread.tsx +2 -2
  214. package/src/components/Thread/ThreadContainer.stories.tsx +77 -47
  215. package/src/components/Thread/ThreadContainer.tsx +8 -9
  216. package/src/components/Thread/ThreadMessage.tsx +43 -8
  217. package/src/components/Thread/ToolInvocations.tsx +9 -7
  218. package/src/components/Thread/reducer.ts +1 -1
  219. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  220. package/src/components/Toolbox/Toolbox.tsx +2 -1
  221. package/src/components/index.ts +2 -0
  222. package/src/experimental/transcription/index.ts +3 -0
  223. package/src/hooks/processor.ts +65 -27
  224. package/src/hooks/useChatProcessor.tsx +4 -4
  225. package/src/hooks/useContextProvider.ts +6 -6
  226. package/src/hooks/useMessageQueue.ts +4 -4
  227. package/src/meta.ts +2 -2
  228. package/src/parser/filter-generator.test.ts +32 -0
  229. package/src/parser/filter-generator.ts +81 -0
  230. package/src/parser/index.ts +7 -0
  231. package/src/parser/query-parser.test.ts +139 -0
  232. package/src/parser/query-parser.ts +199 -0
  233. package/src/parser/types.ts +34 -0
  234. package/src/shims.d.ts +8 -0
  235. package/src/stories/Prompt.stories.tsx +59 -0
  236. package/src/stories/Query.stories.tsx +448 -0
  237. package/src/stories/Research.stories.tsx +495 -0
  238. package/src/stories/test-data.ts +128 -0
  239. package/src/stories/testing.ts +64 -0
  240. package/src/testing/blueprint.ts +47 -0
  241. package/src/testing/index.ts +1 -0
  242. package/src/testing/test-functions.ts +1 -1
  243. package/src/tools/function.ts +8 -7
  244. package/src/tools/openapi.test.ts +18 -19
  245. package/src/tools/openapi.ts +20 -14
  246. package/src/translations.ts +4 -2
  247. package/src/types/chat.ts +27 -4
  248. package/src/types/types.ts +3 -1
  249. package/dist/lib/browser/AssistantDialog-DTWVEQBB.mjs +0 -117
  250. package/dist/lib/browser/AssistantDialog-DTWVEQBB.mjs.map +0 -7
  251. package/dist/lib/browser/ChatContainer-ZNKENYKZ.mjs +0 -33
  252. package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs +0 -22
  253. package/dist/lib/browser/ai-client-5PRCXI7N.mjs.map +0 -7
  254. package/dist/lib/browser/app-graph-builder-HTK3HFGM.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-5P7U35RJ.mjs +0 -192
  256. package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +0 -7
  257. package/dist/lib/browser/chunk-7VDZP5WX.mjs +0 -143
  258. package/dist/lib/browser/chunk-7VDZP5WX.mjs.map +0 -7
  259. package/dist/lib/browser/chunk-NFUHCW2J.mjs +0 -81
  260. package/dist/lib/browser/chunk-OWZHLWW5.mjs.map +0 -7
  261. package/dist/lib/browser/chunk-TXJWGWJ7.mjs.map +0 -7
  262. package/dist/lib/browser/intent-resolver-QV5AAVJZ.mjs.map +0 -7
  263. package/dist/lib/browser/react-surface-JJPYWEIN.mjs +0 -90
  264. package/dist/lib/browser/react-surface-JJPYWEIN.mjs.map +0 -7
  265. package/dist/lib/node/AssistantDialog-RJJHZI63.cjs +0 -141
  266. package/dist/lib/node/AssistantDialog-RJJHZI63.cjs.map +0 -7
  267. package/dist/lib/node/ai-client-OUPSRQT7.cjs.map +0 -7
  268. package/dist/lib/node/app-graph-builder-LEO63CZZ.cjs.map +0 -7
  269. package/dist/lib/node/chunk-GBUNQ257.cjs.map +0 -7
  270. package/dist/lib/node/chunk-GQ3XS5FZ.cjs +0 -169
  271. package/dist/lib/node/chunk-GQ3XS5FZ.cjs.map +0 -7
  272. package/dist/lib/node/chunk-OOHFSPWR.cjs.map +0 -7
  273. package/dist/lib/node/chunk-VG2UQY4S.cjs +0 -216
  274. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +0 -7
  275. package/dist/lib/node/intent-resolver-QDGZMWLY.cjs.map +0 -7
  276. package/dist/lib/node/react-surface-XNEIJJYJ.cjs +0 -106
  277. package/dist/lib/node/react-surface-XNEIJJYJ.cjs.map +0 -7
  278. package/dist/lib/node-esm/AssistantDialog-D33WZUGR.mjs +0 -118
  279. package/dist/lib/node-esm/AssistantDialog-D33WZUGR.mjs.map +0 -7
  280. package/dist/lib/node-esm/ChatContainer-FAYGNMQW.mjs +0 -34
  281. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs +0 -23
  282. package/dist/lib/node-esm/ai-client-RZQWEDUX.mjs.map +0 -7
  283. package/dist/lib/node-esm/app-graph-builder-WXJNZDYB.mjs.map +0 -7
  284. package/dist/lib/node-esm/chunk-6JK5HEUQ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-74GFINWJ.mjs +0 -144
  286. package/dist/lib/node-esm/chunk-74GFINWJ.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-ED55ZE4G.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +0 -193
  289. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +0 -7
  290. package/dist/lib/node-esm/intent-resolver-Q3I6S6HN.mjs.map +0 -7
  291. package/dist/lib/node-esm/react-surface-RI3JONQY.mjs +0 -91
  292. package/dist/lib/node-esm/react-surface-RI3JONQY.mjs.map +0 -7
  293. /package/dist/lib/browser/{settings-OZX7J65A.mjs.map → settings-SHNQ4XXP.mjs.map} +0 -0
  294. /package/dist/lib/node/{settings-WLTC7XO5.cjs.map → settings-ERKLO6IO.cjs.map} +0 -0
  295. /package/dist/lib/node-esm/{settings-CLE57WEP.mjs.map → settings-IVQRZUCU.mjs.map} +0 -0
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type ExecutableTool } from '@dxos/ai';
6
+ import { EXA_API_KEY } from '@dxos/ai/testing';
7
+ import { type BlueprintParser, createExaTool, createGraphWriterTool, createLocalSearchTool } from '@dxos/assistant';
8
+ import { type Space } from '@dxos/client/echo';
9
+ import { type DXN } from '@dxos/keys';
10
+ import { DataTypes } from '@dxos/schema';
11
+ import { isNonNullable } from '@dxos/util';
12
+
13
+ // TODO(dmaretskyi): make db available through services (same as function executor).
14
+ // TODO(burdon): Can tools implement "aspects" so that variants can be used rather than an explicit reference?
15
+ export const createTools = (space: Space, queueDxn?: DXN): ExecutableTool[] => {
16
+ return [
17
+ createExaTool({ apiKey: EXA_API_KEY }),
18
+ createLocalSearchTool(space.db),
19
+ queueDxn &&
20
+ createGraphWriterTool({
21
+ db: space.db,
22
+ schemaTypes: DataTypes,
23
+ onDone: async (objects) => {
24
+ const queue = space.queues.get(queueDxn);
25
+ queue.append(objects);
26
+ },
27
+ }),
28
+ ].filter(isNonNullable);
29
+ };
30
+
31
+ export const RESEARCH_BLUEPRINT: BlueprintParser.DSL = {
32
+ steps: [
33
+ {
34
+ instructions: 'Research information and entities related to the selected objects.',
35
+ tools: ['search/web_search'],
36
+ },
37
+ {
38
+ instructions:
39
+ 'Based on your research find matching entires that are already in the graph. Do exaustive research.',
40
+ tools: ['search/local_search'],
41
+ },
42
+ {
43
+ instructions: 'Add researched data to the graph. Make connections to existing objects.',
44
+ tools: ['search/local_search', 'graph/writer'],
45
+ },
46
+ ],
47
+ };
@@ -2,5 +2,6 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ export * from './blueprint';
5
6
  export * from './test-functions';
6
7
  export * from './test-services';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/ai';
5
6
  import { createSystemPrompt } from '@dxos/artifact';
6
- import { DEFAULT_EDGE_MODEL, type GenerateRequest } from '@dxos/assistant';
7
7
 
8
8
  export const createProcessorOptions = (artifacts: string[]): Pick<GenerateRequest, 'model' | 'systemPrompt'> => ({
9
9
  model: DEFAULT_EDGE_MODEL,
@@ -2,31 +2,31 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineTool, ToolResult } from '@dxos/artifact';
6
- import type { Tool } from '@dxos/artifact';
5
+ import { createTool, type ExecutableTool, ToolResult } from '@dxos/ai';
7
6
  import { toEffectSchema } from '@dxos/echo-schema';
8
7
  import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
9
- import type { FunctionType } from '@dxos/functions';
8
+ import { type FunctionType } from '@dxos/functions';
10
9
  import { log } from '@dxos/log';
11
- import type { SpaceId } from '@dxos/react-client/echo';
10
+ import { type SpaceId } from '@dxos/react-client/echo';
12
11
  import { getMeta } from '@dxos/react-client/echo';
13
12
 
13
+ // TODO(burdon): Move to @dxos/ai.
14
14
  export const convertFunctionToTool = (
15
15
  fn: FunctionType,
16
16
  edgeUrl: string,
17
17
  spaceId?: SpaceId | undefined,
18
- ): Tool | undefined => {
18
+ ): ExecutableTool | undefined => {
19
19
  if (!fn.description || !fn.inputSchema) {
20
20
  return undefined;
21
21
  }
22
-
23
22
  const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));
24
23
  if (!existingFunctionUrl) {
25
24
  return undefined;
26
25
  }
26
+
27
27
  const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });
28
28
 
29
- return defineTool('user-function', {
29
+ return createTool('user-function', {
30
30
  name: fn.name,
31
31
  description: fn.description,
32
32
  schema: toEffectSchema(fn.inputSchema),
@@ -39,6 +39,7 @@ export const convertFunctionToTool = (
39
39
  },
40
40
  body: JSON.stringify(input),
41
41
  });
42
+
42
43
  return ToolResult.Success(await response.text());
43
44
  },
44
45
  });
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { describe, expect, test } from 'vitest';
6
6
 
7
- import { AIServiceEdgeClient } from '@dxos/assistant';
8
- import { AI_SERVICE_ENDPOINT } from '@dxos/assistant/testing';
7
+ import { AIServiceEdgeClient } from '@dxos/ai';
8
+ import { AI_SERVICE_ENDPOINT } from '@dxos/ai/testing';
9
9
  import { log } from '@dxos/log';
10
10
 
11
11
  import { createToolsFromApi, resolveAuthorization } from './openapi';
@@ -43,12 +43,14 @@ describe.skip('openapi', () => {
43
43
  describe.skip('invoke tools', () => {
44
44
  test('amadeus hotel name autocomplete', async () => {
45
45
  const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
46
-
47
- const result = await tools[0].execute!({
48
- keyword: 'William Vale Brooklyn',
49
- subType: ['HOTEL_LEISURE', 'HOTEL_GDS'],
50
- countryCode: 'US',
51
- });
46
+ const result = await tools[0].execute(
47
+ {
48
+ keyword: 'William Vale Brooklyn',
49
+ subType: ['HOTEL_LEISURE', 'HOTEL_GDS'],
50
+ countryCode: 'US',
51
+ },
52
+ {},
53
+ );
52
54
 
53
55
  log.info('result', { result });
54
56
  });
@@ -56,11 +58,13 @@ describe.skip('openapi', () => {
56
58
  test('weather API', async () => {
57
59
  const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
58
60
  const forecastTool = tools.find((t) => t.name.includes('forecast'));
59
-
60
- const result = await forecastTool?.execute!({
61
- locations: 'Brooklyn, NY',
62
- aggregateHours: '24',
63
- });
61
+ const result = await forecastTool?.execute(
62
+ {
63
+ locations: 'Brooklyn, NY',
64
+ aggregateHours: '24',
65
+ },
66
+ {},
67
+ );
64
68
 
65
69
  log.info('result', { result });
66
70
  });
@@ -68,10 +72,7 @@ describe.skip('openapi', () => {
68
72
 
69
73
  describe.skip('AI uses tools', () => {
70
74
  test('amadeus flight availabilities', { timeout: 60_000 }, async () => {
71
- const tools = await createToolsFromApi(FLIGHT_SEARCH_API, {
72
- authorization: AMADEUS_AUTH,
73
- });
74
-
75
+ const tools = await createToolsFromApi(FLIGHT_SEARCH_API, { authorization: AMADEUS_AUTH });
75
76
  const client = new AIServiceEdgeClient({
76
77
  endpoint: AI_SERVICE_ENDPOINT.LOCAL,
77
78
  });
@@ -86,7 +87,6 @@ describe.skip('openapi', () => {
86
87
  // TODO(dmaretskyi): Doesn't work.
87
88
  test('amadeus hotel name autocomplete', { timeout: 60_000 }, async () => {
88
89
  const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
89
-
90
90
  const client = new AIServiceEdgeClient({
91
91
  endpoint: AI_SERVICE_ENDPOINT.LOCAL,
92
92
  });
@@ -101,7 +101,6 @@ describe.skip('openapi', () => {
101
101
  authorization: VISUAL_CROSSING_CREDENTIALS,
102
102
  instructions: WEATHER_INSTRUCTIONS,
103
103
  });
104
-
105
104
  const client = new AIServiceEdgeClient({
106
105
  endpoint: AI_SERVICE_ENDPOINT.LOCAL,
107
106
  });
@@ -6,7 +6,7 @@ import { Schema } from 'effect';
6
6
  import jsonpointer from 'jsonpointer';
7
7
  import { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';
8
8
 
9
- import { ToolResult, type Tool } from '@dxos/artifact';
9
+ import { type ExecutableTool, ToolResult, createRawTool } from '@dxos/ai';
10
10
  import { JsonSchemaType, normalizeSchema, toEffectSchema } from '@dxos/echo-schema';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { log } from '@dxos/log';
@@ -19,7 +19,7 @@ export type CreateToolsFromApiOptions = {
19
19
  instructions?: string;
20
20
  };
21
21
 
22
- export const createToolsFromService = async (service: ServiceType): Promise<Tool[]> => {
22
+ export const createToolsFromService = async (service: ServiceType): Promise<ExecutableTool[]> => {
23
23
  invariant(service.interfaces?.length === 1 && service.interfaces[0].kind === 'api');
24
24
  const iface = service.interfaces[0];
25
25
  invariant(iface.schemaUrl);
@@ -27,18 +27,20 @@ export const createToolsFromService = async (service: ServiceType): Promise<Tool
27
27
  return createToolsFromApi(iface.schemaUrl, { authorization: iface.authorization });
28
28
  };
29
29
 
30
- export const createToolsFromApi = async (url: string, options?: CreateToolsFromApiOptions): Promise<Tool[]> => {
30
+ export const createToolsFromApi = async (
31
+ url: string,
32
+ options?: CreateToolsFromApiOptions,
33
+ ): Promise<ExecutableTool[]> => {
31
34
  const res = await fetch(url);
32
35
  const spec = (await res.json()) as OpenAPIV2.Document;
33
36
  log('spec', { spec });
34
37
 
35
- const tools: Tool[] = [];
38
+ const tools: ExecutableTool[] = [];
36
39
  for (const [path, pathItem] of Object.entries(spec.paths)) {
37
40
  if (typeof pathItem !== 'object') {
38
41
  continue;
39
42
  }
40
43
 
41
- // TODO(burdon): ???
42
44
  const { ...methods } = pathItem;
43
45
  for (const [method, m] of Object.entries(methods)) {
44
46
  const methodItem: OpenAPIV2.OperationObject = m as OpenAPIV2.OperationObject;
@@ -50,6 +52,7 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
50
52
  return resolved;
51
53
  }) ?? [];
52
54
 
55
+ // TODO(burdon): Reconcile with toFunctionParameterSchema.
53
56
  const inputSchema: JsonSchemaType = {
54
57
  type: 'object',
55
58
  properties: {},
@@ -99,15 +102,18 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
99
102
  authorization: options?.authorization,
100
103
  };
101
104
 
102
- tools.push({
103
- name: getToolName(path, method, methodItem),
104
- description: options?.instructions ? `${options.instructions}\n\n${description}` : description,
105
- parameters: inputSchema,
106
- execute: async (input) => {
107
- const response = await callApiEndpoint(endpoint, input);
108
- return ToolResult.Success(response);
109
- },
110
- });
105
+ tools.push(
106
+ // TODO(burdon): Namespace?
107
+ createRawTool('openapi', {
108
+ name: getToolName(path, method, methodItem),
109
+ description: options?.instructions ? `${options.instructions}\n\n${description}` : description,
110
+ parameters: inputSchema,
111
+ execute: async (input) => {
112
+ const response = await callApiEndpoint(endpoint, input);
113
+ return ToolResult.Success(response);
114
+ },
115
+ }),
116
+ );
111
117
  }
112
118
  }
113
119
 
@@ -2,13 +2,15 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { getSchemaTypename } from '@dxos/echo-schema';
6
+
5
7
  import { ASSISTANT_PLUGIN } from './meta';
6
8
  import { AIChatType, TemplateType } from './types';
7
9
 
8
10
  export default [
9
11
  {
10
12
  'en-US': {
11
- [AIChatType.typename]: {
13
+ [getSchemaTypename(AIChatType)!]: {
12
14
  'typename label': 'Assistant',
13
15
  'object name placeholder': 'AI Chat',
14
16
  },
@@ -18,7 +20,6 @@ export default [
18
20
  },
19
21
  [ASSISTANT_PLUGIN]: {
20
22
  'templates label': 'Templates',
21
-
22
23
  'open ambient chat label': 'Open Assistant',
23
24
  'assistant chat label': 'Assistant',
24
25
  'plugin name': 'Assistant',
@@ -38,6 +39,7 @@ export default [
38
39
  'assistant dialog title': 'Assistant',
39
40
  'open assistant label': 'Open assistant',
40
41
 
42
+ 'search input placeholder': 'Search...',
41
43
  'chat input placeholder': 'Ask a question...',
42
44
  'chat stop': 'Cancel request.',
43
45
 
package/src/types/chat.ts CHANGED
@@ -2,9 +2,32 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Expando, Ref, TypedObject } from '@dxos/echo-schema';
5
+ import { Schema } from 'effect';
6
6
 
7
- export class AIChatType extends TypedObject({ typename: 'dxos.org/type/AIChat', version: '0.1.0' })({
7
+ import { Type } from '@dxos/echo';
8
+ import { Expando, Ref } from '@dxos/echo-schema';
9
+
10
+ export const AIChatType = Schema.Struct({
11
+ id: Type.ObjectId,
12
+ name: Schema.optional(Schema.String),
8
13
  // TODO(wittjosiah): Should be a ref to a Queue.
9
- assistantChatQueue: Ref(Expando),
10
- }) {}
14
+ queue: Ref(Expando),
15
+ }).pipe(
16
+ Type.Obj({
17
+ typename: 'dxos.org/type/AIChat',
18
+ version: '0.2.0',
19
+ }),
20
+ );
21
+ export interface AIChatType extends Schema.Schema.Type<typeof AIChatType> {}
22
+
23
+ export const CompanionTo = Schema.Struct({
24
+ id: Type.ObjectId,
25
+ }).pipe(
26
+ Type.Relation({
27
+ typename: 'dxos.org/relation/CompanionTo',
28
+ version: '0.1.0',
29
+ source: AIChatType,
30
+ target: Expando,
31
+ }),
32
+ );
33
+ export interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}
@@ -4,6 +4,8 @@
4
4
 
5
5
  import { Schema } from 'effect';
6
6
 
7
+ import { SpaceSchema } from '@dxos/react-client/echo';
8
+
7
9
  import { AIChatType } from './chat';
8
10
  import { TemplateType } from './template';
9
11
  import { ASSISTANT_PLUGIN } from '../meta';
@@ -13,7 +15,7 @@ export namespace AssistantAction {
13
15
 
14
16
  export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {
15
17
  input: Schema.Struct({
16
- spaceId: Schema.optional(Schema.String),
18
+ space: SpaceSchema,
17
19
  name: Schema.optional(Schema.String),
18
20
  }),
19
21
  output: Schema.Struct({
@@ -1,117 +0,0 @@
1
- import {
2
- ThreadContainer
3
- } from "./chunk-OWZHLWW5.mjs";
4
- import "./chunk-TXJWGWJ7.mjs";
5
- import "./chunk-5P7U35RJ.mjs";
6
- import {
7
- ASSISTANT_PLUGIN
8
- } from "./chunk-3HCI5FIL.mjs";
9
-
10
- // packages/plugins/plugin-assistant/src/components/AssistantDialog.tsx
11
- import React2, { useState as useState2 } from "react";
12
- import { useCapability, Capabilities, useCapabilities } from "@dxos/app-framework";
13
- import { TranscriptionCapabilities } from "@dxos/plugin-transcription";
14
- import { useTranslation } from "@dxos/react-ui";
15
-
16
- // packages/plugins/plugin-assistant/src/components/AmbientDialog/AmbientDialog.tsx
17
- import React, { useCallback, useEffect, useState } from "react";
18
- import { Dialog, Icon, IconButton } from "@dxos/react-ui";
19
- import { resizeAttributes, ResizeHandle, sizeStyle } from "@dxos/react-ui-dnd";
20
- import { mx } from "@dxos/react-ui-theme";
21
- var preventDefault = (event) => event.preventDefault();
22
- var minSize = 5;
23
- var AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }) => {
24
- const [resizeKey, setReizeKey] = useState(0);
25
- const [size, setSize] = useState("min-content");
26
- const [open, setOpen] = useState(controlledOpen);
27
- useEffect(() => {
28
- setOpen(controlledOpen);
29
- }, [
30
- controlledOpen
31
- ]);
32
- useEffect(() => {
33
- setSize(open ? "min-content" : minSize);
34
- setReizeKey((key) => key + 1);
35
- }, [
36
- open
37
- ]);
38
- const handleToggle = useCallback(() => {
39
- setOpen((open2) => {
40
- onOpenChange?.(!open2);
41
- return !open2;
42
- });
43
- }, []);
44
- return /* @__PURE__ */ React.createElement("div", {
45
- role: "none",
46
- className: "dx-dialog__overlay bg-transparent pointer-events-none",
47
- "data-block-align": "end"
48
- }, /* @__PURE__ */ React.createElement(Dialog.Content, {
49
- classNames: 'relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing="true"])]:duration-200',
50
- inOverlayLayout: true,
51
- ...resizeAttributes,
52
- style: {
53
- ...sizeStyle(size, "vertical", true),
54
- maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)"
55
- },
56
- onInteractOutside: preventDefault
57
- }, /* @__PURE__ */ React.createElement(ResizeHandle, {
58
- key: resizeKey,
59
- side: "block-start",
60
- defaultSize: "min-content",
61
- minSize,
62
- fallbackSize: minSize,
63
- iconPosition: "center",
64
- onSizeChange: setSize
65
- }), /* @__PURE__ */ React.createElement(DialogHeader, {
66
- open,
67
- title,
68
- onToggle: handleToggle
69
- }), children));
70
- };
71
- var DialogHeader = ({ open, title, onToggle }) => {
72
- return /* @__PURE__ */ React.createElement("div", {
73
- className: "flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden"
74
- }, /* @__PURE__ */ React.createElement("div", {
75
- className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
76
- }, /* @__PURE__ */ React.createElement(Dialog.Close, null, /* @__PURE__ */ React.createElement(Icon, {
77
- icon: "ph--x--regular"
78
- }))), /* @__PURE__ */ React.createElement("div", {
79
- className: "grow"
80
- }, /* @__PURE__ */ React.createElement(Dialog.Title, {
81
- classNames: "flex justify-center text-xs text-subdued"
82
- }, title)), /* @__PURE__ */ React.createElement("div", {
83
- className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
84
- }, /* @__PURE__ */ React.createElement(IconButton, {
85
- variant: "ghost",
86
- icon: "ph--caret-up--regular",
87
- classNames: mx("[&>svg]:transition [&>svg]:duration-200", open && "[&>svg]:rotate-180"),
88
- iconOnly: true,
89
- label: "Shrink",
90
- onClick: onToggle
91
- })));
92
- };
93
-
94
- // packages/plugins/plugin-assistant/src/components/AssistantDialog.tsx
95
- var AssistantDialog = ({ chat }) => {
96
- const { t } = useTranslation(ASSISTANT_PLUGIN);
97
- const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;
98
- const settings = useCapability(Capabilities.SettingsStore).getStore(ASSISTANT_PLUGIN)?.value;
99
- const [open, setOpen] = useState2(false);
100
- return /* @__PURE__ */ React2.createElement(AmbientDialog, {
101
- open,
102
- onOpenChange: setOpen,
103
- title: t("assistant dialog title")
104
- }, /* @__PURE__ */ React2.createElement(ThreadContainer, {
105
- chat,
106
- onOpenChange: setOpen,
107
- settings,
108
- part: "dialog",
109
- transcription
110
- }));
111
- };
112
- var AssistantDialog_default = AssistantDialog;
113
- export {
114
- AssistantDialog,
115
- AssistantDialog_default as default
116
- };
117
- //# sourceMappingURL=AssistantDialog-DTWVEQBB.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/AssistantDialog.tsx", "../../../src/components/AmbientDialog/AmbientDialog.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useCapability, Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { AmbientDialog } from './AmbientDialog';\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\nexport const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(false);\n\n return (\n <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>\n <ThreadContainer\n chat={chat}\n onOpenChange={setOpen}\n settings={settings}\n part={'dialog'}\n transcription={transcription}\n />\n </AmbientDialog>\n );\n};\n\nexport default AssistantDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback, useEffect, useState } from 'react';\n\nimport { Dialog, Icon, IconButton } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nconst minSize = 5;\n\nexport type AmbientDialogProps = PropsWithChildren<{\n open?: boolean;\n title?: string;\n onOpenChange?: (open: boolean) => void;\n}>;\n\nexport const AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }: AmbientDialogProps) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(controlledOpen);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(controlledOpen);\n }, [controlledOpen]);\n\n // Update size and key.\n useEffect(() => {\n setSize(open ? 'min-content' : minSize);\n setReizeKey((key) => key + 1);\n }, [open]);\n\n // TODO(burdon): Animate open/close.\n // NOTE: We set the min size to 5rem (80px), and the header and prompt bar to 40px (i.e., the rail-size) each.\n // The dialog has no vertical padding and has box-content so that when closed it collapses to the size of the header and prompt bar.\n const handleToggle = useCallback(() => {\n setOpen((open) => {\n onOpenChange?.(!open);\n return !open;\n });\n }, []);\n\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing=\"true\"])]:duration-200'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical', true),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)',\n }}\n onInteractOutside={preventDefault}\n >\n <ResizeHandle\n key={resizeKey}\n side='block-start'\n defaultSize='min-content'\n minSize={minSize}\n fallbackSize={minSize}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <DialogHeader open={open} title={title} onToggle={handleToggle} />\n\n {children}\n </Dialog.Content>\n </div>\n );\n};\n\n/**\n * Matches same layout grid as PromptBar.\n */\nconst DialogHeader = ({ open, title, onToggle }: { open?: boolean; title?: string; onToggle: () => void }) => {\n return (\n <div className='flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden'>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <Dialog.Close>\n <Icon icon='ph--x--regular' />\n </Dialog.Close>\n </div>\n <div className='grow'>\n <Dialog.Title classNames='flex justify-center text-xs text-subdued'>{title}</Dialog.Title>\n </div>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <IconButton\n variant='ghost'\n icon={'ph--caret-up--regular'}\n classNames={mx('[&>svg]:transition [&>svg]:duration-200', open && '[&>svg]:rotate-180')}\n iconOnly\n label='Shrink'\n onClick={onToggle}\n />\n </div>\n </div>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useState", "useCapability", "Capabilities", "useCapabilities", "TranscriptionCapabilities", "useTranslation", "React", "useCallback", "useEffect", "useState", "Dialog", "Icon", "IconButton", "resizeAttributes", "ResizeHandle", "sizeStyle", "mx", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "controlledOpen", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "div", "role", "className", "data-block-align", "Dialog", "Content", "classNames", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "onInteractOutside", "ResizeHandle", "side", "defaultSize", "fallbackSize", "iconPosition", "onSizeChange", "DialogHeader", "onToggle", "Close", "Icon", "icon", "Title", "IconButton", "variant", "mx", "iconOnly", "label", "onClick", "AssistantDialog", "chat", "t", "useTranslation", "ASSISTANT_PLUGIN", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "open", "setOpen", "useState", "React", "AmbientDialog", "onOpenChange", "title", "ThreadContainer", "part"]
7
- }
@@ -1,33 +0,0 @@
1
- import {
2
- ThreadContainer
3
- } from "./chunk-OWZHLWW5.mjs";
4
- import "./chunk-TXJWGWJ7.mjs";
5
- import "./chunk-5P7U35RJ.mjs";
6
- import {
7
- ASSISTANT_PLUGIN
8
- } from "./chunk-3HCI5FIL.mjs";
9
-
10
- // packages/plugins/plugin-assistant/src/components/ChatContainer.tsx
11
- import React from "react";
12
- import { Capabilities, useCapabilities, useCapability } from "@dxos/app-framework";
13
- import { TranscriptionCapabilities } from "@dxos/plugin-transcription";
14
- import { StackItem } from "@dxos/react-ui-stack";
15
- var ChatContainer = ({ role, chat, associatedArtifact }) => {
16
- const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;
17
- const settings = useCapability(Capabilities.SettingsStore).getStore(ASSISTANT_PLUGIN)?.value;
18
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
19
- role,
20
- classNames: "container-max-width"
21
- }, /* @__PURE__ */ React.createElement(ThreadContainer, {
22
- chat,
23
- settings,
24
- transcription,
25
- associatedArtifact
26
- }));
27
- };
28
- var ChatContainer_default = ChatContainer;
29
- export {
30
- ChatContainer,
31
- ChatContainer_default as default
32
- };
33
- //# sourceMappingURL=ChatContainer-ZNKENYKZ.mjs.map
@@ -1,22 +0,0 @@
1
- import {
2
- TemplateEditor
3
- } from "./chunk-NFUHCW2J.mjs";
4
- import "./chunk-3HCI5FIL.mjs";
5
-
6
- // packages/plugins/plugin-assistant/src/components/TemplateContainer.tsx
7
- import React from "react";
8
- import { StackItem } from "@dxos/react-ui-stack";
9
- var TemplateContainer = ({ template, role }) => {
10
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
11
- role,
12
- classNames: "container-max-width"
13
- }, /* @__PURE__ */ React.createElement(TemplateEditor, {
14
- template
15
- }));
16
- };
17
- var TemplateContainer_default = TemplateContainer;
18
- export {
19
- TemplateContainer,
20
- TemplateContainer_default as default
21
- };
22
- //# sourceMappingURL=TemplateContainer-WKU5XFSO.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/ai-client.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantCapabilities } from './capabilities';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps } from '../types';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n\n const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n ai.value = new OllamaClient();\n } else {\n ai.value = new AIServiceEdgeClient({ endpoint });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,QAAQC,cAAc;AAE/B,SAASC,cAAcC,mBAAuC;AAC9D,SAA+BC,qBAAqBC,oBAAoB;AACxE,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,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,cAAce,aAAaC,aAAa,EACxCC,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
- "names": ["effect", "signal", "Capabilities", "contributes", "AIServiceEdgeClient", "OllamaClient", "ClientCapabilities", "DEFAULT_AI_SERVICE_URL", "context", "client", "getCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "signal", "AIServiceEdgeClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaClient", "contributes", "AssistantCapabilities", "AiClient"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID } from '@dxos/plugin-graph';\nimport { rxFromQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n fullyQualifiedId,\n getSpace,\n isLiveObject,\n isSpace,\n Query,\n type QueryResult,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const layout = context.getCapability(Capabilities.Layout);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.getNode(layout.active[0]).pipe(Option.getOrNull);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n // TODO(burdon): Add to all objects?\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename\n ? Option.some(node)\n : Option.none(),\n ),\n Option.map((node) => [\n {\n id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n\n const templates = get(rxFromQuery(query));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space,\n },\n },\n ]\n : [];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.id === `${ASSISTANT_PLUGIN}/templates` && isSpace(node.properties.space)\n ? Option.some(node.properties.space)\n : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n return get(rxFromQuery(query))\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['object placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.type(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
- "mappings": "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",
6
- "names": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "LayoutAction", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "ROOT_ID", "rxFromQuery", "SPACE_TYPE", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isLiveObject", "isSpace", "Query", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "getNode", "getOrNull", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "isLiveObject", "assistantChatQueue", "type", "AIChatType", "typename", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "query", "SPACE_TYPE", "isSpace", "db", "Query", "TemplateType", "templates", "rxFromQuery", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "template", "fullyQualifiedId", "objects", "Filter", "run", "AssistantAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
- }