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

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
@@ -16,21 +16,21 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var settings_TXGRCYAL_exports = {};
20
- __export(settings_TXGRCYAL_exports, {
19
+ var settings_JBEYMZ4S_exports = {};
20
+ __export(settings_JBEYMZ4S_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_TXGRCYAL_exports);
23
+ module.exports = __toCommonJS(settings_JBEYMZ4S_exports);
24
24
  var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
25
25
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
26
26
  var import_app_framework = require("@dxos/app-framework");
27
27
  var import_live_object = require("@dxos/live-object");
28
28
  var settings_default = () => {
29
- const settings = (0, import_live_object.create)({});
29
+ const settings = (0, import_live_object.live)({});
30
30
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
31
31
  schema: import_chunk_APRU3QWK.AssistantSettingsSchema,
32
32
  prefix: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN,
33
33
  value: settings
34
34
  });
35
35
  };
36
- //# sourceMappingURL=settings-TXGRCYAL.cjs.map
36
+ //# sourceMappingURL=settings-JBEYMZ4S.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, AssistantSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<AssistantSettingsProps>({});\n\n return contributes(Capabilities.Settings, {\n schema: AssistantSettingsSchema,\n prefix: ASSISTANT_PLUGIN,\n value: settings,\n });\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAA0C;AAC1C,yBAAqB;AAKrB,IAAA,mBAAe,MAAA;AACb,QAAMA,eAAWC,yBAA6B,CAAC,CAAA;AAE/C,aAAOC,kCAAYC,kCAAaC,UAAU;IACxCC,QAAQC;IACRC,QAAQC;IACRC,OAAOT;EACT,CAAA;AACF;",
6
+ "names": ["settings", "live", "contributes", "Capabilities", "Settings", "schema", "AssistantSettingsSchema", "prefix", "ASSISTANT_PLUGIN", "value"]
7
+ }
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadContainer
4
- } from "./chunk-MVDAY3CZ.mjs";
4
+ } from "./chunk-JE47GNTB.mjs";
5
5
  import "./chunk-6JK5HEUQ.mjs";
6
6
  import "./chunk-MXK2EANZ.mjs";
7
7
  import {
@@ -115,4 +115,4 @@ export {
115
115
  AssistantDialog,
116
116
  AssistantDialog_default as default
117
117
  };
118
- //# sourceMappingURL=AssistantDialog-U2FQX5TD.mjs.map
118
+ //# sourceMappingURL=AssistantDialog-N24M73FW.mjs.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadContainer
4
- } from "./chunk-MVDAY3CZ.mjs";
4
+ } from "./chunk-JE47GNTB.mjs";
5
5
  import "./chunk-6JK5HEUQ.mjs";
6
6
  import "./chunk-MXK2EANZ.mjs";
7
7
  import {
@@ -31,4 +31,4 @@ export {
31
31
  ChatContainer,
32
32
  ChatContainer_default as default
33
33
  };
34
- //# sourceMappingURL=ChatContainer-QW3OOXTT.mjs.map
34
+ //# sourceMappingURL=ChatContainer-KPWY5UK4.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,23 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ TemplateEditor
4
+ } from "./chunk-PBZA7XJR.mjs";
5
+ import "./chunk-ECRK6TUQ.mjs";
6
+
7
+ // packages/plugins/plugin-assistant/src/components/TemplateContainer.tsx
8
+ import React from "react";
9
+ import { StackItem } from "@dxos/react-ui-stack";
10
+ var TemplateContainer = ({ template, role }) => {
11
+ return /* @__PURE__ */ React.createElement(StackItem.Content, {
12
+ role,
13
+ classNames: "container-max-width"
14
+ }, /* @__PURE__ */ React.createElement(TemplateEditor, {
15
+ template
16
+ }));
17
+ };
18
+ var TemplateContainer_default = TemplateContainer;
19
+ export {
20
+ TemplateContainer,
21
+ TemplateContainer_default as default
22
+ };
23
+ //# sourceMappingURL=TemplateContainer-3LEBT5ZC.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
+ }
@@ -16,8 +16,8 @@ import { ClientCapabilities } from "@dxos/plugin-client";
16
16
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
17
17
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
18
18
  import { memoizeQuery } from "@dxos/plugin-space";
19
- import { SpaceAction } from "@dxos/plugin-space/types";
20
- import { Filter, fullyQualifiedId, getSpace, isSpace, isReactiveObject, parseId } from "@dxos/react-client/echo";
19
+ import { SPACE_TYPE, SpaceAction } from "@dxos/plugin-space/types";
20
+ import { Filter, fullyQualifiedId, getSpace, isLiveObject, parseId } from "@dxos/react-client/echo";
21
21
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
22
22
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
23
23
  createExtension({
@@ -109,7 +109,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
109
109
  }),
110
110
  createExtension({
111
111
  id: `${ASSISTANT_PLUGIN}/object-chat-companion`,
112
- filter: (node) => isReactiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,
112
+ filter: (node) => isLiveObject(node.data) && node.data.assistantChatQueue && node.data.type !== AIChatType.typename,
113
113
  connector: ({ node }) => [
114
114
  {
115
115
  id: [
@@ -133,7 +133,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
133
133
  }),
134
134
  createExtension({
135
135
  id: `${ASSISTANT_PLUGIN}/root`,
136
- filter: (node) => isSpace(node.data),
136
+ filter: (node) => node.type === SPACE_TYPE,
137
137
  connector: ({ node }) => {
138
138
  const templates = memoizeQuery(node.data, Filter.schema(TemplateType));
139
139
  return templates.length > 0 ? [
@@ -170,7 +170,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
170
170
  data: template,
171
171
  properties: {
172
172
  label: template.name ?? [
173
- "template title placeholder",
173
+ "object placeholder",
174
174
  {
175
175
  ns: ASSISTANT_PLUGIN
176
176
  }
@@ -191,7 +191,7 @@ var getOrCreateChat = async (dispatch, space) => {
191
191
  }));
192
192
  invariant(data?.object instanceof AIChatType, void 0, {
193
193
  F: __dxlog_file,
194
- L: 192,
194
+ L: 184,
195
195
  S: void 0,
196
196
  A: [
197
197
  "data?.object instanceof AIChatType",
@@ -207,4 +207,4 @@ var getOrCreateChat = async (dispatch, space) => {
207
207
  export {
208
208
  app_graph_builder_default as default
209
209
  };
210
- //# sourceMappingURL=app-graph-builder-DWBNIMHM.mjs.map
210
+ //# sourceMappingURL=app-graph-builder-Y45WYAWL.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
+ }
@@ -1381,8 +1381,11 @@ var Thread = ({ classNames, space, messages, collapse = true, transcription, pro
1381
1381
  };
1382
1382
 
1383
1383
  // packages/plugins/plugin-assistant/src/components/Thread/ThreadContainer.tsx
1384
- import React7, { useCallback as useCallback3 } from "react";
1384
+ import React7, { useCallback as useCallback3, useEffect as useEffect6 } from "react";
1385
+ import { CollaborationActions, createIntent, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
1385
1386
  import { invariant as invariant6 } from "@dxos/invariant";
1387
+ import { DXN as DXN3 } from "@dxos/keys";
1388
+ import { makeRef, refFromDXN } from "@dxos/live-object";
1386
1389
  import { log as log10 } from "@dxos/log";
1387
1390
  import { getSpace as getSpace2 } from "@dxos/react-client/echo";
1388
1391
 
@@ -1484,7 +1487,7 @@ var ChatProcessor = class {
1484
1487
  model: this._options.model
1485
1488
  }
1486
1489
  });
1487
- log5.info("completed", {
1490
+ log5("completed", {
1488
1491
  messages
1489
1492
  }, {
1490
1493
  F: __dxlog_file6,
@@ -1496,7 +1499,7 @@ var ChatProcessor = class {
1496
1499
  } catch (err) {
1497
1500
  log5.catch(err, void 0, {
1498
1501
  F: __dxlog_file6,
1499
- L: 141,
1502
+ L: 140,
1500
1503
  S: this,
1501
1504
  C: (f, a) => f(...a)
1502
1505
  });
@@ -1521,7 +1524,7 @@ var ChatProcessor = class {
1521
1524
  async cancel() {
1522
1525
  log5.info("cancelling...", void 0, {
1523
1526
  F: __dxlog_file6,
1524
- L: 159,
1527
+ L: 158,
1525
1528
  S: this,
1526
1529
  C: (f, a) => f(...a)
1527
1530
  });
@@ -1558,10 +1561,10 @@ import { isNonNullable as isNonNullable2 } from "@dxos/util";
1558
1561
  // packages/plugins/plugin-assistant/src/capabilities/index.ts
1559
1562
  import { lazy } from "@dxos/app-framework";
1560
1563
  var AiClient = lazy(() => import("./ai-client-WMHS5EGV.mjs"));
1561
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-DWBNIMHM.mjs"));
1562
- var IntentResolver = lazy(() => import("./intent-resolver-H32TL4X6.mjs"));
1563
- var ReactSurface = lazy(() => import("./react-surface-JBVZF6CP.mjs"));
1564
- var AssistantSettings = lazy(() => import("./settings-DZU5PNXM.mjs"));
1564
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-Y45WYAWL.mjs"));
1565
+ var IntentResolver = lazy(() => import("./intent-resolver-V2ZFI5C4.mjs"));
1566
+ var ReactSurface = lazy(() => import("./react-surface-UUHNOYST.mjs"));
1567
+ var AssistantSettings = lazy(() => import("./settings-KAMA6RIY.mjs"));
1565
1568
 
1566
1569
  // packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx
1567
1570
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx";
@@ -1646,6 +1649,7 @@ ${definition.instructions}`),
1646
1649
  }, [
1647
1650
  aiClient.value,
1648
1651
  tools,
1652
+ artifactDefinitions,
1649
1653
  extensions,
1650
1654
  model,
1651
1655
  systemPrompt
@@ -1703,7 +1707,7 @@ import { createSystemPrompt as createSystemPrompt2 } from "@dxos/artifact";
1703
1707
  import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL3 } from "@dxos/assistant";
1704
1708
 
1705
1709
  // packages/plugins/plugin-assistant/src/testing/test-services.ts
1706
- import { createStatic } from "@dxos/echo-schema";
1710
+ import { create } from "@dxos/echo-schema";
1707
1711
  var MockServiceRegistry = class {
1708
1712
  async queryServices(query) {
1709
1713
  return TEST_SERVICES;
@@ -1725,7 +1729,7 @@ var VISUAL_CROSSING_CREDENTIALS = {
1725
1729
  }
1726
1730
  };
1727
1731
  var TEST_SERVICES = [
1728
- createStatic(ServiceType, {
1732
+ create(ServiceType, {
1729
1733
  serviceId: "amadeus.com/service/FlightSearch",
1730
1734
  name: "Amadeus Flight Search",
1731
1735
  description: "Search for local and international flights.",
@@ -1738,7 +1742,7 @@ var TEST_SERVICES = [
1738
1742
  }
1739
1743
  ]
1740
1744
  }),
1741
- createStatic(ServiceType, {
1745
+ create(ServiceType, {
1742
1746
  serviceId: "amadeus.com/service/HotelSearch",
1743
1747
  name: "Amadeus Hotel Search",
1744
1748
  description: "Search for local and international hotels.",
@@ -1751,7 +1755,7 @@ var TEST_SERVICES = [
1751
1755
  }
1752
1756
  ]
1753
1757
  }),
1754
- createStatic(ServiceType, {
1758
+ create(ServiceType, {
1755
1759
  serviceId: "visualcrossing.com/service/Weather",
1756
1760
  name: "Visual Crossing Weather",
1757
1761
  description: "Search for global weather forecasts.",
@@ -1765,7 +1769,7 @@ var TEST_SERVICES = [
1765
1769
  ]
1766
1770
  }),
1767
1771
  // TODO(burdon): Needs auth.
1768
- createStatic(ServiceType, {
1772
+ create(ServiceType, {
1769
1773
  serviceId: "abstractapi.com/service/GeoLocation",
1770
1774
  name: "Abstract GeoLocation",
1771
1775
  description: "Get the location of any IP address.",
@@ -1782,7 +1786,7 @@ var TEST_SERVICES = [
1782
1786
  //
1783
1787
  ...Array.from({
1784
1788
  length: 20
1785
- }, (_, i) => createStatic(ServiceType, {
1789
+ }, (_, i) => create(ServiceType, {
1786
1790
  serviceId: `example.com/service/test-${i}`,
1787
1791
  name: `Test ${i}`,
1788
1792
  description: `Test ${i}`,
@@ -1879,15 +1883,36 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1879
1883
  associatedArtifact
1880
1884
  });
1881
1885
  const messageQueue = useMessageQueue(chat);
1886
+ const { dispatchPromise: dispatch } = useIntentDispatcher2();
1882
1887
  const messages = [
1883
1888
  ...messageQueue?.items ?? [],
1884
1889
  ...processor.messages.value
1885
1890
  ];
1891
+ useEffect6(() => {
1892
+ if (!processor.streaming.value && messageQueue?.items) {
1893
+ const message = messageQueue.items[messageQueue.items.length - 1];
1894
+ if (space && chat && message && dispatch && associatedArtifact) {
1895
+ void dispatch(createIntent(CollaborationActions.InsertContent, {
1896
+ spaceId: space.id,
1897
+ target: makeRef(associatedArtifact),
1898
+ object: refFromDXN(new DXN3(DXN3.kind.QUEUE, [
1899
+ ...chat.assistantChatQueue.dxn.parts,
1900
+ message.id
1901
+ ])),
1902
+ label: "View proposal"
1903
+ }));
1904
+ }
1905
+ }
1906
+ }, [
1907
+ messageQueue,
1908
+ associatedArtifact,
1909
+ processor.streaming.value
1910
+ ]);
1886
1911
  const handleSubmit = useCallback3((text) => {
1887
1912
  if (processor.streaming.value) {
1888
1913
  log10.warn("ignoring submit; still processing.", void 0, {
1889
1914
  F: __dxlog_file9,
1890
- L: 44,
1915
+ L: 66,
1891
1916
  S: void 0,
1892
1917
  C: (f, a) => f(...a)
1893
1918
  });
@@ -1896,7 +1921,7 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1896
1921
  onOpenChange?.(true);
1897
1922
  invariant6(messageQueue, void 0, {
1898
1923
  F: __dxlog_file9,
1899
- L: 50,
1924
+ L: 72,
1900
1925
  S: void 0,
1901
1926
  A: [
1902
1927
  "messageQueue",
@@ -1929,11 +1954,11 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1929
1954
  processing: processor.streaming.value,
1930
1955
  error: processor.error.value,
1931
1956
  tools: processor.tools,
1957
+ contextProvider,
1932
1958
  onSubmit: handleSubmit,
1933
1959
  onCancel: handleCancel,
1934
1960
  onPrompt: handleSubmit,
1935
1961
  onOpenChange,
1936
- contextProvider,
1937
1962
  ...props
1938
1963
  });
1939
1964
  };
@@ -1950,4 +1975,4 @@ export {
1950
1975
  Thread,
1951
1976
  ThreadContainer
1952
1977
  };
1953
- //# sourceMappingURL=chunk-MVDAY3CZ.mjs.map
1978
+ //# sourceMappingURL=chunk-JE47GNTB.mjs.map