@dxos/plugin-assistant 0.8.1-staging.391c573 → 0.8.1-staging.5be625a

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 (207) hide show
  1. package/dist/lib/browser/{AssistantDialog-CM33SOCT.mjs → AssistantDialog-EIUUSXDS.mjs} +11 -10
  2. package/dist/lib/browser/AssistantDialog-EIUUSXDS.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs → ChatContainer-NHHA6CSP.mjs} +5 -5
  4. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs +78 -0
  5. package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs.map +7 -0
  6. package/dist/lib/browser/ai-client-BAPVMSNX.mjs +35 -0
  7. package/dist/lib/browser/ai-client-BAPVMSNX.mjs.map +7 -0
  8. package/dist/lib/browser/{app-graph-builder-4DIOTGOG.mjs → app-graph-builder-DTCUWBKB.mjs} +57 -6
  9. package/dist/lib/browser/app-graph-builder-DTCUWBKB.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-M2SADJVS.mjs → chunk-25APJ3ZK.mjs} +34 -12
  11. package/dist/lib/browser/chunk-25APJ3ZK.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-EUMPBC4T.mjs → chunk-6FTPLBSC.mjs} +2 -2
  13. package/dist/lib/browser/{chunk-NV7SVHMV.mjs → chunk-AF7VQAKS.mjs} +1 -1
  14. package/dist/lib/browser/{chunk-NV7SVHMV.mjs.map → chunk-AF7VQAKS.mjs.map} +2 -2
  15. package/dist/lib/browser/{chunk-WVME6K4X.mjs → chunk-KGIACFAX.mjs} +333 -205
  16. package/dist/lib/browser/chunk-KGIACFAX.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-NTLTGYYS.mjs → chunk-SVUCJXGN.mjs} +2 -2
  18. package/dist/lib/browser/chunk-SVUCJXGN.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-FPXC3LKK.mjs → chunk-X6ALDUA5.mjs} +25 -3
  20. package/dist/lib/browser/{chunk-FPXC3LKK.mjs.map → chunk-X6ALDUA5.mjs.map} +3 -3
  21. package/dist/lib/browser/index.mjs +25 -27
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-FQRN6747.mjs → intent-resolver-U57FXP3I.mjs} +6 -3
  24. package/dist/lib/browser/{intent-resolver-FQRN6747.mjs.map → intent-resolver-U57FXP3I.mjs.map} +3 -3
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-ZT6EQ7FJ.mjs → react-surface-YNN5NYJW.mjs} +10 -9
  27. package/dist/lib/browser/react-surface-YNN5NYJW.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-VVQUGG56.mjs → settings-VAW6UWFL.mjs} +3 -3
  29. package/dist/lib/browser/types/index.mjs +6 -2
  30. package/dist/lib/node/{AssistantDialog-5PVOCPE2.cjs → AssistantDialog-GT7R7MKH.cjs} +17 -16
  31. package/dist/lib/node/AssistantDialog-GT7R7MKH.cjs.map +7 -0
  32. package/dist/lib/node/{ChatContainer-I45I3ICI.cjs → ChatContainer-JUZOEZZ7.cjs} +10 -10
  33. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs +104 -0
  34. package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs.map +7 -0
  35. package/dist/lib/node/{ai-client-6CY35ZIR.cjs → ai-client-5ESLYXAV.cjs} +19 -8
  36. package/dist/lib/node/ai-client-5ESLYXAV.cjs.map +7 -0
  37. package/dist/lib/node/{app-graph-builder-7O4U4RXH.cjs → app-graph-builder-3P6WSON2.cjs} +63 -13
  38. package/dist/lib/node/app-graph-builder-3P6WSON2.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-HFOUAFOW.cjs → chunk-G2HY3UJ4.cjs} +40 -18
  40. package/dist/lib/node/chunk-G2HY3UJ4.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-JWUHUQ56.cjs → chunk-JAB6KLPP.cjs} +334 -210
  42. package/dist/lib/node/chunk-JAB6KLPP.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-34WE2FD2.cjs → chunk-KLSNCP34.cjs} +31 -7
  44. package/dist/lib/node/chunk-KLSNCP34.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-N3SW6DJ6.cjs} +6 -6
  46. package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-U6J2GO7I.cjs} +4 -4
  47. package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-U6J2GO7I.cjs.map} +2 -2
  48. package/dist/lib/node/{chunk-3WXG6WA6.cjs → chunk-VRXFIS4X.cjs} +6 -6
  49. package/dist/lib/node/chunk-VRXFIS4X.cjs.map +7 -0
  50. package/dist/lib/node/index.cjs +75 -77
  51. package/dist/lib/node/index.cjs.map +3 -3
  52. package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs → intent-resolver-YIFAMM3B.cjs} +13 -10
  53. package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs.map → intent-resolver-YIFAMM3B.cjs.map} +3 -3
  54. package/dist/lib/node/meta.json +1 -1
  55. package/dist/lib/node/{react-surface-KFXP3GGK.cjs → react-surface-IDGIN55C.cjs} +25 -24
  56. package/dist/lib/node/react-surface-IDGIN55C.cjs.map +7 -0
  57. package/dist/lib/node/{settings-TJHHVI6B.cjs → settings-2FEYGLYU.cjs} +8 -8
  58. package/dist/lib/node/types/index.cjs +15 -11
  59. package/dist/lib/node/types/index.cjs.map +2 -2
  60. package/dist/lib/node-esm/{AssistantDialog-Q2ZBOHOV.mjs → AssistantDialog-JMBFM6QH.mjs} +11 -10
  61. package/dist/lib/node-esm/AssistantDialog-JMBFM6QH.mjs.map +7 -0
  62. package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs → ChatContainer-ZNN5CMVL.mjs} +5 -5
  63. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs +79 -0
  64. package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs.map +7 -0
  65. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs +36 -0
  66. package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs.map +7 -0
  67. package/dist/lib/node-esm/{app-graph-builder-SX3SREXF.mjs → app-graph-builder-PMAQLTTN.mjs} +57 -6
  68. package/dist/lib/node-esm/app-graph-builder-PMAQLTTN.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-ICQN3TDS.mjs → chunk-2CIYX3SD.mjs} +2 -2
  70. package/dist/lib/node-esm/chunk-2CIYX3SD.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs → chunk-J63VQFQO.mjs} +2 -2
  72. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-N6BVC2C2.mjs} +1 -1
  73. package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-N6BVC2C2.mjs.map} +2 -2
  74. package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs → chunk-NMMRHHAR.mjs} +25 -3
  75. package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs.map → chunk-NMMRHHAR.mjs.map} +3 -3
  76. package/dist/lib/node-esm/{chunk-ASMI7PQ2.mjs → chunk-PK5JCOYB.mjs} +333 -205
  77. package/dist/lib/node-esm/chunk-PK5JCOYB.mjs.map +7 -0
  78. package/dist/lib/node-esm/{chunk-2OUUYMBT.mjs → chunk-SMUINDXQ.mjs} +34 -12
  79. package/dist/lib/node-esm/chunk-SMUINDXQ.mjs.map +7 -0
  80. package/dist/lib/node-esm/index.mjs +25 -27
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs → intent-resolver-SQ4HLL5L.mjs} +6 -3
  83. package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs.map → intent-resolver-SQ4HLL5L.mjs.map} +3 -3
  84. package/dist/lib/node-esm/meta.json +1 -1
  85. package/dist/lib/node-esm/{react-surface-NZNNP2QI.mjs → react-surface-424JZTZ4.mjs} +10 -9
  86. package/dist/lib/node-esm/react-surface-424JZTZ4.mjs.map +7 -0
  87. package/dist/lib/node-esm/{settings-BVWR244C.mjs → settings-VHR5KT4J.mjs} +3 -3
  88. package/dist/lib/node-esm/types/index.mjs +6 -2
  89. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/ai-client.d.ts +2 -1
  91. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  94. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/index.d.ts +1 -1
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  98. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +4 -3
  99. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  100. package/dist/types/src/components/AssistantDialog.d.ts.map +1 -1
  101. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  102. package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
  103. package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
  104. package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
  105. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/Prompt/PromptBar.d.ts +2 -2
  107. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  108. package/dist/types/src/components/Prompt/references.d.ts +30 -0
  109. package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
  110. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  111. package/dist/types/src/components/Thread/Thread.d.ts +11 -1
  112. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  113. package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -0
  114. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  115. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  117. package/dist/types/src/hooks/email.d.ts.map +1 -1
  118. package/dist/types/src/hooks/index.d.ts +1 -0
  119. package/dist/types/src/hooks/index.d.ts.map +1 -1
  120. package/dist/types/src/hooks/processor.d.ts +7 -15
  121. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useChatProcessor.d.ts +9 -2
  123. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
  125. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
  126. package/dist/types/src/hooks/useMessageQueue.d.ts +4 -4
  127. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  128. package/dist/types/src/meta.d.ts +2 -8
  129. package/dist/types/src/meta.d.ts.map +1 -1
  130. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +23 -12
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/template.d.ts +36 -0
  134. package/dist/types/src/types/template.d.ts.map +1 -1
  135. package/dist/types/src/types/types.d.ts +3 -1
  136. package/dist/types/src/types/types.d.ts.map +1 -1
  137. package/package.json +56 -55
  138. package/src/AssistantPlugin.tsx +11 -4
  139. package/src/capabilities/ai-client.ts +23 -5
  140. package/src/capabilities/app-graph-builder.ts +48 -2
  141. package/src/capabilities/capabilities.ts +3 -1
  142. package/src/capabilities/intent-resolver.ts +1 -1
  143. package/src/capabilities/react-surface.tsx +3 -2
  144. package/src/components/AmbientDialog/AmbientDialog.tsx +11 -11
  145. package/src/components/AssistantDialog.tsx +7 -1
  146. package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
  147. package/src/components/Prompt/Prompt.stories.tsx +34 -0
  148. package/src/components/Prompt/Prompt.tsx +28 -18
  149. package/src/components/Prompt/PromptBar.tsx +3 -1
  150. package/src/components/Prompt/references.ts +180 -0
  151. package/src/components/TemplateContainer.tsx +79 -4
  152. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
  153. package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
  154. package/src/components/Thread/Thread.tsx +21 -0
  155. package/src/components/Thread/ThreadContainer.stories.tsx +5 -10
  156. package/src/components/Thread/ThreadContainer.tsx +7 -4
  157. package/src/components/Thread/ThreadMessage.tsx +17 -9
  158. package/src/hooks/email.ts +3 -3
  159. package/src/hooks/index.ts +1 -0
  160. package/src/hooks/processor.ts +57 -116
  161. package/src/hooks/useChatProcessor.tsx +24 -16
  162. package/src/hooks/useContextProvider.ts +55 -0
  163. package/src/hooks/useMessageQueue.ts +2 -4
  164. package/src/meta.ts +2 -2
  165. package/src/testing/test-functions.ts +2 -2
  166. package/src/translations.ts +10 -5
  167. package/src/types/template.ts +22 -0
  168. package/src/types/types.ts +3 -1
  169. package/dist/lib/browser/AssistantDialog-CM33SOCT.mjs.map +0 -7
  170. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
  171. package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
  172. package/dist/lib/browser/ai-client-HZPB7E6M.mjs +0 -22
  173. package/dist/lib/browser/ai-client-HZPB7E6M.mjs.map +0 -7
  174. package/dist/lib/browser/app-graph-builder-4DIOTGOG.mjs.map +0 -7
  175. package/dist/lib/browser/chunk-M2SADJVS.mjs.map +0 -7
  176. package/dist/lib/browser/chunk-NTLTGYYS.mjs.map +0 -7
  177. package/dist/lib/browser/chunk-WVME6K4X.mjs.map +0 -7
  178. package/dist/lib/browser/react-surface-ZT6EQ7FJ.mjs.map +0 -7
  179. package/dist/lib/node/AssistantDialog-5PVOCPE2.cjs.map +0 -7
  180. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
  181. package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
  182. package/dist/lib/node/ai-client-6CY35ZIR.cjs.map +0 -7
  183. package/dist/lib/node/app-graph-builder-7O4U4RXH.cjs.map +0 -7
  184. package/dist/lib/node/chunk-34WE2FD2.cjs.map +0 -7
  185. package/dist/lib/node/chunk-3WXG6WA6.cjs.map +0 -7
  186. package/dist/lib/node/chunk-HFOUAFOW.cjs.map +0 -7
  187. package/dist/lib/node/chunk-JWUHUQ56.cjs.map +0 -7
  188. package/dist/lib/node/react-surface-KFXP3GGK.cjs.map +0 -7
  189. package/dist/lib/node-esm/AssistantDialog-Q2ZBOHOV.mjs.map +0 -7
  190. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
  191. package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
  192. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs +0 -23
  193. package/dist/lib/node-esm/ai-client-GSA67EIB.mjs.map +0 -7
  194. package/dist/lib/node-esm/app-graph-builder-SX3SREXF.mjs.map +0 -7
  195. package/dist/lib/node-esm/chunk-2OUUYMBT.mjs.map +0 -7
  196. package/dist/lib/node-esm/chunk-ASMI7PQ2.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-ICQN3TDS.mjs.map +0 -7
  198. package/dist/lib/node-esm/react-surface-NZNNP2QI.mjs.map +0 -7
  199. /package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs.map → ChatContainer-NHHA6CSP.mjs.map} +0 -0
  200. /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-6FTPLBSC.mjs.map} +0 -0
  201. /package/dist/lib/browser/{settings-VVQUGG56.mjs.map → settings-VAW6UWFL.mjs.map} +0 -0
  202. /package/dist/lib/node/{ChatContainer-I45I3ICI.cjs.map → ChatContainer-JUZOEZZ7.cjs.map} +0 -0
  203. /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-N3SW6DJ6.cjs.map} +0 -0
  204. /package/dist/lib/node/{settings-TJHHVI6B.cjs.map → settings-2FEYGLYU.cjs.map} +0 -0
  205. /package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs.map → ChatContainer-ZNN5CMVL.mjs.map} +0 -0
  206. /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-J63VQFQO.mjs.map} +0 -0
  207. /package/dist/lib/node-esm/{settings-BVWR244C.mjs.map → settings-VHR5KT4J.mjs.map} +0 -0
@@ -2,8 +2,8 @@ declare const _default: {
2
2
  'en-US': {
3
3
  [x: string]: {
4
4
  'typename label': string;
5
- 'chat title placeholder'?: undefined;
6
- 'template title placeholder'?: undefined;
5
+ 'object name placeholder': string;
6
+ 'templates label'?: undefined;
7
7
  'open ambient chat label'?: undefined;
8
8
  'plugin name'?: undefined;
9
9
  'object placeholder'?: undefined;
@@ -13,6 +13,8 @@ declare const _default: {
13
13
  'command placeholder'?: undefined;
14
14
  'template placeholder'?: undefined;
15
15
  'value placeholder'?: undefined;
16
+ 'typename placeholder'?: undefined;
17
+ 'description placeholder'?: undefined;
16
18
  'select preset template placeholder'?: undefined;
17
19
  'service registry label'?: undefined;
18
20
  'assistant dialog title'?: undefined;
@@ -22,12 +24,13 @@ declare const _default: {
22
24
  'prompt placeholder'?: undefined;
23
25
  'microphone button'?: undefined;
24
26
  'cancel processing button'?: undefined;
27
+ 'settings default label'?: undefined;
25
28
  'settings custom prompts label'?: undefined;
26
- 'settings llm model label'?: undefined;
27
- 'settings default llm model label'?: undefined;
29
+ 'settings llm provider label'?: undefined;
30
+ 'settings edge llm model label'?: undefined;
31
+ 'settings ollama llm model label'?: undefined;
28
32
  } | {
29
- 'chat title placeholder': string;
30
- 'template title placeholder': string;
33
+ 'templates label': string;
31
34
  'open ambient chat label': string;
32
35
  'plugin name': string;
33
36
  'object placeholder': string;
@@ -37,6 +40,8 @@ declare const _default: {
37
40
  'command placeholder': string;
38
41
  'template placeholder': string;
39
42
  'value placeholder': string;
43
+ 'typename placeholder': string;
44
+ 'description placeholder': string;
40
45
  'select preset template placeholder': string;
41
46
  'service registry label': string;
42
47
  'assistant dialog title': string;
@@ -46,14 +51,16 @@ declare const _default: {
46
51
  'prompt placeholder': string;
47
52
  'microphone button': string;
48
53
  'cancel processing button': string;
54
+ 'settings default label': string;
49
55
  'settings custom prompts label': string;
50
- 'settings llm model label': string;
51
- 'settings default llm model label': string;
56
+ 'settings llm provider label': string;
57
+ 'settings edge llm model label': string;
58
+ 'settings ollama llm model label': string;
52
59
  'typename label'?: undefined;
60
+ 'object name placeholder'?: undefined;
53
61
  };
54
62
  "dxos.org/plugin/assistant": {
55
- 'chat title placeholder': string;
56
- 'template title placeholder': string;
63
+ 'templates label': string;
57
64
  'open ambient chat label': string;
58
65
  'plugin name': string;
59
66
  'object placeholder': string;
@@ -63,6 +70,8 @@ declare const _default: {
63
70
  'command placeholder': string;
64
71
  'template placeholder': string;
65
72
  'value placeholder': string;
73
+ 'typename placeholder': string;
74
+ 'description placeholder': string;
66
75
  'select preset template placeholder': string;
67
76
  'service registry label': string;
68
77
  'assistant dialog title': string;
@@ -72,9 +81,11 @@ declare const _default: {
72
81
  'prompt placeholder': string;
73
82
  'microphone button': string;
74
83
  'cancel processing button': string;
84
+ 'settings default label': string;
75
85
  'settings custom prompts label': string;
76
- 'settings llm model label': string;
77
- 'settings default llm model label': string;
86
+ 'settings llm provider label': string;
87
+ 'settings edge llm model label': string;
88
+ 'settings ollama llm model label': string;
78
89
  };
79
90
  };
80
91
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAyCE"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBA8CE"}
@@ -15,8 +15,33 @@ export declare const TemplateInputSchema: S.mutable<S.Struct<{
15
15
  value: S.optional<typeof S.String>;
16
16
  }>>;
17
17
  export type TemplateInput = S.Schema.Type<typeof TemplateInputSchema>;
18
+ export declare const TemplateKinds: readonly ["always", "schema-matching", "automatically", "manual"];
19
+ export type TemplateKind = (typeof TemplateKinds)[number];
20
+ export declare const TemplateKindSchema: S.Union<[S.Struct<{
21
+ include: S.Literal<["always"]>;
22
+ }>, S.Struct<{
23
+ include: S.Literal<["schema-matching"]>;
24
+ typename: typeof S.String;
25
+ }>, S.Struct<{
26
+ include: S.Literal<["automatically"]>;
27
+ description: typeof S.String;
28
+ }>, S.Struct<{
29
+ include: S.Literal<["manual"]>;
30
+ }>]>;
31
+ export type TemplateKindType = S.Schema.Type<typeof TemplateKindSchema>;
18
32
  declare const TemplateType_base: import("@dxos/echo-schema").TypedObjectPrototype<import("@dxos/echo-schema").TypedObjectFields<{
19
33
  name: S.optional<typeof S.String>;
34
+ kind: S.mutable<S.Union<[S.Struct<{
35
+ include: S.Literal<["always"]>;
36
+ }>, S.Struct<{
37
+ include: S.Literal<["schema-matching"]>;
38
+ typename: typeof S.String;
39
+ }>, S.Struct<{
40
+ include: S.Literal<["automatically"]>;
41
+ description: typeof S.String;
42
+ }>, S.Struct<{
43
+ include: S.Literal<["manual"]>;
44
+ }>]>>;
20
45
  source: typeof S.String;
21
46
  inputs: S.optional<S.mutable<S.Array$<S.mutable<S.Struct<{
22
47
  name: typeof S.String;
@@ -26,6 +51,17 @@ declare const TemplateType_base: import("@dxos/echo-schema").TypedObjectPrototyp
26
51
  command: S.optional<typeof S.String>;
27
52
  }, import("@dxos/echo-schema").TypedObjectOptions>, S.Struct.Encoded<{
28
53
  name: S.optional<typeof S.String>;
54
+ kind: S.mutable<S.Union<[S.Struct<{
55
+ include: S.Literal<["always"]>;
56
+ }>, S.Struct<{
57
+ include: S.Literal<["schema-matching"]>;
58
+ typename: typeof S.String;
59
+ }>, S.Struct<{
60
+ include: S.Literal<["automatically"]>;
61
+ description: typeof S.String;
62
+ }>, S.Struct<{
63
+ include: S.Literal<["manual"]>;
64
+ }>]>>;
29
65
  source: typeof S.String;
30
66
  inputs: S.optional<S.mutable<S.Array$<S.mutable<S.Struct<{
31
67
  name: typeof S.String;
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/types/template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAGnD,oBAAY,iBAAiB;IAC3B,KAAK,IAAI;IACT,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;CACX;AAED,eAAO,MAAM,mBAAmB;;;;GAM/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;AAEtE,qBAAa,YAAa,SAAQ,iBAKhC;CAAG"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/types/template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAGnD,oBAAY,iBAAiB;IAC3B,KAAK,IAAI;IACT,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;CACX;AAED,eAAO,MAAM,mBAAmB;;;;GAM/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,aAAa,mEAAoE,CAAC;AAC/F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,eAAO,MAAM,kBAAkB;;;;;;;;;;IAe9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACxE,qBAAa,YAAa,SAAQ,iBAMhC;CAAG"}
@@ -30,7 +30,9 @@ export declare namespace AssistantAction {
30
30
  export {};
31
31
  }
32
32
  export declare const AssistantSettingsSchema: S.mutable<S.Struct<{
33
- llmModel: S.optional<typeof S.String>;
33
+ llmProvider: S.optional<S.Literal<["edge", "ollama"]>>;
34
+ edgeModel: S.optional<typeof S.String>;
35
+ ollamaModel: S.optional<typeof S.String>;
34
36
  customPrompts: S.optional<typeof S.Boolean>;
35
37
  }>>;
36
38
  export type AssistantSettingsProps = S.Schema.Type<typeof AssistantSettingsSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,yBAAiB,eAAe,CAAC;;;;;;;;;;;;IAG/B,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;IAEL,MAAM,OAAO,cAAe,SAAQ,mBAOlC;KAAG;;CACN;AAED,eAAO,MAAM,uBAAuB;;;GAKnC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,yBAAiB,eAAe,CAAC;;;;;;;;;;;;IAG/B,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;IAEL,MAAM,OAAO,cAAe,SAAQ,mBAOlC;KAAG;;CACN;AAED,eAAO,MAAM,uBAAuB;;;;;GAOnC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-assistant",
3
- "version": "0.8.1-staging.391c573",
3
+ "version": "0.8.1-staging.5be625a",
4
4
  "description": "Assistant plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -42,51 +42,52 @@
42
42
  "@lezer/highlight": "^1.2.1",
43
43
  "@preact/signals-core": "^1.6.0",
44
44
  "@xiechao/codemirror-lang-handlebars": "1.0.4",
45
+ "effect": "3.13.3",
45
46
  "jsonpointer": "^5.0.1",
46
47
  "lodash.get": "^4.4.2",
47
48
  "unified": "^11.0.0",
48
- "@dxos/app-framework": "0.8.1-staging.391c573",
49
- "@dxos/async": "0.8.1-staging.391c573",
50
- "@dxos/artifact": "0.8.1-staging.391c573",
51
- "@dxos/assistant": "0.8.1-staging.391c573",
52
- "@dxos/client": "0.8.1-staging.391c573",
53
- "@dxos/compute": "0.8.1-staging.391c573",
54
- "@dxos/conductor": "0.8.1-staging.391c573",
55
- "@dxos/echo-db": "0.8.1-staging.391c573",
56
- "@dxos/context": "0.8.1-staging.391c573",
57
- "@dxos/edge-client": "0.8.1-staging.391c573",
58
- "@dxos/functions": "0.8.1-staging.391c573",
59
- "@dxos/echo-schema": "0.8.1-staging.391c573",
60
- "@dxos/invariant": "0.8.1-staging.391c573",
61
- "@dxos/keys": "0.8.1-staging.391c573",
62
- "@dxos/live-object": "0.8.1-staging.391c573",
63
- "@dxos/local-storage": "0.8.1-staging.391c573",
64
- "@dxos/plugin-client": "0.8.1-staging.391c573",
65
- "@dxos/log": "0.8.1-staging.391c573",
66
- "@dxos/plugin-graph": "0.8.1-staging.391c573",
67
- "@dxos/plugin-deck": "0.8.1-staging.391c573",
68
- "@dxos/plugin-inbox": "0.8.1-staging.391c573",
69
- "@dxos/plugin-script": "0.8.1-staging.391c573",
70
- "@dxos/plugin-sketch": "0.8.1-staging.391c573",
71
- "@dxos/plugin-markdown": "0.8.1-staging.391c573",
72
- "@dxos/plugin-stack": "0.8.1-staging.391c573",
73
- "@dxos/plugin-space": "0.8.1-staging.391c573",
74
- "@dxos/plugin-transcription": "0.8.1-staging.391c573",
75
- "@dxos/plugin-wnfs": "0.8.1-staging.391c573",
76
- "@dxos/react-edge-client": "0.8.1-staging.391c573",
77
- "@dxos/react-client": "0.8.1-staging.391c573",
78
- "@dxos/react-ui-canvas-editor": "0.8.1-staging.391c573",
79
- "@dxos/react-ui-canvas-compute": "0.8.1-staging.391c573",
80
- "@dxos/react-ui-components": "0.8.1-staging.391c573",
81
- "@dxos/react-ui-dnd": "0.8.1-staging.391c573",
82
- "@dxos/react-ui-form": "0.8.1-staging.391c573",
83
- "@dxos/react-ui-editor": "0.8.1-staging.391c573",
84
- "@dxos/react-ui-list": "0.8.1-staging.391c573",
85
- "@dxos/react-ui-stack": "0.8.1-staging.391c573",
86
- "@dxos/react-ui-syntax-highlighter": "0.8.1-staging.391c573",
87
- "@dxos/react-ui-sfx": "0.8.1-staging.391c573",
88
- "@dxos/schema": "0.8.1-staging.391c573",
89
- "@dxos/util": "0.8.1-staging.391c573"
49
+ "@dxos/artifact": "0.8.1-staging.5be625a",
50
+ "@dxos/app-framework": "0.8.1-staging.5be625a",
51
+ "@dxos/assistant": "0.8.1-staging.5be625a",
52
+ "@dxos/client": "0.8.1-staging.5be625a",
53
+ "@dxos/conductor": "0.8.1-staging.5be625a",
54
+ "@dxos/compute": "0.8.1-staging.5be625a",
55
+ "@dxos/async": "0.8.1-staging.5be625a",
56
+ "@dxos/context": "0.8.1-staging.5be625a",
57
+ "@dxos/echo-schema": "0.8.1-staging.5be625a",
58
+ "@dxos/echo-db": "0.8.1-staging.5be625a",
59
+ "@dxos/edge-client": "0.8.1-staging.5be625a",
60
+ "@dxos/functions": "0.8.1-staging.5be625a",
61
+ "@dxos/keys": "0.8.1-staging.5be625a",
62
+ "@dxos/live-object": "0.8.1-staging.5be625a",
63
+ "@dxos/local-storage": "0.8.1-staging.5be625a",
64
+ "@dxos/invariant": "0.8.1-staging.5be625a",
65
+ "@dxos/log": "0.8.1-staging.5be625a",
66
+ "@dxos/plugin-client": "0.8.1-staging.5be625a",
67
+ "@dxos/plugin-deck": "0.8.1-staging.5be625a",
68
+ "@dxos/plugin-inbox": "0.8.1-staging.5be625a",
69
+ "@dxos/plugin-markdown": "0.8.1-staging.5be625a",
70
+ "@dxos/plugin-graph": "0.8.1-staging.5be625a",
71
+ "@dxos/plugin-script": "0.8.1-staging.5be625a",
72
+ "@dxos/plugin-sketch": "0.8.1-staging.5be625a",
73
+ "@dxos/plugin-space": "0.8.1-staging.5be625a",
74
+ "@dxos/plugin-wnfs": "0.8.1-staging.5be625a",
75
+ "@dxos/plugin-transcription": "0.8.1-staging.5be625a",
76
+ "@dxos/react-client": "0.8.1-staging.5be625a",
77
+ "@dxos/react-ui-canvas-compute": "0.8.1-staging.5be625a",
78
+ "@dxos/react-edge-client": "0.8.1-staging.5be625a",
79
+ "@dxos/plugin-stack": "0.8.1-staging.5be625a",
80
+ "@dxos/react-ui-dnd": "0.8.1-staging.5be625a",
81
+ "@dxos/react-ui-components": "0.8.1-staging.5be625a",
82
+ "@dxos/react-ui-editor": "0.8.1-staging.5be625a",
83
+ "@dxos/react-ui-form": "0.8.1-staging.5be625a",
84
+ "@dxos/react-ui-canvas-editor": "0.8.1-staging.5be625a",
85
+ "@dxos/react-ui-list": "0.8.1-staging.5be625a",
86
+ "@dxos/react-ui-sfx": "0.8.1-staging.5be625a",
87
+ "@dxos/react-ui-stack": "0.8.1-staging.5be625a",
88
+ "@dxos/react-ui-syntax-highlighter": "0.8.1-staging.5be625a",
89
+ "@dxos/schema": "0.8.1-staging.5be625a",
90
+ "@dxos/util": "0.8.1-staging.5be625a"
90
91
  },
91
92
  "devDependencies": {
92
93
  "@types/lodash.get": "^4.4.7",
@@ -96,22 +97,22 @@
96
97
  "react": "~18.2.0",
97
98
  "react-dom": "~18.2.0",
98
99
  "vite": "5.4.7",
99
- "@dxos/artifact-testing": "0.8.1-staging.391c573",
100
- "@dxos/echo-db": "0.8.1-staging.391c573",
101
- "@dxos/plugin-chess": "0.8.1-staging.391c573",
102
- "@dxos/plugin-map": "0.8.1-staging.391c573",
103
- "@dxos/plugin-table": "0.8.1-staging.391c573",
104
- "@dxos/random": "0.8.1-staging.391c573",
105
- "@dxos/plugin-inbox": "0.8.1-staging.391c573",
106
- "@dxos/react-ui": "0.8.1-staging.391c573",
107
- "@dxos/react-ui-theme": "0.8.1-staging.391c573",
108
- "@dxos/storybook-utils": "0.8.1-staging.391c573"
100
+ "@dxos/plugin-chess": "0.8.1-staging.5be625a",
101
+ "@dxos/artifact-testing": "0.8.1-staging.5be625a",
102
+ "@dxos/plugin-inbox": "0.8.1-staging.5be625a",
103
+ "@dxos/echo-db": "0.8.1-staging.5be625a",
104
+ "@dxos/plugin-map": "0.8.1-staging.5be625a",
105
+ "@dxos/plugin-table": "0.8.1-staging.5be625a",
106
+ "@dxos/react-ui": "0.8.1-staging.5be625a",
107
+ "@dxos/random": "0.8.1-staging.5be625a",
108
+ "@dxos/react-ui-theme": "0.8.1-staging.5be625a",
109
+ "@dxos/storybook-utils": "0.8.1-staging.5be625a"
109
110
  },
110
111
  "peerDependencies": {
111
112
  "react": "~18.2.0",
112
113
  "react-dom": "~18.2.0",
113
- "@dxos/react-ui-theme": "0.8.1-staging.391c573",
114
- "@dxos/react-ui": "0.8.1-staging.391c573"
114
+ "@dxos/react-ui-theme": "0.8.1-staging.5be625a",
115
+ "@dxos/react-ui": "0.8.1-staging.5be625a"
115
116
  },
116
117
  "publishConfig": {
117
118
  "access": "public"
@@ -2,7 +2,15 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
5
+ import {
6
+ allOf,
7
+ Capabilities,
8
+ contributes,
9
+ createIntent,
10
+ defineModule,
11
+ definePlugin,
12
+ Events,
13
+ } from '@dxos/app-framework';
6
14
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
7
15
  import { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';
8
16
  import { SpaceCapabilities } from '@dxos/plugin-space';
@@ -32,14 +40,12 @@ export const AssistantPlugin = () =>
32
40
  contributes(Capabilities.Metadata, {
33
41
  id: TemplateType.typename,
34
42
  metadata: {
35
- placeholder: ['template title placeholder', { ns: ASSISTANT_PLUGIN }],
36
43
  icon: 'ph--code-block--regular',
37
44
  },
38
45
  }),
39
46
  contributes(Capabilities.Metadata, {
40
47
  id: AIChatType.typename,
41
48
  metadata: {
42
- placeholder: ['chat title placeholder', { ns: ASSISTANT_PLUGIN }],
43
49
  icon: 'ph--atom--regular',
44
50
  },
45
51
  }),
@@ -60,6 +66,7 @@ export const AssistantPlugin = () =>
60
66
  SpaceCapabilities.ObjectForm,
61
67
  defineObjectForm({
62
68
  objectSchema: TemplateType,
69
+ hidden: true,
63
70
  getIntent: () => createIntent(AssistantAction.CreateTemplate),
64
71
  }),
65
72
  ),
@@ -99,7 +106,7 @@ export const AssistantPlugin = () =>
99
106
  }),
100
107
  defineModule({
101
108
  id: `${meta.id}/module/ai-client`,
102
- activatesOn: ClientEvents.ClientReady,
109
+ activatesOn: allOf(ClientEvents.ClientReady, Events.SettingsReady),
103
110
  activate: AiClient,
104
111
  }),
105
112
  ]);
@@ -2,11 +2,15 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginsContext } from '@dxos/app-framework';
6
- import { AIServiceEdgeClient } from '@dxos/assistant';
5
+ import { effect, signal } from '@preact/signals-core';
6
+
7
+ import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
8
+ import { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';
7
9
  import { ClientCapabilities } from '@dxos/plugin-client';
8
10
 
9
11
  import { AssistantCapabilities } from './capabilities';
12
+ import { ASSISTANT_PLUGIN } from '../meta';
13
+ import { type AssistantSettingsProps } from '../types';
10
14
 
11
15
  // TODO(wittjosiah): Factor out.
12
16
  const DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';
@@ -14,7 +18,21 @@ const DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';
14
18
  export default (context: PluginsContext) => {
15
19
  const client = context.requestCapability(ClientCapabilities.Client);
16
20
  const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
17
- // TODO(burdon): Use prefs.
18
- const ai = new AIServiceEdgeClient({ endpoint });
19
- return contributes(AssistantCapabilities.AiClient, ai);
21
+
22
+ const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));
23
+
24
+ const unsubscribe = effect(() => {
25
+ // TODO(burdon): Could be undefined.
26
+ const settings = context
27
+ .requestCapability(Capabilities.SettingsStore)
28
+ .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;
29
+
30
+ if (settings?.llmProvider === 'ollama') {
31
+ ai.value = new OllamaClient();
32
+ } else {
33
+ ai.value = new AIServiceEdgeClient({ endpoint });
34
+ }
35
+ });
36
+
37
+ return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());
20
38
  };
@@ -13,11 +13,12 @@ import {
13
13
  import { invariant } from '@dxos/invariant';
14
14
  import { ClientCapabilities } from '@dxos/plugin-client';
15
15
  import { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';
16
+ import { memoizeQuery } from '@dxos/plugin-space';
16
17
  import { SpaceAction } from '@dxos/plugin-space/types';
17
- import { type Space, Filter, getSpace } from '@dxos/react-client/echo';
18
+ import { type Space, Filter, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
18
19
 
19
20
  import { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';
20
- import { AIChatType, AssistantAction } from '../types';
21
+ import { AIChatType, AssistantAction, TemplateType } from '../types';
21
22
 
22
23
  export default (context: PluginsContext) =>
23
24
  contributes(Capabilities.AppGraphBuilder, [
@@ -80,6 +81,51 @@ export default (context: PluginsContext) =>
80
81
  },
81
82
  ],
82
83
  }),
84
+
85
+ createExtension({
86
+ id: `${ASSISTANT_PLUGIN}/root`,
87
+ filter: (node): node is Node<Space> => isSpace(node.data),
88
+ connector: ({ node }) => {
89
+ const templates = memoizeQuery(node.data, Filter.schema(TemplateType));
90
+ return templates.length > 0
91
+ ? [
92
+ {
93
+ id: `${ASSISTANT_PLUGIN}/templates`,
94
+ type: `${ASSISTANT_PLUGIN}/templates`,
95
+ data: null,
96
+ properties: {
97
+ label: ['templates label', { ns: ASSISTANT_PLUGIN }],
98
+ icon: 'ph--file-code--regular',
99
+ space: node.data,
100
+ },
101
+ },
102
+ ]
103
+ : [];
104
+ },
105
+ }),
106
+
107
+ createExtension({
108
+ id: `${ASSISTANT_PLUGIN}/templates`,
109
+ filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,
110
+ connector: ({ node }) => {
111
+ const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));
112
+ return templates
113
+ .toSorted((a, b) => {
114
+ const nameA = a.name ?? '';
115
+ const nameB = b.name ?? '';
116
+ return nameA.localeCompare(nameB);
117
+ })
118
+ .map((template) => ({
119
+ id: fullyQualifiedId(template),
120
+ type: `${ASSISTANT_PLUGIN}/template`,
121
+ data: template,
122
+ properties: {
123
+ label: template.name ?? ['template title placeholder', { ns: ASSISTANT_PLUGIN }],
124
+ icon: 'ph--file-code--regular',
125
+ },
126
+ }));
127
+ },
128
+ }),
83
129
  ]);
84
130
 
85
131
  // TODO(burdon): Factor out.
@@ -2,11 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
+ import { type ReadonlySignal } from '@preact/signals-core';
6
+
5
7
  import { defineCapability } from '@dxos/app-framework';
6
8
  import { type AIServiceClient } from '@dxos/assistant';
7
9
 
8
10
  import { ASSISTANT_PLUGIN } from '../meta';
9
11
 
10
12
  export namespace AssistantCapabilities {
11
- export const AiClient = defineCapability<AIServiceClient>(`${ASSISTANT_PLUGIN}/capability/ai-client`);
13
+ export const AiClient = defineCapability<ReadonlySignal<AIServiceClient>>(`${ASSISTANT_PLUGIN}/capability/ai-client`);
12
14
  }
@@ -30,7 +30,7 @@ export default () => [
30
30
  intent: AssistantAction.CreateTemplate,
31
31
  resolve: ({ name }) => ({
32
32
  data: {
33
- object: create(TemplateType, { name, source: '{{! Template }}' }),
33
+ object: create(TemplateType, { name, kind: { include: 'manual' }, source: '{{! Template }}' }),
34
34
  },
35
35
  }),
36
36
  }),
@@ -5,6 +5,7 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
8
+ import { isInstanceOf } from '@dxos/echo-schema';
8
9
  import { SettingsStore } from '@dxos/local-storage';
9
10
  import { getSpace, isSpace } from '@dxos/react-client/echo';
10
11
 
@@ -30,13 +31,13 @@ export default () =>
30
31
  createSurface({
31
32
  id: `${ASSISTANT_PLUGIN}/chat`,
32
33
  role: 'article',
33
- filter: (data): data is { subject: AIChatType } => data.subject instanceof AIChatType,
34
+ filter: (data): data is { subject: AIChatType } => isInstanceOf(AIChatType, data.subject),
34
35
  component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,
35
36
  }),
36
37
  createSurface({
37
38
  id: `${ASSISTANT_PLUGIN}/template`,
38
39
  role: 'article',
39
- filter: (data): data is { subject: TemplateType } => data.subject instanceof TemplateType,
40
+ filter: (data): data is { subject: TemplateType } => isInstanceOf(TemplateType, data.subject),
40
41
  component: ({ data, role }) => <TemplateContainer role={role} template={data.subject} />,
41
42
  }),
42
43
  createSurface({
@@ -12,21 +12,21 @@ const preventDefault = (event: Event) => event.preventDefault();
12
12
 
13
13
  const minSize = 5;
14
14
 
15
- // TODO(burdon): Factor out.
16
- export const AmbientDialog = ({
17
- children,
18
- open: _open,
19
- title,
20
- onOpenChange,
21
- }: PropsWithChildren<{ open?: boolean; onOpenChange?: (open: boolean) => void; title?: string }>) => {
15
+ export type AmbientDialogProps = PropsWithChildren<{
16
+ open?: boolean;
17
+ title?: string;
18
+ onOpenChange?: (open: boolean) => void;
19
+ }>;
20
+
21
+ export const AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }: AmbientDialogProps) => {
22
22
  const [resizeKey, setReizeKey] = useState(0);
23
23
  const [size, setSize] = useState<Size>('min-content');
24
- const [open, setOpen] = useState(_open);
24
+ const [open, setOpen] = useState(controlledOpen);
25
25
 
26
26
  // Update controlled value.
27
27
  useEffect(() => {
28
- setOpen(_open);
29
- }, [_open]);
28
+ setOpen(controlledOpen);
29
+ }, [controlledOpen]);
30
30
 
31
31
  // Update size and key.
32
32
  useEffect(() => {
@@ -52,7 +52,7 @@ export const AmbientDialog = ({
52
52
  {...resizeAttributes}
53
53
  style={{
54
54
  ...sizeStyle(size, 'vertical', true),
55
- maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)',
55
+ maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)',
56
56
  }}
57
57
  onInteractOutside={preventDefault}
58
58
  >
@@ -23,7 +23,13 @@ export const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {
23
23
 
24
24
  return (
25
25
  <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>
26
- <ThreadContainer chat={chat} onOpenChange={setOpen} settings={settings} transcription={transcription} />
26
+ <ThreadContainer
27
+ chat={chat}
28
+ onOpenChange={setOpen}
29
+ settings={settings}
30
+ part={'dialog'}
31
+ transcription={transcription}
32
+ />
27
33
  </AmbientDialog>
28
34
  );
29
35
  };