@dxos/plugin-assistant 0.8.2-main.fbd8ed0 → 0.8.2-staging.4d6ad0f

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 +10 -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 +432 -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 +67 -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
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { effect, signal } from '@preact/signals-core';
6
6
 
7
+ import { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/ai';
7
8
  import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
8
- import { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';
9
9
  import { ClientCapabilities } from '@dxos/plugin-client';
10
10
 
11
11
  import { AssistantCapabilities } from './capabilities';
@@ -13,6 +13,7 @@ import {
13
13
  type PromiseIntentDispatcher,
14
14
  type PluginContext,
15
15
  } from '@dxos/app-framework';
16
+ import { isInstanceOf } from '@dxos/echo-schema';
16
17
  import { invariant } from '@dxos/invariant';
17
18
  import { ClientCapabilities } from '@dxos/plugin-client';
18
19
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
@@ -24,14 +25,14 @@ import {
24
25
  Filter,
25
26
  fullyQualifiedId,
26
27
  getSpace,
27
- isLiveObject,
28
28
  isSpace,
29
29
  Query,
30
30
  type QueryResult,
31
+ isEchoObject,
31
32
  } from '@dxos/react-client/echo';
32
33
 
33
34
  import { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';
34
- import { AIChatType, AssistantAction, TemplateType } from '../types';
35
+ import { AIChatType, AssistantAction, CompanionTo, TemplateType } from '../types';
35
36
 
36
37
  export default (context: PluginContext) =>
37
38
  contributes(Capabilities.AppGraphBuilder, [
@@ -104,31 +105,40 @@ export default (context: PluginContext) =>
104
105
 
105
106
  createExtension({
106
107
  id: `${ASSISTANT_PLUGIN}/object-chat-companion`,
107
- // TODO(burdon): Add to all objects?
108
- connector: (node) =>
109
- Rx.make((get) =>
108
+ connector: (node) => {
109
+ let query: QueryResult<AIChatType> | undefined;
110
+ return Rx.make((get) =>
110
111
  pipe(
111
112
  get(node),
112
- Option.flatMap((node) =>
113
- isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename
114
- ? Option.some(node)
115
- : Option.none(),
116
- ),
117
- Option.map((node) => [
118
- {
119
- id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),
120
- type: PLANK_COMPANION_TYPE,
121
- data: 'assistant-chat',
122
- properties: {
123
- label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],
124
- icon: 'ph--sparkle--regular',
125
- position: 'hoist',
113
+ Option.flatMap((node) => (isEchoObject(node.data) ? Option.some(node.data) : Option.none())),
114
+ Option.flatMap((object) => {
115
+ const space = getSpace(object);
116
+ return space ? Option.some({ space, object }) : Option.none();
117
+ }),
118
+ Option.map(({ space, object }) => {
119
+ if (!query) {
120
+ query = space.db.query(Query.select(Filter.ids(object.id)).targetOf(CompanionTo).source());
121
+ }
122
+
123
+ const chat = get(rxFromQuery(query))[0];
124
+ return [
125
+ {
126
+ id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),
127
+ type: PLANK_COMPANION_TYPE,
128
+ data: chat ?? 'assistant-chat',
129
+ properties: {
130
+ label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],
131
+ icon: 'ph--sparkle--regular',
132
+ position: 'hoist',
133
+ disposition: 'hidden',
134
+ },
126
135
  },
127
- },
128
- ]),
136
+ ];
137
+ }),
129
138
  Option.getOrElse(() => []),
130
139
  ),
131
- ),
140
+ );
141
+ },
132
142
  }),
133
143
 
134
144
  createExtension({
@@ -216,8 +226,8 @@ const getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space):
216
226
  return objects[objects.length - 1];
217
227
  }
218
228
 
219
- const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));
220
- invariant(data?.object instanceof AIChatType);
229
+ const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));
230
+ invariant(isInstanceOf(AIChatType, data?.object));
221
231
  await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));
222
232
  return data.object;
223
233
  };
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { type ReadonlySignal } from '@preact/signals-core';
6
6
 
7
+ import { type AIServiceClient } from '@dxos/ai';
7
8
  import { defineCapability } from '@dxos/app-framework';
8
- import { type AIServiceClient } from '@dxos/assistant';
9
9
 
10
10
  import { ASSISTANT_PLUGIN } from '../meta';
11
11
 
@@ -13,10 +13,11 @@ export default () => [
13
13
  Capabilities.IntentResolver,
14
14
  createResolver({
15
15
  intent: AssistantAction.CreateChat,
16
- resolve: ({ spaceId, name }) => ({
16
+ resolve: ({ space, name }) => ({
17
17
  data: {
18
18
  object: live(AIChatType, {
19
- assistantChatQueue: refFromDXN(createQueueDxn(spaceId)),
19
+ name,
20
+ queue: refFromDXN(createQueueDxn(space.id)),
20
21
  }),
21
22
  },
22
23
  }),
@@ -2,16 +2,26 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React, { useMemo } from 'react';
5
+ import { Effect } from 'effect';
6
+ import React, { useEffect, useMemo } from 'react';
6
7
 
7
- import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
- import { Type } from '@dxos/echo';
8
+ import { Capabilities, contributes, createIntent, createSurface, useIntentDispatcher } from '@dxos/app-framework';
9
+ import { Obj } from '@dxos/echo';
10
+ import { Filter, isInstanceOf, Query } from '@dxos/echo-schema';
9
11
  import { SettingsStore } from '@dxos/local-storage';
10
- import { fullyQualifiedId, getSpace, getTypename, isLiveObject, type SpaceId } from '@dxos/react-client/echo';
12
+ import { SpaceAction } from '@dxos/plugin-space/types';
13
+ import {
14
+ type AnyLiveObject,
15
+ fullyQualifiedId,
16
+ getSpace,
17
+ getTypename,
18
+ isEchoObject,
19
+ type SpaceId,
20
+ } from '@dxos/react-client/echo';
11
21
 
12
22
  import { AssistantDialog, AssistantSettings, ChatContainer, PromptSettings, TemplateContainer } from '../components';
13
23
  import { ASSISTANT_PLUGIN, ASSISTANT_DIALOG } from '../meta';
14
- import { AIChatType, type AssistantSettingsProps, TemplateType } from '../types';
24
+ import { AIChatType, AssistantAction, type AssistantSettingsProps, CompanionTo, TemplateType } from '../types';
15
25
 
16
26
  export default () =>
17
27
  contributes(Capabilities.ReactSurface, [
@@ -32,17 +42,16 @@ export default () =>
32
42
  id: `${ASSISTANT_PLUGIN}/chat`,
33
43
  role: 'article',
34
44
  filter: (data): data is { subject: AIChatType; variant: undefined } =>
35
- Type.instanceOf(AIChatType, data.subject) && data.variant !== 'assistant-chat',
45
+ Obj.instanceOf(AIChatType, data.subject) && data.variant !== 'assistant-chat',
36
46
  component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,
37
47
  }),
38
48
  createSurface({
39
49
  id: `${ASSISTANT_PLUGIN}/object-chat`,
40
50
  role: 'article',
41
- filter: (data): data is { companionTo: AIChatType; subject: 'assistant-chat' } =>
42
- isLiveObject(data.companionTo) &&
43
- (data as any).companionTo.assistantChatQueue &&
44
- data.subject === 'assistant-chat',
51
+ filter: (data): data is { companionTo: AnyLiveObject<any>; subject: AIChatType | 'assistant-chat' } =>
52
+ isEchoObject(data.companionTo) && (isInstanceOf(AIChatType, data.subject) || data.subject === 'assistant-chat'),
45
53
  component: ({ data, role }) => {
54
+ const { dispatch } = useIntentDispatcher();
46
55
  const associatedArtifact = useMemo(
47
56
  () => ({
48
57
  id: fullyQualifiedId(data.companionTo),
@@ -51,19 +60,55 @@ export default () =>
51
60
  }),
52
61
  [data.companionTo],
53
62
  );
54
- return <ChatContainer role={role} chat={data.companionTo} associatedArtifact={associatedArtifact} />;
63
+
64
+ // TODO(wittjosiah): Factor out to container.
65
+ useEffect(() => {
66
+ const timeout = setTimeout(async () => {
67
+ const space = getSpace(data.companionTo);
68
+ if (space && data.subject === 'assistant-chat') {
69
+ const result = await space.db
70
+ .query(Query.select(Filter.ids(data.companionTo.id)).targetOf(CompanionTo).source())
71
+ .run();
72
+ if (result.objects.length > 0) {
73
+ return;
74
+ }
75
+
76
+ const program = Effect.gen(function* () {
77
+ const { object } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));
78
+ yield* dispatch(createIntent(SpaceAction.AddObject, { object, target: space, hidden: true }));
79
+ yield* dispatch(
80
+ createIntent(SpaceAction.AddRelation, {
81
+ space,
82
+ schema: CompanionTo,
83
+ source: object,
84
+ target: data.companionTo,
85
+ }),
86
+ );
87
+ });
88
+ void Effect.runPromise(program);
89
+ }
90
+ });
91
+
92
+ return () => clearTimeout(timeout);
93
+ }, [data.subject]);
94
+
95
+ if (data.subject === 'assistant-chat') {
96
+ return null;
97
+ }
98
+
99
+ return <ChatContainer role={role} chat={data.subject} associatedArtifact={associatedArtifact} />;
55
100
  },
56
101
  }),
57
102
  createSurface({
58
103
  id: `${ASSISTANT_PLUGIN}/template`,
59
104
  role: 'article',
60
- filter: (data): data is { subject: TemplateType } => Type.instanceOf(TemplateType, data.subject),
105
+ filter: (data): data is { subject: TemplateType } => Obj.instanceOf(TemplateType, data.subject),
61
106
  component: ({ data, role }) => <TemplateContainer role={role} template={data.subject} />,
62
107
  }),
63
108
  createSurface({
64
109
  id: `${ASSISTANT_PLUGIN}/prompt-settings`,
65
110
  role: 'object-settings',
66
- filter: (data): data is { subject: TemplateType } => Type.instanceOf(TemplateType, data.subject),
111
+ filter: (data): data is { subject: TemplateType } => Obj.instanceOf(TemplateType, data.subject),
67
112
  component: ({ data }) => <PromptSettings template={data.subject} />,
68
113
  }),
69
114
  ]);
@@ -19,7 +19,7 @@ import { AmbientDialog } from './AmbientDialog';
19
19
  import translations from '../../translations';
20
20
 
21
21
  const meta: Meta<typeof AmbientDialog> = {
22
- title: 'plugins/plugin-automation/AmbientDialog',
22
+ title: 'plugins/plugin-assistant/AmbientDialog',
23
23
  component: AmbientDialog,
24
24
  render: () => {
25
25
  const [open, setOpen] = useState(true);
@@ -15,10 +15,19 @@ const minSize = 5;
15
15
  export type AmbientDialogProps = PropsWithChildren<{
16
16
  open?: boolean;
17
17
  title?: string;
18
+ resizeable?: boolean;
18
19
  onOpenChange?: (open: boolean) => void;
20
+ onEscape?: () => void;
19
21
  }>;
20
22
 
21
- export const AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }: AmbientDialogProps) => {
23
+ export const AmbientDialog = ({
24
+ children,
25
+ open: controlledOpen,
26
+ title,
27
+ resizeable = true,
28
+ onOpenChange,
29
+ onEscape,
30
+ }: AmbientDialogProps) => {
22
31
  const [resizeKey, setReizeKey] = useState(0);
23
32
  const [size, setSize] = useState<Size>('min-content');
24
33
  const [open, setOpen] = useState(controlledOpen);
@@ -47,26 +56,31 @@ export const AmbientDialog = ({ children, open: controlledOpen, title, onOpenCha
47
56
  return (
48
57
  <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>
49
58
  <Dialog.Content
50
- 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'
59
+ classNames='relative box-content p-0 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'
51
60
  inOverlayLayout
52
61
  {...resizeAttributes}
53
62
  style={{
54
- ...sizeStyle(size, 'vertical', true),
63
+ ...(resizeable ? sizeStyle(size, 'vertical', true) : {}),
55
64
  maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)',
56
65
  }}
66
+ onEscapeKeyDown={onEscape}
57
67
  onInteractOutside={preventDefault}
58
68
  >
59
- <ResizeHandle
60
- key={resizeKey}
61
- side='block-start'
62
- defaultSize='min-content'
63
- minSize={minSize}
64
- fallbackSize={minSize}
65
- iconPosition='center'
66
- onSizeChange={setSize}
67
- />
69
+ {(resizeable && (
70
+ <>
71
+ <ResizeHandle
72
+ key={resizeKey}
73
+ side='block-start'
74
+ defaultSize='min-content'
75
+ minSize={minSize}
76
+ fallbackSize={minSize}
77
+ iconPosition='center'
78
+ onSizeChange={setSize}
79
+ />
68
80
 
69
- <DialogHeader open={open} title={title} onToggle={handleToggle} />
81
+ <DialogHeader open={open} title={title} onToggle={handleToggle} />
82
+ </>
83
+ )) || <Dialog.Title srOnly />}
70
84
 
71
85
  {children}
72
86
  </Dialog.Content>
@@ -24,10 +24,10 @@ export const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {
24
24
  return (
25
25
  <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>
26
26
  <ThreadContainer
27
+ part={'dialog'}
27
28
  chat={chat}
28
29
  onOpenChange={setOpen}
29
30
  settings={settings}
30
- part={'dialog'}
31
31
  transcription={transcription}
32
32
  />
33
33
  </AmbientDialog>
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/assistant';
7
+ import { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/ai';
8
8
  import { Input, Select, useTranslation } from '@dxos/react-ui';
9
9
  import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
10
10
 
@@ -0,0 +1,32 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import '@dxos-theme';
6
+
7
+ import { type StoryObj, type Meta } from '@storybook/react';
8
+
9
+ import { withLayout, withTheme } from '@dxos/storybook-utils';
10
+
11
+ import { BlueprintEditor } from './BlueprintEditor';
12
+ import { RESEARCH_BLUEPRINT } from '../../testing';
13
+ import translations from '../../translations';
14
+
15
+ const meta: Meta<typeof BlueprintEditor> = {
16
+ title: 'plugins/plugin-assistant/BlueprintEditor',
17
+ component: BlueprintEditor,
18
+ decorators: [withTheme, withLayout({ fullscreen: true, classNames: 'mli-auto max-is-[50rem] justify-center' })],
19
+ parameters: {
20
+ translations,
21
+ },
22
+ };
23
+
24
+ export default meta;
25
+
26
+ type Story = StoryObj<typeof BlueprintEditor>;
27
+
28
+ export const Default: Story = {
29
+ args: {
30
+ blueprint: RESEARCH_BLUEPRINT,
31
+ },
32
+ };
@@ -0,0 +1,41 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { Blueprint, type BlueprintParser } from '@dxos/assistant';
8
+ import { toJsonSchema } from '@dxos/echo-schema';
9
+ import { useThemeContext, type ThemedClassName } from '@dxos/react-ui';
10
+ import {
11
+ createBasicExtensions,
12
+ createJsonExtensions,
13
+ createThemeExtensions,
14
+ editorMonospace,
15
+ useTextEditor,
16
+ } from '@dxos/react-ui-editor';
17
+ import { mx } from '@dxos/react-ui-theme';
18
+
19
+ export type BlueprintEditorProps = ThemedClassName<{
20
+ blueprint: BlueprintParser.DSL;
21
+ }>;
22
+
23
+ // TODO(burdon): Factor out JsonEditor.
24
+ // TODO(burdon): Make editable.
25
+ export const BlueprintEditor = ({ classNames, blueprint }: BlueprintEditorProps) => {
26
+ const { themeMode } = useThemeContext();
27
+ const { parentRef } = useTextEditor({
28
+ initialValue: JSON.stringify(blueprint, null, 2),
29
+ extensions: [
30
+ createBasicExtensions({ lineWrapping: false }),
31
+ createThemeExtensions({ themeMode, syntaxHighlighting: true }),
32
+ // TODO(burdon): ERROR: reference "/schemas/any" resolves to more than one schema
33
+ createJsonExtensions({ schema: toJsonSchema(Blueprint) }),
34
+ editorMonospace,
35
+ ],
36
+ });
37
+
38
+ return (
39
+ <div ref={parentRef} className={mx('flex w-full pli-2 overflow-x-scroll border-x border-separator', classNames)} />
40
+ );
41
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './BlueprintEditor';
@@ -7,17 +7,65 @@ import '@dxos-theme';
7
7
  import { type StoryObj, type Meta } from '@storybook/react';
8
8
  import React, { useEffect, useState } from 'react';
9
9
 
10
+ import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
11
+ import { withPluginManager } from '@dxos/app-framework/testing';
12
+ import { log } from '@dxos/log';
13
+ import { TranscriptionPlugin } from '@dxos/plugin-transcription';
10
14
  import { withTheme, withLayout } from '@dxos/storybook-utils';
11
15
 
12
16
  import { Prompt } from './Prompt';
13
- import { PromptBar } from './PromptBar';
17
+ import { PromptBar, type PromptBarProps } from './PromptBar';
14
18
  import type { ReferenceData } from './references';
15
19
  import translations from '../../translations';
16
20
 
21
+ const references: ReferenceData[] = [
22
+ {
23
+ uri: 'dxn:echo:@:AAAAAAAA',
24
+ label: 'Meeting Notes',
25
+ },
26
+ {
27
+ uri: 'dxn:echo:@:BBBBBBBB',
28
+ label: 'Project Plan',
29
+ },
30
+ {
31
+ uri: 'dxn:echo:@:CCCCCCCC',
32
+ label: 'Meeting Plan',
33
+ },
34
+ ];
35
+
36
+ const DefaultStory = (props: PromptBarProps) => {
37
+ const [processing, setProcessing] = useState(false);
38
+ useEffect(() => {
39
+ let t: NodeJS.Timeout;
40
+ if (processing) {
41
+ t = setTimeout(() => setProcessing(false), 10_000);
42
+ }
43
+ return () => clearTimeout(t);
44
+ }, [processing]);
45
+
46
+ return (
47
+ <PromptBar
48
+ classNames='w-[25rem] p-1 overflow-hidden border border-gray-200 rounded'
49
+ microphone
50
+ processing={processing}
51
+ onSubmit={() => setProcessing(true)}
52
+ onCancel={() => setProcessing(false)}
53
+ {...props}
54
+ />
55
+ );
56
+ };
57
+
17
58
  const meta: Meta<typeof Prompt> = {
18
- title: 'plugins/plugin-automation/Prompt',
59
+ title: 'plugins/plugin-assistant/Prompt',
19
60
  component: Prompt,
20
- decorators: [withTheme, withLayout()],
61
+ render: DefaultStory,
62
+ decorators: [
63
+ withPluginManager({
64
+ plugins: [IntentPlugin(), SettingsPlugin(), TranscriptionPlugin()],
65
+ }),
66
+ withTheme,
67
+ withLayout(),
68
+ ],
21
69
  parameters: {
22
70
  layout: 'centered',
23
71
  translations,
@@ -26,14 +74,14 @@ const meta: Meta<typeof Prompt> = {
26
74
 
27
75
  export default meta;
28
76
 
29
- type Story = StoryObj<typeof Prompt>;
77
+ type Story = StoryObj<typeof DefaultStory>;
30
78
 
31
- export const Default: Story = {
79
+ export const Default: Story = {};
80
+
81
+ export const WithSuggestions: Story = {
32
82
  args: {
33
- classNames: 'w-96 p-4 rounded outline outline-gray-200',
34
- autoFocus: true,
35
83
  onSubmit: (text) => {
36
- console.log('onEnter', text);
84
+ log('onSubmit', { text });
37
85
  },
38
86
  onSuggest: (text) => {
39
87
  const trimmed = text.trim().toLowerCase();
@@ -54,60 +102,19 @@ export const Default: Story = {
54
102
  },
55
103
  };
56
104
 
57
- export const Toolbar: Story = {
58
- render: (args) => {
59
- const [processing, setProcessing] = useState(false);
60
- useEffect(() => {
61
- let t: NodeJS.Timeout;
62
- if (processing) {
63
- t = setTimeout(() => setProcessing(false), 10_000);
64
- }
65
- return () => clearTimeout(t);
66
- }, [processing]);
67
- console.log('processing', processing);
68
-
69
- return (
70
- <PromptBar
71
- classNames='w-[25rem] p-1 overflow-hidden border border-gray-200 rounded'
72
- microphone
73
- processing={processing}
74
- onSubmit={() => setProcessing(true)}
75
- onCancel={() => setProcessing(false)}
76
- {...args}
77
- />
78
- );
79
- },
80
- };
81
-
82
- export const Includes: Story = {
105
+ export const WithReferences: Story = {
83
106
  args: {
84
- classNames: 'w-96 p-4 rounded outline outline-gray-200',
85
107
  references: {
86
108
  getReferences: async ({ query }) => {
87
109
  const res = references.filter((i) => i.label.toLowerCase().startsWith(query.toLowerCase()));
88
- console.log('getReferences', { query, res });
110
+ log('getReferences', { query, res });
89
111
  return res;
90
112
  },
91
113
  resolveReference: async ({ uri }) => {
92
114
  const res = references.find((i) => i.uri === uri);
93
- console.log('resolveReference', { uri, res });
115
+ log('resolveReference', { uri, res });
94
116
  return res ?? null;
95
117
  },
96
118
  },
97
119
  },
98
120
  };
99
-
100
- const references: ReferenceData[] = [
101
- {
102
- uri: 'dxn:echo:@:AAAAAAAA',
103
- label: 'Meeting Notes',
104
- },
105
- {
106
- uri: 'dxn:echo:@:BBBBBBBB',
107
- label: 'Project Plan',
108
- },
109
- {
110
- uri: 'dxn:echo:@:CCCCCCCC',
111
- label: 'Meeting Plan',
112
- },
113
- ];