@dxos/plugin-assistant 0.8.2 → 0.8.3-main.672df60

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 (126) hide show
  1. package/dist/lib/browser/{AssistantDialog-K6POM23O.mjs → AssistantDialog-UAZSN6GT.mjs} +3 -3
  2. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs +45 -0
  3. package/dist/lib/browser/BlueprintEditor-DGV4KJDM.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatContainer-QTO4LE2C.mjs → ChatContainer-UTN3AO5U.mjs} +3 -3
  5. package/dist/lib/browser/{app-graph-builder-YH4EGNBC.mjs → app-graph-builder-56OZ5RW4.mjs} +2 -2
  6. package/dist/lib/browser/{chunk-USJBRB3H.mjs → chunk-6SD7S7W5.mjs} +6 -4
  7. package/dist/lib/browser/{chunk-USJBRB3H.mjs.map → chunk-6SD7S7W5.mjs.map} +3 -3
  8. package/dist/lib/browser/{chunk-IHEBFO5O.mjs → chunk-NBSPGIHL.mjs} +5 -4
  9. package/dist/lib/browser/{chunk-IHEBFO5O.mjs.map → chunk-NBSPGIHL.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-QTW7KVDO.mjs → chunk-Q6XE3O3E.mjs} +36 -12
  11. package/dist/lib/browser/{chunk-QTW7KVDO.mjs.map → chunk-Q6XE3O3E.mjs.map} +4 -4
  12. package/dist/lib/browser/index.mjs +15 -8
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-63EAHENI.mjs → intent-resolver-GWELYIX2.mjs} +7 -10
  15. package/dist/lib/browser/intent-resolver-GWELYIX2.mjs.map +7 -0
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{react-surface-XCV6NR75.mjs → react-surface-DGS34EON.mjs} +23 -10
  18. package/dist/lib/browser/react-surface-DGS34EON.mjs.map +7 -0
  19. package/dist/lib/browser/{settings-SHNQ4XXP.mjs → settings-BTFB7IQ6.mjs} +2 -2
  20. package/dist/lib/browser/types/index.mjs +1 -1
  21. package/dist/lib/node/{AssistantDialog-FDATKYE5.cjs → AssistantDialog-RTB5Q7FP.cjs} +7 -7
  22. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs +72 -0
  23. package/dist/lib/node/BlueprintEditor-43VM3XPO.cjs.map +7 -0
  24. package/dist/lib/node/{ChatContainer-5CLHJOIQ.cjs → ChatContainer-P3JL4VZ7.cjs} +7 -7
  25. package/dist/lib/node/{app-graph-builder-PSHIOW3Q.cjs → app-graph-builder-QLF353LH.cjs} +11 -11
  26. package/dist/lib/node/{chunk-FLJWJ35M.cjs → chunk-BWL5A3O5.cjs} +12 -9
  27. package/dist/lib/node/{chunk-FLJWJ35M.cjs.map → chunk-BWL5A3O5.cjs.map} +3 -3
  28. package/dist/lib/node/{chunk-H4A42LNR.cjs → chunk-PG7YNQ4R.cjs} +45 -21
  29. package/dist/lib/node/chunk-PG7YNQ4R.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-RXPA2C2A.cjs → chunk-UNVDZOLA.cjs} +8 -7
  31. package/dist/lib/node/{chunk-RXPA2C2A.cjs.map → chunk-UNVDZOLA.cjs.map} +3 -3
  32. package/dist/lib/node/index.cjs +52 -45
  33. package/dist/lib/node/index.cjs.map +3 -3
  34. package/dist/lib/node/{intent-resolver-66F7WLW6.cjs → intent-resolver-U7663JU7.cjs} +11 -13
  35. package/dist/lib/node/intent-resolver-U7663JU7.cjs.map +7 -0
  36. package/dist/lib/node/meta.json +1 -1
  37. package/dist/lib/node/{react-surface-TASAPRPQ.cjs → react-surface-QXZTILW6.cjs} +37 -25
  38. package/dist/lib/node/react-surface-QXZTILW6.cjs.map +7 -0
  39. package/dist/lib/node/{settings-ERKLO6IO.cjs → settings-LBJMT6YB.cjs} +6 -6
  40. package/dist/lib/node/types/index.cjs +14 -14
  41. package/dist/lib/node/types/index.cjs.map +1 -1
  42. package/dist/lib/node-esm/{AssistantDialog-PIMYK774.mjs → AssistantDialog-DONAO6SA.mjs} +3 -3
  43. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs +47 -0
  44. package/dist/lib/node-esm/BlueprintEditor-CTARB2FO.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ChatContainer-QTC5NYE2.mjs → ChatContainer-FVIGCDIG.mjs} +3 -3
  46. package/dist/lib/node-esm/{app-graph-builder-Z3GMMJMD.mjs → app-graph-builder-5YX5TKKT.mjs} +2 -2
  47. package/dist/lib/node-esm/{chunk-QU626JMR.mjs → chunk-GJE4WCUJ.mjs} +6 -4
  48. package/dist/lib/node-esm/{chunk-QU626JMR.mjs.map → chunk-GJE4WCUJ.mjs.map} +3 -3
  49. package/dist/lib/node-esm/{chunk-SI5LOQEO.mjs → chunk-MNH6E6EB.mjs} +36 -12
  50. package/dist/lib/node-esm/{chunk-SI5LOQEO.mjs.map → chunk-MNH6E6EB.mjs.map} +4 -4
  51. package/dist/lib/node-esm/{chunk-ZKBACPIW.mjs → chunk-TQYSF2GS.mjs} +5 -4
  52. package/dist/lib/node-esm/{chunk-ZKBACPIW.mjs.map → chunk-TQYSF2GS.mjs.map} +3 -3
  53. package/dist/lib/node-esm/index.mjs +15 -8
  54. package/dist/lib/node-esm/index.mjs.map +3 -3
  55. package/dist/lib/node-esm/{intent-resolver-X3PWH7KM.mjs → intent-resolver-N5TM3RTL.mjs} +7 -10
  56. package/dist/lib/node-esm/intent-resolver-N5TM3RTL.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-QMIQCXUM.mjs → react-surface-FTKGQQD2.mjs} +23 -10
  59. package/dist/lib/node-esm/react-surface-FTKGQQD2.mjs.map +7 -0
  60. package/dist/lib/node-esm/{settings-IVQRZUCU.mjs → settings-TGCCAH5D.mjs} +2 -2
  61. package/dist/lib/node-esm/types/index.mjs +1 -1
  62. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  65. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts +2 -2
  66. package/dist/types/src/components/BlueprintEditor/BlueprintEditor.d.ts.map +1 -1
  67. package/dist/types/src/components/BlueprintEditor/index.d.ts +2 -1
  68. package/dist/types/src/components/BlueprintEditor/index.d.ts.map +1 -1
  69. package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/Prompt/PromptBar.stories.d.ts.map +1 -1
  71. package/dist/types/src/components/Thread/ThreadMessage.d.ts +2 -2
  72. package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
  73. package/dist/types/src/components/index.d.ts +1 -0
  74. package/dist/types/src/components/index.d.ts.map +1 -1
  75. package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -1
  76. package/dist/types/src/stories/Prompt.stories.d.ts.map +1 -1
  77. package/dist/types/src/stories/Query.stories.d.ts.map +1 -1
  78. package/dist/types/src/stories/Research.stories.d.ts.map +1 -1
  79. package/dist/types/src/stories/testing.d.ts.map +1 -1
  80. package/dist/types/src/testing/index.d.ts +1 -1
  81. package/dist/types/src/testing/index.d.ts.map +1 -1
  82. package/dist/types/src/testing/test-blueprint.d.ts +14 -0
  83. package/dist/types/src/testing/test-blueprint.d.ts.map +1 -0
  84. package/dist/types/src/translations.d.ts.map +1 -1
  85. package/dist/types/src/types/types.d.ts +11 -5
  86. package/dist/types/src/types/types.d.ts.map +1 -1
  87. package/package.json +68 -68
  88. package/src/AssistantPlugin.tsx +5 -5
  89. package/src/capabilities/intent-resolver.ts +4 -3
  90. package/src/capabilities/react-surface.tsx +26 -7
  91. package/src/components/BlueprintEditor/BlueprintEditor.tsx +3 -4
  92. package/src/components/BlueprintEditor/index.ts +3 -1
  93. package/src/components/Prompt/Prompt.stories.tsx +1 -0
  94. package/src/components/Prompt/PromptBar.stories.tsx +1 -0
  95. package/src/components/Thread/ThreadMessage.tsx +3 -3
  96. package/src/components/index.ts +1 -0
  97. package/src/hooks/useContextProvider.ts +5 -6
  98. package/src/stories/Prompt.stories.tsx +1 -0
  99. package/src/stories/Query.stories.tsx +107 -40
  100. package/src/stories/Research.stories.tsx +1 -0
  101. package/src/stories/testing.ts +1 -5
  102. package/src/testing/index.ts +1 -1
  103. package/src/testing/{blueprint.ts → test-blueprint.ts} +21 -18
  104. package/src/translations.ts +5 -0
  105. package/src/types/types.ts +3 -3
  106. package/dist/lib/browser/intent-resolver-63EAHENI.mjs.map +0 -7
  107. package/dist/lib/browser/react-surface-XCV6NR75.mjs.map +0 -7
  108. package/dist/lib/node/chunk-H4A42LNR.cjs.map +0 -7
  109. package/dist/lib/node/intent-resolver-66F7WLW6.cjs.map +0 -7
  110. package/dist/lib/node/react-surface-TASAPRPQ.cjs.map +0 -7
  111. package/dist/lib/node-esm/intent-resolver-X3PWH7KM.mjs.map +0 -7
  112. package/dist/lib/node-esm/react-surface-QMIQCXUM.mjs.map +0 -7
  113. package/dist/types/src/testing/blueprint.d.ts +0 -7
  114. package/dist/types/src/testing/blueprint.d.ts.map +0 -1
  115. /package/dist/lib/browser/{AssistantDialog-K6POM23O.mjs.map → AssistantDialog-UAZSN6GT.mjs.map} +0 -0
  116. /package/dist/lib/browser/{ChatContainer-QTO4LE2C.mjs.map → ChatContainer-UTN3AO5U.mjs.map} +0 -0
  117. /package/dist/lib/browser/{app-graph-builder-YH4EGNBC.mjs.map → app-graph-builder-56OZ5RW4.mjs.map} +0 -0
  118. /package/dist/lib/browser/{settings-SHNQ4XXP.mjs.map → settings-BTFB7IQ6.mjs.map} +0 -0
  119. /package/dist/lib/node/{AssistantDialog-FDATKYE5.cjs.map → AssistantDialog-RTB5Q7FP.cjs.map} +0 -0
  120. /package/dist/lib/node/{ChatContainer-5CLHJOIQ.cjs.map → ChatContainer-P3JL4VZ7.cjs.map} +0 -0
  121. /package/dist/lib/node/{app-graph-builder-PSHIOW3Q.cjs.map → app-graph-builder-QLF353LH.cjs.map} +0 -0
  122. /package/dist/lib/node/{settings-ERKLO6IO.cjs.map → settings-LBJMT6YB.cjs.map} +0 -0
  123. /package/dist/lib/node-esm/{AssistantDialog-PIMYK774.mjs.map → AssistantDialog-DONAO6SA.mjs.map} +0 -0
  124. /package/dist/lib/node-esm/{ChatContainer-QTC5NYE2.mjs.map → ChatContainer-FVIGCDIG.mjs.map} +0 -0
  125. /package/dist/lib/node-esm/{app-graph-builder-Z3GMMJMD.mjs.map → app-graph-builder-5YX5TKKT.mjs.map} +0 -0
  126. /package/dist/lib/node-esm/{settings-IVQRZUCU.mjs.map → settings-TGCCAH5D.mjs.map} +0 -0
@@ -26,46 +26,42 @@ 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 react_surface_TASAPRPQ_exports = {};
30
- __export(react_surface_TASAPRPQ_exports, {
29
+ var react_surface_QXZTILW6_exports = {};
30
+ __export(react_surface_QXZTILW6_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_TASAPRPQ_exports);
34
- var import_chunk_FLJWJ35M = require("./chunk-FLJWJ35M.cjs");
33
+ module.exports = __toCommonJS(react_surface_QXZTILW6_exports);
34
+ var import_chunk_BWL5A3O5 = require("./chunk-BWL5A3O5.cjs");
35
35
  var import_chunk_4EEWTDQK = require("./chunk-4EEWTDQK.cjs");
36
36
  var import_chunk_HRNIUYVQ = require("./chunk-HRNIUYVQ.cjs");
37
- var import_chunk_H4A42LNR = require("./chunk-H4A42LNR.cjs");
37
+ var import_chunk_PG7YNQ4R = require("./chunk-PG7YNQ4R.cjs");
38
38
  var import_chunk_TS3H5OSX = require("./chunk-TS3H5OSX.cjs");
39
- var import_chunk_RXPA2C2A = require("./chunk-RXPA2C2A.cjs");
39
+ var import_chunk_UNVDZOLA = require("./chunk-UNVDZOLA.cjs");
40
40
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.cjs");
41
41
  var import_effect = require("effect");
42
42
  var import_react = __toESM(require("react"));
43
43
  var import_app_framework = require("@dxos/app-framework");
44
+ var import_assistant = require("@dxos/assistant");
44
45
  var import_echo = require("@dxos/echo");
45
46
  var import_echo_schema = require("@dxos/echo-schema");
46
47
  var import_local_storage = require("@dxos/local-storage");
47
48
  var import_types = require("@dxos/plugin-space/types");
48
49
  var import_echo2 = require("@dxos/react-client/echo");
50
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
49
51
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
50
52
  (0, import_app_framework.createSurface)({
51
53
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/plugin-settings`,
52
54
  role: "article",
53
55
  filter: (data) => data.subject instanceof import_local_storage.SettingsStore && data.subject.prefix === import_chunk_P74TWGMG.ASSISTANT_PLUGIN,
54
- component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.AssistantSettings, {
56
+ component: ({ data: { subject } }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.AssistantSettings, {
55
57
  settings: subject.value
56
58
  })
57
59
  }),
58
- (0, import_app_framework.createSurface)({
59
- id: import_chunk_P74TWGMG.ASSISTANT_DIALOG,
60
- role: "dialog",
61
- filter: (data) => data.component === import_chunk_P74TWGMG.ASSISTANT_DIALOG,
62
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.AssistantDialog, data.props)
63
- }),
64
60
  (0, import_app_framework.createSurface)({
65
61
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/chat`,
66
62
  role: "article",
67
- filter: (data) => import_echo.Obj.instanceOf(import_chunk_RXPA2C2A.AIChatType, data.subject) && data.variant !== "assistant-chat",
68
- component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.ChatContainer, {
63
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_UNVDZOLA.AIChatType, data.subject) && data.variant !== "assistant-chat",
64
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.ChatContainer, {
69
65
  role,
70
66
  chat: data.subject
71
67
  })
@@ -73,7 +69,7 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
73
69
  (0, import_app_framework.createSurface)({
74
70
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/object-chat`,
75
71
  role: "article",
76
- filter: (data) => (0, import_echo2.isEchoObject)(data.companionTo) && ((0, import_echo_schema.isInstanceOf)(import_chunk_RXPA2C2A.AIChatType, data.subject) || data.subject === "assistant-chat"),
72
+ filter: (data) => (0, import_echo2.isEchoObject)(data.companionTo) && ((0, import_echo_schema.isInstanceOf)(import_chunk_UNVDZOLA.AIChatType, data.subject) || data.subject === "assistant-chat"),
77
73
  component: ({ data, role }) => {
78
74
  const { dispatch } = (0, import_app_framework.useIntentDispatcher)();
79
75
  const associatedArtifact = (0, import_react.useMemo)(() => ({
@@ -87,12 +83,12 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
87
83
  const timeout = setTimeout(async () => {
88
84
  const space = (0, import_echo2.getSpace)(data.companionTo);
89
85
  if (space && data.subject === "assistant-chat") {
90
- const result = await space.db.query(import_echo_schema.Query.select(import_echo_schema.Filter.ids(data.companionTo.id)).targetOf(import_chunk_RXPA2C2A.CompanionTo).source()).run();
86
+ const result = await space.db.query(import_echo_schema.Query.select(import_echo_schema.Filter.ids(data.companionTo.id)).targetOf(import_chunk_UNVDZOLA.CompanionTo).source()).run();
91
87
  if (result.objects.length > 0) {
92
88
  return;
93
89
  }
94
90
  const program = import_effect.Effect.gen(function* () {
95
- const { object } = yield* dispatch((0, import_app_framework.createIntent)(import_chunk_RXPA2C2A.AssistantAction.CreateChat, {
91
+ const { object } = yield* dispatch((0, import_app_framework.createIntent)(import_chunk_UNVDZOLA.AssistantAction.CreateChat, {
96
92
  space
97
93
  }));
98
94
  yield* dispatch((0, import_app_framework.createIntent)(import_types.SpaceAction.AddObject, {
@@ -102,7 +98,7 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
102
98
  }));
103
99
  yield* dispatch((0, import_app_framework.createIntent)(import_types.SpaceAction.AddRelation, {
104
100
  space,
105
- schema: import_chunk_RXPA2C2A.CompanionTo,
101
+ schema: import_chunk_UNVDZOLA.CompanionTo,
106
102
  source: object,
107
103
  target: data.companionTo
108
104
  }));
@@ -117,29 +113,45 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
117
113
  if (data.subject === "assistant-chat") {
118
114
  return null;
119
115
  }
120
- return /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.ChatContainer, {
116
+ return /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.ChatContainer, {
121
117
  role,
122
118
  chat: data.subject,
123
119
  associatedArtifact
124
120
  });
125
121
  }
126
122
  }),
123
+ (0, import_app_framework.createSurface)({
124
+ id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/blueprint`,
125
+ role: "article",
126
+ filter: (data) => import_echo.Obj.instanceOf(import_assistant.Blueprint, data.subject),
127
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
128
+ role
129
+ }, /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.BlueprintEditor, {
130
+ blueprint: data.subject
131
+ }))
132
+ }),
127
133
  (0, import_app_framework.createSurface)({
128
134
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/template`,
129
135
  role: "article",
130
- filter: (data) => import_echo.Obj.instanceOf(import_chunk_RXPA2C2A.TemplateType, data.subject),
131
- component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.TemplateContainer, {
136
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_UNVDZOLA.TemplateType, data.subject),
137
+ component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.TemplateContainer, {
132
138
  role,
133
139
  template: data.subject
134
140
  })
135
141
  }),
142
+ (0, import_app_framework.createSurface)({
143
+ id: import_chunk_P74TWGMG.ASSISTANT_DIALOG,
144
+ role: "dialog",
145
+ filter: (data) => data.component === import_chunk_P74TWGMG.ASSISTANT_DIALOG,
146
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.AssistantDialog, data.props)
147
+ }),
136
148
  (0, import_app_framework.createSurface)({
137
149
  id: `${import_chunk_P74TWGMG.ASSISTANT_PLUGIN}/prompt-settings`,
138
150
  role: "object-settings",
139
- filter: (data) => import_echo.Obj.instanceOf(import_chunk_RXPA2C2A.TemplateType, data.subject),
140
- component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_FLJWJ35M.PromptSettings, {
151
+ filter: (data) => import_echo.Obj.instanceOf(import_chunk_UNVDZOLA.TemplateType, data.subject),
152
+ component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(import_chunk_BWL5A3O5.PromptSettings, {
141
153
  template: data.subject
142
154
  })
143
155
  })
144
156
  ]);
145
- //# sourceMappingURL=react-surface-TASAPRPQ.cjs.map
157
+ //# sourceMappingURL=react-surface-QXZTILW6.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect } from 'effect';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { Capabilities, contributes, createIntent, createSurface, useIntentDispatcher } from '@dxos/app-framework';\nimport { Blueprint } from '@dxos/assistant';\nimport { Obj } from '@dxos/echo';\nimport { Filter, isInstanceOf, Query } from '@dxos/echo-schema';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type AnyLiveObject,\n fullyQualifiedId,\n getSpace,\n getTypename,\n isEchoObject,\n type SpaceId,\n} from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport {\n AssistantDialog,\n AssistantSettings,\n BlueprintEditor,\n ChatContainer,\n PromptSettings,\n TemplateContainer,\n} from '../components';\nimport { ASSISTANT_PLUGIN, ASSISTANT_DIALOG } from '../meta';\nimport { AIChatType, AssistantAction, type AssistantSettingsProps, CompanionTo, TemplateType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${ASSISTANT_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<AssistantSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === ASSISTANT_PLUGIN,\n component: ({ data: { subject } }) => <AssistantSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/chat`,\n role: 'article',\n filter: (data): data is { subject: AIChatType; variant: undefined } =>\n Obj.instanceOf(AIChatType, data.subject) && data.variant !== 'assistant-chat',\n component: ({ data, role }) => <ChatContainer role={role} chat={data.subject} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/object-chat`,\n role: 'article',\n filter: (data): data is { companionTo: AnyLiveObject<any>; subject: AIChatType | 'assistant-chat' } =>\n isEchoObject(data.companionTo) && (isInstanceOf(AIChatType, data.subject) || data.subject === 'assistant-chat'),\n component: ({ data, role }) => {\n const { dispatch } = useIntentDispatcher();\n const associatedArtifact = useMemo(\n () => ({\n id: fullyQualifiedId(data.companionTo),\n typename: getTypename(data.companionTo) ?? 'unknown',\n spaceId: (getSpace(data.companionTo)?.id ?? 'unknown') as SpaceId,\n }),\n [data.companionTo],\n );\n\n // TODO(wittjosiah): Factor out to container.\n useEffect(() => {\n const timeout = setTimeout(async () => {\n const space = getSpace(data.companionTo);\n if (space && data.subject === 'assistant-chat') {\n const result = await space.db\n .query(Query.select(Filter.ids(data.companionTo.id)).targetOf(CompanionTo).source())\n .run();\n if (result.objects.length > 0) {\n return;\n }\n\n const program = Effect.gen(function* () {\n const { object } = yield* dispatch(createIntent(AssistantAction.CreateChat, { space }));\n yield* dispatch(createIntent(SpaceAction.AddObject, { object, target: space, hidden: true }));\n yield* dispatch(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: CompanionTo,\n source: object,\n target: data.companionTo,\n }),\n );\n });\n void Effect.runPromise(program);\n }\n });\n\n return () => clearTimeout(timeout);\n }, [data.subject]);\n\n if (data.subject === 'assistant-chat') {\n return null;\n }\n\n return <ChatContainer role={role} chat={data.subject} associatedArtifact={associatedArtifact} />;\n },\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/blueprint`,\n role: 'article',\n filter: (data): data is { subject: Blueprint } => Obj.instanceOf(Blueprint, data.subject),\n component: ({ data, role }) => (\n <StackItem.Content role={role}>\n <BlueprintEditor blueprint={data.subject} />\n </StackItem.Content>\n ),\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/template`,\n role: 'article',\n filter: (data): data is { subject: TemplateType } => Obj.instanceOf(TemplateType, data.subject),\n component: ({ data, role }) => <TemplateContainer role={role} template={data.subject} />,\n }),\n createSurface({\n id: ASSISTANT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: { chat: AIChatType } } => data.component === ASSISTANT_DIALOG,\n component: ({ data }) => <AssistantDialog {...data.props} />,\n }),\n createSurface({\n id: `${ASSISTANT_PLUGIN}/prompt-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: TemplateType } => Obj.instanceOf(TemplateType, data.subject),\n component: ({ data }) => <PromptSettings template={data.subject} />,\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "ASSISTANT_PLUGIN", "role", "filter", "data", "subject", "SettingsStore", "prefix", "component", "React", "AssistantSettings", "settings", "value", "Obj", "instanceOf", "AIChatType", "variant", "ChatContainer", "chat", "isEchoObject", "companionTo", "isInstanceOf", "dispatch", "useIntentDispatcher", "associatedArtifact", "useMemo", "fullyQualifiedId", "typename", "getTypename", "spaceId", "getSpace", "useEffect", "timeout", "setTimeout", "space", "result", "db", "query", "Query", "select", "Filter", "ids", "targetOf", "CompanionTo", "source", "run", "objects", "length", "program", "Effect", "gen", "object", "createIntent", "AssistantAction", "CreateChat", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "runPromise", "clearTimeout", "Blueprint", "StackItem", "Content", "BlueprintEditor", "blueprint", "TemplateType", "TemplateContainer", "template", "ASSISTANT_DIALOG", "AssistantDialog", "props", "PromptSettings"]
7
+ }
@@ -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_ERKLO6IO_exports = {};
20
- __export(settings_ERKLO6IO_exports, {
19
+ var settings_LBJMT6YB_exports = {};
20
+ __export(settings_LBJMT6YB_exports, {
21
21
  default: () => settings_default
22
22
  });
23
- module.exports = __toCommonJS(settings_ERKLO6IO_exports);
24
- var import_chunk_RXPA2C2A = require("./chunk-RXPA2C2A.cjs");
23
+ module.exports = __toCommonJS(settings_LBJMT6YB_exports);
24
+ var import_chunk_UNVDZOLA = require("./chunk-UNVDZOLA.cjs");
25
25
  var import_chunk_P74TWGMG = require("./chunk-P74TWGMG.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
29
  const settings = (0, import_live_object.live)({});
30
30
  return (0, import_app_framework.contributes)(import_app_framework.Capabilities.Settings, {
31
- schema: import_chunk_RXPA2C2A.AssistantSettingsSchema,
31
+ schema: import_chunk_UNVDZOLA.AssistantSettingsSchema,
32
32
  prefix: import_chunk_P74TWGMG.ASSISTANT_PLUGIN,
33
33
  value: settings
34
34
  });
35
35
  };
36
- //# sourceMappingURL=settings-ERKLO6IO.cjs.map
36
+ //# sourceMappingURL=settings-LBJMT6YB.cjs.map
@@ -18,22 +18,22 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- AIChatType: () => import_chunk_RXPA2C2A.AIChatType,
22
- ApiAuthorization: () => import_chunk_RXPA2C2A.ApiAuthorization,
23
- AssistantAction: () => import_chunk_RXPA2C2A.AssistantAction,
24
- AssistantSettingsSchema: () => import_chunk_RXPA2C2A.AssistantSettingsSchema,
25
- CompanionTo: () => import_chunk_RXPA2C2A.CompanionTo,
26
- LLM_PROVIDERS: () => import_chunk_RXPA2C2A.LLM_PROVIDERS,
27
- ServiceType: () => import_chunk_RXPA2C2A.ServiceType,
28
- TemplateInputSchema: () => import_chunk_RXPA2C2A.TemplateInputSchema,
29
- TemplateInputType: () => import_chunk_RXPA2C2A.TemplateInputType,
30
- TemplateKindSchema: () => import_chunk_RXPA2C2A.TemplateKindSchema,
31
- TemplateKinds: () => import_chunk_RXPA2C2A.TemplateKinds,
32
- TemplateType: () => import_chunk_RXPA2C2A.TemplateType,
33
- categoryIcons: () => import_chunk_RXPA2C2A.categoryIcons
21
+ AIChatType: () => import_chunk_UNVDZOLA.AIChatType,
22
+ ApiAuthorization: () => import_chunk_UNVDZOLA.ApiAuthorization,
23
+ AssistantAction: () => import_chunk_UNVDZOLA.AssistantAction,
24
+ AssistantSettingsSchema: () => import_chunk_UNVDZOLA.AssistantSettingsSchema,
25
+ CompanionTo: () => import_chunk_UNVDZOLA.CompanionTo,
26
+ LLM_PROVIDERS: () => import_chunk_UNVDZOLA.LLM_PROVIDERS,
27
+ ServiceType: () => import_chunk_UNVDZOLA.ServiceType,
28
+ TemplateInputSchema: () => import_chunk_UNVDZOLA.TemplateInputSchema,
29
+ TemplateInputType: () => import_chunk_UNVDZOLA.TemplateInputType,
30
+ TemplateKindSchema: () => import_chunk_UNVDZOLA.TemplateKindSchema,
31
+ TemplateKinds: () => import_chunk_UNVDZOLA.TemplateKinds,
32
+ TemplateType: () => import_chunk_UNVDZOLA.TemplateType,
33
+ categoryIcons: () => import_chunk_UNVDZOLA.categoryIcons
34
34
  });
35
35
  module.exports = __toCommonJS(types_exports);
36
- var import_chunk_RXPA2C2A = require("../chunk-RXPA2C2A.cjs");
36
+ var import_chunk_UNVDZOLA = require("../chunk-UNVDZOLA.cjs");
37
37
  var import_chunk_P74TWGMG = require("../chunk-P74TWGMG.cjs");
38
38
  // Annotate the CommonJS export names for ESM import in node:
39
39
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n CompanionTo,\n LLM_PROVIDERS,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n} from \"../chunk-RXPA2C2A.cjs\";\nimport \"../chunk-P74TWGMG.cjs\";\nexport {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n CompanionTo,\n LLM_PROVIDERS,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n CompanionTo,\n LLM_PROVIDERS,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n} from \"../chunk-UNVDZOLA.cjs\";\nimport \"../chunk-P74TWGMG.cjs\";\nexport {\n AIChatType,\n ApiAuthorization,\n AssistantAction,\n AssistantSettingsSchema,\n CompanionTo,\n LLM_PROVIDERS,\n ServiceType,\n TemplateInputSchema,\n TemplateInputType,\n TemplateKindSchema,\n TemplateKinds,\n TemplateType,\n categoryIcons\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAcO;AACP,4BAAO;",
6
6
  "names": []
7
7
  }
@@ -4,9 +4,9 @@ import {
4
4
  } from "./chunk-CDAILLCU.mjs";
5
5
  import {
6
6
  ThreadContainer
7
- } from "./chunk-SI5LOQEO.mjs";
7
+ } from "./chunk-MNH6E6EB.mjs";
8
8
  import "./chunk-HLPGKJ7N.mjs";
9
- import "./chunk-ZKBACPIW.mjs";
9
+ import "./chunk-TQYSF2GS.mjs";
10
10
  import {
11
11
  ASSISTANT_PLUGIN
12
12
  } from "./chunk-BB2TAT4P.mjs";
@@ -44,4 +44,4 @@ export {
44
44
  AssistantDialog,
45
45
  AssistantDialog_default as default
46
46
  };
47
- //# sourceMappingURL=AssistantDialog-PIMYK774.mjs.map
47
+ //# sourceMappingURL=AssistantDialog-DONAO6SA.mjs.map
@@ -0,0 +1,47 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // packages/plugins/plugin-assistant/src/components/BlueprintEditor/BlueprintEditor.tsx
4
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
5
+ import React from "react";
6
+ import { Blueprint } from "@dxos/assistant";
7
+ import { toJsonSchema } from "@dxos/echo-schema";
8
+ import { useThemeContext } from "@dxos/react-ui";
9
+ import { createBasicExtensions, createJsonExtensions, createThemeExtensions, editorMonospace, useTextEditor } from "@dxos/react-ui-editor";
10
+ import { mx } from "@dxos/react-ui-theme";
11
+ var BlueprintEditor = ({ classNames, blueprint }) => {
12
+ var _effect = _useSignals();
13
+ try {
14
+ const { themeMode } = useThemeContext();
15
+ const { parentRef } = useTextEditor({
16
+ initialValue: JSON.stringify(blueprint, null, 2),
17
+ extensions: [
18
+ createBasicExtensions({
19
+ lineWrapping: false
20
+ }),
21
+ createThemeExtensions({
22
+ themeMode,
23
+ syntaxHighlighting: true
24
+ }),
25
+ createJsonExtensions({
26
+ schema: toJsonSchema(Blueprint, {
27
+ strict: true
28
+ })
29
+ }),
30
+ editorMonospace
31
+ ]
32
+ });
33
+ return /* @__PURE__ */ React.createElement("div", {
34
+ ref: parentRef,
35
+ className: mx("flex w-full pli-2 overflow-x-scroll border-x border-separator", classNames)
36
+ });
37
+ } finally {
38
+ _effect.f();
39
+ }
40
+ };
41
+
42
+ // packages/plugins/plugin-assistant/src/components/BlueprintEditor/index.ts
43
+ var BlueprintEditor_default = BlueprintEditor;
44
+ export {
45
+ BlueprintEditor_default as default
46
+ };
47
+ //# sourceMappingURL=BlueprintEditor-CTARB2FO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/BlueprintEditor/BlueprintEditor.tsx", "../../../src/components/BlueprintEditor/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Blueprint } from '@dxos/assistant';\nimport { toJsonSchema } from '@dxos/echo-schema';\nimport { useThemeContext, type ThemedClassName } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createJsonExtensions,\n createThemeExtensions,\n editorMonospace,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type BlueprintEditorProps = ThemedClassName<{\n blueprint: Blueprint;\n}>;\n\n// TODO(burdon): Factor out JsonEditor.\n// TODO(burdon): Make editable.\nexport const BlueprintEditor = ({ classNames, blueprint }: BlueprintEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor({\n initialValue: JSON.stringify(blueprint, null, 2),\n extensions: [\n createBasicExtensions({ lineWrapping: false }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n createJsonExtensions({ schema: toJsonSchema(Blueprint, { strict: true }) }),\n editorMonospace,\n ],\n });\n\n return (\n <div ref={parentRef} className={mx('flex w-full pli-2 overflow-x-scroll border-x border-separator', classNames)} />\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { BlueprintEditor } from './BlueprintEditor';\n\nexport default BlueprintEditor;\n"],
5
+ "mappings": ";;;;AAIA,OAAOA,WAAW;AAElB,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,uBAA6C;AACtD,SACEC,uBACAC,sBACAC,uBACAC,iBACAC,qBACK;AACP,SAASC,UAAU;AAQZ,IAAMC,kBAAkB,CAAC,EAAEC,YAAYC,UAAS,MAAwB;;;AAC7E,UAAM,EAAEC,UAAS,IAAKC,gBAAAA;AACtB,UAAM,EAAEC,UAAS,IAAKC,cAAc;MAClCC,cAAcC,KAAKC,UAAUP,WAAW,MAAM,CAAA;MAC9CQ,YAAY;QACVC,sBAAsB;UAAEC,cAAc;QAAM,CAAA;QAC5CC,sBAAsB;UAAEV;UAAWW,oBAAoB;QAAK,CAAA;QAC5DC,qBAAqB;UAAEC,QAAQC,aAAaC,WAAW;YAAEC,QAAQ;UAAK,CAAA;QAAG,CAAA;QACzEC;;IAEJ,CAAA;AAEA,WACE,sBAAA,cAACC,OAAAA;MAAIC,KAAKjB;MAAWkB,WAAWC,GAAG,iEAAiEvB,UAAAA;;;;;AAExG;;;ACjCA,IAAA,0BAAewB;",
6
+ "names": ["React", "Blueprint", "toJsonSchema", "useThemeContext", "createBasicExtensions", "createJsonExtensions", "createThemeExtensions", "editorMonospace", "useTextEditor", "mx", "BlueprintEditor", "classNames", "blueprint", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "initialValue", "JSON", "stringify", "extensions", "createBasicExtensions", "lineWrapping", "createThemeExtensions", "syntaxHighlighting", "createJsonExtensions", "schema", "toJsonSchema", "Blueprint", "strict", "editorMonospace", "div", "ref", "className", "mx", "BlueprintEditor"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadContainer
4
- } from "./chunk-SI5LOQEO.mjs";
4
+ } from "./chunk-MNH6E6EB.mjs";
5
5
  import "./chunk-HLPGKJ7N.mjs";
6
- import "./chunk-ZKBACPIW.mjs";
6
+ import "./chunk-TQYSF2GS.mjs";
7
7
  import {
8
8
  ASSISTANT_PLUGIN
9
9
  } from "./chunk-BB2TAT4P.mjs";
@@ -37,4 +37,4 @@ export {
37
37
  ChatContainer,
38
38
  ChatContainer_default as default
39
39
  };
40
- //# sourceMappingURL=ChatContainer-QTC5NYE2.mjs.map
40
+ //# sourceMappingURL=ChatContainer-FVIGCDIG.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  AssistantAction,
5
5
  CompanionTo,
6
6
  TemplateType
7
- } from "./chunk-ZKBACPIW.mjs";
7
+ } from "./chunk-TQYSF2GS.mjs";
8
8
  import {
9
9
  ASSISTANT_DIALOG,
10
10
  ASSISTANT_PLUGIN
@@ -204,4 +204,4 @@ var getOrCreateChat = async (dispatch, space) => {
204
204
  export {
205
205
  app_graph_builder_default as default
206
206
  };
207
- //# sourceMappingURL=app-graph-builder-Z3GMMJMD.mjs.map
207
+ //# sourceMappingURL=app-graph-builder-5YX5TKKT.mjs.map
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  LLM_PROVIDERS,
4
4
  TemplateKinds
5
- } from "./chunk-ZKBACPIW.mjs";
5
+ } from "./chunk-TQYSF2GS.mjs";
6
6
  import {
7
7
  ASSISTANT_PLUGIN
8
8
  } from "./chunk-BB2TAT4P.mjs";
@@ -142,15 +142,17 @@ var PromptSettings = ({ template }) => {
142
142
 
143
143
  // packages/plugins/plugin-assistant/src/components/index.ts
144
144
  import { lazy } from "react";
145
- var AssistantDialog = lazy(() => import("./AssistantDialog-PIMYK774.mjs"));
146
- var ChatContainer = lazy(() => import("./ChatContainer-QTC5NYE2.mjs"));
145
+ var AssistantDialog = lazy(() => import("./AssistantDialog-DONAO6SA.mjs"));
146
+ var BlueprintEditor = lazy(() => import("./BlueprintEditor-CTARB2FO.mjs"));
147
+ var ChatContainer = lazy(() => import("./ChatContainer-FVIGCDIG.mjs"));
147
148
  var TemplateContainer = lazy(() => import("./TemplateContainer-IVDQ4XQG.mjs"));
148
149
 
149
150
  export {
150
151
  AssistantSettings,
151
152
  PromptSettings,
152
153
  AssistantDialog,
154
+ BlueprintEditor,
153
155
  ChatContainer,
154
156
  TemplateContainer
155
157
  };
156
- //# sourceMappingURL=chunk-QU626JMR.mjs.map
158
+ //# sourceMappingURL=chunk-GJE4WCUJ.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/components/PromptSettings.tsx", "../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/ai';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { LLM_PROVIDERS, type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out default Selector.\nconst DEFAULT_VALUE = '__default';\n\nconst LLM_PROVIDER_LABELS = {\n edge: 'DXOS',\n ollama: 'Ollama',\n lmstudio: 'LM Studio',\n} as const;\n\nexport const AssistantSettings = ({ settings }: { settings: AssistantSettingsProps }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings llm provider label')}>\n <Select.Root\n value={settings.llmProvider ?? 'edge'}\n onValueChange={(value) => {\n settings.llmProvider = value === DEFAULT_VALUE ? undefined : (value as any);\n }}\n >\n <Select.TriggerButton placeholder={t('settings llm provider label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {LLM_PROVIDERS.map((model) => (\n <Select.Option key={model} value={model}>\n {LLM_PROVIDER_LABELS[model]}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Match, type Schema } from 'effect';\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { Input, Select, Toolbar, useTranslation } from '@dxos/react-ui';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateType, type TemplateKindSchema } from '../types';\n\nexport const PromptSettings = ({ template }: { template: TemplateType }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n const handleKindChange = useCallback(\n (value: string) => {\n const kind = Match.type<string>().pipe(\n Match.withReturnType<Schema.Schema.Type<typeof TemplateKindSchema>>(),\n Match.when('always', () => ({ include: 'always' })),\n Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),\n Match.when('automatically', () => ({ include: 'automatically', description: '' })),\n Match.orElse(() => ({ include: 'manual' })),\n )(value);\n\n template.kind = kind;\n },\n [template],\n );\n\n const handleTypenameChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'schema-matching') {\n template.kind.typename = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n const handleDescriptionChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'automatically') {\n template.kind.description = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n return (\n <div className='p-2 flex flex-col gap-4'>\n <h2>{t('prompt rules label')}</h2>\n <Toolbar.Root>\n <Select.Root value={template.kind.include} onValueChange={handleKindChange}>\n <Toolbar.Button asChild>\n <Select.TriggerButton />\n </Toolbar.Button>\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {TemplateKinds.map((kind) => (\n <Select.Option key={kind} value={kind}>\n {kind}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n {template.kind.include === 'schema-matching' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('typename placeholder')}\n defaultValue={template.kind.typename}\n onChange={handleTypenameChange}\n />\n </Input.Root>\n )}\n {template.kind.include === 'automatically' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('description placeholder')}\n defaultValue={template.kind.description}\n onChange={handleDescriptionChange}\n />\n </Input.Root>\n )}\n </Toolbar.Root>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AmbientDialog';\nexport * from './AssistantSettings';\nexport * from './Prompt';\nexport * from './PromptSettings';\nexport * from './TemplateEditor';\nexport * from './Thread';\nexport * from './Toolbox';\n\n// TODO(burdon): Lazy loading causes issues with Tabster.\n// Repro: open assistant dialog then close.\n// https://github.com/microsoft/fluentui/issues/34020\nexport const AssistantDialog = lazy(() => import('./AssistantDialog'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
- "mappings": "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",
6
- "names": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "Match", "React", "useCallback", "debounce", "Input", "Select", "Toolbar", "useTranslation", "PromptSettings", "template", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "React", "div", "className", "h2", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Content", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "lazy", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DEFAULT_EDGE_MODELS, DEFAULT_OLLAMA_MODELS } from '@dxos/ai';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { LLM_PROVIDERS, type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out default Selector.\nconst DEFAULT_VALUE = '__default';\n\nconst LLM_PROVIDER_LABELS = {\n edge: 'DXOS',\n ollama: 'Ollama',\n lmstudio: 'LM Studio',\n} as const;\n\nexport const AssistantSettings = ({ settings }: { settings: AssistantSettingsProps }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n return (\n <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings custom prompts label')}>\n <Input.Switch\n checked={!!settings.customPrompts}\n onCheckedChange={(checked) => (settings.customPrompts = checked)}\n />\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings llm provider label')}>\n <Select.Root\n value={settings.llmProvider ?? 'edge'}\n onValueChange={(value) => {\n settings.llmProvider = value === DEFAULT_VALUE ? undefined : (value as any);\n }}\n >\n <Select.TriggerButton placeholder={t('settings llm provider label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {LLM_PROVIDERS.map((model) => (\n <Select.Option key={model} value={model}>\n {LLM_PROVIDER_LABELS[model]}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings edge llm model label')}>\n <Select.Root\n value={settings.edgeModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.edgeModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_EDGE_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n\n <DeprecatedFormInput label={t('settings ollama llm model label')}>\n <Select.Root\n value={settings.ollamaModel ?? DEFAULT_VALUE}\n onValueChange={(value) => {\n settings.ollamaModel = value === DEFAULT_VALUE ? undefined : value;\n }}\n >\n <Select.TriggerButton placeholder={t('settings default llm model label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={DEFAULT_VALUE}>{t('settings default label')}</Select.Option>\n {DEFAULT_OLLAMA_MODELS.map((model) => (\n <Select.Option key={model} value={model}>\n {model}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </DeprecatedFormInput>\n </DeprecatedFormContainer>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Match, type Schema } from 'effect';\nimport React, { type ChangeEvent, useCallback } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { Input, Select, Toolbar, useTranslation } from '@dxos/react-ui';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateType, type TemplateKindSchema } from '../types';\n\nexport const PromptSettings = ({ template }: { template: TemplateType }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n\n const handleKindChange = useCallback(\n (value: string) => {\n const kind = Match.type<string>().pipe(\n Match.withReturnType<Schema.Schema.Type<typeof TemplateKindSchema>>(),\n Match.when('always', () => ({ include: 'always' })),\n Match.when('schema-matching', () => ({ include: 'schema-matching', typename: '' })),\n Match.when('automatically', () => ({ include: 'automatically', description: '' })),\n Match.orElse(() => ({ include: 'manual' })),\n )(value);\n\n template.kind = kind;\n },\n [template],\n );\n\n const handleTypenameChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'schema-matching') {\n template.kind.typename = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n const handleDescriptionChange = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (template.kind.include === 'automatically') {\n template.kind.description = event.target.value;\n }\n }, 300),\n [template.kind.include],\n );\n\n return (\n <div className='p-2 flex flex-col gap-4'>\n <h2>{t('prompt rules label')}</h2>\n <Toolbar.Root>\n <Select.Root value={template.kind.include} onValueChange={handleKindChange}>\n <Toolbar.Button asChild>\n <Select.TriggerButton />\n </Toolbar.Button>\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {TemplateKinds.map((kind) => (\n <Select.Option key={kind} value={kind}>\n {kind}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n {template.kind.include === 'schema-matching' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('typename placeholder')}\n defaultValue={template.kind.typename}\n onChange={handleTypenameChange}\n />\n </Input.Root>\n )}\n {template.kind.include === 'automatically' && (\n <Input.Root>\n <Input.TextInput\n placeholder={t('description placeholder')}\n defaultValue={template.kind.description}\n onChange={handleDescriptionChange}\n />\n </Input.Root>\n )}\n </Toolbar.Root>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AmbientDialog';\nexport * from './AssistantSettings';\nexport * from './Prompt';\nexport * from './PromptSettings';\nexport * from './TemplateEditor';\nexport * from './Thread';\nexport * from './Toolbox';\n\n// TODO(burdon): Lazy loading causes issues with Tabster.\n// Repro: open assistant dialog then close.\n// https://github.com/microsoft/fluentui/issues/34020\nexport const AssistantDialog = lazy(() => import('./AssistantDialog'));\nexport const BlueprintEditor = lazy(() => import('./BlueprintEditor'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\nexport const TemplateContainer = lazy(() => import('./TemplateContainer'));\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "DEFAULT_EDGE_MODELS", "DEFAULT_OLLAMA_MODELS", "Input", "Select", "useTranslation", "DeprecatedFormContainer", "DeprecatedFormInput", "DEFAULT_VALUE", "LLM_PROVIDER_LABELS", "edge", "ollama", "lmstudio", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "Select", "Root", "value", "llmProvider", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "LLM_PROVIDERS", "map", "model", "key", "edgeModel", "DEFAULT_EDGE_MODELS", "ollamaModel", "DEFAULT_OLLAMA_MODELS", "Match", "React", "useCallback", "debounce", "Input", "Select", "Toolbar", "useTranslation", "PromptSettings", "template", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "React", "div", "className", "h2", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Content", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "lazy", "AssistantDialog", "lazy", "BlueprintEditor", "ChatContainer", "TemplateContainer"]
7
7
  }
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  ServiceType,
7
7
  categoryIcons
8
- } from "./chunk-ZKBACPIW.mjs";
8
+ } from "./chunk-TQYSF2GS.mjs";
9
9
  import {
10
10
  ASSISTANT_PLUGIN
11
11
  } from "./chunk-BB2TAT4P.mjs";
@@ -1715,10 +1715,10 @@ import { isNonNullable as isNonNullable3 } from "@dxos/util";
1715
1715
  // packages/plugins/plugin-assistant/src/capabilities/index.ts
1716
1716
  import { lazy } from "@dxos/app-framework";
1717
1717
  var AiClient = lazy(() => import("./ai-client-I5LXHMOZ.mjs"));
1718
- var AppGraphBuilder = lazy(() => import("./app-graph-builder-Z3GMMJMD.mjs"));
1719
- var IntentResolver = lazy(() => import("./intent-resolver-X3PWH7KM.mjs"));
1720
- var ReactSurface = lazy(() => import("./react-surface-QMIQCXUM.mjs"));
1721
- var Settings = lazy(() => import("./settings-IVQRZUCU.mjs"));
1718
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-5YX5TKKT.mjs"));
1719
+ var IntentResolver = lazy(() => import("./intent-resolver-N5TM3RTL.mjs"));
1720
+ var ReactSurface = lazy(() => import("./react-surface-FTKGQQD2.mjs"));
1721
+ var Settings = lazy(() => import("./settings-TGCCAH5D.mjs"));
1722
1722
 
1723
1723
  // packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx
1724
1724
  var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useChatProcessor.tsx";
@@ -1842,11 +1842,35 @@ var useMessageQueue = (chat) => {
1842
1842
  // packages/plugins/plugin-assistant/src/hooks/useServices.ts
1843
1843
  import { useEffect as useEffect4, useMemo as useMemo5, useState as useState5 } from "react";
1844
1844
 
1845
- // packages/plugins/plugin-assistant/src/testing/blueprint.ts
1845
+ // packages/plugins/plugin-assistant/src/testing/test-blueprint.ts
1846
+ import { ToolRegistry } from "@dxos/ai";
1846
1847
  import { EXA_API_KEY } from "@dxos/ai/testing";
1847
- import { createExaTool, createGraphWriterTool, createLocalSearchTool } from "@dxos/assistant";
1848
+ import { BlueprintParser, createExaTool, createGraphWriterTool, createLocalSearchTool } from "@dxos/assistant";
1848
1849
  import { DataTypes } from "@dxos/schema";
1849
1850
  import { isNonNullable as isNonNullable4 } from "@dxos/util";
1851
+ var RESEARCH_BLUEPRINT = BlueprintParser.create().parse({
1852
+ steps: [
1853
+ {
1854
+ instructions: "Research information and entities related to the selected objects.",
1855
+ tools: [
1856
+ "search/web_search"
1857
+ ]
1858
+ },
1859
+ {
1860
+ instructions: "Based on your research find matching entires that are already in the graph. Do exaustive research.",
1861
+ tools: [
1862
+ "search/local_search"
1863
+ ]
1864
+ },
1865
+ {
1866
+ instructions: "Add researched data to the graph. Make connections to existing objects.",
1867
+ tools: [
1868
+ "search/local_search",
1869
+ "graph/writer"
1870
+ ]
1871
+ }
1872
+ ]
1873
+ });
1850
1874
 
1851
1875
  // packages/plugins/plugin-assistant/src/testing/test-functions.ts
1852
1876
  import { DEFAULT_EDGE_MODEL as DEFAULT_EDGE_MODEL3 } from "@dxos/ai";
@@ -1950,7 +1974,7 @@ import { useMemo as useMemo6 } from "react";
1950
1974
  import { Capabilities as Capabilities3, useCapabilities as useCapabilities3 } from "@dxos/app-framework";
1951
1975
  import { Filter as Filter4 } from "@dxos/client/echo";
1952
1976
  import { Obj } from "@dxos/echo";
1953
- import { getDXN, getLabel } from "@dxos/echo-schema";
1977
+ import { getObjectDXN, getLabel } from "@dxos/echo-schema";
1954
1978
  import { log as log7 } from "@dxos/log";
1955
1979
  var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/hooks/useContextProvider.ts";
1956
1980
  var stringMatch = (query, label) => label.toLowerCase().startsWith(query.toLowerCase());
@@ -1970,13 +1994,13 @@ var useContextProvider = (space) => {
1970
1994
  label: getLabel(Obj.getSchema(object), object)
1971
1995
  }, {
1972
1996
  F: __dxlog_file8,
1973
- L: 38,
1997
+ L: 37,
1974
1998
  S: void 0,
1975
1999
  C: (f, a) => f(...a)
1976
2000
  });
1977
2001
  return object;
1978
- }).filter((object) => stringMatch(query, getLabel(Obj.getSchema(object), object) ?? "")).filter((object) => !!getDXN(object)).map((object) => ({
1979
- uri: getDXN(object).toString(),
2002
+ }).filter((object) => stringMatch(query, getLabel(Obj.getSchema(object), object) ?? "")).filter((object) => !!getObjectDXN(object)).map((object) => ({
2003
+ uri: getObjectDXN(object).toString(),
1980
2004
  label: getLabel(Obj.getSchema(object), object) ?? ""
1981
2005
  }));
1982
2006
  },
@@ -2104,4 +2128,4 @@ export {
2104
2128
  Settings,
2105
2129
  ThreadContainer
2106
2130
  };
2107
- //# sourceMappingURL=chunk-SI5LOQEO.mjs.map
2131
+ //# sourceMappingURL=chunk-MNH6E6EB.mjs.map