@dxos/plugin-assistant 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (192) hide show
  1. package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs → AssistantDialog-DTWVEQBB.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs → ChatContainer-ZNKENYKZ.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-5PRCXI7N.mjs} +3 -3
  4. package/dist/lib/browser/ai-client-5PRCXI7N.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-builder-GU6ZWSP4.mjs → app-graph-builder-HTK3HFGM.mjs} +72 -92
  6. package/dist/lib/browser/app-graph-builder-HTK3HFGM.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-5P7U35RJ.mjs +192 -0
  8. package/dist/lib/browser/chunk-5P7U35RJ.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SBFJKCVU.mjs → chunk-7VDZP5WX.mjs} +24 -69
  10. package/dist/lib/browser/chunk-7VDZP5WX.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FQ4L5NYW.mjs → chunk-OWZHLWW5.mjs} +115 -129
  12. package/dist/lib/browser/chunk-OWZHLWW5.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +8 -8
  14. package/dist/lib/browser/index.mjs.map +2 -2
  15. package/dist/lib/browser/{intent-resolver-YAQELTFQ.mjs → intent-resolver-QV5AAVJZ.mjs} +4 -9
  16. package/dist/lib/browser/intent-resolver-QV5AAVJZ.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-JOATHBJ4.mjs → react-surface-JJPYWEIN.mjs} +9 -18
  19. package/dist/lib/browser/react-surface-JJPYWEIN.mjs.map +7 -0
  20. package/dist/lib/browser/{settings-PAJLJEVW.mjs → settings-OZX7J65A.mjs} +2 -2
  21. package/dist/lib/browser/types/index.mjs +3 -1
  22. package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs → AssistantDialog-RJJHZI63.cjs} +7 -7
  23. package/dist/lib/node/{ChatContainer-UWYNOALW.cjs → ChatContainer-WVAAOEOH.cjs} +7 -7
  24. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-OUPSRQT7.cjs} +6 -6
  25. package/dist/lib/node/ai-client-OUPSRQT7.cjs.map +7 -0
  26. package/dist/lib/node/{app-graph-builder-CEMLCKAF.cjs → app-graph-builder-LEO63CZZ.cjs} +74 -94
  27. package/dist/lib/node/app-graph-builder-LEO63CZZ.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-KWBQ5P7D.cjs → chunk-GQ3XS5FZ.cjs} +28 -69
  29. package/dist/lib/node/chunk-GQ3XS5FZ.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-ENBPNIJZ.cjs → chunk-OOHFSPWR.cjs} +122 -129
  31. package/dist/lib/node/chunk-OOHFSPWR.cjs.map +7 -0
  32. package/dist/lib/node/chunk-VG2UQY4S.cjs +216 -0
  33. package/dist/lib/node/chunk-VG2UQY4S.cjs.map +7 -0
  34. package/dist/lib/node/index.cjs +41 -41
  35. package/dist/lib/node/index.cjs.map +3 -3
  36. package/dist/lib/node/{intent-resolver-RNMYSJ3E.cjs → intent-resolver-QDGZMWLY.cjs} +10 -15
  37. package/dist/lib/node/intent-resolver-QDGZMWLY.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7RIXMLMN.cjs → react-surface-XNEIJJYJ.cjs} +22 -30
  40. package/dist/lib/node/react-surface-XNEIJJYJ.cjs.map +7 -0
  41. package/dist/lib/node/{settings-JBEYMZ4S.cjs → settings-WLTC7XO5.cjs} +6 -6
  42. package/dist/lib/node/types/index.cjs +14 -12
  43. package/dist/lib/node/types/index.cjs.map +2 -2
  44. package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs → AssistantDialog-D33WZUGR.mjs} +3 -3
  45. package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs → ChatContainer-FAYGNMQW.mjs} +3 -3
  46. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-RZQWEDUX.mjs} +3 -3
  47. package/dist/lib/node-esm/ai-client-RZQWEDUX.mjs.map +7 -0
  48. package/dist/lib/node-esm/{app-graph-builder-Y45WYAWL.mjs → app-graph-builder-WXJNZDYB.mjs} +72 -92
  49. package/dist/lib/node-esm/app-graph-builder-WXJNZDYB.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-PFWTW22U.mjs → chunk-74GFINWJ.mjs} +24 -69
  51. package/dist/lib/node-esm/chunk-74GFINWJ.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-JE47GNTB.mjs → chunk-ED55ZE4G.mjs} +115 -129
  53. package/dist/lib/node-esm/chunk-ED55ZE4G.mjs.map +7 -0
  54. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs +193 -0
  55. package/dist/lib/node-esm/chunk-UZWYXNR5.mjs.map +7 -0
  56. package/dist/lib/node-esm/index.mjs +8 -8
  57. package/dist/lib/node-esm/index.mjs.map +2 -2
  58. package/dist/lib/node-esm/{intent-resolver-V2ZFI5C4.mjs → intent-resolver-Q3I6S6HN.mjs} +4 -9
  59. package/dist/lib/node-esm/intent-resolver-Q3I6S6HN.mjs.map +7 -0
  60. package/dist/lib/node-esm/meta.json +1 -1
  61. package/dist/lib/node-esm/{react-surface-UUHNOYST.mjs → react-surface-RI3JONQY.mjs} +9 -18
  62. package/dist/lib/node-esm/react-surface-RI3JONQY.mjs.map +7 -0
  63. package/dist/lib/node-esm/{settings-KAMA6RIY.mjs → settings-CLE57WEP.mjs} +2 -2
  64. package/dist/lib/node-esm/types/index.mjs +3 -1
  65. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  66. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  68. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/index.d.ts +3 -179
  70. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  73. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  74. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  75. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  76. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  77. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  78. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  79. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  80. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  81. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  83. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  84. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  87. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  89. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  90. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  91. package/dist/types/src/components/index.d.ts +0 -1
  92. package/dist/types/src/components/index.d.ts.map +1 -1
  93. package/dist/types/src/hooks/index.d.ts +0 -1
  94. package/dist/types/src/hooks/index.d.ts.map +1 -1
  95. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  96. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  97. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  98. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  99. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  100. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  101. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  102. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  103. package/dist/types/src/tools/function.d.ts +2 -2
  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 +6 -60
  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/dist/types/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +64 -58
  116. package/src/AssistantPlugin.tsx +2 -2
  117. package/src/capabilities/ai-client.ts +4 -5
  118. package/src/capabilities/app-graph-builder.ts +167 -131
  119. package/src/capabilities/index.ts +1 -1
  120. package/src/capabilities/intent-resolver.ts +2 -5
  121. package/src/capabilities/react-surface.tsx +6 -19
  122. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  123. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  124. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  125. package/src/components/Prompt/PromptBar.tsx +4 -12
  126. package/src/components/PromptSettings.tsx +2 -2
  127. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  128. package/src/components/Thread/Thread.stories.tsx +12 -15
  129. package/src/components/Thread/ThreadContainer.stories.tsx +9 -9
  130. package/src/components/Thread/ThreadMessage.tsx +6 -3
  131. package/src/components/Toolbox/Toolbox.stories.tsx +2 -2
  132. package/src/components/Toolbox/Toolbox.tsx +3 -3
  133. package/src/components/index.ts +0 -1
  134. package/src/hooks/index.ts +0 -1
  135. package/src/hooks/processor.ts +25 -2
  136. package/src/hooks/useChatProcessor.tsx +7 -6
  137. package/src/hooks/useContextProvider.ts +20 -16
  138. package/src/hooks/useMessageQueue.ts +2 -2
  139. package/src/tools/function.ts +4 -6
  140. package/src/tools/openapi.ts +4 -3
  141. package/src/translations.ts +1 -1
  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/ai-client-CDZLSNXE.mjs.map +0 -7
  146. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-FQ4L5NYW.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  149. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +0 -7
  151. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +0 -7
  152. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +0 -7
  153. package/dist/lib/node/ai-client-URCCYU6B.cjs.map +0 -7
  154. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +0 -7
  155. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  156. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  157. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +0 -7
  158. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +0 -7
  159. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +0 -7
  160. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +0 -7
  161. package/dist/lib/node-esm/ai-client-WMHS5EGV.mjs.map +0 -7
  162. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +0 -7
  163. package/dist/lib/node-esm/chunk-JE47GNTB.mjs.map +0 -7
  164. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  165. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  166. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +0 -7
  167. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +0 -7
  168. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +0 -7
  169. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  170. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  171. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  172. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  173. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  174. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  175. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  176. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  177. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  178. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  179. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  180. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  181. package/src/components/ServiceRegistry/index.ts +0 -5
  182. package/src/hooks/invocation-handler.ts +0 -107
  183. package/src/hooks/useLocalTriggerManager.ts +0 -82
  184. /package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs.map → AssistantDialog-DTWVEQBB.mjs.map} +0 -0
  185. /package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs.map → ChatContainer-ZNKENYKZ.mjs.map} +0 -0
  186. /package/dist/lib/browser/{settings-PAJLJEVW.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  187. /package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs.map → AssistantDialog-RJJHZI63.cjs.map} +0 -0
  188. /package/dist/lib/node/{ChatContainer-UWYNOALW.cjs.map → ChatContainer-WVAAOEOH.cjs.map} +0 -0
  189. /package/dist/lib/node/{settings-JBEYMZ4S.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  190. /package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs.map → AssistantDialog-D33WZUGR.mjs.map} +0 -0
  191. /package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs.map → ChatContainer-FAYGNMQW.mjs.map} +0 -0
  192. /package/dist/lib/node-esm/{settings-KAMA6RIY.mjs.map → settings-CLE57WEP.mjs.map} +0 -0
@@ -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 { live, 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: live(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: live(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,MAAMC,kBAAkB;AAIjC,IAAA,0BAAe,MAAM;EACnBC,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBC;IACxBC,SAAS,CAAC,EAAEC,SAASC,KAAI,OAAQ;MAC/BC,MAAM;QACJC,QAAQC,KAAKC,YAAY;UACvBC,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,KAAKY,cAAc;UAAEf;UAAMQ,MAAM;YAAEQ,SAAS;UAAS;UAAGC,QAAQ;QAAkB,CAAA;MAC5F;IACF;EACF,CAAA,CAAA;;",
6
- "names": ["Capabilities", "contributes", "createResolver", "ObjectId", "DXN", "QueueSubspaceTags", "live", "refFromDXN", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AssistantAction", "CreateChat", "resolve", "spaceId", "name", "data", "object", "live", "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, getTypename } from '@dxos/echo-schema';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { fullyQualifiedId, getSpace, isLiveObject, isSpace, type Space, type SpaceId } from '@dxos/react-client/echo';\n\nimport {\n AssistantDialog,\n AssistantSettings,\n ChatContainer,\n PromptSettings,\n ServiceRegistry,\n TemplateContainer,\n} 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 isLiveObject(data.companionTo) &&\n (data as any).companionTo.assistantChatQueue &&\n 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 spaceId: (getSpace(data.companionTo)?.id ?? 'unknown') as SpaceId,\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 createSurface({\n id: `${ASSISTANT_PLUGIN}/prompt-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: TemplateType } => isInstanceOf(TemplateType, data.subject),\n component: ({ data }) => <PromptSettings template={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,SAASC,eAAe;AAE/B,SAASC,cAAcC,aAAaC,qBAAqB;AACzD,SAASC,cAAcC,mBAAmB;AAC1C,SAASC,qBAAqB;AAC9B,SAASC,kBAAkBC,UAAUC,cAAcC,eAAyC;AAa5F,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,aAAahB,KAAKiB,WAAW,KAC5BjB,KAAaiB,YAAYC,sBAC1BlB,KAAKC,YAAY;IACnBG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAE;AACxB,YAAMqB,qBAAqBC,QACzB,OAAO;QACLxB,IAAIyB,iBAAiBrB,KAAKiB,WAAW;QACrCK,UAAUC,YAAYvB,KAAKiB,WAAW,KAAK;QAC3CO,SAAUC,SAASzB,KAAKiB,WAAW,GAAGrB,MAAM;MAC9C,IACA;QAACI,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,aAAae,cAAc1B,KAAKC,OAAO;IAC5FG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAO,sBAAA,cAAC6B,mBAAAA;MAAkB7B;MAAY8B,UAAU5B,KAAKC;;EAC/E,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAqC6B,QAAQ7B,KAAKC,OAAO;IAClEG,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAAC8B,iBAAAA;MAAgBC,OAAO/B,KAAKC;;EACxD,CAAA;EACAN,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA4CW,aAAae,cAAc1B,KAAKC,OAAO;IAC5FG,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACgC,gBAAAA;MAAeJ,UAAU5B,KAAKC;;EAC1D,CAAA;CACD;",
6
- "names": ["React", "useMemo", "Capabilities", "contributes", "createSurface", "isInstanceOf", "getTypename", "SettingsStore", "fullyQualifiedId", "getSpace", "isLiveObject", "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", "isLiveObject", "companionTo", "assistantChatQueue", "associatedArtifact", "useMemo", "fullyQualifiedId", "typename", "getTypename", "spaceId", "getSpace", "TemplateType", "TemplateContainer", "template", "isSpace", "ServiceRegistry", "space", "PromptSettings"]
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
- };