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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs → AssistantDialog-77B4BSXR.mjs} +2 -2
  2. package/dist/lib/browser/{ChatContainer-V5GP7DYF.mjs → ChatContainer-4AMJKO3T.mjs} +2 -2
  3. package/dist/lib/browser/ChatContainer-4AMJKO3T.mjs.map +7 -0
  4. package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs +22 -0
  5. package/dist/lib/browser/TemplateContainer-WKU5XFSO.mjs.map +7 -0
  6. package/dist/lib/browser/{app-graph-builder-MF5EVDWW.mjs → app-graph-builder-GU6ZWSP4.mjs} +7 -7
  7. package/dist/lib/browser/app-graph-builder-GU6ZWSP4.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-FMB7RGMP.mjs → chunk-FQ4L5NYW.mjs} +43 -18
  9. package/dist/lib/browser/{chunk-FMB7RGMP.mjs.map → chunk-FQ4L5NYW.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-KYMKVE6M.mjs → chunk-SBFJKCVU.mjs} +78 -18
  11. package/dist/lib/browser/chunk-SBFJKCVU.mjs.map +7 -0
  12. package/dist/lib/browser/index.mjs +8 -5
  13. package/dist/lib/browser/index.mjs.map +2 -2
  14. package/dist/lib/browser/{intent-resolver-WJGLKKVO.mjs → intent-resolver-YAQELTFQ.mjs} +4 -4
  15. package/dist/lib/browser/intent-resolver-YAQELTFQ.mjs.map +7 -0
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/{react-surface-57VRDOQT.mjs → react-surface-JOATHBJ4.mjs} +17 -8
  18. package/dist/lib/browser/react-surface-JOATHBJ4.mjs.map +7 -0
  19. package/dist/lib/browser/{settings-U6UFQX32.mjs → settings-PAJLJEVW.mjs} +3 -3
  20. package/dist/lib/browser/settings-PAJLJEVW.mjs.map +7 -0
  21. package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs → AssistantDialog-7V7RRSIL.cjs} +6 -6
  22. package/dist/lib/node/{ChatContainer-ZJ5JXF6A.cjs → ChatContainer-UWYNOALW.cjs} +6 -6
  23. package/dist/lib/node/ChatContainer-UWYNOALW.cjs.map +7 -0
  24. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs +52 -0
  25. package/dist/lib/node/TemplateContainer-EQXKHWTF.cjs.map +7 -0
  26. package/dist/lib/node/{app-graph-builder-N5ZUUI2Z.cjs → app-graph-builder-CEMLCKAF.cjs} +8 -8
  27. package/dist/lib/node/app-graph-builder-CEMLCKAF.cjs.map +7 -0
  28. package/dist/lib/node/{chunk-RPBKMP2E.cjs → chunk-ENBPNIJZ.cjs} +57 -32
  29. package/dist/lib/node/chunk-ENBPNIJZ.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-ZKOC4ZFY.cjs → chunk-KWBQ5P7D.cjs} +81 -23
  31. package/dist/lib/node/chunk-KWBQ5P7D.cjs.map +7 -0
  32. package/dist/lib/node/index.cjs +22 -19
  33. package/dist/lib/node/index.cjs.map +2 -2
  34. package/dist/lib/node/{intent-resolver-R3OSTIMH.cjs → intent-resolver-RNMYSJ3E.cjs} +6 -6
  35. package/dist/lib/node/intent-resolver-RNMYSJ3E.cjs.map +7 -0
  36. package/dist/lib/node/meta.json +1 -1
  37. package/dist/lib/node/{react-surface-NUQTM6MS.cjs → react-surface-7RIXMLMN.cjs} +23 -15
  38. package/dist/lib/node/react-surface-7RIXMLMN.cjs.map +7 -0
  39. package/dist/lib/node/{settings-TXGRCYAL.cjs → settings-JBEYMZ4S.cjs} +5 -5
  40. package/dist/lib/node/settings-JBEYMZ4S.cjs.map +7 -0
  41. package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs → AssistantDialog-N24M73FW.mjs} +2 -2
  42. package/dist/lib/node-esm/{ChatContainer-QW3OOXTT.mjs → ChatContainer-KPWY5UK4.mjs} +2 -2
  43. package/dist/lib/node-esm/ChatContainer-KPWY5UK4.mjs.map +7 -0
  44. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs +23 -0
  45. package/dist/lib/node-esm/TemplateContainer-3LEBT5ZC.mjs.map +7 -0
  46. package/dist/lib/node-esm/{app-graph-builder-DWBNIMHM.mjs → app-graph-builder-Y45WYAWL.mjs} +7 -7
  47. package/dist/lib/node-esm/app-graph-builder-Y45WYAWL.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs → chunk-JE47GNTB.mjs} +43 -18
  49. package/dist/lib/node-esm/{chunk-MVDAY3CZ.mjs.map → chunk-JE47GNTB.mjs.map} +3 -3
  50. package/dist/lib/node-esm/{chunk-GBBXIW5F.mjs → chunk-PFWTW22U.mjs} +78 -18
  51. package/dist/lib/node-esm/chunk-PFWTW22U.mjs.map +7 -0
  52. package/dist/lib/node-esm/index.mjs +8 -5
  53. package/dist/lib/node-esm/index.mjs.map +2 -2
  54. package/dist/lib/node-esm/{intent-resolver-H32TL4X6.mjs → intent-resolver-V2ZFI5C4.mjs} +4 -4
  55. package/dist/lib/node-esm/intent-resolver-V2ZFI5C4.mjs.map +7 -0
  56. package/dist/lib/node-esm/meta.json +1 -1
  57. package/dist/lib/node-esm/{react-surface-JBVZF6CP.mjs → react-surface-UUHNOYST.mjs} +17 -8
  58. package/dist/lib/node-esm/react-surface-UUHNOYST.mjs.map +7 -0
  59. package/dist/lib/node-esm/{settings-DZU5PNXM.mjs → settings-KAMA6RIY.mjs} +3 -3
  60. package/dist/lib/node-esm/settings-KAMA6RIY.mjs.map +7 -0
  61. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  62. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  63. package/dist/types/src/components/ChatContainer.d.ts +4 -3
  64. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  65. package/dist/types/src/components/PromptSettings.d.ts +6 -0
  66. package/dist/types/src/components/PromptSettings.d.ts.map +1 -0
  67. package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
  68. package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
  69. package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
  70. package/dist/types/src/components/index.d.ts +2 -5
  71. package/dist/types/src/components/index.d.ts.map +1 -1
  72. package/dist/types/src/hooks/processor.d.ts.map +1 -1
  73. package/dist/types/src/hooks/useMessageQueue.d.ts +0 -3
  74. package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
  75. package/dist/types/src/translations.d.ts +3 -0
  76. package/dist/types/src/translations.d.ts.map +1 -1
  77. package/package.json +57 -57
  78. package/src/capabilities/app-graph-builder.ts +5 -13
  79. package/src/capabilities/intent-resolver.ts +3 -3
  80. package/src/capabilities/react-surface.tsx +20 -5
  81. package/src/capabilities/settings.ts +2 -2
  82. package/src/components/ChatContainer.tsx +6 -8
  83. package/src/components/PromptSettings.tsx +91 -0
  84. package/src/components/TemplateContainer.tsx +3 -79
  85. package/src/components/TemplateEditor/TemplateEditor.stories.tsx +2 -2
  86. package/src/components/TemplateEditor/TemplateForm.stories.tsx +2 -2
  87. package/src/components/Thread/ThreadContainer.stories.tsx +9 -18
  88. package/src/components/Thread/ThreadContainer.tsx +24 -2
  89. package/src/components/Toolbox/Toolbox.stories.tsx +1 -1
  90. package/src/components/index.ts +1 -0
  91. package/src/hooks/processor.ts +1 -2
  92. package/src/hooks/useChatProcessor.tsx +1 -1
  93. package/src/testing/test-services.ts +6 -6
  94. package/src/translations.ts +4 -3
  95. package/dist/lib/browser/ChatContainer-V5GP7DYF.mjs.map +0 -7
  96. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs +0 -78
  97. package/dist/lib/browser/TemplateContainer-K4EJNGIL.mjs.map +0 -7
  98. package/dist/lib/browser/app-graph-builder-MF5EVDWW.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-KYMKVE6M.mjs.map +0 -7
  100. package/dist/lib/browser/intent-resolver-WJGLKKVO.mjs.map +0 -7
  101. package/dist/lib/browser/react-surface-57VRDOQT.mjs.map +0 -7
  102. package/dist/lib/browser/settings-U6UFQX32.mjs.map +0 -7
  103. package/dist/lib/node/ChatContainer-ZJ5JXF6A.cjs.map +0 -7
  104. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs +0 -104
  105. package/dist/lib/node/TemplateContainer-XWFYJB4T.cjs.map +0 -7
  106. package/dist/lib/node/app-graph-builder-N5ZUUI2Z.cjs.map +0 -7
  107. package/dist/lib/node/chunk-RPBKMP2E.cjs.map +0 -7
  108. package/dist/lib/node/chunk-ZKOC4ZFY.cjs.map +0 -7
  109. package/dist/lib/node/intent-resolver-R3OSTIMH.cjs.map +0 -7
  110. package/dist/lib/node/react-surface-NUQTM6MS.cjs.map +0 -7
  111. package/dist/lib/node/settings-TXGRCYAL.cjs.map +0 -7
  112. package/dist/lib/node-esm/ChatContainer-QW3OOXTT.mjs.map +0 -7
  113. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs +0 -79
  114. package/dist/lib/node-esm/TemplateContainer-EUM2X65J.mjs.map +0 -7
  115. package/dist/lib/node-esm/app-graph-builder-DWBNIMHM.mjs.map +0 -7
  116. package/dist/lib/node-esm/chunk-GBBXIW5F.mjs.map +0 -7
  117. package/dist/lib/node-esm/intent-resolver-H32TL4X6.mjs.map +0 -7
  118. package/dist/lib/node-esm/react-surface-JBVZF6CP.mjs.map +0 -7
  119. package/dist/lib/node-esm/settings-DZU5PNXM.mjs.map +0 -7
  120. /package/dist/lib/browser/{AssistantDialog-YSHMAHW5.mjs.map → AssistantDialog-77B4BSXR.mjs.map} +0 -0
  121. /package/dist/lib/node/{AssistantDialog-YI2BSGSX.cjs.map → AssistantDialog-7V7RRSIL.cjs.map} +0 -0
  122. /package/dist/lib/node-esm/{AssistantDialog-U2FQX5TD.mjs.map → AssistantDialog-N24M73FW.mjs.map} +0 -0
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  useServices
3
- } from "./chunk-FMB7RGMP.mjs";
3
+ } from "./chunk-FQ4L5NYW.mjs";
4
4
  import {
5
5
  ServiceType,
6
+ TemplateKinds,
6
7
  categoryIcons
7
8
  } from "./chunk-IAMR2FAE.mjs";
8
9
  import {
@@ -58,11 +59,69 @@ var AssistantSettings = ({ settings }) => {
58
59
  }, model))))))));
59
60
  };
60
61
 
62
+ // packages/plugins/plugin-assistant/src/components/PromptSettings.tsx
63
+ import { Match } from "effect";
64
+ import React2, { useCallback } from "react";
65
+ import { debounce } from "@dxos/async";
66
+ import { Input as Input2, Select as Select2, Toolbar, useTranslation as useTranslation2 } from "@dxos/react-ui";
67
+ var PromptSettings = ({ template }) => {
68
+ const { t } = useTranslation2(ASSISTANT_PLUGIN);
69
+ const handleKindChange = useCallback((value) => {
70
+ const kind = Match.type().pipe(Match.withReturnType(), Match.when("always", () => ({
71
+ include: "always"
72
+ })), Match.when("schema-matching", () => ({
73
+ include: "schema-matching",
74
+ typename: ""
75
+ })), Match.when("automatically", () => ({
76
+ include: "automatically",
77
+ description: ""
78
+ })), Match.orElse(() => ({
79
+ include: "manual"
80
+ })))(value);
81
+ template.kind = kind;
82
+ }, [
83
+ template
84
+ ]);
85
+ const handleTypenameChange = useCallback(debounce((event) => {
86
+ if (template.kind.include === "schema-matching") {
87
+ template.kind.typename = event.target.value;
88
+ }
89
+ }, 300), [
90
+ template.kind.include
91
+ ]);
92
+ const handleDescriptionChange = useCallback(debounce((event) => {
93
+ if (template.kind.include === "automatically") {
94
+ template.kind.description = event.target.value;
95
+ }
96
+ }, 300), [
97
+ template.kind.include
98
+ ]);
99
+ return /* @__PURE__ */ React2.createElement("div", {
100
+ className: "p-2 flex flex-col gap-4"
101
+ }, /* @__PURE__ */ React2.createElement("h2", null, t("prompt rules label")), /* @__PURE__ */ React2.createElement(Toolbar.Root, null, /* @__PURE__ */ React2.createElement(Select2.Root, {
102
+ value: template.kind.include,
103
+ onValueChange: handleKindChange
104
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Button, {
105
+ asChild: true
106
+ }, /* @__PURE__ */ React2.createElement(Select2.TriggerButton, null)), /* @__PURE__ */ React2.createElement(Select2.Portal, null, /* @__PURE__ */ React2.createElement(Select2.Content, null, /* @__PURE__ */ React2.createElement(Select2.Viewport, null, TemplateKinds.map((kind) => /* @__PURE__ */ React2.createElement(Select2.Option, {
107
+ key: kind,
108
+ value: kind
109
+ }, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ React2.createElement(Input2.Root, null, /* @__PURE__ */ React2.createElement(Input2.TextInput, {
110
+ placeholder: t("typename placeholder"),
111
+ defaultValue: template.kind.typename,
112
+ onChange: handleTypenameChange
113
+ })), template.kind.include === "automatically" && /* @__PURE__ */ React2.createElement(Input2.Root, null, /* @__PURE__ */ React2.createElement(Input2.TextInput, {
114
+ placeholder: t("description placeholder"),
115
+ defaultValue: template.kind.description,
116
+ onChange: handleDescriptionChange
117
+ }))));
118
+ };
119
+
61
120
  // packages/plugins/plugin-assistant/src/components/ServiceRegistry/ServiceRegistry.tsx
62
- import React2, { useMemo } from "react";
121
+ import React3, { useMemo } from "react";
63
122
  import { Filter } from "@dxos/client/echo";
64
123
  import { useQuery } from "@dxos/react-client/echo";
65
- import { Icon, Input as Input2, List, ListItem } from "@dxos/react-ui";
124
+ import { Icon, Input as Input3, List, ListItem } from "@dxos/react-ui";
66
125
  var ServiceRegistry = ({ space }) => {
67
126
  const matchingServices = useServices(space);
68
127
  const enabledServices = useQuery(space, Filter.schema(ServiceType));
@@ -79,9 +138,9 @@ var ServiceRegistry = ({ space }) => {
79
138
  space.db.remove(service);
80
139
  }
81
140
  };
82
- return /* @__PURE__ */ React2.createElement(List, {
141
+ return /* @__PURE__ */ React3.createElement(List, {
83
142
  classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
84
- }, services.map((service) => /* @__PURE__ */ React2.createElement(ServiceItem, {
143
+ }, services.map((service) => /* @__PURE__ */ React3.createElement(ServiceItem, {
85
144
  key: service.serviceId,
86
145
  service,
87
146
  enabled: service.enabled,
@@ -89,40 +148,41 @@ var ServiceRegistry = ({ space }) => {
89
148
  })));
90
149
  };
91
150
  var ServiceItem = ({ service, enabled, setEnabled }) => {
92
- return /* @__PURE__ */ React2.createElement(ListItem.Root, {
151
+ return /* @__PURE__ */ React3.createElement(ListItem.Root, {
93
152
  classNames: "flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator"
94
- }, /* @__PURE__ */ React2.createElement("div", {
153
+ }, /* @__PURE__ */ React3.createElement("div", {
95
154
  className: "grid grid-cols-[40px_1fr_40px]"
96
- }, /* @__PURE__ */ React2.createElement("div", {
155
+ }, /* @__PURE__ */ React3.createElement("div", {
97
156
  className: "flex gow justify-center items-center"
98
- }, /* @__PURE__ */ React2.createElement(Icon, {
157
+ }, /* @__PURE__ */ React3.createElement(Icon, {
99
158
  icon: categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
100
159
  size: 6
101
- })), /* @__PURE__ */ React2.createElement("div", {
160
+ })), /* @__PURE__ */ React3.createElement("div", {
102
161
  className: "grow items-center truncate mie-2"
103
- }, service.name), /* @__PURE__ */ React2.createElement("div", {
162
+ }, service.name), /* @__PURE__ */ React3.createElement("div", {
104
163
  className: "flex gow justify-center items-center"
105
- }, /* @__PURE__ */ React2.createElement(Input2.Root, null, /* @__PURE__ */ React2.createElement(Input2.Switch, {
164
+ }, /* @__PURE__ */ React3.createElement(Input3.Root, null, /* @__PURE__ */ React3.createElement(Input3.Switch, {
106
165
  checked: enabled,
107
166
  onClick: () => setEnabled?.(!enabled)
108
- })))), /* @__PURE__ */ React2.createElement("div", {
167
+ })))), /* @__PURE__ */ React3.createElement("div", {
109
168
  className: "grid grid-cols-[40px_1fr]"
110
- }, /* @__PURE__ */ React2.createElement("div", null), /* @__PURE__ */ React2.createElement("div", {
169
+ }, /* @__PURE__ */ React3.createElement("div", null), /* @__PURE__ */ React3.createElement("div", {
111
170
  className: "text-sm text-subdued line-clamp-2 mie-1"
112
171
  }, service.description)));
113
172
  };
114
173
 
115
174
  // packages/plugins/plugin-assistant/src/components/index.ts
116
175
  import { lazy } from "react";
117
- var AssistantDialog = lazy(() => import("./AssistantDialog-YSHMAHW5.mjs"));
118
- var ChatContainer = lazy(() => import("./ChatContainer-V5GP7DYF.mjs"));
119
- var TemplateContainer = lazy(() => import("./TemplateContainer-K4EJNGIL.mjs"));
176
+ var AssistantDialog = lazy(() => import("./AssistantDialog-77B4BSXR.mjs"));
177
+ var ChatContainer = lazy(() => import("./ChatContainer-4AMJKO3T.mjs"));
178
+ var TemplateContainer = lazy(() => import("./TemplateContainer-WKU5XFSO.mjs"));
120
179
 
121
180
  export {
122
181
  AssistantSettings,
182
+ PromptSettings,
123
183
  ServiceRegistry,
124
184
  AssistantDialog,
125
185
  ChatContainer,
126
186
  TemplateContainer
127
187
  };
128
- //# sourceMappingURL=chunk-KYMKVE6M.mjs.map
188
+ //# sourceMappingURL=chunk-SBFJKCVU.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AssistantSettings/AssistantSettings.tsx", "../../../src/components/PromptSettings.tsx", "../../../src/components/ServiceRegistry/ServiceRegistry.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/assistant';\nimport { Input, Select, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { ASSISTANT_PLUGIN } from '../../meta';\nimport { type AssistantSettingsProps } from '../../types';\n\n// TODO(burdon): Factor out.\nconst DEFAULT_VALUE = '__default';\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 <Input.Switch\n checked={settings.llmProvider === 'ollama'}\n onCheckedChange={(checked) => (settings.llmProvider = checked ? 'ollama' : 'edge')}\n />\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 as S } 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<S.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 2025 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Filter, type Space } from '@dxos/client/echo';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Icon, Input, List, ListItem } from '@dxos/react-ui';\n\nimport { useServices } from '../../hooks';\nimport { categoryIcons, ServiceType } from '../../types';\n\n// TODO(burdon): Option to show all/enabled/filter.\nexport const ServiceRegistry = ({ space }: { space: Space }) => {\n const matchingServices = useServices(space);\n const enabledServices = useQuery(space, Filter.schema(ServiceType));\n\n // Join matching services with enabled services.\n const services = useMemo(() => {\n return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);\n }, [matchingServices, enabledServices]);\n\n // TODO(burdon): Reaplce with SpacePlugin intent.\n const handleSetEnabled = (service: ServiceType, enabled: boolean) => {\n if (enabled) {\n space.db.add(service);\n } else {\n // TODO(burdon): Remove or disable?\n space.db.remove(service);\n }\n };\n\n return (\n <List classNames='h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin'>\n {services.map((service) => (\n <ServiceItem\n key={service.serviceId}\n service={service}\n enabled={service.enabled}\n setEnabled={(enabled) => handleSetEnabled(service, enabled)}\n />\n ))}\n </List>\n );\n};\n\nconst ServiceItem = ({\n service,\n enabled,\n setEnabled,\n}: {\n service: ServiceType;\n enabled?: boolean;\n setEnabled?: (enabled: boolean) => void;\n}) => {\n return (\n <ListItem.Root classNames='flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator'>\n <div className='grid grid-cols-[40px_1fr_40px]'>\n <div className='flex gow justify-center items-center'>\n <Icon icon={categoryIcons[service.category ?? 'default'] ?? 'ph--placeholder--regular'} size={6} />\n </div>\n <div className='grow items-center truncate mie-2'>{service.name}</div>\n <div className='flex gow justify-center items-center'>\n <Input.Root>\n <Input.Switch checked={enabled} onClick={() => setEnabled?.(!enabled)} />\n </Input.Root>\n </div>\n </div>\n <div className='grid grid-cols-[40px_1fr]'>\n <div />\n <div className='text-sm text-subdued line-clamp-2 mie-1'>{service.description}</div>\n </div>\n </ListItem.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './AssistantSettings';\nexport * from './PromptSettings';\nexport * from './ServiceRegistry';\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", "AssistantSettings", "settings", "t", "useTranslation", "ASSISTANT_PLUGIN", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "customPrompts", "onCheckedChange", "llmProvider", "Select", "Root", "value", "edgeModel", "onValueChange", "undefined", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "Option", "DEFAULT_EDGE_MODELS", "map", "model", "key", "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", "React", "useMemo", "Filter", "useQuery", "Icon", "Input", "List", "ListItem", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "map", "service", "find", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "React", "List", "classNames", "ServiceItem", "key", "setEnabled", "ListItem", "Root", "div", "className", "Icon", "icon", "categoryIcons", "category", "size", "name", "Input", "Switch", "checked", "onClick", "description", "lazy", "AssistantDialog", "lazy", "ChatContainer", "TemplateContainer"]
7
+ }
@@ -2,9 +2,10 @@ import {
2
2
  AssistantDialog,
3
3
  AssistantSettings,
4
4
  ChatContainer,
5
+ PromptSettings,
5
6
  ServiceRegistry,
6
7
  TemplateContainer
7
- } from "./chunk-KYMKVE6M.mjs";
8
+ } from "./chunk-SBFJKCVU.mjs";
8
9
  import {
9
10
  TemplateEditor,
10
11
  handlebarsHighlightStyle
@@ -19,7 +20,7 @@ import {
19
20
  ThreadContainer,
20
21
  Toolbox,
21
22
  ToolboxContainer
22
- } from "./chunk-FMB7RGMP.mjs";
23
+ } from "./chunk-FQ4L5NYW.mjs";
23
24
  import "./chunk-TXJWGWJ7.mjs";
24
25
  import {
25
26
  AIChatType,
@@ -51,7 +52,7 @@ var translations_default = [
51
52
  {
52
53
  "en-US": {
53
54
  [AIChatType.typename]: {
54
- "typename label": "AI Chat",
55
+ "typename label": "Assistant",
55
56
  "object name placeholder": "AI Chat"
56
57
  },
57
58
  [TemplateType.typename]: {
@@ -60,8 +61,8 @@ var translations_default = [
60
61
  },
61
62
  [ASSISTANT_PLUGIN]: {
62
63
  "templates label": "Templates",
63
- "open ambient chat label": "Open AI chat",
64
- "assistant chat label": "AI chat",
64
+ "open ambient chat label": "Open Assistant",
65
+ "assistant chat label": "Assistant",
65
66
  "plugin name": "Assistant",
66
67
  "object placeholder": "New prompt",
67
68
  "create object label": "Create prompt",
@@ -70,6 +71,7 @@ var translations_default = [
70
71
  "command placeholder": "Enter slash command...",
71
72
  "template placeholder": "Enter template...",
72
73
  "value placeholder": "Enter value...",
74
+ "prompt rules label": "Prompt Rules",
73
75
  "typename placeholder": "Enter typename of objects which this template is for",
74
76
  "description placeholder": "Enter description of when this template should be used",
75
77
  "select preset template placeholder": "Select preset",
@@ -182,6 +184,7 @@ export {
182
184
  AssistantSettings,
183
185
  AssistantSettingsSchema,
184
186
  ChatContainer,
187
+ PromptSettings,
185
188
  ServiceRegistry,
186
189
  ServiceType,
187
190
  TemplateContainer,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/AssistantPlugin.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n allOf,\n Capabilities,\n contributes,\n createIntent,\n defineModule,\n definePlugin,\n Events,\n} from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\n\nimport { AiClient, AppGraphBuilder, IntentResolver, ReactSurface, AssistantSettings } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { AssistantAction, AIChatType, ServiceType, TemplateType } from './types';\n\nexport const AssistantPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: AssistantSettings,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: TemplateType.typename,\n metadata: {\n icon: 'ph--code-block--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: AIChatType.typename,\n metadata: {\n icon: 'ph--atom--regular',\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: AIChatType,\n getIntent: (_, options) => createIntent(AssistantAction.CreateChat, { spaceId: options.space.id }),\n }),\n ),\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: TemplateType,\n hidden: true,\n getIntent: () => createIntent(AssistantAction.CreateTemplate),\n }),\n ),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ServiceType, TemplateType]),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the chat is loaded when surfaces activation is more granular.\n activatesBefore: [Events.SetupArtifactDefinition],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/ai-client`,\n activatesOn: allOf(ClientEvents.ClientReady, Events.SettingsReady),\n activate: AiClient,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ASSISTANT_PLUGIN } from './meta';\nimport { AIChatType, TemplateType } from './types';\n\nexport default [\n {\n 'en-US': {\n [AIChatType.typename]: {\n 'typename label': 'AI Chat',\n 'object name placeholder': 'AI Chat',\n },\n [TemplateType.typename]: {\n 'typename label': 'Template',\n 'object name placeholder': 'New template',\n },\n [ASSISTANT_PLUGIN]: {\n 'templates label': 'Templates',\n\n 'open ambient chat label': 'Open AI chat',\n 'assistant chat label': 'AI chat',\n 'plugin name': 'Assistant',\n 'object placeholder': 'New prompt',\n 'create object label': 'Create prompt',\n 'create trigger label': 'Create trigger',\n 'create stack section label': 'Create prompt',\n 'command placeholder': 'Enter slash command...',\n 'template placeholder': 'Enter template...',\n 'value placeholder': 'Enter value...',\n 'typename placeholder': 'Enter typename of objects which this template is for',\n 'description placeholder': 'Enter description of when this template should be used',\n 'select preset template placeholder': 'Select preset',\n 'service registry label': 'Service Registry',\n\n 'assistant dialog title': 'Assistant',\n 'open assistant label': 'Open assistant',\n\n 'chat input placeholder': 'Ask a question...',\n 'chat stop': 'Cancel request.',\n\n 'prompt placeholder': 'Ask a question...',\n 'microphone button': 'Click to speak',\n 'cancel processing button': 'Stop processing',\n\n 'settings default label': 'Default',\n 'settings custom prompts label': 'Use custom prompts',\n 'settings llm provider label': 'Enable Ollama integration',\n 'settings edge llm model label': 'Remote language model',\n 'settings ollama llm model label': 'Ollama language model',\n },\n },\n },\n];\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n allOf,\n Capabilities,\n contributes,\n createIntent,\n defineModule,\n definePlugin,\n Events,\n} from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\n\nimport { AiClient, AppGraphBuilder, IntentResolver, ReactSurface, AssistantSettings } from './capabilities';\nimport { meta } from './meta';\nimport translations from './translations';\nimport { AssistantAction, AIChatType, ServiceType, TemplateType } from './types';\n\nexport const AssistantPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, translations),\n }),\n defineModule({\n id: `${meta.id}/module/settings`,\n activatesOn: Events.SetupSettings,\n activate: AssistantSettings,\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: TemplateType.typename,\n metadata: {\n icon: 'ph--code-block--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: AIChatType.typename,\n metadata: {\n icon: 'ph--atom--regular',\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => [\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: AIChatType,\n getIntent: (_, options) => createIntent(AssistantAction.CreateChat, { spaceId: options.space.id }),\n }),\n ),\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: TemplateType,\n hidden: true,\n getIntent: () => createIntent(AssistantAction.CreateTemplate),\n }),\n ),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ServiceType, TemplateType]),\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the chat is loaded when surfaces activation is more granular.\n activatesBefore: [Events.SetupArtifactDefinition],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/ai-client`,\n activatesOn: allOf(ClientEvents.ClientReady, Events.SettingsReady),\n activate: AiClient,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ASSISTANT_PLUGIN } from './meta';\nimport { AIChatType, TemplateType } from './types';\n\nexport default [\n {\n 'en-US': {\n [AIChatType.typename]: {\n 'typename label': 'Assistant',\n 'object name placeholder': 'AI Chat',\n },\n [TemplateType.typename]: {\n 'typename label': 'Template',\n 'object name placeholder': 'New template',\n },\n [ASSISTANT_PLUGIN]: {\n 'templates label': 'Templates',\n\n 'open ambient chat label': 'Open Assistant',\n 'assistant chat label': 'Assistant',\n 'plugin name': 'Assistant',\n 'object placeholder': 'New prompt',\n 'create object label': 'Create prompt',\n 'create trigger label': 'Create trigger',\n 'create stack section label': 'Create prompt',\n 'command placeholder': 'Enter slash command...',\n 'template placeholder': 'Enter template...',\n 'value placeholder': 'Enter value...',\n 'prompt rules label': 'Prompt Rules',\n 'typename placeholder': 'Enter typename of objects which this template is for',\n 'description placeholder': 'Enter description of when this template should be used',\n 'select preset template placeholder': 'Select preset',\n 'service registry label': 'Service Registry',\n\n 'assistant dialog title': 'Assistant',\n 'open assistant label': 'Open assistant',\n\n 'chat input placeholder': 'Ask a question...',\n 'chat stop': 'Cancel request.',\n\n 'prompt placeholder': 'Ask a question...',\n 'microphone button': 'Click to speak',\n 'cancel processing button': 'Stop processing',\n\n 'settings default label': 'Default',\n 'settings custom prompts label': 'Use custom prompts',\n 'settings llm provider label': 'Enable Ollama integration',\n 'settings edge llm model label': 'Remote language model',\n 'settings ollama llm model label': 'Ollama language model',\n },\n },\n },\n];\n"],
5
+ "mappings": "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",
6
6
  "names": ["allOf", "Capabilities", "contributes", "createIntent", "defineModule", "definePlugin", "Events", "ClientCapabilities", "ClientEvents", "SpaceCapabilities", "defineObjectForm", "AIChatType", "typename", "TemplateType", "ASSISTANT_PLUGIN", "AssistantPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "Events", "SetupTranslations", "activate", "contributes", "Capabilities", "Translations", "translations", "SetupSettings", "AssistantSettings", "SetupMetadata", "Metadata", "TemplateType", "typename", "metadata", "icon", "AIChatType", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "AssistantAction", "CreateChat", "spaceId", "space", "hidden", "CreateTemplate", "ClientCapabilities", "Schema", "ServiceType", "SetupAppGraph", "AppGraphBuilder", "SetupIntentResolver", "IntentResolver", "SetupReactSurface", "activatesBefore", "SetupArtifactDefinition", "ReactSurface", "allOf", "ClientReady", "SettingsReady", "AiClient"]
7
7
  }
@@ -9,13 +9,13 @@ import "./chunk-3HCI5FIL.mjs";
9
9
  import { Capabilities, contributes, createResolver } from "@dxos/app-framework";
10
10
  import { ObjectId } from "@dxos/echo-schema";
11
11
  import { DXN, QueueSubspaceTags } from "@dxos/keys";
12
- import { create, refFromDXN } from "@dxos/live-object";
12
+ import { live, refFromDXN } from "@dxos/live-object";
13
13
  var intent_resolver_default = () => [
14
14
  contributes(Capabilities.IntentResolver, createResolver({
15
15
  intent: AssistantAction.CreateChat,
16
16
  resolve: ({ spaceId, name }) => ({
17
17
  data: {
18
- object: create(AIChatType, {
18
+ object: live(AIChatType, {
19
19
  assistantChatQueue: refFromDXN(new DXN(DXN.kind.QUEUE, [
20
20
  QueueSubspaceTags.DATA,
21
21
  spaceId,
@@ -29,7 +29,7 @@ var intent_resolver_default = () => [
29
29
  intent: AssistantAction.CreateTemplate,
30
30
  resolve: ({ name }) => ({
31
31
  data: {
32
- object: create(TemplateType, {
32
+ object: live(TemplateType, {
33
33
  name,
34
34
  kind: {
35
35
  include: "manual"
@@ -43,4 +43,4 @@ var intent_resolver_default = () => [
43
43
  export {
44
44
  intent_resolver_default as default
45
45
  };
46
- //# sourceMappingURL=intent-resolver-WJGLKKVO.mjs.map
46
+ //# sourceMappingURL=intent-resolver-YAQELTFQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes, createResolver } from '@dxos/app-framework';\nimport { ObjectId } from '@dxos/echo-schema';\nimport { DXN, QueueSubspaceTags } from '@dxos/keys';\nimport { live, refFromDXN } from '@dxos/live-object';\n\nimport { AssistantAction, AIChatType, TemplateType } from '../types';\n\nexport default () => [\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateChat,\n resolve: ({ spaceId, name }) => ({\n data: {\n object: live(AIChatType, {\n assistantChatQueue: refFromDXN(\n new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()]),\n ),\n }),\n },\n }),\n }),\n ),\n contributes(\n Capabilities.IntentResolver,\n createResolver({\n intent: AssistantAction.CreateTemplate,\n resolve: ({ name }) => ({\n data: {\n object: live(TemplateType, { name, kind: { include: 'manual' }, source: '{{! Template }}' }),\n },\n }),\n }),\n ),\n];\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,aAAaC,sBAAsB;AAC1D,SAASC,gBAAgB;AACzB,SAASC,KAAKC,yBAAyB;AACvC,SAASC,MAAMC,kBAAkB;AAIjC,IAAA,0BAAe,MAAM;EACnBC,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBC;IACxBC,SAAS,CAAC,EAAEC,SAASC,KAAI,OAAQ;MAC/BC,MAAM;QACJC,QAAQC,KAAKC,YAAY;UACvBC,oBAAoBC,WAClB,IAAIC,IAAIA,IAAIC,KAAKC,OAAO;YAACC,kBAAkBC;YAAMZ;YAASa,SAASC,OAAM;WAAG,CAAA;QAEhF,CAAA;MACF;IACF;EACF,CAAA,CAAA;EAEFtB,YACEC,aAAaC,gBACbC,eAAe;IACbC,QAAQC,gBAAgBkB;IACxBhB,SAAS,CAAC,EAAEE,KAAI,OAAQ;MACtBC,MAAM;QACJC,QAAQC,KAAKY,cAAc;UAAEf;UAAMQ,MAAM;YAAEQ,SAAS;UAAS;UAAGC,QAAQ;QAAkB,CAAA;MAC5F;IACF;EACF,CAAA,CAAA;;",
6
+ "names": ["Capabilities", "contributes", "createResolver", "ObjectId", "DXN", "QueueSubspaceTags", "live", "refFromDXN", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "AssistantAction", "CreateChat", "resolve", "spaceId", "name", "data", "object", "live", "AIChatType", "assistantChatQueue", "refFromDXN", "DXN", "kind", "QUEUE", "QueueSubspaceTags", "DATA", "ObjectId", "random", "CreateTemplate", "TemplateType", "include", "source"]
7
+ }