@dxos/plugin-assistant 0.8.2-main.12df754 → 0.8.2-main.30e4dbb

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 (185) hide show
  1. package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs → AssistantDialog-BUHPFIHN.mjs} +3 -3
  2. package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs → ChatContainer-X7JBCLFK.mjs} +3 -3
  3. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs → ai-client-OK5SMYJC.mjs} +1 -1
  4. package/dist/lib/browser/{ai-client-CDZLSNXE.mjs.map → ai-client-OK5SMYJC.mjs.map} +2 -2
  5. package/dist/lib/browser/{app-graph-builder-GU6ZWSP4.mjs → app-graph-builder-JJCBQZGC.mjs} +7 -37
  6. package/dist/lib/browser/app-graph-builder-JJCBQZGC.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-PFIXSSN2.mjs} +24 -69
  10. package/dist/lib/browser/chunk-PFIXSSN2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FQ4L5NYW.mjs → chunk-QGZETTI3.mjs} +111 -121
  12. package/dist/lib/browser/chunk-QGZETTI3.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-54SA6LXM.mjs} +4 -4
  16. package/dist/lib/browser/intent-resolver-54SA6LXM.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{react-surface-JOATHBJ4.mjs → react-surface-JSHNKGXY.mjs} +9 -18
  19. package/dist/lib/browser/react-surface-JSHNKGXY.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-XIAFCAGB.cjs} +7 -7
  23. package/dist/lib/node/{ChatContainer-UWYNOALW.cjs → ChatContainer-MAGI5QD6.cjs} +7 -7
  24. package/dist/lib/node/{ai-client-URCCYU6B.cjs → ai-client-3EVTLXTT.cjs} +4 -4
  25. package/dist/lib/node/{ai-client-URCCYU6B.cjs.map → ai-client-3EVTLXTT.cjs.map} +2 -2
  26. package/dist/lib/node/{app-graph-builder-CEMLCKAF.cjs → app-graph-builder-7EJJHBRH.cjs} +14 -44
  27. package/dist/lib/node/app-graph-builder-7EJJHBRH.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-ENBPNIJZ.cjs → chunk-EWY6HDMS.cjs} +118 -121
  29. package/dist/lib/node/chunk-EWY6HDMS.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-KWBQ5P7D.cjs → chunk-V4WPZXN2.cjs} +28 -69
  31. package/dist/lib/node/chunk-V4WPZXN2.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-UP5FPVWP.cjs} +11 -11
  37. package/dist/lib/node/intent-resolver-UP5FPVWP.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7RIXMLMN.cjs → react-surface-M3OXAXKR.cjs} +22 -30
  40. package/dist/lib/node/react-surface-M3OXAXKR.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-SDGQK5TF.mjs} +3 -3
  45. package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs → ChatContainer-AM4BDTXU.mjs} +3 -3
  46. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs → ai-client-LYCBXZI7.mjs} +1 -1
  47. package/dist/lib/node-esm/{ai-client-WMHS5EGV.mjs.map → ai-client-LYCBXZI7.mjs.map} +2 -2
  48. package/dist/lib/node-esm/{app-graph-builder-Y45WYAWL.mjs → app-graph-builder-ZDI7EVEN.mjs} +7 -37
  49. package/dist/lib/node-esm/app-graph-builder-ZDI7EVEN.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-JE47GNTB.mjs → chunk-RDU7QEFL.mjs} +111 -121
  51. package/dist/lib/node-esm/chunk-RDU7QEFL.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-PFWTW22U.mjs → chunk-RN3I3BVC.mjs} +24 -69
  53. package/dist/lib/node-esm/chunk-RN3I3BVC.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-JKWFZYLN.mjs} +4 -4
  59. package/dist/lib/node-esm/intent-resolver-JKWFZYLN.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-RZBDBP42.mjs} +9 -18
  62. package/dist/lib/node-esm/react-surface-RZBDBP42.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.map +1 -1
  66. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/index.d.ts +1 -1
  68. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  70. package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
  71. package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
  72. package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
  73. package/dist/types/src/components/Prompt/autocomplete.d.ts.map +1 -1
  74. package/dist/types/src/components/Prompt/references.d.ts.map +1 -1
  75. package/dist/types/src/components/PromptSettings.d.ts.map +1 -1
  76. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  77. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  78. package/dist/types/src/components/TemplateEditor/TemplateEditor.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -2
  80. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  81. package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
  82. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  83. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts +2 -2
  84. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/ToolInvocations.d.ts.map +1 -1
  86. package/dist/types/src/components/Toolbox/Toolbox.d.ts +1 -1
  87. package/dist/types/src/components/Toolbox/Toolbox.d.ts.map +1 -1
  88. package/dist/types/src/components/index.d.ts +0 -1
  89. package/dist/types/src/components/index.d.ts.map +1 -1
  90. package/dist/types/src/hooks/index.d.ts +0 -1
  91. package/dist/types/src/hooks/index.d.ts.map +1 -1
  92. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  93. package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
  94. package/dist/types/src/hooks/useContextProvider.d.ts +1 -1
  95. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  96. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  97. package/dist/types/src/hooks/useServices.d.ts.map +1 -1
  98. package/dist/types/src/hooks/useTextInputEvents.d.ts.map +1 -1
  99. package/dist/types/src/testing/test-functions.d.ts.map +1 -1
  100. package/dist/types/src/tools/function.d.ts +2 -2
  101. package/dist/types/src/tools/function.d.ts.map +1 -1
  102. package/dist/types/src/tools/openapi.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +6 -60
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types/service.d.ts +96 -95
  106. package/dist/types/src/types/service.d.ts.map +1 -1
  107. package/dist/types/src/types/template.d.ts +52 -52
  108. package/dist/types/src/types/template.d.ts.map +1 -1
  109. package/dist/types/src/types/types.d.ts +20 -18
  110. package/dist/types/src/types/types.d.ts.map +1 -1
  111. package/dist/types/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +61 -58
  113. package/src/AssistantPlugin.tsx +2 -2
  114. package/src/capabilities/ai-client.ts +0 -1
  115. package/src/capabilities/app-graph-builder.ts +4 -28
  116. package/src/capabilities/index.ts +1 -1
  117. package/src/capabilities/intent-resolver.ts +2 -2
  118. package/src/capabilities/react-surface.tsx +6 -19
  119. package/src/components/AmbientDialog/AmbientDialog.stories.tsx +1 -1
  120. package/src/components/AssistantSettings/AssistantSettings.tsx +28 -6
  121. package/src/components/Prompt/Prompt.stories.tsx +1 -1
  122. package/src/components/Prompt/PromptBar.tsx +4 -12
  123. package/src/components/PromptSettings.tsx +2 -2
  124. package/src/components/TemplateEditor/TemplateForm.tsx +2 -2
  125. package/src/components/Thread/Thread.stories.tsx +12 -15
  126. package/src/components/Thread/ThreadContainer.stories.tsx +9 -9
  127. package/src/components/Thread/ThreadMessage.tsx +6 -3
  128. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  129. package/src/components/Toolbox/Toolbox.tsx +1 -1
  130. package/src/components/index.ts +0 -1
  131. package/src/hooks/index.ts +0 -1
  132. package/src/hooks/processor.ts +25 -2
  133. package/src/hooks/useChatProcessor.tsx +5 -4
  134. package/src/hooks/useContextProvider.ts +9 -9
  135. package/src/tools/function.ts +4 -6
  136. package/src/tools/openapi.ts +4 -3
  137. package/src/translations.ts +1 -1
  138. package/src/types/service.ts +39 -37
  139. package/src/types/template.ts +27 -25
  140. package/src/types/types.ts +20 -17
  141. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +0 -7
  142. package/dist/lib/browser/chunk-FQ4L5NYW.mjs.map +0 -7
  143. package/dist/lib/browser/chunk-IAMR2FAE.mjs +0 -183
  144. package/dist/lib/browser/chunk-IAMR2FAE.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +0 -7
  146. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +0 -7
  147. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +0 -7
  148. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +0 -7
  149. package/dist/lib/node/chunk-APRU3QWK.cjs +0 -206
  150. package/dist/lib/node/chunk-APRU3QWK.cjs.map +0 -7
  151. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +0 -7
  152. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +0 -7
  153. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +0 -7
  154. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +0 -7
  155. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-JE47GNTB.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs +0 -184
  158. package/dist/lib/node-esm/chunk-MXK2EANZ.mjs.map +0 -7
  159. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +0 -7
  160. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +0 -7
  161. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +0 -7
  162. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts +0 -6
  163. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +0 -1
  164. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts +0 -8
  165. package/dist/types/src/components/ServiceRegistry/ServiceRegistry.stories.d.ts.map +0 -1
  166. package/dist/types/src/components/ServiceRegistry/index.d.ts +0 -2
  167. package/dist/types/src/components/ServiceRegistry/index.d.ts.map +0 -1
  168. package/dist/types/src/hooks/invocation-handler.d.ts +0 -5
  169. package/dist/types/src/hooks/invocation-handler.d.ts.map +0 -1
  170. package/dist/types/src/hooks/useLocalTriggerManager.d.ts +0 -3
  171. package/dist/types/src/hooks/useLocalTriggerManager.d.ts.map +0 -1
  172. package/src/components/ServiceRegistry/ServiceRegistry.stories.tsx +0 -49
  173. package/src/components/ServiceRegistry/ServiceRegistry.tsx +0 -76
  174. package/src/components/ServiceRegistry/index.ts +0 -5
  175. package/src/hooks/invocation-handler.ts +0 -107
  176. package/src/hooks/useLocalTriggerManager.ts +0 -82
  177. /package/dist/lib/browser/{AssistantDialog-77B4BSXR.mjs.map → AssistantDialog-BUHPFIHN.mjs.map} +0 -0
  178. /package/dist/lib/browser/{ChatContainer-4AMJKO3T.mjs.map → ChatContainer-X7JBCLFK.mjs.map} +0 -0
  179. /package/dist/lib/browser/{settings-PAJLJEVW.mjs.map → settings-OZX7J65A.mjs.map} +0 -0
  180. /package/dist/lib/node/{AssistantDialog-7V7RRSIL.cjs.map → AssistantDialog-XIAFCAGB.cjs.map} +0 -0
  181. /package/dist/lib/node/{ChatContainer-UWYNOALW.cjs.map → ChatContainer-MAGI5QD6.cjs.map} +0 -0
  182. /package/dist/lib/node/{settings-JBEYMZ4S.cjs.map → settings-WLTC7XO5.cjs.map} +0 -0
  183. /package/dist/lib/node-esm/{AssistantDialog-N24M73FW.mjs.map → AssistantDialog-SDGQK5TF.mjs.map} +0 -0
  184. /package/dist/lib/node-esm/{ChatContainer-KPWY5UK4.mjs.map → ChatContainer-AM4BDTXU.mjs.map} +0 -0
  185. /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
- };