@dxos/plugin-assistant 0.8.3-main.7f5a14c → 0.8.3-staging.0fa589b

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 (155) hide show
  1. package/dist/lib/browser/{AssistantDialog-YCPMFK7Y.mjs → AssistantDialog-MQOOR364.mjs} +5 -5
  2. package/dist/lib/browser/{BlueprintContainer-4MEK52NT.mjs → BlueprintContainer-AT5Y7EXG.mjs} +145 -28
  3. package/dist/lib/browser/BlueprintContainer-AT5Y7EXG.mjs.map +7 -0
  4. package/dist/lib/browser/{ChatContainer-RYFYYEWI.mjs → ChatContainer-C2NEAS3A.mjs} +5 -5
  5. package/dist/lib/browser/{ai-client-MTCTMJ5N.mjs → ai-client-MK2ZZII2.mjs} +6 -6
  6. package/dist/lib/browser/ai-client-MK2ZZII2.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-DBCVARVI.mjs → app-graph-builder-E4H5DCOJ.mjs} +35 -22
  8. package/dist/lib/browser/app-graph-builder-E4H5DCOJ.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-ZVHA24BL.mjs → chunk-AAOKC2JN.mjs} +10 -8
  10. package/dist/lib/browser/{chunk-ZVHA24BL.mjs.map → chunk-AAOKC2JN.mjs.map} +3 -3
  11. package/dist/lib/browser/{chunk-WFZ4EPPI.mjs → chunk-BI6AHRNJ.mjs} +6 -6
  12. package/dist/lib/browser/{chunk-WFZ4EPPI.mjs.map → chunk-BI6AHRNJ.mjs.map} +1 -1
  13. package/dist/lib/browser/{chunk-DLWFPGZE.mjs → chunk-JO4W3MF7.mjs} +6 -6
  14. package/dist/lib/browser/{chunk-DLWFPGZE.mjs.map → chunk-JO4W3MF7.mjs.map} +3 -3
  15. package/dist/lib/browser/chunk-MEGMOFJB.mjs +16 -0
  16. package/dist/lib/browser/{chunk-3TIEETB2.mjs → chunk-UE3IZ4PN.mjs} +1 -1
  17. package/dist/lib/browser/{chunk-3TIEETB2.mjs.map → chunk-UE3IZ4PN.mjs.map} +1 -1
  18. package/dist/lib/browser/index.mjs +66 -23
  19. package/dist/lib/browser/index.mjs.map +4 -4
  20. package/dist/lib/browser/{intent-resolver-ID5NOIIJ.mjs → intent-resolver-3UICTGPM.mjs} +2 -2
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-surface-OD23FVUD.mjs → react-surface-LXCNUSZN.mjs} +23 -6
  23. package/dist/lib/browser/react-surface-LXCNUSZN.mjs.map +7 -0
  24. package/dist/lib/browser/{settings-FUYUBGSQ.mjs → settings-XRHXVWGB.mjs} +2 -2
  25. package/dist/lib/browser/types/index.mjs +1 -1
  26. package/dist/lib/node/{AssistantDialog-B5YKJOAF.cjs → AssistantDialog-AN4Z6YUV.cjs} +9 -9
  27. package/dist/lib/node/{BlueprintContainer-VD6EIWH7.cjs → BlueprintContainer-NOWLDYCZ.cjs} +141 -26
  28. package/dist/lib/node/BlueprintContainer-NOWLDYCZ.cjs.map +7 -0
  29. package/dist/lib/node/{ChatContainer-WFLTSAFA.cjs → ChatContainer-VKYBQHUB.cjs} +9 -9
  30. package/dist/lib/node/{ai-client-3XNIFMJX.cjs → ai-client-7HNSMUMT.cjs} +9 -9
  31. package/dist/lib/node/ai-client-7HNSMUMT.cjs.map +7 -0
  32. package/dist/lib/node/{app-graph-builder-VEPLBTML.cjs → app-graph-builder-PPR5B5KU.cjs} +42 -29
  33. package/dist/lib/node/app-graph-builder-PPR5B5KU.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-BGRQNE3L.cjs → chunk-FUAGEO7Q.cjs} +9 -9
  35. package/dist/lib/node/{chunk-DXBAFX6M.cjs → chunk-IKZBMHSW.cjs} +11 -11
  36. package/dist/lib/node/{chunk-DXBAFX6M.cjs.map → chunk-IKZBMHSW.cjs.map} +1 -1
  37. package/dist/lib/node/{chunk-7TQAIKE2.cjs → chunk-LMDJEGZ2.cjs} +14 -12
  38. package/dist/lib/node/chunk-LMDJEGZ2.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-WR5L3TVB.cjs → chunk-NIDICM57.cjs} +18 -18
  40. package/dist/lib/node/{chunk-WR5L3TVB.cjs.map → chunk-NIDICM57.cjs.map} +3 -3
  41. package/dist/lib/node/{chunk-ZP732NHS.cjs → chunk-QGPWY6GW.cjs} +4 -4
  42. package/dist/lib/node/{chunk-ZP732NHS.cjs.map → chunk-QGPWY6GW.cjs.map} +1 -1
  43. package/dist/lib/node/index.cjs +118 -76
  44. package/dist/lib/node/index.cjs.map +4 -4
  45. package/dist/lib/node/{intent-resolver-SDO4YKJK.cjs → intent-resolver-QSWGTKON.cjs} +8 -8
  46. package/dist/lib/node/meta.json +1 -1
  47. package/dist/lib/node/{react-surface-FANQXIRI.cjs → react-surface-D3NBYRZ6.cjs} +40 -23
  48. package/dist/lib/node/react-surface-D3NBYRZ6.cjs.map +7 -0
  49. package/dist/lib/node/{settings-PXPIPYJN.cjs → settings-2JXLKYGE.cjs} +6 -6
  50. package/dist/lib/node/types/index.cjs +14 -14
  51. package/dist/lib/node/types/index.cjs.map +1 -1
  52. package/dist/lib/node-esm/{AssistantDialog-KPZZD7XC.mjs → AssistantDialog-6WEMLUPU.mjs} +5 -5
  53. package/dist/lib/node-esm/{BlueprintContainer-SVOKCRCP.mjs → BlueprintContainer-STOJAVML.mjs} +145 -28
  54. package/dist/lib/node-esm/BlueprintContainer-STOJAVML.mjs.map +7 -0
  55. package/dist/lib/node-esm/{ChatContainer-WSMKUGS6.mjs → ChatContainer-3MVBTUJN.mjs} +5 -5
  56. package/dist/lib/node-esm/{ai-client-YIP44I4D.mjs → ai-client-XGZBJ6BE.mjs} +6 -6
  57. package/dist/lib/node-esm/ai-client-XGZBJ6BE.mjs.map +7 -0
  58. package/dist/lib/node-esm/{app-graph-builder-WJXDXLBQ.mjs → app-graph-builder-3SY5MBIK.mjs} +35 -22
  59. package/dist/lib/node-esm/app-graph-builder-3SY5MBIK.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-34EX6E5Q.mjs +18 -0
  61. package/dist/lib/node-esm/{chunk-VXGO6Q2L.mjs → chunk-3UEZLJ2V.mjs} +1 -1
  62. package/dist/lib/node-esm/{chunk-VXGO6Q2L.mjs.map → chunk-3UEZLJ2V.mjs.map} +1 -1
  63. package/dist/lib/node-esm/{chunk-24LIHQST.mjs → chunk-J6UXXZGJ.mjs} +10 -8
  64. package/dist/lib/node-esm/{chunk-24LIHQST.mjs.map → chunk-J6UXXZGJ.mjs.map} +3 -3
  65. package/dist/lib/node-esm/{chunk-TTSMEWR6.mjs → chunk-OD574YIU.mjs} +6 -6
  66. package/dist/lib/node-esm/{chunk-TTSMEWR6.mjs.map → chunk-OD574YIU.mjs.map} +3 -3
  67. package/dist/lib/node-esm/{chunk-QFX6SFFZ.mjs → chunk-UCOFKNKN.mjs} +6 -6
  68. package/dist/lib/node-esm/{chunk-QFX6SFFZ.mjs.map → chunk-UCOFKNKN.mjs.map} +1 -1
  69. package/dist/lib/node-esm/index.mjs +66 -23
  70. package/dist/lib/node-esm/index.mjs.map +4 -4
  71. package/dist/lib/node-esm/{intent-resolver-75REJDDQ.mjs → intent-resolver-E6MXTYAU.mjs} +2 -2
  72. package/dist/lib/node-esm/meta.json +1 -1
  73. package/dist/lib/node-esm/{react-surface-NAN4SDCE.mjs → react-surface-7HA5EDWY.mjs} +23 -6
  74. package/dist/lib/node-esm/react-surface-7HA5EDWY.mjs.map +7 -0
  75. package/dist/lib/node-esm/{settings-JHMKX3UV.mjs → settings-5IAY6BT4.mjs} +2 -2
  76. package/dist/lib/node-esm/types/index.mjs +1 -1
  77. package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
  78. package/dist/types/src/capabilities/ai-client.d.ts +2 -2
  79. package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  82. package/dist/types/src/capabilities/index.d.ts +1 -1
  83. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  84. package/dist/types/src/components/BlueprintContainer.d.ts.map +1 -1
  85. package/dist/types/src/components/Thread/Thread.stories.d.ts.map +1 -1
  86. package/dist/types/src/events.d.ts +4 -0
  87. package/dist/types/src/events.d.ts.map +1 -0
  88. package/dist/types/src/hooks/processor.d.ts +3 -3
  89. package/dist/types/src/hooks/useMessageQueue.d.ts +2 -2
  90. package/dist/types/src/index.d.ts +1 -0
  91. package/dist/types/src/index.d.ts.map +1 -1
  92. package/dist/types/src/queue-logger.d.ts +11 -0
  93. package/dist/types/src/queue-logger.d.ts.map +1 -0
  94. package/dist/types/src/translations.d.ts +75 -11
  95. package/dist/types/src/translations.d.ts.map +1 -1
  96. package/dist/types/src/types/chat.d.ts +12 -9
  97. package/dist/types/src/types/chat.d.ts.map +1 -1
  98. package/dist/types/src/types/service.d.ts +51 -102
  99. package/dist/types/src/types/service.d.ts.map +1 -1
  100. package/dist/types/src/types/template.d.ts +3 -23
  101. package/dist/types/src/types/template.d.ts.map +1 -1
  102. package/dist/types/src/types/types.d.ts +5 -5
  103. package/package.json +70 -69
  104. package/src/AssistantPlugin.tsx +26 -3
  105. package/src/capabilities/ai-client.ts +4 -4
  106. package/src/capabilities/app-graph-builder.ts +34 -22
  107. package/src/capabilities/capabilities.ts +2 -2
  108. package/src/capabilities/react-surface.tsx +16 -0
  109. package/src/components/BlueprintContainer.tsx +10 -22
  110. package/src/components/PromptSettings.tsx +1 -1
  111. package/src/components/Thread/Thread.stories.tsx +19 -27
  112. package/src/components/Thread/ThreadContainer.stories.tsx +5 -5
  113. package/src/components/Thread/ThreadContainer.tsx +1 -1
  114. package/src/components/Thread/reducer.ts +3 -3
  115. package/src/events.ts +11 -0
  116. package/src/hooks/processor.ts +4 -4
  117. package/src/index.ts +1 -0
  118. package/src/queue-logger.ts +125 -0
  119. package/src/stories/Query.stories.tsx +4 -4
  120. package/src/stories/Research.stories.tsx +11 -11
  121. package/src/stories/test-data.ts +4 -4
  122. package/src/testing/test-blueprint.ts +1 -1
  123. package/src/tools/openapi.test.ts +4 -4
  124. package/src/translations.ts +16 -4
  125. package/src/types/template.ts +11 -6
  126. package/dist/lib/browser/BlueprintContainer-4MEK52NT.mjs.map +0 -7
  127. package/dist/lib/browser/ai-client-MTCTMJ5N.mjs.map +0 -7
  128. package/dist/lib/browser/app-graph-builder-DBCVARVI.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-AKYSTUBJ.mjs +0 -16
  130. package/dist/lib/browser/react-surface-OD23FVUD.mjs.map +0 -7
  131. package/dist/lib/node/BlueprintContainer-VD6EIWH7.cjs.map +0 -7
  132. package/dist/lib/node/ai-client-3XNIFMJX.cjs.map +0 -7
  133. package/dist/lib/node/app-graph-builder-VEPLBTML.cjs.map +0 -7
  134. package/dist/lib/node/chunk-7TQAIKE2.cjs.map +0 -7
  135. package/dist/lib/node/react-surface-FANQXIRI.cjs.map +0 -7
  136. package/dist/lib/node-esm/BlueprintContainer-SVOKCRCP.mjs.map +0 -7
  137. package/dist/lib/node-esm/ai-client-YIP44I4D.mjs.map +0 -7
  138. package/dist/lib/node-esm/app-graph-builder-WJXDXLBQ.mjs.map +0 -7
  139. package/dist/lib/node-esm/chunk-ZKTIHNT7.mjs +0 -18
  140. package/dist/lib/node-esm/react-surface-NAN4SDCE.mjs.map +0 -7
  141. /package/dist/lib/browser/{AssistantDialog-YCPMFK7Y.mjs.map → AssistantDialog-MQOOR364.mjs.map} +0 -0
  142. /package/dist/lib/browser/{ChatContainer-RYFYYEWI.mjs.map → ChatContainer-C2NEAS3A.mjs.map} +0 -0
  143. /package/dist/lib/browser/{chunk-AKYSTUBJ.mjs.map → chunk-MEGMOFJB.mjs.map} +0 -0
  144. /package/dist/lib/browser/{intent-resolver-ID5NOIIJ.mjs.map → intent-resolver-3UICTGPM.mjs.map} +0 -0
  145. /package/dist/lib/browser/{settings-FUYUBGSQ.mjs.map → settings-XRHXVWGB.mjs.map} +0 -0
  146. /package/dist/lib/node/{AssistantDialog-B5YKJOAF.cjs.map → AssistantDialog-AN4Z6YUV.cjs.map} +0 -0
  147. /package/dist/lib/node/{ChatContainer-WFLTSAFA.cjs.map → ChatContainer-VKYBQHUB.cjs.map} +0 -0
  148. /package/dist/lib/node/{chunk-BGRQNE3L.cjs.map → chunk-FUAGEO7Q.cjs.map} +0 -0
  149. /package/dist/lib/node/{intent-resolver-SDO4YKJK.cjs.map → intent-resolver-QSWGTKON.cjs.map} +0 -0
  150. /package/dist/lib/node/{settings-PXPIPYJN.cjs.map → settings-2JXLKYGE.cjs.map} +0 -0
  151. /package/dist/lib/node-esm/{AssistantDialog-KPZZD7XC.mjs.map → AssistantDialog-6WEMLUPU.mjs.map} +0 -0
  152. /package/dist/lib/node-esm/{ChatContainer-WSMKUGS6.mjs.map → ChatContainer-3MVBTUJN.mjs.map} +0 -0
  153. /package/dist/lib/node-esm/{chunk-ZKTIHNT7.mjs.map → chunk-34EX6E5Q.mjs.map} +0 -0
  154. /package/dist/lib/node-esm/{intent-resolver-75REJDDQ.mjs.map → intent-resolver-E6MXTYAU.mjs.map} +0 -0
  155. /package/dist/lib/node-esm/{settings-JHMKX3UV.mjs.map → settings-5IAY6BT4.mjs.map} +0 -0
@@ -1,29 +1,29 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AssistantCapabilities
4
- } from "./chunk-VXGO6Q2L.mjs";
4
+ } from "./chunk-3UEZLJ2V.mjs";
5
5
  import {
6
6
  ASSISTANT_PLUGIN
7
7
  } from "./chunk-BB2TAT4P.mjs";
8
8
 
9
9
  // packages/plugins/plugin-assistant/src/capabilities/ai-client.ts
10
10
  import { effect, signal } from "@preact/signals-core";
11
- import { AIServiceEdgeClient, OllamaClient } from "@dxos/ai";
11
+ import { EdgeAiServiceClient, OllamaAiServiceClient } from "@dxos/ai";
12
12
  import { Capabilities, contributes } from "@dxos/app-framework";
13
13
  import { ClientCapabilities } from "@dxos/plugin-client";
14
14
  var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
15
15
  var ai_client_default = (context) => {
16
16
  const client = context.getCapability(ClientCapabilities.Client);
17
17
  const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
18
- const aiClient = signal(new AIServiceEdgeClient({
18
+ const aiClient = signal(new EdgeAiServiceClient({
19
19
  endpoint
20
20
  }));
21
21
  const unsubscribe = effect(() => {
22
22
  const settings = context.getCapability(Capabilities.SettingsStore).getStore(ASSISTANT_PLUGIN)?.value;
23
23
  if (settings?.llmProvider === "ollama") {
24
- aiClient.value = new OllamaClient();
24
+ aiClient.value = new OllamaAiServiceClient();
25
25
  } else {
26
- aiClient.value = new AIServiceEdgeClient({
26
+ aiClient.value = new EdgeAiServiceClient({
27
27
  endpoint,
28
28
  defaultGenerationOptions: {
29
29
  // model: '@anthropic/claude-sonnet-4-20250514',
@@ -37,4 +37,4 @@ var ai_client_default = (context) => {
37
37
  export {
38
38
  ai_client_default as default
39
39
  };
40
- //# sourceMappingURL=ai-client-YIP44I4D.mjs.map
40
+ //# sourceMappingURL=ai-client-XGZBJ6BE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/ai-client.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect, signal } from '@preact/signals-core';\n\nimport { type AiServiceClient, EdgeAiServiceClient, OllamaAiServiceClient } from '@dxos/ai';\nimport { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { AssistantCapabilities } from './capabilities';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps } from '../types';\n\n// TODO(wittjosiah): Factor out.\nconst DEFAULT_AI_SERVICE_URL = 'http://localhost:8788';\n\nexport default (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n const aiClient = signal<AiServiceClient>(new EdgeAiServiceClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n const settings = context\n .getCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n aiClient.value = new OllamaAiServiceClient();\n } else {\n aiClient.value = new EdgeAiServiceClient({\n endpoint,\n defaultGenerationOptions: {\n // model: '@anthropic/claude-sonnet-4-20250514',\n model: '@anthropic/claude-3-5-haiku-20241022',\n },\n });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, aiClient, () => unsubscribe());\n};\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,QAAQC,cAAc;AAE/B,SAA+BC,qBAAqBC,6BAA6B;AACjF,SAASC,cAAcC,mBAAuC;AAC9D,SAASC,0BAA0B;AAOnC,IAAMC,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AACvE,QAAMa,WAAWC,OAAwB,IAAIC,oBAAoB;IAAET;EAAS,CAAA,CAAA;AAE5E,QAAMU,cAAcC,OAAO,MAAA;AACzB,UAAMC,WAAWjB,QACdE,cAAcgB,aAAaC,aAAa,EACxCC,SAAiCC,gBAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCX,eAASU,QAAQ,IAAIE,sBAAAA;IACvB,OAAO;AACLZ,eAASU,QAAQ,IAAIR,oBAAoB;QACvCT;QACAoB,0BAA0B;;UAExBC,OAAO;QACT;MACF,CAAA;IACF;EACF,CAAA;AAEA,SAAOC,YAAYC,sBAAsBC,UAAUjB,UAAU,MAAMG,YAAAA,CAAAA;AACrE;",
6
+ "names": ["effect", "signal", "EdgeAiServiceClient", "OllamaAiServiceClient", "Capabilities", "contributes", "ClientCapabilities", "DEFAULT_AI_SERVICE_URL", "context", "client", "getCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "aiClient", "signal", "EdgeAiServiceClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaAiServiceClient", "defaultGenerationOptions", "model", "contributes", "AssistantCapabilities", "AiClient"]
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  AssistantAction,
5
5
  CompanionTo,
6
6
  TemplateType
7
- } from "./chunk-24LIHQST.mjs";
7
+ } from "./chunk-J6UXXZGJ.mjs";
8
8
  import {
9
9
  ASSISTANT_DIALOG,
10
10
  ASSISTANT_PLUGIN
@@ -14,12 +14,13 @@ import {
14
14
  import { Rx } from "@effect-rx/rx-react";
15
15
  import { Option, pipe } from "effect";
16
16
  import { Capabilities, contributes, createIntent, LayoutAction } from "@dxos/app-framework";
17
+ import { Blueprint } from "@dxos/assistant";
17
18
  import { Obj } from "@dxos/echo";
18
19
  import { invariant } from "@dxos/invariant";
19
20
  import { ClientCapabilities } from "@dxos/plugin-client";
20
21
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
21
22
  import { createExtension, ROOT_ID } from "@dxos/plugin-graph";
22
- import { rxFromQuery } from "@dxos/plugin-space";
23
+ import { getActiveSpace, rxFromQuery } from "@dxos/plugin-space";
23
24
  import { SPACE_TYPE, SpaceAction } from "@dxos/plugin-space/types";
24
25
  import { Filter, Query, fullyQualifiedId, getSpace, isSpace } from "@dxos/react-client/echo";
25
26
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-assistant/src/capabilities/app-graph-builder.ts";
@@ -32,21 +33,8 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
32
33
  data: async () => {
33
34
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
34
35
  const client = context.getCapability(ClientCapabilities.Client);
35
- const layout = context.getCapability(Capabilities.Layout);
36
- const { graph } = context.getCapability(Capabilities.AppGraph);
37
- let chat;
38
- if (layout.active.length > 0) {
39
- const node2 = graph.getNode(layout.active[0]).pipe(Option.getOrNull);
40
- if (node2) {
41
- const space = getSpace(node2.data);
42
- if (space) {
43
- chat = await getOrCreateChat(dispatch, space);
44
- }
45
- }
46
- } else {
47
- const space = client.spaces.default;
48
- chat = await getOrCreateChat(dispatch, space);
49
- }
36
+ const space = getActiveSpace(context) ?? client.spaces.default;
37
+ const chat = await getOrCreateChat(dispatch, space);
50
38
  if (!chat) {
51
39
  return;
52
40
  }
@@ -125,6 +113,29 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
125
113
  });
126
114
  }
127
115
  }),
116
+ createExtension({
117
+ id: `${ASSISTANT_PLUGIN}/blueprint-logs`,
118
+ connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(Blueprint, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
119
+ {
120
+ id: [
121
+ node2.id,
122
+ "logs"
123
+ ].join(ATTENDABLE_PATH_SEPARATOR),
124
+ type: PLANK_COMPANION_TYPE,
125
+ data: "logs",
126
+ properties: {
127
+ label: [
128
+ "blueprint logs label",
129
+ {
130
+ ns: ASSISTANT_PLUGIN
131
+ }
132
+ ],
133
+ icon: "ph--clock-countdown--regular",
134
+ disposition: "hidden"
135
+ }
136
+ }
137
+ ]), Option.getOrElse(() => [])))
138
+ }),
128
139
  createExtension({
129
140
  id: `${ASSISTANT_PLUGIN}/root`,
130
141
  connector: (node) => {
@@ -185,16 +196,18 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
185
196
  })
186
197
  ]);
187
198
  var getOrCreateChat = async (dispatch, space) => {
188
- const { objects } = await space.db.query(Filter.type(AIChatType)).run();
189
- if (objects.length > 0) {
190
- return objects[objects.length - 1];
199
+ const { objects: allChats } = await space.db.query(Query.type(AIChatType)).run();
200
+ const { objects: relatedChats } = await space.db.query(Query.type(AIChatType).sourceOf(CompanionTo).source()).run();
201
+ const chats = allChats.filter((chat) => !relatedChats.includes(chat));
202
+ if (chats.length > 0) {
203
+ return chats[chats.length - 1];
191
204
  }
192
205
  const { data } = await dispatch(createIntent(AssistantAction.CreateChat, {
193
206
  space
194
207
  }));
195
208
  invariant(Obj.instanceOf(AIChatType, data?.object), void 0, {
196
209
  F: __dxlog_file,
197
- L: 233,
210
+ L: 245,
198
211
  S: void 0,
199
212
  A: [
200
213
  "Obj.instanceOf(AIChatType, data?.object)",
@@ -210,4 +223,4 @@ var getOrCreateChat = async (dispatch, space) => {
210
223
  export {
211
224
  app_graph_builder_default as default
212
225
  };
213
- //# sourceMappingURL=app-graph-builder-WJXDXLBQ.mjs.map
226
+ //# sourceMappingURL=app-graph-builder-3SY5MBIK.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 { Blueprint } from '@dxos/assistant';\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 { SPACE_TYPE, SpaceAction } from '@dxos/plugin-space/types';\nimport {\n type Space,\n Filter,\n Query,\n type QueryResult,\n fullyQualifiedId,\n getSpace,\n isSpace,\n} from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, CompanionTo, TemplateType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/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\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: ASSISTANT_PLUGIN }],\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: `${ASSISTANT_PLUGIN}/object-chat-companion`,\n connector: (node) => {\n let query: QueryResult<AIChatType> | 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(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: ASSISTANT_PLUGIN }],\n icon: 'ph--sparkle--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n });\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/blueprint-logs`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(Blueprint, 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: ['blueprint logs label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--clock-countdown--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n\n const templates = get(rxFromQuery(query));\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,\n },\n },\n ]\n : [];\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n connector: (node) => {\n let query: QueryResult<TemplateType> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.id === `${ASSISTANT_PLUGIN}/templates` && isSpace(node.properties.space)\n ? Option.some(node.properties.space)\n : Option.none(),\n ),\n Option.map((space) => {\n if (!query) {\n query = space.db.query(Query.type(TemplateType));\n }\n return get(rxFromQuery(query))\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 Option.getOrElse(() => []),\n ),\n );\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n // TODO(wittjosiah): This should be possible with a single query.\n const { objects: allChats } = await space.db.query(Query.type(AIChatType)).run();\n const { objects: relatedChats } = await space.db.query(Query.type(AIChatType).sourceOf(CompanionTo).source()).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(AssistantAction.CreateChat, { space }));\n invariant(Obj.instanceOf(AIChatType, 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", "Blueprint", "Obj", "invariant", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "ROOT_ID", "getActiveSpace", "rxFromQuery", "SPACE_TYPE", "SpaceAction", "Filter", "Query", "fullyQualifiedId", "getSpace", "isSpace", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "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", "CompanionTo", "source", "rxFromQuery", "fullyQualifiedId", "join", "ATTENDABLE_PATH_SEPARATOR", "type", "PLANK_COMPANION_TYPE", "instanceOf", "Blueprint", "SPACE_TYPE", "isSpace", "TemplateType", "templates", "length", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "template", "objects", "allChats", "AIChatType", "run", "relatedChats", "sourceOf", "chats", "filter", "includes", "AssistantAction", "CreateChat", "invariant", "SpaceAction", "AddObject", "target"]
7
+ }
@@ -0,0 +1,18 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
3
+ // packages/plugins/plugin-assistant/src/capabilities/index.ts
4
+ import { lazy } from "@dxos/app-framework";
5
+ var AiClient = lazy(() => import("./ai-client-XGZBJ6BE.mjs"));
6
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-3SY5MBIK.mjs"));
7
+ var IntentResolver = lazy(() => import("./intent-resolver-E6MXTYAU.mjs"));
8
+ var ReactSurface = lazy(() => import("./react-surface-7HA5EDWY.mjs"));
9
+ var Settings = lazy(() => import("./settings-5IAY6BT4.mjs"));
10
+
11
+ export {
12
+ AiClient,
13
+ AppGraphBuilder,
14
+ IntentResolver,
15
+ ReactSurface,
16
+ Settings
17
+ };
18
+ //# sourceMappingURL=chunk-34EX6E5Q.mjs.map
@@ -13,4 +13,4 @@ var AssistantCapabilities;
13
13
  export {
14
14
  AssistantCapabilities
15
15
  };
16
- //# sourceMappingURL=chunk-VXGO6Q2L.mjs.map
16
+ //# sourceMappingURL=chunk-3UEZLJ2V.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/capabilities.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal } from '@preact/signals-core';\n\nimport { type AIServiceClient } from '@dxos/ai';\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\n\n// TODO(burdon): Move to types to import from other plugins?\nexport namespace AssistantCapabilities {\n export const AiClient = defineCapability<ReadonlySignal<AIServiceClient>>(`${ASSISTANT_PLUGIN}/capability/ai-client`);\n}\n"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ReadonlySignal } from '@preact/signals-core';\n\nimport { type AiServiceClient } from '@dxos/ai';\nimport { defineCapability } from '@dxos/app-framework';\n\nimport { ASSISTANT_PLUGIN } from '../meta';\n\n// TODO(burdon): Move to types to import from other plugins?\nexport namespace AssistantCapabilities {\n export const AiClient = defineCapability<ReadonlySignal<AiServiceClient>>(`${ASSISTANT_PLUGIN}/capability/ai-client`);\n}\n"],
5
5
  "mappings": ";;;;;;AAOA,SAASA,wBAAwB;UAKhBC,wBAAAA;yBACFC,WAAWC,iBAAkD,GAAGC,gBAAAA,uBAAuC;AACtH,GAFiBH,0BAAAA,wBAAAA,CAAAA,EAAAA;;",
6
6
  "names": ["defineCapability", "AssistantCapabilities", "AiClient", "defineCapability", "ASSISTANT_PLUGIN"]
7
7
  }
@@ -101,7 +101,8 @@ var categoryIcons = {
101
101
 
102
102
  // packages/plugins/plugin-assistant/src/types/template.ts
103
103
  import { Schema as Schema3 } from "effect";
104
- import { TypedObject as TypedObject2 } from "@dxos/echo-schema";
104
+ import { Type as Type3 } from "@dxos/echo";
105
+ import { LabelAnnotation } from "@dxos/echo-schema";
105
106
  var TemplateInputType = /* @__PURE__ */ function(TemplateInputType2) {
106
107
  TemplateInputType2[TemplateInputType2["VALUE"] = 0] = "VALUE";
107
108
  TemplateInputType2[TemplateInputType2["PASS_THROUGH"] = 1] = "PASS_THROUGH";
@@ -135,17 +136,18 @@ var TemplateKindSchema = Schema3.Union(Schema3.Struct({
135
136
  }), Schema3.Struct({
136
137
  include: Schema3.Literal("manual")
137
138
  }));
138
- var TemplateType = class extends TypedObject2({
139
- typename: "dxos.org/type/Template",
140
- version: "0.1.0"
141
- })({
139
+ var TemplateType = Schema3.Struct({
142
140
  name: Schema3.optional(Schema3.String),
143
141
  kind: Schema3.mutable(TemplateKindSchema),
144
142
  source: Schema3.String,
145
143
  inputs: Schema3.optional(Schema3.mutable(Schema3.Array(TemplateInputSchema))),
146
144
  command: Schema3.optional(Schema3.String)
147
- }) {
148
- };
145
+ }).pipe(LabelAnnotation.set([
146
+ "name"
147
+ ]), Type3.Obj({
148
+ typename: "dxos.org/type/Template",
149
+ version: "0.1.0"
150
+ }));
149
151
 
150
152
  // packages/plugins/plugin-assistant/src/types/types.ts
151
153
  import { Schema as Schema4 } from "effect";
@@ -204,4 +206,4 @@ export {
204
206
  AssistantSettingsSchema,
205
207
  AssistantAction
206
208
  };
207
- //# sourceMappingURL=chunk-24LIHQST.mjs.map
209
+ //# sourceMappingURL=chunk-J6UXXZGJ.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/types/chat.ts", "../../../src/types/service.ts", "../../../src/types/template.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Queue } from '@dxos/client/echo';\nimport { Type } from '@dxos/echo';\n\nexport const AIChatType = Schema.Struct({\n id: Type.ObjectId,\n name: Schema.optional(Schema.String),\n queue: Type.Ref(Queue),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/AIChat',\n version: '0.2.0',\n }),\n);\nexport interface AIChatType extends Schema.Schema.Type<typeof AIChatType> {}\n\nexport const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/CompanionTo',\n version: '0.1.0',\n source: AIChatType,\n target: Type.Expando,\n }),\n);\nexport interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Type.Ref(FunctionType),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Type.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({\n typename: 'dxos.org/type/ServiceType',\n version: '0.1.0',\n})({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to Schema.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = Schema.mutable(\n Schema.Struct({\n name: Schema.String,\n type: Schema.optional(Schema.Enums(TemplateInputType)),\n value: Schema.optional(Schema.String),\n }),\n);\n\nexport type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = Schema.Union(\n Schema.Struct({\n include: Schema.Literal('always'),\n }),\n Schema.Struct({\n include: Schema.Literal('schema-matching'),\n typename: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('automatically'),\n description: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;\nexport class TemplateType extends TypedObject({\n typename: 'dxos.org/type/Template',\n version: '0.1.0',\n})({\n name: Schema.optional(Schema.String),\n kind: Schema.mutable(TemplateKindSchema),\n source: Schema.String,\n inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),\n command: Schema.optional(Schema.String),\n}) {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Blueprint } from '@dxos/assistant';\nimport { SpaceSchema } from '@dxos/react-client/echo';\n\nimport { AIChatType } from './chat';\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantAction {\n const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;\n\n export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: AIChatType,\n }),\n }) {}\n\n export class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${ASSISTANT_ACTION}/create-blueprint`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Blueprint,\n }),\n }) {}\n}\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n\nexport const AssistantSettingsSchema = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type AssistantSettingsProps = Schema.Schema.Type<typeof AssistantSettingsSchema>;\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Queue", "Type", "AIChatType", "Schema", "Struct", "id", "Type", "ObjectId", "name", "optional", "String", "queue", "Ref", "Queue", "pipe", "Obj", "typename", "version", "CompanionTo", "Relation", "source", "target", "Expando", "Schema", "ComputeGraph", "Type", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Type", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "Schema", "TypedObject", "TemplateInputType", "TemplateInputSchema", "Schema", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "TypedObject", "version", "kind", "source", "inputs", "Array", "command", "Schema", "Blueprint", "SpaceSchema", "AssistantAction", "ASSISTANT_ACTION", "ASSISTANT_PLUGIN", "CreateChat", "Schema", "TaggedClass", "input", "Struct", "space", "SpaceSchema", "name", "optional", "String", "output", "object", "AIChatType", "CreateBlueprint", "Blueprint", "LLM_PROVIDERS", "AssistantSettingsSchema", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Queue } from '@dxos/client/echo';\nimport { Type } from '@dxos/echo';\n\nexport const AIChatType = Schema.Struct({\n id: Type.ObjectId,\n name: Schema.optional(Schema.String),\n queue: Type.Ref(Queue),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/AIChat',\n version: '0.2.0',\n }),\n);\nexport interface AIChatType extends Schema.Schema.Type<typeof AIChatType> {}\n\nexport const CompanionTo = Schema.Struct({\n id: Type.ObjectId,\n}).pipe(\n Type.Relation({\n typename: 'dxos.org/relation/CompanionTo',\n version: '0.1.0',\n source: AIChatType,\n target: Type.Expando,\n }),\n);\nexport interface CompanionTo extends Schema.Schema.Type<typeof CompanionTo> {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Type } from '@dxos/echo';\nimport { TypedObject } from '@dxos/echo-schema';\nimport { FunctionType } from '@dxos/functions';\n\nconst ApiAuthorizationKey = Schema.Struct({\n type: Schema.Literal('api-key'),\n key: Schema.String,\n placement: Schema.Union(\n Schema.Struct({\n type: Schema.Literal('authorization-header'),\n }),\n Schema.Struct({\n type: Schema.Literal('query'),\n name: Schema.String,\n }),\n ),\n});\n\nconst ApiAuthorizationOauth = Schema.Struct({\n type: Schema.Literal('oauth'),\n clientId: Schema.String,\n clientSecret: Schema.String,\n tokenUrl: Schema.String,\n grantType: Schema.String,\n});\n\nexport const ApiAuthorization = Schema.Union(ApiAuthorizationKey, ApiAuthorizationOauth);\nexport type ApiAuthorization = Schema.Schema.Type<typeof ApiAuthorization>;\n\nconst ServiceInterfaceFunction = Schema.Struct({\n kind: Schema.Literal('function'),\n fn: Type.Ref(FunctionType),\n});\n\nconst ServiceInterfaceWorkflow = Schema.Struct({\n kind: Schema.Literal('workflow'),\n workflow: Type.Ref(ComputeGraph),\n});\n\nconst ServiceInterfaceApi = Schema.Struct({\n kind: Schema.Literal('api'),\n\n /**\n * URL to fetch the openapi schema.\n */\n schemaUrl: Schema.optional(Schema.String),\n\n /**\n * Inlined openapi schema.\n */\n schema: Schema.optional(Schema.Any),\n\n /**\n * Authorization configuration if required.\n */\n authorization: Schema.optional(ApiAuthorization),\n});\n\nconst ServiceInterface = Schema.Union(ServiceInterfaceFunction, ServiceInterfaceWorkflow, ServiceInterfaceApi);\nexport type ServiceInterface = Schema.Schema.Type<typeof ServiceInterface>;\n\nexport class ServiceType extends TypedObject({\n typename: 'dxos.org/type/ServiceType',\n version: '0.1.0',\n})({\n serviceId: Schema.String,\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n category: Schema.optional(Schema.String),\n enabled: Schema.optional(Schema.Boolean),\n\n /**\n * Entries exposed: functions, workflows, and APIs.\n */\n interfaces: Schema.optional(Schema.Array(ServiceInterface)),\n}) {}\n\n//\n// Service Registry\n//\n\nexport type ServiceQuery = {\n name?: string;\n category?: string;\n};\n\nexport interface BaseServiceRegistry {\n queryServices(query?: ServiceQuery): Promise<ServiceType[]>;\n}\n\nexport const categoryIcons: Record<string, string> = {\n finance: 'ph--bank--regular',\n health: 'ph--heart--regular',\n geolocation: 'ph--globe-simple--regular',\n education: 'ph--books--regular',\n entertainment: 'ph--music-notes--regular',\n shopping: 'ph--shopping-cart--regular',\n travel: 'ph--airplane-takeoff--regular',\n utilities: 'ph--lightning--regular',\n weather: 'ph--cloud-rain--regular',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { LabelAnnotation } from '@dxos/echo-schema';\n\n// TODO(burdon): Change to Schema.Literal (and discriminated union).\nexport enum TemplateInputType {\n VALUE = 0,\n PASS_THROUGH = 1,\n RETRIEVER = 2,\n FUNCTION = 3,\n QUERY = 4,\n RESOLVER = 5,\n CONTEXT = 6,\n SCHEMA = 7,\n}\n\nexport const TemplateInputSchema = Schema.mutable(\n Schema.Struct({\n name: Schema.String,\n type: Schema.optional(Schema.Enums(TemplateInputType)),\n value: Schema.optional(Schema.String),\n }),\n);\n\nexport type TemplateInput = Schema.Schema.Type<typeof TemplateInputSchema>;\n\nexport const TemplateKinds = ['always', 'schema-matching', 'automatically', 'manual'] as const;\nexport type TemplateKind = (typeof TemplateKinds)[number];\n\nexport const TemplateKindSchema = Schema.Union(\n Schema.Struct({\n include: Schema.Literal('always'),\n }),\n Schema.Struct({\n include: Schema.Literal('schema-matching'),\n typename: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('automatically'),\n description: Schema.String,\n }),\n Schema.Struct({\n include: Schema.Literal('manual'),\n }),\n);\n\nexport type TemplateKindType = Schema.Schema.Type<typeof TemplateKindSchema>;\nexport const TemplateType = Schema.Struct({\n name: Schema.optional(Schema.String),\n kind: Schema.mutable(TemplateKindSchema),\n source: Schema.String,\n inputs: Schema.optional(Schema.mutable(Schema.Array(TemplateInputSchema))),\n command: Schema.optional(Schema.String),\n}).pipe(\n LabelAnnotation.set(['name']),\n Type.Obj({\n typename: 'dxos.org/type/Template',\n version: '0.1.0',\n }),\n);\nexport interface TemplateType extends Schema.Schema.Type<typeof TemplateType> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Blueprint } from '@dxos/assistant';\nimport { SpaceSchema } from '@dxos/react-client/echo';\n\nimport { AIChatType } from './chat';\nimport { ASSISTANT_PLUGIN } from '../meta';\n\nexport namespace AssistantAction {\n const ASSISTANT_ACTION = `${ASSISTANT_PLUGIN}/action`;\n\n export class CreateChat extends Schema.TaggedClass<CreateChat>()(`${ASSISTANT_ACTION}/create-chat`, {\n input: Schema.Struct({\n space: SpaceSchema,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: AIChatType,\n }),\n }) {}\n\n export class CreateBlueprint extends Schema.TaggedClass<CreateBlueprint>()(`${ASSISTANT_ACTION}/create-blueprint`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Blueprint,\n }),\n }) {}\n}\n\nexport const LLM_PROVIDERS = ['edge', 'ollama', 'lmstudio'] as const;\n\nexport const AssistantSettingsSchema = Schema.mutable(\n Schema.Struct({\n llmProvider: Schema.optional(Schema.Literal(...LLM_PROVIDERS)),\n edgeModel: Schema.optional(Schema.String),\n ollamaModel: Schema.optional(Schema.String),\n lmstudioModel: Schema.optional(Schema.String),\n customPrompts: Schema.optional(Schema.Boolean),\n }),\n);\n\nexport type AssistantSettingsProps = Schema.Schema.Type<typeof AssistantSettingsSchema>;\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "Queue", "Type", "AIChatType", "Schema", "Struct", "id", "Type", "ObjectId", "name", "optional", "String", "queue", "Ref", "Queue", "pipe", "Obj", "typename", "version", "CompanionTo", "Relation", "source", "target", "Expando", "Schema", "ComputeGraph", "Type", "TypedObject", "FunctionType", "ApiAuthorizationKey", "Schema", "Struct", "type", "Literal", "key", "String", "placement", "Union", "name", "ApiAuthorizationOauth", "clientId", "clientSecret", "tokenUrl", "grantType", "ApiAuthorization", "ServiceInterfaceFunction", "kind", "fn", "Type", "Ref", "FunctionType", "ServiceInterfaceWorkflow", "workflow", "ComputeGraph", "ServiceInterfaceApi", "schemaUrl", "optional", "schema", "Any", "authorization", "ServiceInterface", "ServiceType", "TypedObject", "typename", "version", "serviceId", "description", "category", "enabled", "Boolean", "interfaces", "Array", "categoryIcons", "finance", "health", "geolocation", "education", "entertainment", "shopping", "travel", "utilities", "weather", "Schema", "Type", "LabelAnnotation", "TemplateInputType", "TemplateInputSchema", "Schema", "mutable", "Struct", "name", "String", "type", "optional", "Enums", "value", "TemplateKinds", "TemplateKindSchema", "Union", "include", "Literal", "typename", "description", "TemplateType", "kind", "source", "inputs", "Array", "command", "pipe", "LabelAnnotation", "set", "Type", "Obj", "version", "Schema", "Blueprint", "SpaceSchema", "AssistantAction", "ASSISTANT_ACTION", "ASSISTANT_PLUGIN", "CreateChat", "Schema", "TaggedClass", "input", "Struct", "space", "SpaceSchema", "name", "optional", "String", "output", "object", "AIChatType", "CreateBlueprint", "Blueprint", "LLM_PROVIDERS", "AssistantSettingsSchema", "mutable", "llmProvider", "Literal", "edgeModel", "ollamaModel", "lmstudioModel", "customPrompts", "Boolean"]
7
7
  }
@@ -2,10 +2,10 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  ServiceType,
4
4
  categoryIcons
5
- } from "./chunk-24LIHQST.mjs";
5
+ } from "./chunk-J6UXXZGJ.mjs";
6
6
  import {
7
7
  AssistantCapabilities
8
- } from "./chunk-VXGO6Q2L.mjs";
8
+ } from "./chunk-3UEZLJ2V.mjs";
9
9
  import {
10
10
  ASSISTANT_PLUGIN
11
11
  } from "./chunk-BB2TAT4P.mjs";
@@ -1657,7 +1657,7 @@ var ChatProcessor = class {
1657
1657
  C: (f, a) => f(...a)
1658
1658
  });
1659
1659
  if (err instanceof Error && err.message.includes("Overloaded")) {
1660
- this.error.value = new AIServiceOverloadedError("AI service overloaded", {
1660
+ this.error.value = new AiServiceOverloadedError("AI service overloaded", {
1661
1661
  cause: err
1662
1662
  });
1663
1663
  } else {
@@ -1693,7 +1693,7 @@ var ChatProcessor = class {
1693
1693
  return messages;
1694
1694
  }
1695
1695
  };
1696
- var AIServiceOverloadedError = class extends Error {
1696
+ var AiServiceOverloadedError = class extends Error {
1697
1697
  constructor() {
1698
1698
  super(...arguments);
1699
1699
  this.code = "AI_SERVICE_OVERLOADED";
@@ -2056,7 +2056,7 @@ var ThreadContainer = ({ classNames, chat, settings, part, associatedArtifact, o
2056
2056
  void processor.request(text, {
2057
2057
  history: messageQueue.objects,
2058
2058
  onComplete: (messages2) => {
2059
- messageQueue.append(messages2);
2059
+ void messageQueue.append(messages2);
2060
2060
  }
2061
2061
  });
2062
2062
  return true;
@@ -2099,4 +2099,4 @@ export {
2099
2099
  Thread,
2100
2100
  ThreadContainer
2101
2101
  };
2102
- //# sourceMappingURL=chunk-TTSMEWR6.mjs.map
2102
+ //# sourceMappingURL=chunk-OD574YIU.mjs.map