@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
@@ -26,13 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ChatContainer_ZJ5JXF6A_exports = {};
30
- __export(ChatContainer_ZJ5JXF6A_exports, {
29
+ var ChatContainer_UWYNOALW_exports = {};
30
+ __export(ChatContainer_UWYNOALW_exports, {
31
31
  ChatContainer: () => ChatContainer,
32
32
  default: () => ChatContainer_default
33
33
  });
34
- module.exports = __toCommonJS(ChatContainer_ZJ5JXF6A_exports);
35
- var import_chunk_RPBKMP2E = require("./chunk-RPBKMP2E.cjs");
34
+ module.exports = __toCommonJS(ChatContainer_UWYNOALW_exports);
35
+ var import_chunk_ENBPNIJZ = require("./chunk-ENBPNIJZ.cjs");
36
36
  var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
37
37
  var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
38
38
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
@@ -46,7 +46,7 @@ var ChatContainer = ({ role, chat, associatedArtifact }) => {
46
46
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
47
47
  role,
48
48
  classNames: "container-max-width"
49
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_RPBKMP2E.ThreadContainer, {
49
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_ENBPNIJZ.ThreadContainer, {
50
50
  chat,
51
51
  settings,
52
52
  transcription,
@@ -58,4 +58,4 @@ var ChatContainer_default = ChatContainer;
58
58
  0 && (module.exports = {
59
59
  ChatContainer
60
60
  });
61
- //# sourceMappingURL=ChatContainer-ZJ5JXF6A.cjs.map
61
+ //# sourceMappingURL=ChatContainer-UWYNOALW.cjs.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,mBAA+B;AAE/B,2BAA6D;AAE7D,kCAA0C;AAC1C,4BAA0B;AAanB,IAAMA,gBAAwC,CAAC,EAAEC,MAAMC,MAAMC,mBAAkB,MAAE;AACtF,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,WAAW,EAAEC,SAAS;AACtF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCC,sCAAAA,GAAmBC;AAE/G,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACjB;IAAYkB,YAAW;KACxC,6BAAAH,QAAA,cAACI,uCAAAA;IACClB;IACAO;IACAL;IACAD;;AAIR;AAEA,IAAA,wBAAeH;",
6
+ "names": ["ChatContainer", "role", "chat", "associatedArtifact", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcriber", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "React", "StackItem", "Content", "classNames", "ThreadContainer"]
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TemplateContainer_EQXKHWTF_exports = {};
30
+ __export(TemplateContainer_EQXKHWTF_exports, {
31
+ TemplateContainer: () => TemplateContainer,
32
+ default: () => TemplateContainer_default
33
+ });
34
+ module.exports = __toCommonJS(TemplateContainer_EQXKHWTF_exports);
35
+ var import_chunk_XI2ARIEO = require("./chunk-XI2ARIEO.cjs");
36
+ var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
37
+ var import_react = __toESM(require("react"));
38
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
39
+ var TemplateContainer = ({ template, role }) => {
40
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
41
+ role,
42
+ classNames: "container-max-width"
43
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_XI2ARIEO.TemplateEditor, {
44
+ template
45
+ }));
46
+ };
47
+ var TemplateContainer_default = TemplateContainer;
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ TemplateContainer
51
+ });
52
+ //# sourceMappingURL=TemplateContainer-EQXKHWTF.cjs.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,mBAAkB;AAElB,4BAA0B;AAKnB,IAAMA,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,SACE,6BAAAC,QAAA,cAACC,gCAAUC,SAAO;IAACH;IAAYI,YAAW;KACxC,6BAAAH,QAAA,cAACI,sCAAAA;IAAeN;;AAGtB;AAEA,IAAA,4BAAeD;",
6
+ "names": ["TemplateContainer", "template", "role", "React", "StackItem", "Content", "classNames", "TemplateEditor"]
7
+ }
@@ -16,11 +16,11 @@ 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 app_graph_builder_N5ZUUI2Z_exports = {};
20
- __export(app_graph_builder_N5ZUUI2Z_exports, {
19
+ var app_graph_builder_CEMLCKAF_exports = {};
20
+ __export(app_graph_builder_CEMLCKAF_exports, {
21
21
  default: () => app_graph_builder_default
22
22
  });
23
- module.exports = __toCommonJS(app_graph_builder_N5ZUUI2Z_exports);
23
+ module.exports = __toCommonJS(app_graph_builder_CEMLCKAF_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");
@@ -122,7 +122,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
122
122
  }),
123
123
  (0, import_plugin_graph.createExtension)({
124
124
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/object-chat-companion`,
125
- filter: (node) => (0, import_echo.isReactiveObject)(node.data) && node.data.assistantChatQueue && node.data.type !== import_chunk_APRU3QWK.AIChatType.typename,
125
+ filter: (node) => (0, import_echo.isLiveObject)(node.data) && node.data.assistantChatQueue && node.data.type !== import_chunk_APRU3QWK.AIChatType.typename,
126
126
  connector: ({ node }) => [
127
127
  {
128
128
  id: [
@@ -146,7 +146,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
146
146
  }),
147
147
  (0, import_plugin_graph.createExtension)({
148
148
  id: `${import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN}/root`,
149
- filter: (node) => (0, import_echo.isSpace)(node.data),
149
+ filter: (node) => node.type === import_types2.SPACE_TYPE,
150
150
  connector: ({ node }) => {
151
151
  const templates = (0, import_plugin_space.memoizeQuery)(node.data, import_echo.Filter.schema(import_chunk_APRU3QWK.TemplateType));
152
152
  return templates.length > 0 ? [
@@ -183,7 +183,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
183
183
  data: template,
184
184
  properties: {
185
185
  label: template.name ?? [
186
- "template title placeholder",
186
+ "object placeholder",
187
187
  {
188
188
  ns: import_chunk_Q5XWEMHB.ASSISTANT_PLUGIN
189
189
  }
@@ -204,7 +204,7 @@ var getOrCreateChat = async (dispatch, space) => {
204
204
  }));
205
205
  (0, import_invariant.invariant)(data?.object instanceof import_chunk_APRU3QWK.AIChatType, void 0, {
206
206
  F: __dxlog_file,
207
- L: 192,
207
+ L: 184,
208
208
  S: void 0,
209
209
  A: [
210
210
  "data?.object instanceof AIChatType",
@@ -217,4 +217,4 @@ var getOrCreateChat = async (dispatch, space) => {
217
217
  }));
218
218
  return data.object;
219
219
  };
220
- //# sourceMappingURL=app-graph-builder-N5ZUUI2Z.cjs.map
220
+ //# sourceMappingURL=app-graph-builder-CEMLCKAF.cjs.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": ["import_types", "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
+ }
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_RPBKMP2E_exports = {};
30
- __export(chunk_RPBKMP2E_exports, {
29
+ var chunk_ENBPNIJZ_exports = {};
30
+ __export(chunk_ENBPNIJZ_exports, {
31
31
  AiClient: () => AiClient,
32
32
  AppGraphBuilder: () => AppGraphBuilder,
33
33
  AssistantSettings: () => AssistantSettings,
@@ -39,7 +39,7 @@ __export(chunk_RPBKMP2E_exports, {
39
39
  ToolboxContainer: () => ToolboxContainer,
40
40
  useServices: () => useServices
41
41
  });
42
- module.exports = __toCommonJS(chunk_RPBKMP2E_exports);
42
+ module.exports = __toCommonJS(chunk_ENBPNIJZ_exports);
43
43
  var import_chunk_GBUNQ257 = require("./chunk-GBUNQ257.cjs");
44
44
  var import_chunk_APRU3QWK = require("./chunk-APRU3QWK.cjs");
45
45
  var import_chunk_Q5XWEMHB = require("./chunk-Q5XWEMHB.cjs");
@@ -95,7 +95,10 @@ var import_react_ui3 = require("@dxos/react-ui");
95
95
  var import_react_ui_sfx = require("@dxos/react-ui-sfx");
96
96
  var import_react_ui_theme5 = require("@dxos/react-ui-theme");
97
97
  var import_react7 = __toESM(require("react"));
98
+ var import_app_framework2 = require("@dxos/app-framework");
98
99
  var import_invariant3 = require("@dxos/invariant");
100
+ var import_keys = require("@dxos/keys");
101
+ var import_live_object = require("@dxos/live-object");
99
102
  var import_log5 = require("@dxos/log");
100
103
  var import_echo3 = require("@dxos/react-client/echo");
101
104
  var import_signals_core = require("@preact/signals-core");
@@ -103,7 +106,7 @@ var import_assistant = require("@dxos/assistant");
103
106
  var import_invariant4 = require("@dxos/invariant");
104
107
  var import_log6 = require("@dxos/log");
105
108
  var import_react8 = require("react");
106
- var import_app_framework2 = require("@dxos/app-framework");
109
+ var import_app_framework3 = require("@dxos/app-framework");
107
110
  var import_artifact4 = require("@dxos/artifact");
108
111
  var import_assistant2 = require("@dxos/assistant");
109
112
  var import_types3 = require("@dxos/functions/types");
@@ -111,7 +114,7 @@ var import_log7 = require("@dxos/log");
111
114
  var import_react_client = require("@dxos/react-client");
112
115
  var import_echo4 = require("@dxos/react-client/echo");
113
116
  var import_util5 = require("@dxos/util");
114
- var import_app_framework3 = require("@dxos/app-framework");
117
+ var import_app_framework4 = require("@dxos/app-framework");
115
118
  var import_react9 = require("react");
116
119
  var import_async2 = require("@dxos/async");
117
120
  var import_context = require("@dxos/context");
@@ -125,10 +128,10 @@ var import_async3 = require("@dxos/async");
125
128
  var import_echo_db = require("@dxos/echo-db");
126
129
  var import_types5 = require("@dxos/functions/types");
127
130
  var import_invariant6 = require("@dxos/invariant");
128
- var import_keys = require("@dxos/keys");
131
+ var import_keys2 = require("@dxos/keys");
129
132
  var import_log9 = require("@dxos/log");
130
133
  var import_react10 = require("react");
131
- var import_keys2 = require("@dxos/keys");
134
+ var import_keys3 = require("@dxos/keys");
132
135
  var import_echo6 = require("@dxos/react-client/echo");
133
136
  var import_react11 = require("react");
134
137
  var import_artifact5 = require("@dxos/artifact");
@@ -136,7 +139,7 @@ var import_assistant3 = require("@dxos/assistant");
136
139
  var import_echo_schema3 = require("@dxos/echo-schema");
137
140
  var import_react12 = require("react");
138
141
  var import_react13 = require("react");
139
- var import_app_framework4 = require("@dxos/app-framework");
142
+ var import_app_framework5 = require("@dxos/app-framework");
140
143
  var import_echo_schema4 = require("@dxos/echo-schema");
141
144
  var import_log10 = require("@dxos/log");
142
145
  var import_echo7 = require("@dxos/react-client/echo");
@@ -1522,7 +1525,7 @@ var ChatProcessor = class {
1522
1525
  model: this._options.model
1523
1526
  }
1524
1527
  });
1525
- import_log6.log.info("completed", {
1528
+ (0, import_log6.log)("completed", {
1526
1529
  messages
1527
1530
  }, {
1528
1531
  F: __dxlog_file6,
@@ -1534,7 +1537,7 @@ var ChatProcessor = class {
1534
1537
  } catch (err) {
1535
1538
  import_log6.log.catch(err, void 0, {
1536
1539
  F: __dxlog_file6,
1537
- L: 141,
1540
+ L: 140,
1538
1541
  S: this,
1539
1542
  C: (f, a) => f(...a)
1540
1543
  });
@@ -1559,7 +1562,7 @@ var ChatProcessor = class {
1559
1562
  async cancel() {
1560
1563
  import_log6.log.info("cancelling...", void 0, {
1561
1564
  F: __dxlog_file6,
1562
- L: 159,
1565
+ L: 158,
1563
1566
  S: this,
1564
1567
  C: (f, a) => f(...a)
1565
1568
  });
@@ -1581,17 +1584,17 @@ var AIServiceOverloadedError = class extends Error {
1581
1584
  this.code = "AI_SERVICE_OVERLOADED";
1582
1585
  }
1583
1586
  };
1584
- var AiClient = (0, import_app_framework3.lazy)(() => import("./ai-client-URCCYU6B.cjs"));
1585
- var AppGraphBuilder = (0, import_app_framework3.lazy)(() => import("./app-graph-builder-N5ZUUI2Z.cjs"));
1586
- var IntentResolver = (0, import_app_framework3.lazy)(() => import("./intent-resolver-R3OSTIMH.cjs"));
1587
- var ReactSurface = (0, import_app_framework3.lazy)(() => import("./react-surface-NUQTM6MS.cjs"));
1588
- var AssistantSettings = (0, import_app_framework3.lazy)(() => import("./settings-TXGRCYAL.cjs"));
1587
+ var AiClient = (0, import_app_framework4.lazy)(() => import("./ai-client-URCCYU6B.cjs"));
1588
+ var AppGraphBuilder = (0, import_app_framework4.lazy)(() => import("./app-graph-builder-CEMLCKAF.cjs"));
1589
+ var IntentResolver = (0, import_app_framework4.lazy)(() => import("./intent-resolver-RNMYSJ3E.cjs"));
1590
+ var ReactSurface = (0, import_app_framework4.lazy)(() => import("./react-surface-7RIXMLMN.cjs"));
1591
+ var AssistantSettings = (0, import_app_framework4.lazy)(() => import("./settings-JBEYMZ4S.cjs"));
1589
1592
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx";
1590
1593
  var useChatProcessor = ({ chat, space, settings, part = "deck", associatedArtifact }) => {
1591
- const aiClient = (0, import_app_framework2.useCapability)(import_chunk_GBUNQ257.AssistantCapabilities.AiClient);
1592
- const globalTools = (0, import_app_framework2.useCapabilities)(import_app_framework2.Capabilities.Tools);
1593
- const artifactDefinitions = (0, import_app_framework2.useCapabilities)(import_app_framework2.Capabilities.ArtifactDefinition);
1594
- const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
1594
+ const aiClient = (0, import_app_framework3.useCapability)(import_chunk_GBUNQ257.AssistantCapabilities.AiClient);
1595
+ const globalTools = (0, import_app_framework3.useCapabilities)(import_app_framework3.Capabilities.Tools);
1596
+ const artifactDefinitions = (0, import_app_framework3.useCapabilities)(import_app_framework3.Capabilities.ArtifactDefinition);
1597
+ const { dispatchPromise: dispatch } = (0, import_app_framework3.useIntentDispatcher)();
1595
1598
  const services = (0, import_echo4.useQuery)(space, import_echo4.Filter.schema(import_chunk_APRU3QWK.ServiceType));
1596
1599
  const [serviceTools, setServiceTools] = (0, import_react8.useState)([]);
1597
1600
  (0, import_react8.useEffect)(() => {
@@ -1668,6 +1671,7 @@ ${definition.instructions}`),
1668
1671
  }, [
1669
1672
  aiClient.value,
1670
1673
  tools,
1674
+ artifactDefinitions,
1671
1675
  extensions,
1672
1676
  model,
1673
1677
  systemPrompt
@@ -1679,8 +1683,8 @@ var useMessageQueue = (chat) => {
1679
1683
  const space = (0, import_echo6.getSpace)(chat);
1680
1684
  const queueDxn = (0, import_react10.useMemo)(() => {
1681
1685
  const dxn = space && chat?.assistantChatQueue.dxn;
1682
- return dxn ? new import_keys2.DXN(import_keys2.DXN.kind.QUEUE, [
1683
- import_keys2.QueueSubspaceTags.DATA,
1686
+ return dxn ? new import_keys3.DXN(import_keys3.DXN.kind.QUEUE, [
1687
+ import_keys3.QueueSubspaceTags.DATA,
1684
1688
  space.id,
1685
1689
  dxn.parts.at(-1)
1686
1690
  ]) : void 0;
@@ -1711,7 +1715,7 @@ var VISUAL_CROSSING_CREDENTIALS = {
1711
1715
  }
1712
1716
  };
1713
1717
  var TEST_SERVICES = [
1714
- (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1718
+ (0, import_echo_schema3.create)(import_chunk_APRU3QWK.ServiceType, {
1715
1719
  serviceId: "amadeus.com/service/FlightSearch",
1716
1720
  name: "Amadeus Flight Search",
1717
1721
  description: "Search for local and international flights.",
@@ -1724,7 +1728,7 @@ var TEST_SERVICES = [
1724
1728
  }
1725
1729
  ]
1726
1730
  }),
1727
- (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1731
+ (0, import_echo_schema3.create)(import_chunk_APRU3QWK.ServiceType, {
1728
1732
  serviceId: "amadeus.com/service/HotelSearch",
1729
1733
  name: "Amadeus Hotel Search",
1730
1734
  description: "Search for local and international hotels.",
@@ -1737,7 +1741,7 @@ var TEST_SERVICES = [
1737
1741
  }
1738
1742
  ]
1739
1743
  }),
1740
- (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1744
+ (0, import_echo_schema3.create)(import_chunk_APRU3QWK.ServiceType, {
1741
1745
  serviceId: "visualcrossing.com/service/Weather",
1742
1746
  name: "Visual Crossing Weather",
1743
1747
  description: "Search for global weather forecasts.",
@@ -1751,7 +1755,7 @@ var TEST_SERVICES = [
1751
1755
  ]
1752
1756
  }),
1753
1757
  // TODO(burdon): Needs auth.
1754
- (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1758
+ (0, import_echo_schema3.create)(import_chunk_APRU3QWK.ServiceType, {
1755
1759
  serviceId: "abstractapi.com/service/GeoLocation",
1756
1760
  name: "Abstract GeoLocation",
1757
1761
  description: "Get the location of any IP address.",
@@ -1768,7 +1772,7 @@ var TEST_SERVICES = [
1768
1772
  //
1769
1773
  ...Array.from({
1770
1774
  length: 20
1771
- }, (_, i) => (0, import_echo_schema3.createStatic)(import_chunk_APRU3QWK.ServiceType, {
1775
+ }, (_, i) => (0, import_echo_schema3.create)(import_chunk_APRU3QWK.ServiceType, {
1772
1776
  serviceId: `example.com/service/test-${i}`,
1773
1777
  name: `Test ${i}`,
1774
1778
  description: `Test ${i}`,
@@ -1799,7 +1803,7 @@ var useServices = (space, query) => {
1799
1803
  var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useContextProvider.ts";
1800
1804
  var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
1801
1805
  var useContextProvider = (space) => {
1802
- const artifactDefinitions = (0, import_app_framework4.useCapabilities)(import_app_framework4.Capabilities.ArtifactDefinition);
1806
+ const artifactDefinitions = (0, import_app_framework5.useCapabilities)(import_app_framework5.Capabilities.ArtifactDefinition);
1803
1807
  return (0, import_react13.useMemo)(() => {
1804
1808
  if (!space) {
1805
1809
  return void 0;
@@ -1851,15 +1855,36 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1851
1855
  associatedArtifact
1852
1856
  });
1853
1857
  const messageQueue = useMessageQueue(chat);
1858
+ const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
1854
1859
  const messages = [
1855
1860
  ...messageQueue?.items ?? [],
1856
1861
  ...processor.messages.value
1857
1862
  ];
1863
+ (0, import_react7.useEffect)(() => {
1864
+ if (!processor.streaming.value && messageQueue?.items) {
1865
+ const message = messageQueue.items[messageQueue.items.length - 1];
1866
+ if (space && chat && message && dispatch && associatedArtifact) {
1867
+ void dispatch((0, import_app_framework2.createIntent)(import_app_framework2.CollaborationActions.InsertContent, {
1868
+ spaceId: space.id,
1869
+ target: (0, import_live_object.makeRef)(associatedArtifact),
1870
+ object: (0, import_live_object.refFromDXN)(new import_keys.DXN(import_keys.DXN.kind.QUEUE, [
1871
+ ...chat.assistantChatQueue.dxn.parts,
1872
+ message.id
1873
+ ])),
1874
+ label: "View proposal"
1875
+ }));
1876
+ }
1877
+ }
1878
+ }, [
1879
+ messageQueue,
1880
+ associatedArtifact,
1881
+ processor.streaming.value
1882
+ ]);
1858
1883
  const handleSubmit = (0, import_react7.useCallback)((text) => {
1859
1884
  if (processor.streaming.value) {
1860
1885
  import_log5.log.warn("ignoring submit; still processing.", void 0, {
1861
1886
  F: __dxlog_file9,
1862
- L: 44,
1887
+ L: 66,
1863
1888
  S: void 0,
1864
1889
  C: (f, a) => f(...a)
1865
1890
  });
@@ -1868,7 +1893,7 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1868
1893
  onOpenChange?.(true);
1869
1894
  (0, import_invariant3.invariant)(messageQueue, void 0, {
1870
1895
  F: __dxlog_file9,
1871
- L: 50,
1896
+ L: 72,
1872
1897
  S: void 0,
1873
1898
  A: [
1874
1899
  "messageQueue",
@@ -1901,11 +1926,11 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1901
1926
  processing: processor.streaming.value,
1902
1927
  error: processor.error.value,
1903
1928
  tools: processor.tools,
1929
+ contextProvider,
1904
1930
  onSubmit: handleSubmit,
1905
1931
  onCancel: handleCancel,
1906
1932
  onPrompt: handleSubmit,
1907
1933
  onOpenChange,
1908
- contextProvider,
1909
1934
  ...props
1910
1935
  });
1911
1936
  };
@@ -1922,4 +1947,4 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
1922
1947
  ToolboxContainer,
1923
1948
  useServices
1924
1949
  });
1925
- //# sourceMappingURL=chunk-RPBKMP2E.cjs.map
1950
+ //# sourceMappingURL=chunk-ENBPNIJZ.cjs.map