@dxos/plugin-assistant 0.8.4-main.2e9d522 → 0.8.4-main.5ea62a8

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 (472) hide show
  1. package/dist/lib/browser/{TemplateContainer-RPJ2LBOB.mjs → BlueprintContainer-OWUSKPRK.mjs} +11 -9
  2. package/dist/lib/browser/BlueprintContainer-OWUSKPRK.mjs.map +7 -0
  3. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs +126 -0
  4. package/dist/lib/browser/ChatCompanion-FRCVSLPP.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-YBJBIVUZ.mjs} +34 -13
  6. package/dist/lib/browser/ChatContainer-YBJBIVUZ.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-MTPJLEHM.mjs} +26 -9
  8. package/dist/lib/browser/ChatDialog-MTPJLEHM.mjs.map +7 -0
  9. package/dist/lib/browser/{SequenceContainer-3UDVKWPA.mjs → SequenceContainer-TF5QNXYM.mjs} +5 -17
  10. package/dist/lib/browser/SequenceContainer-TF5QNXYM.mjs.map +7 -0
  11. package/dist/lib/browser/ai-service-NRZPTUHO.mjs +22 -0
  12. package/dist/lib/browser/ai-service-NRZPTUHO.mjs.map +7 -0
  13. package/dist/lib/browser/{app-graph-builder-JTXBKE7O.mjs → app-graph-builder-7AAWTWGA.mjs} +26 -96
  14. package/dist/lib/browser/app-graph-builder-7AAWTWGA.mjs.map +7 -0
  15. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs +12 -0
  16. package/dist/lib/browser/blueprint-definition-CRZPIA5A.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-6QMISAU6.mjs +167 -0
  18. package/dist/lib/browser/chunk-6QMISAU6.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-CFXXQM25.mjs +182 -0
  20. package/dist/lib/browser/chunk-CFXXQM25.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-IJAJRAR7.mjs +18 -0
  22. package/dist/lib/browser/chunk-IJAJRAR7.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  24. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-O4LUJEDV.mjs +20 -0
  26. package/dist/lib/browser/{chunk-FDCJSQYF.mjs.map → chunk-O4LUJEDV.mjs.map} +2 -2
  27. package/dist/lib/browser/chunk-OYFQS7JM.mjs +157 -0
  28. package/dist/lib/browser/chunk-OYFQS7JM.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-SMIVXXAI.mjs +202 -0
  30. package/dist/lib/browser/chunk-SMIVXXAI.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-V5H5CCZA.mjs +218 -0
  32. package/dist/lib/browser/chunk-V5H5CCZA.mjs.map +7 -0
  33. package/dist/lib/browser/chunk-XL557TXF.mjs +2332 -0
  34. package/dist/lib/browser/chunk-XL557TXF.mjs.map +7 -0
  35. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs +22 -0
  36. package/dist/lib/browser/edge-model-resolver-E5M3CC46.mjs.map +7 -0
  37. package/dist/lib/browser/index.mjs +154 -67
  38. package/dist/lib/browser/index.mjs.map +4 -4
  39. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs +112 -0
  40. package/dist/lib/browser/intent-resolver-BQO5SVGI.mjs.map +7 -0
  41. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs +21 -0
  42. package/dist/lib/browser/local-model-resolver-VZ5WZQIC.mjs.map +7 -0
  43. package/dist/lib/browser/meta.json +1 -1
  44. package/dist/lib/browser/react-surface-VNCD2H7C.mjs +109 -0
  45. package/dist/lib/browser/react-surface-VNCD2H7C.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-36V3VUMW.mjs} +6 -5
  47. package/dist/lib/{node-esm/settings-47RYZOU4.mjs.map → browser/settings-36V3VUMW.mjs.map} +1 -1
  48. package/dist/lib/browser/state-D5IVKNYG.mjs +21 -0
  49. package/dist/lib/browser/state-D5IVKNYG.mjs.map +7 -0
  50. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs +191 -0
  51. package/dist/lib/browser/toolkit-Y5OYX5PO.mjs.map +7 -0
  52. package/dist/lib/browser/types/index.mjs +7 -4
  53. package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-UFVWCRN6.mjs} +11 -9
  54. package/dist/lib/node-esm/BlueprintContainer-UFVWCRN6.mjs.map +7 -0
  55. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs +127 -0
  56. package/dist/lib/node-esm/ChatCompanion-ZNRZEKH5.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-TUCITJJW.mjs} +34 -13
  58. package/dist/lib/node-esm/ChatContainer-TUCITJJW.mjs.map +7 -0
  59. package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-JLM7RDZQ.mjs} +26 -9
  60. package/dist/lib/node-esm/ChatDialog-JLM7RDZQ.mjs.map +7 -0
  61. package/dist/lib/node-esm/{SequenceContainer-RQQH5XOC.mjs → SequenceContainer-UXOVZPZO.mjs} +5 -17
  62. package/dist/lib/node-esm/SequenceContainer-UXOVZPZO.mjs.map +7 -0
  63. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs +23 -0
  64. package/dist/lib/node-esm/ai-service-UDEPIPTO.mjs.map +7 -0
  65. package/dist/lib/node-esm/{app-graph-builder-OWSOXFTD.mjs → app-graph-builder-PNAFQUYT.mjs} +26 -96
  66. package/dist/lib/node-esm/app-graph-builder-PNAFQUYT.mjs.map +7 -0
  67. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs +13 -0
  68. package/dist/lib/node-esm/blueprint-definition-275J3XL2.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-2X6VEO32.mjs +2333 -0
  70. package/dist/lib/node-esm/chunk-2X6VEO32.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-7YOGZI66.mjs +203 -0
  72. package/dist/lib/node-esm/chunk-7YOGZI66.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs +159 -0
  74. package/dist/lib/node-esm/chunk-CAQKGW3B.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs +183 -0
  76. package/dist/lib/node-esm/chunk-FNZJJL7G.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  78. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs +168 -0
  80. package/dist/lib/node-esm/chunk-RLBN4RNR.mjs.map +7 -0
  81. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs +219 -0
  82. package/dist/lib/node-esm/chunk-UWUUZQWJ.mjs.map +7 -0
  83. package/dist/lib/node-esm/chunk-VFY2JG62.mjs +22 -0
  84. package/dist/lib/node-esm/{chunk-QN2H2EHV.mjs.map → chunk-VFY2JG62.mjs.map} +2 -2
  85. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs +19 -0
  86. package/dist/lib/node-esm/chunk-YPXEA46Q.mjs.map +7 -0
  87. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs +23 -0
  88. package/dist/lib/node-esm/edge-model-resolver-SZHDLXCT.mjs.map +7 -0
  89. package/dist/lib/node-esm/index.mjs +154 -67
  90. package/dist/lib/node-esm/index.mjs.map +4 -4
  91. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs +113 -0
  92. package/dist/lib/node-esm/intent-resolver-FIS3T5KP.mjs.map +7 -0
  93. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs +22 -0
  94. package/dist/lib/node-esm/local-model-resolver-2KCBKMYA.mjs.map +7 -0
  95. package/dist/lib/node-esm/meta.json +1 -1
  96. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs +110 -0
  97. package/dist/lib/node-esm/react-surface-4NLRKNBU.mjs.map +7 -0
  98. package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-7ZCZ6AS5.mjs} +6 -5
  99. package/dist/lib/{browser/settings-2DGP3UTS.mjs.map → node-esm/settings-7ZCZ6AS5.mjs.map} +1 -1
  100. package/dist/lib/node-esm/state-4VLKPLW3.mjs +22 -0
  101. package/dist/lib/node-esm/state-4VLKPLW3.mjs.map +7 -0
  102. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs +192 -0
  103. package/dist/lib/node-esm/toolkit-2F2OL6WB.mjs.map +7 -0
  104. package/dist/lib/node-esm/types/index.mjs +7 -4
  105. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/ai-service.d.ts +5 -0
  107. package/dist/types/src/capabilities/ai-service.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/blueprint-definition.d.ts +7 -0
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  112. package/dist/types/src/capabilities/capabilities.d.ts +19 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/edge-model-resolver.d.ts +4 -0
  115. package/dist/types/src/capabilities/edge-model-resolver.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/index.d.ts +11 -3
  117. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/local-model-resolver.d.ts +10 -0
  121. package/dist/types/src/capabilities/local-model-resolver.d.ts.map +1 -0
  122. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  123. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/settings.d.ts +1 -1
  125. package/dist/types/src/capabilities/state.d.ts +4 -0
  126. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/toolkit.d.ts +4 -0
  128. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  129. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  130. package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
  131. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  132. package/dist/types/src/components/Chat/Chat.d.ts +19 -16
  133. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  134. package/dist/types/src/components/Chat/events.d.ts +5 -0
  135. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  136. package/dist/types/src/components/ChatCompanion.d.ts +13 -0
  137. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -0
  138. package/dist/types/src/components/ChatContainer.d.ts +4 -4
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  141. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts +7 -0
  142. package/dist/types/src/components/ChatProgress/ChatProgress.d.ts.map +1 -0
  143. package/dist/types/src/components/ChatProgress/index.d.ts +2 -0
  144. package/dist/types/src/components/ChatProgress/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  146. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts +20 -0
  147. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -0
  148. package/dist/types/src/components/ChatPrompt/ChatPresets.d.ts.map +1 -1
  149. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts +4 -5
  150. package/dist/types/src/components/ChatPrompt/ChatReferences.d.ts.map +1 -1
  151. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts +6 -4
  152. package/dist/types/src/components/ChatPrompt/ChatStatusIndicator.d.ts.map +1 -1
  153. package/dist/types/src/components/ChatPrompt/index.d.ts +1 -1
  154. package/dist/types/src/components/ChatPrompt/index.d.ts.map +1 -1
  155. package/dist/types/src/components/ChatThread/ChatMessage.d.ts +21 -5
  156. package/dist/types/src/components/ChatThread/ChatMessage.d.ts.map +1 -1
  157. package/dist/types/src/components/ChatThread/ChatThread.d.ts +4 -4
  158. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  159. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +108 -72
  160. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/ChatThread/Link.d.ts +9 -0
  162. package/dist/types/src/components/ChatThread/Link.d.ts.map +1 -0
  163. package/dist/types/src/components/ChatThread/ToolBlock.d.ts +12 -12
  164. package/dist/types/src/components/ChatThread/ToolBlock.d.ts.map +1 -1
  165. package/dist/types/src/components/ChatThread/reducers.d.ts +40 -0
  166. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -0
  167. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  168. package/dist/types/src/components/SequenceContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +1 -1
  170. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +257 -2
  171. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -6
  173. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  174. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +257 -6
  175. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  176. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -1
  177. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  178. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +254 -1
  179. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  180. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts +12 -0
  181. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +1 -0
  182. package/dist/types/src/components/Toolbar/Toolbar.d.ts +4 -0
  183. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -0
  184. package/dist/types/src/components/Toolbar/index.d.ts +2 -0
  185. package/dist/types/src/components/Toolbar/index.d.ts.map +1 -0
  186. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +11 -0
  187. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +1 -0
  188. package/dist/types/src/components/Toolbox/Toolbox.d.ts +4 -9
  189. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  190. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +258 -4
  191. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  192. package/dist/types/src/components/index.d.ts +5 -2
  193. package/dist/types/src/components/index.d.ts.map +1 -1
  194. package/dist/types/src/events.d.ts +1 -1
  195. package/dist/types/src/events.d.ts.map +1 -1
  196. package/dist/types/src/execution-graph/execution-graph.d.ts +21 -0
  197. package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -0
  198. package/dist/types/src/execution-graph/index.d.ts +2 -0
  199. package/dist/types/src/execution-graph/index.d.ts.map +1 -0
  200. package/dist/types/src/functions/analysis.d.ts +5 -0
  201. package/dist/types/src/functions/analysis.d.ts.map +1 -0
  202. package/dist/types/src/functions/index.d.ts +4 -0
  203. package/dist/types/src/functions/index.d.ts.map +1 -0
  204. package/dist/types/src/functions/list.d.ts +10 -0
  205. package/dist/types/src/functions/list.d.ts.map +1 -0
  206. package/dist/types/src/functions/load.d.ts +8 -0
  207. package/dist/types/src/functions/load.d.ts.map +1 -0
  208. package/dist/types/src/hooks/index.d.ts +10 -3
  209. package/dist/types/src/hooks/index.d.ts.map +1 -1
  210. package/dist/types/src/hooks/useBlueprintRegistry.d.ts +24 -0
  211. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -0
  212. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -20
  213. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  214. package/dist/types/src/hooks/useChatServices.d.ts +4 -5
  215. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  216. package/dist/types/src/hooks/useContextBinder.d.ts +4 -0
  217. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -0
  218. package/dist/types/src/hooks/useContextObjects.d.ts +15 -0
  219. package/dist/types/src/hooks/useContextObjects.d.ts.map +1 -0
  220. package/dist/types/src/hooks/useExecutionGraph.d.ts +7 -0
  221. package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -0
  222. package/dist/types/src/hooks/useFlush.d.ts +6 -0
  223. package/dist/types/src/hooks/useFlush.d.ts.map +1 -0
  224. package/dist/types/src/hooks/useItemTypes.d.ts +4 -0
  225. package/dist/types/src/hooks/useItemTypes.d.ts.map +1 -0
  226. package/dist/types/src/hooks/useMatcherExtension.d.ts +3 -0
  227. package/dist/types/src/hooks/useMatcherExtension.d.ts.map +1 -0
  228. package/dist/types/src/hooks/useOnline.d.ts +3 -0
  229. package/dist/types/src/hooks/useOnline.d.ts.map +1 -0
  230. package/dist/types/src/hooks/usePresets.d.ts +7 -0
  231. package/dist/types/src/hooks/usePresets.d.ts.map +1 -0
  232. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useResolveRef.d.ts +4 -0
  234. package/dist/types/src/hooks/useResolveRef.d.ts.map +1 -0
  235. package/dist/types/src/parser/filter-generator.d.ts.map +1 -1
  236. package/dist/types/src/parser/query-parser.d.ts.map +1 -1
  237. package/dist/types/src/parser/types.d.ts.map +1 -1
  238. package/dist/types/src/processor/index.d.ts +3 -0
  239. package/dist/types/src/processor/index.d.ts.map +1 -0
  240. package/dist/types/src/{hooks → processor}/presets.d.ts +2 -2
  241. package/dist/types/src/processor/presets.d.ts.map +1 -0
  242. package/dist/types/src/processor/processor.d.ts +80 -0
  243. package/dist/types/src/processor/processor.d.ts.map +1 -0
  244. package/dist/types/src/processor/processor.test.d.ts +2 -0
  245. package/dist/types/src/processor/processor.test.d.ts.map +1 -0
  246. package/dist/types/src/stories/Chat.stories.d.ts +23 -246
  247. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
  248. package/dist/types/src/stories/components/BlueprintContainer.d.ts +4 -0
  249. package/dist/types/src/stories/components/BlueprintContainer.d.ts.map +1 -0
  250. package/dist/types/src/stories/components/ChatContainer.d.ts +4 -0
  251. package/dist/types/src/stories/components/ChatContainer.d.ts.map +1 -0
  252. package/dist/types/src/stories/components/CommentsContainer.d.ts +4 -0
  253. package/dist/types/src/stories/components/CommentsContainer.d.ts.map +1 -0
  254. package/dist/types/src/stories/components/GraphContainer.d.ts +6 -0
  255. package/dist/types/src/stories/components/GraphContainer.d.ts.map +1 -0
  256. package/dist/types/src/stories/components/LoggingContainer.d.ts +4 -0
  257. package/dist/types/src/stories/components/LoggingContainer.d.ts.map +1 -0
  258. package/dist/types/src/stories/components/MessageContainer.d.ts +4 -0
  259. package/dist/types/src/stories/components/MessageContainer.d.ts.map +1 -0
  260. package/dist/types/src/stories/components/SurfaceContainer.d.ts +8 -0
  261. package/dist/types/src/stories/components/SurfaceContainer.d.ts.map +1 -0
  262. package/dist/types/src/stories/components/TasksContainer.d.ts +4 -0
  263. package/dist/types/src/stories/components/TasksContainer.d.ts.map +1 -0
  264. package/dist/types/src/stories/components/TokenManagerContainer.d.ts +3 -0
  265. package/dist/types/src/stories/components/TokenManagerContainer.d.ts.map +1 -0
  266. package/dist/types/src/stories/components/index.d.ts +11 -0
  267. package/dist/types/src/stories/components/index.d.ts.map +1 -0
  268. package/dist/types/src/stories/components/types.d.ts +7 -0
  269. package/dist/types/src/stories/components/types.d.ts.map +1 -0
  270. package/dist/types/src/stories/testing/data.d.ts +5 -0
  271. package/dist/types/src/stories/testing/data.d.ts.map +1 -0
  272. package/dist/types/src/stories/testing/index.d.ts +3 -0
  273. package/dist/types/src/stories/testing/index.d.ts.map +1 -0
  274. package/dist/types/src/stories/testing/testing.d.ts +44 -0
  275. package/dist/types/src/stories/testing/testing.d.ts.map +1 -0
  276. package/dist/types/src/testing/index.d.ts +2 -1
  277. package/dist/types/src/testing/index.d.ts.map +1 -1
  278. package/dist/types/src/testing/test-data.d.ts +4 -0
  279. package/dist/types/src/testing/test-data.d.ts.map +1 -0
  280. package/dist/types/src/testing/test-functions.d.ts +5 -2
  281. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  282. package/dist/types/src/testing/test-sequence.d.ts +0 -4
  283. package/dist/types/src/testing/test-sequence.d.ts.map +1 -1
  284. package/dist/types/src/translations.d.ts +27 -21
  285. package/dist/types/src/translations.d.ts.map +1 -1
  286. package/dist/types/src/types/Assistant.d.ts +42 -0
  287. package/dist/types/src/types/Assistant.d.ts.map +1 -0
  288. package/dist/types/src/types/AssistantAction.d.ts +107 -0
  289. package/dist/types/src/types/AssistantAction.d.ts.map +1 -0
  290. package/dist/types/src/types/defs.d.ts +2 -0
  291. package/dist/types/src/types/defs.d.ts.map +1 -0
  292. package/dist/types/src/types/index.d.ts +3 -1
  293. package/dist/types/src/types/index.d.ts.map +1 -1
  294. package/dist/types/src/types/service.d.ts +9 -6
  295. package/dist/types/src/types/service.d.ts.map +1 -1
  296. package/dist/types/tsconfig.tsbuildinfo +1 -1
  297. package/package.json +97 -77
  298. package/src/AssistantPlugin.tsx +74 -12
  299. package/src/capabilities/ai-service.ts +28 -0
  300. package/src/capabilities/app-graph-builder.ts +43 -134
  301. package/src/capabilities/blueprint-definition.ts +42 -0
  302. package/src/capabilities/capabilities.ts +31 -0
  303. package/src/capabilities/edge-model-resolver.ts +27 -0
  304. package/src/capabilities/index.ts +9 -0
  305. package/src/capabilities/intent-resolver.ts +50 -14
  306. package/src/capabilities/local-model-resolver.ts +32 -0
  307. package/src/capabilities/react-surface.tsx +17 -64
  308. package/src/capabilities/state.ts +20 -0
  309. package/src/capabilities/toolkit.ts +163 -0
  310. package/src/components/AssistantSettings/AssistantSettings.tsx +83 -76
  311. package/src/components/BlueprintContainer.tsx +24 -0
  312. package/src/components/Chat/Chat.tsx +171 -165
  313. package/src/components/Chat/events.ts +7 -0
  314. package/src/components/ChatCompanion.tsx +111 -0
  315. package/src/components/ChatContainer.tsx +19 -13
  316. package/src/components/ChatDialog.tsx +11 -7
  317. package/src/components/ChatProgress/ChatProgress.tsx +68 -0
  318. package/src/components/ChatProgress/index.ts +5 -0
  319. package/src/components/ChatPrompt/ChatActions.tsx +10 -24
  320. package/src/components/ChatPrompt/ChatOptions.tsx +233 -0
  321. package/src/components/ChatPrompt/ChatPresets.tsx +1 -0
  322. package/src/components/ChatPrompt/ChatReferences.tsx +31 -36
  323. package/src/components/ChatPrompt/ChatStatusIndicator.tsx +25 -22
  324. package/src/components/ChatPrompt/index.ts +1 -1
  325. package/src/components/ChatThread/ChatMessage.tsx +214 -148
  326. package/src/components/ChatThread/ChatThread.stories.tsx +244 -104
  327. package/src/components/ChatThread/ChatThread.tsx +44 -22
  328. package/src/components/ChatThread/Link.tsx +23 -0
  329. package/src/components/ChatThread/ToolBlock.tsx +103 -77
  330. package/src/components/ChatThread/reducers.ts +151 -0
  331. package/src/components/PromptSettings.tsx +1 -0
  332. package/src/components/SequenceContainer.tsx +27 -28
  333. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +5 -4
  334. package/src/components/SequenceEditor/SequenceEditor.tsx +1 -1
  335. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +27 -14
  336. package/src/components/TemplateEditor/TemplateEditor.tsx +20 -51
  337. package/src/components/TemplateEditor/TemplateForm.stories.tsx +15 -8
  338. package/src/components/TemplateEditor/TemplateForm.tsx +6 -3
  339. package/src/components/TemplateEditor/handlebars-extension.ts +165 -0
  340. package/src/components/Toolbar/Toolbar.tsx +20 -0
  341. package/src/components/Toolbar/index.ts +5 -0
  342. package/src/components/Toolbar/useChatToolbarActions.ts +125 -0
  343. package/src/components/Toolbox/Toolbox.stories.tsx +10 -16
  344. package/src/components/Toolbox/Toolbox.tsx +21 -51
  345. package/src/components/index.ts +4 -5
  346. package/src/events.ts +2 -2
  347. package/src/execution-graph/execution-graph.ts +211 -0
  348. package/src/execution-graph/index.ts +5 -0
  349. package/src/functions/analysis.ts +20 -0
  350. package/src/functions/index.ts +7 -0
  351. package/src/functions/list.ts +46 -0
  352. package/src/functions/load.ts +43 -0
  353. package/src/hooks/index.ts +10 -4
  354. package/src/hooks/useBlueprintRegistry.ts +80 -0
  355. package/src/hooks/useChatProcessor.ts +20 -97
  356. package/src/hooks/useChatServices.ts +34 -61
  357. package/src/hooks/useContextBinder.ts +18 -0
  358. package/src/hooks/useContextObjects.ts +58 -0
  359. package/src/hooks/useExecutionGraph.ts +20 -0
  360. package/src/hooks/useFlush.ts +35 -0
  361. package/src/hooks/useItemTypes.ts +37 -0
  362. package/src/hooks/useMatcherExtension.ts +45 -0
  363. package/src/hooks/useOnline.ts +10 -0
  364. package/src/hooks/usePresets.ts +44 -0
  365. package/src/hooks/useReferencesProvider.ts +11 -9
  366. package/src/hooks/useResolveRef.ts +33 -0
  367. package/src/meta.ts +1 -1
  368. package/src/parser/filter-generator.ts +8 -13
  369. package/src/parser/query-parser.ts +1 -1
  370. package/src/parser/types.ts +2 -0
  371. package/src/processor/index.ts +6 -0
  372. package/src/{hooks → processor}/presets.ts +14 -6
  373. package/src/processor/processor.test.ts +77 -0
  374. package/src/processor/processor.ts +304 -0
  375. package/src/queue-logger.ts +5 -5
  376. package/src/stories/Chat.stories.tsx +389 -298
  377. package/src/stories/components/BlueprintContainer.tsx +32 -0
  378. package/src/stories/components/ChatContainer.tsx +57 -0
  379. package/src/stories/components/CommentsContainer.tsx +25 -0
  380. package/src/stories/components/GraphContainer.tsx +118 -0
  381. package/src/stories/components/LoggingContainer.tsx +21 -0
  382. package/src/stories/components/MessageContainer.tsx +27 -0
  383. package/src/stories/components/SurfaceContainer.tsx +52 -0
  384. package/src/stories/components/TasksContainer.tsx +49 -0
  385. package/src/stories/components/TokenManagerContainer.tsx +14 -0
  386. package/src/stories/components/index.ts +15 -0
  387. package/src/stories/components/types.ts +11 -0
  388. package/src/stories/testing/data.ts +142 -0
  389. package/src/stories/testing/index.ts +6 -0
  390. package/src/stories/testing/testing.tsx +254 -0
  391. package/src/testing/index.ts +2 -1
  392. package/src/testing/test-data.ts +109 -0
  393. package/src/testing/test-functions.ts +8 -3
  394. package/src/testing/test-sequence.ts +2 -27
  395. package/src/translations.ts +31 -21
  396. package/src/types/Assistant.ts +61 -0
  397. package/src/types/AssistantAction.ts +62 -0
  398. package/src/types/defs.ts +5 -0
  399. package/src/types/index.ts +4 -1
  400. package/src/vite-env.d.ts +30 -0
  401. package/dist/lib/browser/ChatContainer-M3IHQLRS.mjs.map +0 -7
  402. package/dist/lib/browser/ChatDialog-X6VN6QZI.mjs.map +0 -7
  403. package/dist/lib/browser/SequenceContainer-3UDVKWPA.mjs.map +0 -7
  404. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
  405. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
  406. package/dist/lib/browser/chunk-AEAEKWOC.mjs +0 -98
  407. package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
  408. package/dist/lib/browser/chunk-EQDW6BYQ.mjs +0 -108
  409. package/dist/lib/browser/chunk-EQDW6BYQ.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-FDCJSQYF.mjs +0 -40
  411. package/dist/lib/browser/chunk-JQBVLTM5.mjs +0 -158
  412. package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
  413. package/dist/lib/browser/chunk-OWY4CUQY.mjs +0 -2245
  414. package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
  415. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs +0 -60
  416. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
  417. package/dist/lib/browser/react-surface-66VY37YQ.mjs +0 -150
  418. package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
  419. package/dist/lib/node-esm/ChatContainer-VZT74PO2.mjs.map +0 -7
  420. package/dist/lib/node-esm/ChatDialog-RJ6FDX4Q.mjs.map +0 -7
  421. package/dist/lib/node-esm/SequenceContainer-RQQH5XOC.mjs.map +0 -7
  422. package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
  423. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
  424. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs +0 -99
  425. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
  426. package/dist/lib/node-esm/chunk-BISJDTBK.mjs +0 -159
  427. package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
  428. package/dist/lib/node-esm/chunk-E33DNNDW.mjs +0 -109
  429. package/dist/lib/node-esm/chunk-E33DNNDW.mjs.map +0 -7
  430. package/dist/lib/node-esm/chunk-QN2H2EHV.mjs +0 -41
  431. package/dist/lib/node-esm/chunk-SENTQAEO.mjs +0 -2246
  432. package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
  433. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs +0 -61
  434. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
  435. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs +0 -151
  436. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
  437. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts +0 -9
  438. package/dist/types/src/components/ChatPrompt/ChatOptionsMenu.d.ts.map +0 -1
  439. package/dist/types/src/components/ChatThread/reducer.d.ts +0 -12
  440. package/dist/types/src/components/ChatThread/reducer.d.ts.map +0 -1
  441. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  442. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  443. package/dist/types/src/hooks/chat-processor.d.ts +0 -86
  444. package/dist/types/src/hooks/chat-processor.d.ts.map +0 -1
  445. package/dist/types/src/hooks/chat-processor.test.d.ts +0 -2
  446. package/dist/types/src/hooks/chat-processor.test.d.ts.map +0 -1
  447. package/dist/types/src/hooks/presets.d.ts.map +0 -1
  448. package/dist/types/src/hooks/useBlueprints.d.ts +0 -9
  449. package/dist/types/src/hooks/useBlueprints.d.ts.map +0 -1
  450. package/dist/types/src/tools/function.d.ts +0 -5
  451. package/dist/types/src/tools/function.d.ts.map +0 -1
  452. package/dist/types/src/tools/index.d.ts +0 -3
  453. package/dist/types/src/tools/index.d.ts.map +0 -1
  454. package/dist/types/src/tools/openapi.d.ts +0 -10
  455. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  456. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  457. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  458. package/dist/types/src/types/schema.d.ts +0 -88
  459. package/dist/types/src/types/schema.d.ts.map +0 -1
  460. package/src/components/ChatPrompt/ChatOptionsMenu.tsx +0 -52
  461. package/src/components/ChatThread/reducer.ts +0 -52
  462. package/src/components/TemplateContainer.tsx +0 -24
  463. package/src/hooks/chat-processor.test.ts +0 -16
  464. package/src/hooks/chat-processor.ts +0 -314
  465. package/src/hooks/useBlueprints.ts +0 -57
  466. package/src/shims.d.ts +0 -8
  467. package/src/tools/function.ts +0 -46
  468. package/src/tools/index.ts +0 -6
  469. package/src/tools/openapi.test.ts +0 -217
  470. package/src/tools/openapi.ts +0 -338
  471. package/src/types/schema.ts +0 -95
  472. package/src/typings.d.ts +0 -9
@@ -1,314 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Signal, batch, computed, signal } from '@preact/signals-core';
6
- import { Effect, type Layer } from 'effect';
7
-
8
- import { AiService, DEFAULT_EDGE_MODEL, type ExecutableTool, type GenerateRequest } from '@dxos/ai';
9
- import { type PromiseIntentDispatcher } from '@dxos/app-framework';
10
- import { type AiSession, ArtifactDiffResolver, type ContextBinder, type Conversation } from '@dxos/assistant';
11
- import { type ArtifactDefinition, type Blueprint } from '@dxos/blueprints';
12
- import { Context } from '@dxos/context';
13
- import { Obj } from '@dxos/echo';
14
- import { runAndForwardErrors } from '@dxos/effect';
15
- import { log } from '@dxos/log';
16
- import { Filter, type Space, getVersion } from '@dxos/react-client/echo';
17
- import { DataType } from '@dxos/schema';
18
-
19
- import type { ChatServices } from './useChatServices';
20
-
21
- // TODO(burdon): Factor out.
22
- declare global {
23
- interface ToolContextExtensions {
24
- space?: Space;
25
- dispatch?: PromiseIntentDispatcher;
26
- }
27
- }
28
-
29
- type RequestOptions = {
30
- // Empty for now.
31
- };
32
-
33
- export type ChatProcessorOptions = {
34
- // TODO(burdon): Change to AiToolkit.
35
- tools?: readonly ExecutableTool[];
36
- blueprintRegistry?: Blueprint.Registry;
37
-
38
- // TODO(dmaretskyi): Remove.
39
- artifacts?: readonly ArtifactDefinition[];
40
- extensions?: ToolContextExtensions;
41
- // TODO(burdon): Remove systemPrompt -- should come from blueprint.
42
- } & Pick<GenerateRequest, 'model' | 'systemPrompt'>;
43
-
44
- const defaultOptions: Partial<ChatProcessorOptions> = {
45
- model: DEFAULT_EDGE_MODEL,
46
- systemPrompt: 'you are a helpful assistant',
47
- };
48
-
49
- /**
50
- * Handles interactions with the AI service.
51
- * Maintains a queue of messages and handles streaming responses from the AI service.
52
- * Executes tools based on AI responses.
53
- * Supports cancellation of in-progress requests.
54
- */
55
- // TODO(burdon): Rename ChatContext?
56
- export class ChatProcessor {
57
- /**
58
- * Pending messages (incl. the current user request).
59
- * @reactive
60
- */
61
- private readonly _pending: Signal<DataType.Message[]> = signal([]);
62
-
63
- /**
64
- * Current streaming message (from the AI service).
65
- * @reactive
66
- */
67
- private readonly _streaming: Signal<DataType.Message | undefined> = signal(undefined);
68
-
69
- /**
70
- * Streaming state.
71
- * @reactive
72
- */
73
- public readonly streaming: Signal<boolean> = computed(() => this._streaming.value !== undefined);
74
-
75
- /**
76
- * Last error.
77
- * @reactive
78
- */
79
- public readonly error: Signal<Error | undefined> = signal(undefined);
80
-
81
- /**
82
- * Array of Messages (incl. the current message being streamed).
83
- * @reactive
84
- */
85
- public readonly messages: Signal<DataType.Message[]> = computed(() => {
86
- const messages = [...this._pending.value];
87
- if (this._streaming.value) {
88
- // TODO(dmaretskyi): Replace with Obj.clone.
89
- // NOTE: We have to clone the message here so that react will re-render.
90
- messages.push(Obj.make(DataType.Message, this._streaming.value));
91
- }
92
-
93
- return messages;
94
- });
95
-
96
- // TODO(burdon): Replace with Toolkit.
97
- private _tools?: ExecutableTool[];
98
-
99
- /** Current session. */
100
- private _session: AiSession | undefined = undefined;
101
-
102
- constructor(
103
- // TODO(dmaretskyi): Replace this with effect's ManagedRuntime wrapping this layer.
104
- private readonly _services: Layer.Layer<ChatServices>,
105
- private readonly _conversation: Conversation,
106
- private readonly _options: ChatProcessorOptions = defaultOptions,
107
- ) {
108
- this._tools = [...(_options.tools ?? [])];
109
- }
110
-
111
- get conversation() {
112
- return this._conversation;
113
- }
114
-
115
- get context(): ContextBinder {
116
- return this._conversation.context;
117
- }
118
-
119
- get blueprintRegistry() {
120
- return this._options.blueprintRegistry;
121
- }
122
-
123
- get tools() {
124
- return this._tools;
125
- }
126
-
127
- /**
128
- * @deprecated Replace with blueprints
129
- */
130
- setTools(tools: ExecutableTool[]): void {
131
- this._tools = tools;
132
- }
133
-
134
- /**
135
- * Make GPT request.
136
- */
137
- async request(message: string, options: RequestOptions = {}): Promise<DataType.Message[]> {
138
- await using ctx = Context.default(); // Auto-disposed at the end of this block.
139
-
140
- this._conversation.onBegin.on(ctx, (session) => {
141
- log.info('onBegin', { session, isDisposed: ctx.disposed });
142
-
143
- this._session = session;
144
- ctx.onDispose(() => {
145
- log.info('onDispose', { session, isDisposed: ctx.disposed });
146
- if (this._session === session) {
147
- this._session = undefined;
148
- }
149
- });
150
-
151
- // User message.
152
- session.userMessage.on((message) => {
153
- log.info('userMessage', { message });
154
- this._pending.value = [...this._pending.value, message];
155
- });
156
-
157
- // Message complete.
158
- session.message.on((message) => {
159
- batch(() => {
160
- this._pending.value = [...this._pending.value, message];
161
- this._streaming.value = undefined;
162
- });
163
- });
164
-
165
- // Streaming update (happens before message complete).
166
- session.update.on((block) => {
167
- batch(() => {
168
- if (!this._streaming.value) {
169
- // TODO(burdon): Hack to create temp message; better for session to send initial partial object?
170
- this._streaming.value = Obj.make(DataType.Message, {
171
- created: new Date().toISOString(),
172
- sender: { role: 'assistant' },
173
- blocks: [block],
174
- });
175
- } else if (this._streaming.value.blocks.at(-1)?.pending === true) {
176
- this._streaming.value.blocks[this._streaming.value.blocks.length - 1] = block;
177
- } else {
178
- this._streaming.value.blocks.push(block);
179
- }
180
- });
181
- });
182
-
183
- session.block.on((block) => {
184
- if (!this._streaming.value) {
185
- // TODO(burdon): Hack to create temp message; better for session to send initial partial object?
186
- this._streaming.value = Obj.make(DataType.Message, {
187
- created: new Date().toISOString(),
188
- sender: { role: 'assistant' },
189
- blocks: [block],
190
- });
191
- } else if (this._streaming.value.blocks.at(-1)?.pending === true) {
192
- this._streaming.value.blocks[this._streaming.value.blocks.length - 1] = block;
193
- } else {
194
- this._streaming.value.blocks.push(block);
195
- }
196
- });
197
-
198
- // TODO(dmaretskyi): Handle tool status reports.
199
- // session.toolStatusReport.on(({ message, status }) => {
200
- // const msg = this._pending.peek().find((m) => m.id === message.id);
201
- // const toolUse = msg?.content.find((block) => block.type === 'tool_use');
202
- // if (!toolUse) {
203
- // return;
204
- // }
205
-
206
- // const block = msg?.content.find(
207
- // (block): block is ToolUseContentBlock => block.type === 'tool_use' && block.id === toolUse.id,
208
- // );
209
- // if (block) {
210
- // this._pending.value = this._pending.value.map((m) => {
211
- // if (m.id === message.id) {
212
- // return {
213
- // ...m,
214
- // content: m.content.map((block) =>
215
- // block.type === 'tool_use' && block.id === toolUse.id ? { ...block, currentStatus: status } : block,
216
- // ),
217
- // };
218
- // }
219
-
220
- // return m;
221
- // });
222
- // } else {
223
- // log.warn('no block for status report');
224
- // }
225
- // });
226
- });
227
-
228
- try {
229
- const messages = await runAndForwardErrors(
230
- this._conversation
231
- .run({
232
- prompt: message,
233
- // TODO(burdon): Construct from blueprints?
234
- systemPrompt: this._options.systemPrompt,
235
- })
236
- .pipe(
237
- //
238
- Effect.provide(AiService.model(this._options.model ?? DEFAULT_EDGE_MODEL)),
239
- // TODO(dmaretskyi): Move ArtifactDiffResolver upstream.
240
- Effect.provideService(ArtifactDiffResolver, this._artifactDiffResolver),
241
- Effect.provide(this._services),
242
- Effect.tapErrorCause((cause) => {
243
- log.error('error', { cause });
244
- return Effect.void;
245
- }),
246
- ),
247
- );
248
-
249
- log('completed', { messages });
250
- } catch (err) {
251
- log.catch(err);
252
- if (err instanceof Error && err.message.includes('Overloaded')) {
253
- this.error.value = new AiServiceOverloadedError('AI service overloaded', { cause: err });
254
- } else {
255
- this.error.value = new Error('AI service error', { cause: err });
256
- }
257
- }
258
-
259
- return this._reset();
260
- }
261
-
262
- /**
263
- * Cancel pending requests.
264
- * @returns Pending requests (incl. the request message).
265
- */
266
- async cancel(): Promise<DataType.Message[]> {
267
- log.info('cancelling...');
268
-
269
- // TODO(dmaretskyi): Conversation should handle aborting.
270
- this._session?.abort();
271
- return this._reset();
272
- }
273
-
274
- private async _reset(): Promise<DataType.Message[]> {
275
- const messages = this._pending.value;
276
- batch(() => {
277
- this._pending.value = [];
278
- this._streaming.value = undefined;
279
- });
280
-
281
- return messages;
282
- }
283
-
284
- private _artifactDiffResolver: ArtifactDiffResolver.Service = {
285
- resolve: async (artifacts) => {
286
- const space = this._options.extensions?.space;
287
- if (!space) {
288
- return new Map();
289
- }
290
-
291
- const versions = new Map();
292
- await Promise.all(
293
- artifacts.map(async (artifact) => {
294
- const {
295
- objects: [object],
296
- } = await space.db.query(Filter.ids(artifact.id)).run();
297
- if (!object) {
298
- return;
299
- }
300
- versions.set(artifact.id, {
301
- version: getVersion(object),
302
- diff: `Current state: ${JSON.stringify(object)}`,
303
- });
304
- }),
305
- );
306
- return versions;
307
- },
308
- };
309
- }
310
-
311
- // TODO(wittjosiah): Move to ai-service-client.
312
- export class AiServiceOverloadedError extends Error {
313
- code = 'AI_SERVICE_OVERLOADED';
314
- }
@@ -1,57 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { effect } from '@preact/signals-react';
6
- import { useCallback, useEffect, useState } from 'react';
7
-
8
- import { type ContextBinder } from '@dxos/assistant';
9
- import { Blueprint } from '@dxos/blueprints';
10
- import { type Space } from '@dxos/client/echo';
11
- import { Obj, Ref } from '@dxos/echo';
12
- import { log } from '@dxos/log';
13
- import { isNonNullable } from '@dxos/util';
14
-
15
- export type UpdateCallback = (key: string, active: boolean) => void;
16
-
17
- /**
18
- * Get collection of active blueprints based on the context.
19
- */
20
- export const useBlueprints = (
21
- space: Space,
22
- context: ContextBinder,
23
- blueprintRegistry?: Blueprint.Registry,
24
- ): [Blueprint.Blueprint[], UpdateCallback] => {
25
- const [blueprints, setBlueprints] = useState<Blueprint.Blueprint[]>([]);
26
- useEffect(() => {
27
- let t: NodeJS.Timeout;
28
- effect(() => {
29
- const refs = [...(context.blueprints.value ?? [])];
30
- t = setTimeout(async () => {
31
- const blueprints = (await Ref.Array.loadAll(refs)).filter(isNonNullable);
32
- setBlueprints(blueprints);
33
- });
34
- });
35
-
36
- return () => clearTimeout(t);
37
- }, [context]);
38
-
39
- const handleUpdate = useCallback<UpdateCallback>(
40
- (key: string, active: boolean) => {
41
- log.info('update', { key, active });
42
- if (active) {
43
- // TODO(burdon): Check if already in space.
44
- const blueprint = blueprintRegistry?.getByKey(key);
45
- if (blueprint) {
46
- // TODO(dmaretskyi): This should be done by Obj.clone.
47
- const { id: _id, ...data } = blueprint;
48
- const obj = space.db.add(Obj.make(Blueprint.Blueprint, data));
49
- void context.bind({ blueprints: [Ref.make(obj)] });
50
- }
51
- }
52
- },
53
- [space, context],
54
- );
55
-
56
- return [blueprints, handleUpdate] as const;
57
- };
package/src/shims.d.ts DELETED
@@ -1,8 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- declare module '*?raw' {
6
- const content: string;
7
- export default content;
8
- }
@@ -1,46 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { createTool, type ExecutableTool, ToolResult } from '@dxos/ai';
6
- import { Type } from '@dxos/echo';
7
- import { getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';
8
- import { type FunctionType } from '@dxos/functions';
9
- import { log } from '@dxos/log';
10
- import { type SpaceId } from '@dxos/react-client/echo';
11
- import { getMeta } from '@dxos/react-client/echo';
12
-
13
- // TODO(burdon): Move to @dxos/ai.
14
- export const convertFunctionToTool = (
15
- fn: FunctionType,
16
- edgeUrl: string,
17
- spaceId?: SpaceId | undefined,
18
- ): ExecutableTool | undefined => {
19
- if (!fn.description || !fn.inputSchema) {
20
- return undefined;
21
- }
22
- const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));
23
- if (!existingFunctionUrl) {
24
- return undefined;
25
- }
26
-
27
- const url = getInvocationUrl(existingFunctionUrl, edgeUrl, { spaceId });
28
-
29
- return createTool('user-function', {
30
- name: fn.name,
31
- description: fn.description,
32
- schema: Type.toEffectSchema(fn.inputSchema),
33
- execute: async (input) => {
34
- log.info('execute function tool', { name: fn.name, url, input });
35
- const response = await fetch(url, {
36
- method: 'POST',
37
- headers: {
38
- 'Content-Type': 'application/json',
39
- },
40
- body: JSON.stringify(input),
41
- });
42
-
43
- return ToolResult.Success(await response.text());
44
- },
45
- });
46
- };
@@ -1,6 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './function';
6
- export * from './openapi';
@@ -1,217 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, expect, test } from 'vitest';
6
-
7
- import { log } from '@dxos/log';
8
-
9
- import { createToolsFromApi, resolveAuthorization } from './openapi';
10
- import { ChatProcessor } from '../hooks';
11
- import { type ApiAuthorization } from '../types';
12
-
13
- describe.skip('openapi', () => {
14
- describe.skip('mapping', () => {
15
- test('amadeus flight availabilities', async () => {
16
- const tools = await createToolsFromApi(FLIGHT_SEARCH_API);
17
- log.info('tools', { tools });
18
- // for (const tool of tools) {
19
- // const schema = tool.parameters;
20
- // // log.info('schema', { schema });
21
- // }
22
- });
23
-
24
- test('amadeus hotel search', async () => {
25
- const tools = await createToolsFromApi(HOTEL_SEARCH_API);
26
- log.info('tools', { tools });
27
- });
28
-
29
- test('amadeus hotel name autocomplete', async () => {
30
- const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API);
31
- log.info('tools', { tools });
32
- });
33
-
34
- test('weather', async () => {
35
- const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
36
- log.info('tools', { tools });
37
- });
38
- });
39
-
40
- describe.skip('invoke tools', () => {
41
- test('amadeus hotel name autocomplete', async () => {
42
- const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
43
- const result = await tools[0].execute(
44
- {
45
- keyword: 'William Vale Brooklyn',
46
- subType: ['HOTEL_LEISURE', 'HOTEL_GDS'],
47
- countryCode: 'US',
48
- },
49
- {},
50
- );
51
-
52
- log.info('result', { result });
53
- });
54
-
55
- test('weather API', async () => {
56
- const tools = await createToolsFromApi(WEATHER_API, { authorization: VISUAL_CROSSING_CREDENTIALS });
57
- const forecastTool = tools.find((tool) => tool.name.includes('forecast'));
58
- const result = await forecastTool?.execute(
59
- {
60
- locations: 'Brooklyn, NY',
61
- aggregateHours: '24',
62
- },
63
- {},
64
- );
65
-
66
- log.info('result', { result });
67
- });
68
- });
69
-
70
- describe.skip('AI uses tools', () => {
71
- test('amadeus flight availabilities', { timeout: 60_000 }, async () => {
72
- const tools = await createToolsFromApi(FLIGHT_SEARCH_API, { authorization: AMADEUS_AUTH });
73
- // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
74
- // TODO(dmaretskyi): FIX ME.
75
- const processor = new ChatProcessor(null as any, null as any, { tools });
76
- const reply = await processor.request(
77
- `What is the cheapest flight from New York to Paris? going on ${new Date().toISOString()} and returning after a week. 1 adult traveler`,
78
- );
79
-
80
- log.info('reply', { reply });
81
- });
82
-
83
- // TODO(dmaretskyi): Doesn't work.
84
- test('amadeus hotel name autocomplete', { timeout: 60_000 }, async () => {
85
- const tools = await createToolsFromApi(HOTEL_NAME_AUTOCOMPLETE_API, { authorization: AMADEUS_AUTH });
86
- // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
87
- // TODO(dmaretskyi): FIX ME.
88
- const processor = new ChatProcessor(null as any, null as any, { tools });
89
- const reply = await processor.request('Find me the William Wale in Brooklyn New York');
90
-
91
- log.info('reply', { reply });
92
- });
93
-
94
- test.only('weather forecast', { timeout: 60_000 }, async () => {
95
- const tools = await createToolsFromApi(WEATHER_API, {
96
- authorization: VISUAL_CROSSING_CREDENTIALS,
97
- instructions: WEATHER_INSTRUCTIONS,
98
- });
99
- // const aiClient = new Edge AiServiceClient({ endpoint: AI_SERVICE_ENDPOINT.LOCAL });
100
- // TODO(dmaretskyi): FIX ME.
101
- const processor = new ChatProcessor(null as any, null as any, { tools });
102
- const reply = await processor.request(
103
- `Today's date is ${new Date().toISOString().split('T')[0]}. Give me weather forecast for Warsaw for next 5 days.`,
104
- );
105
-
106
- log.info('reply', { reply });
107
- });
108
- });
109
-
110
- describe.skip('invoke api directly', { timeout: 10_000 }, () => {
111
- test('amadeus flight availabilities', async () => {
112
- const response = await fetch('https://test.api.amadeus.com/v1/shopping/availability/flight-availabilities', {
113
- method: 'POST',
114
- headers: {
115
- accept: 'application/vnd.amadeus+json',
116
- 'X-HTTP-Method-Override': 'GET',
117
- 'Content-Type': 'application/vnd.amadeus+json',
118
- Authorization: await resolveAuthorization(AMADEUS_AUTH),
119
- },
120
- body: JSON.stringify({
121
- originDestinations: [
122
- {
123
- departureDateTime: {
124
- date: new Date().toISOString().split('T')[0],
125
- time: new Date().toTimeString().split(' ')[0],
126
- },
127
- destinationLocationCode: 'MAD',
128
- id: '1',
129
- originLocationCode: 'BOS',
130
- },
131
- ],
132
- sources: ['GDS'],
133
- travelers: [
134
- {
135
- id: '1',
136
- travelerType: 'ADULT',
137
- },
138
- ],
139
- }),
140
- });
141
-
142
- log.info('response', { status: response.status, body: await response.json() });
143
- expect(response.status).toBe(200);
144
- });
145
-
146
- test.only('amadeus hotel name autocomplete', async () => {
147
- const response = await fetch(
148
- 'https://test.api.amadeus.com/v1/reference-data/locations/hotel?keyword=PARI&subtype=HOTEL_LEISURE,HOTEL_GDS',
149
- {
150
- method: 'GET',
151
- headers: {
152
- // accept: 'application/vnd.amadeus+json',
153
- // 'X-HTTP-Method-Override': 'GET',
154
- Authorization: await resolveAuthorization(AMADEUS_AUTH),
155
- },
156
- },
157
- );
158
-
159
- log.info('response', { status: response.status, body: await response.json() });
160
- expect(response.status).toBe(200);
161
- });
162
- });
163
-
164
- describe.skip('rapidapi', () => {
165
- test('amadeus flight availabilities', async () => {
166
- const departureDate = new Date().toISOString().split('T')[0];
167
- const arrivalDate = new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];
168
-
169
- const url = `https://amadeus-api2.p.rapidapi.com/serpapi-flight-search?departure_id=PEK&arrival_id=AUS&outbound_date=${departureDate}&return_date=${arrivalDate}&currency=USD&hl=en`;
170
- const options = {
171
- method: 'GET',
172
- headers: {
173
- 'x-rapidapi-key': RAPID_API_CREDENTIALS.key,
174
- 'x-rapidapi-host': 'amadeus-api2.p.rapidapi.com',
175
- },
176
- };
177
-
178
- const response = await fetch(url, options);
179
- log.info('response', { status: response.status, body: await response.json() });
180
- expect(response.status).toBe(200);
181
- });
182
- });
183
- });
184
-
185
- const FLIGHT_SEARCH_API =
186
- 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-flight-availabilities-search/1.0.2/swagger.json';
187
- const HOTEL_SEARCH_API = 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-search/3.0.8/swagger.json';
188
- const HOTEL_NAME_AUTOCOMPLETE_API =
189
- 'https://api.apis.guru/v2/specs/amadeus.com/amadeus-hotel-name-autocomplete/1.0.3/swagger.json';
190
- const WEATHER_API = 'https://api.apis.guru/v2/specs/visualcrossing.com/weather/4.6/openapi.json';
191
-
192
- const WEATHER_INSTRUCTIONS = `
193
- If the user doesn't provide a date, use today's date.
194
- Make sure to provide the start and end dates when possible to reduce the amount of data returned.
195
- Use the tool that accepts the date parameters.
196
- `;
197
-
198
- const AMADEUS_AUTH: ApiAuthorization = {
199
- type: 'oauth',
200
- clientId: 'BOEnpLd1sMyKjAPGKYeAPFFy60u53QEG',
201
- clientSecret: 'n4qldSN7usvD57gm',
202
- tokenUrl: 'https://test.api.amadeus.com/v1/security/oauth2/token',
203
- grantType: 'client_credentials',
204
- };
205
-
206
- const VISUAL_CROSSING_CREDENTIALS: ApiAuthorization = {
207
- type: 'api-key',
208
- key: 'FDPRVS953KB4GQQLD25GRT975',
209
- placement: {
210
- type: 'query',
211
- name: 'key',
212
- },
213
- };
214
-
215
- const RAPID_API_CREDENTIALS = {
216
- key: '92271b6740msh32fd821d70f050dp16665bjsna69195c9e838',
217
- };