@dxos/plugin-assistant 0.8.4-main.406dc2a → 0.8.4-main.548089c

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 (318) hide show
  1. package/dist/lib/browser/BlueprintArticle-UGPRZRBG.mjs +36 -0
  2. package/dist/lib/browser/BlueprintArticle-UGPRZRBG.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatCompanion-BDZ55ZRF.mjs → ChatCompanion-BZGANK56.mjs} +58 -50
  4. package/dist/lib/browser/ChatCompanion-BZGANK56.mjs.map +7 -0
  5. package/dist/lib/browser/{ChatContainer-RYGNN73X.mjs → ChatContainer-OG6Y3NHI.mjs} +22 -18
  6. package/dist/lib/browser/ChatContainer-OG6Y3NHI.mjs.map +7 -0
  7. package/dist/lib/browser/{ChatDialog-MVHH2U66.mjs → ChatDialog-NKNUCC3R.mjs} +8 -4
  8. package/dist/lib/browser/ChatDialog-NKNUCC3R.mjs.map +7 -0
  9. package/dist/lib/browser/PromptArticle-QNJAXD5Y.mjs +89 -0
  10. package/dist/lib/browser/PromptArticle-QNJAXD5Y.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-builder-2U7SLCRX.mjs → app-graph-builder-CJ5ZUG5I.mjs} +62 -17
  12. package/dist/lib/browser/app-graph-builder-CJ5ZUG5I.mjs.map +7 -0
  13. package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs → blueprint-definition-5FT5JGPY.mjs} +4 -4
  14. package/dist/lib/browser/chunk-AO6XHMQ7.mjs +262 -0
  15. package/dist/lib/browser/chunk-AO6XHMQ7.mjs.map +7 -0
  16. package/dist/lib/browser/{chunk-FP56WB24.mjs → chunk-BNTPFZ7O.mjs} +30 -13
  17. package/dist/lib/browser/chunk-BNTPFZ7O.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs +335 -0
  19. package/dist/lib/browser/chunk-FJQ4ZRYJ.mjs.map +7 -0
  20. package/dist/lib/browser/{chunk-2CE2KPKZ.mjs → chunk-IXIIS4QA.mjs} +37 -36
  21. package/dist/lib/browser/chunk-IXIIS4QA.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-5EGXHCAZ.mjs → chunk-LRE4VEZV.mjs} +2 -2
  23. package/dist/lib/browser/chunk-LRE4VEZV.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-WBG5PTSX.mjs +23 -0
  25. package/dist/lib/browser/chunk-WBG5PTSX.mjs.map +7 -0
  26. package/dist/lib/browser/{chunk-WRJGOT5P.mjs → chunk-Y4C2CMME.mjs} +772 -620
  27. package/dist/lib/browser/chunk-Y4C2CMME.mjs.map +7 -0
  28. package/dist/lib/browser/index.mjs +78 -62
  29. package/dist/lib/browser/index.mjs.map +3 -3
  30. package/dist/lib/browser/{intent-resolver-3GOJMBXJ.mjs → intent-resolver-42A4SLIQ.mjs} +49 -20
  31. package/dist/lib/browser/intent-resolver-42A4SLIQ.mjs.map +7 -0
  32. package/dist/lib/browser/{local-model-resolver-GO6ZEMLL.mjs → local-model-resolver-34MVHRKD.mjs} +2 -2
  33. package/dist/lib/browser/{local-model-resolver-GO6ZEMLL.mjs.map → local-model-resolver-34MVHRKD.mjs.map} +2 -2
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-surface-FTKCE6GG.mjs → react-surface-TULJF2Y3.mjs} +22 -31
  36. package/dist/lib/browser/react-surface-TULJF2Y3.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-HBF32KV6.mjs → settings-NYJGNQ5I.mjs} +3 -3
  38. package/dist/lib/browser/{state-LXTS54DI.mjs → state-GG7Z3NB7.mjs} +7 -3
  39. package/dist/lib/browser/{state-LXTS54DI.mjs.map → state-GG7Z3NB7.mjs.map} +3 -3
  40. package/dist/lib/browser/toolkit-VYDAWNE4.mjs +17 -0
  41. package/dist/lib/browser/toolkit-VYDAWNE4.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +2 -2
  43. package/dist/lib/node-esm/BlueprintArticle-RPZ2363K.mjs +37 -0
  44. package/dist/lib/node-esm/BlueprintArticle-RPZ2363K.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ChatCompanion-XFNXVZIP.mjs → ChatCompanion-LKWZTSCI.mjs} +58 -50
  46. package/dist/lib/node-esm/ChatCompanion-LKWZTSCI.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ChatContainer-UTJGCQXF.mjs → ChatContainer-HGAAKVB3.mjs} +22 -18
  48. package/dist/lib/node-esm/ChatContainer-HGAAKVB3.mjs.map +7 -0
  49. package/dist/lib/node-esm/{ChatDialog-QEYZ4IOV.mjs → ChatDialog-QA545GGB.mjs} +8 -4
  50. package/dist/lib/node-esm/ChatDialog-QA545GGB.mjs.map +7 -0
  51. package/dist/lib/node-esm/PromptArticle-JW46XL4M.mjs +90 -0
  52. package/dist/lib/node-esm/PromptArticle-JW46XL4M.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-OKNLR7H2.mjs → app-graph-builder-XPQLG755.mjs} +62 -17
  54. package/dist/lib/node-esm/app-graph-builder-XPQLG755.mjs.map +7 -0
  55. package/dist/lib/node-esm/{blueprint-definition-WD2IVMAI.mjs → blueprint-definition-XW6QQVLV.mjs} +4 -4
  56. package/dist/lib/node-esm/chunk-3YVWS6OI.mjs +264 -0
  57. package/dist/lib/node-esm/chunk-3YVWS6OI.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-TNR46C3L.mjs → chunk-AB74FOA2.mjs} +30 -13
  59. package/dist/lib/node-esm/chunk-AB74FOA2.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs +336 -0
  61. package/dist/lib/node-esm/chunk-KJGD4EBJ.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-U2NYUS2N.mjs → chunk-UXTUHH24.mjs} +37 -36
  63. package/dist/lib/node-esm/chunk-UXTUHH24.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-UFKLCEAE.mjs → chunk-VI6S3Q5H.mjs} +772 -620
  65. package/dist/lib/node-esm/chunk-VI6S3Q5H.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-73ABYRYX.mjs → chunk-WE6KTH72.mjs} +7 -2
  67. package/dist/lib/node-esm/chunk-WE6KTH72.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-XQGWSZ4T.mjs → chunk-YWFWT57N.mjs} +2 -2
  69. package/dist/lib/node-esm/chunk-YWFWT57N.mjs.map +7 -0
  70. package/dist/lib/node-esm/index.mjs +78 -62
  71. package/dist/lib/node-esm/index.mjs.map +3 -3
  72. package/dist/lib/node-esm/{intent-resolver-6XLVTRDJ.mjs → intent-resolver-Y6I3IDSI.mjs} +49 -20
  73. package/dist/lib/node-esm/intent-resolver-Y6I3IDSI.mjs.map +7 -0
  74. package/dist/lib/node-esm/{local-model-resolver-WOQ2D2R2.mjs → local-model-resolver-TP2NTSAX.mjs} +2 -2
  75. package/dist/lib/node-esm/{local-model-resolver-WOQ2D2R2.mjs.map → local-model-resolver-TP2NTSAX.mjs.map} +2 -2
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/{react-surface-K7ZXQLAP.mjs → react-surface-C4WY3WRR.mjs} +22 -31
  78. package/dist/lib/node-esm/react-surface-C4WY3WRR.mjs.map +7 -0
  79. package/dist/lib/node-esm/{settings-CWP6MTWP.mjs → settings-RRHYI5KO.mjs} +3 -3
  80. package/dist/lib/node-esm/{state-BO6GUFLB.mjs → state-FSUHFMDM.mjs} +7 -3
  81. package/dist/lib/node-esm/{state-BO6GUFLB.mjs.map → state-FSUHFMDM.mjs.map} +3 -3
  82. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs +18 -0
  83. package/dist/lib/node-esm/toolkit-HFJZLVIR.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +2 -2
  85. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/blueprint-definition.d.ts +1 -1
  88. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/capabilities.d.ts +2 -3
  90. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/toolkit.d.ts +1 -1
  95. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -1
  96. package/dist/types/src/components/BlueprintArticle.d.ts +7 -0
  97. package/dist/types/src/components/BlueprintArticle.d.ts.map +1 -0
  98. package/dist/types/src/components/Chat/Chat.d.ts +18 -8
  99. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -1
  100. package/dist/types/src/components/Chat/events.d.ts +4 -0
  101. package/dist/types/src/components/Chat/events.d.ts.map +1 -1
  102. package/dist/types/src/components/ChatCompanion.d.ts +2 -2
  103. package/dist/types/src/components/ChatCompanion.d.ts.map +1 -1
  104. package/dist/types/src/components/ChatContainer.d.ts +7 -4
  105. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  106. package/dist/types/src/components/ChatDialog.d.ts.map +1 -1
  107. package/dist/types/src/components/ChatPrompt/ChatActions.d.ts.map +1 -1
  108. package/dist/types/src/components/ChatPrompt/ChatOptions.d.ts.map +1 -1
  109. package/dist/types/src/components/ChatThread/ChatThread.d.ts +6 -9
  110. package/dist/types/src/components/ChatThread/ChatThread.d.ts.map +1 -1
  111. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +123 -70
  112. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/ChatThread/reducers.d.ts +5 -5
  114. package/dist/types/src/components/ChatThread/reducers.d.ts.map +1 -1
  115. package/dist/types/src/components/ChatThread/sync.d.ts +12 -6
  116. package/dist/types/src/components/ChatThread/sync.d.ts.map +1 -1
  117. package/dist/types/src/components/PromptArticle.d.ts +7 -0
  118. package/dist/types/src/components/PromptArticle.d.ts.map +1 -0
  119. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  120. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  121. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +111 -61
  122. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +111 -61
  124. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -1
  125. package/dist/types/src/components/TemplateEditor/extensions/handlebars-extension.d.ts.map +1 -0
  126. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts +3 -0
  127. package/dist/types/src/components/TemplateEditor/extensions/index.d.ts.map +1 -0
  128. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts +8 -0
  129. package/dist/types/src/components/TemplateEditor/extensions/xml-extension.d.ts.map +1 -0
  130. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts +9 -7
  131. package/dist/types/src/components/ToolBlock/ToolBlock.d.ts.map +1 -1
  132. package/dist/types/src/components/Toolbox/Toolbox.d.ts +2 -2
  133. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  134. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +111 -60
  135. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/index.d.ts +4 -9
  137. package/dist/types/src/components/index.d.ts.map +1 -1
  138. package/dist/types/src/functions/index.d.ts +2 -2
  139. package/dist/types/src/functions/index.d.ts.map +1 -1
  140. package/dist/types/src/functions/{list.d.ts → object-list.d.ts} +1 -1
  141. package/dist/types/src/functions/object-list.d.ts.map +1 -0
  142. package/dist/types/src/functions/{load.d.ts → object-load.d.ts} +1 -1
  143. package/dist/types/src/functions/object-load.d.ts.map +1 -0
  144. package/dist/types/src/hooks/index.d.ts +1 -0
  145. package/dist/types/src/hooks/index.d.ts.map +1 -1
  146. package/dist/types/src/hooks/useBlueprintRegistry.d.ts.map +1 -1
  147. package/dist/types/src/hooks/useChatProcessor.d.ts +3 -1
  148. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  150. package/dist/types/src/hooks/useChatToolbarActions.d.ts +8 -0
  151. package/dist/types/src/hooks/useChatToolbarActions.d.ts.map +1 -0
  152. package/dist/types/src/hooks/useContextBinder.d.ts +2 -2
  153. package/dist/types/src/hooks/useContextBinder.d.ts.map +1 -1
  154. package/dist/types/src/hooks/useReferencesProvider.d.ts.map +1 -1
  155. package/dist/types/src/meta.d.ts.map +1 -1
  156. package/dist/types/src/processor/index.d.ts +1 -0
  157. package/dist/types/src/processor/index.d.ts.map +1 -1
  158. package/dist/types/src/processor/processor.d.ts +6 -6
  159. package/dist/types/src/processor/processor.d.ts.map +1 -1
  160. package/dist/types/src/processor/update-name.d.ts +10 -0
  161. package/dist/types/src/processor/update-name.d.ts.map +1 -0
  162. package/dist/types/src/queue-logger.d.ts.map +1 -1
  163. package/dist/types/src/testing/test-generator.d.ts +2 -2
  164. package/dist/types/src/testing/test-generator.d.ts.map +1 -1
  165. package/dist/types/src/translations.d.ts +239 -26
  166. package/dist/types/src/translations.d.ts.map +1 -1
  167. package/dist/types/src/types/Assistant.d.ts +0 -3
  168. package/dist/types/src/types/Assistant.d.ts.map +1 -1
  169. package/dist/types/src/types/AssistantAction.d.ts +29 -4
  170. package/dist/types/src/types/AssistantAction.d.ts.map +1 -1
  171. package/dist/types/src/types/service.d.ts +9 -6
  172. package/dist/types/src/types/service.d.ts.map +1 -1
  173. package/dist/types/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +78 -73
  175. package/src/AssistantPlugin.tsx +20 -2
  176. package/src/capabilities/app-graph-builder.ts +62 -15
  177. package/src/capabilities/blueprint-definition.ts +38 -36
  178. package/src/capabilities/capabilities.ts +2 -3
  179. package/src/capabilities/intent-resolver.ts +66 -15
  180. package/src/capabilities/local-model-resolver.ts +1 -1
  181. package/src/capabilities/react-surface.tsx +16 -20
  182. package/src/capabilities/state.ts +2 -0
  183. package/src/capabilities/toolkit.ts +9 -160
  184. package/src/components/BlueprintArticle.tsx +29 -0
  185. package/src/components/Chat/Chat.tsx +112 -58
  186. package/src/components/Chat/events.ts +6 -0
  187. package/src/components/ChatCompanion.tsx +62 -43
  188. package/src/components/ChatContainer.tsx +27 -17
  189. package/src/components/ChatDialog.tsx +9 -2
  190. package/src/components/ChatProgress/ChatProgress.tsx +1 -1
  191. package/src/components/ChatPrompt/ChatActions.tsx +2 -4
  192. package/src/components/ChatPrompt/ChatOptions.tsx +26 -23
  193. package/src/components/ChatPrompt/ChatReferences.tsx +2 -2
  194. package/src/components/ChatThread/ChatThread.stories.tsx +45 -26
  195. package/src/components/ChatThread/ChatThread.tsx +25 -35
  196. package/src/components/ChatThread/reducers.ts +6 -6
  197. package/src/components/ChatThread/registry.tsx +23 -33
  198. package/src/components/ChatThread/sync.test.ts +20 -12
  199. package/src/components/ChatThread/sync.ts +47 -12
  200. package/src/components/ChatThread/testing/thread.md +37 -0
  201. package/src/components/PromptArticle.tsx +85 -0
  202. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +14 -4
  203. package/src/components/TemplateEditor/TemplateEditor.tsx +17 -8
  204. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  205. package/src/components/TemplateEditor/TemplateForm.tsx +1 -1
  206. package/src/components/TemplateEditor/extensions/handlebars-extension.ts +269 -0
  207. package/src/components/TemplateEditor/extensions/index.ts +6 -0
  208. package/src/components/TemplateEditor/extensions/xml-extension.ts +64 -0
  209. package/src/components/ToolBlock/ToolBlock.tsx +33 -42
  210. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  211. package/src/components/Toolbox/Toolbox.tsx +5 -5
  212. package/src/components/index.ts +2 -5
  213. package/src/functions/analysis.ts +1 -1
  214. package/src/functions/index.ts +2 -2
  215. package/src/functions/{list.ts → object-list.ts} +4 -4
  216. package/src/functions/{load.ts → object-load.ts} +3 -4
  217. package/src/hooks/index.ts +1 -0
  218. package/src/hooks/useBlueprintRegistry.ts +2 -1
  219. package/src/hooks/useChatProcessor.ts +12 -12
  220. package/src/hooks/useChatServices.ts +7 -5
  221. package/src/hooks/useChatToolbarActions.ts +122 -0
  222. package/src/hooks/useContextBinder.ts +6 -6
  223. package/src/hooks/useReferencesProvider.ts +2 -1
  224. package/src/meta.ts +6 -1
  225. package/src/processor/index.ts +1 -0
  226. package/src/processor/presets.ts +1 -1
  227. package/src/processor/processor.test.ts +8 -18
  228. package/src/processor/processor.ts +14 -39
  229. package/src/processor/update-name.ts +56 -0
  230. package/src/queue-logger.ts +4 -8
  231. package/src/testing/test-generator.ts +10 -10
  232. package/src/translations.ts +24 -16
  233. package/src/types/Assistant.ts +4 -5
  234. package/src/types/AssistantAction.ts +21 -4
  235. package/src/types/service.ts +2 -2
  236. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs +0 -28
  237. package/dist/lib/browser/BlueprintContainer-WX2SSDVI.mjs.map +0 -7
  238. package/dist/lib/browser/ChatCompanion-BDZ55ZRF.mjs.map +0 -7
  239. package/dist/lib/browser/ChatContainer-RYGNN73X.mjs.map +0 -7
  240. package/dist/lib/browser/ChatDialog-MVHH2U66.mjs.map +0 -7
  241. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs +0 -150
  242. package/dist/lib/browser/SequenceContainer-2FEWMQGW.mjs.map +0 -7
  243. package/dist/lib/browser/app-graph-builder-2U7SLCRX.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-2CE2KPKZ.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-43I2LR6O.mjs +0 -216
  246. package/dist/lib/browser/chunk-43I2LR6O.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-5EGXHCAZ.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-5RICKAMN.mjs +0 -18
  249. package/dist/lib/browser/chunk-5RICKAMN.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-CQ7UHYTT.mjs +0 -296
  251. package/dist/lib/browser/chunk-CQ7UHYTT.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-FP56WB24.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-JZRZVB2A.mjs +0 -170
  254. package/dist/lib/browser/chunk-JZRZVB2A.mjs.map +0 -7
  255. package/dist/lib/browser/chunk-WRJGOT5P.mjs.map +0 -7
  256. package/dist/lib/browser/intent-resolver-3GOJMBXJ.mjs.map +0 -7
  257. package/dist/lib/browser/react-surface-FTKCE6GG.mjs.map +0 -7
  258. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs +0 -199
  259. package/dist/lib/browser/toolkit-NQ2GXCF5.mjs.map +0 -7
  260. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs +0 -29
  261. package/dist/lib/node-esm/BlueprintContainer-4MKN6ZRB.mjs.map +0 -7
  262. package/dist/lib/node-esm/ChatCompanion-XFNXVZIP.mjs.map +0 -7
  263. package/dist/lib/node-esm/ChatContainer-UTJGCQXF.mjs.map +0 -7
  264. package/dist/lib/node-esm/ChatDialog-QEYZ4IOV.mjs.map +0 -7
  265. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs +0 -151
  266. package/dist/lib/node-esm/SequenceContainer-PGGJUQ46.mjs.map +0 -7
  267. package/dist/lib/node-esm/app-graph-builder-OKNLR7H2.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-73ABYRYX.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-DSE2IILK.mjs +0 -217
  270. package/dist/lib/node-esm/chunk-DSE2IILK.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-E2WXZND7.mjs +0 -297
  272. package/dist/lib/node-esm/chunk-E2WXZND7.mjs.map +0 -7
  273. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs +0 -171
  274. package/dist/lib/node-esm/chunk-HXIBCBH4.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-TNR46C3L.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-U2NYUS2N.mjs.map +0 -7
  277. package/dist/lib/node-esm/chunk-UFKLCEAE.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-XQGWSZ4T.mjs.map +0 -7
  279. package/dist/lib/node-esm/intent-resolver-6XLVTRDJ.mjs.map +0 -7
  280. package/dist/lib/node-esm/react-surface-K7ZXQLAP.mjs.map +0 -7
  281. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs +0 -200
  282. package/dist/lib/node-esm/toolkit-V57PRJNG.mjs.map +0 -7
  283. package/dist/types/src/components/BlueprintContainer.d.ts +0 -8
  284. package/dist/types/src/components/BlueprintContainer.d.ts.map +0 -1
  285. package/dist/types/src/components/PromptSettings.d.ts +0 -6
  286. package/dist/types/src/components/PromptSettings.d.ts.map +0 -1
  287. package/dist/types/src/components/SequenceContainer.d.ts +0 -8
  288. package/dist/types/src/components/SequenceContainer.d.ts.map +0 -1
  289. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts +0 -13
  290. package/dist/types/src/components/SequenceEditor/SequenceEditor.d.ts.map +0 -1
  291. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts +0 -269
  292. package/dist/types/src/components/SequenceEditor/SequenceEditor.stories.d.ts.map +0 -1
  293. package/dist/types/src/components/SequenceEditor/index.d.ts +0 -2
  294. package/dist/types/src/components/SequenceEditor/index.d.ts.map +0 -1
  295. package/dist/types/src/components/TemplateEditor/handlebars-extension.d.ts.map +0 -1
  296. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -5
  297. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  298. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  299. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  300. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts +0 -11
  301. package/dist/types/src/components/Toolbar/useChatToolbarActions.d.ts.map +0 -1
  302. package/dist/types/src/functions/list.d.ts.map +0 -1
  303. package/dist/types/src/functions/load.d.ts.map +0 -1
  304. package/src/components/BlueprintContainer.tsx +0 -24
  305. package/src/components/PromptSettings.tsx +0 -90
  306. package/src/components/SequenceContainer.tsx +0 -131
  307. package/src/components/SequenceEditor/SequenceEditor.stories.tsx +0 -35
  308. package/src/components/SequenceEditor/SequenceEditor.tsx +0 -50
  309. package/src/components/SequenceEditor/index.ts +0 -5
  310. package/src/components/TemplateEditor/handlebars-extension.ts +0 -165
  311. package/src/components/Toolbar/Toolbar.tsx +0 -21
  312. package/src/components/Toolbar/index.ts +0 -5
  313. package/src/components/Toolbar/useChatToolbarActions.ts +0 -126
  314. /package/dist/lib/browser/{blueprint-definition-NSJARW5U.mjs.map → blueprint-definition-5FT5JGPY.mjs.map} +0 -0
  315. /package/dist/lib/browser/{settings-HBF32KV6.mjs.map → settings-NYJGNQ5I.mjs.map} +0 -0
  316. /package/dist/lib/node-esm/{blueprint-definition-WD2IVMAI.mjs.map → blueprint-definition-XW6QQVLV.mjs.map} +0 -0
  317. /package/dist/lib/node-esm/{settings-CWP6MTWP.mjs.map → settings-RRHYI5KO.mjs.map} +0 -0
  318. /package/dist/types/src/components/TemplateEditor/{handlebars-extension.d.ts → extensions/handlebars-extension.d.ts} +0 -0
@@ -8,11 +8,11 @@ import { Obj } from '@dxos/echo';
8
8
  import { ContextQueueService, DatabaseService } from '@dxos/functions';
9
9
  import { faker } from '@dxos/random';
10
10
  import { renderObjectLink } from '@dxos/react-ui-components';
11
- import { type ContentBlock, DataType } from '@dxos/schema';
11
+ import { type Actor, type ContentBlock, Message, Organization } from '@dxos/types';
12
12
  import { trim } from '@dxos/util';
13
13
 
14
- export const createMessage = (role: DataType.ActorRole, blocks: ContentBlock.Any[]): DataType.Message => {
15
- return Obj.make(DataType.Message, {
14
+ export const createMessage = (role: Actor.Role, blocks: ContentBlock.Any[]): Message.Message => {
15
+ return Obj.make(Message.Message, {
16
16
  created: new Date().toISOString(),
17
17
  sender: { role },
18
18
  blocks,
@@ -70,9 +70,9 @@ export const createMessageGenerator = (): MessageGenerator[] => [
70
70
  [
71
71
  faker.lorem.paragraph(),
72
72
  '',
73
- ...Array.from({ length: faker.number.int({ min: 3, max: 5 }) }).map(
74
- (_, idx) => `${idx + 1}. ${faker.lorem.paragraph()}`,
75
- ),
73
+ ...Array.from({
74
+ length: faker.number.int({ min: 3, max: 5 }),
75
+ }).map((_, idx) => `${idx + 1}. ${faker.lorem.paragraph()}`),
76
76
  ].join('\n') + '\n',
77
77
  },
78
78
  ]),
@@ -146,10 +146,10 @@ export const createMessageGenerator = (): MessageGenerator[] => [
146
146
  Effect.gen(function* () {
147
147
  const { queue } = yield* ContextQueueService;
148
148
  const { db } = yield* DatabaseService;
149
- const obj1 = db.add(Obj.make(DataType.Organization, { name: 'DXOS' }));
150
- // const obj2 = db.add(Obj.make(DataType.Person, { fullName: 'Alice' }));
151
- // const obj3 = db.add(Obj.make(DataType.Person, { fullName: 'Bob' }));
152
- // const obj4 = db.add(Obj.make(DataType.Person, { fullName: 'Charlie' }));
149
+ const obj1 = db.add(Obj.make(Organization.Organization, { name: 'DXOS' }));
150
+ // const obj2 = db.add(Obj.make(Person.Person, { fullName: 'Alice' }));
151
+ // const obj3 = db.add(Obj.make(Person.Person, { fullName: 'Bob' }));
152
+ // const obj4 = db.add(Obj.make(Person.Person, { fullName: 'Charlie' }));
153
153
  yield* Effect.promise(() =>
154
154
  queue.append([
155
155
  createMessage('assistant', [
@@ -2,8 +2,9 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Blueprint } from '@dxos/blueprints';
5
+ import { Blueprint, Prompt } from '@dxos/blueprints';
6
6
  import { Sequence } from '@dxos/conductor';
7
+ import { Type } from '@dxos/echo';
7
8
  import { type Resource } from '@dxos/react-ui';
8
9
 
9
10
  import { meta } from './meta';
@@ -23,6 +24,15 @@ export const translations = [
23
24
  'rename object label': 'Rename blueprint',
24
25
  'delete object label': 'Delete blueprint',
25
26
  },
27
+ [Type.getTypename(Prompt.Prompt)]: {
28
+ 'typename label': 'Prompt',
29
+ 'typename label_zero': 'Prompts',
30
+ 'typename label_one': 'Prompt',
31
+ 'typename label_other': 'Prompts',
32
+ 'object name placeholder': 'New prompt',
33
+ 'rename object label': 'Rename prompt',
34
+ 'delete object label': 'Delete prompt',
35
+ },
26
36
  // TODO(burdon): From conductor.
27
37
  [Sequence.typename]: {
28
38
  'typename label': 'Sequence',
@@ -61,11 +71,11 @@ export const translations = [
61
71
  'type filter placeholder': 'Type',
62
72
  'any type filter label': 'Any',
63
73
  'no blueprint message': 'No active blueprints',
64
- 'calling tool label': 'Calling tool...',
65
- 'calling label': 'Calling',
66
- 'error label': 'Error',
74
+ 'tool call label': 'Calling tool...',
75
+ 'tool result label': 'Success',
76
+ 'tool error label': 'Tool call failed',
67
77
 
68
- 'sequence logs label': 'Logs',
78
+ 'invocations label': 'Invocations',
69
79
 
70
80
  'assistant dialog title': 'Assistant',
71
81
  'open assistant label': 'Open assistant',
@@ -73,24 +83,22 @@ export const translations = [
73
83
  'no tools': 'No tools are configured',
74
84
  'no results': 'No results',
75
85
 
76
- 'button retry': 'Retry',
77
- 'button suggestion': 'Assistant suggestion',
78
- 'button select option': 'Select option',
79
- 'button cancel': 'Cancel',
80
- 'button save': 'Save',
81
- 'button run': 'Run',
82
- 'button new thread': 'New Chat',
86
+ 'cancel button': 'Cancel',
87
+ 'save button': 'Save',
88
+ 'new thread button': 'New Chat',
89
+ 'rename thread button': 'Rename Chat',
83
90
  'chat history label': 'Chat History',
91
+ 'chat update name label': 'Update AI Chat name',
84
92
 
85
93
  'toolkit label': 'Toolkit',
86
94
  'summary label': 'Summary',
87
95
 
88
96
  'search placeholder': 'Search...',
89
97
  'prompt placeholder': 'Enter question or command...',
90
- 'button context objects': 'Add to context',
91
- 'button context settings': 'Chat settings',
92
- 'button microphone': 'Click to speak',
93
- 'button cancel processing': 'Stop processing',
98
+ 'context objects button': 'Add to context',
99
+ 'context settings button': 'Chat settings',
100
+ 'microphone button': 'Click to speak',
101
+ 'cancel processing button': 'Stop processing',
94
102
  'blueprints in context title': 'Blueprints',
95
103
  'objects in context title': 'Content',
96
104
  'remove object in context label': 'Remove document',
@@ -5,7 +5,7 @@
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { Obj, Ref, Type } from '@dxos/echo';
8
- import { LabelAnnotation } from '@dxos/echo/internal';
8
+ import { FormAnnotation, LabelAnnotation } from '@dxos/echo/internal';
9
9
  import { Queue } from '@dxos/echo-db';
10
10
 
11
11
  import { LLM_PROVIDERS } from './defs';
@@ -14,11 +14,10 @@ import { LLM_PROVIDERS } from './defs';
14
14
  * AI chat.
15
15
  */
16
16
  export const Chat = Schema.Struct({
17
- id: Type.ObjectId,
18
- name: Schema.optional(Schema.String),
19
- queue: Type.Ref(Queue),
17
+ name: Schema.String.pipe(Schema.optional),
18
+ queue: Type.Ref(Queue).pipe(FormAnnotation.set(false)),
20
19
  // TODO(dmaretskyi): Eventually this and the message queue will be the same.
21
- traceQueue: Schema.optional(Type.Ref(Queue)),
20
+ traceQueue: Type.Ref(Queue).pipe(FormAnnotation.set(false), Schema.optional),
22
21
  }).pipe(
23
22
  Type.Obj({
24
23
  typename: 'dxos.org/type/assistant/Chat',
@@ -4,19 +4,20 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { Blueprint } from '@dxos/blueprints';
7
+ import { Blueprint, Prompt } from '@dxos/blueprints';
8
8
  import { EchoObjectSchema, SpaceSchema } from '@dxos/client/echo';
9
9
  import { Sequence } from '@dxos/conductor';
10
- import { DataType } from '@dxos/schema';
10
+ import { Collection } from '@dxos/schema';
11
11
 
12
12
  import { meta } from '../meta';
13
13
 
14
14
  import { Chat } from './Assistant';
15
15
 
16
+ // TODO(burdon): Name?
16
17
  export class onCreateSpace extends Schema.TaggedClass<onCreateSpace>()(`${meta.id}/on-space-created`, {
17
18
  input: Schema.Struct({
18
19
  space: SpaceSchema,
19
- rootCollection: DataType.Collection,
20
+ rootCollection: Collection.Collection,
20
21
  }),
21
22
  output: Schema.Void,
22
23
  }) {}
@@ -31,6 +32,13 @@ export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${meta.id}/act
31
32
  }),
32
33
  }) {}
33
34
 
35
+ export class UpdateChatName extends Schema.TaggedClass<UpdateChatName>()(`${meta.id}/action/update-name`, {
36
+ input: Schema.Struct({
37
+ chat: Chat,
38
+ }),
39
+ output: Schema.Void,
40
+ }) {}
41
+
34
42
  export const BlueprintForm = Schema.Struct({
35
43
  key: Schema.String,
36
44
  name: Schema.String,
@@ -44,6 +52,15 @@ export class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${me
44
52
  }),
45
53
  }) {}
46
54
 
55
+ export class CreatePrompt extends Schema.TaggedClass<CreatePrompt>()(`${meta.id}/action/create-prompt`, {
56
+ input: Schema.Struct({
57
+ name: Schema.optional(Schema.String),
58
+ }),
59
+ output: Schema.Struct({
60
+ object: Prompt.Prompt,
61
+ }),
62
+ }) {}
63
+
47
64
  export class CreateSequence extends Schema.TaggedClass<CreateSequence>()(`${meta.id}/action/create-sequence`, {
48
65
  input: Schema.Struct({
49
66
  name: Schema.optional(Schema.String),
@@ -56,7 +73,7 @@ export class CreateSequence extends Schema.TaggedClass<CreateSequence>()(`${meta
56
73
  export class SetCurrentChat extends Schema.TaggedClass<SetCurrentChat>()(`${meta.id}/action/set-current-chat`, {
57
74
  input: Schema.Struct({
58
75
  companionTo: EchoObjectSchema,
59
- chat: Chat,
76
+ chat: Chat.pipe(Schema.optional),
60
77
  }),
61
78
  output: Schema.Void,
62
79
  }) {}
@@ -7,7 +7,7 @@ import * as Schema from 'effect/Schema';
7
7
  import { ComputeGraph } from '@dxos/conductor';
8
8
  import { Type } from '@dxos/echo';
9
9
  import { TypedObject } from '@dxos/echo/internal';
10
- import { FunctionType } from '@dxos/functions';
10
+ import { Function } from '@dxos/functions';
11
11
 
12
12
  // TODO(burdon): Factor out and reconcile with https://github.com/dxos/dxos/blob/main/packages/plugins/plugin-token-manager/src/defs/presets.ts#L7
13
13
 
@@ -38,7 +38,7 @@ export type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;
38
38
 
39
39
  const ServiceInterfaceFunction = Schema.Struct({
40
40
  kind: Schema.Literal('function'),
41
- fn: Type.Ref(FunctionType),
41
+ fn: Type.Ref(Function.Function),
42
42
  });
43
43
 
44
44
  const ServiceInterfaceWorkflow = Schema.Struct({
@@ -1,28 +0,0 @@
1
- import {
2
- TemplateEditor
3
- } from "./chunk-43I2LR6O.mjs";
4
- import "./chunk-5RICKAMN.mjs";
5
- import "./chunk-J5LGTIGS.mjs";
6
-
7
- // src/components/BlueprintContainer.tsx
8
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
9
- import React from "react";
10
- import { StackItem } from "@dxos/react-ui-stack";
11
- var BlueprintContainer = ({ blueprint }) => {
12
- var _effect = _useSignals();
13
- try {
14
- return /* @__PURE__ */ React.createElement(StackItem.Content, null, /* @__PURE__ */ React.createElement(TemplateEditor, {
15
- id: blueprint.id,
16
- template: blueprint.instructions,
17
- classNames: "container-max-width"
18
- }));
19
- } finally {
20
- _effect.f();
21
- }
22
- };
23
- var BlueprintContainer_default = BlueprintContainer;
24
- export {
25
- BlueprintContainer,
26
- BlueprintContainer_default as default
27
- };
28
- //# sourceMappingURL=BlueprintContainer-WX2SSDVI.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/BlueprintContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Blueprint } from '@dxos/blueprints';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\n\nexport type BlueprintContainerProps = {\n blueprint: Blueprint.Blueprint;\n};\n\nexport const BlueprintContainer = ({ blueprint }: BlueprintContainerProps) => {\n return (\n <StackItem.Content>\n <TemplateEditor id={blueprint.id} template={blueprint.instructions} classNames='container-max-width' />\n </StackItem.Content>\n );\n};\n\nexport default BlueprintContainer;\n"],
5
- "mappings": ";;;;;;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,iBAAiB;AAQnB,IAAMC,qBAAqB,CAAC,EAAEC,UAAS,MAA2B;;;AACvE,WACE,sBAAA,cAACC,UAAUC,SAAO,MAChB,sBAAA,cAACC,gBAAAA;MAAeC,IAAIJ,UAAUI;MAAIC,UAAUL,UAAUM;MAAcC,YAAW;;;;;AAGrF;AAEA,IAAA,6BAAeR;",
6
- "names": ["React", "StackItem", "BlueprintContainer", "blueprint", "StackItem", "Content", "TemplateEditor", "id", "template", "instructions", "classNames"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChatCompanion.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport React, { useMemo } from 'react';\n\nimport { Capabilities, createIntent, useCapabilities, useIntentDispatcher } from '@dxos/app-framework';\nimport { Blueprint } from '@dxos/blueprints';\nimport { getSpace } from '@dxos/client/echo';\nimport { Filter, Obj, Query, Ref } from '@dxos/echo';\nimport { DatabaseService } from '@dxos/functions';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport { ChatContainer } from '../components';\nimport { useBlueprintRegistry, useContextBinder } from '../hooks';\nimport { Assistant, AssistantAction } from '../types';\n\nexport type ChatCompanionProps = {\n role?: string;\n data: { companionTo: Obj.Any; subject: Assistant.Chat | 'assistant-chat' };\n};\n\nexport const ChatCompanion = ({ role, data }: ChatCompanionProps) => {\n const companionTo = data.companionTo;\n const space = getSpace(companionTo);\n const chat = data.subject === 'assistant-chat' ? undefined : data.subject;\n const blueprintRegistry = useBlueprintRegistry();\n const binder = useContextBinder(chat);\n const { dispatch } = useIntentDispatcher();\n\n // Initialize companion chat if it doesn't exist.\n useAsyncEffect(async () => {\n if (chat || !space) {\n return;\n }\n\n // TODO(burdon): Garbage collection of queues?\n // TODO(wittjosiah): Figure out how to prevent companion chats from showing up in the navtree.\n await Effect.gen(function* () {\n const { objects } = yield* DatabaseService.runQuery(\n Query.select(Filter.ids(companionTo.id)).targetOf(Assistant.CompanionTo).source(),\n );\n\n // TODO(wittjosiah): This should be the default sort order.\n let nextChat = objects.toSorted((a, b) => a.id.localeCompare(b.id)).at(-1);\n if (!nextChat) {\n const { object } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));\n nextChat = object;\n yield* dispatch(createIntent(SpaceAction.AddObject, { object: nextChat, target: space, hidden: true }));\n yield* dispatch(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: Assistant.CompanionTo,\n source: nextChat,\n target: data.companionTo,\n }),\n );\n }\n\n yield* dispatch(createIntent(AssistantAction.SetCurrentChat, { companionTo, chat: nextChat }));\n }).pipe(Effect.provide(DatabaseService.layer(space.db)), Effect.runPromise);\n }, [space, chat, companionTo]);\n\n const metadata = useCapabilities(Capabilities.Metadata);\n const blueprintKeys = useMemo(\n () =>\n Function.pipe(\n metadata,\n Array.findFirst(\n (capability): capability is { id: string; metadata: { blueprints?: string[] } } =>\n capability.id === Obj.getTypename(companionTo),\n ),\n Option.flatMap((c) => Option.fromNullable(c.metadata.blueprints)),\n Option.getOrElse(() => [] as string[]),\n ),\n [metadata, companionTo],\n );\n const existingBlueprints = useQuery(space, Filter.type(Blueprint.Blueprint));\n const pluginBlueprints = useMemo(\n () => existingBlueprints.filter((blueprint) => blueprintKeys.includes(blueprint.key)),\n [existingBlueprints, blueprintKeys],\n );\n\n // Initialize related blueprints that are not already in the space.\n useAsyncEffect(async () => {\n if (!space) {\n return;\n }\n\n // NOTE: This must be run instead of using the useQuery result to avoid duplicates.\n const { objects: existingBlueprints } = await space.db.query(Filter.type(Blueprint.Blueprint)).run();\n for (const key of blueprintKeys) {\n const existingBlueprint = existingBlueprints.find((blueprint) => blueprint.key === key);\n if (existingBlueprint) {\n continue;\n }\n\n const blueprint = blueprintRegistry.getByKey(key);\n if (!blueprint) {\n continue;\n }\n\n space.db.add(Obj.clone(blueprint));\n }\n }, [space, blueprintRegistry, blueprintKeys]);\n\n useAsyncEffect(async () => {\n if (!binder) {\n return;\n }\n\n if (pluginBlueprints.length > 0) {\n await binder.bind({ blueprints: pluginBlueprints.map((blueprint) => Ref.make(blueprint)) });\n }\n\n if (Obj.instanceOf(Blueprint.Blueprint, companionTo)) {\n await binder.bind({ blueprints: [Ref.make(companionTo)] });\n } else {\n await binder.bind({ objects: [Ref.make(companionTo)] });\n }\n }, [binder, companionTo, pluginBlueprints]);\n\n if (!chat) {\n return null;\n }\n\n return <ChatContainer role={role} chat={chat} companionTo={companionTo} />;\n};\n\nexport default ChatCompanion;\n"],
5
- "mappings": "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",
6
- "names": ["Array", "Effect", "Function", "Option", "React", "useMemo", "Capabilities", "createIntent", "useCapabilities", "useIntentDispatcher", "Blueprint", "getSpace", "Filter", "Obj", "Query", "Ref", "DatabaseService", "SpaceAction", "useQuery", "useAsyncEffect", "ChatCompanion", "role", "data", "companionTo", "space", "getSpace", "chat", "subject", "undefined", "blueprintRegistry", "useBlueprintRegistry", "binder", "useContextBinder", "dispatch", "useIntentDispatcher", "useAsyncEffect", "gen", "objects", "DatabaseService", "runQuery", "Query", "select", "Filter", "ids", "id", "targetOf", "Assistant", "CompanionTo", "source", "nextChat", "toSorted", "a", "b", "localeCompare", "at", "object", "createIntent", "AssistantAction", "CreateChat", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "SetCurrentChat", "pipe", "provide", "layer", "db", "runPromise", "metadata", "useCapabilities", "Capabilities", "Metadata", "blueprintKeys", "useMemo", "findFirst", "capability", "Obj", "getTypename", "flatMap", "c", "fromNullable", "blueprints", "getOrElse", "existingBlueprints", "useQuery", "type", "Blueprint", "pluginBlueprints", "filter", "blueprint", "includes", "key", "query", "run", "existingBlueprint", "find", "getByKey", "add", "clone", "length", "bind", "map", "Ref", "make", "instanceOf", "ChatContainer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChatContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, useCapability } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/client/echo';\nimport { type Obj } from '@dxos/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from '../hooks';\nimport { meta } from '../meta';\nimport { type Assistant } from '../types';\n\nimport { Chat } from './Chat';\nimport { Toolbar } from './Toolbar';\n\nexport type ChatContainerProps = {\n chat: Assistant.Chat;\n companionTo?: Obj.Any;\n role?: string;\n};\n\nexport const ChatContainer = ({ chat, companionTo }: ChatContainerProps) => {\n const space = getSpace(chat);\n const settings = useCapability(Capabilities.SettingsStore).getStore<Assistant.Settings>(meta.id)?.value;\n const services = useChatServices({ space, chat });\n const [online, setOnline] = useOnline();\n const { preset, ...chatProps } = usePresets(online);\n const blueprintRegistry = useBlueprintRegistry();\n const processor = useChatProcessor({ chat, preset, services, blueprintRegistry, settings });\n\n if (!processor) {\n return null;\n }\n\n return (\n <StackItem.Content toolbar={!!companionTo}>\n {!!companionTo && <Toolbar chat={chat} companionTo={companionTo} />}\n <Chat.Root classNames='container-max-width' chat={chat} processor={processor}>\n <Chat.Thread />\n <div className='p-2'>\n <Chat.Prompt {...chatProps} outline preset={preset?.id} online={online} onOnlineChange={setOnline} />\n </div>\n </Chat.Root>\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,qBAAqB;AAC5C,SAASC,gBAAgB;AAEzB,SAASC,iBAAiB;AAenB,IAAMC,gBAAgB,CAAC,EAAEC,MAAMC,YAAW,MAAsB;;;AACrE,UAAMC,QAAQC,SAASH,IAAAA;AACvB,UAAMI,WAAWC,cAAcC,aAAaC,aAAa,EAAEC,SAA6BC,KAAKC,EAAE,GAAGC;AAClG,UAAMC,WAAWC,gBAAgB;MAAEX;MAAOF;IAAK,CAAA;AAC/C,UAAM,CAACc,QAAQC,SAAAA,IAAaC,UAAAA;AAC5B,UAAM,EAAEC,QAAQ,GAAGC,UAAAA,IAAcC,WAAWL,MAAAA;AAC5C,UAAMM,oBAAoBC,qBAAAA;AAC1B,UAAMC,YAAYC,iBAAiB;MAAEvB;MAAMiB;MAAQL;MAAUQ;MAAmBhB;IAAS,CAAA;AAEzF,QAAI,CAACkB,WAAW;AACd,aAAO;IACT;AAEA,WACE,sBAAA,cAACE,UAAUC,SAAO;MAACC,SAAS,CAAC,CAACzB;OAC3B,CAAC,CAACA,eAAe,sBAAA,cAAC0B,SAAAA;MAAQ3B;MAAYC;QACvC,sBAAA,cAAC2B,KAAKC,MAAI;MAACC,YAAW;MAAsB9B;MAAYsB;OACtD,sBAAA,cAACM,KAAKG,QAAM,IAAA,GACZ,sBAAA,cAACC,OAAAA;MAAIC,WAAU;OACb,sBAAA,cAACL,KAAKM,QAAM;MAAE,GAAGhB;MAAWiB,SAAAA;MAAQlB,QAAQA,QAAQP;MAAII;MAAgBsB,gBAAgBrB;;;;;AAKlG;AAEA,IAAA,wBAAehB;",
6
- "names": ["React", "Capabilities", "useCapability", "getSpace", "StackItem", "ChatContainer", "chat", "companionTo", "space", "getSpace", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "meta", "id", "value", "services", "useChatServices", "online", "setOnline", "useOnline", "preset", "chatProps", "usePresets", "blueprintRegistry", "useBlueprintRegistry", "processor", "useChatProcessor", "StackItem", "Content", "toolbar", "Toolbar", "Chat", "Root", "classNames", "Thread", "div", "className", "Prompt", "outline", "onOnlineChange"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChatDialog.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { Capabilities, useCapability } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { ChatDialog as NaturalChatDialog } from '@dxos/react-ui-chat';\n\nimport { useBlueprintRegistry, useChatProcessor, useChatServices, useOnline, usePresets } from '../hooks';\nimport { meta } from '../meta';\nimport { type Assistant } from '../types';\n\nimport { Chat, type ChatRootProps } from './Chat';\n\nexport type ChatDialogProps = {\n chat?: Assistant.Chat;\n};\n\nexport const ChatDialog = ({ chat }: ChatDialogProps) => {\n const { t } = useTranslation(meta.id);\n\n const space = getSpace(chat);\n const settings = useCapability(Capabilities.SettingsStore).getStore<Assistant.Settings>(meta.id)?.value;\n const services = useChatServices({ space, chat });\n const [online, setOnline] = useOnline();\n const { preset, ...chatProps } = usePresets(online);\n const blueprintRegistry = useBlueprintRegistry();\n const processor = useChatProcessor({ chat, preset, services, blueprintRegistry, settings });\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(true);\n const [expanded, setExpanded] = useState(false);\n const handleEvent = useCallback<NonNullable<ChatRootProps['onEvent']>>((event) => {\n switch (event.type) {\n case 'submit':\n case 'thread-open':\n setOpen(true);\n setExpanded(true);\n break;\n case 'thread-close':\n setOpen(false);\n break;\n }\n }, []);\n\n if (!chat || !processor) {\n return null;\n }\n\n return (\n <Chat.Root chat={chat} processor={processor} onEvent={handleEvent}>\n <NaturalChatDialog.Root open={open} expanded={expanded} onOpenChange={setOpen}>\n <NaturalChatDialog.Header title={t('assistant dialog title')} />\n <NaturalChatDialog.Content>\n <Chat.Thread />\n </NaturalChatDialog.Content>\n <NaturalChatDialog.Footer classNames='p-1.5'>\n <Chat.Prompt {...chatProps} preset={preset?.id} online={online} onOnlineChange={setOnline} expandable />\n </NaturalChatDialog.Footer>\n </NaturalChatDialog.Root>\n </Chat.Root>\n );\n};\n\nexport default ChatDialog;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAIA,OAAOA,SAASC,aAAaC,gBAAgB;AAE7C,SAASC,cAAcC,qBAAqB;AAC5C,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,cAAcC,yBAAyB;AAYzC,IAAMC,aAAa,CAAC,EAAEC,KAAI,MAAmB;;;AAClD,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,UAAMC,QAAQC,SAASN,IAAAA;AACvB,UAAMO,WAAWC,cAAcC,aAAaC,aAAa,EAAEC,SAA6BR,KAAKC,EAAE,GAAGQ;AAClG,UAAMC,WAAWC,gBAAgB;MAAET;MAAOL;IAAK,CAAA;AAC/C,UAAM,CAACe,QAAQC,SAAAA,IAAaC,UAAAA;AAC5B,UAAM,EAAEC,QAAQ,GAAGC,UAAAA,IAAcC,WAAWL,MAAAA;AAC5C,UAAMM,oBAAoBC,qBAAAA;AAC1B,UAAMC,YAAYC,iBAAiB;MAAExB;MAAMkB;MAAQL;MAAUQ;MAAmBd;IAAS,CAAA;AAGzF,UAAM,CAACkB,MAAMC,OAAAA,IAAWC,SAAS,IAAA;AACjC,UAAM,CAACC,UAAUC,WAAAA,IAAeF,SAAS,KAAA;AACzC,UAAMG,cAAcC,YAAmD,CAACC,UAAAA;AACtE,cAAQA,MAAMC,MAAI;QAChB,KAAK;QACL,KAAK;AACHP,kBAAQ,IAAA;AACRG,sBAAY,IAAA;AACZ;QACF,KAAK;AACHH,kBAAQ,KAAA;AACR;MACJ;IACF,GAAG,CAAA,CAAE;AAEL,QAAI,CAAC1B,QAAQ,CAACuB,WAAW;AACvB,aAAO;IACT;AAEA,WACE,sBAAA,cAACW,KAAKC,MAAI;MAACnC;MAAYuB;MAAsBa,SAASN;OACpD,sBAAA,cAACO,kBAAkBF,MAAI;MAACV;MAAYG;MAAoBU,cAAcZ;OACpE,sBAAA,cAACW,kBAAkBE,QAAM;MAACC,OAAOvC,EAAE,wBAAA;QACnC,sBAAA,cAACoC,kBAAkBI,SAAO,MACxB,sBAAA,cAACP,KAAKQ,QAAM,IAAA,CAAA,GAEd,sBAAA,cAACL,kBAAkBM,QAAM;MAACC,YAAW;OACnC,sBAAA,cAACV,KAAKW,QAAM;MAAE,GAAG1B;MAAWD,QAAQA,QAAQd;MAAIW;MAAgB+B,gBAAgB9B;MAAW+B,YAAAA;;;;;AAKrG;AAEA,IAAA,qBAAehD;",
6
- "names": ["React", "useCallback", "useState", "Capabilities", "useCapability", "getSpace", "useTranslation", "ChatDialog", "NaturalChatDialog", "ChatDialog", "chat", "t", "useTranslation", "meta", "id", "space", "getSpace", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "services", "useChatServices", "online", "setOnline", "useOnline", "preset", "chatProps", "usePresets", "blueprintRegistry", "useBlueprintRegistry", "processor", "useChatProcessor", "open", "setOpen", "useState", "expanded", "setExpanded", "handleEvent", "useCallback", "event", "type", "Chat", "Root", "onEvent", "NaturalChatDialog", "onOpenChange", "Header", "title", "Content", "Thread", "Footer", "classNames", "Prompt", "onOnlineChange", "expandable"]
7
- }
@@ -1,150 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-5RICKAMN.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/components/SequenceContainer.tsx
7
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
8
- import JSON5 from "json5";
9
- import React2, { useCallback, useEffect, useRef, useState } from "react";
10
- import { Key } from "@dxos/echo";
11
- import { Toolbar, useTranslation } from "@dxos/react-ui";
12
- import { useSelectionManager } from "@dxos/react-ui-attention";
13
- import { StackItem } from "@dxos/react-ui-stack";
14
-
15
- // src/components/SequenceEditor/SequenceEditor.tsx
16
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
17
- import React, { forwardRef, useImperativeHandle } from "react";
18
- import { SequenceDefinition } from "@dxos/conductor";
19
- import { Type } from "@dxos/echo";
20
- import { useThemeContext } from "@dxos/react-ui";
21
- import { createBasicExtensions, createJsonExtensions, createThemeExtensions, useTextEditor } from "@dxos/react-ui-editor";
22
- import { mx } from "@dxos/react-ui-theme";
23
- var SequenceEditor = /* @__PURE__ */ forwardRef(({ classNames, sequence }, forwardedRef) => {
24
- var _effect = _useSignals();
25
- try {
26
- const { themeMode } = useThemeContext();
27
- const { parentRef, view } = useTextEditor({
28
- initialValue: JSON.stringify(sequence, null, 2),
29
- extensions: [
30
- createBasicExtensions({
31
- lineNumbers: true,
32
- lineWrapping: false,
33
- monospace: true,
34
- scrollPastEnd: true
35
- }),
36
- createThemeExtensions({
37
- themeMode,
38
- syntaxHighlighting: true
39
- }),
40
- createJsonExtensions({
41
- schema: Type.toJsonSchema(SequenceDefinition, {
42
- strict: true
43
- })
44
- })
45
- ]
46
- });
47
- useImperativeHandle(forwardedRef, () => view, [
48
- view
49
- ]);
50
- return /* @__PURE__ */ React.createElement("div", {
51
- ref: parentRef,
52
- className: mx("overflow-hidden", classNames)
53
- });
54
- } finally {
55
- _effect.f();
56
- }
57
- });
58
-
59
- // src/components/SequenceContainer.tsx
60
- var EXA_API_KEY = "9c7e17ff-0c85-4cd5-827a-8b489f139e03";
61
- var parseSequence = (text) => {
62
- try {
63
- const json = JSON5.parse(text);
64
- const { steps } = json;
65
- return {
66
- steps
67
- };
68
- } catch {
69
- }
70
- };
71
- var SequenceContainer = ({ sequence }) => {
72
- var _effect = _useSignals2();
73
- try {
74
- const { t } = useTranslation(meta.id);
75
- const selectionManager = useSelectionManager();
76
- const [definition, setDefinition] = useState();
77
- useEffect(() => {
78
- setDefinition({
79
- steps: sequence.steps.map(({ instructions, tools }) => ({
80
- instructions,
81
- tools
82
- }))
83
- });
84
- }, [
85
- sequence
86
- ]);
87
- const editorRef = useRef(null);
88
- const formatAndSave = useCallback(() => {
89
- if (!sequence) {
90
- return;
91
- }
92
- const text = editorRef.current?.state.doc.toString();
93
- if (!text) {
94
- return;
95
- }
96
- const definition2 = parseSequence(text);
97
- if (!definition2) {
98
- return;
99
- }
100
- setDefinition(definition2);
101
- const formatted = JSON.stringify(definition2, null, 2);
102
- editorRef.current?.dispatch({
103
- changes: {
104
- from: 0,
105
- to: text.length,
106
- insert: formatted
107
- }
108
- });
109
- sequence.steps.length = 0;
110
- for (const step of definition2.steps) {
111
- sequence.steps.push({
112
- id: Key.ObjectId.random(),
113
- instructions: step.instructions,
114
- tools: step.tools
115
- });
116
- }
117
- return sequence;
118
- }, [
119
- sequence
120
- ]);
121
- const handleSave = useCallback(() => formatAndSave(), [
122
- formatAndSave
123
- ]);
124
- const handleRun = useCallback(async () => {
125
- }, [
126
- sequence,
127
- formatAndSave,
128
- selectionManager
129
- ]);
130
- return /* @__PURE__ */ React2.createElement(StackItem.Content, {
131
- toolbar: true
132
- }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null, /* @__PURE__ */ React2.createElement(Toolbar.Button, {
133
- onClick: handleSave
134
- }, t("button save")), /* @__PURE__ */ React2.createElement(Toolbar.Button, {
135
- onClick: handleRun
136
- }, t("button run"))), definition && /* @__PURE__ */ React2.createElement(SequenceEditor, {
137
- ref: editorRef,
138
- sequence: definition
139
- }));
140
- } finally {
141
- _effect.f();
142
- }
143
- };
144
- var SequenceContainer_default = SequenceContainer;
145
- export {
146
- EXA_API_KEY,
147
- SequenceContainer,
148
- SequenceContainer_default as default
149
- };
150
- //# sourceMappingURL=SequenceContainer-2FEWMQGW.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/SequenceContainer.tsx", "../../../src/components/SequenceEditor/SequenceEditor.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport JSON5 from 'json5';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type Sequence, type SequenceDefinition } from '@dxos/conductor';\nimport { Key } from '@dxos/echo';\nimport { Toolbar, useTranslation } from '@dxos/react-ui';\nimport { useSelectionManager } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { meta } from '../meta';\n\nimport { SequenceEditor } from './SequenceEditor';\n\n// TODO(burdon): Move to config.\nexport const EXA_API_KEY = '9c7e17ff-0c85-4cd5-827a-8b489f139e03';\n\n// TODO(burdon): Validate.\nconst parseSequence = (text: string): SequenceDefinition | undefined => {\n try {\n const json = JSON5.parse(text);\n const { steps } = json;\n return { steps };\n } catch {\n // Ignore.\n }\n};\n\nexport const SequenceContainer = ({ sequence }: { sequence: Sequence }) => {\n const { t } = useTranslation(meta.id);\n const selectionManager = useSelectionManager();\n const [definition, setDefinition] = useState<SequenceDefinition>();\n useEffect(() => {\n setDefinition({\n steps: sequence.steps.map(({ instructions, tools }) => ({ instructions, tools })),\n });\n }, [sequence]);\n\n const editorRef = useRef<EditorView>(null);\n\n // TODO(burdon): Factor out.\n // const toolRegistry = useMemo(() => {\n // const space = getSpace(sequence);\n // if (!space) {\n // return;\n // }\n\n // // TODO(burdon): How should the queue be created?\n // // eslint-disable-next-line no-unused-vars\n // const _queue = space.queues.create();\n\n // return new ToolRegistry([\n // // createExaTool({ apiKey: EXA_API_KEY }),\n // // createLocalSearchTool(space.db, queue),\n // // createGraphWriterTool({\n // // db: space.db,\n // // queue,\n // // schema: [], // TODO(burdon): Get schema from client/sequence?\n // // onDone: async (objects) => {\n // // await queue.append(objects);\n // // },\n // // }),\n // ]);\n // }, [sequence]);\n\n const formatAndSave = useCallback((): SequenceDefinition | undefined => {\n if (!sequence) {\n return;\n }\n\n const text = editorRef.current?.state.doc.toString();\n if (!text) {\n return;\n }\n\n const definition = parseSequence(text);\n if (!definition) {\n return;\n }\n\n setDefinition(definition);\n const formatted = JSON.stringify(definition, null, 2);\n editorRef.current?.dispatch({\n changes: { from: 0, to: text.length, insert: formatted },\n });\n\n sequence.steps.length = 0;\n for (const step of definition.steps) {\n sequence.steps.push({\n id: Key.ObjectId.random(),\n instructions: step.instructions,\n tools: step.tools,\n });\n }\n\n return sequence;\n }, [sequence]);\n\n // TODO(burdon): Save raw sequence separately from parsed sequence? (like Script).\n const handleSave = useCallback(() => formatAndSave(), [formatAndSave]);\n\n const handleRun = useCallback(async () => {\n // if (!aiClient?.value || !toolRegistry) {\n // return;\n // }\n // formatAndSave();\n // // Get input from selection.\n // const input = Array.from(getSelectionSet(selectionManager)).map((id) => DXN.fromLocalObjectId(id));\n // if (!input.length) {\n // return;\n // }\n // const machine = new SequenceMachine(toolRegistry, sequence).setLogger(new QueueLogger(sequence));\n // await machine.runToCompletion({ aiClient: aiClient.value, input });\n }, [sequence, formatAndSave, selectionManager]);\n\n return (\n <StackItem.Content toolbar>\n <Toolbar.Root>\n <Toolbar.Button onClick={handleSave}>{t('button save')}</Toolbar.Button>\n <Toolbar.Button onClick={handleRun}>{t('button run')}</Toolbar.Button>\n </Toolbar.Root>\n {definition && <SequenceEditor ref={editorRef} sequence={definition} />}\n </StackItem.Content>\n );\n};\n\nexport default SequenceContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { forwardRef, useImperativeHandle } from 'react';\n\nimport { SequenceDefinition } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type EditorView,\n createBasicExtensions,\n createJsonExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type SequenceEditorProps = ThemedClassName<{\n sequence: SequenceDefinition;\n}>;\n\n// TODO(burdon): Factor out JsonEditor.\nexport const SequenceEditor = forwardRef<EditorView | null, SequenceEditorProps>(\n ({ classNames, sequence }, forwardedRef) => {\n const { themeMode } = useThemeContext();\n const { parentRef, view } = useTextEditor({\n initialValue: JSON.stringify(sequence, null, 2),\n extensions: [\n createBasicExtensions({\n lineNumbers: true,\n lineWrapping: false,\n monospace: true,\n scrollPastEnd: true,\n }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n }),\n createJsonExtensions({\n schema: Type.toJsonSchema(SequenceDefinition, { strict: true }),\n }),\n ],\n });\n\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => view, [view]);\n\n return <div ref={parentRef} className={mx('overflow-hidden', classNames)} />;\n },\n);\n"],
5
- "mappings": "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",
6
- "names": ["JSON5", "React", "useCallback", "useEffect", "useRef", "useState", "Key", "Toolbar", "useTranslation", "useSelectionManager", "StackItem", "React", "forwardRef", "useImperativeHandle", "SequenceDefinition", "Type", "useThemeContext", "createBasicExtensions", "createJsonExtensions", "createThemeExtensions", "useTextEditor", "mx", "SequenceEditor", "forwardRef", "classNames", "sequence", "forwardedRef", "themeMode", "useThemeContext", "parentRef", "view", "useTextEditor", "initialValue", "JSON", "stringify", "extensions", "createBasicExtensions", "lineNumbers", "lineWrapping", "monospace", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "createJsonExtensions", "schema", "Type", "toJsonSchema", "SequenceDefinition", "strict", "useImperativeHandle", "div", "ref", "className", "mx", "EXA_API_KEY", "parseSequence", "text", "json", "JSON5", "parse", "steps", "SequenceContainer", "sequence", "t", "useTranslation", "meta", "id", "selectionManager", "useSelectionManager", "definition", "setDefinition", "useState", "useEffect", "map", "instructions", "tools", "editorRef", "useRef", "formatAndSave", "useCallback", "current", "state", "doc", "toString", "formatted", "JSON", "stringify", "dispatch", "changes", "from", "to", "length", "insert", "step", "push", "Key", "ObjectId", "random", "handleSave", "handleRun", "React", "StackItem", "Content", "toolbar", "Toolbar", "Root", "Button", "onClick", "SequenceEditor", "ref"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport {\n Capabilities,\n LayoutAction,\n type PluginContext,\n type PromiseIntentDispatcher,\n contributes,\n createIntent,\n} from '@dxos/app-framework';\nimport { Sequence } from '@dxos/conductor';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Query, type Space, fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, meta } from '../meta';\nimport { Assistant, AssistantAction } from '../types';\n\nimport { AssistantCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/companion-chat`,\n connector: (node) => {\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.map((object) => {\n const currentChat = get(\n rxFromSignal(\n () => context.getCapability(AssistantCapabilities.State).currentChat[fullyQualifiedId(object)],\n ),\n );\n\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: currentChat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${meta.id}/sequence-logs`,\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Sequence, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['sequence logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (\n dispatch: PromiseIntentDispatcher,\n space: Space,\n): Promise<Assistant.Chat | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(Assistant.Chat)).run();\n const { objects: relatedChats } = await space.db\n .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())\n .run();\n\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n if (chats.length > 0) {\n return chats.at(-1);\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(Assistant.Chat, data?.object));\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
- "mappings": "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",
6
- "names": ["Rx", "Function", "Option", "Capabilities", "LayoutAction", "contributes", "createIntent", "Sequence", "Obj", "invariant", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromSignal", "getActiveSpace", "SpaceAction", "Query", "fullyQualifiedId", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "chat", "getOrCreateChat", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "Obj", "isObject", "object", "currentChat", "rxFromSignal", "AssistantCapabilities", "State", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Sequence", "objects", "allChats", "db", "query", "Query", "Assistant", "Chat", "run", "relatedChats", "sourceOf", "CompanionTo", "source", "chats", "filter", "includes", "length", "at", "AssistantAction", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/blueprint-definition.ts", "../../../src/functions/analysis.ts", "../../../src/functions/list.ts", "../../../src/functions/load.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { templates } from '@dxos/assistant';\nimport {\n DISCORD_BLUEPRINT,\n LINEAR_BLUEPRINT,\n RESEARCH_BLUEPRINT,\n WEB_SEARCH_BLUEPRINT,\n agent,\n createResearchNote,\n entityExtraction,\n fetchDiscordMessages,\n research,\n syncLinearIssues,\n} from '@dxos/assistant-testing';\nimport { Blueprint } from '@dxos/blueprints';\nimport { type FunctionDefinition } from '@dxos/functions';\n\nimport { analysis, list, load } from '../functions';\n\nconst functions: FunctionDefinition[] = [analysis, list, load];\nconst tools = [\n 'add-to-context',\n // TODO(wittjosiah): Factor out to an ECHO blueprint.\n 'get-schemas',\n 'add-schema',\n 'create-record',\n // TODO(wittjosiah): Factor out to a generic app-framework blueprint.\n 'open-item',\n // TODO(burdon): Anthropic only.\n // https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/text-editor-tool#example-str-replace-command\n // AI_TOOL_NOT_FOUND: str_replace_based_edit_tool\n // 'str_replace_based_edit_tool',\n];\n\nexport const BLUEPRINT_KEY = 'dxos.org/blueprint/assistant';\n\nexport const createBlueprint = (): Blueprint.Blueprint =>\n Blueprint.make({\n key: BLUEPRINT_KEY,\n name: 'Assistant',\n tools: Blueprint.toolDefinitions({ functions, tools }),\n instructions: templates.system,\n });\n\nconst blueprint = createBlueprint();\n\n// TODO(dmaretskyi): Consider splitting into multiple modules.\nexport default (): Capability<any>[] => [\n contributes(Capabilities.Functions, functions),\n contributes(Capabilities.Functions, [agent]),\n contributes(Capabilities.Functions, [research, createResearchNote, entityExtraction]),\n contributes(Capabilities.BlueprintDefinition, blueprint),\n contributes(Capabilities.BlueprintDefinition, RESEARCH_BLUEPRINT),\n // TODO(burdon): Move out of assistant.\n contributes(Capabilities.Functions, [syncLinearIssues]),\n contributes(Capabilities.Functions, [fetchDiscordMessages]),\n contributes(Capabilities.BlueprintDefinition, LINEAR_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, DISCORD_BLUEPRINT),\n contributes(Capabilities.BlueprintDefinition, WEB_SEARCH_BLUEPRINT),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { defineFunction } from '@dxos/functions';\nimport { log } from '@dxos/log';\n\nexport default defineFunction({\n key: 'dxos.org/function/assistant-analysis',\n name: 'Assistant analysis',\n description: 'Enter analysis analysis mode.',\n inputSchema: Schema.Struct({\n enable: Schema.Boolean.annotations({ description: 'Enable or disable analysis mode.' }),\n }),\n outputSchema: Schema.Void,\n handler: Effect.fn(function* ({ context, data: { enable } }) {\n log.info('analysis mode', { space: context.space?.id, enable });\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\nimport { trim } from '@dxos/util';\n\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n key: 'dxos.org/function/assistant/list',\n name: 'Assistant list',\n description:\n // TODO(wittjosiah): Find a better way to prompt for looking up typenames before querying with them.\n trim`\n Lists the objects of the given type.\n Check the list-schemas tool for available types before calling this function.\n `,\n inputSchema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The typename of the objects to list.',\n }),\n }),\n outputSchema: Schema.Struct({\n results: Schema.Array(\n Schema.Struct({\n dxn: Schema.String.annotations({ description: 'The DXN of the object.' }),\n label: Schema.optional(Schema.String.annotations({ description: 'The label of the object.' })),\n }),\n ),\n }),\n handler: Effect.fn(function* ({ data: { typename } }) {\n // TODO(wittjosiah): Typename query is not working for dynamic schemas.\n const [schema] = yield* DatabaseService.runSchemaQuery({ typename });\n const filter = schema ? Filter.type(schema) : Filter.typename(typename);\n\n const { objects } = yield* DatabaseService.runQuery(Query.select(filter));\n const results = objects.map((object) => ({\n dxn: Obj.getDXN(object).toString(),\n label: Obj.getLabel(object),\n }));\n\n return { results };\n }),\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { ArtifactId } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { DatabaseService, defineFunction } from '@dxos/functions';\n\n// TODO(burdon): Common error handling.\n// TODO(burdon): Factor out to space plugin.\nexport default defineFunction({\n key: 'dxos.org/function/assistant/load',\n name: 'Assistant load',\n description: 'Loads the object.',\n inputSchema: Schema.Struct({\n id: ArtifactId.annotations({\n description: 'The ID of the object.',\n }),\n typename: Schema.String.annotations({\n description: 'The typename of the object.',\n }),\n }),\n outputSchema: Schema.Struct({\n // TODO(wittjosiah): Type.Obj.Any | Type.Relation.Any\n object: Schema.Any,\n }),\n handler: Effect.fn(function* ({ data: { id, typename } }) {\n const object = yield* DatabaseService.resolve(ArtifactId.toDXN(id));\n return yield* Function.pipe(\n Option.fromNullable(object),\n Option.flatMap((object) => (Obj.getTypename(object) === typename ? Option.some(object) : Option.none())),\n Option.match({\n onNone: () => Effect.fail('Object not found.'),\n onSome: (object) => {\n // log.info('object', { object });\n return Effect.succeed({ object });\n },\n }),\n );\n }),\n});\n"],
5
- "mappings": "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",
6
- "names": ["Capabilities", "contributes", "templates", "DISCORD_BLUEPRINT", "LINEAR_BLUEPRINT", "RESEARCH_BLUEPRINT", "WEB_SEARCH_BLUEPRINT", "agent", "createResearchNote", "entityExtraction", "fetchDiscordMessages", "research", "syncLinearIssues", "Blueprint", "Effect", "Schema", "defineFunction", "log", "key", "name", "description", "inputSchema", "Struct", "enable", "Boolean", "annotations", "outputSchema", "Void", "handler", "fn", "context", "data", "info", "space", "id", "Effect", "Schema", "Filter", "Obj", "Query", "DatabaseService", "defineFunction", "trim", "defineFunction", "key", "name", "description", "trim", "inputSchema", "Struct", "typename", "String", "annotations", "outputSchema", "results", "Array", "dxn", "label", "optional", "handler", "fn", "data", "schema", "DatabaseService", "runSchemaQuery", "filter", "Filter", "type", "objects", "runQuery", "Query", "select", "map", "object", "Obj", "getDXN", "toString", "getLabel", "Effect", "Function", "Option", "Schema", "ArtifactId", "Obj", "DatabaseService", "defineFunction", "defineFunction", "key", "name", "description", "inputSchema", "Struct", "id", "ArtifactId", "annotations", "typename", "String", "outputSchema", "object", "Any", "handler", "fn", "data", "DatabaseService", "resolve", "toDXN", "pipe", "fromNullable", "flatMap", "Obj", "getTypename", "some", "none", "match", "onNone", "fail", "onSome", "succeed", "functions", "analysis", "list", "load", "tools", "BLUEPRINT_KEY", "createBlueprint", "Blueprint", "make", "key", "name", "toolDefinitions", "instructions", "templates", "system", "blueprint", "contributes", "Capabilities", "Functions", "agent", "research", "createResearchNote", "entityExtraction", "BlueprintDefinition", "RESEARCH_BLUEPRINT", "syncLinearIssues", "fetchDiscordMessages", "LINEAR_BLUEPRINT", "DISCORD_BLUEPRINT", "WEB_SEARCH_BLUEPRINT"]
7
- }