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

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 (122) hide show
  1. package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs → AssistantDialog-77B4BSXR.mjs} +2 -2
  2. package/dist/lib/browser/{ChatContainer-V5GP7DYF.mjs → ChatContainer-4AMJKO3T.mjs} +2 -2
  3. package/dist/lib/browser/ChatContainer-4AMJKO3T.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/{app-graph-builder-MF5EVDWW.mjs → app-graph-builder-GU6ZWSP4.mjs} +7 -7
  7. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-FQ4L5NYW.mjs} +43 -18
  9. package/dist/lib/browser/{chunk-FMB7RGMP.mjs.map → chunk-FQ4L5NYW.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-KYMKVE6M.mjs → chunk-SBFJKCVU.mjs} +78 -18
  11. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +7 -0
  12. package/dist/lib/browser/index.mjs +8 -5
  13. package/dist/lib/browser/index.mjs.map +2 -2
  14. package/dist/lib/browser/{intent-resolver-WJGLKKVO.mjs → intent-resolver-YAQELTFQ.mjs} +4 -4
  15. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +7 -0
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{react-surface-57VRDOQT.mjs → react-surface-JOATHBJ4.mjs} +17 -8
  18. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +7 -0
  19. package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-PAJLJEVW.mjs} +3 -3
  20. package/dist/lib/browser/settings-PAJLJEVW.mjs.map +7 -0
  21. package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs → AssistantDialog-7V7RRSIL.cjs} +6 -6
  22. package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-UWYNOALW.cjs} +6 -6
  23. package/dist/lib/node/ChatContainer-UWYNOALW.cjs.map +7 -0
  24. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs +52 -0
  25. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs.map +7 -0
  26. package/dist/lib/node/{app-graph-builder-N5ZUUI2Z.cjs → app-graph-builder-CEMLCKAF.cjs} +8 -8
  27. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-ENBPNIJZ.cjs} +57 -32
  29. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-ZKOC4ZFY.cjs → chunk-KWBQ5P7D.cjs} +81 -23
  31. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +7 -0
  32. package/dist/lib/node/index.cjs +22 -19
  33. package/dist/lib/node/index.cjs.map +2 -2
  34. package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-RNMYSJ3E.cjs} +6 -6
  35. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +7 -0
  36. package/dist/lib/node/meta.json +1 -1
  37. package/dist/lib/node/{react-surface-NUQTM6MS.cjs → react-surface-7RIXMLMN.cjs} +23 -15
  38. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +7 -0
  39. package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-JBEYMZ4S.cjs} +5 -5
  40. package/dist/lib/node/settings-JBEYMZ4S.cjs.map +7 -0
  41. package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs → AssistantDialog-N24M73FW.mjs} +2 -2
  42. package/dist/lib/node-esm/{ChatContainer-QW3OOXTT.mjs → ChatContainer-KPWY5UK4.mjs} +2 -2
  43. package/dist/lib/node-esm/ChatContainer-KPWY5UK4.mjs.map +7 -0
  44. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs +23 -0
  45. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs.map +7 -0
  46. package/dist/lib/node-esm/{app-graph-builder-DWBNIMHM.mjs → app-graph-builder-Y45WYAWL.mjs} +7 -7
  47. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-JE47GNTB.mjs} +43 -18
  49. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs.map → chunk-JE47GNTB.mjs.map} +3 -3
  50. package/dist/lib/node-esm/{chunk-GBBXIW5F.mjs → chunk-PFWTW22U.mjs} +78 -18
  51. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +7 -0
  52. package/dist/lib/node-esm/index.mjs +8 -5
  53. package/dist/lib/node-esm/index.mjs.map +2 -2
  54. package/dist/lib/node-esm/{intent-resolver-H32TL4X6.mjs → intent-resolver-V2ZFI5C4.mjs} +4 -4
  55. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +7 -0
  56. package/dist/lib/node-esm/meta.json +1 -1
  57. package/dist/lib/node-esm/{react-surface-JBVZF6CP.mjs → react-surface-UUHNOYST.mjs} +17 -8
  58. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +7 -0
  59. package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-KAMA6RIY.mjs} +3 -3
  60. package/dist/lib/node-esm/settings-KAMA6RIY.mjs.map +7 -0
  61. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  63. package/dist/types/src/components/ChatContainer.d.ts +4 -3
  64. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  65. package/dist/types/src/components/PromptSettings.d.ts +6 -0
  66. package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
  67. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  68. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/index.d.ts +2 -5
  71. package/dist/types/src/components/index.d.ts.map +1 -1
  72. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  73. package/dist/types/src/hooks/useMessageQueue.d.ts +0 -3
  74. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  75. package/dist/types/src/translations.d.ts +3 -0
  76. package/dist/types/src/translations.d.ts.map +1 -1
  77. package/package.json +57 -57
  78. package/src/capabilities/app-graph-builder.ts +5 -13
  79. package/src/capabilities/intent-resolver.ts +3 -3
  80. package/src/capabilities/react-surface.tsx +20 -5
  81. package/src/capabilities/settings.ts +2 -2
  82. package/src/components/ChatContainer.tsx +6 -8
  83. package/src/components/PromptSettings.tsx +91 -0
  84. package/src/components/TemplateContainer.tsx +3 -79
  85. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  86. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  87. package/src/components/Thread/ThreadContainer.stories.tsx +9 -18
  88. package/src/components/Thread/ThreadContainer.tsx +24 -2
  89. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  90. package/src/components/index.ts +1 -0
  91. package/src/hooks/processor.ts +1 -2
  92. package/src/hooks/useChatProcessor.tsx +1 -1
  93. package/src/testing/test-services.ts +6 -6
  94. package/src/translations.ts +4 -3
  95. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
  96. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
  97. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
  98. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
  100. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
  101. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
  102. package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
  103. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
  104. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
  105. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
  106. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
  107. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
  108. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
  109. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
  110. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
  111. package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
  112. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
  113. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
  114. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
  115. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
  116. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
  117. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
  118. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
  119. package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
  120. /package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs.map → AssistantDialog-77B4BSXR.mjs.map} +0 -0
  121. /package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs.map → AssistantDialog-7V7RRSIL.cjs.map} +0 -0
  122. /package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs.map → AssistantDialog-N24M73FW.mjs.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ThreadContainer
3
- } from "./chunk-FMB7RGMP.mjs";
3
+ } from "./chunk-FQ4L5NYW.mjs";
4
4
  import "./chunk-TXJWGWJ7.mjs";
5
5
  import "./chunk-IAMR2FAE.mjs";
6
6
  import {
@@ -114,4 +114,4 @@ export {
114
114
  AssistantDialog,
115
115
  AssistantDialog_default as default
116
116
  };
117
- //# sourceMappingURL=AssistantDialog-YSHMAHW5.mjs.map
117
+ //# sourceMappingURL=AssistantDialog-77B4BSXR.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ThreadContainer
3
- } from "./chunk-FMB7RGMP.mjs";
3
+ } from "./chunk-FQ4L5NYW.mjs";
4
4
  import "./chunk-TXJWGWJ7.mjs";
5
5
  import "./chunk-IAMR2FAE.mjs";
6
6
  import {
@@ -30,4 +30,4 @@ export {
30
30
  ChatContainer,
31
31
  ChatContainer_default as default
32
32
  };
33
- //# sourceMappingURL=ChatContainer-V5GP7DYF.mjs.map
33
+ //# sourceMappingURL=ChatContainer-4AMJKO3T.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ChatContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { Capabilities, useCapabilities, useCapability } from '@dxos/app-framework';\nimport { type AssociatedArtifact } from '@dxos/artifact';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\nexport type ChatContainerProps = {\n role: string;\n chat: AIChatType;\n associatedArtifact?: AssociatedArtifact;\n};\n\n// TODO(burdon): Attention.\nexport const ChatContainer: FC<ChatContainerProps> = ({ role, chat, associatedArtifact }) => {\n const transcription = useCapabilities(TranscriptionCapabilities.Transcriber).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <ThreadContainer\n chat={chat}\n settings={settings}\n transcription={transcription}\n associatedArtifact={associatedArtifact}\n />\n </StackItem.Content>\n );\n};\n\nexport default ChatContainer;\n"],
5
+ "mappings": ";;;;;;;;;;AAIA,OAAOA,WAAwB;AAE/B,SAASC,cAAcC,iBAAiBC,qBAAqB;AAE7D,SAASC,iCAAiC;AAC1C,SAASC,iBAAiB;AAanB,IAAMC,gBAAwC,CAAC,EAAEC,MAAMC,MAAMC,mBAAkB,MAAE;AACtF,QAAMC,gBAAgBC,gBAAgBC,0BAA0BC,WAAW,EAAEC,SAAS;AACtF,QAAMC,WAAWC,cAAcC,aAAaC,aAAa,EAAEC,SAAiCC,gBAAAA,GAAmBC;AAE/G,SACE,sBAAA,cAACC,UAAUC,SAAO;IAAChB;IAAYiB,YAAW;KACxC,sBAAA,cAACC,iBAAAA;IACCjB;IACAO;IACAL;IACAD;;AAIR;AAEA,IAAA,wBAAeH;",
6
+ "names": ["React", "Capabilities", "useCapabilities", "useCapability", "TranscriptionCapabilities", "StackItem", "ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "StackItem", "Content", "classNames", "ThreadContainer"]
7
+ }
@@ -0,0 +1,22 @@
1
+ import {
2
+ TemplateEditor
3
+ } from "./chunk-NFUHCW2J.mjs";
4
+ import "./chunk-3HCI5FIL.mjs";
5
+
6
+ // packages/plugins/plugin-assistant/src/components/TemplateContainer.tsx
7
+ import React from "react";
8
+ import { StackItem } from "@dxos/react-ui-stack";
9
+ var TemplateContainer = ({ template, role }) => {
10
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
11
+ role,
12
+ classNames: "container-max-width"
13
+ }, /* @__PURE__ */ React.createElement(TemplateEditor, {
14
+ template
15
+ }));
16
+ };
17
+ var TemplateContainer_default = TemplateContainer;
18
+ export {
19
+ TemplateContainer,
20
+ TemplateContainer_default as default
21
+ };
22
+ //# sourceMappingURL=TemplateContainer-WKU5XFSO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/TemplateContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { type TemplateType } from '../types';\n\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\n return (\n <StackItem.Content role={role} classNames='container-max-width'>\n <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,iBAAiB;AAKnB,IAAMC,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,SACE,sBAAA,cAACC,UAAUC,SAAO;IAACF;IAAYG,YAAW;KACxC,sBAAA,cAACC,gBAAAA;IAAeL;;AAGtB;AAEA,IAAA,4BAAeD;",
6
+ "names": ["React", "StackItem", "TemplateContainer", "template", "role", "StackItem", "Content", "classNames", "TemplateEditor"]
7
+ }
@@ -15,8 +15,8 @@ import { ClientCapabilities } from "@dxos/plugin-client";
15
15
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
16
16
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
17
17
  import { memoizeQuery } from "@dxos/plugin-space";
18
- import { SpaceAction } from "@dxos/plugin-space/types";
19
- import { Filter, fullyQualifiedId, getSpace, isSpace, isReactiveObject, parseId } from "@dxos/react-client/echo";
18
+ import { SPACE_TYPE, SpaceAction } from "@dxos/plugin-space/types";
19
+ import { Filter, fullyQualifiedId, getSpace, isLiveObject, parseId } from "@dxos/react-client/echo";
20
20
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
21
21
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
22
22
  createExtension({
@@ -108,7 +108,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
108
108
  }),
109
109
  createExtension({
110
110
  id: `${ASSISTANT_PLUGIN}/object-chat-companion`,
111
- filter: (node) => isReactiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,
111
+ filter: (node) => isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,
112
112
  connector: ({ node }) => [
113
113
  {
114
114
  id: [
@@ -132,7 +132,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
132
132
  }),
133
133
  createExtension({
134
134
  id: `${ASSISTANT_PLUGIN}/root`,
135
- filter: (node) => isSpace(node.data),
135
+ filter: (node) => node.type === SPACE_TYPE,
136
136
  connector: ({ node }) => {
137
137
  const templates = memoizeQuery(node.data, Filter.schema(TemplateType));
138
138
  return templates.length > 0 ? [
@@ -169,7 +169,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
169
169
  data: template,
170
170
  properties: {
171
171
  label: template.name ?? [
172
- "template title placeholder",
172
+ "object placeholder",
173
173
  {
174
174
  ns: ASSISTANT_PLUGIN
175
175
  }
@@ -190,7 +190,7 @@ var getOrCreateChat = async (dispatch, space) => {
190
190
  }));
191
191
  invariant(data?.object instanceof AIChatType, void 0, {
192
192
  F: __dxlog_file,
193
- L: 192,
193
+ L: 184,
194
194
  S: void 0,
195
195
  A: [
196
196
  "data?.object instanceof AIChatType",
@@ -206,4 +206,4 @@ var getOrCreateChat = async (dispatch, space) => {
206
206
  export {
207
207
  app_graph_builder_default as default
208
208
  };
209
- //# sourceMappingURL=app-graph-builder-MF5EVDWW.mjs.map
209
+ //# sourceMappingURL=app-graph-builder-GU6ZWSP4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, fullyQualifiedId, getSpace, isLiveObject, parseId } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.findNode(layout.active[0]);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/service-registry`,\n filter: (node): node is Node<null> => node.id === 'root',\n connector: ({ node }) => {\n const layout = context.requestCapability(Capabilities.Layout);\n const client = context.requestCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : null;\n\n return [\n {\n id: [node.id, 'service-registry'].join(ATTENDABLE_PATH_SEPARATOR),\n type: DECK_COMPANION_TYPE,\n data: space,\n properties: {\n label: ['service registry label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--plugs--regular',\n disposition: 'hidden',\n },\n },\n ];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n filter: (node): node is Node<AIChatType> =>\n isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,\n connector: ({ node }) => [\n {\n id: [node.id, 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--star-four--regular',\n position: 'hoist',\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n filter: (node): node is Node<Space> => node.type === SPACE_TYPE,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.data, Filter.schema(TemplateType));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space: node.data,\n },\n },\n ]\n : [];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));\n return templates\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['object placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.schema(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Capabilities", "contributes", "createIntent", "LayoutAction", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "memoizeQuery", "SPACE_TYPE", "SpaceAction", "Filter", "fullyQualifiedId", "getSpace", "isLiveObject", "parseId", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "connector", "spaceId", "parseId", "workspace", "get", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "isLiveObject", "assistantChatQueue", "AIChatType", "typename", "PLANK_COMPANION_TYPE", "SPACE_TYPE", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "run", "AssistantAction", "CreateChat", "invariant", "object", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -1380,8 +1380,11 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1380
1380
  };
1381
1381
 
1382
1382
  // packages/plugins/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1383
- import React7, { useCallback as useCallback3 } from "react";
1383
+ import React7, { useCallback as useCallback3, useEffect as useEffect6 } from "react";
1384
+ import { CollaborationActions, createIntent, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
1384
1385
  import { invariant as invariant6 } from "@dxos/invariant";
1386
+ import { DXN as DXN3 } from "@dxos/keys";
1387
+ import { makeRef, refFromDXN } from "@dxos/live-object";
1385
1388
  import { log as log10 } from "@dxos/log";
1386
1389
  import { getSpace as getSpace2 } from "@dxos/react-client/echo";
1387
1390
 
@@ -1483,7 +1486,7 @@ var ChatProcessor = class {
1483
1486
  model: this._options.model
1484
1487
  }
1485
1488
  });
1486
- log5.info("completed", {
1489
+ log5("completed", {
1487
1490
  messages
1488
1491
  }, {
1489
1492
  F: __dxlog_file6,
@@ -1495,7 +1498,7 @@ var ChatProcessor = class {
1495
1498
  } catch (err) {
1496
1499
  log5.catch(err, void 0, {
1497
1500
  F: __dxlog_file6,
1498
- L: 141,
1501
+ L: 140,
1499
1502
  S: this,
1500
1503
  C: (f, a) => f(...a)
1501
1504
  });
@@ -1520,7 +1523,7 @@ var ChatProcessor = class {
1520
1523
  async cancel() {
1521
1524
  log5.info("cancelling...", void 0, {
1522
1525
  F: __dxlog_file6,
1523
- L: 159,
1526
+ L: 158,
1524
1527
  S: this,
1525
1528
  C: (f, a) => f(...a)
1526
1529
  });
@@ -1557,10 +1560,10 @@ import { isNonNullable as isNonNullable2 } from "@dxos/util";
1557
1560
  // packages/plugins/plugin-assistant/src/capabilities/index.ts
1558
1561
  import { lazy } from "@dxos/app-framework";
1559
1562
  var AiClient = lazy(() => import("./ai-client-CDZLSNXE.mjs"));
1560
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-MF5EVDWW.mjs"));
1561
- var IntentResolver = lazy(() => import("./intent-resolver-WJGLKKVO.mjs"));
1562
- var ReactSurface = lazy(() => import("./react-surface-57VRDOQT.mjs"));
1563
- var AssistantSettings = lazy(() => import("./settings-U6UFQX32.mjs"));
1563
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-GU6ZWSP4.mjs"));
1564
+ var IntentResolver = lazy(() => import("./intent-resolver-YAQELTFQ.mjs"));
1565
+ var ReactSurface = lazy(() => import("./react-surface-JOATHBJ4.mjs"));
1566
+ var AssistantSettings = lazy(() => import("./settings-PAJLJEVW.mjs"));
1564
1567
 
1565
1568
  // packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx
1566
1569
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx";
@@ -1645,6 +1648,7 @@ ${definition.instructions}`),
1645
1648
  }, [
1646
1649
  aiClient.value,
1647
1650
  tools,
1651
+ artifactDefinitions,
1648
1652
  extensions,
1649
1653
  model,
1650
1654
  systemPrompt
@@ -1702,7 +1706,7 @@ import { createSystemPrompt as createSystemPrompt2 } from "@dxos/artifact";
1702
1706
  import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL3 } from "@dxos/assistant";
1703
1707
 
1704
1708
  // packages/plugins/plugin-assistant/src/testing/test-services.ts
1705
- import { createStatic } from "@dxos/echo-schema";
1709
+ import { create } from "@dxos/echo-schema";
1706
1710
  var MockServiceRegistry = class {
1707
1711
  async queryServices(query) {
1708
1712
  return TEST_SERVICES;
@@ -1724,7 +1728,7 @@ var VISUAL_CROSSING_CREDENTIALS = {
1724
1728
  }
1725
1729
  };
1726
1730
  var TEST_SERVICES = [
1727
- createStatic(ServiceType, {
1731
+ create(ServiceType, {
1728
1732
  serviceId: "amadeus.com/service/FlightSearch",
1729
1733
  name: "Amadeus Flight Search",
1730
1734
  description: "Search for local and international flights.",
@@ -1737,7 +1741,7 @@ var TEST_SERVICES = [
1737
1741
  }
1738
1742
  ]
1739
1743
  }),
1740
- createStatic(ServiceType, {
1744
+ create(ServiceType, {
1741
1745
  serviceId: "amadeus.com/service/HotelSearch",
1742
1746
  name: "Amadeus Hotel Search",
1743
1747
  description: "Search for local and international hotels.",
@@ -1750,7 +1754,7 @@ var TEST_SERVICES = [
1750
1754
  }
1751
1755
  ]
1752
1756
  }),
1753
- createStatic(ServiceType, {
1757
+ create(ServiceType, {
1754
1758
  serviceId: "visualcrossing.com/service/Weather",
1755
1759
  name: "Visual Crossing Weather",
1756
1760
  description: "Search for global weather forecasts.",
@@ -1764,7 +1768,7 @@ var TEST_SERVICES = [
1764
1768
  ]
1765
1769
  }),
1766
1770
  // TODO(burdon): Needs auth.
1767
- createStatic(ServiceType, {
1771
+ create(ServiceType, {
1768
1772
  serviceId: "abstractapi.com/service/GeoLocation",
1769
1773
  name: "Abstract GeoLocation",
1770
1774
  description: "Get the location of any IP address.",
@@ -1781,7 +1785,7 @@ var TEST_SERVICES = [
1781
1785
  //
1782
1786
  ...Array.from({
1783
1787
  length: 20
1784
- }, (_, i) => createStatic(ServiceType, {
1788
+ }, (_, i) => create(ServiceType, {
1785
1789
  serviceId: `example.com/service/test-${i}`,
1786
1790
  name: `Test ${i}`,
1787
1791
  description: `Test ${i}`,
@@ -1878,15 +1882,36 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1878
1882
  associatedArtifact
1879
1883
  });
1880
1884
  const messageQueue = useMessageQueue(chat);
1885
+ const { dispatchPromise: dispatch } = useIntentDispatcher2();
1881
1886
  const messages = [
1882
1887
  ...messageQueue?.items ?? [],
1883
1888
  ...processor.messages.value
1884
1889
  ];
1890
+ useEffect6(() => {
1891
+ if (!processor.streaming.value && messageQueue?.items) {
1892
+ const message = messageQueue.items[messageQueue.items.length - 1];
1893
+ if (space && chat && message && dispatch && associatedArtifact) {
1894
+ void dispatch(createIntent(CollaborationActions.InsertContent, {
1895
+ spaceId: space.id,
1896
+ target: makeRef(associatedArtifact),
1897
+ object: refFromDXN(new DXN3(DXN3.kind.QUEUE, [
1898
+ ...chat.assistantChatQueue.dxn.parts,
1899
+ message.id
1900
+ ])),
1901
+ label: "View proposal"
1902
+ }));
1903
+ }
1904
+ }
1905
+ }, [
1906
+ messageQueue,
1907
+ associatedArtifact,
1908
+ processor.streaming.value
1909
+ ]);
1885
1910
  const handleSubmit = useCallback3((text) => {
1886
1911
  if (processor.streaming.value) {
1887
1912
  log10.warn("ignoring submit; still processing.", void 0, {
1888
1913
  F: __dxlog_file9,
1889
- L: 44,
1914
+ L: 66,
1890
1915
  S: void 0,
1891
1916
  C: (f, a) => f(...a)
1892
1917
  });
@@ -1895,7 +1920,7 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1895
1920
  onOpenChange?.(true);
1896
1921
  invariant6(messageQueue, void 0, {
1897
1922
  F: __dxlog_file9,
1898
- L: 50,
1923
+ L: 72,
1899
1924
  S: void 0,
1900
1925
  A: [
1901
1926
  "messageQueue",
@@ -1928,11 +1953,11 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1928
1953
  processing: processor.streaming.value,
1929
1954
  error: processor.error.value,
1930
1955
  tools: processor.tools,
1956
+ contextProvider,
1931
1957
  onSubmit: handleSubmit,
1932
1958
  onCancel: handleCancel,
1933
1959
  onPrompt: handleSubmit,
1934
1960
  onOpenChange,
1935
- contextProvider,
1936
1961
  ...props
1937
1962
  });
1938
1963
  };
@@ -1949,4 +1974,4 @@ export {
1949
1974
  Thread,
1950
1975
  ThreadContainer
1951
1976
  };
1952
- //# sourceMappingURL=chunk-FMB7RGMP.mjs.map
1977
+ //# sourceMappingURL=chunk-FQ4L5NYW.mjs.map