@dxos/plugin-automation 0.7.5-labs.5f04cf6 → 0.7.5-labs.e27f9b9

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 (242) hide show
  1. package/dist/lib/browser/AutomationPanel-WFJZAW4F.mjs +8 -0
  2. package/dist/lib/browser/AutomationPanel-WFJZAW4F.mjs.map +7 -0
  3. package/dist/lib/browser/ChatContainer-OFCOZ5T2.mjs +12 -0
  4. package/dist/lib/browser/ChatContainer-OFCOZ5T2.mjs.map +7 -0
  5. package/dist/lib/browser/{ai-client-6CRYUC6D.mjs → ai-client-AARXEMMJ.mjs} +2 -2
  6. package/dist/lib/browser/{ai-client-6CRYUC6D.mjs.map → ai-client-AARXEMMJ.mjs.map} +3 -3
  7. package/dist/lib/browser/{app-graph-builder-IJTTULDP.mjs → app-graph-builder-B4U34VSR.mjs} +32 -1
  8. package/dist/lib/browser/{app-graph-builder-IJTTULDP.mjs.map → app-graph-builder-B4U34VSR.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-5SLV6AUA.mjs +1367 -0
  10. package/dist/lib/browser/chunk-5SLV6AUA.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-7XADMUOW.mjs +205 -0
  12. package/dist/lib/browser/chunk-7XADMUOW.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-EKJVAFT2.mjs → chunk-IYSMXX6Q.mjs} +64 -7
  14. package/dist/lib/{node-esm/chunk-5QUXIXNB.mjs.map → browser/chunk-IYSMXX6Q.mjs.map} +4 -4
  15. package/dist/lib/browser/chunk-RAVNWHNE.mjs +242 -0
  16. package/dist/lib/browser/chunk-RAVNWHNE.mjs.map +7 -0
  17. package/dist/lib/browser/index.mjs +43 -38
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/intent-resolver-754MPV7H.mjs +29 -0
  20. package/dist/lib/browser/intent-resolver-754MPV7H.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-surface-IGMBLSV7.mjs → react-surface-4QZ6AKBF.mjs} +22 -21
  23. package/dist/lib/browser/react-surface-4QZ6AKBF.mjs.map +7 -0
  24. package/dist/lib/browser/types/index.mjs +9 -3
  25. package/dist/lib/node/AutomationPanel-LRDEDGXI.cjs +26 -0
  26. package/dist/lib/node/AutomationPanel-LRDEDGXI.cjs.map +7 -0
  27. package/dist/lib/node/ChatContainer-6LZX4K2Z.cjs +33 -0
  28. package/dist/lib/node/ChatContainer-6LZX4K2Z.cjs.map +7 -0
  29. package/dist/lib/node/{ai-client-A3RRU55B.cjs → ai-client-SA35GN5Q.cjs} +5 -5
  30. package/dist/lib/node/{ai-client-A3RRU55B.cjs.map → ai-client-SA35GN5Q.cjs.map} +3 -3
  31. package/dist/lib/node/{app-graph-builder-MF5M4QRS.cjs → app-graph-builder-ENVDOPS4.cjs} +35 -4
  32. package/dist/lib/node/{app-graph-builder-MF5M4QRS.cjs.map → app-graph-builder-ENVDOPS4.cjs.map} +3 -3
  33. package/dist/lib/node/chunk-6VMSH4P6.cjs +1364 -0
  34. package/dist/lib/node/chunk-6VMSH4P6.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-VEGLN4YN.cjs → chunk-HEYQONXC.cjs} +76 -24
  36. package/dist/lib/node/chunk-HEYQONXC.cjs.map +7 -0
  37. package/dist/lib/node/chunk-LU4HQWJD.cjs +226 -0
  38. package/dist/lib/node/chunk-LU4HQWJD.cjs.map +7 -0
  39. package/dist/lib/node/{AutomationPanel-RXJDVLCF.cjs → chunk-WWU5FVAO.cjs} +120 -7
  40. package/dist/lib/node/chunk-WWU5FVAO.cjs.map +7 -0
  41. package/dist/lib/node/index.cjs +72 -66
  42. package/dist/lib/node/index.cjs.map +3 -3
  43. package/dist/lib/node/{intent-resolver-TBHYXBDI.cjs → intent-resolver-CNVBSG4E.cjs} +19 -14
  44. package/dist/lib/node/intent-resolver-CNVBSG4E.cjs.map +7 -0
  45. package/dist/lib/node/meta.json +1 -1
  46. package/dist/lib/node/{react-surface-BVUZMKYS.cjs → react-surface-5HYLBDC3.cjs} +23 -22
  47. package/dist/lib/node/react-surface-5HYLBDC3.cjs.map +7 -0
  48. package/dist/lib/node/types/index.cjs +14 -8
  49. package/dist/lib/node/types/index.cjs.map +2 -2
  50. package/dist/lib/node-esm/AutomationPanel-ZV7VEEPP.mjs +9 -0
  51. package/dist/lib/node-esm/AutomationPanel-ZV7VEEPP.mjs.map +7 -0
  52. package/dist/lib/node-esm/ChatContainer-PPVMC2FC.mjs +13 -0
  53. package/dist/lib/node-esm/ChatContainer-PPVMC2FC.mjs.map +7 -0
  54. package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs → ai-client-2ZA4TYFZ.mjs} +2 -2
  55. package/dist/lib/node-esm/{ai-client-2GBZRHBA.mjs.map → ai-client-2ZA4TYFZ.mjs.map} +3 -3
  56. package/dist/lib/node-esm/{app-graph-builder-5N7OK23B.mjs → app-graph-builder-IYOUCQZT.mjs} +32 -1
  57. package/dist/lib/node-esm/{app-graph-builder-5N7OK23B.mjs.map → app-graph-builder-IYOUCQZT.mjs.map} +3 -3
  58. package/dist/lib/node-esm/{chunk-5QUXIXNB.mjs → chunk-3KB5HRXA.mjs} +64 -7
  59. package/dist/lib/{browser/chunk-EKJVAFT2.mjs.map → node-esm/chunk-3KB5HRXA.mjs.map} +4 -4
  60. package/dist/lib/node-esm/chunk-EVTLHDM2.mjs +206 -0
  61. package/dist/lib/node-esm/chunk-EVTLHDM2.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-MS7OIGVR.mjs +243 -0
  63. package/dist/lib/node-esm/chunk-MS7OIGVR.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-WISKXX7U.mjs +1368 -0
  65. package/dist/lib/node-esm/chunk-WISKXX7U.mjs.map +7 -0
  66. package/dist/lib/node-esm/index.mjs +43 -38
  67. package/dist/lib/node-esm/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/{intent-resolver-DPJJHFGK.mjs → intent-resolver-RQBXW442.mjs} +18 -13
  69. package/dist/lib/node-esm/intent-resolver-RQBXW442.mjs.map +7 -0
  70. package/dist/lib/node-esm/meta.json +1 -1
  71. package/dist/lib/node-esm/{react-surface-77S6XJOM.mjs → react-surface-SS5WCRJ2.mjs} +22 -21
  72. package/dist/lib/node-esm/react-surface-SS5WCRJ2.mjs.map +7 -0
  73. package/dist/lib/node-esm/types/index.mjs +9 -3
  74. package/dist/types/src/AutomationPlugin.d.ts.map +1 -1
  75. package/dist/types/src/artifacts.stories.d.ts +10 -24
  76. package/dist/types/src/artifacts.stories.d.ts.map +1 -1
  77. package/dist/types/src/capabilities/app-graph-builder.d.ts +22 -22
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/index.d.ts +27 -27
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  82. package/dist/types/src/components/{ChatContainer.d.ts → ChatContainer/ChatContainer.d.ts} +2 -2
  83. package/dist/types/src/components/ChatContainer/ChatContainer.d.ts.map +1 -0
  84. package/dist/types/src/components/ChatContainer/index.d.ts +4 -0
  85. package/dist/types/src/components/ChatContainer/index.d.ts.map +1 -0
  86. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts +14 -0
  87. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.d.ts.map +1 -0
  88. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts +8 -0
  89. package/dist/types/src/components/MarkdownViewer/MarkdownViewer.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/MarkdownViewer/index.d.ts +2 -0
  91. package/dist/types/src/components/MarkdownViewer/index.d.ts.map +1 -0
  92. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +6 -0
  93. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -0
  94. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +8 -0
  95. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/ServiceRegistry/index.d.ts +2 -0
  97. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +1 -0
  98. package/dist/types/src/components/Thread/ScrollContainer.d.ts +15 -0
  99. package/dist/types/src/components/Thread/ScrollContainer.d.ts.map +1 -0
  100. package/dist/types/src/components/Thread/StatusLine.d.ts +11 -0
  101. package/dist/types/src/components/Thread/StatusLine.d.ts.map +1 -0
  102. package/dist/types/src/components/Thread/StatusLine.stories.d.ts +9 -0
  103. package/dist/types/src/components/Thread/StatusLine.stories.d.ts.map +1 -0
  104. package/dist/types/src/components/Thread/Tabbed.d.ts +9 -0
  105. package/dist/types/src/components/Thread/Tabbed.d.ts.map +1 -0
  106. package/dist/types/src/components/Thread/Tabbed.stories.d.ts +8 -0
  107. package/dist/types/src/components/Thread/Tabbed.stories.d.ts.map +1 -0
  108. package/dist/types/src/components/Thread/Thread.d.ts +6 -9
  109. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  110. package/dist/types/src/components/Thread/Thread.stories.d.ts +2 -4
  111. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/Thread/ThreadMessage.d.ts +12 -0
  113. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -0
  114. package/dist/types/src/components/Thread/ToggleContainer.d.ts +13 -0
  115. package/dist/types/src/components/Thread/ToggleContainer.d.ts.map +1 -0
  116. package/dist/types/src/components/Thread/ToggleContainer.stories.d.ts +9 -0
  117. package/dist/types/src/components/Thread/ToggleContainer.stories.d.ts.map +1 -0
  118. package/dist/types/src/components/index.d.ts +5 -2
  119. package/dist/types/src/components/index.d.ts.map +1 -1
  120. package/dist/types/src/hooks/index.d.ts +1 -0
  121. package/dist/types/src/hooks/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/processor.d.ts +32 -13
  123. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useServiceRegistry.d.ts +3 -0
  125. package/dist/types/src/hooks/useServiceRegistry.d.ts.map +1 -0
  126. package/dist/types/src/tools/function.d.ts +5 -0
  127. package/dist/types/src/tools/function.d.ts.map +1 -0
  128. package/dist/types/src/tools/index.d.ts +3 -0
  129. package/dist/types/src/tools/index.d.ts.map +1 -0
  130. package/dist/types/src/tools/openapi.d.ts +10 -0
  131. package/dist/types/src/tools/openapi.d.ts.map +1 -0
  132. package/dist/types/src/tools/openapi.test.d.ts +2 -0
  133. package/dist/types/src/tools/openapi.test.d.ts.map +1 -0
  134. package/dist/types/src/translations.d.ts +9 -6
  135. package/dist/types/src/translations.d.ts.map +1 -1
  136. package/dist/types/src/types/index.d.ts +1 -0
  137. package/dist/types/src/types/index.d.ts.map +1 -1
  138. package/dist/types/src/types/registry.d.ts +9 -0
  139. package/dist/types/src/types/registry.d.ts.map +1 -0
  140. package/dist/types/src/types/schema.d.ts +131 -7
  141. package/dist/types/src/types/schema.d.ts.map +1 -1
  142. package/dist/types/src/types/types.d.ts +2 -2
  143. package/dist/types/src/types/types.d.ts.map +1 -1
  144. package/dist/types/tsconfig.tsbuildinfo +1 -1
  145. package/package.json +54 -49
  146. package/src/AutomationPlugin.tsx +12 -20
  147. package/src/artifacts.stories.tsx +126 -65
  148. package/src/capabilities/ai-client.ts +1 -1
  149. package/src/capabilities/app-graph-builder.ts +31 -2
  150. package/src/capabilities/intent-resolver.ts +14 -9
  151. package/src/capabilities/react-surface.tsx +11 -11
  152. package/src/components/ChatContainer/ChatContainer.tsx +117 -0
  153. package/src/components/ChatContainer/index.ts +8 -0
  154. package/src/components/MarkdownViewer/MarkdownViewer.stories.tsx +56 -0
  155. package/src/components/MarkdownViewer/MarkdownViewer.tsx +79 -0
  156. package/src/components/MarkdownViewer/index.ts +5 -0
  157. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +48 -0
  158. package/src/components/ServiceRegistry/ServiceRegistry.tsx +75 -0
  159. package/src/components/ServiceRegistry/index.ts +5 -0
  160. package/src/components/Thread/ScrollContainer.tsx +92 -0
  161. package/src/components/Thread/StatusLine.stories.tsx +52 -0
  162. package/src/components/Thread/StatusLine.tsx +76 -0
  163. package/src/components/Thread/Tabbed.stories.tsx +52 -0
  164. package/src/components/Thread/Tabbed.tsx +72 -0
  165. package/src/components/Thread/Thread.stories.tsx +145 -97
  166. package/src/components/Thread/Thread.tsx +115 -108
  167. package/src/components/Thread/ThreadMessage.tsx +195 -0
  168. package/src/components/Thread/ToggleContainer.stories.tsx +111 -0
  169. package/src/components/Thread/ToggleContainer.tsx +103 -0
  170. package/src/components/index.ts +4 -1
  171. package/src/hooks/index.ts +2 -0
  172. package/src/hooks/processor.ts +100 -60
  173. package/src/hooks/useServiceRegistry.ts +22 -0
  174. package/src/tools/function.ts +47 -0
  175. package/src/tools/index.ts +6 -0
  176. package/src/tools/openapi.test.ts +227 -0
  177. package/src/tools/openapi.ts +331 -0
  178. package/src/translations.ts +8 -6
  179. package/src/types/index.ts +1 -0
  180. package/src/types/registry.ts +89 -0
  181. package/src/types/schema.ts +78 -3
  182. package/src/types/types.ts +2 -2
  183. package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs +0 -340
  184. package/dist/lib/browser/AssistantPanel-KO6DZBTU.mjs.map +0 -7
  185. package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs +0 -131
  186. package/dist/lib/browser/AutomationPanel-BMLM533Z.mjs.map +0 -7
  187. package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs +0 -300
  188. package/dist/lib/browser/ChatContainer-SIAJFRFF.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-C3VRGDR6.mjs +0 -75
  190. package/dist/lib/browser/chunk-C3VRGDR6.mjs.map +0 -7
  191. package/dist/lib/browser/chunk-JSNPW6JF.mjs +0 -14
  192. package/dist/lib/browser/chunk-JSNPW6JF.mjs.map +0 -7
  193. package/dist/lib/browser/chunk-KPSDH6XZ.mjs +0 -118
  194. package/dist/lib/browser/chunk-KPSDH6XZ.mjs.map +0 -7
  195. package/dist/lib/browser/chunk-YZF3SDZL.mjs +0 -139
  196. package/dist/lib/browser/chunk-YZF3SDZL.mjs.map +0 -7
  197. package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs +0 -24
  198. package/dist/lib/browser/intent-resolver-AHDQ3KQP.mjs.map +0 -7
  199. package/dist/lib/browser/react-surface-IGMBLSV7.mjs.map +0 -7
  200. package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs +0 -360
  201. package/dist/lib/node/AssistantPanel-PPFS2HKK.cjs.map +0 -7
  202. package/dist/lib/node/AutomationPanel-RXJDVLCF.cjs.map +0 -7
  203. package/dist/lib/node/ChatContainer-GS2SC5OG.cjs +0 -318
  204. package/dist/lib/node/ChatContainer-GS2SC5OG.cjs.map +0 -7
  205. package/dist/lib/node/chunk-BUQOZA4N.cjs +0 -97
  206. package/dist/lib/node/chunk-BUQOZA4N.cjs.map +0 -7
  207. package/dist/lib/node/chunk-DNLBVFR7.cjs +0 -147
  208. package/dist/lib/node/chunk-DNLBVFR7.cjs.map +0 -7
  209. package/dist/lib/node/chunk-TWDGP26W.cjs +0 -172
  210. package/dist/lib/node/chunk-TWDGP26W.cjs.map +0 -7
  211. package/dist/lib/node/chunk-VEGLN4YN.cjs.map +0 -7
  212. package/dist/lib/node/chunk-Z2YFE5SJ.cjs +0 -49
  213. package/dist/lib/node/chunk-Z2YFE5SJ.cjs.map +0 -7
  214. package/dist/lib/node/intent-resolver-TBHYXBDI.cjs.map +0 -7
  215. package/dist/lib/node/react-surface-BVUZMKYS.cjs.map +0 -7
  216. package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs +0 -341
  217. package/dist/lib/node-esm/AssistantPanel-XSSKKCJY.mjs.map +0 -7
  218. package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs +0 -132
  219. package/dist/lib/node-esm/AutomationPanel-GQZZ4UBI.mjs.map +0 -7
  220. package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs +0 -301
  221. package/dist/lib/node-esm/ChatContainer-57ILGC3R.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-ICHNUP5M.mjs +0 -119
  223. package/dist/lib/node-esm/chunk-ICHNUP5M.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-JCYVS5GG.mjs +0 -76
  225. package/dist/lib/node-esm/chunk-JCYVS5GG.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-L2B6VGMG.mjs +0 -16
  227. package/dist/lib/node-esm/chunk-L2B6VGMG.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs +0 -141
  229. package/dist/lib/node-esm/chunk-U7HXYMPZ.mjs.map +0 -7
  230. package/dist/lib/node-esm/intent-resolver-DPJJHFGK.mjs.map +0 -7
  231. package/dist/lib/node-esm/react-surface-77S6XJOM.mjs.map +0 -7
  232. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts +0 -8
  233. package/dist/types/src/components/AssistantPanel/AssistantPanel.d.ts.map +0 -1
  234. package/dist/types/src/components/AssistantPanel/index.d.ts +0 -3
  235. package/dist/types/src/components/AssistantPanel/index.d.ts.map +0 -1
  236. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts +0 -6
  237. package/dist/types/src/components/AssistantPanel/system-instructions.d.ts.map +0 -1
  238. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  239. package/src/components/AssistantPanel/AssistantPanel.tsx +0 -232
  240. package/src/components/AssistantPanel/index.ts +0 -7
  241. package/src/components/AssistantPanel/system-instructions.ts +0 -166
  242. package/src/components/ChatContainer.tsx +0 -80
@@ -1,172 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_TWDGP26W_exports = {};
30
- __export(chunk_TWDGP26W_exports, {
31
- Thread: () => Thread,
32
- ThreadMessage: () => ThreadMessage
33
- });
34
- module.exports = __toCommonJS(chunk_TWDGP26W_exports);
35
- var import_react = __toESM(require("react"));
36
- var import_react_ui = require("@dxos/react-ui");
37
- var import_react_ui_editor = require("@dxos/react-ui-editor");
38
- var import_react_ui_sfx = require("@dxos/react-ui-sfx");
39
- var import_react_ui_syntax_highlighter = require("@dxos/react-ui-syntax-highlighter");
40
- var import_react_ui_theme = require("@dxos/react-ui-theme");
41
- var Thread = ({ messages, streaming, onSubmit }) => {
42
- const scrollRef = (0, import_react.useRef)(null);
43
- const scroll = () => scrollRef.current?.scrollTo({
44
- top: scrollRef.current.scrollHeight,
45
- behavior: "smooth"
46
- });
47
- const [text, setText] = (0, import_react.useState)("");
48
- (0, import_react.useEffect)(() => scroll(), [
49
- messages
50
- ]);
51
- const handleKeyDown = (0, import_react.useCallback)((ev) => {
52
- switch (ev.key) {
53
- case "Escape": {
54
- setText("");
55
- break;
56
- }
57
- case "Enter": {
58
- const value = text.trim();
59
- if (value.length > 0) {
60
- onSubmit(value);
61
- setText("");
62
- scroll();
63
- }
64
- break;
65
- }
66
- }
67
- }, [
68
- text
69
- ]);
70
- return /* @__PURE__ */ import_react.default.createElement("div", {
71
- className: "flex flex-col grow overflow-hidden"
72
- }, /* @__PURE__ */ import_react.default.createElement("div", {
73
- ref: scrollRef,
74
- className: "flex flex-col grow overflow-x-hidden overflow-y-scroll scrollbar-thin divide-y divide-separator"
75
- }, messages.map((message, i) => /* @__PURE__ */ import_react.default.createElement(ThreadMessage, {
76
- key: i,
77
- classNames: "px-4 py-2",
78
- message
79
- }))), /* @__PURE__ */ import_react.default.createElement("div", {
80
- className: "flex p-4 gap-3 items-center"
81
- }, /* @__PURE__ */ import_react.default.createElement(import_react_ui_sfx.Ball, {
82
- active: streaming
83
- }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
84
- autoFocus: true,
85
- classNames: "px-2 bg-base rounded",
86
- placeholder: "Ask a question...",
87
- value: text,
88
- onChange: (ev) => setText(ev.target.value),
89
- onKeyDown: handleKeyDown
90
- })), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Icon, {
91
- icon: "ph--spinner-gap--regular",
92
- classNames: (0, import_react_ui_theme.mx)("animate-spin opacity-0 transition duration-500", streaming && "opacity-100"),
93
- size: 6
94
- })));
95
- };
96
- var ThreadMessage = ({ classNames, message }) => {
97
- if (typeof message !== "object") {
98
- return /* @__PURE__ */ import_react.default.createElement("div", {
99
- className: (0, import_react_ui_theme.mx)(classNames)
100
- }, message);
101
- }
102
- const { role, content = [] } = message;
103
- return /* @__PURE__ */ import_react.default.createElement("div", {
104
- className: (0, import_react_ui_theme.mx)("flex", classNames, role === "user" && "justify-end")
105
- }, /* @__PURE__ */ import_react.default.createElement("div", {
106
- className: (0, import_react_ui_theme.mx)("block rounded-md p-1 px-2 bg-base overflow-hidden divide-y divid-separator", role === "user" ? "dark:bg-blue-800" : "whitespace-pre-wrap")
107
- }, content.map((item, idx) => {
108
- switch (item.type) {
109
- case "text":
110
- return /* @__PURE__ */ import_react.default.createElement(Markdown, {
111
- key: idx,
112
- text: item.text.trim()
113
- });
114
- case "json":
115
- return /* @__PURE__ */ import_react.default.createElement(Json, {
116
- key: idx,
117
- data: item.json
118
- });
119
- default:
120
- return /* @__PURE__ */ import_react.default.createElement(Json, {
121
- key: idx,
122
- data: item
123
- });
124
- }
125
- })));
126
- };
127
- var Markdown = ({ text, classNames }) => {
128
- const { themeMode } = (0, import_react_ui.useThemeContext)();
129
- const { parentRef, view } = (0, import_react_ui_editor.useTextEditor)(() => ({
130
- initialValue: text,
131
- extensions: [
132
- // TOOD(burdon): Optional line wrapping.
133
- (0, import_react_ui_editor.createBasicExtensions)({
134
- lineWrapping: true,
135
- readonly: true
136
- }),
137
- (0, import_react_ui_editor.createMarkdownExtensions)(),
138
- (0, import_react_ui_editor.createThemeExtensions)({
139
- themeMode
140
- }),
141
- (0, import_react_ui_editor.decorateMarkdown)()
142
- ]
143
- }));
144
- (0, import_react.useEffect)(() => {
145
- view?.dispatch({
146
- // TODO(burdon): Append?
147
- changes: {
148
- from: 0,
149
- to: view.state.doc.length,
150
- insert: text
151
- }
152
- });
153
- }, [
154
- text
155
- ]);
156
- return /* @__PURE__ */ import_react.default.createElement("div", {
157
- ref: parentRef,
158
- className: (0, import_react_ui_theme.mx)("w-full overflow-hidden", classNames)
159
- });
160
- };
161
- var Json = ({ data, classNames }) => {
162
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_syntax_highlighter.SyntaxHighlighter, {
163
- language: "json",
164
- classNames: "w-full overflow-hidden text-sm"
165
- }, JSON.stringify(data, null, 2));
166
- };
167
- // Annotate the CommonJS export names for ESM import in node:
168
- 0 && (module.exports = {
169
- Thread,
170
- ThreadMessage
171
- });
172
- //# sourceMappingURL=chunk-TWDGP26W.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Thread/Thread.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type KeyboardEventHandler, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type Message } from '@dxos/artifact';\nimport { Icon, Input, useThemeContext, type ThemedClassName } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { Ball } from '@dxos/react-ui-sfx';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type ThreadProps = {\n messages: Message[];\n streaming?: boolean;\n onSubmit: (message: string) => void;\n};\n\nexport const Thread = ({ messages, streaming, onSubmit }: ThreadProps) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const scroll = () => scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: 'smooth' });\n const [text, setText] = useState('');\n useEffect(() => scroll(), [messages]);\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (ev) => {\n switch (ev.key) {\n case 'Escape': {\n setText('');\n break;\n }\n case 'Enter': {\n const value = text.trim();\n if (value.length > 0) {\n onSubmit(value);\n setText('');\n scroll();\n }\n break;\n }\n }\n },\n [text],\n );\n\n return (\n <div className='flex flex-col grow overflow-hidden'>\n <div\n ref={scrollRef}\n className='flex flex-col grow overflow-x-hidden overflow-y-scroll scrollbar-thin divide-y divide-separator'\n >\n {messages.map((message, i) => (\n <ThreadMessage key={i} classNames='px-4 py-2' message={message} />\n ))}\n </div>\n\n <div className='flex p-4 gap-3 items-center'>\n <Ball active={streaming} />\n <Input.Root>\n <Input.TextInput\n autoFocus\n classNames='px-2 bg-base rounded'\n placeholder='Ask a question...'\n value={text}\n onChange={(ev) => setText(ev.target.value)}\n onKeyDown={handleKeyDown}\n />\n </Input.Root>\n <Icon\n icon={'ph--spinner-gap--regular'}\n classNames={mx('animate-spin opacity-0 transition duration-500', streaming && 'opacity-100')}\n size={6}\n />\n </div>\n </div>\n );\n};\n\nexport type ThreadMessageProps = ThemedClassName<{\n message: Message;\n}>;\n\nexport const ThreadMessage = ({ classNames, message }: ThreadMessageProps) => {\n if (typeof message !== 'object') {\n return <div className={mx(classNames)}>{message}</div>;\n }\n\n const { role, content = [] } = message;\n return (\n <div className={mx('flex', classNames, role === 'user' && 'justify-end')}>\n <div\n className={mx(\n 'block rounded-md p-1 px-2 bg-base overflow-hidden divide-y divid-separator',\n role === 'user' ? 'dark:bg-blue-800' : 'whitespace-pre-wrap',\n )}\n >\n {/* TODO(burdon): Use message ID for stable rendering. */}\n {content.map((item, idx) => {\n switch (item.type) {\n case 'text':\n return <Markdown key={idx} text={item.text.trim()} />;\n case 'json':\n return <Json key={idx} data={item.json} />;\n default:\n return <Json key={idx} data={item} />;\n }\n })}\n </div>\n </div>\n );\n};\n\nconst Markdown = ({ text, classNames }: ThemedClassName<{ text: string }>) => {\n const { themeMode } = useThemeContext();\n const { parentRef, view } = useTextEditor(() => ({\n initialValue: text,\n extensions: [\n // TOOD(burdon): Optional line wrapping.\n createBasicExtensions({ lineWrapping: true, readonly: true }),\n createMarkdownExtensions(),\n createThemeExtensions({ themeMode }),\n decorateMarkdown(),\n ],\n }));\n\n useEffect(() => {\n view?.dispatch({\n // TODO(burdon): Append?\n changes: { from: 0, to: view.state.doc.length, insert: text },\n });\n }, [text]);\n\n return <div ref={parentRef} className={mx('w-full overflow-hidden', classNames)} />;\n};\n\nconst Json = ({ data, classNames }: ThemedClassName<{ data: any }>) => {\n return (\n <SyntaxHighlighter language='json' classNames='w-full overflow-hidden text-sm'>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Thread", "messages", "streaming", "onSubmit", "scrollRef", "useRef", "scroll", "current", "scrollTo", "top", "scrollHeight", "behavior", "text", "setText", "useState", "useEffect", "handleKeyDown", "useCallback", "ev", "key", "value", "trim", "length", "React", "div", "className", "ref", "map", "message", "i", "ThreadMessage", "classNames", "Ball", "active", "Input", "Root", "TextInput", "autoFocus", "placeholder", "onChange", "target", "onKeyDown", "Icon", "icon", "mx", "size", "role", "content", "item", "idx", "type", "Markdown", "Json", "data", "json", "themeMode", "useThemeContext", "parentRef", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "lineWrapping", "readonly", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "dispatch", "changes", "from", "to", "state", "doc", "insert", "SyntaxHighlighter", "language", "JSON", "stringify"]
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": ["import_react_ui_editor", "import_react_ui_theme", "import_react", "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", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "nonNullable", "input", "name", "missing", "Array", "from", "values", "forEach", "has", "delete", "push", "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", "React", "div", "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", "AssistantPanel", "lazy", "AutomationPanel", "ChatContainer"]
7
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_Z2YFE5SJ_exports = {};
30
- __export(chunk_Z2YFE5SJ_exports, {
31
- AiClient: () => AiClient,
32
- AppGraphBuilder: () => AppGraphBuilder,
33
- IntentResolver: () => IntentResolver,
34
- ReactSurface: () => ReactSurface
35
- });
36
- module.exports = __toCommonJS(chunk_Z2YFE5SJ_exports);
37
- var import_app_framework = require("@dxos/app-framework");
38
- var AiClient = (0, import_app_framework.lazy)(() => import("./ai-client-A3RRU55B.cjs"));
39
- var AppGraphBuilder = (0, import_app_framework.lazy)(() => import("./app-graph-builder-MF5M4QRS.cjs"));
40
- var IntentResolver = (0, import_app_framework.lazy)(() => import("./intent-resolver-TBHYXBDI.cjs"));
41
- var ReactSurface = (0, import_app_framework.lazy)(() => import("./react-surface-BVUZMKYS.cjs"));
42
- // Annotate the CommonJS export names for ESM import in node:
43
- 0 && (module.exports = {
44
- AiClient,
45
- AppGraphBuilder,
46
- IntentResolver,
47
- ReactSurface
48
- });
49
- //# sourceMappingURL=chunk-Z2YFE5SJ.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AiClient = lazy(() => import('./ai-client'));\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\n\nexport * from './capabilities';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAqB;AAEd,IAAMA,eAAWC,2BAAK,MAAM,OAAO,0BAAA,CAAA;AACnC,IAAMC,sBAAkBD,2BAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAME,qBAAiBF,2BAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,mBAAeH,2BAAK,MAAM,OAAO,8BAAA,CAAA;",
6
- "names": ["AiClient", "lazy", "AppGraphBuilder", "IntentResolver", "ReactSurface"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver } from '@dxos/app-framework';\nimport { ObjectId } from '@dxos/echo-schema';\nimport { create, makeRef } from '@dxos/live-object';\n\nimport { AutomationAction, GptChatType } from '../types';\n\nexport default () =>\n contributes(\n Capabilities.IntentResolver,\n createResolver(AutomationAction.Create, ({ name }) => ({\n data: {\n object: create(GptChatType, {\n name,\n queue: makeRef({ id: ObjectId.random() }), // new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, SpaceId.random(), ObjectId.random()]).toString(),\n }),\n },\n })),\n );\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA0D;AAC1D,yBAAyB;AACzB,yBAAgC;AAIhC,IAAA,0BAAe,UACbA,kCACEC,kCAAaC,oBACbC,qCAAeC,uCAAiBC,QAAQ,CAAC,EAAEC,KAAI,OAAQ;EACrDC,MAAM;IACJC,YAAQC,2BAAOC,mCAAa;MAC1BJ;MACAK,WAAOC,4BAAQ;QAAEC,IAAIC,4BAASC,OAAM;MAAG,CAAA;IACzC,CAAA;EACF;AACF,EAAA,CAAA;",
6
- "names": ["contributes", "Capabilities", "IntentResolver", "createResolver", "AutomationAction", "Create", "name", "data", "object", "create", "GptChatType", "queue", "makeRef", "id", "ObjectId", "random"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { getSpace, isEchoObject, type ReactiveEchoObject } from '@dxos/react-client/echo';\n\nimport { AssistantPanel, AutomationPanel, ChatContainer } from '../components';\nimport { AUTOMATION_PLUGIN } from '../meta';\nimport { GptChatType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${AUTOMATION_PLUGIN}/assistant`,\n role: 'complementary--assistant',\n component: ({ data }) => <AssistantPanel subject={data.subject} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/automation`,\n role: 'complementary--automation',\n filter: (data): data is { subject: ReactiveEchoObject<any> } =>\n isEchoObject(data.subject) && !!getSpace(data.subject),\n component: ({ data }) => <AutomationPanel space={getSpace(data.subject)!} object={data.subject} />,\n }),\n createSurface({\n id: `${AUTOMATION_PLUGIN}/gpt-chat`,\n role: 'article',\n filter: (data): data is { subject: GptChatType } => data.subject instanceof GptChatType,\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAyD;AACzD,kBAAgE;AAMhE,IAAA,wBAAe,UACbA,kCAAYC,kCAAaC,cAAc;MACrCC,oCAAc;IACZC,IAAI,GAAGC,uCAAAA;IACPC,MAAM;IACNC,WAAW,CAAC,EAAEC,KAAI,MAAO,6BAAAC,QAAA,cAACC,sCAAAA;MAAeC,SAASH,KAAKG;;EACzD,CAAA;MACAR,oCAAc;IACZC,IAAI,GAAGC,uCAAAA;IACPC,MAAM;IACNM,QAAQ,CAACJ,aACPK,0BAAaL,KAAKG,OAAO,KAAK,CAAC,KAACG,sBAASN,KAAKG,OAAO;IACvDJ,WAAW,CAAC,EAAEC,KAAI,MAAO,6BAAAC,QAAA,cAACM,uCAAAA;MAAgBC,WAAOF,sBAASN,KAAKG,OAAO;MAAIM,QAAQT,KAAKG;;EACzF,CAAA;MACAR,oCAAc;IACZC,IAAI,GAAGC,uCAAAA;IACPC,MAAM;IACNM,QAAQ,CAACJ,SAA2CA,KAAKG,mBAAmBO;IAC5EX,WAAW,CAAC,EAAEC,MAAMF,KAAI,MAAO,6BAAAG,QAAA,cAACU,qCAAAA;MAAcb;MAAYc,MAAMZ,KAAKG;;EACvE,CAAA;CACD;",
6
- "names": ["contributes", "Capabilities", "ReactSurface", "createSurface", "id", "AUTOMATION_PLUGIN", "role", "component", "data", "React", "AssistantPanel", "subject", "filter", "isEchoObject", "getSpace", "AutomationPanel", "space", "object", "GptChatType", "ChatContainer", "chat"]
7
- }
@@ -1,341 +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/AssistantPanel/AssistantPanel.tsx
7
- import React, { useEffect, useRef, useState } from "react";
8
- import { AIServiceClientImpl } from "@dxos/assistant";
9
- import { ObjectId } from "@dxos/echo-schema";
10
- import { SpaceId } from "@dxos/keys";
11
- import { useClient, useConfig } from "@dxos/react-client";
12
- import { ContextMenu } from "@dxos/react-ui";
13
- import { Icon, Input, Toolbar, useTranslation } from "@dxos/react-ui";
14
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
15
- import { mx } from "@dxos/react-ui-theme";
16
-
17
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/system-instructions.ts
18
- import { asyncTimeout } from "@dxos/async";
19
- import { getTypename } from "@dxos/echo-schema";
20
- import { log } from "@dxos/log";
21
- import { Filter, getSpace, ResultFormat } from "@dxos/react-client/echo";
22
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/system-instructions.ts";
23
- var createSystemInstructions = async (context) => {
24
- let instructions = `
25
- <instructions>
26
- Before replying always think step-by-step on how to proceed.
27
- Print your thoughts inside <cot> tags.
28
-
29
- <example>
30
- <cot>To answer the question I need to ...</cot>
31
- </example>
32
- </instructions>
33
-
34
- <current_time>${(/* @__PURE__ */ new Date()).toLocaleString()}</current_time>
35
- `;
36
- if (context.subject) {
37
- instructions += `
38
- <user_attention>
39
- The user is currently interacting with an object in Composer application:
40
-
41
- ${await formatContextObject(context.subject)}
42
- </user_attention>
43
- `;
44
- }
45
- return looseFormatXml(instructions);
46
- };
47
- var formatContextObject = async (object) => {
48
- let data;
49
- try {
50
- data = await asyncTimeout(preprocessContextObject(object), CONTEXT_OBJECT_QUERY_TIMEOUT);
51
- } catch (err) {
52
- log.error("Failed to preprocess context object:", {
53
- err
54
- }, {
55
- F: __dxlog_file,
56
- L: 48,
57
- S: void 0,
58
- C: (f, a) => f(...a)
59
- });
60
- data = object;
61
- }
62
- if (typeof data === "string") {
63
- return data;
64
- } else {
65
- return `
66
- <object>
67
- <type>${getTypename(object)}</type>
68
- <id>${object.id}</id>
69
- ${formatObjectAsXMLTags(data)}
70
- </object>
71
- `;
72
- }
73
- };
74
- var preprocessContextObject = async (object) => {
75
- const space = getSpace(object);
76
- if (!space) {
77
- return {
78
- ...object
79
- };
80
- }
81
- switch (getTypename(object)) {
82
- // TODO(dmaretskyi): Reference types somehow without plugin-automation depending on other plugins.
83
- case "dxos.org/type/Document": {
84
- const data = space.db.query({
85
- id: object.id
86
- }, {
87
- format: ResultFormat.Plain,
88
- include: {
89
- content: true
90
- }
91
- }).first() ?? {
92
- content: {
93
- content: ""
94
- }
95
- };
96
- return {
97
- ...data,
98
- threads: void 0
99
- };
100
- }
101
- case "dxos.org/type/Table": {
102
- const schema = object.view ? space?.db.schemaRegistry.getSchema(object.view.query.type) : void 0;
103
- const { objects: rows } = (schema && await space.db.query(Filter.schema(schema), {
104
- format: ResultFormat.Plain,
105
- limit: TABLE_ROWS_LIMIT
106
- }).run()) ?? {};
107
- return `
108
- <object>
109
- <id>${object.id}</id>
110
- <type>${getTypename(object)}</type>
111
- ${formatObjectAsXMLTags(object)}
112
-
113
- <rows>
114
- <!-- Limited to first ${TABLE_ROWS_LIMIT} rows. -->
115
- ${rows?.map((row) => `<row>
116
- ${formatObjectAsXMLTags(row)}
117
- </row>`).join("\n")}
118
- </rows>
119
-
120
- `;
121
- }
122
- default:
123
- return {
124
- ...object
125
- };
126
- }
127
- };
128
- var formatObjectAsXMLTags = (object, depth = 1) => {
129
- return Object.entries(object).filter(([key, value]) => [
130
- "string",
131
- "number",
132
- "boolean",
133
- "object"
134
- ].includes(typeof value)).map(([key, value]) => {
135
- if (typeof value === "object" && value !== null) {
136
- if (depth === 0) {
137
- return "";
138
- } else {
139
- return `<${key}>
140
- ${formatObjectAsXMLTags(value, depth - 1)}
141
- </${key}>`;
142
- }
143
- }
144
- return `<${key}>${value}</${key}>`;
145
- }).join("\n");
146
- };
147
- var CONTEXT_OBJECT_QUERY_TIMEOUT = 5e3;
148
- var TABLE_ROWS_LIMIT = 10;
149
- var looseFormatXml = (xml) => {
150
- let currentIndent = 0;
151
- return xml.split("\n").map((line) => {
152
- if (line.match(RE_CLOSE_TAG_LINE)) {
153
- currentIndent--;
154
- }
155
- const indent = currentIndent;
156
- if (line.match(RE_OPEN_TAG_LINE)) {
157
- currentIndent++;
158
- }
159
- return " ".repeat(indent * 2) + line.trimStart();
160
- }).join("\n");
161
- };
162
- var RE_OPEN_TAG_LINE = /^[ ]*<[a-zA-Z0-9\-_]+>[ ]*$/;
163
- var RE_CLOSE_TAG_LINE = /^[ ]*<\/[a-zA-Z0-9\-_]+>[ ]*$/;
164
-
165
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/AssistantPanel.tsx
166
- var PROPERTIES_ASSISTANT_KEY = "dxos.assistant.beta.properties";
167
- var AssistantPanel = ({ subject, classNames }) => {
168
- const { t } = useTranslation(AUTOMATION_PLUGIN);
169
- const config = useConfig();
170
- const client = useClient();
171
- const aiClient = useRef();
172
- const [contextSpaceId, setContextSpaceId] = useState();
173
- const [threadId, setThreadId] = useState();
174
- const [history, setHistory] = useState([]);
175
- const [input, setInput] = useState("");
176
- useEffect(() => {
177
- if (!aiClient.current) {
178
- const endpoint = config.values.runtime?.services?.ai?.server;
179
- if (!endpoint) {
180
- throw new Error("AI service endpoint is not configured");
181
- }
182
- aiClient.current = new AIServiceClientImpl({
183
- endpoint
184
- });
185
- }
186
- queueMicrotask(async () => {
187
- const properties = client.spaces.default.properties;
188
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
189
- properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId ??= SpaceId.random();
190
- properties[PROPERTIES_ASSISTANT_KEY].threadId ??= ObjectId.random();
191
- const contextSpaceId2 = properties[PROPERTIES_ASSISTANT_KEY].contextSpaceId;
192
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
193
- setContextSpaceId(contextSpaceId2);
194
- setThreadId(threadId2);
195
- const messages = await aiClient.current.getMessages(contextSpaceId2, threadId2);
196
- setHistory(messages);
197
- });
198
- }, []);
199
- const handleRequest = async (input2) => {
200
- if (!aiClient.current || input2 === "") {
201
- return;
202
- }
203
- setInput("");
204
- const userMessage = {
205
- id: ObjectId.random(),
206
- spaceId: contextSpaceId,
207
- threadId,
208
- role: "user",
209
- content: [
210
- {
211
- type: "text",
212
- text: input2
213
- }
214
- ]
215
- };
216
- await aiClient.current.appendMessages([
217
- userMessage
218
- ]);
219
- setHistory([
220
- ...history,
221
- userMessage
222
- ]);
223
- const generationStream = await aiClient.current.generate({
224
- model: "@anthropic/claude-3-5-sonnet-20241022",
225
- spaceId: contextSpaceId,
226
- threadId,
227
- tools: [],
228
- systemPrompt: await getSystemPrompt()
229
- });
230
- const historyBefore = [
231
- ...history,
232
- userMessage
233
- ];
234
- for await (const _event of generationStream) {
235
- setHistory([
236
- ...historyBefore,
237
- ...generationStream.accumulatedMessages
238
- ]);
239
- }
240
- await aiClient.current.appendMessages(await generationStream.complete());
241
- };
242
- const getSystemPrompt = async () => {
243
- return createSystemInstructions({
244
- subject
245
- });
246
- };
247
- const clearThread = async () => {
248
- const properties = client.spaces.default.properties;
249
- properties[PROPERTIES_ASSISTANT_KEY] ??= {};
250
- properties[PROPERTIES_ASSISTANT_KEY].threadId = ObjectId.random();
251
- const threadId2 = properties[PROPERTIES_ASSISTANT_KEY].threadId;
252
- setThreadId(threadId2);
253
- const messages = await aiClient.current.getMessages(contextSpaceId, threadId2);
254
- setHistory(messages);
255
- };
256
- return /* @__PURE__ */ React.createElement("div", {
257
- className: mx("flex flex-col h-full overflow-hidden", classNames)
258
- }, history.length > 0 && /* @__PURE__ */ React.createElement("div", {
259
- className: "flex flex-col gap-6 h-full p-2 overflow-x-hidden overflow-y-auto"
260
- }, history.map((message) => /* @__PURE__ */ React.createElement(MessageItem, {
261
- key: message.id,
262
- message
263
- }))), /* @__PURE__ */ React.createElement(Toolbar.Root, {
264
- classNames: "p-1"
265
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
266
- autoFocus: true,
267
- placeholder: t("ask me anything"),
268
- value: input,
269
- onChange: (ev) => setInput(ev.target.value),
270
- onKeyDown: (ev) => ev.key === "Enter" && handleRequest(input)
271
- })), /* @__PURE__ */ React.createElement(ContextMenu.Root, null, /* @__PURE__ */ React.createElement(ContextMenu.Trigger, {
272
- asChild: true
273
- }, /* @__PURE__ */ React.createElement(Toolbar.Button, {
274
- onClick: () => handleRequest(input)
275
- }, /* @__PURE__ */ React.createElement(Icon, {
276
- icon: "ph--play--regular",
277
- size: 4
278
- }))), /* @__PURE__ */ React.createElement(ContextMenu.Portal, null, /* @__PURE__ */ React.createElement(ContextMenu.Content, null, /* @__PURE__ */ React.createElement(ContextMenu.Viewport, null, /* @__PURE__ */ React.createElement(ContextMenu.Item, {
279
- onClick: clearThread
280
- }, "Clear thread"), /* @__PURE__ */ React.createElement(ContextMenu.Item, {
281
- onClick: async () => console.log(await getSystemPrompt())
282
- }, "Print instructions to console")))))));
283
- };
284
- var MessageItem = ({ classNames, message }) => {
285
- const { id: _, role, content } = message;
286
- const styleContainer = "flex flex-col overflow-x-hidden overflow-y-auto rounded-md gap-2 divide-y divide-separator";
287
- return /* @__PURE__ */ React.createElement("div", {
288
- className: mx("flex", role === "user" ? "ml-[1rem] justify-end" : "mr-[1rem]", classNames)
289
- }, content.map((content2, i) => {
290
- switch (content2.type) {
291
- case "text": {
292
- const { cot, message: message2 } = parseMessage(content2.text);
293
- return /* @__PURE__ */ React.createElement("div", {
294
- key: i,
295
- role: "none",
296
- className: mx(styleContainer, role === "user" ? "bg-primary-400 dark:bg-primary-600" : "bg-hoverSurface")
297
- }, cot && /* @__PURE__ */ React.createElement("div", {
298
- className: "p-2 whitespace-pre-wrap text-xs text-subdued"
299
- }, cot), /* @__PURE__ */ React.createElement("div", {
300
- className: "p-2 whitespace-pre-wrap"
301
- }, message2));
302
- }
303
- case "tool_use": {
304
- return /* @__PURE__ */ React.createElement("div", {
305
- key: i,
306
- className: mx(styleContainer, "text-xs")
307
- }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", {
308
- className: "p-2 text-primary"
309
- }, "Tool use"), ": ", content2.name, " ", content2.id), /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
310
- language: "json"
311
- }, content2.inputJson));
312
- }
313
- case "tool_result": {
314
- return /* @__PURE__ */ React.createElement("div", {
315
- key: i,
316
- className: mx(styleContainer, "text-xs", content2.isError && "text-error")
317
- }, /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("span", {
318
- className: "p-2 text-primary"
319
- }, "Tool result"), ": ", content2.toolUseId), /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
320
- language: "json"
321
- }, content2.content));
322
- }
323
- }
324
- return null;
325
- }));
326
- };
327
- var parseMessage = (text) => {
328
- const regex = /<cot>([\s\S]*?)<\/cot>\s*([\s\S]*)/;
329
- const match = text.match(regex);
330
- return {
331
- cot: match?.[1].trim(),
332
- message: match?.[2] ?? text ?? "\xD8"
333
- };
334
- };
335
-
336
- // packages/plugins/experimental/plugin-automation/src/components/AssistantPanel/index.ts
337
- var AssistantPanel_default = AssistantPanel;
338
- export {
339
- AssistantPanel_default as default
340
- };
341
- //# sourceMappingURL=AssistantPanel-XSSKKCJY.mjs.map