@dxos/plugin-automation 0.7.5-labs.a279d8c → 0.7.5-labs.ea4b4c2

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 (305) hide show
  1. package/dist/lib/browser/AutomationPanel-VW2XIUPU.mjs +8 -0
  2. package/dist/lib/browser/AutomationPanel-VW2XIUPU.mjs.map +7 -0
  3. package/dist/lib/browser/ChatContainer-5TAVTN3T.mjs +12 -0
  4. package/dist/lib/browser/ChatContainer-5TAVTN3T.mjs.map +7 -0
  5. package/dist/lib/browser/{ai-client-6CRYUC6D.mjs → ai-client-5CNY6JBF.mjs} +4 -4
  6. package/dist/lib/browser/{ai-client-6CRYUC6D.mjs.map → ai-client-5CNY6JBF.mjs.map} +3 -3
  7. package/dist/lib/browser/{app-graph-builder-IJTTULDP.mjs → app-graph-builder-FZGK55G7.mjs} +70 -4
  8. package/dist/lib/browser/app-graph-builder-FZGK55G7.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-HZ4TA7HY.mjs → chunk-2H2EUYXL.mjs} +2 -2
  10. package/dist/lib/browser/chunk-DVE33EZL.mjs +1602 -0
  11. package/dist/lib/browser/chunk-DVE33EZL.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-EKJVAFT2.mjs → chunk-MJK7GL5P.mjs} +108 -27
  13. package/dist/lib/browser/chunk-MJK7GL5P.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-NQFZ6XRX.mjs +243 -0
  15. package/dist/lib/browser/chunk-NQFZ6XRX.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-Q4IMHYGH.mjs +150 -0
  17. package/dist/lib/browser/chunk-Q4IMHYGH.mjs.map +7 -0
  18. package/dist/lib/browser/{chunk-HKX3D3ZP.mjs → chunk-R4JH4TLE.mjs} +4 -2
  19. package/dist/lib/browser/chunk-R4JH4TLE.mjs.map +7 -0
  20. package/dist/lib/browser/index.mjs +56 -45
  21. package/dist/lib/browser/index.mjs.map +3 -3
  22. package/dist/lib/browser/intent-resolver-BWAXKT27.mjs +29 -0
  23. package/dist/lib/browser/intent-resolver-BWAXKT27.mjs.map +7 -0
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/{react-surface-IGMBLSV7.mjs → react-surface-ILBDBZCN.mjs} +32 -23
  26. package/dist/lib/browser/react-surface-ILBDBZCN.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +10 -4
  28. package/dist/lib/node/AutomationPanel-G6EDDYWW.cjs +26 -0
  29. package/dist/lib/node/AutomationPanel-G6EDDYWW.cjs.map +7 -0
  30. package/dist/lib/node/ChatContainer-EN24W3K4.cjs +33 -0
  31. package/dist/lib/node/ChatContainer-EN24W3K4.cjs.map +7 -0
  32. package/dist/lib/node/{ai-client-A3RRU55B.cjs → ai-client-FKLPDELV.cjs} +8 -8
  33. package/dist/lib/node/{ai-client-A3RRU55B.cjs.map → ai-client-FKLPDELV.cjs.map} +3 -3
  34. package/dist/lib/node/{app-graph-builder-MF5M4QRS.cjs → app-graph-builder-T76NYV42.cjs} +77 -12
  35. package/dist/lib/node/app-graph-builder-T76NYV42.cjs.map +7 -0
  36. package/dist/lib/node/chunk-CJGJXNY3.cjs +1586 -0
  37. package/dist/lib/node/chunk-CJGJXNY3.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-5VF5JKUN.cjs → chunk-EQYHOTGG.cjs} +8 -5
  39. package/dist/lib/node/chunk-EQYHOTGG.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-BUQOZA4N.cjs → chunk-GB7245FH.cjs} +87 -11
  41. package/dist/lib/node/chunk-GB7245FH.cjs.map +7 -0
  42. package/dist/lib/node/chunk-HMBKP6VG.cjs +324 -0
  43. package/dist/lib/node/chunk-HMBKP6VG.cjs.map +7 -0
  44. package/dist/lib/node/{AutomationPanel-RXJDVLCF.cjs → chunk-QXIHYOMF.cjs} +123 -9
  45. package/dist/lib/node/chunk-QXIHYOMF.cjs.map +7 -0
  46. package/dist/lib/node/{chunk-ZS5RZ7RM.cjs → chunk-U5Z7LFWB.cjs} +6 -6
  47. package/dist/lib/node/index.cjs +100 -88
  48. package/dist/lib/node/index.cjs.map +3 -3
  49. package/dist/lib/node/{intent-resolver-TBHYXBDI.cjs → intent-resolver-C6OKFVEW.cjs} +20 -15
  50. package/dist/lib/node/intent-resolver-C6OKFVEW.cjs.map +7 -0
  51. package/dist/lib/node/meta.json +1 -1
  52. package/dist/lib/node/{react-surface-BVUZMKYS.cjs → react-surface-LWDY7SQG.cjs} +31 -24
  53. package/dist/lib/node/react-surface-LWDY7SQG.cjs.map +7 -0
  54. package/dist/lib/node/types/index.cjs +15 -9
  55. package/dist/lib/node/types/index.cjs.map +2 -2
  56. package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs +9 -0
  57. package/dist/lib/node-esm/AutomationPanel-V3IWQAMO.mjs.map +7 -0
  58. package/dist/lib/node-esm/ChatContainer-CNTY3C2D.mjs +13 -0
  59. package/dist/lib/node-esm/ChatContainer-CNTY3C2D.mjs.map +7 -0
  60. package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs → ai-client-XGNA6SJ5.mjs} +4 -4
  61. package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs.map → ai-client-XGNA6SJ5.mjs.map} +3 -3
  62. package/dist/lib/node-esm/{app-graph-builder-5N7OK23B.mjs → app-graph-builder-IJQEN7WT.mjs} +70 -4
  63. package/dist/lib/node-esm/app-graph-builder-IJQEN7WT.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-6HLBYDUI.mjs +244 -0
  65. package/dist/lib/node-esm/chunk-6HLBYDUI.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-DNCXRGAF.mjs +151 -0
  67. package/dist/lib/node-esm/chunk-DNCXRGAF.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-X3LPRWIL.mjs → chunk-EMVA6QUT.mjs} +4 -2
  69. package/dist/lib/node-esm/chunk-EMVA6QUT.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs → chunk-IJRTDSKN.mjs} +2 -2
  71. package/dist/lib/node-esm/chunk-QP47VJT6.mjs +1603 -0
  72. package/dist/lib/node-esm/chunk-QP47VJT6.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-5QUXIXNB.mjs → chunk-ZLIAMW45.mjs} +108 -27
  74. package/dist/lib/node-esm/chunk-ZLIAMW45.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +56 -45
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs +30 -0
  78. package/dist/lib/node-esm/intent-resolver-DCP4ZDBA.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{react-surface-77S6XJOM.mjs → react-surface-SBDXFVIN.mjs} +32 -23
  81. package/dist/lib/node-esm/react-surface-SBDXFVIN.mjs.map +7 -0
  82. package/dist/lib/node-esm/types/index.mjs +10 -4
  83. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  84. package/dist/types/src/artifacts.stories.d.ts +10 -24
  85. package/dist/types/src/artifacts.stories.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts +45 -44
  87. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/index.d.ts +27 -27
  89. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  92. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts +3 -0
  93. package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts.map +1 -0
  94. package/dist/types/src/components/AmbientChatDialog/index.d.ts +2 -0
  95. package/dist/types/src/components/AmbientChatDialog/index.d.ts.map +1 -0
  96. package/dist/types/src/components/Box/StatusLine.d.ts +11 -0
  97. package/dist/types/src/components/Box/StatusLine.d.ts.map +1 -0
  98. package/dist/types/src/components/Box/StatusLine.stories.d.ts +9 -0
  99. package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +1 -0
  100. package/dist/types/src/components/Box/Tabbed.d.ts +15 -0
  101. package/dist/types/src/components/Box/Tabbed.d.ts.map +1 -0
  102. package/dist/types/src/components/Box/Tabbed.stories.d.ts +8 -0
  103. package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +1 -0
  104. package/dist/types/src/components/Box/ToggleContainer.d.ts +13 -0
  105. package/dist/types/src/components/Box/ToggleContainer.d.ts.map +1 -0
  106. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts +9 -0
  107. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +1 -0
  108. package/dist/types/src/components/Box/index.d.ts +4 -0
  109. package/dist/types/src/components/Box/index.d.ts.map +1 -0
  110. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +7 -0
  111. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +1 -0
  112. package/dist/types/src/components/ChatContainer/index.d.ts +4 -0
  113. package/dist/types/src/components/ChatContainer/index.d.ts.map +1 -0
  114. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +14 -0
  115. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +1 -0
  116. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +8 -0
  117. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +1 -0
  118. package/dist/types/src/components/MarkdownViewer/index.d.ts +2 -0
  119. package/dist/types/src/components/MarkdownViewer/index.d.ts.map +1 -0
  120. package/dist/types/src/components/Prompt/Prompt.d.ts +7 -0
  121. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -0
  122. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +8 -0
  123. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -0
  124. package/dist/types/src/components/Prompt/index.d.ts +2 -0
  125. package/dist/types/src/components/Prompt/index.d.ts.map +1 -0
  126. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +20 -0
  127. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +1 -0
  128. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +6 -0
  129. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
  130. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
  131. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
  132. package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
  133. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
  134. package/dist/types/src/components/Thread/Thread.d.ts +6 -9
  135. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  136. package/dist/types/src/components/Thread/Thread.stories.d.ts +3 -4
  137. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Thread/ThreadMessage.d.ts +12 -0
  139. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
  140. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  141. package/dist/types/src/components/index.d.ts +6 -2
  142. package/dist/types/src/components/index.d.ts.map +1 -1
  143. package/dist/types/src/hooks/index.d.ts +3 -0
  144. package/dist/types/src/hooks/index.d.ts.map +1 -1
  145. package/dist/types/src/hooks/processor.d.ts +39 -15
  146. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  147. package/dist/types/src/hooks/useChatProcessor.d.ts +7 -0
  148. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -0
  149. package/dist/types/src/hooks/useMessageQueue.d.ts +41 -0
  150. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -0
  151. package/dist/types/src/hooks/useServices.d.ts +7 -0
  152. package/dist/types/src/hooks/useServices.d.ts.map +1 -0
  153. package/dist/types/src/meta.d.ts +1 -0
  154. package/dist/types/src/meta.d.ts.map +1 -1
  155. package/dist/types/src/testing/index.d.ts +2 -1
  156. package/dist/types/src/testing/index.d.ts.map +1 -1
  157. package/dist/types/src/testing/{testing.d.ts → test-functions.d.ts} +1 -1
  158. package/dist/types/src/testing/test-functions.d.ts.map +1 -0
  159. package/dist/types/src/testing/test-services.d.ts +5 -0
  160. package/dist/types/src/testing/test-services.d.ts.map +1 -0
  161. package/dist/types/src/tools/function.d.ts +5 -0
  162. package/dist/types/src/tools/function.d.ts.map +1 -0
  163. package/dist/types/src/tools/index.d.ts +3 -0
  164. package/dist/types/src/tools/index.d.ts.map +1 -0
  165. package/dist/types/src/tools/openapi.d.ts +10 -0
  166. package/dist/types/src/tools/openapi.d.ts.map +1 -0
  167. package/dist/types/src/tools/openapi.test.d.ts +2 -0
  168. package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
  169. package/dist/types/src/translations.d.ts +12 -6
  170. package/dist/types/src/translations.d.ts.map +1 -1
  171. package/dist/types/src/types/index.d.ts +1 -0
  172. package/dist/types/src/types/index.d.ts.map +1 -1
  173. package/dist/types/src/types/registry.d.ts +10 -0
  174. package/dist/types/src/types/registry.d.ts.map +1 -0
  175. package/dist/types/src/types/schema.d.ts +156 -7
  176. package/dist/types/src/types/schema.d.ts.map +1 -1
  177. package/dist/types/src/types/types.d.ts +2 -2
  178. package/dist/types/src/types/types.d.ts.map +1 -1
  179. package/dist/types/tsconfig.tsbuildinfo +1 -1
  180. package/package.json +56 -49
  181. package/src/AutomationPlugin.tsx +18 -26
  182. package/src/artifacts.stories.tsx +126 -65
  183. package/src/capabilities/ai-client.ts +1 -1
  184. package/src/capabilities/app-graph-builder.ts +65 -5
  185. package/src/capabilities/intent-resolver.ts +14 -9
  186. package/src/capabilities/react-surface.tsx +21 -13
  187. package/src/components/AmbientChatDialog/AmbientChatDialog.tsx +26 -0
  188. package/src/components/AmbientChatDialog/index.ts +5 -0
  189. package/src/components/Box/StatusLine.stories.tsx +52 -0
  190. package/src/components/Box/StatusLine.tsx +76 -0
  191. package/src/components/Box/Tabbed.stories.tsx +51 -0
  192. package/src/components/Box/Tabbed.tsx +89 -0
  193. package/src/components/Box/ToggleContainer.stories.tsx +110 -0
  194. package/src/components/Box/ToggleContainer.tsx +108 -0
  195. package/src/components/Box/index.ts +7 -0
  196. package/src/components/ChatContainer/ChatContainer.tsx +52 -0
  197. package/src/components/ChatContainer/index.ts +8 -0
  198. package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +56 -0
  199. package/src/components/MarkdownViewer/MarkdownViewer.tsx +79 -0
  200. package/src/components/MarkdownViewer/index.ts +5 -0
  201. package/src/components/Prompt/Prompt.stories.tsx +50 -0
  202. package/src/components/Prompt/Prompt.tsx +36 -0
  203. package/src/components/Prompt/index.ts +5 -0
  204. package/src/components/Prompt/prompt-autocomplete.ts +200 -0
  205. package/src/components/PromptEditor/PromptEditor.stories.tsx +3 -3
  206. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +49 -0
  207. package/src/components/ServiceRegistry/ServiceRegistry.tsx +75 -0
  208. package/src/components/ServiceRegistry/index.ts +5 -0
  209. package/src/components/Thread/Thread.stories.tsx +152 -97
  210. package/src/components/Thread/Thread.tsx +115 -108
  211. package/src/components/Thread/ThreadMessage.tsx +225 -0
  212. package/src/components/TriggerEditor/TriggerEditor.tsx +8 -5
  213. package/src/components/index.ts +5 -1
  214. package/src/hooks/index.ts +4 -0
  215. package/src/hooks/processor.ts +114 -65
  216. package/src/hooks/useChatProcessor.tsx +86 -0
  217. package/src/hooks/useMessageQueue.ts +23 -0
  218. package/src/hooks/useServices.ts +28 -0
  219. package/src/meta.ts +4 -1
  220. package/src/testing/index.ts +2 -1
  221. package/src/testing/test-services.ts +131 -0
  222. package/src/tools/function.ts +47 -0
  223. package/src/tools/index.ts +6 -0
  224. package/src/tools/openapi.test.ts +227 -0
  225. package/src/tools/openapi.ts +331 -0
  226. package/src/translations.ts +9 -6
  227. package/src/types/index.ts +1 -0
  228. package/src/types/registry.ts +26 -0
  229. package/src/types/schema.ts +90 -3
  230. package/src/types/types.ts +2 -2
  231. package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs +0 -340
  232. package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs.map +0 -7
  233. package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs +0 -131
  234. package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs.map +0 -7
  235. package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs +0 -300
  236. package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs.map +0 -7
  237. package/dist/lib/browser/app-graph-builder-IJTTULDP.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-C3VRGDR6.mjs +0 -75
  239. package/dist/lib/browser/chunk-C3VRGDR6.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-EKJVAFT2.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-HKX3D3ZP.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-JSNPW6JF.mjs +0 -14
  243. package/dist/lib/browser/chunk-JSNPW6JF.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-KPSDH6XZ.mjs +0 -118
  245. package/dist/lib/browser/chunk-KPSDH6XZ.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-YZF3SDZL.mjs +0 -139
  247. package/dist/lib/browser/chunk-YZF3SDZL.mjs.map +0 -7
  248. package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs +0 -24
  249. package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs.map +0 -7
  250. package/dist/lib/browser/react-surface-IGMBLSV7.mjs.map +0 -7
  251. package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs +0 -360
  252. package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs.map +0 -7
  253. package/dist/lib/node/AutomationPanel-RXJDVLCF.cjs.map +0 -7
  254. package/dist/lib/node/ChatContainer-GS2SC5OG.cjs +0 -318
  255. package/dist/lib/node/ChatContainer-GS2SC5OG.cjs.map +0 -7
  256. package/dist/lib/node/app-graph-builder-MF5M4QRS.cjs.map +0 -7
  257. package/dist/lib/node/chunk-5VF5JKUN.cjs.map +0 -7
  258. package/dist/lib/node/chunk-BUQOZA4N.cjs.map +0 -7
  259. package/dist/lib/node/chunk-DNLBVFR7.cjs +0 -147
  260. package/dist/lib/node/chunk-DNLBVFR7.cjs.map +0 -7
  261. package/dist/lib/node/chunk-TWDGP26W.cjs +0 -172
  262. package/dist/lib/node/chunk-TWDGP26W.cjs.map +0 -7
  263. package/dist/lib/node/chunk-VEGLN4YN.cjs +0 -250
  264. package/dist/lib/node/chunk-VEGLN4YN.cjs.map +0 -7
  265. package/dist/lib/node/chunk-Z2YFE5SJ.cjs +0 -49
  266. package/dist/lib/node/chunk-Z2YFE5SJ.cjs.map +0 -7
  267. package/dist/lib/node/intent-resolver-TBHYXBDI.cjs.map +0 -7
  268. package/dist/lib/node/react-surface-BVUZMKYS.cjs.map +0 -7
  269. package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs +0 -341
  270. package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs.map +0 -7
  271. package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs +0 -132
  272. package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs.map +0 -7
  273. package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs +0 -301
  274. package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs.map +0 -7
  275. package/dist/lib/node-esm/app-graph-builder-5N7OK23B.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-5QUXIXNB.mjs.map +0 -7
  277. package/dist/lib/node-esm/chunk-ICHNUP5M.mjs +0 -119
  278. package/dist/lib/node-esm/chunk-ICHNUP5M.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-JCYVS5GG.mjs +0 -76
  280. package/dist/lib/node-esm/chunk-JCYVS5GG.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-L2B6VGMG.mjs +0 -16
  282. package/dist/lib/node-esm/chunk-L2B6VGMG.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs +0 -141
  284. package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-X3LPRWIL.mjs.map +0 -7
  286. package/dist/lib/node-esm/intent-resolver-DPJJHFGK.mjs +0 -25
  287. package/dist/lib/node-esm/intent-resolver-DPJJHFGK.mjs.map +0 -7
  288. package/dist/lib/node-esm/react-surface-77S6XJOM.mjs.map +0 -7
  289. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  290. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  291. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  292. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  293. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  294. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  295. package/dist/types/src/components/ChatContainer.d.ts +0 -8
  296. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  297. package/dist/types/src/testing/testing.d.ts.map +0 -1
  298. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -232
  299. package/src/components/AssistantPanel/index.ts +0 -7
  300. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  301. package/src/components/ChatContainer.tsx +0 -80
  302. /package/dist/lib/browser/{chunk-HZ4TA7HY.mjs.map → chunk-2H2EUYXL.mjs.map} +0 -0
  303. /package/dist/lib/node/{chunk-ZS5RZ7RM.cjs.map → chunk-U5Z7LFWB.cjs.map} +0 -0
  304. /package/dist/lib/node-esm/{chunk-ISYLEDVU.mjs.map → chunk-IJRTDSKN.mjs.map} +0 -0
  305. /package/src/testing/{testing.ts → test-functions.ts} +0 -0
@@ -1,301 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-L2B6VGMG.mjs";
3
- import {
4
- Thread
5
- } from "./chunk-U7HXYMPZ.mjs";
6
- import {
7
- AutomationCapabilities
8
- } from "./chunk-ISYLEDVU.mjs";
9
- import "./chunk-X3LPRWIL.mjs";
10
-
11
- // packages/plugins/experimental/plugin-automation/src/components/ChatContainer.tsx
12
- import React, { useCallback, useMemo } from "react";
13
- import { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from "@dxos/app-framework";
14
- import { createSystemPrompt } from "@dxos/artifact";
15
- import { DXN as DXN2, QueueSubspaceTags } from "@dxos/keys";
16
- import { getSpace } from "@dxos/react-client/echo";
17
- import { useEdgeClient, useQueue } from "@dxos/react-edge-client";
18
- import { StackItem } from "@dxos/react-ui-stack";
19
-
20
- // packages/plugins/experimental/plugin-automation/src/hooks/processor.ts
21
- import { computed, signal } from "@preact/signals-core";
22
- import { Message } from "@dxos/artifact";
23
- import { isToolUse, runTools } from "@dxos/assistant";
24
- import { createStatic } from "@dxos/echo-schema";
25
- import { invariant } from "@dxos/invariant";
26
- import { log } from "@dxos/log";
27
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/hooks/processor.ts";
28
- var defaultOptions = {
29
- model: "@anthropic/claude-3-5-sonnet-20241022",
30
- systemPrompt: ""
31
- };
32
- var ChatProcessor = class {
33
- constructor(_client, _tools, _extensions, _options = defaultOptions) {
34
- this._client = _client;
35
- this._tools = _tools;
36
- this._extensions = _extensions;
37
- this._options = _options;
38
- this._history = [];
39
- this._pending = signal([]);
40
- this._streaming = signal([]);
41
- }
42
- get isStreaming() {
43
- return computed(() => this._pending.value.length > 0);
44
- }
45
- get messages() {
46
- return computed(() => [
47
- ...this._pending.value,
48
- ...this._streaming.value
49
- ]);
50
- }
51
- /**
52
- * Make GPT request.
53
- */
54
- async request(message, history = []) {
55
- log.info("requesting...", {
56
- message,
57
- history: history.length
58
- }, {
59
- F: __dxlog_file,
60
- L: 73,
61
- S: this,
62
- C: (f, a) => f(...a)
63
- });
64
- this._history = history;
65
- this._pending.value = [
66
- createStatic(Message, {
67
- role: "user",
68
- content: [
69
- {
70
- type: "text",
71
- text: message
72
- }
73
- ]
74
- })
75
- ];
76
- this._streaming.value = [];
77
- await this.generate();
78
- return this._reset();
79
- }
80
- /**
81
- * Cancel pending requests.
82
- * @returns Pending requests (incl. the request message).
83
- */
84
- async cancel() {
85
- log.info("cancelling...", void 0, {
86
- F: __dxlog_file,
87
- L: 92,
88
- S: this,
89
- C: (f, a) => f(...a)
90
- });
91
- this._response?.abort();
92
- return this._reset();
93
- }
94
- async _reset() {
95
- const pending = this._pending.value;
96
- this._history = [];
97
- this._pending.value = [];
98
- this._streaming.value = [];
99
- return pending;
100
- }
101
- async generate() {
102
- try {
103
- let more = false;
104
- do {
105
- log.info("requesting...", {
106
- history: this._history.length,
107
- pending: this._pending.value.length
108
- }, {
109
- F: __dxlog_file,
110
- L: 109,
111
- S: this,
112
- C: (f, a) => f(...a)
113
- });
114
- this._response = await this._client.generate({
115
- ...this._options,
116
- // TODO(burdon): Rename messages or separate history/message.
117
- history: [
118
- ...this._history,
119
- ...this._pending.value
120
- ],
121
- tools: this._tools
122
- });
123
- queueMicrotask(async () => {
124
- invariant(this._response, void 0, {
125
- F: __dxlog_file,
126
- L: 119,
127
- S: this,
128
- A: [
129
- "this._response",
130
- ""
131
- ]
132
- });
133
- for await (const event of this._response) {
134
- log.info("event", {
135
- event: event.type
136
- }, {
137
- F: __dxlog_file,
138
- L: 121,
139
- S: this,
140
- C: (f, a) => f(...a)
141
- });
142
- this._streaming.value = this._response.accumulatedMessages.map((message) => createStatic(Message, message));
143
- }
144
- });
145
- const messages = await this._response.complete();
146
- log.info("response", {
147
- messages: messages.length
148
- }, {
149
- F: __dxlog_file,
150
- L: 128,
151
- S: this,
152
- C: (f, a) => f(...a)
153
- });
154
- this._pending.value.push(...messages.map((message) => createStatic(Message, message)));
155
- this._streaming.value = [];
156
- more = false;
157
- if (messages.length > 0 && isToolUse(messages.at(-1))) {
158
- log.info("tool request...", void 0, {
159
- F: __dxlog_file,
160
- L: 135,
161
- S: this,
162
- C: (f, a) => f(...a)
163
- });
164
- const response = await runTools({
165
- message: messages.at(-1),
166
- tools: this._tools ?? [],
167
- extensions: this._extensions
168
- });
169
- log.info("tool response", {
170
- response
171
- }, {
172
- F: __dxlog_file,
173
- L: 142,
174
- S: this,
175
- C: (f, a) => f(...a)
176
- });
177
- switch (response.type) {
178
- case "continue": {
179
- this._pending.value.push(response.message);
180
- more = true;
181
- break;
182
- }
183
- }
184
- }
185
- } while (more);
186
- } catch (err) {
187
- log.catch("request failed", {
188
- err
189
- }, {
190
- F: __dxlog_file,
191
- L: 154,
192
- S: this,
193
- C: (f, a) => f(...a)
194
- });
195
- } finally {
196
- log.info("done", void 0, {
197
- F: __dxlog_file,
198
- L: 156,
199
- S: this,
200
- C: (f, a) => f(...a)
201
- });
202
- this._response = void 0;
203
- this._streaming.value = [];
204
- }
205
- }
206
- };
207
-
208
- // packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts
209
- import { useEffect, useState } from "react";
210
- import { Mutex } from "@dxos/async";
211
- import { Context } from "@dxos/context";
212
- import { createSubscriptionTrigger } from "@dxos/functions";
213
- import { FunctionTrigger } from "@dxos/functions";
214
- import { invariant as invariant3 } from "@dxos/invariant";
215
- import { log as log3 } from "@dxos/log";
216
- import { useClient } from "@dxos/react-client";
217
- import { Filter, useQuery } from "@dxos/react-client/echo";
218
-
219
- // packages/plugins/experimental/plugin-automation/src/hooks/invocation-handler.ts
220
- import { sleep } from "@dxos/async";
221
- import { getObjectCore, ResultFormat } from "@dxos/echo-db";
222
- import { FunctionType } from "@dxos/functions";
223
- import { invariant as invariant2 } from "@dxos/invariant";
224
- import { DXN, LOCAL_SPACE_TAG } from "@dxos/keys";
225
- import { log as log2 } from "@dxos/log";
226
-
227
- // packages/plugins/experimental/plugin-automation/src/hooks/useLocalTriggerManager.ts
228
- var registerTriggersMutex = new Mutex();
229
-
230
- // packages/plugins/experimental/plugin-automation/src/components/ChatContainer.tsx
231
- var ChatContainer = ({ chat, role }) => {
232
- const edgeClient = useEdgeClient();
233
- const { dispatchPromise: dispatch } = useIntentDispatcher();
234
- const space = getSpace(chat);
235
- const aiClient = useCapability(AutomationCapabilities.AiClient);
236
- const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
237
- const globalTools = useCapabilities(Capabilities.Tools);
238
- const tools = useMemo(() => [
239
- ...globalTools.flat(),
240
- ...artifactDefinitions.flatMap((definition) => definition.tools)
241
- ], [
242
- globalTools,
243
- artifactDefinitions
244
- ]);
245
- const systemPrompt = useMemo(() => createSystemPrompt({
246
- artifacts: artifactDefinitions.map((definition) => definition.instructions)
247
- }), [
248
- artifactDefinitions
249
- ]);
250
- const processor = useMemo(() => new ChatProcessor(aiClient, tools, {
251
- space,
252
- dispatch
253
- }, {
254
- model: "@anthropic/claude-3-5-sonnet-20241022",
255
- systemPrompt
256
- }), [
257
- aiClient,
258
- tools,
259
- space,
260
- systemPrompt
261
- ]);
262
- const queueDxn = useMemo(() => new DXN2(DXN2.kind.QUEUE, [
263
- QueueSubspaceTags.DATA,
264
- space.id,
265
- chat.queue.dxn.parts.at(-1)
266
- ]), [
267
- chat.queue.dxn
268
- ]);
269
- const queue = useQueue(edgeClient, queueDxn);
270
- const messages = useMemo(() => [
271
- ...queue.items,
272
- ...processor.messages.value
273
- ], [
274
- queue.items,
275
- processor.messages.value
276
- ]);
277
- const handleSubmit = useCallback(async (message) => {
278
- if (processor.isStreaming) {
279
- await processor.cancel();
280
- }
281
- const messages2 = await processor.request(message, queue.items);
282
- await queue.append(messages2);
283
- }, [
284
- processor,
285
- queue
286
- ]);
287
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
288
- toolbar: false,
289
- role
290
- }, /* @__PURE__ */ React.createElement(Thread, {
291
- messages,
292
- streaming: processor.isStreaming.value,
293
- onSubmit: handleSubmit
294
- }));
295
- };
296
- var ChatContainer_default = ChatContainer;
297
- export {
298
- ChatContainer,
299
- ChatContainer_default as default
300
- };
301
- //# sourceMappingURL=ChatContainer-57ILGC3R.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChatContainer.tsx", "../../../src/hooks/processor.ts", "../../../src/hooks/useLocalTriggerManager.ts", "../../../src/hooks/invocation-handler.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';\nimport { createSystemPrompt, type Message } from '@dxos/artifact';\nimport { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { useEdgeClient, useQueue } from '@dxos/react-edge-client';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { Thread } from './Thread';\nimport { AutomationCapabilities } from '../capabilities';\nimport { ChatProcessor } from '../hooks';\nimport { type GptChatType } from '../types';\n\nexport const ChatContainer = ({ chat, role }: { chat: GptChatType; role: string }) => {\n const edgeClient = useEdgeClient();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(chat);\n const aiClient = useCapability(AutomationCapabilities.AiClient);\n const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);\n const globalTools = useCapabilities(Capabilities.Tools);\n const tools = useMemo(\n () => [...globalTools.flat(), ...artifactDefinitions.flatMap((definition) => definition.tools)],\n [globalTools, artifactDefinitions],\n );\n const systemPrompt = useMemo(\n () => createSystemPrompt({ artifacts: artifactDefinitions.map((definition) => definition.instructions) }),\n [artifactDefinitions],\n );\n\n // TODO(burdon): Create hook.\n // TODO(wittjosiah): Should these be created in the component?\n // TODO(zan): Combine with ai service client?\n const processor = useMemo(\n () =>\n new ChatProcessor(\n aiClient,\n tools,\n { space, dispatch },\n { model: '@anthropic/claude-3-5-sonnet-20241022', systemPrompt },\n ),\n [aiClient, tools, space, systemPrompt],\n );\n // TODO(wittjosiah): Remove transformation.\n const queueDxn = useMemo(\n () => new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space!.id, chat.queue.dxn.parts.at(-1)!]),\n [chat.queue.dxn],\n );\n const queue = useQueue<Message>(edgeClient, queueDxn);\n const messages = useMemo(\n () => [...queue.items, ...processor.messages.value],\n [queue.items, processor.messages.value],\n );\n\n const handleSubmit = useCallback(\n async (message: string) => {\n // TODO(burdon): Button to cancel. Otherwise queue request.\n if (processor.isStreaming) {\n await processor.cancel();\n }\n\n const messages = await processor.request(message, queue.items);\n // TODO(burdon): Append on success only? If approved by user? Clinet/server.\n await queue.append(messages);\n },\n [processor, queue],\n );\n\n return (\n <StackItem.Content toolbar={false} role={role}>\n <Thread messages={messages} streaming={processor.isStreaming.value} onSubmit={handleSubmit} />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal, type Signal, computed, signal } from '@preact/signals-core';\n\nimport { type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { type Tool, Message } from '@dxos/artifact';\nimport {\n type AIServiceClientImpl,\n type GenerateRequest,\n type GenerationStream,\n isToolUse,\n runTools,\n} from '@dxos/assistant';\nimport { createStatic } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst defaultOptions: Pick<GenerateRequest, 'model' | 'systemPrompt'> = {\n model: '@anthropic/claude-3-5-sonnet-20241022',\n systemPrompt: '',\n};\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\n/**\n * Handles interactions with an AI service.\n * Manages message history, and executes tools based on AI responses.\n * Maintains a queue of messages and handles streaming responses from the AI service.\n * Supports cancellation of in-progress requests.\n */\n// TODO(burdon): Tests.\nexport class ChatProcessor {\n /** Prior history from queue. */\n private _history: Message[] = [];\n\n /** Pending messages (incl. the initial user message). */\n private _pending: Signal<Message[]> = signal([]);\n\n /** Streaming messages (from the AI service). */\n private _streaming: Signal<Message[]> = signal([]);\n\n /** Current streaming response. */\n private _response: GenerationStream | undefined;\n\n constructor(\n private readonly _client: AIServiceClientImpl,\n private readonly _tools?: Tool[],\n private readonly _extensions?: ToolContextExtensions,\n private readonly _options: Pick<GenerateRequest, 'model' | 'systemPrompt'> = defaultOptions,\n ) {}\n\n get isStreaming(): ReadonlySignal<boolean> {\n return computed(() => this._pending.value.length > 0);\n }\n\n get messages(): ReadonlySignal<Message[]> {\n return computed(() => [...this._pending.value, ...this._streaming.value]);\n }\n\n /**\n * Make GPT request.\n */\n async request(message: string, history: Message[] = []): Promise<Message[]> {\n log.info('requesting...', { message, history: history.length });\n this._history = history;\n this._pending.value = [\n createStatic(Message, {\n role: 'user',\n content: [{ type: 'text', text: message }],\n }),\n ];\n this._streaming.value = [];\n\n await this.generate();\n return this._reset();\n }\n\n /**\n * Cancel pending requests.\n * @returns Pending requests (incl. the request message).\n */\n async cancel(): Promise<Message[]> {\n log.info('cancelling...');\n this._response?.abort();\n return this._reset();\n }\n\n private async _reset(): Promise<Message[]> {\n const pending = this._pending.value;\n this._history = [];\n this._pending.value = [];\n this._streaming.value = [];\n return pending;\n }\n\n private async generate() {\n try {\n let more = false;\n do {\n log.info('requesting...', { history: this._history.length, pending: this._pending.value.length });\n this._response = await this._client.generate({\n ...this._options,\n // TODO(burdon): Rename messages or separate history/message.\n history: [...this._history, ...this._pending.value],\n tools: this._tools,\n });\n\n // Process the stream.\n queueMicrotask(async () => {\n invariant(this._response);\n for await (const event of this._response) {\n log.info('event', { event: event.type });\n this._streaming.value = this._response.accumulatedMessages.map((message) => createStatic(Message, message));\n }\n });\n\n // Update pending messages.\n const messages = await this._response.complete();\n log.info('response', { messages: messages.length });\n this._pending.value.push(...messages.map((message) => createStatic(Message, message)));\n this._streaming.value = [];\n\n // Resolve tool use locally.\n more = false;\n if (messages.length > 0 && isToolUse(messages.at(-1)!)) {\n log.info('tool request...');\n const response = await runTools({\n message: messages.at(-1)!,\n tools: this._tools ?? [],\n extensions: this._extensions,\n });\n\n log.info('tool response', { response });\n switch (response.type) {\n case 'continue': {\n this._pending.value.push(response.message);\n more = true;\n break;\n }\n }\n }\n } while (more);\n } catch (err) {\n // TODO(burdon): Handle error.\n log.catch('request failed', { err });\n } finally {\n log.info('done');\n this._response = undefined;\n this._streaming.value = [];\n }\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { Mutex } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { createSubscriptionTrigger, type TriggerFactory } from '@dxos/functions';\nimport { FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, type Space, useQuery } from '@dxos/react-client/echo';\n\nimport { invokeFunction } from './invocation-handler';\n\nconst registerTriggersMutex = new Mutex();\n\nexport const useLocalTriggerManager = (space: Space) => {\n const client = useClient();\n\n // TODO(burdon): Factor out, creating context for plugin (runs outside of component).\n const [registry] = useState(new Map<string, Context>());\n const triggers = useQuery(space, Filter.schema(FunctionTrigger));\n useEffect(() => {\n setTimeout(async () => {\n // Mark-and-sweep removing disabled triggers.\n await registerTriggersMutex.executeSynchronized(async () => {\n const deprecated = new Set(Array.from(registry.keys()));\n log('triggers', {\n deprecated,\n all: triggers.map((t) => t.id),\n enabled: triggers.filter((t) => t.enabled).map((t) => t.id),\n });\n\n for (const trigger of triggers) {\n if (trigger.enabled) {\n if (registry.has(trigger.id)) {\n deprecated.delete(trigger.id);\n continue;\n }\n log.info('activating trigger', trigger.id);\n\n const ctx = new Context();\n registry.set(trigger.id, ctx);\n const triggerSpec = trigger.spec;\n invariant(triggerSpec);\n\n let triggerFactory: TriggerFactory<any>;\n if (triggerSpec.type === 'subscription') {\n triggerFactory = createSubscriptionTrigger;\n } else {\n log.info('unsupported trigger', { type: triggerSpec.type });\n continue;\n }\n\n await triggerFactory(ctx, space, trigger.spec, (data: any) => {\n return invokeFunction(client, space, trigger, data);\n });\n }\n }\n\n for (const id of deprecated) {\n const ctx = registry.get(id);\n if (ctx) {\n await ctx.dispose();\n registry.delete(id);\n }\n }\n });\n });\n }, [JSON.stringify(triggers)]);\n\n useEffect(() => {\n return () => {\n for (const ctx of registry.values()) {\n void ctx.dispose();\n }\n };\n }, []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { sleep } from '@dxos/async';\nimport { getObjectCore, ResultFormat } from '@dxos/echo-db';\nimport { type AnyObjectData } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\nimport { type FunctionTrigger } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Client, type Config } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nconst MAX_RETRIES = 3;\nconst RETRY_DELAY = 1_000;\n\nconst callFunction = async (funcUrl: string, trigger: any, data: any) => {\n const body = { event: 'trigger', trigger, data };\n\n let retryCount = 0;\n while (retryCount < MAX_RETRIES) {\n log.info('exec', { funcUrl, body, retryCount });\n const response = await fetch(funcUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n\n const data = await response.text();\n log.info('response', { status: response.status, body: data });\n if (response.status === 409) {\n retryCount++;\n await sleep(RETRY_DELAY * Math.min(retryCount, 2));\n continue;\n }\n\n return { status: response.status, data };\n }\n return { status: 500 };\n};\n\nexport const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {\n try {\n invariant(trigger.spec);\n invariant(trigger.function);\n\n const script = await space.db.query({ id: trigger.function }, { format: ResultFormat.Plain }).first();\n const { objects: functions } = await space.db\n .query({ __typename: FunctionType.typename }, { format: ResultFormat.Plain })\n .run();\n const func = functions.find((fn) => referenceEquals(fn.source, trigger.function!)) as AnyObjectData | undefined;\n const funcSlug = func?.__meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;\n if (!funcSlug) {\n log.warn('function not deployed', { scriptId: script.id, name: script.name });\n return 404;\n }\n\n const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);\n const triggerData: AnyObjectData = {\n ...getObjectCore(trigger).toPlainObject(),\n // TODO: Remove when functions can query by DXN.\n promptId: trigger.meta?.prompt?.id,\n };\n // TODO: Remove when functions can add objects and easily modify collections (push, splice).\n return (await callFunction(funcUrl, triggerData, data)).status;\n } catch (err) {\n return 400;\n }\n};\n\nconst USERFUNCTIONS_META_KEY = 'dxos.org/service/function';\n\nconst getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {\n const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);\n\n // Leading slashes cause the URL to be treated as an absolute path.\n const relativeUrl = slug.replace(/^\\//, '');\n const url = new URL(`./${relativeUrl}`, baseUrl.toString());\n spaceId && url.searchParams.set('spaceId', spaceId);\n url.protocol = 'https';\n return url.toString();\n};\n\n// TODO(dmaretskyi): Factor out.\n\ntype ReferenceLike = { '/': string } | string;\n\nconst referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {\n const aDXN = toDXN(a);\n const bDXN = toDXN(b);\n return aDXN.toString() === bDXN.toString();\n};\n\nconst toDXN = (ref: ReferenceLike): DXN => {\n if (typeof ref === 'string') {\n if (ref.startsWith('dxn:')) {\n return DXN.parse(ref);\n } else {\n return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);\n }\n }\n\n invariant(typeof ref['/'] === 'string');\n return DXN.parse(ref['/']);\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useMemo", "Capabilities", "useCapabilities", "useCapability", "useIntentDispatcher", "createSystemPrompt", "DXN", "QueueSubspaceTags", "getSpace", "useEdgeClient", "useQueue", "StackItem", "computed", "signal", "Message", "isToolUse", "runTools", "createStatic", "invariant", "log", "defaultOptions", "model", "systemPrompt", "ChatProcessor", "constructor", "_client", "_tools", "_extensions", "_options", "_history", "_pending", "_streaming", "isStreaming", "value", "length", "messages", "request", "message", "history", "info", "role", "content", "type", "text", "generate", "_reset", "cancel", "_response", "abort", "pending", "more", "tools", "queueMicrotask", "event", "accumulatedMessages", "map", "complete", "push", "at", "response", "extensions", "err", "catch", "undefined", "useEffect", "useState", "Mutex", "Context", "createSubscriptionTrigger", "FunctionTrigger", "invariant", "log", "useClient", "Filter", "useQuery", "sleep", "getObjectCore", "ResultFormat", "FunctionType", "invariant", "DXN", "LOCAL_SPACE_TAG", "log", "registerTriggersMutex", "Mutex", "ChatContainer", "chat", "role", "edgeClient", "useEdgeClient", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "aiClient", "useCapability", "AutomationCapabilities", "AiClient", "artifactDefinitions", "useCapabilities", "Capabilities", "ArtifactDefinition", "globalTools", "Tools", "tools", "useMemo", "flat", "flatMap", "definition", "systemPrompt", "createSystemPrompt", "artifacts", "map", "instructions", "processor", "ChatProcessor", "model", "queueDxn", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "id", "queue", "dxn", "parts", "at", "useQueue", "messages", "items", "value", "handleSubmit", "useCallback", "message", "isStreaming", "cancel", "request", "append", "StackItem", "Content", "toolbar", "Thread", "streaming", "onSubmit"]
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 { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, toSignal } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { getTypename, parseId, SpaceState } from '@dxos/react-client/echo';\n\nimport { AUTOMATION_PLUGIN } from '../meta';\n\nexport default (context: PluginsContext) => {\n const resolve = (typename: string) =>\n context.requestCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${AUTOMATION_PLUGIN}/automation-for-subject`,\n resolver: ({ id }) => {\n if (!id.endsWith('~automation')) {\n return;\n }\n\n const type = 'orphan-settings-for-subject';\n const icon = 'ph--magic-wand--regular';\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);\n if (!objectId) {\n // TODO(burdon): Ref SPACE_PLUGIN ns.\n const label = space\n ? space.properties.name || ['unnamed space label', { ns: AUTOMATION_PLUGIN }]\n : ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n // TODO(wittjosiah): Support comments for arbitrary subjects.\n // This is to ensure that the comments panel is not stuck on an old object.\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n showResolvedThreads: false,\n object: null,\n space,\n },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n if (!object || !subjectId) {\n return;\n }\n\n const meta = resolve(getTypename(object) ?? '');\n const label = meta.label?.(object) ||\n object.name ||\n meta.placeholder || ['unnamed object settings label', { ns: AUTOMATION_PLUGIN }];\n\n return {\n id,\n type,\n data: null,\n properties: {\n icon,\n label,\n object,\n },\n };\n },\n }),\n createExtension({\n id: `${AUTOMATION_PLUGIN}/assistant-for-subject`,\n resolver: ({ id }) => {\n // TODO(Zan): Find util (or make one). Effect schema!!\n if (!id.endsWith('~assistant')) {\n return;\n }\n\n const client = context.requestCapability(ClientCapabilities.Client);\n const [subjectId] = id.split('~');\n const { spaceId, objectId } = parseId(subjectId);\n const spaces = toSignal(\n (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n () => client.spaces.get(),\n );\n const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);\n if (!objectId) {\n // TODO(wittjosiah): Support assistant for arbitrary subjects.\n // This is to ensure that the assistant panel is not stuck on an old object.\n return {\n id,\n type: 'orphan-automation-for-subject',\n data: null,\n properties: {\n icon: 'ph--atom--regular',\n label: ['assistant panel label', { ns: AUTOMATION_PLUGIN }],\n object: null,\n space,\n },\n };\n }\n\n const [object] = memoizeQuery(space, { id: objectId });\n\n return {\n id,\n type: 'orphan-automation-for-subject',\n data: null,\n properties: {\n icon: 'ph--atom--regular',\n label: ['assistant panel label', { ns: AUTOMATION_PLUGIN }],\n object,\n },\n };\n },\n }),\n ]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["Capabilities", "contributes", "ClientCapabilities", "createExtension", "toSignal", "memoizeQuery", "getTypename", "parseId", "SpaceState", "context", "resolve", "typename", "requestCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "AUTOMATION_PLUGIN", "resolver", "endsWith", "type", "icon", "client", "requestCapability", "ClientCapabilities", "Client", "subjectId", "split", "spaceId", "objectId", "parseId", "spaces", "toSignal", "onChange", "subscribe", "unsubscribe", "get", "space", "state", "SpaceState", "SPACE_READY", "label", "properties", "name", "ns", "data", "showResolvedThreads", "object", "memoizeQuery", "meta", "getTypename", "placeholder"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/PromptEditor/PromptEditor.tsx", "../../../src/components/PromptEditor/prompt-extension.ts", "../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React, { useEffect } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { Input, Select, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { attentionSurface, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { nonNullable } from '@dxos/util';\n\nimport { nameRegex, promptExtension } from './prompt-extension';\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { type ChainInput, ChainInputType, type ChainPromptType } from '../../types';\n\nconst inputTypes = [\n {\n value: ChainInputType.VALUE,\n label: 'Value',\n },\n {\n value: ChainInputType.PASS_THROUGH,\n label: 'Pass through',\n },\n {\n value: ChainInputType.RETRIEVER,\n label: 'Retriever',\n },\n // {\n // value: ChainInputType.FUNCTION,\n // label: 'Function',\n // },\n // {\n // value: ChainInputType.QUERY,\n // label: 'Query',\n // },\n {\n value: ChainInputType.RESOLVER,\n label: 'Resolver',\n },\n {\n value: ChainInputType.CONTEXT,\n label: 'Context',\n },\n {\n value: ChainInputType.SCHEMA,\n label: 'Schema',\n },\n];\n\nconst getInputType = (type: string) => inputTypes.find(({ value }) => String(value) === type)?.value;\n\nconst usePromptInputs = (prompt: ChainPromptType) => {\n useEffect(() => {\n const text = prompt.template ?? '';\n if (!prompt.inputs) {\n prompt.inputs = []; // TODO(burdon): Required?\n }\n\n const regex = new RegExp(nameRegex, 'g');\n const variables = new Set<string>([...text.matchAll(regex)].map((m) => m[1]));\n\n // Create map of unclaimed inputs.\n const unclaimed = new Map<string, ChainInput>(\n prompt.inputs?.filter(nonNullable).map((input) => [input.name, input]),\n );\n const missing: string[] = [];\n Array.from(variables.values()).forEach((name) => {\n if (unclaimed.has(name)) {\n unclaimed.delete(name);\n } else {\n missing.push(name);\n }\n });\n\n // Match or create new inputs.\n const values = unclaimed.values();\n missing.forEach((name) => {\n const next = values.next().value;\n if (next) {\n next.name = name;\n } else {\n prompt.inputs?.push({ name });\n }\n });\n\n // Remove unclaimed (deleted) inputs.\n // TODO(burdon): If user types incorrect name value, it will be deleted. Garbage collect?\n for (const input of values) {\n prompt.inputs.splice(prompt.inputs.indexOf(input), 1);\n }\n }, [prompt.template]);\n};\n\nexport type PromptEditorProps = {\n prompt: ChainPromptType;\n commandEditable?: boolean;\n schema?: S.Schema<any, any, any>;\n};\n\nexport const PromptEditor = ({ prompt, commandEditable = true }: PromptEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const { themeMode } = useThemeContext();\n\n const { parentRef } = useTextEditor(\n () => ({\n initialValue: prompt.template,\n extensions: [\n createDataExtensions({\n id: prompt.id,\n text: prompt.template !== undefined ? createDocAccessor(prompt, ['template']) : undefined,\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: '!p-3' },\n },\n }),\n promptExtension,\n ],\n }),\n [themeMode, prompt],\n );\n\n usePromptInputs(prompt);\n\n return (\n <div className={mx('flex flex-col w-full overflow-hidden gap-4', groupBorder)}>\n {commandEditable && (\n <div className='flex items-center pl-4'>\n <span className='text-neutral-500'>/</span>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent m-2')}\n value={prompt.command ?? ''}\n onChange={(event) => {\n prompt.command = event.target.value.replace(/\\w/g, '');\n }}\n />\n </Input.Root>\n </div>\n )}\n\n <div ref={parentRef} className={mx(attentionSurface, 'rounded', 'min-h-[120px]')} />\n\n {(prompt.inputs?.length ?? 0) > 0 && (\n <div className='flex flex-col'>\n {/* TODO(zan): Improve layout with grid */}\n <table className='w-full table-fixed border-collapse my-2'>\n <tbody>\n {prompt.inputs?.filter(nonNullable).map((input) => (\n <tr key={input.name}>\n <td className='w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate'>\n <code className='px-2'>{input.name}</code>\n </td>\n <td className='w-[120px] p-1'>\n <Input.Root>\n <Select.Root\n value={String(input.type)}\n onValueChange={(type) => {\n input.type = getInputType(type) ?? ChainInputType.VALUE;\n }}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {inputTypes.map(({ value, label }) => (\n <Select.Option key={value} value={String(value)}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </td>\n <td className='p-1 pr-2'>\n {input.type !== undefined &&\n [\n ChainInputType.VALUE,\n ChainInputType.CONTEXT,\n ChainInputType.RESOLVER,\n ChainInputType.SCHEMA,\n ].includes(input.type) && (\n <div>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent')}\n value={input.value ?? ''}\n onChange={(event) => {\n input.value = event.target.value;\n }}\n />\n </Input.Root>\n </div>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const nameRegex = /\\{([\\w-]+)}/;\n\nconst parser = StreamLanguage.define({\n token: (stream) => {\n if (stream.eatSpace()) {\n return null;\n }\n if (stream.match(/^#.*/)) {\n return 'lineComment';\n }\n if (stream.match(/^-+$/)) {\n return 'lineComment';\n }\n if (stream.match(nameRegex)) {\n return 'variableName';\n }\n stream.next();\n return null;\n },\n});\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n */\nconst highlightStyles = HighlightStyle.define([\n {\n tag: tags.variableName,\n class: mx('rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm'),\n },\n]);\n\nexport const promptExtension: Extension = [parser, syntaxHighlighting(highlightStyles)];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './PromptEditor';\nexport * from './Thread';\nexport * from './TriggerEditor';\n\nexport const AssistantPanel = lazy(() => import('./AssistantPanel'));\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n"],
5
- "mappings": "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",
6
- "names": ["React", "useEffect", "createDocAccessor", "Input", "Select", "useThemeContext", "useTranslation", "createBasicExtensions", "createDataExtensions", "createThemeExtensions", "useTextEditor", "attentionSurface", "groupBorder", "mx", "nonNullable", "HighlightStyle", "StreamLanguage", "syntaxHighlighting", "tags", "mx", "nameRegex", "parser", "StreamLanguage", "define", "token", "stream", "eatSpace", "match", "next", "highlightStyles", "HighlightStyle", "tag", "tags", "variableName", "class", "mx", "promptExtension", "syntaxHighlighting", "inputTypes", "value", "ChainInputType", "VALUE", "label", "PASS_THROUGH", "RETRIEVER", "RESOLVER", "CONTEXT", "SCHEMA", "getInputType", "type", "find", "String", "usePromptInputs", "prompt", "useEffect", "text", "template", "inputs", "regex", "RegExp", "nameRegex", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "nonNullable", "input", "name", "missing", "Array", "from", "values", "forEach", "has", "delete", "push", "next", "splice", "indexOf", "PromptEditor", "commandEditable", "t", "useTranslation", "AUTOMATION_PLUGIN", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "initialValue", "extensions", "createDataExtensions", "id", "undefined", "createDocAccessor", "createBasicExtensions", "bracketMatching", "lineWrapping", "placeholder", "createThemeExtensions", "slots", "content", "className", "promptExtension", "div", "mx", "groupBorder", "span", "Input", "Root", "TextInput", "classNames", "command", "onChange", "event", "target", "replace", "ref", "attentionSurface", "length", "table", "tbody", "tr", "key", "td", "code", "Select", "onValueChange", "TriggerButton", "Portal", "Content", "Viewport", "Option", "includes", "lazy", "AssistantPanel", "lazy", "AutomationPanel", "ChatContainer"]
7
- }
@@ -1,119 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- AUTOMATION_PLUGIN
4
- } from "./chunk-X3LPRWIL.mjs";
5
-
6
- // packages/plugins/experimental/plugin-automation/src/components/TriggerEditor/TriggerEditor.tsx
7
- import React, { useState } from "react";
8
- import { ComputeGraph } from "@dxos/conductor";
9
- import { FunctionType, FunctionTriggerSchema, ScriptType, TriggerKind } from "@dxos/functions";
10
- import { Filter, useQuery } from "@dxos/react-client/echo";
11
- import { IconButton, Input, useTranslation } from "@dxos/react-ui";
12
- import { Form, SelectInput, TextInput } from "@dxos/react-ui-form";
13
- var TriggerEditor = ({ space, trigger, onSave, onCancel }) => {
14
- const { t } = useTranslation(AUTOMATION_PLUGIN);
15
- const functions = useQuery(space, Filter.schema(FunctionType));
16
- const workflows = useQuery(space, Filter.schema(ComputeGraph));
17
- const scripts = useQuery(space, Filter.schema(ScriptType));
18
- const handleSave = (values) => {
19
- onSave?.(values);
20
- };
21
- return /* @__PURE__ */ React.createElement(Form, {
22
- schema: FunctionTriggerSchema,
23
- values: trigger,
24
- onSave: handleSave,
25
- onCancel,
26
- Custom: {
27
- ["function"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
28
- ...props,
29
- options: getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))
30
- }),
31
- ["spec.type"]: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
32
- ...props,
33
- options: Object.values(TriggerKind).map((kind) => ({
34
- value: kind,
35
- label: t(`trigger type ${kind}`)
36
- }))
37
- }),
38
- ["meta"]: (props) => {
39
- const meta = props.getValue();
40
- const [newMetaFieldName, setNewMetaFieldName] = useState("");
41
- React.useEffect(() => props.onValueChange("object", {
42
- ...meta
43
- }), []);
44
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", null, props.label), [
45
- ...Object.keys(meta)
46
- ].map((key) => {
47
- const compositeKey = `meta.${key}`;
48
- return /* @__PURE__ */ React.createElement("div", {
49
- key: compositeKey,
50
- role: "none",
51
- className: "flex items-center mt-2 gap-1"
52
- }, /* @__PURE__ */ React.createElement("div", {
53
- role: "none",
54
- className: "flex-1"
55
- }, /* @__PURE__ */ React.createElement(TextInput, {
56
- ...props,
57
- type: "string",
58
- label: key
59
- })), /* @__PURE__ */ React.createElement(IconButton, {
60
- icon: "ph--trash--regular",
61
- iconOnly: true,
62
- classNames: "mt-6",
63
- label: t("trigger meta remove"),
64
- onClick: () => {
65
- const newValues = {
66
- ...props.getValue()
67
- };
68
- delete newValues[key];
69
- props.onValueChange("object", newValues);
70
- }
71
- }));
72
- }), /* @__PURE__ */ React.createElement("div", {
73
- role: "none",
74
- className: "flex items-center mt-2 gap-1 plb-1"
75
- }, /* @__PURE__ */ React.createElement("div", {
76
- role: "none",
77
- className: "flex-1"
78
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
79
- placeholder: t("trigger meta prop name placeholder"),
80
- value: newMetaFieldName,
81
- onChange: (event) => setNewMetaFieldName(event.target.value)
82
- }))), /* @__PURE__ */ React.createElement(IconButton, {
83
- icon: "ph--plus--regular",
84
- iconOnly: true,
85
- label: t("trigger meta add"),
86
- onClick: () => {
87
- if (newMetaFieldName.length) {
88
- const meta2 = props.getValue() ?? {};
89
- const metaWithNewProp = {
90
- ...meta2,
91
- [newMetaFieldName]: ""
92
- };
93
- setNewMetaFieldName("");
94
- props.onValueChange("object", metaWithNewProp);
95
- }
96
- }
97
- })));
98
- }
99
- }
100
- });
101
- };
102
- var getWorkflowOptions = (graphs) => {
103
- return graphs.map((graph) => ({
104
- label: `compute-${graph.id}`,
105
- value: `dxn:echo:@:${graph.id}`
106
- }));
107
- };
108
- var getFunctionOptions = (scripts, functions) => {
109
- const getLabel = (fn) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;
110
- return functions.map((fn) => ({
111
- label: getLabel(fn),
112
- value: `dxn:worker:${fn.name}`
113
- }));
114
- };
115
-
116
- export {
117
- TriggerEditor
118
- };
119
- //# sourceMappingURL=chunk-ICHNUP5M.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/TriggerEditor/TriggerEditor.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport {\n FunctionType,\n FunctionTriggerSchema,\n type FunctionTriggerType,\n type FunctionTrigger,\n ScriptType,\n TriggerKind,\n} from '@dxos/functions';\nimport { Filter, useQuery, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, useTranslation } from '@dxos/react-ui';\nimport { Form, SelectInput, TextInput } from '@dxos/react-ui-form';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\n\nexport type TriggerEditorProps = {\n space: Space;\n trigger: FunctionTriggerType;\n onSave?: (trigger: Omit<FunctionTrigger, 'id'>) => void;\n onCancel?: () => void;\n};\n\nexport const TriggerEditor = ({ space, trigger, onSave, onCancel }: TriggerEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n\n const functions = useQuery(space, Filter.schema(FunctionType));\n const workflows = useQuery(space, Filter.schema(ComputeGraph));\n const scripts = useQuery(space, Filter.schema(ScriptType));\n\n const handleSave = (values: FunctionTriggerType) => {\n onSave?.(values);\n };\n\n return (\n <Form<FunctionTriggerType>\n schema={FunctionTriggerSchema}\n values={trigger}\n onSave={handleSave}\n onCancel={onCancel}\n Custom={{\n ['function' satisfies keyof FunctionTriggerType]: (props) => (\n <SelectInput\n {...props}\n options={getWorkflowOptions(workflows).concat(getFunctionOptions(scripts, functions))}\n />\n ),\n ['spec.type' as const]: (props) => (\n <SelectInput\n {...props}\n options={Object.values(TriggerKind).map((kind) => ({\n value: kind,\n label: t(`trigger type ${kind}`),\n }))}\n />\n ),\n ['meta' as const]: (props) => {\n const meta = props.getValue()!;\n\n const [newMetaFieldName, setNewMetaFieldName] = useState('');\n\n React.useEffect(() => props.onValueChange('object', { ...meta }), []);\n\n return (\n <>\n <div>{props.label}</div>\n {[...Object.keys(meta)].map((key) => {\n const compositeKey: any = `meta.${key}`;\n return (\n <div key={compositeKey} role='none' className='flex items-center mt-2 gap-1'>\n <div role='none' className='flex-1'>\n <TextInput {...props} type={'string'} label={key} />\n </div>\n <IconButton\n icon='ph--trash--regular'\n iconOnly\n classNames={'mt-6'}\n label={t('trigger meta remove')}\n onClick={() => {\n const newValues: any = { ...props.getValue() };\n delete newValues[key];\n props.onValueChange('object', newValues);\n }}\n />\n </div>\n );\n })}\n <div role='none' className='flex items-center mt-2 gap-1 plb-1'>\n <div role='none' className='flex-1'>\n <Input.Root>\n <Input.TextInput\n placeholder={t('trigger meta prop name placeholder')}\n value={newMetaFieldName}\n onChange={(event) => setNewMetaFieldName(event.target.value)}\n />\n </Input.Root>\n </div>\n <IconButton\n icon='ph--plus--regular'\n iconOnly\n label={t('trigger meta add')}\n onClick={() => {\n if (newMetaFieldName.length) {\n const meta = props.getValue() ?? {};\n const metaWithNewProp = { ...meta, [newMetaFieldName]: '' };\n setNewMetaFieldName('');\n props.onValueChange('object', metaWithNewProp);\n }\n }}\n />\n </div>\n </>\n );\n },\n }}\n />\n );\n};\n\nconst getWorkflowOptions = (graphs: ComputeGraph[]) => {\n return graphs.map((graph) => ({ label: `compute-${graph.id}`, value: `dxn:echo:@:${graph.id}` }));\n};\n\nconst getFunctionOptions = (scripts: ScriptType[], functions: FunctionType[]) => {\n const getLabel = (fn: FunctionType) => scripts.find((s) => fn.source?.target?.id === s.id)?.name ?? fn.name;\n return functions.map((fn) => ({ label: getLabel(fn), value: `dxn:worker:${fn.name}` }));\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "useState", "ComputeGraph", "FunctionType", "FunctionTriggerSchema", "ScriptType", "TriggerKind", "Filter", "useQuery", "IconButton", "Input", "useTranslation", "Form", "SelectInput", "TextInput", "TriggerEditor", "space", "trigger", "onSave", "onCancel", "t", "useTranslation", "AUTOMATION_PLUGIN", "functions", "useQuery", "Filter", "schema", "FunctionType", "workflows", "ComputeGraph", "scripts", "ScriptType", "handleSave", "values", "Form", "FunctionTriggerSchema", "Custom", "props", "SelectInput", "options", "getWorkflowOptions", "concat", "getFunctionOptions", "Object", "TriggerKind", "map", "kind", "value", "label", "meta", "getValue", "newMetaFieldName", "setNewMetaFieldName", "useState", "React", "useEffect", "onValueChange", "div", "keys", "key", "compositeKey", "role", "className", "TextInput", "type", "IconButton", "icon", "iconOnly", "classNames", "onClick", "newValues", "Input", "Root", "placeholder", "onChange", "event", "target", "length", "metaWithNewProp", "graphs", "graph", "id", "getLabel", "fn", "find", "s", "source", "name"]
7
- }
@@ -1,76 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- AUTOMATION_PLUGIN
4
- } from "./chunk-X3LPRWIL.mjs";
5
-
6
- // packages/plugins/experimental/plugin-automation/src/types/schema.ts
7
- import { Expando, Ref, S, TypedObject } from "@dxos/echo-schema";
8
- var ChainInputType;
9
- (function(ChainInputType2) {
10
- ChainInputType2[ChainInputType2["VALUE"] = 0] = "VALUE";
11
- ChainInputType2[ChainInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
12
- ChainInputType2[ChainInputType2["RETRIEVER"] = 2] = "RETRIEVER";
13
- ChainInputType2[ChainInputType2["FUNCTION"] = 3] = "FUNCTION";
14
- ChainInputType2[ChainInputType2["QUERY"] = 4] = "QUERY";
15
- ChainInputType2[ChainInputType2["RESOLVER"] = 5] = "RESOLVER";
16
- ChainInputType2[ChainInputType2["CONTEXT"] = 6] = "CONTEXT";
17
- ChainInputType2[ChainInputType2["SCHEMA"] = 7] = "SCHEMA";
18
- })(ChainInputType || (ChainInputType = {}));
19
- var ChainInputSchema = S.mutable(S.Struct({
20
- name: S.String,
21
- type: S.optional(S.Enums(ChainInputType)),
22
- value: S.optional(S.String)
23
- }));
24
- var ChainPromptType = class extends TypedObject({
25
- typename: "dxos.org/type/ChainPrompt",
26
- version: "0.1.0"
27
- })({
28
- command: S.optional(S.String),
29
- template: S.String,
30
- inputs: S.optional(S.mutable(S.Array(ChainInputSchema)))
31
- }) {
32
- };
33
- var ChainType = class extends TypedObject({
34
- typename: "dxos.org/type/Chain",
35
- version: "0.1.0"
36
- })({
37
- name: S.optional(S.String),
38
- prompts: S.optional(S.mutable(S.Array(Ref(ChainPromptType))))
39
- }) {
40
- };
41
- var GptChatType = class extends TypedObject({
42
- typename: "dxos.org/type/GptChat",
43
- version: "0.1.0"
44
- })({
45
- name: S.optional(S.String),
46
- // TODO(wittjosiah): Should be a ref to a Queue.
47
- queue: Ref(Expando)
48
- }) {
49
- };
50
-
51
- // packages/plugins/experimental/plugin-automation/src/types/types.ts
52
- import { S as S2 } from "@dxos/echo-schema";
53
- var AutomationAction;
54
- (function(AutomationAction2) {
55
- const AUTOMATION_ACTION = `${AUTOMATION_PLUGIN}/action`;
56
- class Create extends S2.TaggedClass()(`${AUTOMATION_ACTION}/create`, {
57
- input: S2.Struct({
58
- name: S2.optional(S2.String)
59
- }),
60
- output: S2.Struct({
61
- object: GptChatType
62
- })
63
- }) {
64
- }
65
- AutomationAction2.Create = Create;
66
- })(AutomationAction || (AutomationAction = {}));
67
-
68
- export {
69
- ChainInputType,
70
- ChainInputSchema,
71
- ChainPromptType,
72
- ChainType,
73
- GptChatType,
74
- AutomationAction
75
- };
76
- //# sourceMappingURL=chunk-JCYVS5GG.mjs.map