@dxos/plugin-automation 0.7.5-labs.8a82073 → 0.7.5-labs.a8b535d

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 (308) hide show
  1. package/dist/lib/browser/AutomationPanel-ITYXSN5Z.mjs +132 -0
  2. package/dist/lib/browser/AutomationPanel-ITYXSN5Z.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-DQ7ZSYJJ.mjs → chunk-OFDNNRLE.mjs} +3 -6
  4. package/dist/lib/browser/{chunk-DQ7ZSYJJ.mjs.map → chunk-OFDNNRLE.mjs.map} +3 -3
  5. package/dist/lib/browser/chunk-U7QLNY2S.mjs +8 -0
  6. package/dist/lib/browser/chunk-U7QLNY2S.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-WY2C7JY4.mjs +119 -0
  8. package/dist/lib/browser/chunk-WY2C7JY4.mjs.map +7 -0
  9. package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs +56 -0
  10. package/dist/lib/browser/complementary-panel-4CPOJL4Y.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +21 -373
  12. package/dist/lib/browser/index.mjs.map +4 -4
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/react-surface-SAPMN4PF.mjs +27 -0
  15. package/dist/lib/browser/react-surface-SAPMN4PF.mjs.map +7 -0
  16. package/dist/lib/node/{chunk-IPCNJYQL.cjs → AutomationPanel-X33HHDMQ.cjs} +19 -132
  17. package/dist/lib/node/AutomationPanel-X33HHDMQ.cjs.map +7 -0
  18. package/dist/lib/node/chunk-7Q5SNGCL.cjs +148 -0
  19. package/dist/lib/node/chunk-7Q5SNGCL.cjs.map +7 -0
  20. package/dist/lib/node/chunk-CB5OB6JH.cjs +40 -0
  21. package/dist/lib/node/chunk-CB5OB6JH.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-TQEDPRY5.cjs → chunk-ORMEYEBE.cjs} +6 -9
  23. package/dist/lib/node/{chunk-TQEDPRY5.cjs.map → chunk-ORMEYEBE.cjs.map} +3 -3
  24. package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs +72 -0
  25. package/dist/lib/node/complementary-panel-ZYJJ42ZU.cjs.map +7 -0
  26. package/dist/lib/node/index.cjs +36 -374
  27. package/dist/lib/node/index.cjs.map +4 -4
  28. package/dist/lib/node/meta.json +1 -1
  29. package/dist/lib/node/{react-surface-BVZ63QP4.cjs → react-surface-2WRVAPGR.cjs} +9 -28
  30. package/dist/lib/node/react-surface-2WRVAPGR.cjs.map +7 -0
  31. package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs +133 -0
  32. package/dist/lib/node-esm/AutomationPanel-HY3GB4BT.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-JFHI22MF.mjs → chunk-6MUUH67V.mjs} +3 -6
  34. package/dist/lib/node-esm/{chunk-JFHI22MF.mjs.map → chunk-6MUUH67V.mjs.map} +3 -3
  35. package/dist/lib/node-esm/chunk-R3P2WPBQ.mjs +10 -0
  36. package/dist/lib/node-esm/chunk-R3P2WPBQ.mjs.map +7 -0
  37. package/dist/lib/node-esm/chunk-UDD2VA6G.mjs +120 -0
  38. package/dist/lib/node-esm/chunk-UDD2VA6G.mjs.map +7 -0
  39. package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs +57 -0
  40. package/dist/lib/node-esm/complementary-panel-S42RIIAY.mjs.map +7 -0
  41. package/dist/lib/node-esm/index.mjs +21 -373
  42. package/dist/lib/node-esm/index.mjs.map +4 -4
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/react-surface-QWLPOYXO.mjs +28 -0
  45. package/dist/lib/node-esm/react-surface-QWLPOYXO.mjs.map +7 -0
  46. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/{ai-client.d.ts → complementary-panel.d.ts} +2 -3
  48. package/dist/types/src/capabilities/complementary-panel.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/index.d.ts +1 -180
  50. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  52. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +1 -2
  53. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  54. package/dist/types/src/components/AutomationPanel/AutomationPanel.stories.d.ts.map +1 -1
  55. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts +1 -2
  56. package/dist/types/src/components/TriggerEditor/TriggerEditor.d.ts.map +1 -1
  57. package/dist/types/src/components/TriggerEditor/TriggerEditor.stories.d.ts.map +1 -1
  58. package/dist/types/src/components/index.d.ts +1 -11
  59. package/dist/types/src/components/index.d.ts.map +1 -1
  60. package/dist/types/src/index.d.ts +1 -3
  61. package/dist/types/src/index.d.ts.map +1 -1
  62. package/dist/types/src/meta.d.ts +0 -1
  63. package/dist/types/src/meta.d.ts.map +1 -1
  64. package/dist/types/src/testing/index.d.ts +0 -1
  65. package/dist/types/src/testing/index.d.ts.map +1 -1
  66. package/dist/types/src/testing/test-functions.d.ts +0 -2
  67. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  68. package/dist/types/src/translations.d.ts +1 -94
  69. package/dist/types/src/translations.d.ts.map +1 -1
  70. package/package.json +23 -73
  71. package/src/AutomationPlugin.tsx +9 -64
  72. package/src/capabilities/complementary-panel.ts +56 -0
  73. package/src/capabilities/index.ts +1 -5
  74. package/src/capabilities/react-surface.tsx +2 -16
  75. package/src/components/AutomationPanel/AutomationPanel.stories.tsx +1 -2
  76. package/src/components/AutomationPanel/AutomationPanel.tsx +56 -49
  77. package/src/components/TriggerEditor/TriggerEditor.stories.tsx +1 -2
  78. package/src/components/index.ts +0 -7
  79. package/src/index.ts +2 -3
  80. package/src/meta.ts +1 -2
  81. package/src/testing/index.ts +0 -1
  82. package/src/testing/test-functions.ts +0 -7
  83. package/src/translations.ts +1 -29
  84. package/dist/lib/browser/AutomationPanel-CL2TWZT5.mjs +0 -8
  85. package/dist/lib/browser/AutomationPanel-CL2TWZT5.mjs.map +0 -7
  86. package/dist/lib/browser/ChatContainer-EJ3IWL7Y.mjs +0 -12
  87. package/dist/lib/browser/ChatContainer-EJ3IWL7Y.mjs.map +0 -7
  88. package/dist/lib/browser/ai-client-UJLNYP7B.mjs +0 -22
  89. package/dist/lib/browser/ai-client-UJLNYP7B.mjs.map +0 -7
  90. package/dist/lib/browser/app-graph-builder-3H5TCRG4.mjs +0 -162
  91. package/dist/lib/browser/app-graph-builder-3H5TCRG4.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-43WRHV2L.mjs +0 -150
  93. package/dist/lib/browser/chunk-43WRHV2L.mjs.map +0 -7
  94. package/dist/lib/browser/chunk-4M74P6YW.mjs +0 -284
  95. package/dist/lib/browser/chunk-4M74P6YW.mjs.map +0 -7
  96. package/dist/lib/browser/chunk-6KJRL5KV.mjs +0 -243
  97. package/dist/lib/browser/chunk-6KJRL5KV.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-BQHXJZ4K.mjs +0 -15
  99. package/dist/lib/browser/chunk-BQHXJZ4K.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-N4SSCQ7P.mjs +0 -1602
  101. package/dist/lib/browser/chunk-N4SSCQ7P.mjs.map +0 -7
  102. package/dist/lib/browser/intent-resolver-5YVZJFS3.mjs +0 -29
  103. package/dist/lib/browser/intent-resolver-5YVZJFS3.mjs.map +0 -7
  104. package/dist/lib/browser/react-surface-RRTZFTKR.mjs +0 -50
  105. package/dist/lib/browser/react-surface-RRTZFTKR.mjs.map +0 -7
  106. package/dist/lib/browser/types/index.mjs +0 -24
  107. package/dist/lib/browser/types/index.mjs.map +0 -7
  108. package/dist/lib/node/AutomationPanel-BCEY3YXO.cjs +0 -26
  109. package/dist/lib/node/AutomationPanel-BCEY3YXO.cjs.map +0 -7
  110. package/dist/lib/node/ChatContainer-QUWFEBTI.cjs +0 -33
  111. package/dist/lib/node/ChatContainer-QUWFEBTI.cjs.map +0 -7
  112. package/dist/lib/node/ai-client-AOB6TLNW.cjs +0 -38
  113. package/dist/lib/node/ai-client-AOB6TLNW.cjs.map +0 -7
  114. package/dist/lib/node/app-graph-builder-CDEQJEHY.cjs +0 -178
  115. package/dist/lib/node/app-graph-builder-CDEQJEHY.cjs.map +0 -7
  116. package/dist/lib/node/chunk-AWZVJZ2I.cjs +0 -34
  117. package/dist/lib/node/chunk-AWZVJZ2I.cjs.map +0 -7
  118. package/dist/lib/node/chunk-DKGNORZK.cjs +0 -1586
  119. package/dist/lib/node/chunk-DKGNORZK.cjs.map +0 -7
  120. package/dist/lib/node/chunk-H3RSMGJG.cjs +0 -173
  121. package/dist/lib/node/chunk-H3RSMGJG.cjs.map +0 -7
  122. package/dist/lib/node/chunk-IPCNJYQL.cjs.map +0 -7
  123. package/dist/lib/node/chunk-LC6KNDPQ.cjs +0 -302
  124. package/dist/lib/node/chunk-LC6KNDPQ.cjs.map +0 -7
  125. package/dist/lib/node/intent-resolver-MJFZT5IU.cjs +0 -44
  126. package/dist/lib/node/intent-resolver-MJFZT5IU.cjs.map +0 -7
  127. package/dist/lib/node/react-surface-BVZ63QP4.cjs.map +0 -7
  128. package/dist/lib/node/types/index.cjs +0 -46
  129. package/dist/lib/node/types/index.cjs.map +0 -7
  130. package/dist/lib/node-esm/AutomationPanel-YTIZ74RI.mjs +0 -9
  131. package/dist/lib/node-esm/AutomationPanel-YTIZ74RI.mjs.map +0 -7
  132. package/dist/lib/node-esm/ChatContainer-QSMDZRDU.mjs +0 -13
  133. package/dist/lib/node-esm/ChatContainer-QSMDZRDU.mjs.map +0 -7
  134. package/dist/lib/node-esm/ai-client-RUCCJ7JZ.mjs +0 -23
  135. package/dist/lib/node-esm/ai-client-RUCCJ7JZ.mjs.map +0 -7
  136. package/dist/lib/node-esm/app-graph-builder-GR3URVNX.mjs +0 -163
  137. package/dist/lib/node-esm/app-graph-builder-GR3URVNX.mjs.map +0 -7
  138. package/dist/lib/node-esm/chunk-7JO77AAS.mjs +0 -151
  139. package/dist/lib/node-esm/chunk-7JO77AAS.mjs.map +0 -7
  140. package/dist/lib/node-esm/chunk-CQPQXIJP.mjs +0 -285
  141. package/dist/lib/node-esm/chunk-CQPQXIJP.mjs.map +0 -7
  142. package/dist/lib/node-esm/chunk-CZXU4CFK.mjs +0 -244
  143. package/dist/lib/node-esm/chunk-CZXU4CFK.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-D7RARVTS.mjs +0 -1603
  145. package/dist/lib/node-esm/chunk-D7RARVTS.mjs.map +0 -7
  146. package/dist/lib/node-esm/chunk-LSSWQIQD.mjs +0 -16
  147. package/dist/lib/node-esm/chunk-LSSWQIQD.mjs.map +0 -7
  148. package/dist/lib/node-esm/intent-resolver-FCKNRTKQ.mjs +0 -30
  149. package/dist/lib/node-esm/intent-resolver-FCKNRTKQ.mjs.map +0 -7
  150. package/dist/lib/node-esm/react-surface-Y5LQHUQN.mjs +0 -51
  151. package/dist/lib/node-esm/react-surface-Y5LQHUQN.mjs.map +0 -7
  152. package/dist/lib/node-esm/types/index.mjs +0 -25
  153. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  154. package/dist/types/src/artifacts.stories.d.ts +0 -16
  155. package/dist/types/src/artifacts.stories.d.ts.map +0 -1
  156. package/dist/types/src/capabilities/ai-client.d.ts.map +0 -1
  157. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -180
  158. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  160. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  161. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  162. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  163. package/dist/types/src/components/Box/StatusLine.d.ts +0 -11
  164. package/dist/types/src/components/Box/StatusLine.d.ts.map +0 -1
  165. package/dist/types/src/components/Box/StatusLine.stories.d.ts +0 -9
  166. package/dist/types/src/components/Box/StatusLine.stories.d.ts.map +0 -1
  167. package/dist/types/src/components/Box/Tabbed.d.ts +0 -15
  168. package/dist/types/src/components/Box/Tabbed.d.ts.map +0 -1
  169. package/dist/types/src/components/Box/Tabbed.stories.d.ts +0 -8
  170. package/dist/types/src/components/Box/Tabbed.stories.d.ts.map +0 -1
  171. package/dist/types/src/components/Box/ToggleContainer.d.ts +0 -13
  172. package/dist/types/src/components/Box/ToggleContainer.d.ts.map +0 -1
  173. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts +0 -9
  174. package/dist/types/src/components/Box/ToggleContainer.stories.d.ts.map +0 -1
  175. package/dist/types/src/components/Box/index.d.ts +0 -4
  176. package/dist/types/src/components/Box/index.d.ts.map +0 -1
  177. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts +0 -7
  178. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +0 -1
  179. package/dist/types/src/components/ChatContainer/index.d.ts +0 -4
  180. package/dist/types/src/components/ChatContainer/index.d.ts.map +0 -1
  181. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +0 -14
  182. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +0 -1
  183. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +0 -8
  184. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +0 -1
  185. package/dist/types/src/components/MarkdownViewer/index.d.ts +0 -2
  186. package/dist/types/src/components/MarkdownViewer/index.d.ts.map +0 -1
  187. package/dist/types/src/components/Prompt/Prompt.d.ts +0 -7
  188. package/dist/types/src/components/Prompt/Prompt.d.ts.map +0 -1
  189. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +0 -8
  190. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +0 -1
  191. package/dist/types/src/components/Prompt/index.d.ts +0 -2
  192. package/dist/types/src/components/Prompt/index.d.ts.map +0 -1
  193. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +0 -20
  194. package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +0 -1
  195. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts +0 -10
  196. package/dist/types/src/components/PromptEditor/PromptEditor.d.ts.map +0 -1
  197. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts +0 -6
  198. package/dist/types/src/components/PromptEditor/PromptEditor.stories.d.ts.map +0 -1
  199. package/dist/types/src/components/PromptEditor/index.d.ts +0 -2
  200. package/dist/types/src/components/PromptEditor/index.d.ts.map +0 -1
  201. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts +0 -4
  202. package/dist/types/src/components/PromptEditor/prompt-extension.d.ts.map +0 -1
  203. package/dist/types/src/components/PromptEditor/types.d.ts +0 -18
  204. package/dist/types/src/components/PromptEditor/types.d.ts.map +0 -1
  205. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  206. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  207. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  208. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  209. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  210. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  211. package/dist/types/src/components/Thread/Thread.d.ts +0 -11
  212. package/dist/types/src/components/Thread/Thread.d.ts.map +0 -1
  213. package/dist/types/src/components/Thread/Thread.stories.d.ts +0 -11
  214. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +0 -1
  215. package/dist/types/src/components/Thread/ThreadMessage.d.ts +0 -12
  216. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +0 -1
  217. package/dist/types/src/components/Thread/index.d.ts +0 -2
  218. package/dist/types/src/components/Thread/index.d.ts.map +0 -1
  219. package/dist/types/src/hooks/email.d.ts +0 -4
  220. package/dist/types/src/hooks/email.d.ts.map +0 -1
  221. package/dist/types/src/hooks/index.d.ts +0 -6
  222. package/dist/types/src/hooks/index.d.ts.map +0 -1
  223. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  224. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  225. package/dist/types/src/hooks/processor.d.ts +0 -70
  226. package/dist/types/src/hooks/processor.d.ts.map +0 -1
  227. package/dist/types/src/hooks/processor.test.d.ts +0 -2
  228. package/dist/types/src/hooks/processor.test.d.ts.map +0 -1
  229. package/dist/types/src/hooks/useChatProcessor.d.ts +0 -7
  230. package/dist/types/src/hooks/useChatProcessor.d.ts.map +0 -1
  231. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  232. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  233. package/dist/types/src/hooks/useMessageQueue.d.ts +0 -41
  234. package/dist/types/src/hooks/useMessageQueue.d.ts.map +0 -1
  235. package/dist/types/src/hooks/useServices.d.ts +0 -7
  236. package/dist/types/src/hooks/useServices.d.ts.map +0 -1
  237. package/dist/types/src/presets.d.ts +0 -9
  238. package/dist/types/src/presets.d.ts.map +0 -1
  239. package/dist/types/src/testing/test-services.d.ts +0 -5
  240. package/dist/types/src/testing/test-services.d.ts.map +0 -1
  241. package/dist/types/src/tools/function.d.ts +0 -5
  242. package/dist/types/src/tools/function.d.ts.map +0 -1
  243. package/dist/types/src/tools/index.d.ts +0 -3
  244. package/dist/types/src/tools/index.d.ts.map +0 -1
  245. package/dist/types/src/tools/openapi.d.ts +0 -10
  246. package/dist/types/src/tools/openapi.d.ts.map +0 -1
  247. package/dist/types/src/tools/openapi.test.d.ts +0 -2
  248. package/dist/types/src/tools/openapi.test.d.ts.map +0 -1
  249. package/dist/types/src/types/index.d.ts +0 -4
  250. package/dist/types/src/types/index.d.ts.map +0 -1
  251. package/dist/types/src/types/registry.d.ts +0 -10
  252. package/dist/types/src/types/registry.d.ts.map +0 -1
  253. package/dist/types/src/types/schema.d.ts +0 -221
  254. package/dist/types/src/types/schema.d.ts.map +0 -1
  255. package/dist/types/src/types/types.d.ts +0 -18
  256. package/dist/types/src/types/types.d.ts.map +0 -1
  257. package/src/artifacts.stories.tsx +0 -241
  258. package/src/capabilities/ai-client.ts +0 -19
  259. package/src/capabilities/app-graph-builder.ts +0 -156
  260. package/src/capabilities/capabilities.ts +0 -12
  261. package/src/capabilities/intent-resolver.ts +0 -27
  262. package/src/components/Box/StatusLine.stories.tsx +0 -52
  263. package/src/components/Box/StatusLine.tsx +0 -76
  264. package/src/components/Box/Tabbed.stories.tsx +0 -51
  265. package/src/components/Box/Tabbed.tsx +0 -89
  266. package/src/components/Box/ToggleContainer.stories.tsx +0 -110
  267. package/src/components/Box/ToggleContainer.tsx +0 -108
  268. package/src/components/Box/index.ts +0 -7
  269. package/src/components/ChatContainer/ChatContainer.tsx +0 -52
  270. package/src/components/ChatContainer/index.ts +0 -8
  271. package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +0 -56
  272. package/src/components/MarkdownViewer/MarkdownViewer.tsx +0 -79
  273. package/src/components/MarkdownViewer/index.ts +0 -5
  274. package/src/components/Prompt/Prompt.stories.tsx +0 -50
  275. package/src/components/Prompt/Prompt.tsx +0 -36
  276. package/src/components/Prompt/index.ts +0 -5
  277. package/src/components/Prompt/prompt-autocomplete.ts +0 -200
  278. package/src/components/PromptEditor/PromptEditor.stories.tsx +0 -64
  279. package/src/components/PromptEditor/PromptEditor.tsx +0 -222
  280. package/src/components/PromptEditor/index.ts +0 -5
  281. package/src/components/PromptEditor/prompt-extension.ts +0 -43
  282. package/src/components/PromptEditor/types.tsx +0 -28
  283. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  284. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -75
  285. package/src/components/ServiceRegistry/index.ts +0 -5
  286. package/src/components/Thread/Thread.stories.tsx +0 -197
  287. package/src/components/Thread/Thread.tsx +0 -156
  288. package/src/components/Thread/ThreadMessage.tsx +0 -225
  289. package/src/components/Thread/index.ts +0 -5
  290. package/src/hooks/email.ts +0 -49
  291. package/src/hooks/index.ts +0 -10
  292. package/src/hooks/invocation-handler.ts +0 -109
  293. package/src/hooks/processor.test.ts +0 -15
  294. package/src/hooks/processor.ts +0 -210
  295. package/src/hooks/useChatProcessor.tsx +0 -86
  296. package/src/hooks/useLocalTriggerManager.ts +0 -82
  297. package/src/hooks/useMessageQueue.ts +0 -23
  298. package/src/hooks/useServices.ts +0 -28
  299. package/src/presets.ts +0 -248
  300. package/src/testing/test-services.ts +0 -131
  301. package/src/tools/function.ts +0 -47
  302. package/src/tools/index.ts +0 -6
  303. package/src/tools/openapi.test.ts +0 -227
  304. package/src/tools/openapi.ts +0 -331
  305. package/src/types/index.ts +0 -7
  306. package/src/types/registry.ts +0 -26
  307. package/src/types/schema.ts +0 -132
  308. package/src/types/types.ts +0 -21
@@ -1,109 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { sleep } from '@dxos/async';
6
- import { getObjectCore, ResultFormat } from '@dxos/echo-db';
7
- import { type AnyObjectData } from '@dxos/echo-schema';
8
- import { FunctionType } from '@dxos/functions';
9
- import { type FunctionTrigger } from '@dxos/functions';
10
- import { invariant } from '@dxos/invariant';
11
- import { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';
12
- import { log } from '@dxos/log';
13
- import { type Client, type Config } from '@dxos/react-client';
14
- import { type Space } from '@dxos/react-client/echo';
15
-
16
- const MAX_RETRIES = 3;
17
- const RETRY_DELAY = 1_000;
18
-
19
- const callFunction = async (funcUrl: string, trigger: any, data: any) => {
20
- const body = { event: 'trigger', trigger, data };
21
-
22
- let retryCount = 0;
23
- while (retryCount < MAX_RETRIES) {
24
- log.info('exec', { funcUrl, body, retryCount });
25
- const response = await fetch(funcUrl, {
26
- method: 'POST',
27
- headers: {
28
- 'Content-Type': 'application/json',
29
- },
30
- body: JSON.stringify(body),
31
- });
32
-
33
- const data = await response.text();
34
- log.info('response', { status: response.status, body: data });
35
- if (response.status === 409) {
36
- retryCount++;
37
- await sleep(RETRY_DELAY * Math.min(retryCount, 2));
38
- continue;
39
- }
40
-
41
- return { status: response.status, data };
42
- }
43
- return { status: 500 };
44
- };
45
-
46
- export const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {
47
- try {
48
- invariant(trigger.spec);
49
- invariant(trigger.function);
50
-
51
- const script = await space.db.query({ id: trigger.function }, { format: ResultFormat.Plain }).first();
52
- const { objects: functions } = await space.db
53
- .query({ __typename: FunctionType.typename }, { format: ResultFormat.Plain })
54
- .run();
55
- const func = functions.find((fn) => referenceEquals(fn.source, trigger.function!)) as AnyObjectData | undefined;
56
- const funcSlug = func?.__meta.keys.find((key) => key.source === USERFUNCTIONS_META_KEY)?.id;
57
- if (!funcSlug) {
58
- log.warn('function not deployed', { scriptId: script.id, name: script.name });
59
- return 404;
60
- }
61
-
62
- const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);
63
- const triggerData: AnyObjectData = {
64
- ...getObjectCore(trigger).toPlainObject(),
65
- // TODO: Remove when functions can query by DXN.
66
- promptId: trigger.meta?.prompt?.id,
67
- };
68
- // TODO: Remove when functions can add objects and easily modify collections (push, splice).
69
- return (await callFunction(funcUrl, triggerData, data)).status;
70
- } catch (err) {
71
- return 400;
72
- }
73
- };
74
-
75
- const USERFUNCTIONS_META_KEY = 'dxos.org/service/function';
76
-
77
- const getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {
78
- const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);
79
-
80
- // Leading slashes cause the URL to be treated as an absolute path.
81
- const relativeUrl = slug.replace(/^\//, '');
82
- const url = new URL(`./${relativeUrl}`, baseUrl.toString());
83
- spaceId && url.searchParams.set('spaceId', spaceId);
84
- url.protocol = 'https';
85
- return url.toString();
86
- };
87
-
88
- // TODO(dmaretskyi): Factor out.
89
-
90
- type ReferenceLike = { '/': string } | string;
91
-
92
- const referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {
93
- const aDXN = toDXN(a);
94
- const bDXN = toDXN(b);
95
- return aDXN.toString() === bDXN.toString();
96
- };
97
-
98
- const toDXN = (ref: ReferenceLike): DXN => {
99
- if (typeof ref === 'string') {
100
- if (ref.startsWith('dxn:')) {
101
- return DXN.parse(ref);
102
- } else {
103
- return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);
104
- }
105
- }
106
-
107
- invariant(typeof ref['/'] === 'string');
108
- return DXN.parse(ref['/']);
109
- };
@@ -1,15 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { describe, it } from 'vitest';
6
-
7
- import { ChatProcessor } from './processor';
8
-
9
- describe('ChatProcessor', () => {
10
- it('should be instantiable', ({ expect }) => {
11
- const client = {} as any; // TODO(burdon): Create mock.
12
- const processor = new ChatProcessor(client);
13
- expect(processor).toBeDefined();
14
- });
15
- });
@@ -1,210 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { type Signal, batch, computed, signal } from '@preact/signals-core';
6
-
7
- import { type PromiseIntentDispatcher } from '@dxos/app-framework';
8
- import { type Tool, Message, type MessageContentBlock } from '@dxos/artifact';
9
- import {
10
- isToolUse,
11
- runTools,
12
- type AIServiceClientImpl,
13
- type GenerateRequest,
14
- type GenerationStream,
15
- MixedStreamParser,
16
- } from '@dxos/assistant';
17
- import { createStatic } from '@dxos/echo-schema';
18
- import { invariant } from '@dxos/invariant';
19
- import { log } from '@dxos/log';
20
- import { type Space } from '@dxos/react-client/echo';
21
-
22
- // TODO(burdon): Factor out.
23
- declare global {
24
- interface ToolContextExtensions {
25
- space?: Space;
26
- dispatch?: PromiseIntentDispatcher;
27
- }
28
- }
29
-
30
- type RequestOptions = {
31
- history?: Message[];
32
- onComplete?: (messages: Message[]) => void;
33
- };
34
-
35
- export type ChatProcessorOptions = Pick<GenerateRequest, 'model' | 'systemPrompt'>;
36
-
37
- const defaultOptions: ChatProcessorOptions = {
38
- model: '@anthropic/claude-3-5-sonnet-20241022',
39
- systemPrompt: 'you are a helpful assistant',
40
- };
41
-
42
- /**
43
- * Handles interactions with the AI service.
44
- * Maintains a queue of messages and handles streaming responses from the AI service.
45
- * Executes tools based on AI responses.
46
- * Supports cancellation of in-progress requests.
47
- */
48
- export class ChatProcessor {
49
- /** SSE stream parser. */
50
- private readonly _parser = new MixedStreamParser();
51
-
52
- /** Current streaming response (iterator). */
53
- private _stream: GenerationStream | undefined;
54
-
55
- /** Pending messages (incl. the user request). */
56
- private readonly _pending: Signal<Message[]> = signal([]);
57
-
58
- /** Current streaming block (from the AI service). */
59
- private readonly _block: Signal<MessageContentBlock | undefined> = signal(undefined);
60
-
61
- /** Prior history from queue. */
62
- private _history: Message[] = [];
63
-
64
- /**
65
- * Streaming state.
66
- * @reactive
67
- */
68
- public readonly streaming: Signal<boolean> = computed(() => this._block.value !== undefined);
69
-
70
- /**
71
- * Array of Messages (incl. the current message being streamed).
72
- * @reactive
73
- */
74
- public readonly messages: Signal<Message[]> = computed(() => {
75
- const messages = [...this._pending.value];
76
- if (this._block.value) {
77
- const current = messages.pop();
78
- invariant(current);
79
- const { content, ...rest } = current;
80
- const message = { ...rest, content: [...content, this._block.value] };
81
- messages.push(message);
82
- }
83
-
84
- return messages;
85
- });
86
-
87
- constructor(
88
- private readonly _client: AIServiceClientImpl,
89
- private _tools?: Tool[],
90
- private readonly _extensions?: ToolContextExtensions,
91
- private readonly _options: ChatProcessorOptions = defaultOptions,
92
- ) {
93
- // Message complete.
94
- this._parser.message.on((message) => {
95
- batch(() => {
96
- this._pending.value = [...this._pending.value, message];
97
- this._block.value = undefined;
98
- });
99
- });
100
-
101
- // Streaming update (happens before message complete).
102
- this._parser.update.on((block) => {
103
- batch(() => {
104
- this._block.value = block;
105
- });
106
- });
107
- }
108
-
109
- /**
110
- * Update tools.
111
- */
112
- setTools(tools: Tool[]) {
113
- this._tools = tools;
114
- }
115
-
116
- /**
117
- * Make GPT request.
118
- */
119
- async request(message: string, options: RequestOptions = {}): Promise<Message[]> {
120
- batch(() => {
121
- this._history = options.history ?? [];
122
- this._pending.value = [
123
- createStatic(Message, {
124
- role: 'user',
125
- content: [{ type: 'text', text: message }],
126
- }),
127
- ];
128
- this._block.value = undefined;
129
- });
130
-
131
- await this._generate();
132
- options.onComplete?.(this._pending.value);
133
- return this._reset();
134
- }
135
-
136
- /**
137
- * Cancel pending requests.
138
- * @returns Pending requests (incl. the request message).
139
- */
140
- async cancel(): Promise<Message[]> {
141
- log.info('cancelling...');
142
- this._stream?.abort();
143
- return this._reset();
144
- }
145
-
146
- private async _reset(): Promise<Message[]> {
147
- const messages = this._pending.value;
148
- batch(() => {
149
- this._history = [];
150
- this._pending.value = [];
151
- this._block.value = undefined;
152
- });
153
-
154
- return messages;
155
- }
156
-
157
- /**
158
- * Generate a response from the AI service.
159
- * Iterates over tool requests.
160
- */
161
- private async _generate() {
162
- try {
163
- let more = false;
164
- do {
165
- log.info('requesting...', { history: this._history.length, messages: this._pending.value.length });
166
- this._stream = await this._client.generate({
167
- ...this._options,
168
- // TODO(burdon): Rename messages or separate history/message.
169
- history: [...this._history, ...this._pending.value],
170
- tools: this._tools,
171
- });
172
-
173
- // Wait until complete.
174
- await this._parser.parse(this._stream);
175
- await this._stream.complete();
176
-
177
- // Add messages.
178
- log.info('response', { messages: this._pending.value });
179
-
180
- // Resolve tool use locally.
181
- more = false;
182
- const message = this._pending.value.at(-1);
183
- invariant(message);
184
- if (isToolUse(message)) {
185
- log.info('tool request...');
186
- const response = await runTools({
187
- message: this._pending.value.at(-1)!,
188
- tools: this._tools ?? [],
189
- extensions: this._extensions,
190
- });
191
-
192
- log.info('tool response', { response });
193
- switch (response.type) {
194
- case 'continue': {
195
- this._pending.value = [...this._pending.value, response.message];
196
- more = true;
197
- break;
198
- }
199
- }
200
- }
201
- } while (more);
202
- } catch (err) {
203
- // TODO(burdon): Handle error.
204
- log.catch('request failed', { err });
205
- } finally {
206
- log.info('done');
207
- this._stream = undefined;
208
- }
209
- }
210
- }
@@ -1,86 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { useEffect, useMemo, useState } from 'react';
6
-
7
- import { Capabilities, useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework';
8
- import { createSystemPrompt, type Tool } from '@dxos/artifact';
9
- import { FunctionType } from '@dxos/functions';
10
- import { useConfig } from '@dxos/react-client';
11
- import { Filter, getSpace, useQuery } from '@dxos/react-client/echo';
12
- import { isNotNullOrUndefined } from '@dxos/util';
13
-
14
- import { AutomationCapabilities } from '../capabilities';
15
- import { ChatProcessor } from '../hooks';
16
- import { covertFunctionToTool, createToolsFromService } from '../tools';
17
- import { ServiceType, type AIChatType } from '../types';
18
-
19
- /**
20
- * Creates a processor for the chat.
21
- */
22
- export const useChatProcessor = (chat: AIChatType) => {
23
- const aiClient = useCapability(AutomationCapabilities.AiClient);
24
- const globalTools = useCapabilities(Capabilities.Tools);
25
- const artifactDefinitions = useCapabilities(Capabilities.ArtifactDefinition);
26
- const { dispatchPromise: dispatch } = useIntentDispatcher();
27
- const space = getSpace(chat);
28
-
29
- // Services.
30
- const services = useQuery(space, Filter.schema(ServiceType));
31
- const [serviceTools, setServiceTools] = useState<Tool[]>([]);
32
- useEffect(() => {
33
- queueMicrotask(async () => {
34
- const tools = await Promise.all(services.map((service) => createToolsFromService(service)));
35
- setServiceTools(tools.flat());
36
- });
37
- }, [services]);
38
-
39
- // Tools.
40
- const config = useConfig();
41
- const functions = useQuery(space, Filter.schema(FunctionType));
42
- const tools = useMemo(
43
- () => [
44
- ...globalTools.flat(),
45
- ...artifactDefinitions.flatMap((definition) => definition.tools),
46
- ...serviceTools,
47
- ...functions
48
- .map((fn) => covertFunctionToTool(fn, config.values.runtime?.services?.edge?.url ?? '', space?.id))
49
- .filter(isNotNullOrUndefined),
50
- ],
51
- [globalTools, artifactDefinitions, serviceTools, functions, space?.id],
52
- );
53
-
54
- // Prompt.
55
- const systemPrompt = useMemo(
56
- () => createSystemPrompt({ artifacts: artifactDefinitions.map((definition) => definition.instructions) }),
57
- [artifactDefinitions],
58
- );
59
-
60
- // Create processor.
61
- const processor = useMemo(
62
- () =>
63
- new ChatProcessor(
64
- aiClient,
65
- tools,
66
- {
67
- space,
68
- dispatch,
69
- },
70
- {
71
- model: '@anthropic/claude-3-5-sonnet-20241022',
72
- systemPrompt,
73
- },
74
- ),
75
- [aiClient, tools, space, dispatch, systemPrompt],
76
- );
77
-
78
- // Update processor.
79
- // useEffect(() => {
80
- // if (processor) {
81
- // processor.setTools(tools.flat());
82
- // }
83
- // }, [processor, tools]);
84
-
85
- return processor;
86
- };
@@ -1,82 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { useEffect, useState } from 'react';
6
-
7
- import { Mutex } from '@dxos/async';
8
- import { Context } from '@dxos/context';
9
- import { createSubscriptionTrigger, type TriggerFactory } from '@dxos/functions';
10
- import { FunctionTrigger } from '@dxos/functions';
11
- import { invariant } from '@dxos/invariant';
12
- import { log } from '@dxos/log';
13
- import { useClient } from '@dxos/react-client';
14
- import { Filter, type Space, useQuery } from '@dxos/react-client/echo';
15
-
16
- import { invokeFunction } from './invocation-handler';
17
-
18
- const registerTriggersMutex = new Mutex();
19
-
20
- export const useLocalTriggerManager = (space: Space) => {
21
- const client = useClient();
22
-
23
- // TODO(burdon): Factor out, creating context for plugin (runs outside of component).
24
- const [registry] = useState(new Map<string, Context>());
25
- const triggers = useQuery(space, Filter.schema(FunctionTrigger));
26
- useEffect(() => {
27
- setTimeout(async () => {
28
- // Mark-and-sweep removing disabled triggers.
29
- await registerTriggersMutex.executeSynchronized(async () => {
30
- const deprecated = new Set(Array.from(registry.keys()));
31
- log('triggers', {
32
- deprecated,
33
- all: triggers.map((t) => t.id),
34
- enabled: triggers.filter((t) => t.enabled).map((t) => t.id),
35
- });
36
-
37
- for (const trigger of triggers) {
38
- if (trigger.enabled) {
39
- if (registry.has(trigger.id)) {
40
- deprecated.delete(trigger.id);
41
- continue;
42
- }
43
- log.info('activating trigger', trigger.id);
44
-
45
- const ctx = new Context();
46
- registry.set(trigger.id, ctx);
47
- const triggerSpec = trigger.spec;
48
- invariant(triggerSpec);
49
-
50
- let triggerFactory: TriggerFactory<any>;
51
- if (triggerSpec.type === 'subscription') {
52
- triggerFactory = createSubscriptionTrigger;
53
- } else {
54
- log.info('unsupported trigger', { type: triggerSpec.type });
55
- continue;
56
- }
57
-
58
- await triggerFactory(ctx, space, trigger.spec, (data: any) => {
59
- return invokeFunction(client, space, trigger, data);
60
- });
61
- }
62
- }
63
-
64
- for (const id of deprecated) {
65
- const ctx = registry.get(id);
66
- if (ctx) {
67
- await ctx.dispose();
68
- registry.delete(id);
69
- }
70
- }
71
- });
72
- });
73
- }, [JSON.stringify(triggers)]);
74
-
75
- useEffect(() => {
76
- return () => {
77
- for (const ctx of registry.values()) {
78
- void ctx.dispose();
79
- }
80
- };
81
- }, []);
82
- };
@@ -1,23 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { useMemo } from 'react';
6
-
7
- import { type Message } from '@dxos/artifact';
8
- import { DXN, QueueSubspaceTags } from '@dxos/keys';
9
- import { getSpace } from '@dxos/react-client/echo';
10
- import { useEdgeClient, useQueue } from '@dxos/react-edge-client';
11
-
12
- import { type AIChatType } from '../types';
13
-
14
- export const useMessageQueue = (chat: AIChatType) => {
15
- const edgeClient = useEdgeClient();
16
- const space = getSpace(chat);
17
- const queueDxn = useMemo(
18
- () => new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space!.id, chat.queue.dxn.parts.at(-1)!]),
19
- [chat.queue.dxn],
20
- );
21
-
22
- return useQueue<Message>(edgeClient, queueDxn);
23
- };
@@ -1,28 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { useEffect, useMemo, useState } from 'react';
6
-
7
- import { type Space } from '@dxos/client/echo';
8
-
9
- import { MockServiceRegistry } from '../testing';
10
- import { type ServiceType, type ServiceQuery } from '../types';
11
-
12
- /**
13
- * Retrieves matching services from the registry.
14
- */
15
- export const useServices = (space: Space, query?: ServiceQuery): ServiceType[] => {
16
- const registry = useMemo(() => new MockServiceRegistry(), []);
17
- const [services, setServices] = useState<ServiceType[]>([]);
18
- useEffect(() => {
19
- const t = setTimeout(async () => {
20
- const services = await registry.queryServices(query);
21
- setServices(services);
22
- });
23
-
24
- return () => clearTimeout(t);
25
- }, [query, registry]);
26
-
27
- return services;
28
- };