@dxos/plugin-assistant 0.8.4-main.2e9d522 → 0.8.4-main.5acf9ea

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 (109) hide show
  1. package/dist/lib/browser/{TemplateContainer-RPJ2LBOB.mjs → BlueprintContainer-IZ4AK5EO.mjs} +9 -8
  2. package/dist/lib/browser/BlueprintContainer-IZ4AK5EO.mjs.map +7 -0
  3. package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs → ChatContainer-RP3QEXYX.mjs} +3 -3
  4. package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs → ChatDialog-ZVLXFHEY.mjs} +3 -3
  5. package/dist/lib/browser/{app-graph-builder-JTXBKE7O.mjs → app-graph-builder-XSEOKJLG.mjs} +5 -64
  6. package/dist/lib/browser/app-graph-builder-XSEOKJLG.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-OWY4CUQY.mjs → chunk-63GG6U6D.mjs} +18 -37
  8. package/dist/lib/browser/chunk-63GG6U6D.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-JQBVLTM5.mjs → chunk-7W7LHTRH.mjs} +14 -1
  10. package/dist/lib/browser/chunk-7W7LHTRH.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-AEAEKWOC.mjs → chunk-KFXSBNZR.mjs} +10 -19
  12. package/dist/lib/browser/chunk-KFXSBNZR.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-EQDW6BYQ.mjs → chunk-LERGF5YG.mjs} +7 -7
  14. package/dist/lib/browser/{chunk-EQDW6BYQ.mjs.map → chunk-LERGF5YG.mjs.map} +3 -3
  15. package/dist/lib/browser/index.mjs +42 -30
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-5RMMCMXG.mjs → intent-resolver-MV3VSZLS.mjs} +19 -4
  18. package/dist/lib/browser/intent-resolver-MV3VSZLS.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-66VY37YQ.mjs → react-surface-3GYEHQRP.mjs} +14 -14
  21. package/dist/lib/browser/react-surface-3GYEHQRP.mjs.map +7 -0
  22. package/dist/lib/browser/{settings-2DGP3UTS.mjs → settings-5GTTCVGD.mjs} +2 -2
  23. package/dist/lib/browser/types/index.mjs +1 -1
  24. package/dist/lib/node-esm/{TemplateContainer-A3NAQCZE.mjs → BlueprintContainer-RGTMNLNX.mjs} +9 -8
  25. package/dist/lib/node-esm/BlueprintContainer-RGTMNLNX.mjs.map +7 -0
  26. package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs → ChatContainer-W3W6FWV3.mjs} +3 -3
  27. package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs → ChatDialog-QW4JRKVO.mjs} +3 -3
  28. package/dist/lib/node-esm/{app-graph-builder-OWSOXFTD.mjs → app-graph-builder-PANCJUHV.mjs} +5 -64
  29. package/dist/lib/node-esm/app-graph-builder-PANCJUHV.mjs.map +7 -0
  30. package/dist/lib/node-esm/{chunk-SENTQAEO.mjs → chunk-BFO3KHYL.mjs} +18 -37
  31. package/dist/lib/node-esm/chunk-BFO3KHYL.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-E33DNNDW.mjs → chunk-MS3PJARN.mjs} +7 -7
  33. package/dist/lib/node-esm/{chunk-E33DNNDW.mjs.map → chunk-MS3PJARN.mjs.map} +3 -3
  34. package/dist/lib/node-esm/{chunk-2XL6MNPE.mjs → chunk-VIIMA3XQ.mjs} +10 -19
  35. package/dist/lib/node-esm/chunk-VIIMA3XQ.mjs.map +7 -0
  36. package/dist/lib/node-esm/{chunk-BISJDTBK.mjs → chunk-Z7PUODRT.mjs} +14 -1
  37. package/dist/lib/node-esm/chunk-Z7PUODRT.mjs.map +7 -0
  38. package/dist/lib/node-esm/index.mjs +42 -30
  39. package/dist/lib/node-esm/index.mjs.map +3 -3
  40. package/dist/lib/node-esm/{intent-resolver-YPPYELY3.mjs → intent-resolver-3FMC3GHC.mjs} +19 -4
  41. package/dist/lib/node-esm/intent-resolver-3FMC3GHC.mjs.map +7 -0
  42. package/dist/lib/node-esm/meta.json +1 -1
  43. package/dist/lib/node-esm/{react-surface-RJMRBR2M.mjs → react-surface-QDQWJ7FZ.mjs} +14 -14
  44. package/dist/lib/node-esm/react-surface-QDQWJ7FZ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{settings-47RYZOU4.mjs → settings-J2EXEM5H.mjs} +2 -2
  46. package/dist/lib/node-esm/types/index.mjs +1 -1
  47. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  48. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  50. package/dist/types/src/capability-definitions.d.ts +7 -0
  51. package/dist/types/src/capability-definitions.d.ts.map +1 -0
  52. package/dist/types/src/components/BlueprintContainer.d.ts +8 -0
  53. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -0
  54. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts +0 -42
  55. package/dist/types/src/components/ChatThread/ChatThread.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts +2 -1
  57. package/dist/types/src/components/TemplateEditor/TemplateEditor.d.ts.map +1 -1
  58. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts +2 -1
  59. package/dist/types/src/components/TemplateEditor/TemplateForm.d.ts.map +1 -1
  60. package/dist/types/src/components/index.d.ts +1 -1
  61. package/dist/types/src/components/index.d.ts.map +1 -1
  62. package/dist/types/src/hooks/useChatServices.d.ts +2 -2
  63. package/dist/types/src/hooks/useChatServices.d.ts.map +1 -1
  64. package/dist/types/src/stories/Chat.stories.d.ts +2 -44
  65. package/dist/types/src/stories/Chat.stories.d.ts.map +1 -1
  66. package/dist/types/src/translations.d.ts +1 -10
  67. package/dist/types/src/translations.d.ts.map +1 -1
  68. package/dist/types/src/types/schema.d.ts +32 -0
  69. package/dist/types/src/types/schema.d.ts.map +1 -1
  70. package/dist/types/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +75 -73
  72. package/src/AssistantPlugin.tsx +32 -6
  73. package/src/capabilities/app-graph-builder.ts +2 -86
  74. package/src/capabilities/intent-resolver.ts +16 -2
  75. package/src/capabilities/react-surface.tsx +7 -7
  76. package/src/capability-definitions.ts +15 -0
  77. package/src/components/BlueprintContainer.tsx +24 -0
  78. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +4 -4
  79. package/src/components/TemplateEditor/TemplateEditor.tsx +12 -10
  80. package/src/components/TemplateEditor/TemplateForm.stories.tsx +4 -4
  81. package/src/components/TemplateEditor/TemplateForm.tsx +3 -2
  82. package/src/components/index.ts +1 -1
  83. package/src/hooks/useChatServices.ts +24 -48
  84. package/src/stories/Chat.stories.tsx +17 -24
  85. package/src/translations.ts +1 -10
  86. package/src/types/schema.ts +13 -0
  87. package/dist/lib/browser/TemplateContainer-RPJ2LBOB.mjs.map +0 -7
  88. package/dist/lib/browser/app-graph-builder-JTXBKE7O.mjs.map +0 -7
  89. package/dist/lib/browser/chunk-AEAEKWOC.mjs.map +0 -7
  90. package/dist/lib/browser/chunk-JQBVLTM5.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-OWY4CUQY.mjs.map +0 -7
  92. package/dist/lib/browser/intent-resolver-5RMMCMXG.mjs.map +0 -7
  93. package/dist/lib/browser/react-surface-66VY37YQ.mjs.map +0 -7
  94. package/dist/lib/node-esm/TemplateContainer-A3NAQCZE.mjs.map +0 -7
  95. package/dist/lib/node-esm/app-graph-builder-OWSOXFTD.mjs.map +0 -7
  96. package/dist/lib/node-esm/chunk-2XL6MNPE.mjs.map +0 -7
  97. package/dist/lib/node-esm/chunk-BISJDTBK.mjs.map +0 -7
  98. package/dist/lib/node-esm/chunk-SENTQAEO.mjs.map +0 -7
  99. package/dist/lib/node-esm/intent-resolver-YPPYELY3.mjs.map +0 -7
  100. package/dist/lib/node-esm/react-surface-RJMRBR2M.mjs.map +0 -7
  101. package/dist/types/src/components/TemplateContainer.d.ts +0 -8
  102. package/dist/types/src/components/TemplateContainer.d.ts.map +0 -1
  103. package/src/components/TemplateContainer.tsx +0 -24
  104. /package/dist/lib/browser/{ChatContainer-M3IHQLRS.mjs.map → ChatContainer-RP3QEXYX.mjs.map} +0 -0
  105. /package/dist/lib/browser/{ChatDialog-X6VN6QZI.mjs.map → ChatDialog-ZVLXFHEY.mjs.map} +0 -0
  106. /package/dist/lib/browser/{settings-2DGP3UTS.mjs.map → settings-5GTTCVGD.mjs.map} +0 -0
  107. /package/dist/lib/node-esm/{ChatContainer-VZT74PO2.mjs.map → ChatContainer-W3W6FWV3.mjs.map} +0 -0
  108. /package/dist/lib/node-esm/{ChatDialog-RJ6FDX4Q.mjs.map → ChatDialog-QW4JRKVO.mjs.map} +0 -0
  109. /package/dist/lib/node-esm/{settings-47RYZOU4.mjs.map → settings-J2EXEM5H.mjs.map} +0 -0
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  TemplateEditor
3
- } from "./chunk-AEAEKWOC.mjs";
3
+ } from "./chunk-KFXSBNZR.mjs";
4
4
  import "./chunk-FDCJSQYF.mjs";
5
5
 
6
- // src/components/TemplateContainer.tsx
6
+ // src/components/BlueprintContainer.tsx
7
7
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
8
8
  import React from "react";
9
9
  import { StackItem } from "@dxos/react-ui-stack";
10
- var TemplateContainer = ({ template }) => {
10
+ var BlueprintContainer = ({ blueprint }) => {
11
11
  var _effect = _useSignals();
12
12
  try {
13
13
  return /* @__PURE__ */ React.createElement(StackItem.Content, {
14
14
  classNames: "container-max-width"
15
15
  }, /* @__PURE__ */ React.createElement(TemplateEditor, {
16
- template
16
+ id: blueprint.id,
17
+ template: blueprint.instructions
17
18
  }));
18
19
  } finally {
19
20
  _effect.f();
20
21
  }
21
22
  };
22
- var TemplateContainer_default = TemplateContainer;
23
+ var BlueprintContainer_default = BlueprintContainer;
23
24
  export {
24
- TemplateContainer,
25
- TemplateContainer_default as default
25
+ BlueprintContainer,
26
+ BlueprintContainer_default as default
26
27
  };
27
- //# sourceMappingURL=TemplateContainer-RPJ2LBOB.mjs.map
28
+ //# sourceMappingURL=BlueprintContainer-IZ4AK5EO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/BlueprintContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Blueprint } from '@dxos/blueprints';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\n\nexport type BlueprintContainerProps = {\n blueprint: Blueprint.Blueprint;\n};\n\nexport const BlueprintContainer = ({ blueprint }: BlueprintContainerProps) => {\n return (\n <StackItem.Content classNames='container-max-width'>\n <TemplateEditor id={blueprint.id} template={blueprint.instructions} />\n </StackItem.Content>\n );\n};\n\nexport default BlueprintContainer;\n"],
5
+ "mappings": ";;;;;;;AAIA,OAAOA,WAAW;AAGlB,SAASC,iBAAiB;AAQnB,IAAMC,qBAAqB,CAAC,EAAEC,UAAS,MAA2B;;;AACvE,WACE,sBAAA,cAACC,UAAUC,SAAO;MAACC,YAAW;OAC5B,sBAAA,cAACC,gBAAAA;MAAeC,IAAIL,UAAUK;MAAIC,UAAUN,UAAUO;;;;;AAG5D;AAEA,IAAA,6BAAeR;",
6
+ "names": ["React", "StackItem", "BlueprintContainer", "blueprint", "StackItem", "Content", "classNames", "TemplateEditor", "id", "template", "instructions"]
7
+ }
@@ -3,8 +3,8 @@ import {
3
3
  hooks_exports,
4
4
  useChatProcessor,
5
5
  useChatServices
6
- } from "./chunk-OWY4CUQY.mjs";
7
- import "./chunk-JQBVLTM5.mjs";
6
+ } from "./chunk-63GG6U6D.mjs";
7
+ import "./chunk-7W7LHTRH.mjs";
8
8
  import {
9
9
  meta
10
10
  } from "./chunk-FDCJSQYF.mjs";
@@ -51,4 +51,4 @@ export {
51
51
  ChatContainer,
52
52
  ChatContainer_default as default
53
53
  };
54
- //# sourceMappingURL=ChatContainer-M3IHQLRS.mjs.map
54
+ //# sourceMappingURL=ChatContainer-RP3QEXYX.mjs.map
@@ -3,8 +3,8 @@ import {
3
3
  hooks_exports,
4
4
  useChatProcessor,
5
5
  useChatServices
6
- } from "./chunk-OWY4CUQY.mjs";
7
- import "./chunk-JQBVLTM5.mjs";
6
+ } from "./chunk-63GG6U6D.mjs";
7
+ import "./chunk-7W7LHTRH.mjs";
8
8
  import {
9
9
  meta
10
10
  } from "./chunk-FDCJSQYF.mjs";
@@ -69,4 +69,4 @@ export {
69
69
  ChatDialog,
70
70
  ChatDialog_default as default
71
71
  };
72
- //# sourceMappingURL=ChatDialog-X6VN6QZI.mjs.map
72
+ //# sourceMappingURL=ChatDialog-ZVLXFHEY.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Assistant
3
- } from "./chunk-JQBVLTM5.mjs";
3
+ } from "./chunk-7W7LHTRH.mjs";
4
4
  import {
5
5
  ASSISTANT_DIALOG,
6
6
  meta
@@ -10,7 +10,6 @@ import {
10
10
  import { Rx } from "@effect-rx/rx-react";
11
11
  import { Option, pipe } from "effect";
12
12
  import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
13
- import { Template } from "@dxos/blueprints";
14
13
  import { Sequence } from "@dxos/conductor";
15
14
  import { Obj } from "@dxos/echo";
16
15
  import { invariant } from "@dxos/invariant";
@@ -18,8 +17,8 @@ import { ClientCapabilities } from "@dxos/plugin-client";
18
17
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
19
18
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
20
19
  import { getActiveSpace, rxFromQuery } from "@dxos/plugin-space";
21
- import { SPACE_TYPE, SpaceAction } from "@dxos/plugin-space/types";
22
- import { Filter, Query, fullyQualifiedId, getSpace, isSpace } from "@dxos/react-client/echo";
20
+ import { SpaceAction } from "@dxos/plugin-space/types";
21
+ import { Filter, Query, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
23
22
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
24
23
  var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, [
25
24
  createExtension({
@@ -132,64 +131,6 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
132
131
  }
133
132
  }
134
133
  ]), Option.getOrElse(() => [])))
135
- }),
136
- createExtension({
137
- id: `${meta.id}/root`,
138
- connector: (node) => {
139
- let query;
140
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
141
- if (!query) {
142
- query = space.db.query(Query.type(Template.Template));
143
- }
144
- const templates = get(rxFromQuery(query));
145
- return templates.length > 0 ? [
146
- {
147
- id: `${meta.id}/templates`,
148
- type: `${meta.id}/templates`,
149
- data: null,
150
- properties: {
151
- label: [
152
- "templates label",
153
- {
154
- ns: meta.id
155
- }
156
- ],
157
- icon: "ph--file-code--regular",
158
- space
159
- }
160
- }
161
- ] : [];
162
- }), Option.getOrElse(() => [])));
163
- }
164
- }),
165
- createExtension({
166
- id: `${meta.id}/templates`,
167
- connector: (node) => {
168
- let query;
169
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === `${meta.id}/templates` && isSpace(node2.properties.space) ? Option.some(node2.properties.space) : Option.none()), Option.map((space) => {
170
- if (!query) {
171
- query = space.db.query(Query.type(Template.Template));
172
- }
173
- return get(rxFromQuery(query)).toSorted((a, b) => {
174
- const nameA = a.name ?? "";
175
- const nameB = b.name ?? "";
176
- return nameA.localeCompare(nameB);
177
- }).map((template) => ({
178
- id: fullyQualifiedId(template),
179
- type: `${meta.id}/template`,
180
- data: template,
181
- properties: {
182
- label: template.name ?? [
183
- "object placeholder",
184
- {
185
- ns: meta.id
186
- }
187
- ],
188
- icon: "ph--file-code--regular"
189
- }
190
- }));
191
- }), Option.getOrElse(() => [])));
192
- }
193
134
  })
194
135
  ]);
195
136
  var getOrCreateChat = async (dispatch, space) => {
@@ -204,7 +145,7 @@ var getOrCreateChat = async (dispatch, space) => {
204
145
  }));
205
146
  invariant(Obj.instanceOf(Assistant.Chat, data?.object), void 0, {
206
147
  F: __dxlog_file,
207
- L: 250,
148
+ L: 166,
208
149
  S: void 0,
209
150
  A: [
210
151
  "Obj.instanceOf(Assistant.Chat, data?.object)",
@@ -220,4 +161,4 @@ var getOrCreateChat = async (dispatch, space) => {
220
161
  export {
221
162
  app_graph_builder_default as default
222
163
  };
223
- //# sourceMappingURL=app-graph-builder-JTXBKE7O.mjs.map
164
+ //# sourceMappingURL=app-graph-builder-XSEOKJLG.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginContext,\n} from '@dxos/app-framework';\nimport { Sequence } from '@dxos/conductor';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID } from '@dxos/plugin-graph';\nimport { getActiveSpace, rxFromQuery } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, Query, type QueryResult, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, meta } from '../meta';\nimport { Assistant } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/assistant`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n const chat = await getOrCreateChat(dispatch, space);\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: meta.id }],\n icon: 'ph--sparkle--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 Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${meta.id}/object-chat-companion`,\n connector: (node) => {\n let query: QueryResult<Assistant.Chat> | undefined;\n return Rx.make((get) => {\n const nodeOption = get(node);\n if (Option.isNone(nodeOption)) {\n return [];\n }\n\n const object = nodeOption.value.data;\n if (!Obj.isObject(object)) {\n return [];\n }\n\n const space = getSpace(object);\n if (!space) {\n return [];\n }\n\n if (!query) {\n query = space.db.query(Query.select(Filter.ids(object.id)).targetOf(Assistant.CompanionTo).source());\n }\n\n const chat = get(rxFromQuery(query))[0];\n return [\n {\n id: [fullyQualifiedId(object), 'assistant-chat'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: chat ?? 'assistant-chat',\n properties: {\n label: ['assistant chat label', { ns: meta.id }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n });\n },\n }),\n\n createExtension({\n id: `${meta.id}/sequence-logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Sequence, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'logs'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'logs',\n properties: {\n label: ['sequence logs label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (\n dispatch: PromiseIntentDispatcher,\n space: Space,\n): Promise<Assistant.Chat | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(Assistant.Chat)).run();\n const { objects: relatedChats } = await space.db\n .query(Query.type(Assistant.Chat).sourceOf(Assistant.CompanionTo).source())\n .run();\n const chats = allChats.filter((chat) => !relatedChats.includes(chat));\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (chats.length > 0) {\n // TODO(burdon): Is this the most recent?\n return chats[chats.length - 1];\n }\n\n const { data } = await dispatch(createIntent(Assistant.CreateChat, { space }));\n invariant(Obj.instanceOf(Assistant.Chat, data?.object));\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": ["Rx", "Option", "pipe", "Capabilities", "contributes", "createIntent", "LayoutAction", "Sequence", "Obj", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "ROOT_ID", "getActiveSpace", "rxFromQuery", "SpaceAction", "Filter", "Query", "fullyQualifiedId", "getSpace", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "space", "getActiveSpace", "spaces", "default", "chat", "getOrCreateChat", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "getOrElse", "connector", "query", "nodeOption", "isNone", "object", "value", "Obj", "isObject", "getSpace", "db", "Query", "select", "Filter", "ids", "targetOf", "Assistant", "CompanionTo", "source", "rxFromQuery", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Sequence", "objects", "allChats", "Chat", "run", "relatedChats", "sourceOf", "chats", "filter", "includes", "length", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  ServiceType
3
- } from "./chunk-JQBVLTM5.mjs";
3
+ } from "./chunk-7W7LHTRH.mjs";
4
4
  import {
5
+ ASSISTANT_PLUGIN,
5
6
  __export,
6
7
  __reExport,
7
8
  meta
@@ -462,54 +463,33 @@ var useChatServices_exports = {};
462
463
  __export(useChatServices_exports, {
463
464
  useChatServices: () => useChatServices
464
465
  });
465
- __reExport(useChatServices_exports, assistant_star);
466
466
  import { Layer } from "effect";
467
467
  import { useMemo } from "react";
468
468
  import { useDeepCompareMemoize } from "use-deep-compare-effect";
469
- import { ToolRegistry } from "@dxos/ai";
470
- import { AiServiceTestingPreset } from "@dxos/ai/testing";
471
469
  import { Capabilities, useCapabilities } from "@dxos/app-framework";
472
470
  import { makeToolExecutionServiceFromFunctions, makeToolResolverFromFunctions } from "@dxos/assistant";
473
- import { ConfiguredCredentialsService, CredentialsService, DatabaseService, EventLogger, FunctionCallService, QueueService, TracingService } from "@dxos/functions";
471
+ import { ComputeEventLogger, CredentialsService, DatabaseService, LocalFunctionExecutionService, QueueService, RemoteFunctionExecutionService, TracingService } from "@dxos/functions";
472
+
473
+ // src/capability-definitions.ts
474
+ import { defineCapability } from "@dxos/app-framework";
475
+ (function(AssistantCapabilities2) {
476
+ AssistantCapabilities2.AiServiceLayer = defineCapability(`${ASSISTANT_PLUGIN}/capability/ai-service-factory`);
477
+ })(AssistantCapabilities || (AssistantCapabilities = {}));
478
+ var AssistantCapabilities;
479
+
480
+ // src/hooks/useChatServices.ts
481
+ __reExport(useChatServices_exports, assistant_star);
474
482
  import * as assistant_star from "@dxos/assistant";
475
483
  var useChatServices = ({ space }) => {
476
- const toolRegistry = useToolRegistry();
477
- const toolResolver = useToolResolver();
478
- const toolExecutionService = useToolExecutionService();
484
+ const aiServiceLayer = useCapabilities(AssistantCapabilities.AiServiceLayer).at(0) ?? Layer.die("AiService not found");
485
+ const functions = useCapabilities(Capabilities.Functions).flat();
479
486
  return useMemo(() => {
480
- return Layer.mergeAll(AiServiceTestingPreset("edge-remote").pipe(Layer.orDie), Layer.succeed(CredentialsService, new ConfiguredCredentialsService()), space ? Layer.succeed(DatabaseService, DatabaseService.make(space.db)) : DatabaseService.notAvailable, space ? Layer.succeed(QueueService, QueueService.make(space.queues)) : QueueService.notAvailable, Layer.succeed(FunctionCallService, FunctionCallService.mock()), Layer.succeed(TracingService, TracingService.noop), Layer.succeed(EventLogger, EventLogger.noop), toolResolver, toolExecutionService);
487
+ return Layer.mergeAll(aiServiceLayer, makeToolResolverFromFunctions(functions), makeToolExecutionServiceFromFunctions(functions), CredentialsService.configuredLayer([]), space ? DatabaseService.makeLayer(space.db) : DatabaseService.notAvailable, space ? QueueService.makeLayer(space.queues) : QueueService.notAvailable, ComputeEventLogger.layerFromTracing).pipe(Layer.provideMerge(TracingService.layerNoop), Layer.provideMerge(LocalFunctionExecutionService.layer), Layer.provideMerge(RemoteFunctionExecutionService.mockLayer));
481
488
  }, [
482
489
  space,
483
- toolRegistry,
484
- toolResolver
485
- ]);
486
- };
487
- var useToolResolver = () => {
488
- const functions = useCapabilities(Capabilities.Functions).flat();
489
- return useMemo(() => makeToolResolverFromFunctions(functions), [
490
490
  useDeepCompareMemoize(functions.map((f) => f.name))
491
491
  ]);
492
492
  };
493
- var useToolExecutionService = () => {
494
- const functions = useCapabilities(Capabilities.Functions).flat();
495
- return useMemo(() => makeToolExecutionServiceFromFunctions(functions), [
496
- useDeepCompareMemoize(functions.map((f) => f.name))
497
- ]);
498
- };
499
- var useToolRegistry = () => {
500
- const tools = useCapabilities(Capabilities.Tools).flat();
501
- return useMemo(() => {
502
- const toolRegistry = new ToolRegistry([]);
503
- for (const tool of tools) {
504
- if (!toolRegistry.has(tool)) {
505
- toolRegistry.register(tool);
506
- }
507
- }
508
- return toolRegistry;
509
- }, [
510
- useDeepCompareMemoize(tools)
511
- ]);
512
- };
513
493
 
514
494
  // src/hooks/index.ts
515
495
  __reExport(hooks_exports, useChatServices_exports);
@@ -2236,10 +2216,11 @@ var Chat = {
2236
2216
 
2237
2217
  export {
2238
2218
  useChatProcessor,
2219
+ AssistantCapabilities,
2239
2220
  useChatServices,
2240
2221
  hooks_exports,
2241
2222
  Toolbox,
2242
2223
  ToolboxContainer,
2243
2224
  Chat
2244
2225
  };
2245
- //# sourceMappingURL=chunk-OWY4CUQY.mjs.map
2226
+ //# sourceMappingURL=chunk-63GG6U6D.mjs.map