@dxos/plugin-assistant 0.8.1 → 0.8.2-main.2f9c567

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 (197) hide show
  1. package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs → AssistantDialog-WX6EKSXI.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-V5GP7DYF.mjs → ChatContainer-HMNWYDQ5.mjs} +3 -3
  3. package/dist/lib/browser/ChatContainer-HMNWYDQ5.mjs.map +7 -0
  4. package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs +22 -0
  5. package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs.map +7 -0
  6. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-OK5SMYJC.mjs} +1 -1
  7. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs.map → ai-client-OK5SMYJC.mjs.map} +2 -2
  8. package/dist/lib/browser/{app-graph-builder-MF5EVDWW.mjs → app-graph-builder-J5ISIFTE.mjs} +9 -39
  9. package/dist/lib/browser/app-graph-builder-J5ISIFTE.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-4EXBK6UE.mjs} +127 -112
  11. package/dist/lib/browser/chunk-4EXBK6UE.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-5P7U35RJ.mjs +192 -0
  13. package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-J3V74ZRF.mjs +143 -0
  15. package/dist/lib/browser/chunk-J3V74ZRF.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +14 -11
  17. package/dist/lib/browser/index.mjs.map +3 -3
  18. package/dist/lib/browser/{intent-resolver-WJGLKKVO.mjs → intent-resolver-MGHOSZY3.mjs} +5 -5
  19. package/dist/lib/browser/intent-resolver-MGHOSZY3.mjs.map +7 -0
  20. package/dist/lib/browser/meta.json +1 -1
  21. package/dist/lib/browser/{react-surface-57VRDOQT.mjs → react-surface-VP4ABBMH.mjs} +15 -15
  22. package/dist/lib/browser/react-surface-VP4ABBMH.mjs.map +7 -0
  23. package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-OZX7J65A.mjs} +4 -4
  24. package/dist/lib/browser/settings-OZX7J65A.mjs.map +7 -0
  25. package/dist/lib/browser/types/index.mjs +3 -1
  26. package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs → AssistantDialog-2OTAZADX.cjs} +7 -7
  27. package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-3CTBKBS2.cjs} +7 -7
  28. package/dist/lib/node/ChatContainer-3CTBKBS2.cjs.map +7 -0
  29. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs +52 -0
  30. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs.map +7 -0
  31. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-3EVTLXTT.cjs} +4 -4
  32. package/dist/lib/node/{ai-client-URCCYU6B.cjs.map → ai-client-3EVTLXTT.cjs.map} +2 -2
  33. package/dist/lib/node/{app-graph-builder-N5ZUUI2Z.cjs → app-graph-builder-BBNLIGYJ.cjs} +14 -44
  34. package/dist/lib/node/app-graph-builder-BBNLIGYJ.cjs.map +7 -0
  35. package/dist/lib/node/chunk-VG2UQY4S.cjs +216 -0
  36. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
  37. package/dist/lib/node/{chunk-ZKOC4ZFY.cjs → chunk-WFSXNO4H.cjs} +78 -61
  38. package/dist/lib/node/chunk-WFSXNO4H.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-XC7A3KUG.cjs} +138 -116
  40. package/dist/lib/node/chunk-XC7A3KUG.cjs.map +7 -0
  41. package/dist/lib/node/index.cjs +46 -43
  42. package/dist/lib/node/index.cjs.map +3 -3
  43. package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-Z2NTL2FV.cjs} +9 -9
  44. package/dist/lib/node/intent-resolver-Z2NTL2FV.cjs.map +7 -0
  45. package/dist/lib/node/meta.json +1 -1
  46. package/dist/lib/node/{react-surface-NUQTM6MS.cjs → react-surface-HNXDAZ7C.cjs} +22 -22
  47. package/dist/lib/node/react-surface-HNXDAZ7C.cjs.map +7 -0
  48. package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-WLTC7XO5.cjs} +7 -7
  49. package/dist/lib/node/settings-WLTC7XO5.cjs.map +7 -0
  50. package/dist/lib/node/types/index.cjs +14 -12
  51. package/dist/lib/node/types/index.cjs.map +2 -2
  52. package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs → AssistantDialog-GNLPYXY4.mjs} +3 -3
  53. package/dist/lib/node-esm/{ChatContainer-QW3OOXTT.mjs → ChatContainer-FGHDDORQ.mjs} +3 -3
  54. package/dist/lib/node-esm/ChatContainer-FGHDDORQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs +23 -0
  56. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs.map +7 -0
  57. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-LYCBXZI7.mjs} +1 -1
  58. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs.map → ai-client-LYCBXZI7.mjs.map} +2 -2
  59. package/dist/lib/node-esm/{app-graph-builder-DWBNIMHM.mjs → app-graph-builder-245AWCPJ.mjs} +9 -39
  60. package/dist/lib/node-esm/app-graph-builder-245AWCPJ.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-G5LUEW72.mjs +144 -0
  62. package/dist/lib/node-esm/chunk-G5LUEW72.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-JX73NOSL.mjs} +127 -112
  64. package/dist/lib/node-esm/chunk-JX73NOSL.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
  66. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
  67. package/dist/lib/node-esm/index.mjs +14 -11
  68. package/dist/lib/node-esm/index.mjs.map +3 -3
  69. package/dist/lib/node-esm/{intent-resolver-H32TL4X6.mjs → intent-resolver-DMQXPV2H.mjs} +5 -5
  70. package/dist/lib/node-esm/intent-resolver-DMQXPV2H.mjs.map +7 -0
  71. package/dist/lib/node-esm/meta.json +1 -1
  72. package/dist/lib/node-esm/{react-surface-JBVZF6CP.mjs → react-surface-NYXMBFPY.mjs} +15 -15
  73. package/dist/lib/node-esm/react-surface-NYXMBFPY.mjs.map +7 -0
  74. package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-CLE57WEP.mjs} +4 -4
  75. package/dist/lib/node-esm/settings-CLE57WEP.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +3 -1
  77. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/index.d.ts +1 -1
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  82. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  83. package/dist/types/src/components/ChatContainer.d.ts +4 -3
  84. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  85. package/dist/types/src/components/PromptSettings.d.ts +6 -0
  86. package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
  87. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  89. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  90. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  92. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  94. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  95. package/dist/types/src/components/index.d.ts +2 -6
  96. package/dist/types/src/components/index.d.ts.map +1 -1
  97. package/dist/types/src/hooks/index.d.ts +0 -1
  98. package/dist/types/src/hooks/index.d.ts.map +1 -1
  99. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  101. package/dist/types/src/hooks/useMessageQueue.d.ts +0 -3
  102. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  103. package/dist/types/src/tools/function.d.ts +1 -1
  104. package/dist/types/src/tools/function.d.ts.map +1 -1
  105. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  106. package/dist/types/src/translations.d.ts +3 -0
  107. package/dist/types/src/translations.d.ts.map +1 -1
  108. package/dist/types/src/types/service.d.ts +96 -95
  109. package/dist/types/src/types/service.d.ts.map +1 -1
  110. package/dist/types/src/types/template.d.ts +52 -52
  111. package/dist/types/src/types/template.d.ts.map +1 -1
  112. package/dist/types/src/types/types.d.ts +20 -18
  113. package/dist/types/src/types/types.d.ts.map +1 -1
  114. package/package.json +61 -58
  115. package/src/AssistantPlugin.tsx +2 -2
  116. package/src/capabilities/ai-client.ts +0 -1
  117. package/src/capabilities/app-graph-builder.ts +6 -38
  118. package/src/capabilities/index.ts +1 -1
  119. package/src/capabilities/intent-resolver.ts +3 -3
  120. package/src/capabilities/react-surface.tsx +11 -9
  121. package/src/capabilities/settings.ts +2 -2
  122. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  123. package/src/components/ChatContainer.tsx +6 -8
  124. package/src/components/PromptSettings.tsx +91 -0
  125. package/src/components/TemplateContainer.tsx +3 -79
  126. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  127. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  128. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  129. package/src/components/Thread/ThreadContainer.stories.tsx +12 -20
  130. package/src/components/Thread/ThreadContainer.tsx +24 -2
  131. package/src/components/Thread/ThreadMessage.tsx +5 -2
  132. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  133. package/src/components/Toolbox/Toolbox.tsx +1 -1
  134. package/src/components/index.ts +1 -1
  135. package/src/hooks/index.ts +0 -1
  136. package/src/hooks/processor.ts +26 -4
  137. package/src/hooks/useChatProcessor.tsx +4 -3
  138. package/src/testing/test-services.ts +6 -6
  139. package/src/tools/function.ts +2 -2
  140. package/src/tools/openapi.ts +4 -3
  141. package/src/translations.ts +5 -4
  142. package/src/types/service.ts +39 -37
  143. package/src/types/template.ts +27 -25
  144. package/src/types/types.ts +20 -17
  145. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
  146. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
  147. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
  148. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
  149. package/dist/lib/browser/chunk-FMB7RGMP.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  151. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  152. package/dist/lib/browser/chunk-KYMKVE6M.mjs +0 -128
  153. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
  154. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
  155. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
  156. package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
  157. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
  158. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
  159. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
  160. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
  161. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  162. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  163. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
  164. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
  165. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
  166. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
  167. package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
  168. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
  169. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
  170. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
  171. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
  172. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs +0 -129
  173. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
  174. package/dist/lib/node-esm/chunk-MVDAY3CZ.mjs.map +0 -7
  175. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  176. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  177. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
  178. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
  179. package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
  180. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  181. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  182. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  183. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  184. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  185. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  186. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  187. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  188. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  189. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  190. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  191. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  192. package/src/components/ServiceRegistry/index.ts +0 -5
  193. package/src/hooks/invocation-handler.ts +0 -107
  194. package/src/hooks/useLocalTriggerManager.ts +0 -82
  195. /package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs.map → AssistantDialog-WX6EKSXI.mjs.map} +0 -0
  196. /package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs.map → AssistantDialog-2OTAZADX.cjs.map} +0 -0
  197. /package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs.map → AssistantDialog-GNLPYXY4.mjs.map} +0 -0
@@ -1,184 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ASSISTANT_PLUGIN
4
- } from "./chunk-ECRK6TUQ.mjs";
5
-
6
- // packages/plugins/plugin-assistant/src/types/chat.ts
7
- import { Expando, Ref, TypedObject } from "@dxos/echo-schema";
8
- var AIChatType = class extends TypedObject({
9
- typename: "dxos.org/type/AIChat",
10
- version: "0.1.0"
11
- })({
12
- // TODO(wittjosiah): Should be a ref to a Queue.
13
- assistantChatQueue: Ref(Expando)
14
- }) {
15
- };
16
-
17
- // packages/plugins/plugin-assistant/src/types/service.ts
18
- import { ComputeGraph } from "@dxos/conductor";
19
- import { Ref as Ref2, S, TypedObject as TypedObject2 } from "@dxos/echo-schema";
20
- import { FunctionType } from "@dxos/functions/types";
21
- var ApiAuthorizationKey = S.Struct({
22
- type: S.Literal("api-key"),
23
- key: S.String,
24
- placement: S.Union(S.Struct({
25
- type: S.Literal("authorization-header")
26
- }), S.Struct({
27
- type: S.Literal("query"),
28
- name: S.String
29
- }))
30
- });
31
- var ApiAuthorizationOauth = S.Struct({
32
- type: S.Literal("oauth"),
33
- clientId: S.String,
34
- clientSecret: S.String,
35
- tokenUrl: S.String,
36
- grantType: S.String
37
- });
38
- var ApiAuthorization = S.Union(ApiAuthorizationKey, ApiAuthorizationOauth);
39
- var ServiceInterfaceFunction = S.Struct({
40
- kind: S.Literal("function"),
41
- fn: Ref2(FunctionType)
42
- });
43
- var ServiceInterfaceWorkflow = S.Struct({
44
- kind: S.Literal("workflow"),
45
- workflow: Ref2(ComputeGraph)
46
- });
47
- var ServiceInterfaceApi = S.Struct({
48
- kind: S.Literal("api"),
49
- /**
50
- * URL to fetch the openapi schema.
51
- */
52
- schemaUrl: S.optional(S.String),
53
- /**
54
- * Inlined openapi schema.
55
- */
56
- schema: S.optional(S.Any),
57
- /**
58
- * Authorization configuration if required.
59
- */
60
- authorization: S.optional(ApiAuthorization)
61
- });
62
- var ServiceInterface = S.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);
63
- var ServiceType = class extends TypedObject2({
64
- typename: "dxos.org/type/ServiceType",
65
- version: "0.1.0"
66
- })({
67
- serviceId: S.String,
68
- name: S.optional(S.String),
69
- description: S.optional(S.String),
70
- category: S.optional(S.String),
71
- enabled: S.optional(S.Boolean),
72
- /**
73
- * Entries exposed: functions, workflows, and APIs.
74
- */
75
- interfaces: S.optional(S.Array(ServiceInterface))
76
- }) {
77
- };
78
- var categoryIcons = {
79
- finance: "ph--bank--regular",
80
- health: "ph--heart--regular",
81
- geolocation: "ph--globe-simple--regular",
82
- education: "ph--books--regular",
83
- entertainment: "ph--music-notes--regular",
84
- shopping: "ph--shopping-cart--regular",
85
- travel: "ph--airplane-takeoff--regular",
86
- utilities: "ph--lightning--regular",
87
- weather: "ph--cloud-rain--regular"
88
- };
89
-
90
- // packages/plugins/plugin-assistant/src/types/template.ts
91
- import { S as S2, TypedObject as TypedObject3 } from "@dxos/echo-schema";
92
- var TemplateInputType;
93
- (function(TemplateInputType2) {
94
- TemplateInputType2[TemplateInputType2["VALUE"] = 0] = "VALUE";
95
- TemplateInputType2[TemplateInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
96
- TemplateInputType2[TemplateInputType2["RETRIEVER"] = 2] = "RETRIEVER";
97
- TemplateInputType2[TemplateInputType2["FUNCTION"] = 3] = "FUNCTION";
98
- TemplateInputType2[TemplateInputType2["QUERY"] = 4] = "QUERY";
99
- TemplateInputType2[TemplateInputType2["RESOLVER"] = 5] = "RESOLVER";
100
- TemplateInputType2[TemplateInputType2["CONTEXT"] = 6] = "CONTEXT";
101
- TemplateInputType2[TemplateInputType2["SCHEMA"] = 7] = "SCHEMA";
102
- })(TemplateInputType || (TemplateInputType = {}));
103
- var TemplateInputSchema = S2.mutable(S2.Struct({
104
- name: S2.String,
105
- type: S2.optional(S2.Enums(TemplateInputType)),
106
- value: S2.optional(S2.String)
107
- }));
108
- var TemplateKinds = [
109
- "always",
110
- "schema-matching",
111
- "automatically",
112
- "manual"
113
- ];
114
- var TemplateKindSchema = S2.Union(S2.Struct({
115
- include: S2.Literal("always")
116
- }), S2.Struct({
117
- include: S2.Literal("schema-matching"),
118
- typename: S2.String
119
- }), S2.Struct({
120
- include: S2.Literal("automatically"),
121
- description: S2.String
122
- }), S2.Struct({
123
- include: S2.Literal("manual")
124
- }));
125
- var TemplateType = class extends TypedObject3({
126
- typename: "dxos.org/type/Template",
127
- version: "0.1.0"
128
- })({
129
- name: S2.optional(S2.String),
130
- kind: S2.mutable(TemplateKindSchema),
131
- source: S2.String,
132
- inputs: S2.optional(S2.mutable(S2.Array(TemplateInputSchema))),
133
- command: S2.optional(S2.String)
134
- }) {
135
- };
136
-
137
- // packages/plugins/plugin-assistant/src/types/types.ts
138
- import { S as S3 } from "@dxos/echo-schema";
139
- var AssistantAction;
140
- (function(AssistantAction2) {
141
- const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;
142
- class CreateChat extends S3.TaggedClass()(`${ASSISTANT_ACTION}/create-chat`, {
143
- input: S3.Struct({
144
- spaceId: S3.optional(S3.String),
145
- name: S3.optional(S3.String)
146
- }),
147
- output: S3.Struct({
148
- object: AIChatType
149
- })
150
- }) {
151
- }
152
- AssistantAction2.CreateChat = CreateChat;
153
- class CreateTemplate extends S3.TaggedClass()(`${ASSISTANT_ACTION}/create-template`, {
154
- input: S3.Struct({
155
- name: S3.optional(S3.String)
156
- }),
157
- output: S3.Struct({
158
- object: TemplateType
159
- })
160
- }) {
161
- }
162
- AssistantAction2.CreateTemplate = CreateTemplate;
163
- })(AssistantAction || (AssistantAction = {}));
164
- var AssistantSettingsSchema = S3.mutable(S3.Struct({
165
- llmProvider: S3.optional(S3.Literal("edge", "ollama")),
166
- edgeModel: S3.optional(S3.String),
167
- ollamaModel: S3.optional(S3.String),
168
- customPrompts: S3.optional(S3.Boolean)
169
- }));
170
-
171
- export {
172
- AIChatType,
173
- ApiAuthorization,
174
- ServiceType,
175
- categoryIcons,
176
- TemplateInputType,
177
- TemplateInputSchema,
178
- TemplateKinds,
179
- TemplateKindSchema,
180
- TemplateType,
181
- AssistantAction,
182
- AssistantSettingsSchema
183
- };
184
- //# sourceMappingURL=chunk-MXK2EANZ.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/chat.ts", "../../../src/types/service.ts", "../../../src/types/template.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Expando, Ref, TypedObject } from '@dxos/echo-schema';\n\nexport class AIChatType extends TypedObject({ typename: 'dxos.org/type/AIChat', version: '0.1.0' })({\n // TODO(wittjosiah): Should be a ref to a Queue.\n assistantChatQueue: Ref(Expando),\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Ref, S, TypedObject, type Ref$ } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions/types';\n\nconst ApiAuthorizationKey = S.Struct({\n type: S.Literal('api-key'),\n key: S.String,\n placement: S.Union(\n S.Struct({\n type: S.Literal('authorization-header'),\n }),\n S.Struct({\n type: S.Literal('query'),\n name: S.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = S.Struct({\n type: S.Literal('oauth'),\n clientId: S.String,\n clientSecret: S.String,\n tokenUrl: S.String,\n grantType: S.String,\n});\n\nexport const ApiAuthorization = S.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = S.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = S.Struct({\n kind: S.Literal('function'),\n fn: Ref(FunctionType) as Ref$<FunctionType>,\n});\n\nconst ServiceInterfaceWorkflow = S.Struct({\n kind: S.Literal('workflow'),\n workflow: Ref(ComputeGraph) as Ref$<ComputeGraph>,\n});\n\nconst ServiceInterfaceApi = S.Struct({\n kind: S.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: S.optional(S.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: S.optional(S.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: S.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = S.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = S.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({ typename: 'dxos.org/type/ServiceType', version: '0.1.0' })({\n serviceId: S.String,\n name: S.optional(S.String),\n description: S.optional(S.String),\n category: S.optional(S.String),\n enabled: S.optional(S.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: S.optional(S.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { S, TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to S.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = S.mutable(\n S.Struct({\n name: S.String,\n type: S.optional(S.Enums(TemplateInputType)),\n value: S.optional(S.String),\n }),\n);\n\nexport type TemplateInput = S.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = S.Union(\n S.Struct({\n include: S.Literal('always'),\n }),\n S.Struct({\n include: S.Literal('schema-matching'),\n typename: S.String,\n }),\n S.Struct({\n include: S.Literal('automatically'),\n description: S.String,\n }),\n S.Struct({\n include: S.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = S.Schema.Type<typeof TemplateKindSchema>;\nexport class TemplateType extends TypedObject({ typename: 'dxos.org/type/Template', version: '0.1.0' })({\n name: S.optional(S.String),\n kind: S.mutable(TemplateKindSchema),\n source: S.String,\n inputs: S.optional(S.mutable(S.Array(TemplateInputSchema))),\n command: S.optional(S.String),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { S } from '@dxos/echo-schema';\n\nimport { AIChatType } from './chat';\nimport { TemplateType } from './template';\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantAction {\n const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;\n\n export class CreateChat extends S.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {\n input: S.Struct({\n spaceId: S.optional(S.String),\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: AIChatType,\n }),\n }) {}\n\n export class CreateTemplate extends S.TaggedClass<CreateTemplate>()(`${ASSISTANT_ACTION}/create-template`, {\n input: S.Struct({\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: TemplateType,\n }),\n }) {}\n}\n\nexport const AssistantSettingsSchema = S.mutable(\n S.Struct({\n llmProvider: S.optional(S.Literal('edge', 'ollama')),\n edgeModel: S.optional(S.String),\n ollamaModel: S.optional(S.String),\n customPrompts: S.optional(S.Boolean),\n }),\n);\n\nexport type AssistantSettingsProps = S.Schema.Type<typeof AssistantSettingsSchema>;\n"],
5
- "mappings": "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",
6
- "names": ["Expando", "Ref", "TypedObject", "AIChatType", "TypedObject", "typename", "version", "assistantChatQueue", "Ref", "Expando", "ComputeGraph", "Ref", "S", "TypedObject", "FunctionType", "ApiAuthorizationKey", "S", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "S", "TypedObject", "TemplateInputType", "TemplateInputSchema", "S", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "TypedObject", "version", "kind", "source", "inputs", "Array", "command", "S", "AssistantAction", "ASSISTANT_ACTION", "ASSISTANT_PLUGIN", "CreateChat", "S", "TaggedClass", "input", "Struct", "spaceId", "optional", "String", "name", "output", "object", "AIChatType", "CreateTemplate", "TemplateType", "AssistantSettingsSchema", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "customPrompts", "Boolean"]
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 { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { create, refFromDXN } from '@dxos/live-object';\n\nimport { AssistantAction, AIChatType, TemplateType } from '../types';\n\nexport default () => [\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateChat,\n resolve: ({ spaceId, name }) => ({\n data: {\n object: create(AIChatType, {\n assistantChatQueue: refFromDXN(\n new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()]),\n ),\n }),\n },\n }),\n }),\n ),\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateTemplate,\n resolve: ({ name }) => ({\n data: {\n object: create(TemplateType, { name, kind: { include: 'manual' }, source: '{{! Template }}' }),\n },\n }),\n }),\n ),\n];\n"],
5
- "mappings": ";;;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAAsB;AAC1D,SAASC,gBAAgB;AACzB,SAASC,KAAKC,yBAAyB;AACvC,SAASC,QAAQC,kBAAkB;AAInC,IAAA,0BAAe,MAAM;EACnBC,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBC;IACxBC,SAAS,CAAC,EAAEC,SAASC,KAAI,OAAQ;MAC/BC,MAAM;QACJC,QAAQC,OAAOC,YAAY;UACzBC,oBAAoBC,WAClB,IAAIC,IAAIA,IAAIC,KAAKC,OAAO;YAACC,kBAAkBC;YAAMZ;YAASa,SAASC,OAAM;WAAG,CAAA;QAEhF,CAAA;MACF;IACF;EACF,CAAA,CAAA;EAEFtB,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBkB;IACxBhB,SAAS,CAAC,EAAEE,KAAI,OAAQ;MACtBC,MAAM;QACJC,QAAQC,OAAOY,cAAc;UAAEf;UAAMQ,MAAM;YAAEQ,SAAS;UAAS;UAAGC,QAAQ;QAAkB,CAAA;MAC9F;IACF;EACF,CAAA,CAAA;;",
6
- "names": ["Capabilities", "contributes", "createResolver", "ObjectId", "DXN", "QueueSubspaceTags", "create", "refFromDXN", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AssistantAction", "CreateChat", "resolve", "spaceId", "name", "data", "object", "create", "AIChatType", "assistantChatQueue", "refFromDXN", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "ObjectId", "random", "CreateTemplate", "TemplateType", "include", "source"]
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, { useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { getTypename } from '@dxos/live-object';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { fullyQualifiedId, isReactiveObject, isSpace, type Space } from '@dxos/react-client/echo';\n\nimport { AssistantDialog, AssistantSettings, ChatContainer, ServiceRegistry, TemplateContainer } from '../components';\nimport { ASSISTANT_PLUGIN, ASSISTANT_DIALOG } from '../meta';\nimport { AIChatType, type AssistantSettingsProps, TemplateType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${ASSISTANT_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<AssistantSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === ASSISTANT_PLUGIN,\n component: ({ data: { subject } }) => <AssistantSettings settings={subject.value} />,\n }),\n createSurface({\n id: ASSISTANT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: { chat: AIChatType } } => data.component === ASSISTANT_DIALOG,\n component: ({ data }) => <AssistantDialog {...data.props} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/chat`,\n role: 'article',\n filter: (data): data is { subject: AIChatType; variant: undefined } =>\n isInstanceOf(AIChatType, data.subject) && data.variant !== 'assistant-chat',\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/object-chat`,\n role: 'article',\n filter: (data): data is { companionTo: AIChatType; subject: 'assistant-chat' } =>\n isReactiveObject(data.companionTo) && data.companionTo.assistantChatQueue && data.subject === 'assistant-chat',\n component: ({ data, role }) => {\n const associatedArtifact = useMemo(\n () => ({\n id: fullyQualifiedId(data.companionTo),\n typename: getTypename(data.companionTo) ?? 'unknown',\n }),\n [data.companionTo],\n );\n return <ChatContainer role={role} chat={data.companionTo} associatedArtifact={associatedArtifact} />;\n },\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/template`,\n role: 'article',\n filter: (data): data is { subject: TemplateType } => isInstanceOf(TemplateType, data.subject),\n component: ({ data, role }) => <TemplateContainer role={role} template={data.subject} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/service-registry`,\n role: 'deck-companion--service-registry',\n filter: (data): data is { subject: Space } => isSpace(data.subject),\n component: ({ data }) => <ServiceRegistry space={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,oBAAoB;AAC7B,SAASC,mBAAmB;AAC5B,SAASC,qBAAqB;AAC9B,SAASC,kBAAkBC,kBAAkBC,eAA2B;AAMxE,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKC,mBAAmBC,iBAAiBF,KAAKC,QAAQE,WAAWN;IACnEO,WAAW,CAAC,EAAEJ,MAAM,EAAEC,QAAO,EAAE,MAAO,sBAAA,cAACI,mBAAAA;MAAkBC,UAAUL,QAAQM;;EAC7E,CAAA;EACAZ,cAAc;IACZC,IAAIY;IACJV,MAAM;IACNC,QAAQ,CAACC,SAAkDA,KAAKI,cAAcI;IAC9EJ,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACS,iBAAoBT,KAAKU,KAAK;EAC1D,CAAA;EACAf,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPW,aAAaC,YAAYZ,KAAKC,OAAO,KAAKD,KAAKa,YAAY;IAC7DT,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAO,sBAAA,cAACgB,eAAAA;MAAchB;MAAYiB,MAAMf,KAAKC;;EACvE,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPgB,iBAAiBhB,KAAKiB,WAAW,KAAKjB,KAAKiB,YAAYC,sBAAsBlB,KAAKC,YAAY;IAChGG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAE;AACxB,YAAMqB,qBAAqBC,QACzB,OAAO;QACLxB,IAAIyB,iBAAiBrB,KAAKiB,WAAW;QACrCK,UAAUC,YAAYvB,KAAKiB,WAAW,KAAK;MAC7C,IACA;QAACjB,KAAKiB;OAAY;AAEpB,aAAO,sBAAA,cAACH,eAAAA;QAAchB;QAAYiB,MAAMf,KAAKiB;QAAaE;;IAC5D;EACF,CAAA;EACAxB,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA4CW,aAAaa,cAAcxB,KAAKC,OAAO;IAC5FG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAO,sBAAA,cAAC2B,mBAAAA;MAAkB3B;MAAY4B,UAAU1B,KAAKC;;EAC/E,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAqC2B,QAAQ3B,KAAKC,OAAO;IAClEG,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAAC4B,iBAAAA;MAAgBC,OAAO7B,KAAKC;;EACxD,CAAA;CACD;",
6
- "names": ["React", "useMemo", "Capabilities", "contributes", "createSurface", "isInstanceOf", "getTypename", "SettingsStore", "fullyQualifiedId", "isReactiveObject", "isSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "ASSISTANT_PLUGIN", "role", "filter", "data", "subject", "SettingsStore", "prefix", "component", "AssistantSettings", "settings", "value", "ASSISTANT_DIALOG", "AssistantDialog", "props", "isInstanceOf", "AIChatType", "variant", "ChatContainer", "chat", "isReactiveObject", "companionTo", "assistantChatQueue", "associatedArtifact", "useMemo", "fullyQualifiedId", "typename", "getTypename", "TemplateType", "TemplateContainer", "template", "isSpace", "ServiceRegistry", "space"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/settings.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { create } from '@dxos/live-object';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, AssistantSettingsSchema } from '../types';\n\nexport default () => {\n const settings = create<AssistantSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n schema: AssistantSettingsSchema,\n prefix: ASSISTANT_PLUGIN,\n value: settings,\n });\n};\n"],
5
- "mappings": ";;;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,cAAc;AAKvB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,OAA+B,CAAC,CAAA;AAEjD,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC;IACRC,QAAQC;IACRC,OAAOT;EACT,CAAA;AACF;",
6
- "names": ["Capabilities", "contributes", "create", "settings", "create", "contributes", "Capabilities", "Settings", "schema", "AssistantSettingsSchema", "prefix", "ASSISTANT_PLUGIN", "value"]
7
- }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import { type Space } from '@dxos/client/echo';
3
- export declare const ServiceRegistry: ({ space }: {
4
- space: Space;
5
- }) => React.JSX.Element;
6
- //# sourceMappingURL=ServiceRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/components/ServiceRegistry/ServiceRegistry.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQvD,eAAO,MAAM,eAAe,cAAe;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,sBA+B1D,CAAC"}
@@ -1,8 +0,0 @@
1
- import '@dxos-theme';
2
- import { type Meta, type StoryObj } from '@storybook/react';
3
- import { ServiceRegistry } from './ServiceRegistry';
4
- declare const meta: Meta<typeof ServiceRegistry>;
5
- export default meta;
6
- type Story = StoryObj<typeof ServiceRegistry>;
7
- export declare const Default: Story;
8
- //# sourceMappingURL=ServiceRegistry.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceRegistry.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/ServiceRegistry/ServiceRegistry.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAO5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAwBtC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './ServiceRegistry';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ServiceRegistry/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC"}
@@ -1,5 +0,0 @@
1
- import { type FunctionTrigger } from '@dxos/functions/types';
2
- import { type Client } from '@dxos/react-client';
3
- import { type Space } from '@dxos/react-client/echo';
4
- export declare const invokeFunction: (client: Client, space: Space, trigger: FunctionTrigger, data: any) => Promise<number>;
5
- //# sourceMappingURL=invocation-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"invocation-handler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/invocation-handler.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAgCrD,eAAO,MAAM,cAAc,WAAkB,MAAM,SAAS,KAAK,WAAW,eAAe,QAAQ,GAAG,oBA2BrG,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type Space } from '@dxos/react-client/echo';
2
- export declare const useLocalTriggerManager: (space: Space) => void;
3
- //# sourceMappingURL=useLocalTriggerManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLocalTriggerManager.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useLocalTriggerManager.ts"],"names":[],"mappings":"AAaA,OAAO,EAAU,KAAK,KAAK,EAAY,MAAM,yBAAyB,CAAC;AAMvE,eAAO,MAAM,sBAAsB,UAAW,KAAK,SA8DlD,CAAC"}
@@ -1,49 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type Meta, type StoryObj } from '@storybook/react';
8
- import React from 'react';
9
-
10
- import { useSpace } from '@dxos/react-client/echo';
11
- import { withClientProvider } from '@dxos/react-client/testing';
12
- import { withLayout, withTheme } from '@dxos/storybook-utils';
13
-
14
- import { ServiceRegistry } from './ServiceRegistry';
15
- import { ServiceType } from '../../types';
16
-
17
- const meta: Meta<typeof ServiceRegistry> = {
18
- title: 'plugins/plugin-automation/ServiceRegistry',
19
- component: ServiceRegistry,
20
- render: ({ space: _ignore, ...args }) => {
21
- const space = useSpace();
22
- if (!space) {
23
- return <div />;
24
- }
25
-
26
- return (
27
- <div className='h-full w-[300px] overflow-hidden'>
28
- <ServiceRegistry space={space} {...args} />
29
- </div>
30
- );
31
- },
32
- decorators: [
33
- withClientProvider({
34
- createIdentity: true,
35
- createSpace: true,
36
- types: [ServiceType],
37
- }),
38
- withLayout({ fullscreen: true, tooltips: true, classNames: 'flex justify-center' }),
39
- withTheme,
40
- ],
41
- };
42
-
43
- export default meta;
44
-
45
- type Story = StoryObj<typeof ServiceRegistry>;
46
-
47
- export const Default: Story = {
48
- args: {},
49
- };
@@ -1,76 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import React, { useMemo } from 'react';
6
-
7
- import { Filter, type Space } from '@dxos/client/echo';
8
- import { useQuery } from '@dxos/react-client/echo';
9
- import { Icon, Input, List, ListItem } from '@dxos/react-ui';
10
-
11
- import { useServices } from '../../hooks';
12
- import { categoryIcons, ServiceType } from '../../types';
13
-
14
- // TODO(burdon): Option to show all/enabled/filter.
15
- export const ServiceRegistry = ({ space }: { space: Space }) => {
16
- const matchingServices = useServices(space);
17
- const enabledServices = useQuery(space, Filter.schema(ServiceType));
18
-
19
- // Join matching services with enabled services.
20
- const services = useMemo(() => {
21
- return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
22
- }, [matchingServices, enabledServices]);
23
-
24
- // TODO(burdon): Reaplce with SpacePlugin intent.
25
- const handleSetEnabled = (service: ServiceType, enabled: boolean) => {
26
- if (enabled) {
27
- space.db.add(service);
28
- } else {
29
- // TODO(burdon): Remove or disable?
30
- space.db.remove(service);
31
- }
32
- };
33
-
34
- return (
35
- <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>
36
- {services.map((service) => (
37
- <ServiceItem
38
- key={service.serviceId}
39
- service={service}
40
- enabled={service.enabled}
41
- setEnabled={(enabled) => handleSetEnabled(service, enabled)}
42
- />
43
- ))}
44
- </List>
45
- );
46
- };
47
-
48
- const ServiceItem = ({
49
- service,
50
- enabled,
51
- setEnabled,
52
- }: {
53
- service: ServiceType;
54
- enabled?: boolean;
55
- setEnabled?: (enabled: boolean) => void;
56
- }) => {
57
- return (
58
- <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>
59
- <div className='grid grid-cols-[40px_1fr_40px]'>
60
- <div className='flex gow justify-center items-center'>
61
- <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />
62
- </div>
63
- <div className='grow items-center truncate mie-2'>{service.name}</div>
64
- <div className='flex gow justify-center items-center'>
65
- <Input.Root>
66
- <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />
67
- </Input.Root>
68
- </div>
69
- </div>
70
- <div className='grid grid-cols-[40px_1fr]'>
71
- <div />
72
- <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>
73
- </div>
74
- </ListItem.Root>
75
- );
76
- };
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './ServiceRegistry';
@@ -1,107 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { sleep } from '@dxos/async';
6
- import { getObjectCore, ResultFormat } from '@dxos/echo-db';
7
- import { type AnyObjectData } from '@dxos/echo-schema';
8
- import { FunctionType, getUserFunctionUrlInMetadata } from '@dxos/functions/types';
9
- import { type FunctionTrigger } from '@dxos/functions/types';
10
- import { invariant } from '@dxos/invariant';
11
- import { DXN, LOCAL_SPACE_TAG } from '@dxos/keys';
12
- import { log } from '@dxos/log';
13
- import { type Client, type Config } from '@dxos/react-client';
14
- import { type Space } from '@dxos/react-client/echo';
15
-
16
- const MAX_RETRIES = 3;
17
- const RETRY_DELAY = 1_000;
18
-
19
- const callFunction = async (funcUrl: string, trigger: any, data: any) => {
20
- const body = { event: 'trigger', trigger, data };
21
-
22
- let retryCount = 0;
23
- while (retryCount < MAX_RETRIES) {
24
- log.info('exec', { funcUrl, body, retryCount });
25
- const response = await fetch(funcUrl, {
26
- method: 'POST',
27
- headers: {
28
- 'Content-Type': 'application/json',
29
- },
30
- body: JSON.stringify(body),
31
- });
32
-
33
- const data = await response.text();
34
- log.info('response', { status: response.status, body: data });
35
- if (response.status === 409) {
36
- retryCount++;
37
- await sleep(RETRY_DELAY * Math.min(retryCount, 2));
38
- continue;
39
- }
40
-
41
- return { status: response.status, data };
42
- }
43
- return { status: 500 };
44
- };
45
-
46
- export const invokeFunction = async (client: Client, space: Space, trigger: FunctionTrigger, data: any) => {
47
- try {
48
- invariant(trigger.spec);
49
- invariant(trigger.function);
50
-
51
- const script = await space.db.query({ id: trigger.function }, { format: ResultFormat.Plain }).first();
52
- const { objects: functions } = await space.db
53
- .query({ __typename: FunctionType.typename }, { format: ResultFormat.Plain })
54
- .run();
55
- const func = functions.find((fn) => referenceEquals(fn.source, trigger.function!)) as AnyObjectData | undefined;
56
- const funcSlug = func && getUserFunctionUrlInMetadata(func.__meta);
57
- if (!funcSlug) {
58
- log.warn('function not deployed', { scriptId: script.id, name: script.name });
59
- return 404;
60
- }
61
-
62
- const funcUrl = getFunctionUrl(client.config, funcSlug, space.id);
63
- const triggerData: AnyObjectData = {
64
- ...getObjectCore(trigger).toPlainObject(),
65
- // TODO: Remove when functions can query by DXN.
66
- promptId: trigger.meta?.prompt?.id,
67
- };
68
- // TODO: Remove when functions can add objects and easily modify collections (push, splice).
69
- return (await callFunction(funcUrl, triggerData, data)).status;
70
- } catch (err) {
71
- return 400;
72
- }
73
- };
74
-
75
- const getFunctionUrl = (config: Config, slug: string, spaceId?: string) => {
76
- const baseUrl = new URL('functions/', config.values.runtime?.services?.edge?.url);
77
-
78
- // Leading slashes cause the URL to be treated as an absolute path.
79
- const relativeUrl = slug.replace(/^\//, '');
80
- const url = new URL(`./${relativeUrl}`, baseUrl.toString());
81
- spaceId && url.searchParams.set('spaceId', spaceId);
82
- url.protocol = 'https';
83
- return url.toString();
84
- };
85
-
86
- // TODO(dmaretskyi): Factor out.
87
-
88
- type ReferenceLike = { '/': string } | string;
89
-
90
- const referenceEquals = (a: ReferenceLike, b: ReferenceLike): boolean => {
91
- const aDXN = toDXN(a);
92
- const bDXN = toDXN(b);
93
- return aDXN.toString() === bDXN.toString();
94
- };
95
-
96
- const toDXN = (ref: ReferenceLike): DXN => {
97
- if (typeof ref === 'string') {
98
- if (ref.startsWith('dxn:')) {
99
- return DXN.parse(ref);
100
- } else {
101
- return new DXN(DXN.kind.ECHO, [LOCAL_SPACE_TAG, ref]);
102
- }
103
- }
104
-
105
- invariant(typeof ref['/'] === 'string');
106
- return DXN.parse(ref['/']);
107
- };
@@ -1,82 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { useEffect, useState } from 'react';
6
-
7
- import { Mutex } from '@dxos/async';
8
- import { Context } from '@dxos/context';
9
- import { createSubscriptionTrigger, type TriggerFactory } from '@dxos/functions';
10
- import { FunctionTrigger } from '@dxos/functions/types';
11
- import { invariant } from '@dxos/invariant';
12
- import { log } from '@dxos/log';
13
- import { useClient } from '@dxos/react-client';
14
- import { Filter, type Space, useQuery } from '@dxos/react-client/echo';
15
-
16
- import { invokeFunction } from './invocation-handler';
17
-
18
- const registerTriggersMutex = new Mutex();
19
-
20
- export const useLocalTriggerManager = (space: Space) => {
21
- const client = useClient();
22
-
23
- // TODO(burdon): Factor out, creating context for plugin (runs outside of component).
24
- const [registry] = useState(new Map<string, Context>());
25
- const triggers = useQuery(space, Filter.schema(FunctionTrigger));
26
- useEffect(() => {
27
- setTimeout(async () => {
28
- // Mark-and-sweep removing disabled triggers.
29
- await registerTriggersMutex.executeSynchronized(async () => {
30
- const deprecated = new Set(Array.from(registry.keys()));
31
- log('triggers', {
32
- deprecated,
33
- all: triggers.map((t) => t.id),
34
- enabled: triggers.filter((t) => t.enabled).map((t) => t.id),
35
- });
36
-
37
- for (const trigger of triggers) {
38
- if (trigger.enabled) {
39
- if (registry.has(trigger.id)) {
40
- deprecated.delete(trigger.id);
41
- continue;
42
- }
43
- log.info('activating trigger', trigger.id);
44
-
45
- const ctx = new Context();
46
- registry.set(trigger.id, ctx);
47
- const triggerSpec = trigger.spec;
48
- invariant(triggerSpec);
49
-
50
- let triggerFactory: TriggerFactory<any>;
51
- if (triggerSpec.type === 'subscription') {
52
- triggerFactory = createSubscriptionTrigger;
53
- } else {
54
- log.info('unsupported trigger', { type: triggerSpec.type });
55
- continue;
56
- }
57
-
58
- await triggerFactory(ctx, space, trigger.spec, (data: any) => {
59
- return invokeFunction(client, space, trigger, data);
60
- });
61
- }
62
- }
63
-
64
- for (const id of deprecated) {
65
- const ctx = registry.get(id);
66
- if (ctx) {
67
- await ctx.dispose();
68
- registry.delete(id);
69
- }
70
- }
71
- });
72
- });
73
- }, [JSON.stringify(triggers)]);
74
-
75
- useEffect(() => {
76
- return () => {
77
- for (const ctx of registry.values()) {
78
- void ctx.dispose();
79
- }
80
- };
81
- }, []);
82
- };