@dxos/plugin-automation 0.7.5-main.9d2a38b → 0.7.5-main.b19bfc8

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 (370) hide show
  1. package/dist/lib/browser/AssistantDialog-V67OWLRP.mjs +116 -0
  2. package/dist/lib/browser/AssistantDialog-V67OWLRP.mjs.map +7 -0
  3. package/dist/lib/browser/AutomationPanel-NCKK3CFN.mjs +8 -0
  4. package/dist/lib/browser/AutomationPanel-NCKK3CFN.mjs.map +7 -0
  5. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs +33 -0
  6. package/dist/lib/browser/ChatContainer-5BS6THNV.mjs.map +7 -0
  7. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs +23 -0
  8. package/dist/lib/browser/TemplateContainer-HJJV44CE.mjs.map +7 -0
  9. package/dist/lib/browser/ai-client-T2PBJISL.mjs +22 -0
  10. package/dist/lib/browser/ai-client-T2PBJISL.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs +110 -0
  12. package/dist/lib/browser/app-graph-builder-IR3CGVM6.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-62E2AEXF.mjs +162 -0
  14. package/dist/lib/browser/chunk-62E2AEXF.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-67KDIIM6.mjs +15 -0
  16. package/dist/lib/browser/chunk-67KDIIM6.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-BQ4WHY4D.mjs +1818 -0
  18. package/dist/lib/browser/chunk-BQ4WHY4D.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-HZSTXZWK.mjs} +4 -2
  20. package/dist/lib/browser/chunk-HZSTXZWK.mjs.map +7 -0
  21. package/dist/lib/{node-esm/AutomationPanel-R3D6CRF5.mjs → browser/chunk-LJ7F4KDM.mjs} +31 -21
  22. package/dist/lib/browser/chunk-LJ7F4KDM.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-QH5E22EL.mjs +108 -0
  24. package/dist/lib/browser/chunk-QH5E22EL.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-XAIWETH6.mjs +81 -0
  26. package/dist/lib/browser/chunk-XAIWETH6.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +163 -273
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs +44 -0
  30. package/dist/lib/browser/intent-resolver-ICLE6FSI.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs +80 -0
  33. package/dist/lib/browser/react-surface-KEKVLCPQ.mjs.map +7 -0
  34. package/dist/lib/browser/settings-FE5DDWOE.mjs +22 -0
  35. package/dist/lib/browser/settings-FE5DDWOE.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +20 -9
  37. package/dist/lib/node/AssistantDialog-E62O72KI.cjs +140 -0
  38. package/dist/lib/node/AssistantDialog-E62O72KI.cjs.map +7 -0
  39. package/dist/lib/node/AutomationPanel-6COLKRIB.cjs +26 -0
  40. package/dist/lib/node/AutomationPanel-6COLKRIB.cjs.map +7 -0
  41. package/dist/lib/node/{react-surface-DVAU4MGD.cjs → ChatContainer-4QTLL7TH.cjs} +30 -26
  42. package/dist/lib/node/ChatContainer-4QTLL7TH.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-25AQIF3L.cjs → TemplateContainer-3YCM6XPU.cjs} +21 -11
  44. package/dist/lib/node/TemplateContainer-3YCM6XPU.cjs.map +7 -0
  45. package/dist/lib/node/ai-client-L5GUSAER.cjs +38 -0
  46. package/dist/lib/node/ai-client-L5GUSAER.cjs.map +7 -0
  47. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs +122 -0
  48. package/dist/lib/node/app-graph-builder-ECNVGTRT.cjs.map +7 -0
  49. package/dist/lib/node/chunk-3QSK6IPK.cjs +133 -0
  50. package/dist/lib/node/chunk-3QSK6IPK.cjs.map +7 -0
  51. package/dist/lib/node/chunk-76F5BCJE.cjs +111 -0
  52. package/dist/lib/node/chunk-76F5BCJE.cjs.map +7 -0
  53. package/dist/lib/node/chunk-B37JIAOP.cjs +1795 -0
  54. package/dist/lib/node/chunk-B37JIAOP.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-BAQRBGOJ.cjs} +8 -5
  56. package/dist/lib/node/chunk-BAQRBGOJ.cjs.map +7 -0
  57. package/dist/lib/node/chunk-UVWK2XJE.cjs +183 -0
  58. package/dist/lib/node/chunk-UVWK2XJE.cjs.map +7 -0
  59. package/dist/lib/node/{AutomationPanel-PPODB5XA.cjs → chunk-V4L7LTWM.cjs} +39 -24
  60. package/dist/lib/node/chunk-V4L7LTWM.cjs.map +7 -0
  61. package/dist/lib/node/chunk-VNBYGJ4K.cjs +34 -0
  62. package/dist/lib/node/chunk-VNBYGJ4K.cjs.map +7 -0
  63. package/dist/lib/node/index.cjs +166 -292
  64. package/dist/lib/node/index.cjs.map +4 -4
  65. package/dist/lib/node/intent-resolver-4MQZULXW.cjs +58 -0
  66. package/dist/lib/node/intent-resolver-4MQZULXW.cjs.map +7 -0
  67. package/dist/lib/node/meta.json +1 -1
  68. package/dist/lib/node/react-surface-4RVHY6WI.cjs +95 -0
  69. package/dist/lib/node/react-surface-4RVHY6WI.cjs.map +7 -0
  70. package/dist/lib/node/settings-GOIB2WJQ.cjs +36 -0
  71. package/dist/lib/node/settings-GOIB2WJQ.cjs.map +7 -0
  72. package/dist/lib/node/types/index.cjs +20 -9
  73. package/dist/lib/node/types/index.cjs.map +2 -2
  74. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs +117 -0
  75. package/dist/lib/node-esm/AssistantDialog-IPRBJKWA.mjs.map +7 -0
  76. package/dist/lib/node-esm/AutomationPanel-3MPIAO7R.mjs +9 -0
  77. package/dist/lib/node-esm/AutomationPanel-3MPIAO7R.mjs.map +7 -0
  78. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs +34 -0
  79. package/dist/lib/node-esm/ChatContainer-4IWUGMGM.mjs.map +7 -0
  80. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs +24 -0
  81. package/dist/lib/node-esm/TemplateContainer-YJIXR24Z.mjs.map +7 -0
  82. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs +23 -0
  83. package/dist/lib/node-esm/ai-client-45LZLW7V.mjs.map +7 -0
  84. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs +111 -0
  85. package/dist/lib/node-esm/app-graph-builder-HMRKSZ2X.mjs.map +7 -0
  86. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs +163 -0
  87. package/dist/lib/node-esm/chunk-5BKKHYO5.mjs.map +7 -0
  88. package/dist/lib/{browser/AutomationPanel-IHZ4JKVS.mjs → node-esm/chunk-AWAU4BHR.mjs} +32 -20
  89. package/dist/lib/node-esm/chunk-AWAU4BHR.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs +82 -0
  91. package/dist/lib/node-esm/chunk-CAWPHOY4.mjs.map +7 -0
  92. package/dist/lib/node-esm/chunk-I32H7MCF.mjs +109 -0
  93. package/dist/lib/node-esm/chunk-I32H7MCF.mjs.map +7 -0
  94. package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-IG4GSWZN.mjs} +4 -2
  95. package/dist/lib/node-esm/chunk-IG4GSWZN.mjs.map +7 -0
  96. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs +1819 -0
  97. package/dist/lib/node-esm/chunk-QHKP5HT2.mjs.map +7 -0
  98. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs +16 -0
  99. package/dist/lib/node-esm/chunk-SS7U6GCX.mjs.map +7 -0
  100. package/dist/lib/node-esm/index.mjs +163 -273
  101. package/dist/lib/node-esm/index.mjs.map +4 -4
  102. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs +45 -0
  103. package/dist/lib/node-esm/intent-resolver-ZS7XTYLG.mjs.map +7 -0
  104. package/dist/lib/node-esm/meta.json +1 -1
  105. package/dist/lib/node-esm/react-surface-5ILD642V.mjs +81 -0
  106. package/dist/lib/node-esm/react-surface-5ILD642V.mjs.map +7 -0
  107. package/dist/lib/node-esm/settings-ANNQPPRY.mjs +23 -0
  108. package/dist/lib/node-esm/settings-ANNQPPRY.mjs.map +7 -0
  109. package/dist/lib/node-esm/types/index.mjs +20 -9
  110. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/ai-client.d.ts +5 -0
  112. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/app-graph-builder.d.ts +111 -110
  114. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  116. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +117 -113
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  120. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/settings.d.ts +4 -0
  123. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  124. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +7 -0
  125. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -0
  126. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts +8 -0
  127. package/dist/types/src/components/AmbientDialog/AmbientDialog.stories.d.ts.map +1 -0
  128. package/dist/types/src/components/AmbientDialog/index.d.ts +2 -0
  129. package/dist/types/src/components/AmbientDialog/index.d.ts.map +1 -0
  130. package/dist/types/src/components/AssistantDialog.d.ts +7 -0
  131. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -0
  132. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -2
  133. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  134. package/dist/types/src/components/AutomationSettings/AutomationSettings.d.ts +5 -0
  135. package/dist/types/src/components/AutomationSettings/AutomationSettings.d.ts.map +1 -0
  136. package/dist/types/src/components/AutomationSettings/index.d.ts +2 -0
  137. package/dist/types/src/components/AutomationSettings/index.d.ts.map +1 -0
  138. package/dist/types/src/components/ChatContainer.d.ts +7 -0
  139. package/dist/types/src/components/ChatContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/Prompt/Prompt.d.ts +17 -0
  141. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
  142. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +9 -0
  143. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
  144. package/dist/types/src/components/Prompt/PromptBar.d.ts +10 -0
  145. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -0
  146. package/dist/types/src/components/Prompt/autocomplete.d.ts +21 -0
  147. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -0
  148. package/dist/types/src/components/Prompt/index.d.ts +3 -0
  149. package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +5 -0
  151. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
  152. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
  153. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
  155. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
  156. package/dist/types/src/components/TemplateContainer.d.ts +7 -0
  157. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -0
  158. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +12 -0
  159. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -0
  160. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts +8 -0
  161. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -0
  162. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +10 -0
  163. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -0
  164. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts +8 -0
  165. package/dist/types/src/components/TemplateEditor/TemplateForm.stories.d.ts.map +1 -0
  166. package/dist/types/src/components/TemplateEditor/index.d.ts +2 -0
  167. package/dist/types/src/components/TemplateEditor/index.d.ts.map +1 -0
  168. package/dist/types/src/components/TemplateEditor/types.d.ts.map +1 -0
  169. package/dist/types/src/components/Thread/Thread.d.ts +17 -0
  170. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -0
  171. package/dist/types/src/components/Thread/Thread.stories.d.ts +11 -0
  172. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -0
  173. package/dist/types/src/components/Thread/ThreadContainer.d.ts +10 -0
  174. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -0
  175. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +15 -0
  176. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -0
  177. package/dist/types/src/components/Thread/ThreadMessage.d.ts +13 -0
  178. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
  179. package/dist/types/src/components/Thread/ToolInvocations.d.ts +13 -0
  180. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -0
  181. package/dist/types/src/components/Thread/index.d.ts +3 -0
  182. package/dist/types/src/components/Thread/index.d.ts.map +1 -0
  183. package/dist/types/src/components/Thread/reducer.d.ts +12 -0
  184. package/dist/types/src/components/Thread/reducer.d.ts.map +1 -0
  185. package/dist/types/src/components/Toolbox/Toolbox.d.ts +19 -0
  186. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -0
  187. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts +8 -0
  188. package/dist/types/src/components/Toolbox/Toolbox.stories.d.ts.map +1 -0
  189. package/dist/types/src/components/Toolbox/index.d.ts +2 -0
  190. package/dist/types/src/components/Toolbox/index.d.ts.map +1 -0
  191. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -2
  192. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  193. package/dist/types/src/components/index.d.ts +19 -2
  194. package/dist/types/src/components/index.d.ts.map +1 -1
  195. package/dist/types/src/hooks/index.d.ts +5 -0
  196. package/dist/types/src/hooks/index.d.ts.map +1 -1
  197. package/dist/types/src/hooks/processor.d.ts +75 -0
  198. package/dist/types/src/hooks/processor.d.ts.map +1 -0
  199. package/dist/types/src/hooks/processor.test.d.ts +2 -0
  200. package/dist/types/src/hooks/processor.test.d.ts.map +1 -0
  201. package/dist/types/src/hooks/useChatProcessor.d.ts +8 -0
  202. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
  203. package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
  204. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
  205. package/dist/types/src/hooks/useServices.d.ts +7 -0
  206. package/dist/types/src/hooks/useServices.d.ts.map +1 -0
  207. package/dist/types/src/hooks/useTextInputEvents.d.ts +13 -0
  208. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -0
  209. package/dist/types/src/index.d.ts +1 -2
  210. package/dist/types/src/index.d.ts.map +1 -1
  211. package/dist/types/src/meta.d.ts +1 -0
  212. package/dist/types/src/meta.d.ts.map +1 -1
  213. package/dist/types/src/testing/index.d.ts +2 -1
  214. package/dist/types/src/testing/index.d.ts.map +1 -1
  215. package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +3 -1
  216. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  217. package/dist/types/src/testing/test-services.d.ts +5 -0
  218. package/dist/types/src/testing/test-services.d.ts.map +1 -0
  219. package/dist/types/src/tools/function.d.ts +5 -0
  220. package/dist/types/src/tools/function.d.ts.map +1 -0
  221. package/dist/types/src/tools/index.d.ts +3 -0
  222. package/dist/types/src/tools/index.d.ts.map +1 -0
  223. package/dist/types/src/tools/openapi.d.ts +10 -0
  224. package/dist/types/src/tools/openapi.d.ts.map +1 -0
  225. package/dist/types/src/tools/openapi.test.d.ts +2 -0
  226. package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
  227. package/dist/types/src/translations.d.ts +110 -2
  228. package/dist/types/src/translations.d.ts.map +1 -1
  229. package/dist/types/src/types/chat.d.ts +12 -0
  230. package/dist/types/src/types/chat.d.ts.map +1 -0
  231. package/dist/types/src/types/index.d.ts +4 -1
  232. package/dist/types/src/types/index.d.ts.map +1 -1
  233. package/dist/types/src/types/service.d.ts +160 -0
  234. package/dist/types/src/types/service.d.ts.map +1 -0
  235. package/dist/types/src/types/template.d.ts +40 -0
  236. package/dist/types/src/types/template.d.ts.map +1 -0
  237. package/dist/types/src/types/types.d.ts +37 -0
  238. package/dist/types/src/types/types.d.ts.map +1 -0
  239. package/package.json +62 -40
  240. package/src/AutomationPlugin.tsx +68 -21
  241. package/src/capabilities/ai-client.ts +19 -0
  242. package/src/capabilities/app-graph-builder.ts +82 -110
  243. package/src/capabilities/capabilities.ts +12 -0
  244. package/src/capabilities/index.ts +5 -0
  245. package/src/capabilities/intent-resolver.ts +38 -0
  246. package/src/capabilities/react-surface.tsx +42 -6
  247. package/src/capabilities/settings.ts +19 -0
  248. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +81 -0
  249. package/src/components/AmbientDialog/AmbientDialog.tsx +103 -0
  250. package/src/components/AmbientDialog/index.ts +5 -0
  251. package/src/components/AssistantDialog.tsx +33 -0
  252. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +2 -2
  253. package/src/components/AutomationSettings/AutomationSettings.tsx +49 -0
  254. package/src/components/AutomationSettings/index.ts +5 -0
  255. package/src/components/ChatContainer.tsx +29 -0
  256. package/src/components/Prompt/Prompt.stories.tsx +79 -0
  257. package/src/components/Prompt/Prompt.tsx +100 -0
  258. package/src/components/Prompt/PromptBar.tsx +100 -0
  259. package/src/components/Prompt/autocomplete.ts +212 -0
  260. package/src/components/Prompt/index.ts +6 -0
  261. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
  262. package/src/components/ServiceRegistry/ServiceRegistry.tsx +76 -0
  263. package/src/components/ServiceRegistry/index.ts +5 -0
  264. package/src/components/TemplateContainer.tsx +21 -0
  265. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +72 -0
  266. package/src/components/TemplateEditor/TemplateEditor.tsx +76 -0
  267. package/src/components/TemplateEditor/TemplateForm.stories.tsx +65 -0
  268. package/src/components/TemplateEditor/TemplateForm.tsx +184 -0
  269. package/src/components/{PromptEditor → TemplateEditor}/index.ts +1 -1
  270. package/src/components/Thread/Thread.stories.tsx +212 -0
  271. package/src/components/Thread/Thread.tsx +97 -0
  272. package/src/components/Thread/ThreadContainer.stories.tsx +258 -0
  273. package/src/components/Thread/ThreadContainer.tsx +78 -0
  274. package/src/components/Thread/ThreadMessage.tsx +187 -0
  275. package/src/components/Thread/ToolInvocations.tsx +93 -0
  276. package/src/components/Thread/index.ts +6 -0
  277. package/src/components/Thread/reducer.ts +52 -0
  278. package/src/components/Toolbox/Toolbox.stories.tsx +65 -0
  279. package/src/components/Toolbox/Toolbox.tsx +117 -0
  280. package/src/components/Toolbox/index.ts +5 -0
  281. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +2 -2
  282. package/src/components/TriggerEditor/TriggerEditor.tsx +25 -18
  283. package/src/components/index.ts +11 -1
  284. package/src/hooks/index.ts +6 -0
  285. package/src/hooks/processor.test.ts +15 -0
  286. package/src/hooks/processor.ts +219 -0
  287. package/src/hooks/useChatProcessor.tsx +77 -0
  288. package/src/hooks/useMessageQueue.ts +23 -0
  289. package/src/hooks/useServices.ts +28 -0
  290. package/src/hooks/useTextInputEvents.ts +49 -0
  291. package/src/index.ts +2 -2
  292. package/src/meta.ts +4 -1
  293. package/src/testing/index.ts +2 -1
  294. package/src/testing/{testing.ts → test-functions.ts} +9 -2
  295. package/src/testing/test-services.ts +131 -0
  296. package/src/tools/function.ts +47 -0
  297. package/src/tools/index.ts +6 -0
  298. package/src/tools/openapi.test.ts +224 -0
  299. package/src/tools/openapi.ts +331 -0
  300. package/src/translations.ts +27 -2
  301. package/src/types/chat.ts +11 -0
  302. package/src/types/index.ts +4 -1
  303. package/src/types/service.ts +102 -0
  304. package/src/types/template.ts +34 -0
  305. package/src/types/types.ts +41 -0
  306. package/src/typings.d.ts +9 -0
  307. package/dist/lib/browser/AssistantPanel-N276BTPV.mjs +0 -339
  308. package/dist/lib/browser/AssistantPanel-N276BTPV.mjs.map +0 -7
  309. package/dist/lib/browser/AutomationPanel-IHZ4JKVS.mjs.map +0 -7
  310. package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs +0 -131
  311. package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs.map +0 -7
  312. package/dist/lib/browser/chunk-4AIMDHKY.mjs +0 -10
  313. package/dist/lib/browser/chunk-4AIMDHKY.mjs.map +0 -7
  314. package/dist/lib/browser/chunk-DL6LB2NI.mjs +0 -43
  315. package/dist/lib/browser/chunk-DL6LB2NI.mjs.map +0 -7
  316. package/dist/lib/browser/chunk-HKX3D3ZP.mjs.map +0 -7
  317. package/dist/lib/browser/react-surface-LL72F3F4.mjs +0 -34
  318. package/dist/lib/browser/react-surface-LL72F3F4.mjs.map +0 -7
  319. package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs +0 -359
  320. package/dist/lib/node/AssistantPanel-Z4GVHUF3.cjs.map +0 -7
  321. package/dist/lib/node/AutomationPanel-PPODB5XA.cjs.map +0 -7
  322. package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs +0 -147
  323. package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs.map +0 -7
  324. package/dist/lib/node/chunk-25AQIF3L.cjs.map +0 -7
  325. package/dist/lib/node/chunk-5VF5JKUN.cjs.map +0 -7
  326. package/dist/lib/node/chunk-JNDMZQH7.cjs +0 -68
  327. package/dist/lib/node/chunk-JNDMZQH7.cjs.map +0 -7
  328. package/dist/lib/node/react-surface-DVAU4MGD.cjs.map +0 -7
  329. package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs +0 -340
  330. package/dist/lib/node-esm/AssistantPanel-DDCQHBJX.mjs.map +0 -7
  331. package/dist/lib/node-esm/AutomationPanel-R3D6CRF5.mjs.map +0 -7
  332. package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs +0 -132
  333. package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-GIAYUM5I.mjs +0 -45
  335. package/dist/lib/node-esm/chunk-GIAYUM5I.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-X3LPRWIL.mjs.map +0 -7
  337. package/dist/lib/node-esm/chunk-XW7TEQA3.mjs +0 -12
  338. package/dist/lib/node-esm/chunk-XW7TEQA3.mjs.map +0 -7
  339. package/dist/lib/node-esm/react-surface-4BED2PZ4.mjs +0 -35
  340. package/dist/lib/node-esm/react-surface-4BED2PZ4.mjs.map +0 -7
  341. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  342. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  343. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  344. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  345. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  346. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  347. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
  348. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
  349. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
  350. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
  351. package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
  352. package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
  353. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
  354. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
  355. package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
  356. package/dist/types/src/presets.d.ts +0 -9
  357. package/dist/types/src/presets.d.ts.map +0 -1
  358. package/dist/types/src/testing/testing.d.ts.map +0 -1
  359. package/dist/types/src/types/schema.d.ts +0 -63
  360. package/dist/types/src/types/schema.d.ts.map +0 -1
  361. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -230
  362. package/src/components/AssistantPanel/index.ts +0 -7
  363. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  364. package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
  365. package/src/components/PromptEditor/PromptEditor.tsx +0 -222
  366. package/src/components/PromptEditor/prompt-extension.ts +0 -43
  367. package/src/presets.ts +0 -248
  368. package/src/types/schema.ts +0 -38
  369. /package/dist/types/src/components/{PromptEditor → TemplateEditor}/types.d.ts +0 -0
  370. /package/src/components/{PromptEditor → TemplateEditor}/types.tsx +0 -0
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var AssistantDialog_E62O72KI_exports = {};
30
+ __export(AssistantDialog_E62O72KI_exports, {
31
+ AssistantDialog: () => AssistantDialog,
32
+ default: () => AssistantDialog_default
33
+ });
34
+ module.exports = __toCommonJS(AssistantDialog_E62O72KI_exports);
35
+ var import_chunk_B37JIAOP = require("./chunk-B37JIAOP.cjs");
36
+ var import_chunk_VNBYGJ4K = require("./chunk-VNBYGJ4K.cjs");
37
+ var import_chunk_UVWK2XJE = require("./chunk-UVWK2XJE.cjs");
38
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
39
+ var import_react = __toESM(require("react"));
40
+ var import_app_framework = require("@dxos/app-framework");
41
+ var import_plugin_transcription = require("@dxos/plugin-transcription");
42
+ var import_react_ui = require("@dxos/react-ui");
43
+ var import_react2 = __toESM(require("react"));
44
+ var import_react_ui2 = require("@dxos/react-ui");
45
+ var import_react_ui_dnd = require("@dxos/react-ui-dnd");
46
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
47
+ var preventDefault = (event) => event.preventDefault();
48
+ var minSize = 5;
49
+ var AmbientDialog = ({ children, open: _open, title, onOpenChange }) => {
50
+ const [resizeKey, setReizeKey] = (0, import_react2.useState)(0);
51
+ const [size, setSize] = (0, import_react2.useState)("min-content");
52
+ const [open, setOpen] = (0, import_react2.useState)(_open);
53
+ (0, import_react2.useEffect)(() => {
54
+ setOpen(_open);
55
+ }, [
56
+ _open
57
+ ]);
58
+ (0, import_react2.useEffect)(() => {
59
+ setSize(open ? "min-content" : minSize);
60
+ setReizeKey((key) => key + 1);
61
+ }, [
62
+ open
63
+ ]);
64
+ const handleToggle = (0, import_react2.useCallback)(() => {
65
+ setOpen((open2) => {
66
+ onOpenChange?.(!open2);
67
+ return !open2;
68
+ });
69
+ }, []);
70
+ return /* @__PURE__ */ import_react2.default.createElement("div", {
71
+ role: "none",
72
+ className: "dx-dialog__overlay bg-transparent pointer-events-none",
73
+ "data-block-align": "end"
74
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Dialog.Content, {
75
+ classNames: 'relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing="true"])]:duration-200',
76
+ inOverlayLayout: true,
77
+ ...import_react_ui_dnd.resizeAttributes,
78
+ style: {
79
+ ...(0, import_react_ui_dnd.sizeStyle)(size, "vertical", true),
80
+ maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)"
81
+ },
82
+ onInteractOutside: preventDefault
83
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_dnd.ResizeHandle, {
84
+ key: resizeKey,
85
+ side: "block-start",
86
+ defaultSize: "min-content",
87
+ minSize,
88
+ fallbackSize: minSize,
89
+ iconPosition: "center",
90
+ onSizeChange: setSize
91
+ }), /* @__PURE__ */ import_react2.default.createElement(DialogHeader, {
92
+ open,
93
+ title,
94
+ onToggle: handleToggle
95
+ }), children));
96
+ };
97
+ var DialogHeader = ({ open, title, onToggle }) => {
98
+ return /* @__PURE__ */ import_react2.default.createElement("div", {
99
+ className: "flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden"
100
+ }, /* @__PURE__ */ import_react2.default.createElement("div", {
101
+ className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
102
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Dialog.Close, null, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Icon, {
103
+ icon: "ph--x--regular"
104
+ }))), /* @__PURE__ */ import_react2.default.createElement("div", {
105
+ className: "grow"
106
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Dialog.Title, {
107
+ classNames: "flex justify-center text-xs text-subdued"
108
+ }, title)), /* @__PURE__ */ import_react2.default.createElement("div", {
109
+ className: "flex w-[--rail-action] h-[--rail-action] items-center justify-center"
110
+ }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.IconButton, {
111
+ variant: "ghost",
112
+ icon: "ph--caret-up--regular",
113
+ classNames: (0, import_react_ui_theme.mx)("[&>svg]:transition [&>svg]:duration-200", open && "[&>svg]:rotate-180"),
114
+ iconOnly: true,
115
+ label: "Shrink",
116
+ onClick: onToggle
117
+ })));
118
+ };
119
+ var AssistantDialog = ({ chat }) => {
120
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_BAQRBGOJ.AUTOMATION_PLUGIN);
121
+ const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
122
+ const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_BAQRBGOJ.AUTOMATION_PLUGIN)?.value;
123
+ const [open, setOpen] = (0, import_react.useState)(false);
124
+ return /* @__PURE__ */ import_react.default.createElement(AmbientDialog, {
125
+ open,
126
+ onOpenChange: setOpen,
127
+ title: t("assistant dialog title")
128
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_B37JIAOP.ThreadContainer, {
129
+ chat,
130
+ onOpenChange: setOpen,
131
+ settings,
132
+ transcription
133
+ }));
134
+ };
135
+ var AssistantDialog_default = AssistantDialog;
136
+ // Annotate the CommonJS export names for ESM import in node:
137
+ 0 && (module.exports = {
138
+ AssistantDialog
139
+ });
140
+ //# sourceMappingURL=AssistantDialog-E62O72KI.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantDialog.tsx", "../../../src/components/AmbientDialog/AmbientDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useCapability, Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { AmbientDialog } from './AmbientDialog';\nimport { ThreadContainer } from './Thread';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { type AutomationSettingsProps, type AIChatType } from '../types';\n\nexport const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const transcription = useCapabilities(TranscriptionCapabilities.Transcription).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AutomationSettingsProps>(\n AUTOMATION_PLUGIN,\n )?.value;\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(false);\n\n return (\n <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>\n <ThreadContainer chat={chat} onOpenChange={setOpen} settings={settings} transcription={transcription} />\n </AmbientDialog>\n );\n};\n\nexport default AssistantDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback, useEffect, useState } from 'react';\n\nimport { Dialog, Icon, IconButton } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nconst minSize = 5;\n\n// TODO(burdon): Factor out.\nexport const AmbientDialog = ({\n children,\n open: _open,\n title,\n onOpenChange,\n}: PropsWithChildren<{ open?: boolean; onOpenChange?: (open: boolean) => void; title?: string }>) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(_open);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(_open);\n }, [_open]);\n\n // Update size and key.\n useEffect(() => {\n setSize(open ? 'min-content' : minSize);\n setReizeKey((key) => key + 1);\n }, [open]);\n\n // TODO(burdon): Animate open/close.\n // NOTE: We set the min size to 5rem (80px), and the header and prompt bar to 40px (i.e., the rail-size) each.\n // The dialog has no vertical padding and has box-content so that when closed it collapses to the size of the header and prompt bar.\n const handleToggle = useCallback(() => {\n setOpen((open) => {\n onOpenChange?.(!open);\n return !open;\n });\n }, []);\n\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing=\"true\"])]:duration-200'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical', true),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)',\n }}\n onInteractOutside={preventDefault}\n >\n <ResizeHandle\n key={resizeKey}\n side='block-start'\n defaultSize='min-content'\n minSize={minSize}\n fallbackSize={minSize}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <DialogHeader open={open} title={title} onToggle={handleToggle} />\n\n {children}\n </Dialog.Content>\n </div>\n );\n};\n\n/**\n * Matches same layout grid as PromptBar.\n */\nconst DialogHeader = ({ open, title, onToggle }: { open?: boolean; title?: string; onToggle: () => void }) => {\n return (\n <div className='flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden'>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <Dialog.Close>\n <Icon icon='ph--x--regular' />\n </Dialog.Close>\n </div>\n <div className='grow'>\n <Dialog.Title classNames='flex justify-center text-xs text-subdued'>{title}</Dialog.Title>\n </div>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <IconButton\n variant='ghost'\n icon={'ph--caret-up--regular'}\n classNames={mx('[&>svg]:transition [&>svg]:duration-200', open && '[&>svg]:rotate-180')}\n iconOnly\n label='Shrink'\n onClick={onToggle}\n />\n </div>\n </div>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAyC;AAEzC,2BAA6D;AAC7D,kCAA0C;AAC1C,sBAA+B;ACJ/B,IAAAA,gBAAgF;AAEhF,IAAAC,mBAAyC;AACzC,0BAAqE;AACrE,4BAAmB;AAEnB,IAAMC,iBAAiB,CAACC,UAAiBA,MAAMD,eAAc;AAE7D,IAAME,UAAU;AAGT,IAAMC,gBAAgB,CAAC,EAC5BC,UACAC,MAAMC,OACNC,OACAC,aAAY,MACkF;AAC9F,QAAM,CAACC,WAAWC,WAAAA,QAAeC,wBAAS,CAAA;AAC1C,QAAM,CAACC,MAAMC,OAAAA,QAAWF,wBAAe,aAAA;AACvC,QAAM,CAACN,MAAMS,OAAAA,QAAWH,wBAASL,KAAAA;AAGjCS,+BAAU,MAAA;AACRD,YAAQR,KAAAA;EACV,GAAG;IAACA;GAAM;AAGVS,+BAAU,MAAA;AACRF,YAAQR,OAAO,gBAAgBH,OAAAA;AAC/BQ,gBAAY,CAACM,QAAQA,MAAM,CAAA;EAC7B,GAAG;IAACX;GAAK;AAKT,QAAMY,mBAAeC,2BAAY,MAAA;AAC/BJ,YAAQ,CAACT,UAAAA;AACPG,qBAAe,CAACH,KAAAA;AAChB,aAAO,CAACA;IACV,CAAA;EACF,GAAG,CAAA,CAAE;AAEL,SACE,8BAAAc,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;IAAwDC,oBAAiB;KAClG,8BAAAJ,QAAA,cAACK,wBAAOC,SAAO;IACbC,YAAW;IACXC,iBAAAA;IACC,GAAGC;IACJC,OAAO;MACL,OAAGC,+BAAUlB,MAAM,YAAY,IAAA;MAC/BmB,cAAc;IAChB;IACAC,mBAAmBhC;KAEnB,8BAAAmB,QAAA,cAACc,kCAAAA;IACCjB,KAAKP;IACLyB,MAAK;IACLC,aAAY;IACZjC;IACAkC,cAAclC;IACdmC,cAAa;IACbC,cAAczB;MAGhB,8BAAAM,QAAA,cAACoB,cAAAA;IAAalC;IAAYE;IAAciC,UAAUvB;MAEjDb,QAAAA,CAAAA;AAIT;AAKA,IAAMmC,eAAe,CAAC,EAAElC,MAAME,OAAOiC,SAAQ,MAA4D;AACvG,SACE,8BAAArB,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACK,wBAAOiB,OAAK,MACX,8BAAAtB,QAAA,cAACuB,uBAAAA;IAAKC,MAAK;QAGf,8BAAAxB,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACK,wBAAOoB,OAAK;IAAClB,YAAW;KAA4CnB,KAAAA,CAAAA,GAEvE,8BAAAY,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAAC0B,6BAAAA;IACCC,SAAQ;IACRH,MAAM;IACNjB,gBAAYqB,0BAAG,2CAA2C1C,QAAQ,oBAAA;IAClE2C,UAAAA;IACAC,OAAM;IACNC,SAASV;;AAKnB;ADvFO,IAAMW,kBAA6C,CAAC,EAAEC,KAAI,MAAE;AACjE,QAAM,EAAEC,EAAC,QAAKC,gCAAeC,uCAAAA;AAC7B,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,aAAa,EAAEC,SAAS;AACxF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SACzDV,uCAAAA,GACCW;AAGH,QAAM,CAAC7D,MAAMS,OAAAA,QAAWH,aAAAA,UAAS,KAAA;AAEjC,SACEQ,6BAAAA,QAAA,cAAChB,eAAAA;IAAcE;IAAYG,cAAcM;IAASP,OAAO8C,EAAE,wBAAA;KACzDlC,6BAAAA,QAAA,cAACgD,uCAAAA;IAAgBf;IAAY5C,cAAcM;IAAS+C;IAAoBL;;AAG9E;AAEA,IAAA,0BAAeL;",
6
+ "names": ["import_react", "import_react_ui", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "_open", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "React", "div", "role", "className", "data-block-align", "Dialog", "Content", "classNames", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "onInteractOutside", "ResizeHandle", "side", "defaultSize", "fallbackSize", "iconPosition", "onSizeChange", "DialogHeader", "onToggle", "Close", "Icon", "icon", "Title", "IconButton", "variant", "mx", "iconOnly", "label", "onClick", "AssistantDialog", "chat", "t", "useTranslation", "AUTOMATION_PLUGIN", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcription", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "ThreadContainer"]
7
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var AutomationPanel_6COLKRIB_exports = {};
20
+ __export(AutomationPanel_6COLKRIB_exports, {
21
+ default: () => import_chunk_V4L7LTWM.AutomationPanel_default
22
+ });
23
+ module.exports = __toCommonJS(AutomationPanel_6COLKRIB_exports);
24
+ var import_chunk_V4L7LTWM = require("./chunk-V4L7LTWM.cjs");
25
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
26
+ //# sourceMappingURL=AutomationPanel-6COLKRIB.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["AutomationPanel-6COLKRIB.cjs"],
4
+ "sourcesContent": ["import {\n AutomationPanel_default\n} from \"./chunk-V4L7LTWM.cjs\";\nimport \"./chunk-BAQRBGOJ.cjs\";\nexport {\n AutomationPanel_default as default\n};\n//# sourceMappingURL=AutomationPanel-6COLKRIB.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAEO;AACP,4BAAO;",
6
+ "names": []
7
+ }
@@ -26,32 +26,36 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_DVAU4MGD_exports = {};
30
- __export(react_surface_DVAU4MGD_exports, {
31
- default: () => react_surface_default
29
+ var ChatContainer_4QTLL7TH_exports = {};
30
+ __export(ChatContainer_4QTLL7TH_exports, {
31
+ ChatContainer: () => ChatContainer,
32
+ default: () => ChatContainer_default
32
33
  });
33
- module.exports = __toCommonJS(react_surface_DVAU4MGD_exports);
34
- var import_chunk_25AQIF3L = require("./chunk-25AQIF3L.cjs");
35
- var import_chunk_5VF5JKUN = require("./chunk-5VF5JKUN.cjs");
34
+ module.exports = __toCommonJS(ChatContainer_4QTLL7TH_exports);
35
+ var import_chunk_B37JIAOP = require("./chunk-B37JIAOP.cjs");
36
+ var import_chunk_VNBYGJ4K = require("./chunk-VNBYGJ4K.cjs");
37
+ var import_chunk_UVWK2XJE = require("./chunk-UVWK2XJE.cjs");
38
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
36
39
  var import_react = __toESM(require("react"));
37
40
  var import_app_framework = require("@dxos/app-framework");
38
- var import_echo = require("@dxos/react-client/echo");
39
- var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
40
- (0, import_app_framework.createSurface)({
41
- id: `${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/assistant`,
42
- role: "complementary--assistant",
43
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_25AQIF3L.AssistantPanel, {
44
- subject: data.subject
45
- })
46
- }),
47
- (0, import_app_framework.createSurface)({
48
- id: `${import_chunk_5VF5JKUN.AUTOMATION_PLUGIN}/automation`,
49
- role: "complementary--automation",
50
- filter: (data) => (0, import_echo.isEchoObject)(data.subject) && !!(0, import_echo.getSpace)(data.subject),
51
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_25AQIF3L.AutomationPanel, {
52
- space: (0, import_echo.getSpace)(data.subject),
53
- object: data.subject
54
- })
55
- })
56
- ]);
57
- //# sourceMappingURL=react-surface-DVAU4MGD.cjs.map
41
+ var import_plugin_transcription = require("@dxos/plugin-transcription");
42
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
43
+ var ChatContainer = ({ chat, role }) => {
44
+ const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
45
+ const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_BAQRBGOJ.AUTOMATION_PLUGIN)?.value;
46
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
47
+ toolbar: false,
48
+ role,
49
+ classNames: "mli-auto w-full max-w-[50rem]"
50
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_B37JIAOP.ThreadContainer, {
51
+ chat,
52
+ settings,
53
+ transcription
54
+ }));
55
+ };
56
+ var ChatContainer_default = ChatContainer;
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {
59
+ ChatContainer
60
+ });
61
+ //# sourceMappingURL=ChatContainer-4QTLL7TH.cjs.map
@@ -0,0 +1,7 @@
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, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { type AutomationSettingsProps, type AIChatType } from '../types';\n\n// TODO(burdon): Attention.\nexport const ChatContainer = ({ chat, role }: { chat: AIChatType; role: string }) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcription).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AutomationSettingsProps>(\n AUTOMATION_PLUGIN,\n )?.value;\n\n return (\n <StackItem.Content toolbar={false} role={role} classNames='mli-auto w-full max-w-[50rem]'>\n <ThreadContainer chat={chat} settings={settings} transcription={transcription} />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAA6D;AAC7D,kCAA0C;AAC1C,4BAA0B;AAOnB,IAAMA,gBAAgB,CAAC,EAAEC,MAAMC,KAAI,MAAsC;AAC9E,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,aAAa,EAAEC,SAAS;AACxF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SACzDC,uCAAAA,GACCC;AAEH,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACC,SAAS;IAAOhB;IAAYiB,YAAW;KACxD,6BAAAJ,QAAA,cAACK,uCAAAA;IAAgBnB;IAAYO;IAAoBL;;AAGvD;AAEA,IAAA,wBAAeH;",
6
+ "names": ["ChatContainer", "chat", "role", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcription", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "AUTOMATION_PLUGIN", "value", "React", "StackItem", "Content", "toolbar", "classNames", "ThreadContainer"]
7
+ }
@@ -26,18 +26,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_25AQIF3L_exports = {};
30
- __export(chunk_25AQIF3L_exports, {
31
- AssistantPanel: () => AssistantPanel,
32
- AutomationPanel: () => AutomationPanel
29
+ var TemplateContainer_3YCM6XPU_exports = {};
30
+ __export(TemplateContainer_3YCM6XPU_exports, {
31
+ TemplateContainer: () => TemplateContainer,
32
+ default: () => TemplateContainer_default
33
33
  });
34
- module.exports = __toCommonJS(chunk_25AQIF3L_exports);
35
- var import_react = require("react");
36
- var AssistantPanel = (0, import_react.lazy)(() => import("./AssistantPanel-Z4GVHUF3.cjs"));
37
- var AutomationPanel = (0, import_react.lazy)(() => import("./AutomationPanel-PPODB5XA.cjs"));
34
+ module.exports = __toCommonJS(TemplateContainer_3YCM6XPU_exports);
35
+ var import_chunk_76F5BCJE = require("./chunk-76F5BCJE.cjs");
36
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
37
+ var import_react = __toESM(require("react"));
38
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
39
+ var TemplateContainer = ({ template, role }) => {
40
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
41
+ toolbar: false,
42
+ role,
43
+ classNames: "mli-auto w-full max-w-[50rem]"
44
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_76F5BCJE.TemplateEditor, {
45
+ template
46
+ }));
47
+ };
48
+ var TemplateContainer_default = TemplateContainer;
38
49
  // Annotate the CommonJS export names for ESM import in node:
39
50
  0 && (module.exports = {
40
- AssistantPanel,
41
- AutomationPanel
51
+ TemplateContainer
42
52
  });
43
- //# sourceMappingURL=chunk-25AQIF3L.cjs.map
53
+ //# sourceMappingURL=TemplateContainer-3YCM6XPU.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TemplateContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { type TemplateType } from '../types';\n\n// TODO(burdon): Attention.\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\n return (\n <StackItem.Content toolbar={false} role={role} classNames='mli-auto w-full max-w-[50rem]'>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,4BAA0B;AAMnB,IAAMA,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACC,SAAS;IAAOJ;IAAYK,YAAW;KACxD,6BAAAJ,QAAA,cAACK,sCAAAA;IAAeP;;AAGtB;AAEA,IAAA,4BAAeD;",
6
+ "names": ["TemplateContainer", "template", "role", "React", "StackItem", "Content", "toolbar", "classNames", "TemplateEditor"]
7
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ai_client_L5GUSAER_exports = {};
20
+ __export(ai_client_L5GUSAER_exports, {
21
+ default: () => ai_client_default
22
+ });
23
+ module.exports = __toCommonJS(ai_client_L5GUSAER_exports);
24
+ var import_chunk_VNBYGJ4K = require("./chunk-VNBYGJ4K.cjs");
25
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_assistant = require("@dxos/assistant");
28
+ var import_plugin_client = require("@dxos/plugin-client");
29
+ var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
30
+ var ai_client_default = (context) => {
31
+ const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
32
+ const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
33
+ const aiClient = new import_assistant.AIServiceClientImpl({
34
+ endpoint
35
+ });
36
+ return (0, import_app_framework.contributes)(import_chunk_VNBYGJ4K.AutomationCapabilities.AiClient, aiClient);
37
+ };
38
+ //# sourceMappingURL=ai-client-L5GUSAER.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/ai-client.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, type PluginsContext } from '@dxos/app-framework';\nimport { AIServiceClientImpl } from '@dxos/assistant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AutomationCapabilities } from './capabilities';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginsContext) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n const aiClient = new AIServiceClientImpl({ endpoint });\n return contributes(AutomationCapabilities.AiClient, aiClient);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAiD;AACjD,uBAAoC;AACpC,2BAAmC;AAKnC,IAAMA,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,wCAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AACvE,QAAMa,WAAW,IAAIC,qCAAoB;IAAER;EAAS,CAAA;AACpD,aAAOS,kCAAYC,6CAAuBC,UAAUJ,QAAAA;AACtD;",
6
+ "names": ["DEFAULT_AI_SERVICE_URL", "context", "client", "requestCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "aiClient", "AIServiceClientImpl", "contributes", "AutomationCapabilities", "AiClient"]
7
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var app_graph_builder_ECNVGTRT_exports = {};
20
+ __export(app_graph_builder_ECNVGTRT_exports, {
21
+ default: () => app_graph_builder_default
22
+ });
23
+ module.exports = __toCommonJS(app_graph_builder_ECNVGTRT_exports);
24
+ var import_chunk_UVWK2XJE = require("./chunk-UVWK2XJE.cjs");
25
+ var import_chunk_BAQRBGOJ = require("./chunk-BAQRBGOJ.cjs");
26
+ var import_app_framework = require("@dxos/app-framework");
27
+ var import_invariant = require("@dxos/invariant");
28
+ var import_log = require("@dxos/log");
29
+ var import_plugin_client = require("@dxos/plugin-client");
30
+ var import_plugin_graph = require("@dxos/plugin-graph");
31
+ var import_types = require("@dxos/plugin-space/types");
32
+ var import_echo = require("@dxos/react-client/echo");
33
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/capabilities/app-graph-builder.ts";
34
+ var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
35
+ (0, import_plugin_graph.createExtension)({
36
+ id: `${import_chunk_BAQRBGOJ.AUTOMATION_PLUGIN}/assistant`,
37
+ filter: (node) => node.id === import_plugin_graph.ROOT_ID,
38
+ actions: () => [
39
+ {
40
+ id: `${import_app_framework.LayoutAction.UpdateDialog._tag}/assistant/open`,
41
+ data: async () => {
42
+ const { dispatchPromise: dispatch } = context.requestCapability(import_app_framework.Capabilities.IntentDispatcher);
43
+ const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
44
+ const layout = context.requestCapability(import_app_framework.Capabilities.Layout);
45
+ const { graph } = context.requestCapability(import_app_framework.Capabilities.AppGraph);
46
+ let chat;
47
+ if (layout.active.length > 0) {
48
+ const node = graph.findNode(layout.active[0]);
49
+ if (node) {
50
+ const space = (0, import_echo.getSpace)(node.data);
51
+ if (space) {
52
+ chat = await getOrCreateChat(dispatch, space);
53
+ }
54
+ }
55
+ } else {
56
+ const space = client.spaces.default;
57
+ chat = await getOrCreateChat(dispatch, space);
58
+ }
59
+ if (!chat) {
60
+ import_log.log.warn("no chat found", void 0, {
61
+ F: __dxlog_file,
62
+ L: 54,
63
+ S: void 0,
64
+ C: (f, a) => f(...a)
65
+ });
66
+ return;
67
+ }
68
+ await dispatch((0, import_app_framework.createIntent)(import_app_framework.LayoutAction.UpdateDialog, {
69
+ part: "dialog",
70
+ subject: import_chunk_BAQRBGOJ.ASSISTANT_DIALOG,
71
+ options: {
72
+ state: true,
73
+ blockAlign: "end",
74
+ props: {
75
+ chat
76
+ }
77
+ }
78
+ }));
79
+ },
80
+ properties: {
81
+ label: [
82
+ "open assistant label",
83
+ {
84
+ ns: import_chunk_BAQRBGOJ.AUTOMATION_PLUGIN
85
+ }
86
+ ],
87
+ icon: "ph--chat-centered-text--regular",
88
+ disposition: "pin-end",
89
+ position: "hoist",
90
+ keyBinding: {
91
+ macos: "shift+meta+k",
92
+ windows: "shift+ctrl+k"
93
+ }
94
+ }
95
+ }
96
+ ]
97
+ })
98
+ ]);
99
+ var getOrCreateChat = async (dispatch, space) => {
100
+ const { objects } = await space.db.query(import_echo.Filter.schema(import_chunk_UVWK2XJE.AIChatType)).run();
101
+ if (objects.length > 0) {
102
+ return objects[objects.length - 1];
103
+ }
104
+ const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_UVWK2XJE.AutomationAction.CreateChat, {
105
+ spaceId: space.id
106
+ }));
107
+ (0, import_invariant.invariant)(data?.object instanceof import_chunk_UVWK2XJE.AIChatType, void 0, {
108
+ F: __dxlog_file,
109
+ L: 96,
110
+ S: void 0,
111
+ A: [
112
+ "data?.object instanceof AIChatType",
113
+ ""
114
+ ]
115
+ });
116
+ await dispatch((0, import_app_framework.createIntent)(import_types.SpaceAction.AddObject, {
117
+ target: space,
118
+ object: data.object
119
+ }));
120
+ return data.object;
121
+ };
122
+ //# sourceMappingURL=app-graph-builder-ECNVGTRT.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, getSpace } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, AUTOMATION_PLUGIN } from '../meta';\nimport { AIChatType, AutomationAction } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${AUTOMATION_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.findNode(layout.active[0]);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n log.warn('no chat found');\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: AUTOMATION_PLUGIN }],\n icon: 'ph--chat-centered-text--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 }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.schema(AIChatType)).run();\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AutomationAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAOO;AACP,uBAA0B;AAC1B,iBAAoB;AACpB,2BAAmC;AACnC,0BAAoD;AACpD,mBAA4B;AAC5B,kBAA6C;;AAK7C,IAAA,4BAAe,CAACA,gBACdC,kCAAYC,kCAAaC,iBAAiB;MACxCC,qCAAgB;IACdC,IAAI,GAAGC,uCAAAA;IACPC,QAAQ,CAACC,SAA6BA,KAAKH,OAAOI;IAClDC,SAAS,MAAM;MACb;QACEL,IAAI,GAAGM,kCAAaC,aAAaC,IAAI;QACrCC,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKhB,QAAQiB,kBAAkBf,kCAAagB,gBAAgB;AAC7F,gBAAMC,SAASnB,QAAQiB,kBAAkBG,wCAAmBC,MAAM;AAClE,gBAAMC,SAAStB,QAAQiB,kBAAkBf,kCAAaqB,MAAM;AAC5D,gBAAM,EAAEC,MAAK,IAAKxB,QAAQiB,kBAAkBf,kCAAauB,QAAQ;AAIjE,cAAIC;AACJ,cAAIJ,OAAOK,OAAOC,SAAS,GAAG;AAC5B,kBAAMpB,OAAOgB,MAAMK,SAASP,OAAOK,OAAO,CAAA,CAAE;AAC5C,gBAAInB,MAAM;AACR,oBAAMsB,YAAQC,sBAASvB,KAAKM,IAAI;AAChC,kBAAIgB,OAAO;AACTJ,uBAAO,MAAMM,gBAAgBhB,UAAUc,KAAAA;cACzC;YACF;UACF,OAAO;AACL,kBAAMA,QAAQX,OAAOc,OAAOC;AAC5BR,mBAAO,MAAMM,gBAAgBhB,UAAUc,KAAAA;UACzC;AAEA,cAAI,CAACJ,MAAM;AACTS,2BAAIC,KAAK,iBAAA,QAAA;;;;;;AACT;UACF;AAEA,gBAAMpB,aACJqB,mCAAa1B,kCAAaC,cAAc;YACtC0B,MAAM;YACNC,SAASC;YACTC,SAAS;cACPC,OAAO;cACPC,YAAY;cACZC,OAAO;gBACLlB;cACF;YACF;UACF,CAAA,CAAA;QAEJ;QACAmB,YAAY;UACVC,OAAO;YAAC;YAAwB;cAAEC,IAAIzC;YAAkB;;UACxD0C,MAAM;UACNC,aAAa;UACbC,UAAU;UACVC,YAAY;YACVC,OAAO;YACPC,SAAS;UACX;QACF;MACF;;EAEJ,CAAA;CACD;AAGH,IAAMrB,kBAAkB,OAAOhB,UAAmCc,UAAAA;AAChE,QAAM,EAAEwB,QAAO,IAAK,MAAMxB,MAAMyB,GAAGC,MAAMC,mBAAOC,OAAOC,gCAAAA,CAAAA,EAAaC,IAAG;AACvE,MAAIN,QAAQ1B,SAAS,GAAG;AAEtB,WAAO0B,QAAQA,QAAQ1B,SAAS,CAAA;EAClC;AAEA,QAAM,EAAEd,KAAI,IAAK,MAAME,aAASqB,mCAAawB,uCAAiBC,YAAY;IAAEC,SAASjC,MAAMzB;EAAG,CAAA,CAAA;AAC9F2D,kCAAUlD,MAAMmD,kBAAkBN,kCAAAA,QAAAA;;;;;;;;;AAClC,QAAM3C,aAASqB,mCAAa6B,yBAAYC,WAAW;IAAEC,QAAQtC;IAAOmC,QAAQnD,KAAKmD;EAAO,CAAA,CAAA;AACxF,SAAOnD,KAAKmD;AACd;",
6
+ "names": ["context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "AUTOMATION_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "log", "warn", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "objects", "db", "query", "Filter", "schema", "AIChatType", "run", "AutomationAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }