@dxos/plugin-assistant 0.8.2-staging.7ac8446 → 0.8.3-main.672df60

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 (365) hide show
  1. package/dist/lib/browser/AssistantDialog-UAZSN6GT.mjs +46 -0
  2. package/dist/lib/browser/AssistantDialog-UAZSN6GT.mjs.map +7 -0
  3. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs +45 -0
  4. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-UTN3AO5U.mjs +39 -0
  6. package/dist/lib/browser/ChatContainer-UTN3AO5U.mjs.map +7 -0
  7. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs +28 -0
  8. package/dist/lib/browser/TemplateContainer-AKUYL4AV.mjs.map +7 -0
  9. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-COXVUC6V.mjs} +6 -6
  10. package/dist/lib/browser/ai-client-COXVUC6V.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-builder-56OZ5RW4.mjs +206 -0
  12. package/dist/lib/browser/app-graph-builder-56OZ5RW4.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-TXJWGWJ7.mjs → chunk-3F44MBHU.mjs} +3 -3
  14. package/dist/lib/browser/chunk-3F44MBHU.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-6SD7S7W5.mjs +157 -0
  16. package/dist/lib/browser/chunk-6SD7S7W5.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-JQFUME3B.mjs +87 -0
  18. package/dist/lib/{node-esm/chunk-PBZA7XJR.mjs.map → browser/chunk-JQFUME3B.mjs.map} +1 -1
  19. package/dist/lib/browser/chunk-NBSPGIHL.mjs +206 -0
  20. package/dist/lib/browser/chunk-NBSPGIHL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs +96 -0
  22. package/dist/lib/browser/chunk-Q6UZ4F3H.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-Q6XE3O3E.mjs} +1714 -1536
  24. package/dist/lib/browser/chunk-Q6XE3O3E.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-3HCI5FIL.mjs → chunk-XOZ7YMO3.mjs} +3 -3
  26. package/dist/lib/browser/{chunk-3HCI5FIL.mjs.map → chunk-XOZ7YMO3.mjs.map} +1 -1
  27. package/dist/lib/browser/index.mjs +47 -23
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs +39 -0
  30. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/react-surface-DGS34EON.mjs +144 -0
  33. package/dist/lib/browser/react-surface-DGS34EON.mjs.map +7 -0
  34. package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-BTFB7IQ6.mjs} +5 -5
  35. package/dist/lib/browser/settings-BTFB7IQ6.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +6 -2
  37. package/dist/lib/node/AssistantDialog-RTB5Q7FP.cjs +72 -0
  38. package/dist/lib/node/AssistantDialog-RTB5Q7FP.cjs.map +7 -0
  39. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs +72 -0
  40. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs.map +7 -0
  41. package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-P3JL4VZ7.cjs} +25 -19
  42. package/dist/lib/node/ChatContainer-P3JL4VZ7.cjs.map +7 -0
  43. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs +58 -0
  44. package/dist/lib/node/TemplateContainer-CTG2MB4W.cjs.map +7 -0
  45. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-R2CGEYZW.cjs} +13 -13
  46. package/dist/lib/node/ai-client-R2CGEYZW.cjs.map +7 -0
  47. package/dist/lib/node/app-graph-builder-QLF353LH.cjs +216 -0
  48. package/dist/lib/node/app-graph-builder-QLF353LH.cjs.map +7 -0
  49. package/dist/lib/node/{chunk-XI2ARIEO.cjs → chunk-4EEWTDQK.cjs} +45 -39
  50. package/dist/lib/node/{chunk-XI2ARIEO.cjs.map → chunk-4EEWTDQK.cjs.map} +1 -1
  51. package/dist/lib/node/chunk-BWL5A3O5.cjs +184 -0
  52. package/dist/lib/node/chunk-BWL5A3O5.cjs.map +7 -0
  53. package/dist/lib/node/chunk-HRNIUYVQ.cjs +128 -0
  54. package/dist/lib/node/chunk-HRNIUYVQ.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-Q5XWEMHB.cjs → chunk-P74TWGMG.cjs} +6 -6
  56. package/dist/lib/node/{chunk-Q5XWEMHB.cjs.map → chunk-P74TWGMG.cjs.map} +1 -1
  57. package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-PG7YNQ4R.cjs} +1523 -1338
  58. package/dist/lib/node/chunk-PG7YNQ4R.cjs.map +7 -0
  59. package/dist/lib/node/{chunk-GBUNQ257.cjs → chunk-TS3H5OSX.cjs} +7 -7
  60. package/dist/lib/node/chunk-TS3H5OSX.cjs.map +7 -0
  61. package/dist/lib/node/chunk-UNVDZOLA.cjs +231 -0
  62. package/dist/lib/node/chunk-UNVDZOLA.cjs.map +7 -0
  63. package/dist/lib/node/index.cjs +88 -65
  64. package/dist/lib/node/index.cjs.map +3 -3
  65. package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-U7663JU7.cjs} +15 -21
  66. package/dist/lib/node/intent-resolver-U7663JU7.cjs.map +7 -0
  67. package/dist/lib/node/meta.json +1 -1
  68. package/dist/lib/node/react-surface-QXZTILW6.cjs +157 -0
  69. package/dist/lib/node/react-surface-QXZTILW6.cjs.map +7 -0
  70. package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-LBJMT6YB.cjs} +9 -9
  71. package/dist/lib/node/settings-LBJMT6YB.cjs.map +7 -0
  72. package/dist/lib/node/types/index.cjs +17 -13
  73. package/dist/lib/node/types/index.cjs.map +2 -2
  74. package/dist/lib/node-esm/AssistantDialog-DONAO6SA.mjs +47 -0
  75. package/dist/lib/node-esm/AssistantDialog-DONAO6SA.mjs.map +7 -0
  76. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs +47 -0
  77. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs.map +7 -0
  78. package/dist/lib/node-esm/ChatContainer-FVIGCDIG.mjs +40 -0
  79. package/dist/lib/node-esm/ChatContainer-FVIGCDIG.mjs.map +7 -0
  80. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs +29 -0
  81. package/dist/lib/node-esm/TemplateContainer-IVDQ4XQG.mjs.map +7 -0
  82. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-I5LXHMOZ.mjs} +6 -6
  83. package/dist/lib/node-esm/ai-client-I5LXHMOZ.mjs.map +7 -0
  84. package/dist/lib/node-esm/app-graph-builder-5YX5TKKT.mjs +207 -0
  85. package/dist/lib/node-esm/app-graph-builder-5YX5TKKT.mjs.map +7 -0
  86. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs → chunk-BB2TAT4P.mjs} +3 -3
  87. package/dist/lib/node-esm/{chunk-ECRK6TUQ.mjs.map → chunk-BB2TAT4P.mjs.map} +1 -1
  88. package/dist/lib/node-esm/chunk-CDAILLCU.mjs +98 -0
  89. package/dist/lib/node-esm/chunk-CDAILLCU.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-GJE4WCUJ.mjs +158 -0
  91. package/dist/lib/node-esm/chunk-GJE4WCUJ.mjs.map +7 -0
  92. package/dist/lib/node-esm/{chunk-6JK5HEUQ.mjs → chunk-HLPGKJ7N.mjs} +3 -3
  93. package/dist/lib/node-esm/chunk-HLPGKJ7N.mjs.map +7 -0
  94. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-MNH6E6EB.mjs} +1714 -1536
  95. package/dist/lib/node-esm/chunk-MNH6E6EB.mjs.map +7 -0
  96. package/dist/lib/node-esm/{chunk-PBZA7XJR.mjs → chunk-OYN6HLXZ.mjs} +42 -36
  97. package/dist/lib/{browser/chunk-NFUHCW2J.mjs.map → node-esm/chunk-OYN6HLXZ.mjs.map} +1 -1
  98. package/dist/lib/node-esm/chunk-TQYSF2GS.mjs +207 -0
  99. package/dist/lib/node-esm/chunk-TQYSF2GS.mjs.map +7 -0
  100. package/dist/lib/node-esm/index.mjs +47 -23
  101. package/dist/lib/node-esm/index.mjs.map +3 -3
  102. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs +40 -0
  103. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs.map +7 -0
  104. package/dist/lib/node-esm/meta.json +1 -1
  105. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs +145 -0
  106. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs.map +7 -0
  107. package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-TGCCAH5D.mjs} +5 -5
  108. package/dist/lib/node-esm/settings-TGCCAH5D.mjs.map +7 -0
  109. package/dist/lib/node-esm/types/index.mjs +6 -2
  110. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/ai-client.d.ts +3 -3
  112. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  116. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/index.d.ts +3 -179
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  121. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +3 -1
  122. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  124. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +8 -0
  125. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -0
  126. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts +8 -0
  127. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/BlueprintEditor/index.d.ts +3 -0
  129. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +1 -0
  130. package/dist/types/src/components/ChatContainer.d.ts +4 -3
  131. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  132. package/dist/types/src/components/Prompt/Prompt.d.ts +5 -2
  133. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  134. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +6 -3
  135. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/Prompt/PromptBar.d.ts +9 -4
  137. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  138. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts +9 -0
  139. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +1 -0
  140. package/dist/types/src/components/Prompt/autocomplete.d.ts +5 -1
  141. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  142. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  143. package/dist/types/src/components/PromptSettings.d.ts +6 -0
  144. package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
  145. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  147. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  149. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  150. package/dist/types/src/components/Thread/Thread.d.ts +2 -2
  151. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  152. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -1
  154. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  155. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  156. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  157. package/dist/types/src/components/Thread/ThreadMessage.d.ts +4 -2
  158. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  159. package/dist/types/src/components/Thread/ToolInvocations.d.ts +1 -1
  160. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  161. package/dist/types/src/components/Thread/reducer.d.ts +1 -1
  162. package/dist/types/src/components/Thread/reducer.d.ts.map +1 -1
  163. package/dist/types/src/components/Toolbox/Toolbox.d.ts +3 -2
  164. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  165. package/dist/types/src/components/index.d.ts +5 -6
  166. package/dist/types/src/components/index.d.ts.map +1 -1
  167. package/dist/types/src/experimental/transcription/index.d.ts +1 -0
  168. package/dist/types/src/experimental/transcription/index.d.ts.map +1 -0
  169. package/dist/types/src/hooks/index.d.ts +0 -1
  170. package/dist/types/src/hooks/index.d.ts.map +1 -1
  171. package/dist/types/src/hooks/processor.d.ts +6 -5
  172. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  173. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  174. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  175. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useMessageQueue.d.ts +11 -10
  177. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  179. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  180. package/dist/types/src/parser/filter-generator.d.ts +4 -0
  181. package/dist/types/src/parser/filter-generator.d.ts.map +1 -0
  182. package/dist/types/src/parser/filter-generator.test.d.ts +2 -0
  183. package/dist/types/src/parser/filter-generator.test.d.ts.map +1 -0
  184. package/dist/types/src/parser/index.d.ts +4 -0
  185. package/dist/types/src/parser/index.d.ts.map +1 -0
  186. package/dist/types/src/parser/query-parser.d.ts +15 -0
  187. package/dist/types/src/parser/query-parser.d.ts.map +1 -0
  188. package/dist/types/src/parser/query-parser.test.d.ts +2 -0
  189. package/dist/types/src/parser/query-parser.test.d.ts.map +1 -0
  190. package/dist/types/src/parser/types.d.ts +24 -0
  191. package/dist/types/src/parser/types.d.ts.map +1 -0
  192. package/dist/types/src/stories/Prompt.stories.d.ts +8 -0
  193. package/dist/types/src/stories/Prompt.stories.d.ts.map +1 -0
  194. package/dist/types/src/stories/Query.stories.d.ts +19 -0
  195. package/dist/types/src/stories/Query.stories.d.ts.map +1 -0
  196. package/dist/types/src/stories/Research.stories.d.ts +15 -0
  197. package/dist/types/src/stories/Research.stories.d.ts.map +1 -0
  198. package/dist/types/src/stories/test-data.d.ts +3 -0
  199. package/dist/types/src/stories/test-data.d.ts.map +1 -0
  200. package/dist/types/src/stories/testing.d.ts +12 -0
  201. package/dist/types/src/stories/testing.d.ts.map +1 -0
  202. package/dist/types/src/testing/index.d.ts +1 -0
  203. package/dist/types/src/testing/index.d.ts.map +1 -1
  204. package/dist/types/src/testing/test-blueprint.d.ts +14 -0
  205. package/dist/types/src/testing/test-blueprint.d.ts.map +1 -0
  206. package/dist/types/src/testing/test-functions.d.ts +1 -1
  207. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  208. package/dist/types/src/tools/function.d.ts +4 -4
  209. package/dist/types/src/tools/function.d.ts.map +1 -1
  210. package/dist/types/src/tools/openapi.d.ts +3 -3
  211. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  212. package/dist/types/src/translations.d.ts +6 -0
  213. package/dist/types/src/translations.d.ts.map +1 -1
  214. package/dist/types/src/types/chat.d.ts +18 -8
  215. package/dist/types/src/types/chat.d.ts.map +1 -1
  216. package/dist/types/src/types/service.d.ts +96 -95
  217. package/dist/types/src/types/service.d.ts.map +1 -1
  218. package/dist/types/src/types/template.d.ts +52 -52
  219. package/dist/types/src/types/template.d.ts.map +1 -1
  220. package/dist/types/src/types/types.d.ts +34 -23
  221. package/dist/types/src/types/types.d.ts.map +1 -1
  222. package/dist/types/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +79 -61
  224. package/src/AssistantPlugin.tsx +12 -11
  225. package/src/capabilities/ai-client.ts +5 -6
  226. package/src/capabilities/app-graph-builder.ts +173 -135
  227. package/src/capabilities/capabilities.ts +1 -1
  228. package/src/capabilities/index.ts +1 -1
  229. package/src/capabilities/intent-resolver.ts +10 -11
  230. package/src/capabilities/react-surface.tsx +88 -22
  231. package/src/capabilities/settings.ts +2 -2
  232. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +2 -2
  233. package/src/components/AmbientDialog/AmbientDialog.tsx +27 -13
  234. package/src/components/AssistantDialog.tsx +1 -1
  235. package/src/components/AssistantSettings/AssistantSettings.tsx +29 -7
  236. package/src/components/BlueprintEditor/BlueprintEditor.stories.tsx +32 -0
  237. package/src/components/BlueprintEditor/BlueprintEditor.tsx +40 -0
  238. package/src/components/BlueprintEditor/index.ts +7 -0
  239. package/src/components/ChatContainer.tsx +6 -8
  240. package/src/components/Prompt/Prompt.stories.tsx +60 -52
  241. package/src/components/Prompt/Prompt.tsx +24 -10
  242. package/src/components/Prompt/PromptBar.stories.tsx +69 -0
  243. package/src/components/Prompt/PromptBar.tsx +82 -88
  244. package/src/components/Prompt/autocomplete.ts +14 -8
  245. package/src/components/Prompt/references.ts +3 -3
  246. package/src/components/PromptSettings.tsx +91 -0
  247. package/src/components/TemplateContainer.tsx +3 -79
  248. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +4 -4
  249. package/src/components/TemplateEditor/TemplateForm.stories.tsx +3 -3
  250. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  251. package/src/components/Thread/Thread.stories.tsx +14 -17
  252. package/src/components/Thread/Thread.tsx +2 -2
  253. package/src/components/Thread/ThreadContainer.stories.tsx +83 -62
  254. package/src/components/Thread/ThreadContainer.tsx +26 -5
  255. package/src/components/Thread/ThreadMessage.tsx +49 -11
  256. package/src/components/Thread/ToolInvocations.tsx +9 -7
  257. package/src/components/Thread/reducer.ts +1 -1
  258. package/src/components/Toolbox/Toolbox.stories.tsx +4 -4
  259. package/src/components/Toolbox/Toolbox.tsx +5 -4
  260. package/src/components/index.ts +4 -1
  261. package/src/experimental/transcription/index.ts +3 -0
  262. package/src/hooks/index.ts +0 -1
  263. package/src/hooks/processor.ts +68 -8
  264. package/src/hooks/useChatProcessor.tsx +12 -11
  265. package/src/hooks/useContextProvider.ts +20 -17
  266. package/src/hooks/useMessageQueue.ts +5 -5
  267. package/src/meta.ts +2 -2
  268. package/src/parser/filter-generator.test.ts +32 -0
  269. package/src/parser/filter-generator.ts +81 -0
  270. package/src/parser/index.ts +7 -0
  271. package/src/parser/query-parser.test.ts +139 -0
  272. package/src/parser/query-parser.ts +199 -0
  273. package/src/parser/types.ts +34 -0
  274. package/src/shims.d.ts +8 -0
  275. package/src/stories/Prompt.stories.tsx +60 -0
  276. package/src/stories/Query.stories.tsx +515 -0
  277. package/src/stories/Research.stories.tsx +496 -0
  278. package/src/stories/test-data.ts +128 -0
  279. package/src/stories/testing.ts +60 -0
  280. package/src/testing/index.ts +1 -0
  281. package/src/testing/test-blueprint.ts +50 -0
  282. package/src/testing/test-functions.ts +1 -1
  283. package/src/testing/test-services.ts +6 -6
  284. package/src/tools/function.ts +11 -12
  285. package/src/tools/openapi.test.ts +18 -19
  286. package/src/tools/openapi.ts +24 -17
  287. package/src/translations.ts +14 -6
  288. package/src/types/chat.ts +27 -4
  289. package/src/types/service.ts +39 -37
  290. package/src/types/template.ts +27 -25
  291. package/src/types/types.ts +24 -19
  292. package/dist/lib/browser/AssistantDialog-YSHMAHW5.mjs +0 -117
  293. package/dist/lib/browser/AssistantDialog-YSHMAHW5.mjs.map +0 -7
  294. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs +0 -33
  295. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
  296. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
  297. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
  298. package/dist/lib/browser/ai-client-CDZLSNXE.mjs.map +0 -7
  299. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs +0 -209
  300. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-FMB7RGMP.mjs.map +0 -7
  302. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  303. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-KYMKVE6M.mjs +0 -128
  305. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-NFUHCW2J.mjs +0 -81
  307. package/dist/lib/browser/chunk-TXJWGWJ7.mjs.map +0 -7
  308. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs +0 -46
  309. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
  310. package/dist/lib/browser/react-surface-57VRDOQT.mjs +0 -90
  311. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
  312. package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
  313. package/dist/lib/node/AssistantDialog-YI2BSGSX.cjs +0 -141
  314. package/dist/lib/node/AssistantDialog-YI2BSGSX.cjs.map +0 -7
  315. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
  316. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
  317. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
  318. package/dist/lib/node/ai-client-URCCYU6B.cjs.map +0 -7
  319. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs +0 -220
  320. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
  321. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  322. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  323. package/dist/lib/node/chunk-GBUNQ257.cjs.map +0 -7
  324. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
  325. package/dist/lib/node/chunk-ZKOC4ZFY.cjs +0 -152
  326. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
  327. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
  328. package/dist/lib/node/react-surface-NUQTM6MS.cjs +0 -106
  329. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
  330. package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
  331. package/dist/lib/node-esm/AssistantDialog-U2FQX5TD.mjs +0 -118
  332. package/dist/lib/node-esm/AssistantDialog-U2FQX5TD.mjs.map +0 -7
  333. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs +0 -34
  334. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
  335. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
  336. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
  337. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs.map +0 -7
  338. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs +0 -210
  339. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
  340. package/dist/lib/node-esm/chunk-6JK5HEUQ.mjs.map +0 -7
  341. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs +0 -129
  342. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
  343. package/dist/lib/node-esm/chunk-MVDAY3CZ.mjs.map +0 -7
  344. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  345. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  346. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs +0 -47
  347. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
  348. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs +0 -91
  349. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
  350. package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
  351. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  352. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  353. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  354. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  355. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  356. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  357. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  358. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  359. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  360. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  361. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  362. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  363. package/src/components/ServiceRegistry/index.ts +0 -5
  364. package/src/hooks/invocation-handler.ts +0 -107
  365. package/src/hooks/useLocalTriggerManager.ts +0 -82
@@ -0,0 +1,50 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ToolRegistry } from '@dxos/ai';
6
+ import { EXA_API_KEY } from '@dxos/ai/testing';
7
+ import { 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 createRegistry = (space: Space, queueDxn?: DXN): ToolRegistry => {
16
+ return new ToolRegistry(
17
+ [
18
+ createExaTool({ apiKey: EXA_API_KEY }),
19
+ createLocalSearchTool(space.db, queueDxn && space.queues.get(queueDxn)),
20
+ queueDxn &&
21
+ createGraphWriterTool({
22
+ db: space.db,
23
+ queue: space.queues.get(queueDxn),
24
+ schemaTypes: DataTypes,
25
+ onDone: async (objects) => {
26
+ const queue = space.queues.get(queueDxn);
27
+ queue.append(objects);
28
+ },
29
+ }),
30
+ ].filter(isNonNullable),
31
+ );
32
+ };
33
+
34
+ export const RESEARCH_BLUEPRINT = BlueprintParser.create().parse({
35
+ steps: [
36
+ {
37
+ instructions: 'Research information and entities related to the selected objects.',
38
+ tools: ['search/web_search'],
39
+ },
40
+ {
41
+ instructions:
42
+ 'Based on your research find matching entires that are already in the graph. Do exaustive research.',
43
+ tools: ['search/local_search'],
44
+ },
45
+ {
46
+ instructions: 'Add researched data to the graph. Make connections to existing objects.',
47
+ tools: ['search/local_search', 'graph/writer'],
48
+ },
49
+ ],
50
+ });
@@ -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,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { createStatic } from '@dxos/echo-schema';
5
+ import { create } from '@dxos/echo-schema';
6
6
 
7
7
  import {
8
8
  type ApiAuthorization,
@@ -54,7 +54,7 @@ const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
54
54
  // - e.g., https://github.com/konfig-sdks/openapi-examples/blob/main/xkcd/openapi.yaml
55
55
 
56
56
  const TEST_SERVICES: ServiceType[] = [
57
- createStatic(ServiceType, {
57
+ create(ServiceType, {
58
58
  serviceId: 'amadeus.com/service/FlightSearch',
59
59
  name: 'Amadeus Flight Search',
60
60
  description: 'Search for local and international flights.',
@@ -68,7 +68,7 @@ const TEST_SERVICES: ServiceType[] = [
68
68
  ],
69
69
  }),
70
70
 
71
- createStatic(ServiceType, {
71
+ create(ServiceType, {
72
72
  serviceId: 'amadeus.com/service/HotelSearch',
73
73
  name: 'Amadeus Hotel Search',
74
74
  description: 'Search for local and international hotels.',
@@ -82,7 +82,7 @@ const TEST_SERVICES: ServiceType[] = [
82
82
  ],
83
83
  }),
84
84
 
85
- createStatic(ServiceType, {
85
+ create(ServiceType, {
86
86
  serviceId: 'visualcrossing.com/service/Weather',
87
87
  name: 'Visual Crossing Weather',
88
88
  description: 'Search for global weather forecasts.',
@@ -97,7 +97,7 @@ const TEST_SERVICES: ServiceType[] = [
97
97
  }),
98
98
 
99
99
  // TODO(burdon): Needs auth.
100
- createStatic(ServiceType, {
100
+ create(ServiceType, {
101
101
  serviceId: 'abstractapi.com/service/GeoLocation',
102
102
  name: 'Abstract GeoLocation',
103
103
  description: 'Get the location of any IP address.',
@@ -115,7 +115,7 @@ const TEST_SERVICES: ServiceType[] = [
115
115
  //
116
116
 
117
117
  ...Array.from({ length: 20 }, (_, i) =>
118
- createStatic(ServiceType, {
118
+ create(ServiceType, {
119
119
  serviceId: `example.com/service/test-${i}`,
120
120
  name: `Test ${i}`,
121
121
  description: `Test ${i}`,
@@ -2,33 +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
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions/types';
9
- import type { FunctionType } from '@dxos/functions/types';
7
+ import { getInvocationUrl, getUserFunctionUrlInMetadata } 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
 
14
- export const covertFunctionToTool = (
13
+ // TODO(burdon): Move to @dxos/ai.
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
  }
27
- const url = getInvocationUrl(existingFunctionUrl, edgeUrl, {
28
- spaceId,
29
- });
30
26
 
31
- return defineTool('user-function', {
27
+ const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });
28
+
29
+ return createTool('user-function', {
32
30
  name: fn.name,
33
31
  description: fn.description,
34
32
  schema: toEffectSchema(fn.inputSchema),
@@ -41,6 +39,7 @@ export const covertFunctionToTool = (
41
39
  },
42
40
  body: JSON.stringify(input),
43
41
  });
42
+
44
43
  return ToolResult.Success(await response.text());
45
44
  },
46
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
  });
@@ -2,11 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import jsonpointer from 'jsonpointer';
6
7
  import { type OpenAPIV2, type OpenAPIV3_1 } from 'openapi-types';
7
8
 
8
- import { ToolResult, type Tool } from '@dxos/artifact';
9
- import { JsonSchemaType, normalizeSchema, S, toEffectSchema } from '@dxos/echo-schema';
9
+ import { type ExecutableTool, ToolResult, createRawTool } from '@dxos/ai';
10
+ import { JsonSchemaType, normalizeSchema, toEffectSchema } from '@dxos/echo-schema';
10
11
  import { invariant } from '@dxos/invariant';
11
12
  import { log } from '@dxos/log';
12
13
  import { deepMapValues } from '@dxos/util';
@@ -18,7 +19,7 @@ export type CreateToolsFromApiOptions = {
18
19
  instructions?: string;
19
20
  };
20
21
 
21
- export const createToolsFromService = async (service: ServiceType): Promise<Tool[]> => {
22
+ export const createToolsFromService = async (service: ServiceType): Promise<ExecutableTool[]> => {
22
23
  invariant(service.interfaces?.length === 1 && service.interfaces[0].kind === 'api');
23
24
  const iface = service.interfaces[0];
24
25
  invariant(iface.schemaUrl);
@@ -26,18 +27,20 @@ export const createToolsFromService = async (service: ServiceType): Promise<Tool
26
27
  return createToolsFromApi(iface.schemaUrl, { authorization: iface.authorization });
27
28
  };
28
29
 
29
- export const createToolsFromApi = async (url: string, options?: CreateToolsFromApiOptions): Promise<Tool[]> => {
30
+ export const createToolsFromApi = async (
31
+ url: string,
32
+ options?: CreateToolsFromApiOptions,
33
+ ): Promise<ExecutableTool[]> => {
30
34
  const res = await fetch(url);
31
35
  const spec = (await res.json()) as OpenAPIV2.Document;
32
36
  log('spec', { spec });
33
37
 
34
- const tools: Tool[] = [];
38
+ const tools: ExecutableTool[] = [];
35
39
  for (const [path, pathItem] of Object.entries(spec.paths)) {
36
40
  if (typeof pathItem !== 'object') {
37
41
  continue;
38
42
  }
39
43
 
40
- // TODO(burdon): ???
41
44
  const { ...methods } = pathItem;
42
45
  for (const [method, m] of Object.entries(methods)) {
43
46
  const methodItem: OpenAPIV2.OperationObject = m as OpenAPIV2.OperationObject;
@@ -49,6 +52,7 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
49
52
  return resolved;
50
53
  }) ?? [];
51
54
 
55
+ // TODO(burdon): Reconcile with toFunctionParameterSchema.
52
56
  const inputSchema: JsonSchemaType = {
53
57
  type: 'object',
54
58
  properties: {},
@@ -82,7 +86,7 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
82
86
  }
83
87
 
84
88
  log('inputSchema', { inputSchema });
85
- S.validateSync(JsonSchemaType)(inputSchema);
89
+ Schema.validateSync(JsonSchemaType)(inputSchema);
86
90
 
87
91
  const description = methodItem.description ?? methodItem.summary;
88
92
  if (!description) {
@@ -98,15 +102,18 @@ export const createToolsFromApi = async (url: string, options?: CreateToolsFromA
98
102
  authorization: options?.authorization,
99
103
  };
100
104
 
101
- tools.push({
102
- name: getToolName(path, method, methodItem),
103
- description: options?.instructions ? `${options.instructions}\n\n${description}` : description,
104
- parameters: inputSchema,
105
- execute: async (input) => {
106
- const response = await callApiEndpoint(endpoint, input);
107
- return ToolResult.Success(response);
108
- },
109
- });
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
+ );
110
117
  }
111
118
  }
112
119
 
@@ -200,7 +207,7 @@ const callApiEndpoint = async (endpoint: EndpointDescriptor, input: any) => {
200
207
 
201
208
  // Client-side validation
202
209
  const effectSchema = toEffectSchema(parameter.schema);
203
- S.validateSync(effectSchema)(value);
210
+ Schema.validateSync(effectSchema)(value);
204
211
 
205
212
  if (body) {
206
213
  throw new Error(`Duplicate body parameter: ${parameter.name}`);
@@ -2,25 +2,31 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Blueprint } from '@dxos/assistant';
6
+ import { getSchemaTypename } from '@dxos/echo-schema';
7
+
5
8
  import { ASSISTANT_PLUGIN } from './meta';
6
9
  import { AIChatType, TemplateType } from './types';
7
10
 
8
11
  export default [
9
12
  {
10
13
  'en-US': {
11
- [AIChatType.typename]: {
12
- 'typename label': 'AI Chat',
14
+ [getSchemaTypename(AIChatType)!]: {
15
+ 'typename label': 'Assistant',
13
16
  'object name placeholder': 'AI Chat',
14
17
  },
18
+ [getSchemaTypename(Blueprint)!]: {
19
+ 'typename label': 'Blueprint',
20
+ 'object name placeholder': 'New blueprint',
21
+ },
15
22
  [TemplateType.typename]: {
16
23
  'typename label': 'Template',
17
24
  'object name placeholder': 'New template',
18
25
  },
19
26
  [ASSISTANT_PLUGIN]: {
20
27
  'templates label': 'Templates',
21
-
22
- 'open ambient chat label': 'Open AI chat',
23
- 'assistant chat label': 'AI chat',
28
+ 'open ambient chat label': 'Open Assistant',
29
+ 'assistant chat label': 'Assistant',
24
30
  'plugin name': 'Assistant',
25
31
  'object placeholder': 'New prompt',
26
32
  'create object label': 'Create prompt',
@@ -29,6 +35,7 @@ export default [
29
35
  'command placeholder': 'Enter slash command...',
30
36
  'template placeholder': 'Enter template...',
31
37
  'value placeholder': 'Enter value...',
38
+ 'prompt rules label': 'Prompt Rules',
32
39
  'typename placeholder': 'Enter typename of objects which this template is for',
33
40
  'description placeholder': 'Enter description of when this template should be used',
34
41
  'select preset template placeholder': 'Select preset',
@@ -37,6 +44,7 @@ export default [
37
44
  'assistant dialog title': 'Assistant',
38
45
  'open assistant label': 'Open assistant',
39
46
 
47
+ 'search input placeholder': 'Search...',
40
48
  'chat input placeholder': 'Ask a question...',
41
49
  'chat stop': 'Cancel request.',
42
50
 
@@ -46,7 +54,7 @@ export default [
46
54
 
47
55
  'settings default label': 'Default',
48
56
  'settings custom prompts label': 'Use custom prompts',
49
- 'settings llm provider label': 'Enable Ollama integration',
57
+ 'settings llm provider label': 'LLM provider',
50
58
  'settings edge llm model label': 'Remote language model',
51
59
  'settings ollama llm model label': 'Ollama language model',
52
60
  },
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> {}
@@ -2,78 +2,80 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
6
+
5
7
  import { ComputeGraph } from '@dxos/conductor';
6
- import { Ref, S, TypedObject, type Ref$ } from '@dxos/echo-schema';
7
- import { FunctionType } from '@dxos/functions/types';
8
-
9
- const ApiAuthorizationKey = S.Struct({
10
- type: S.Literal('api-key'),
11
- key: S.String,
12
- placement: S.Union(
13
- S.Struct({
14
- type: S.Literal('authorization-header'),
8
+ import { Ref, TypedObject, type Ref$ } from '@dxos/echo-schema';
9
+ import { FunctionType } from '@dxos/functions';
10
+
11
+ const ApiAuthorizationKey = Schema.Struct({
12
+ type: Schema.Literal('api-key'),
13
+ key: Schema.String,
14
+ placement: Schema.Union(
15
+ Schema.Struct({
16
+ type: Schema.Literal('authorization-header'),
15
17
  }),
16
- S.Struct({
17
- type: S.Literal('query'),
18
- name: S.String,
18
+ Schema.Struct({
19
+ type: Schema.Literal('query'),
20
+ name: Schema.String,
19
21
  }),
20
22
  ),
21
23
  });
22
24
 
23
- const ApiAuthorizationOauth = S.Struct({
24
- type: S.Literal('oauth'),
25
- clientId: S.String,
26
- clientSecret: S.String,
27
- tokenUrl: S.String,
28
- grantType: S.String,
25
+ const ApiAuthorizationOauth = Schema.Struct({
26
+ type: Schema.Literal('oauth'),
27
+ clientId: Schema.String,
28
+ clientSecret: Schema.String,
29
+ tokenUrl: Schema.String,
30
+ grantType: Schema.String,
29
31
  });
30
32
 
31
- export const ApiAuthorization = S.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
32
- export type ApiAuthorization = S.Schema.Type<typeof ApiAuthorization>;
33
+ export const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
34
+ export type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;
33
35
 
34
- const ServiceInterfaceFunction = S.Struct({
35
- kind: S.Literal('function'),
36
+ const ServiceInterfaceFunction = Schema.Struct({
37
+ kind: Schema.Literal('function'),
36
38
  fn: Ref(FunctionType) as Ref$<FunctionType>,
37
39
  });
38
40
 
39
- const ServiceInterfaceWorkflow = S.Struct({
40
- kind: S.Literal('workflow'),
41
+ const ServiceInterfaceWorkflow = Schema.Struct({
42
+ kind: Schema.Literal('workflow'),
41
43
  workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,
42
44
  });
43
45
 
44
- const ServiceInterfaceApi = S.Struct({
45
- kind: S.Literal('api'),
46
+ const ServiceInterfaceApi = Schema.Struct({
47
+ kind: Schema.Literal('api'),
46
48
 
47
49
  /**
48
50
  * URL to fetch the openapi schema.
49
51
  */
50
- schemaUrl: S.optional(S.String),
52
+ schemaUrl: Schema.optional(Schema.String),
51
53
 
52
54
  /**
53
55
  * Inlined openapi schema.
54
56
  */
55
- schema: S.optional(S.Any),
57
+ schema: Schema.optional(Schema.Any),
56
58
 
57
59
  /**
58
60
  * Authorization configuration if required.
59
61
  */
60
- authorization: S.optional(ApiAuthorization),
62
+ authorization: Schema.optional(ApiAuthorization),
61
63
  });
62
64
 
63
- const ServiceInterface = S.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
64
- export type ServiceInterface = S.Schema.Type<typeof ServiceInterface>;
65
+ const ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
66
+ export type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;
65
67
 
66
68
  export class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({
67
- serviceId: S.String,
68
- name: S.optional(S.String),
69
- description: S.optional(S.String),
70
- category: S.optional(S.String),
71
- enabled: S.optional(S.Boolean),
69
+ serviceId: Schema.String,
70
+ name: Schema.optional(Schema.String),
71
+ description: Schema.optional(Schema.String),
72
+ category: Schema.optional(Schema.String),
73
+ enabled: Schema.optional(Schema.Boolean),
72
74
 
73
75
  /**
74
76
  * Entries exposed: functions, workflows, and APIs.
75
77
  */
76
- interfaces: S.optional(S.Array(ServiceInterface)),
78
+ interfaces: Schema.optional(Schema.Array(ServiceInterface)),
77
79
  }) {}
78
80
 
79
81
  //
@@ -2,9 +2,11 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { S, TypedObject } from '@dxos/echo-schema';
5
+ import { Schema } from 'effect';
6
6
 
7
- // TODO(burdon): Change to S.Literal (and discriminated union).
7
+ import { TypedObject } from '@dxos/echo-schema';
8
+
9
+ // TODO(burdon): Change to Schema.Literal (and discriminated union).
8
10
  export enum TemplateInputType {
9
11
  VALUE = 0,
10
12
  PASS_THROUGH = 1,
@@ -16,41 +18,41 @@ export enum TemplateInputType {
16
18
  SCHEMA = 7,
17
19
  }
18
20
 
19
- export const TemplateInputSchema = S.mutable(
20
- S.Struct({
21
- name: S.String,
22
- type: S.optional(S.Enums(TemplateInputType)),
23
- value: S.optional(S.String),
21
+ export const TemplateInputSchema = Schema.mutable(
22
+ Schema.Struct({
23
+ name: Schema.String,
24
+ type: Schema.optional(Schema.Enums(TemplateInputType)),
25
+ value: Schema.optional(Schema.String),
24
26
  }),
25
27
  );
26
28
 
27
- export type TemplateInput = S.Schema.Type<typeof TemplateInputSchema>;
29
+ export type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;
28
30
 
29
31
  export const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;
30
32
  export type TemplateKind = (typeof TemplateKinds)[number];
31
33
 
32
- export const TemplateKindSchema = S.Union(
33
- S.Struct({
34
- include: S.Literal('always'),
34
+ export const TemplateKindSchema = Schema.Union(
35
+ Schema.Struct({
36
+ include: Schema.Literal('always'),
35
37
  }),
36
- S.Struct({
37
- include: S.Literal('schema-matching'),
38
- typename: S.String,
38
+ Schema.Struct({
39
+ include: Schema.Literal('schema-matching'),
40
+ typename: Schema.String,
39
41
  }),
40
- S.Struct({
41
- include: S.Literal('automatically'),
42
- description: S.String,
42
+ Schema.Struct({
43
+ include: Schema.Literal('automatically'),
44
+ description: Schema.String,
43
45
  }),
44
- S.Struct({
45
- include: S.Literal('manual'),
46
+ Schema.Struct({
47
+ include: Schema.Literal('manual'),
46
48
  }),
47
49
  );
48
50
 
49
- export type TemplateKindType = S.Schema.Type<typeof TemplateKindSchema>;
51
+ export type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;
50
52
  export class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({
51
- name: S.optional(S.String),
52
- kind: S.mutable(TemplateKindSchema),
53
- source: S.String,
54
- inputs: S.optional(S.mutable(S.Array(TemplateInputSchema))),
55
- command: S.optional(S.String),
53
+ name: Schema.optional(Schema.String),
54
+ kind: Schema.mutable(TemplateKindSchema),
55
+ source: Schema.String,
56
+ inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),
57
+ command: Schema.optional(Schema.String),
56
58
  }) {}