@dxos/plugin-assistant 0.8.1-staging.391c573 → 0.8.1-staging.5be625a
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.
- package/dist/lib/browser/{AssistantDialog-CM33SOCT.mjs → AssistantDialog-EIUUSXDS.mjs} +11 -10
- package/dist/lib/browser/AssistantDialog-EIUUSXDS.mjs.map +7 -0
- package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs → ChatContainer-NHHA6CSP.mjs} +5 -5
- package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs +78 -0
- package/dist/lib/browser/TemplateContainer-7IQ6V5AD.mjs.map +7 -0
- package/dist/lib/browser/ai-client-BAPVMSNX.mjs +35 -0
- package/dist/lib/browser/ai-client-BAPVMSNX.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-4DIOTGOG.mjs → app-graph-builder-DTCUWBKB.mjs} +57 -6
- package/dist/lib/browser/app-graph-builder-DTCUWBKB.mjs.map +7 -0
- package/dist/lib/browser/{chunk-M2SADJVS.mjs → chunk-25APJ3ZK.mjs} +34 -12
- package/dist/lib/browser/chunk-25APJ3ZK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EUMPBC4T.mjs → chunk-6FTPLBSC.mjs} +2 -2
- package/dist/lib/browser/{chunk-NV7SVHMV.mjs → chunk-AF7VQAKS.mjs} +1 -1
- package/dist/lib/browser/{chunk-NV7SVHMV.mjs.map → chunk-AF7VQAKS.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-WVME6K4X.mjs → chunk-KGIACFAX.mjs} +333 -205
- package/dist/lib/browser/chunk-KGIACFAX.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NTLTGYYS.mjs → chunk-SVUCJXGN.mjs} +2 -2
- package/dist/lib/browser/chunk-SVUCJXGN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FPXC3LKK.mjs → chunk-X6ALDUA5.mjs} +25 -3
- package/dist/lib/browser/{chunk-FPXC3LKK.mjs.map → chunk-X6ALDUA5.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +25 -27
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-FQRN6747.mjs → intent-resolver-U57FXP3I.mjs} +6 -3
- package/dist/lib/browser/{intent-resolver-FQRN6747.mjs.map → intent-resolver-U57FXP3I.mjs.map} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-ZT6EQ7FJ.mjs → react-surface-YNN5NYJW.mjs} +10 -9
- package/dist/lib/browser/react-surface-YNN5NYJW.mjs.map +7 -0
- package/dist/lib/browser/{settings-VVQUGG56.mjs → settings-VAW6UWFL.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +6 -2
- package/dist/lib/node/{AssistantDialog-5PVOCPE2.cjs → AssistantDialog-GT7R7MKH.cjs} +17 -16
- package/dist/lib/node/AssistantDialog-GT7R7MKH.cjs.map +7 -0
- package/dist/lib/node/{ChatContainer-I45I3ICI.cjs → ChatContainer-JUZOEZZ7.cjs} +10 -10
- package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs +104 -0
- package/dist/lib/node/TemplateContainer-VPAZRFQA.cjs.map +7 -0
- package/dist/lib/node/{ai-client-6CY35ZIR.cjs → ai-client-5ESLYXAV.cjs} +19 -8
- package/dist/lib/node/ai-client-5ESLYXAV.cjs.map +7 -0
- package/dist/lib/node/{app-graph-builder-7O4U4RXH.cjs → app-graph-builder-3P6WSON2.cjs} +63 -13
- package/dist/lib/node/app-graph-builder-3P6WSON2.cjs.map +7 -0
- package/dist/lib/node/{chunk-HFOUAFOW.cjs → chunk-G2HY3UJ4.cjs} +40 -18
- package/dist/lib/node/chunk-G2HY3UJ4.cjs.map +7 -0
- package/dist/lib/node/{chunk-JWUHUQ56.cjs → chunk-JAB6KLPP.cjs} +334 -210
- package/dist/lib/node/chunk-JAB6KLPP.cjs.map +7 -0
- package/dist/lib/node/{chunk-34WE2FD2.cjs → chunk-KLSNCP34.cjs} +31 -7
- package/dist/lib/node/chunk-KLSNCP34.cjs.map +7 -0
- package/dist/lib/node/{chunk-NV4TQQSU.cjs → chunk-N3SW6DJ6.cjs} +6 -6
- package/dist/lib/node/{chunk-GNPXCHFT.cjs → chunk-U6J2GO7I.cjs} +4 -4
- package/dist/lib/node/{chunk-GNPXCHFT.cjs.map → chunk-U6J2GO7I.cjs.map} +2 -2
- package/dist/lib/node/{chunk-3WXG6WA6.cjs → chunk-VRXFIS4X.cjs} +6 -6
- package/dist/lib/node/chunk-VRXFIS4X.cjs.map +7 -0
- package/dist/lib/node/index.cjs +75 -77
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs → intent-resolver-YIFAMM3B.cjs} +13 -10
- package/dist/lib/node/{intent-resolver-Z37RNNMC.cjs.map → intent-resolver-YIFAMM3B.cjs.map} +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-KFXP3GGK.cjs → react-surface-IDGIN55C.cjs} +25 -24
- package/dist/lib/node/react-surface-IDGIN55C.cjs.map +7 -0
- package/dist/lib/node/{settings-TJHHVI6B.cjs → settings-2FEYGLYU.cjs} +8 -8
- package/dist/lib/node/types/index.cjs +15 -11
- package/dist/lib/node/types/index.cjs.map +2 -2
- package/dist/lib/node-esm/{AssistantDialog-Q2ZBOHOV.mjs → AssistantDialog-JMBFM6QH.mjs} +11 -10
- package/dist/lib/node-esm/AssistantDialog-JMBFM6QH.mjs.map +7 -0
- package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs → ChatContainer-ZNN5CMVL.mjs} +5 -5
- package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs +79 -0
- package/dist/lib/node-esm/TemplateContainer-YLA6BJY6.mjs.map +7 -0
- package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs +36 -0
- package/dist/lib/node-esm/ai-client-XYZ5N7CR.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-SX3SREXF.mjs → app-graph-builder-PMAQLTTN.mjs} +57 -6
- package/dist/lib/node-esm/app-graph-builder-PMAQLTTN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ICQN3TDS.mjs → chunk-2CIYX3SD.mjs} +2 -2
- package/dist/lib/node-esm/chunk-2CIYX3SD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs → chunk-J63VQFQO.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs → chunk-N6BVC2C2.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-7SV6X6XU.mjs.map → chunk-N6BVC2C2.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs → chunk-NMMRHHAR.mjs} +25 -3
- package/dist/lib/node-esm/{chunk-LELXJPGJ.mjs.map → chunk-NMMRHHAR.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-ASMI7PQ2.mjs → chunk-PK5JCOYB.mjs} +333 -205
- package/dist/lib/node-esm/chunk-PK5JCOYB.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2OUUYMBT.mjs → chunk-SMUINDXQ.mjs} +34 -12
- package/dist/lib/node-esm/chunk-SMUINDXQ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +25 -27
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs → intent-resolver-SQ4HLL5L.mjs} +6 -3
- package/dist/lib/node-esm/{intent-resolver-LOTXWV4J.mjs.map → intent-resolver-SQ4HLL5L.mjs.map} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-NZNNP2QI.mjs → react-surface-424JZTZ4.mjs} +10 -9
- package/dist/lib/node-esm/react-surface-424JZTZ4.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-BVWR244C.mjs → settings-VHR5KT4J.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +6 -2
- package/dist/types/src/AssistantPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/ai-client.d.ts +2 -1
- package/dist/types/src/capabilities/ai-client.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +2 -1
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts +4 -3
- package/dist/types/src/components/AmbientDialog/AmbientDialog.d.ts.map +1 -1
- package/dist/types/src/components/AssistantDialog.d.ts.map +1 -1
- package/dist/types/src/components/AssistantSettings/AssistantSettings.d.ts.map +1 -1
- package/dist/types/src/components/Prompt/Prompt.d.ts +3 -0
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts +1 -0
- package/dist/types/src/components/Prompt/Prompt.stories.d.ts.map +1 -1
- package/dist/types/src/components/Prompt/PromptBar.d.ts +2 -2
- package/dist/types/src/components/Prompt/PromptBar.d.ts.map +1 -1
- package/dist/types/src/components/Prompt/references.d.ts +30 -0
- package/dist/types/src/components/Prompt/references.d.ts.map +1 -0
- package/dist/types/src/components/TemplateContainer.d.ts.map +1 -1
- package/dist/types/src/components/Thread/Thread.d.ts +11 -1
- package/dist/types/src/components/Thread/Thread.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadContainer.d.ts +1 -0
- package/dist/types/src/components/Thread/ThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Thread/ThreadMessage.d.ts.map +1 -1
- package/dist/types/src/hooks/email.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/processor.d.ts +7 -15
- package/dist/types/src/hooks/processor.d.ts.map +1 -1
- package/dist/types/src/hooks/useChatProcessor.d.ts +9 -2
- package/dist/types/src/hooks/useChatProcessor.d.ts.map +1 -1
- package/dist/types/src/hooks/useContextProvider.d.ts +17 -0
- package/dist/types/src/hooks/useContextProvider.d.ts.map +1 -0
- package/dist/types/src/hooks/useMessageQueue.d.ts +4 -4
- package/dist/types/src/hooks/useMessageQueue.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -8
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/test-functions.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +23 -12
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/template.d.ts +36 -0
- package/dist/types/src/types/template.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +3 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/package.json +56 -55
- package/src/AssistantPlugin.tsx +11 -4
- package/src/capabilities/ai-client.ts +23 -5
- package/src/capabilities/app-graph-builder.ts +48 -2
- package/src/capabilities/capabilities.ts +3 -1
- package/src/capabilities/intent-resolver.ts +1 -1
- package/src/capabilities/react-surface.tsx +3 -2
- package/src/components/AmbientDialog/AmbientDialog.tsx +11 -11
- package/src/components/AssistantDialog.tsx +7 -1
- package/src/components/AssistantSettings/AssistantSettings.tsx +39 -5
- package/src/components/Prompt/Prompt.stories.tsx +34 -0
- package/src/components/Prompt/Prompt.tsx +28 -18
- package/src/components/Prompt/PromptBar.tsx +3 -1
- package/src/components/Prompt/references.ts +180 -0
- package/src/components/TemplateContainer.tsx +79 -4
- package/src/components/TemplateEditor/TemplateEditor.stories.tsx +1 -1
- package/src/components/TemplateEditor/TemplateForm.stories.tsx +1 -1
- package/src/components/Thread/Thread.tsx +21 -0
- package/src/components/Thread/ThreadContainer.stories.tsx +5 -10
- package/src/components/Thread/ThreadContainer.tsx +7 -4
- package/src/components/Thread/ThreadMessage.tsx +17 -9
- package/src/hooks/email.ts +3 -3
- package/src/hooks/index.ts +1 -0
- package/src/hooks/processor.ts +57 -116
- package/src/hooks/useChatProcessor.tsx +24 -16
- package/src/hooks/useContextProvider.ts +55 -0
- package/src/hooks/useMessageQueue.ts +2 -4
- package/src/meta.ts +2 -2
- package/src/testing/test-functions.ts +2 -2
- package/src/translations.ts +10 -5
- package/src/types/template.ts +22 -0
- package/src/types/types.ts +3 -1
- package/dist/lib/browser/AssistantDialog-CM33SOCT.mjs.map +0 -7
- package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs +0 -23
- package/dist/lib/browser/TemplateContainer-B7MQNUPY.mjs.map +0 -7
- package/dist/lib/browser/ai-client-HZPB7E6M.mjs +0 -22
- package/dist/lib/browser/ai-client-HZPB7E6M.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-4DIOTGOG.mjs.map +0 -7
- package/dist/lib/browser/chunk-M2SADJVS.mjs.map +0 -7
- package/dist/lib/browser/chunk-NTLTGYYS.mjs.map +0 -7
- package/dist/lib/browser/chunk-WVME6K4X.mjs.map +0 -7
- package/dist/lib/browser/react-surface-ZT6EQ7FJ.mjs.map +0 -7
- package/dist/lib/node/AssistantDialog-5PVOCPE2.cjs.map +0 -7
- package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs +0 -53
- package/dist/lib/node/TemplateContainer-R4BZZP3E.cjs.map +0 -7
- package/dist/lib/node/ai-client-6CY35ZIR.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-7O4U4RXH.cjs.map +0 -7
- package/dist/lib/node/chunk-34WE2FD2.cjs.map +0 -7
- package/dist/lib/node/chunk-3WXG6WA6.cjs.map +0 -7
- package/dist/lib/node/chunk-HFOUAFOW.cjs.map +0 -7
- package/dist/lib/node/chunk-JWUHUQ56.cjs.map +0 -7
- package/dist/lib/node/react-surface-KFXP3GGK.cjs.map +0 -7
- package/dist/lib/node-esm/AssistantDialog-Q2ZBOHOV.mjs.map +0 -7
- package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs +0 -24
- package/dist/lib/node-esm/TemplateContainer-WSHTZBB5.mjs.map +0 -7
- package/dist/lib/node-esm/ai-client-GSA67EIB.mjs +0 -23
- package/dist/lib/node-esm/ai-client-GSA67EIB.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-SX3SREXF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2OUUYMBT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ASMI7PQ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ICQN3TDS.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-NZNNP2QI.mjs.map +0 -7
- /package/dist/lib/browser/{ChatContainer-VW73VNUY.mjs.map → ChatContainer-NHHA6CSP.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-EUMPBC4T.mjs.map → chunk-6FTPLBSC.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-VVQUGG56.mjs.map → settings-VAW6UWFL.mjs.map} +0 -0
- /package/dist/lib/node/{ChatContainer-I45I3ICI.cjs.map → ChatContainer-JUZOEZZ7.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-NV4TQQSU.cjs.map → chunk-N3SW6DJ6.cjs.map} +0 -0
- /package/dist/lib/node/{settings-TJHHVI6B.cjs.map → settings-2FEYGLYU.cjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-5ULBF3GW.mjs.map → ChatContainer-ZNN5CMVL.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-LBQGJE5T.mjs.map → chunk-J63VQFQO.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-BVWR244C.mjs.map → settings-VHR5KT4J.mjs.map} +0 -0
|
@@ -26,16 +26,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var AssistantDialog_GT7R7MKH_exports = {};
|
|
30
|
+
__export(AssistantDialog_GT7R7MKH_exports, {
|
|
31
31
|
AssistantDialog: () => AssistantDialog,
|
|
32
32
|
default: () => AssistantDialog_default
|
|
33
33
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
34
|
+
module.exports = __toCommonJS(AssistantDialog_GT7R7MKH_exports);
|
|
35
|
+
var import_chunk_JAB6KLPP = require("./chunk-JAB6KLPP.cjs");
|
|
36
|
+
var import_chunk_VRXFIS4X = require("./chunk-VRXFIS4X.cjs");
|
|
37
|
+
var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
|
|
38
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
39
39
|
var import_react = __toESM(require("react"));
|
|
40
40
|
var import_app_framework = require("@dxos/app-framework");
|
|
41
41
|
var import_plugin_transcription = require("@dxos/plugin-transcription");
|
|
@@ -46,14 +46,14 @@ var import_react_ui_dnd = require("@dxos/react-ui-dnd");
|
|
|
46
46
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
47
47
|
var preventDefault = (event) => event.preventDefault();
|
|
48
48
|
var minSize = 5;
|
|
49
|
-
var AmbientDialog = ({ children, open:
|
|
49
|
+
var AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }) => {
|
|
50
50
|
const [resizeKey, setReizeKey] = (0, import_react2.useState)(0);
|
|
51
51
|
const [size, setSize] = (0, import_react2.useState)("min-content");
|
|
52
|
-
const [open, setOpen] = (0, import_react2.useState)(
|
|
52
|
+
const [open, setOpen] = (0, import_react2.useState)(controlledOpen);
|
|
53
53
|
(0, import_react2.useEffect)(() => {
|
|
54
|
-
setOpen(
|
|
54
|
+
setOpen(controlledOpen);
|
|
55
55
|
}, [
|
|
56
|
-
|
|
56
|
+
controlledOpen
|
|
57
57
|
]);
|
|
58
58
|
(0, import_react2.useEffect)(() => {
|
|
59
59
|
setSize(open ? "min-content" : minSize);
|
|
@@ -77,7 +77,7 @@ var AmbientDialog = ({ children, open: _open, title, onOpenChange }) => {
|
|
|
77
77
|
...import_react_ui_dnd.resizeAttributes,
|
|
78
78
|
style: {
|
|
79
79
|
...(0, import_react_ui_dnd.sizeStyle)(size, "vertical", true),
|
|
80
|
-
maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) -
|
|
80
|
+
maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)"
|
|
81
81
|
},
|
|
82
82
|
onInteractOutside: preventDefault
|
|
83
83
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_dnd.ResizeHandle, {
|
|
@@ -117,18 +117,19 @@ var DialogHeader = ({ open, title, onToggle }) => {
|
|
|
117
117
|
})));
|
|
118
118
|
};
|
|
119
119
|
var AssistantDialog = ({ chat }) => {
|
|
120
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
120
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN);
|
|
121
121
|
const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
|
|
122
|
-
const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(
|
|
122
|
+
const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN)?.value;
|
|
123
123
|
const [open, setOpen] = (0, import_react.useState)(false);
|
|
124
124
|
return /* @__PURE__ */ import_react.default.createElement(AmbientDialog, {
|
|
125
125
|
open,
|
|
126
126
|
onOpenChange: setOpen,
|
|
127
127
|
title: t("assistant dialog title")
|
|
128
|
-
}, /* @__PURE__ */ import_react.default.createElement(
|
|
128
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_chunk_JAB6KLPP.ThreadContainer, {
|
|
129
129
|
chat,
|
|
130
130
|
onOpenChange: setOpen,
|
|
131
131
|
settings,
|
|
132
|
+
part: "dialog",
|
|
132
133
|
transcription
|
|
133
134
|
}));
|
|
134
135
|
};
|
|
@@ -137,4 +138,4 @@ var AssistantDialog_default = AssistantDialog;
|
|
|
137
138
|
0 && (module.exports = {
|
|
138
139
|
AssistantDialog
|
|
139
140
|
});
|
|
140
|
-
//# sourceMappingURL=AssistantDialog-
|
|
141
|
+
//# sourceMappingURL=AssistantDialog-GT7R7MKH.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/AssistantDialog.tsx", "../../../src/components/AmbientDialog/AmbientDialog.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type FC, useState } from 'react';\n\nimport { useCapability, Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { TranscriptionCapabilities } from '@dxos/plugin-transcription';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { AmbientDialog } from './AmbientDialog';\nimport { ThreadContainer } from './Thread';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { type AssistantSettingsProps, type AIChatType } from '../types';\n\nexport const AssistantDialog: FC<{ chat?: AIChatType }> = ({ chat }) => {\n const { t } = useTranslation(ASSISTANT_PLUGIN);\n const transcription = useCapabilities(TranscriptionCapabilities.Transcription).length > 0;\n const settings = useCapability(Capabilities.SettingsStore).getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n // TODO(burdon): Refocus when open.\n const [open, setOpen] = useState(false);\n\n return (\n <AmbientDialog open={open} onOpenChange={setOpen} title={t('assistant dialog title')}>\n <ThreadContainer\n chat={chat}\n onOpenChange={setOpen}\n settings={settings}\n part={'dialog'}\n transcription={transcription}\n />\n </AmbientDialog>\n );\n};\n\nexport default AssistantDialog;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback, useEffect, useState } from 'react';\n\nimport { Dialog, Icon, IconButton } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nconst minSize = 5;\n\nexport type AmbientDialogProps = PropsWithChildren<{\n open?: boolean;\n title?: string;\n onOpenChange?: (open: boolean) => void;\n}>;\n\nexport const AmbientDialog = ({ children, open: controlledOpen, title, onOpenChange }: AmbientDialogProps) => {\n const [resizeKey, setReizeKey] = useState(0);\n const [size, setSize] = useState<Size>('min-content');\n const [open, setOpen] = useState(controlledOpen);\n\n // Update controlled value.\n useEffect(() => {\n setOpen(controlledOpen);\n }, [controlledOpen]);\n\n // Update size and key.\n useEffect(() => {\n setSize(open ? 'min-content' : minSize);\n setReizeKey((key) => key + 1);\n }, [open]);\n\n // TODO(burdon): Animate open/close.\n // NOTE: We set the min size to 5rem (80px), and the header and prompt bar to 40px (i.e., the rail-size) each.\n // The dialog has no vertical padding and has box-content so that when closed it collapses to the size of the header and prompt bar.\n const handleToggle = useCallback(() => {\n setOpen((open) => {\n onOpenChange?.(!open);\n return !open;\n });\n }, []);\n\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n classNames='relative box-content py-0 px-2 md:is-[35rem] md:max-is-none overflow-hidden pointer-events-auto transition-[block-size] ease-in-out duration-0 [&:not([data-dx-resizing=\"true\"])]:duration-200'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical', true),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 9rem)',\n }}\n onInteractOutside={preventDefault}\n >\n <ResizeHandle\n key={resizeKey}\n side='block-start'\n defaultSize='min-content'\n minSize={minSize}\n fallbackSize={minSize}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <DialogHeader open={open} title={title} onToggle={handleToggle} />\n\n {children}\n </Dialog.Content>\n </div>\n );\n};\n\n/**\n * Matches same layout grid as PromptBar.\n */\nconst DialogHeader = ({ open, title, onToggle }: { open?: boolean; title?: string; onToggle: () => void }) => {\n return (\n <div className='flex shrink-0 w-full grid grid-cols-[var(--rail-action)_1fr_var(--rail-action)] items-center overflow-hidden'>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <Dialog.Close>\n <Icon icon='ph--x--regular' />\n </Dialog.Close>\n </div>\n <div className='grow'>\n <Dialog.Title classNames='flex justify-center text-xs text-subdued'>{title}</Dialog.Title>\n </div>\n <div className='flex w-[--rail-action] h-[--rail-action] items-center justify-center'>\n <IconButton\n variant='ghost'\n icon={'ph--caret-up--regular'}\n classNames={mx('[&>svg]:transition [&>svg]:duration-200', open && '[&>svg]:rotate-180')}\n iconOnly\n label='Shrink'\n onClick={onToggle}\n />\n </div>\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAyC;AAEzC,2BAA6D;AAC7D,kCAA0C;AAC1C,sBAA+B;ACJ/B,IAAAA,gBAAgF;AAEhF,IAAAC,mBAAyC;AACzC,0BAAqE;AACrE,4BAAmB;AAEnB,IAAMC,iBAAiB,CAACC,UAAiBA,MAAMD,eAAc;AAE7D,IAAME,UAAU;AAQT,IAAMC,gBAAgB,CAAC,EAAEC,UAAUC,MAAMC,gBAAgBC,OAAOC,aAAY,MAAsB;AACvG,QAAM,CAACC,WAAWC,WAAAA,QAAeC,wBAAS,CAAA;AAC1C,QAAM,CAACC,MAAMC,OAAAA,QAAWF,wBAAe,aAAA;AACvC,QAAM,CAACN,MAAMS,OAAAA,QAAWH,wBAASL,cAAAA;AAGjCS,+BAAU,MAAA;AACRD,YAAQR,cAAAA;EACV,GAAG;IAACA;GAAe;AAGnBS,+BAAU,MAAA;AACRF,YAAQR,OAAO,gBAAgBH,OAAAA;AAC/BQ,gBAAY,CAACM,QAAQA,MAAM,CAAA;EAC7B,GAAG;IAACX;GAAK;AAKT,QAAMY,mBAAeC,2BAAY,MAAA;AAC/BJ,YAAQ,CAACT,UAAAA;AACPG,qBAAe,CAACH,KAAAA;AAChB,aAAO,CAACA;IACV,CAAA;EACF,GAAG,CAAA,CAAE;AAEL,SACE,8BAAAc,QAAA,cAACC,OAAAA;IAAIC,MAAK;IAAOC,WAAU;IAAwDC,oBAAiB;KAClG,8BAAAJ,QAAA,cAACK,wBAAOC,SAAO;IACbC,YAAW;IACXC,iBAAAA;IACC,GAAGC;IACJC,OAAO;MACL,OAAGC,+BAAUlB,MAAM,YAAY,IAAA;MAC/BmB,cAAc;IAChB;IACAC,mBAAmBhC;KAEnB,8BAAAmB,QAAA,cAACc,kCAAAA;IACCjB,KAAKP;IACLyB,MAAK;IACLC,aAAY;IACZjC;IACAkC,cAAclC;IACdmC,cAAa;IACbC,cAAczB;MAGhB,8BAAAM,QAAA,cAACoB,cAAAA;IAAalC;IAAYE;IAAciC,UAAUvB;MAEjDb,QAAAA,CAAAA;AAIT;AAKA,IAAMmC,eAAe,CAAC,EAAElC,MAAME,OAAOiC,SAAQ,MAA4D;AACvG,SACE,8BAAArB,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACK,wBAAOiB,OAAK,MACX,8BAAAtB,QAAA,cAACuB,uBAAAA;IAAKC,MAAK;QAGf,8BAAAxB,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAACK,wBAAOoB,OAAK;IAAClB,YAAW;KAA4CnB,KAAAA,CAAAA,GAEvE,8BAAAY,QAAA,cAACC,OAAAA;IAAIE,WAAU;KACb,8BAAAH,QAAA,cAAC0B,6BAAAA;IACCC,SAAQ;IACRH,MAAM;IACNjB,gBAAYqB,0BAAG,2CAA2C1C,QAAQ,oBAAA;IAClE2C,UAAAA;IACAC,OAAM;IACNC,SAASV;;AAKnB;ADvFO,IAAMW,kBAA6C,CAAC,EAAEC,KAAI,MAAE;AACjE,QAAM,EAAEC,EAAC,QAAKC,gCAAeC,sCAAAA;AAC7B,QAAMC,oBAAgBC,sCAAgBC,sDAA0BC,aAAa,EAAEC,SAAS;AACxF,QAAMC,eAAWC,oCAAcC,kCAAaC,aAAa,EAAEC,SAAiCV,sCAAAA,GAAmBW;AAG/G,QAAM,CAAC7D,MAAMS,OAAAA,QAAWH,aAAAA,UAAS,KAAA;AAEjC,SACEQ,6BAAAA,QAAA,cAAChB,eAAAA;IAAcE;IAAYG,cAAcM;IAASP,OAAO8C,EAAE,wBAAA;KACzDlC,6BAAAA,QAAA,cAACgD,uCAAAA;IACCf;IACA5C,cAAcM;IACd+C;IACAO,MAAM;IACNZ;;AAIR;AAEA,IAAA,0BAAeL;",
|
|
6
|
+
"names": ["import_react", "import_react_ui", "preventDefault", "event", "minSize", "AmbientDialog", "children", "open", "controlledOpen", "title", "onOpenChange", "resizeKey", "setReizeKey", "useState", "size", "setSize", "setOpen", "useEffect", "key", "handleToggle", "useCallback", "React", "div", "role", "className", "data-block-align", "Dialog", "Content", "classNames", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "onInteractOutside", "ResizeHandle", "side", "defaultSize", "fallbackSize", "iconPosition", "onSizeChange", "DialogHeader", "onToggle", "Close", "Icon", "icon", "Title", "IconButton", "variant", "mx", "iconOnly", "label", "onClick", "AssistantDialog", "chat", "t", "useTranslation", "ASSISTANT_PLUGIN", "transcription", "useCapabilities", "TranscriptionCapabilities", "Transcription", "length", "settings", "useCapability", "Capabilities", "SettingsStore", "getStore", "value", "ThreadContainer", "part"]
|
|
7
|
+
}
|
|
@@ -26,28 +26,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var ChatContainer_JUZOEZZ7_exports = {};
|
|
30
|
+
__export(ChatContainer_JUZOEZZ7_exports, {
|
|
31
31
|
ChatContainer: () => ChatContainer,
|
|
32
32
|
default: () => ChatContainer_default
|
|
33
33
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
38
|
-
var
|
|
34
|
+
module.exports = __toCommonJS(ChatContainer_JUZOEZZ7_exports);
|
|
35
|
+
var import_chunk_JAB6KLPP = require("./chunk-JAB6KLPP.cjs");
|
|
36
|
+
var import_chunk_VRXFIS4X = require("./chunk-VRXFIS4X.cjs");
|
|
37
|
+
var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
|
|
38
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
39
39
|
var import_react = __toESM(require("react"));
|
|
40
40
|
var import_app_framework = require("@dxos/app-framework");
|
|
41
41
|
var import_plugin_transcription = require("@dxos/plugin-transcription");
|
|
42
42
|
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
43
43
|
var ChatContainer = ({ chat, role }) => {
|
|
44
44
|
const transcription = (0, import_app_framework.useCapabilities)(import_plugin_transcription.TranscriptionCapabilities.Transcription).length > 0;
|
|
45
|
-
const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(
|
|
45
|
+
const settings = (0, import_app_framework.useCapability)(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN)?.value;
|
|
46
46
|
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
|
|
47
47
|
toolbar: false,
|
|
48
48
|
role,
|
|
49
49
|
classNames: "mli-auto w-full max-w-[50rem]"
|
|
50
|
-
}, /* @__PURE__ */ import_react.default.createElement(
|
|
50
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_chunk_JAB6KLPP.ThreadContainer, {
|
|
51
51
|
chat,
|
|
52
52
|
settings,
|
|
53
53
|
transcription
|
|
@@ -58,4 +58,4 @@ var ChatContainer_default = ChatContainer;
|
|
|
58
58
|
0 && (module.exports = {
|
|
59
59
|
ChatContainer
|
|
60
60
|
});
|
|
61
|
-
//# sourceMappingURL=ChatContainer-
|
|
61
|
+
//# sourceMappingURL=ChatContainer-JUZOEZZ7.cjs.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var TemplateContainer_VPAZRFQA_exports = {};
|
|
30
|
+
__export(TemplateContainer_VPAZRFQA_exports, {
|
|
31
|
+
TemplateContainer: () => TemplateContainer,
|
|
32
|
+
default: () => TemplateContainer_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(TemplateContainer_VPAZRFQA_exports);
|
|
35
|
+
var import_chunk_N3SW6DJ6 = require("./chunk-N3SW6DJ6.cjs");
|
|
36
|
+
var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
|
|
37
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
38
|
+
var import_effect = require("effect");
|
|
39
|
+
var import_react = __toESM(require("react"));
|
|
40
|
+
var import_async = require("@dxos/async");
|
|
41
|
+
var import_react_ui = require("@dxos/react-ui");
|
|
42
|
+
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
43
|
+
var TemplateContainer = ({ template, role }) => {
|
|
44
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN);
|
|
45
|
+
const handleKindChange = (0, import_react.useCallback)((value) => {
|
|
46
|
+
const kind = import_effect.Match.type().pipe(import_effect.Match.withReturnType(), import_effect.Match.when("always", () => ({
|
|
47
|
+
include: "always"
|
|
48
|
+
})), import_effect.Match.when("schema-matching", () => ({
|
|
49
|
+
include: "schema-matching",
|
|
50
|
+
typename: ""
|
|
51
|
+
})), import_effect.Match.when("automatically", () => ({
|
|
52
|
+
include: "automatically",
|
|
53
|
+
description: ""
|
|
54
|
+
})), import_effect.Match.orElse(() => ({
|
|
55
|
+
include: "manual"
|
|
56
|
+
})))(value);
|
|
57
|
+
template.kind = kind;
|
|
58
|
+
}, [
|
|
59
|
+
template
|
|
60
|
+
]);
|
|
61
|
+
const handleTypenameChange = (0, import_react.useCallback)((0, import_async.debounce)((event) => {
|
|
62
|
+
if (template.kind.include === "schema-matching") {
|
|
63
|
+
template.kind.typename = event.target.value;
|
|
64
|
+
}
|
|
65
|
+
}, 300), [
|
|
66
|
+
template.kind.include
|
|
67
|
+
]);
|
|
68
|
+
const handleDescriptionChange = (0, import_react.useCallback)((0, import_async.debounce)((event) => {
|
|
69
|
+
if (template.kind.include === "automatically") {
|
|
70
|
+
template.kind.description = event.target.value;
|
|
71
|
+
}
|
|
72
|
+
}, 300), [
|
|
73
|
+
template.kind.include
|
|
74
|
+
]);
|
|
75
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
|
|
76
|
+
toolbar: true,
|
|
77
|
+
role,
|
|
78
|
+
classNames: "mli-auto w-full max-w-[50rem]"
|
|
79
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Toolbar.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
|
|
80
|
+
value: template.kind.include,
|
|
81
|
+
onValueChange: handleKindChange
|
|
82
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Toolbar.Button, {
|
|
83
|
+
asChild: true
|
|
84
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, null)), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, import_chunk_KLSNCP34.TemplateKinds.map((kind) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
|
|
85
|
+
key: kind,
|
|
86
|
+
value: kind
|
|
87
|
+
}, kind)))))), template.kind.include === "schema-matching" && /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
|
|
88
|
+
placeholder: t("typename placeholder"),
|
|
89
|
+
defaultValue: template.kind.typename,
|
|
90
|
+
onChange: handleTypenameChange
|
|
91
|
+
})), template.kind.include === "automatically" && /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Root, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.TextInput, {
|
|
92
|
+
placeholder: t("description placeholder"),
|
|
93
|
+
defaultValue: template.kind.description,
|
|
94
|
+
onChange: handleDescriptionChange
|
|
95
|
+
}))), /* @__PURE__ */ import_react.default.createElement(import_chunk_N3SW6DJ6.TemplateEditor, {
|
|
96
|
+
template
|
|
97
|
+
}));
|
|
98
|
+
};
|
|
99
|
+
var TemplateContainer_default = TemplateContainer;
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
TemplateContainer
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=TemplateContainer-VPAZRFQA.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/TemplateContainer.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { 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';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { TemplateEditor } from './TemplateEditor';\nimport { ASSISTANT_PLUGIN } from '../meta';\nimport { TemplateKinds, type TemplateKindSchema, type TemplateType } from '../types';\n\nexport const TemplateContainer = ({ template, role }: { template: TemplateType; role: string }) => {\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 <StackItem.Content toolbar role={role} classNames='mli-auto w-full max-w-[50rem]'>\n {/* TODO(wittjosiah): Move this toolbar into c11y sidebar. */}\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 <TemplateEditor template={template} />\n </StackItem.Content>\n );\n};\n\nexport default TemplateContainer;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAwC;AACxC,mBAAqD;AAErD,mBAAyB;AACzB,sBAAuD;AACvD,4BAA0B;AAMnB,IAAMA,oBAAoB,CAAC,EAAEC,UAAUC,KAAI,MAA4C;AAC5F,QAAM,EAAEC,EAAC,QAAKC,gCAAeC,sCAAAA;AAE7B,QAAMC,uBAAmBC,0BACvB,CAACC,UAAAA;AACC,UAAMC,OAAOC,oBAAMC,KAAI,EAAWC,KAChCF,oBAAMG,eAAc,GACpBH,oBAAMI,KAAK,UAAU,OAAO;MAAEC,SAAS;IAAS,EAAA,GAChDL,oBAAMI,KAAK,mBAAmB,OAAO;MAAEC,SAAS;MAAmBC,UAAU;IAAG,EAAA,GAChFN,oBAAMI,KAAK,iBAAiB,OAAO;MAAEC,SAAS;MAAiBE,aAAa;IAAG,EAAA,GAC/EP,oBAAMQ,OAAO,OAAO;MAAEH,SAAS;IAAS,EAAA,CAAA,EACxCP,KAAAA;AAEFP,aAASQ,OAAOA;EAClB,GACA;IAACR;GAAS;AAGZ,QAAMkB,2BAAuBZ,8BAC3Ba,uBAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,mBAAmB;AAC/Cd,eAASQ,KAAKO,WAAWK,MAAMC,OAAOd;IACxC;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,QAAMQ,8BAA0BhB,8BAC9Ba,uBAAS,CAACC,UAAAA;AACR,QAAIpB,SAASQ,KAAKM,YAAY,iBAAiB;AAC7Cd,eAASQ,KAAKQ,cAAcI,MAAMC,OAAOd;IAC3C;EACF,GAAG,GAAA,GACH;IAACP,SAASQ,KAAKM;GAAQ;AAGzB,SACE,6BAAAS,QAAA,cAACC,gCAAUC,SAAO;IAACC,SAAAA;IAAQzB;IAAY0B,YAAW;KAEhD,6BAAAJ,QAAA,cAACK,wBAAQC,MAAI,MACX,6BAAAN,QAAA,cAACO,uBAAOD,MAAI;IAACtB,OAAOP,SAASQ,KAAKM;IAASiB,eAAe1B;KACxD,6BAAAkB,QAAA,cAACK,wBAAQI,QAAM;IAACC,SAAAA;KACd,6BAAAV,QAAA,cAACO,uBAAOI,eAAa,IAAA,CAAA,GAEvB,6BAAAX,QAAA,cAACO,uBAAOK,QAAM,MACZ,6BAAAZ,QAAA,cAACO,uBAAOL,SAAO,MACb,6BAAAF,QAAA,cAACO,uBAAOM,UAAQ,MACbC,oCAAcC,IAAI,CAAC9B,SAClB,6BAAAe,QAAA,cAACO,uBAAOS,QAAM;IAACC,KAAKhC;IAAMD,OAAOC;KAC9BA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAOZR,SAASQ,KAAKM,YAAY,qBACzB,6BAAAS,QAAA,cAACkB,sBAAMZ,MAAI,MACT,6BAAAN,QAAA,cAACkB,sBAAMC,WAAS;IACdC,aAAazC,EAAE,sBAAA;IACf0C,cAAc5C,SAASQ,KAAKO;IAC5B8B,UAAU3B;OAIflB,SAASQ,KAAKM,YAAY,mBACzB,6BAAAS,QAAA,cAACkB,sBAAMZ,MAAI,MACT,6BAAAN,QAAA,cAACkB,sBAAMC,WAAS;IACdC,aAAazC,EAAE,yBAAA;IACf0C,cAAc5C,SAASQ,KAAKQ;IAC5B6B,UAAUvB;QAKlB,6BAAAC,QAAA,cAACuB,sCAAAA;IAAe9C;;AAGtB;AAEA,IAAA,4BAAeD;",
|
|
6
|
+
"names": ["TemplateContainer", "template", "role", "t", "useTranslation", "ASSISTANT_PLUGIN", "handleKindChange", "useCallback", "value", "kind", "Match", "type", "pipe", "withReturnType", "when", "include", "typename", "description", "orElse", "handleTypenameChange", "debounce", "event", "target", "handleDescriptionChange", "React", "StackItem", "Content", "toolbar", "classNames", "Toolbar", "Root", "Select", "onValueChange", "Button", "asChild", "TriggerButton", "Portal", "Viewport", "TemplateKinds", "map", "Option", "key", "Input", "TextInput", "placeholder", "defaultValue", "onChange", "TemplateEditor"]
|
|
7
|
+
}
|
|
@@ -16,13 +16,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var ai_client_5ESLYXAV_exports = {};
|
|
20
|
+
__export(ai_client_5ESLYXAV_exports, {
|
|
21
21
|
default: () => ai_client_default
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
25
|
-
var
|
|
23
|
+
module.exports = __toCommonJS(ai_client_5ESLYXAV_exports);
|
|
24
|
+
var import_chunk_VRXFIS4X = require("./chunk-VRXFIS4X.cjs");
|
|
25
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
26
|
+
var import_signals_core = require("@preact/signals-core");
|
|
26
27
|
var import_app_framework = require("@dxos/app-framework");
|
|
27
28
|
var import_assistant = require("@dxos/assistant");
|
|
28
29
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
@@ -30,9 +31,19 @@ var DEFAULT_AI_SERVICE_URL = "http://localhost:8788";
|
|
|
30
31
|
var ai_client_default = (context) => {
|
|
31
32
|
const client = context.requestCapability(import_plugin_client.ClientCapabilities.Client);
|
|
32
33
|
const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;
|
|
33
|
-
const ai = new import_assistant.AIServiceEdgeClient({
|
|
34
|
+
const ai = (0, import_signals_core.signal)(new import_assistant.AIServiceEdgeClient({
|
|
34
35
|
endpoint
|
|
36
|
+
}));
|
|
37
|
+
const unsubscribe = (0, import_signals_core.effect)(() => {
|
|
38
|
+
const settings = context.requestCapability(import_app_framework.Capabilities.SettingsStore).getStore(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN)?.value;
|
|
39
|
+
if (settings?.llmProvider === "ollama") {
|
|
40
|
+
ai.value = new import_assistant.OllamaClient();
|
|
41
|
+
} else {
|
|
42
|
+
ai.value = new import_assistant.AIServiceEdgeClient({
|
|
43
|
+
endpoint
|
|
44
|
+
});
|
|
45
|
+
}
|
|
35
46
|
});
|
|
36
|
-
return (0, import_app_framework.contributes)(
|
|
47
|
+
return (0, import_app_framework.contributes)(import_chunk_VRXFIS4X.AssistantCapabilities.AiClient, ai, () => unsubscribe());
|
|
37
48
|
};
|
|
38
|
-
//# sourceMappingURL=ai-client-
|
|
49
|
+
//# sourceMappingURL=ai-client-5ESLYXAV.cjs.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 { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { type AIServiceClient, AIServiceEdgeClient, OllamaClient } from '@dxos/assistant';\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: PluginsContext) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n const endpoint = client.config.values.runtime?.services?.ai?.server ?? DEFAULT_AI_SERVICE_URL;\n\n const ai = signal<AIServiceClient>(new AIServiceEdgeClient({ endpoint }));\n\n const unsubscribe = effect(() => {\n // TODO(burdon): Could be undefined.\n const settings = context\n .requestCapability(Capabilities.SettingsStore)\n .getStore<AssistantSettingsProps>(ASSISTANT_PLUGIN)?.value;\n\n if (settings?.llmProvider === 'ollama') {\n ai.value = new OllamaClient();\n } else {\n ai.value = new AIServiceEdgeClient({ endpoint });\n }\n });\n\n return contributes(AssistantCapabilities.AiClient, ai, () => unsubscribe());\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,0BAA+B;AAE/B,2BAA+D;AAC/D,uBAAwE;AACxE,2BAAmC;AAOnC,IAAMA,yBAAyB;AAE/B,IAAA,oBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,wCAAmBC,MAAM;AAClE,QAAMC,WAAWJ,OAAOK,OAAOC,OAAOC,SAASC,UAAUC,IAAIC,UAAUZ;AAEvE,QAAMW,SAAKE,4BAAwB,IAAIC,qCAAoB;IAAER;EAAS,CAAA,CAAA;AAEtE,QAAMS,kBAAcC,4BAAO,MAAA;AAEzB,UAAMC,WAAWhB,QACdE,kBAAkBe,kCAAaC,aAAa,EAC5CC,SAAiCC,sCAAAA,GAAmBC;AAEvD,QAAIL,UAAUM,gBAAgB,UAAU;AACtCZ,SAAGW,QAAQ,IAAIE,8BAAAA;IACjB,OAAO;AACLb,SAAGW,QAAQ,IAAIR,qCAAoB;QAAER;MAAS,CAAA;IAChD;EACF,CAAA;AAEA,aAAOmB,kCAAYC,4CAAsBC,UAAUhB,IAAI,MAAMI,YAAAA,CAAAA;AAC/D;",
|
|
6
|
+
"names": ["DEFAULT_AI_SERVICE_URL", "context", "client", "requestCapability", "ClientCapabilities", "Client", "endpoint", "config", "values", "runtime", "services", "ai", "server", "signal", "AIServiceEdgeClient", "unsubscribe", "effect", "settings", "Capabilities", "SettingsStore", "getStore", "ASSISTANT_PLUGIN", "value", "llmProvider", "OllamaClient", "contributes", "AssistantCapabilities", "AiClient"]
|
|
7
|
+
}
|
|
@@ -16,23 +16,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var app_graph_builder_3P6WSON2_exports = {};
|
|
20
|
+
__export(app_graph_builder_3P6WSON2_exports, {
|
|
21
21
|
default: () => app_graph_builder_default
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
var
|
|
25
|
-
var
|
|
23
|
+
module.exports = __toCommonJS(app_graph_builder_3P6WSON2_exports);
|
|
24
|
+
var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
|
|
25
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
26
26
|
var import_app_framework = require("@dxos/app-framework");
|
|
27
27
|
var import_invariant = require("@dxos/invariant");
|
|
28
28
|
var import_plugin_client = require("@dxos/plugin-client");
|
|
29
29
|
var import_plugin_graph = require("@dxos/plugin-graph");
|
|
30
|
+
var import_plugin_space = require("@dxos/plugin-space");
|
|
30
31
|
var import_types = require("@dxos/plugin-space/types");
|
|
31
32
|
var import_echo = require("@dxos/react-client/echo");
|
|
32
33
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-assistant/src/capabilities/app-graph-builder.ts";
|
|
33
34
|
var app_graph_builder_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.AppGraphBuilder, [
|
|
34
35
|
(0, import_plugin_graph.createExtension)({
|
|
35
|
-
id: `${
|
|
36
|
+
id: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/assistant`,
|
|
36
37
|
filter: (node) => node.id === import_plugin_graph.ROOT_ID,
|
|
37
38
|
actions: () => [
|
|
38
39
|
{
|
|
@@ -60,7 +61,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
|
|
|
60
61
|
}
|
|
61
62
|
await dispatch((0, import_app_framework.createIntent)(import_app_framework.LayoutAction.UpdateDialog, {
|
|
62
63
|
part: "dialog",
|
|
63
|
-
subject:
|
|
64
|
+
subject: import_chunk_U6J2GO7I.ASSISTANT_DIALOG,
|
|
64
65
|
options: {
|
|
65
66
|
state: true,
|
|
66
67
|
blockAlign: "end",
|
|
@@ -74,7 +75,7 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
|
|
|
74
75
|
label: [
|
|
75
76
|
"open assistant label",
|
|
76
77
|
{
|
|
77
|
-
ns:
|
|
78
|
+
ns: import_chunk_U6J2GO7I.ASSISTANT_PLUGIN
|
|
78
79
|
}
|
|
79
80
|
],
|
|
80
81
|
icon: "ph--chat-centered-text--regular",
|
|
@@ -87,19 +88,68 @@ var app_graph_builder_default = (context) => (0, import_app_framework.contribute
|
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
]
|
|
91
|
+
}),
|
|
92
|
+
(0, import_plugin_graph.createExtension)({
|
|
93
|
+
id: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/root`,
|
|
94
|
+
filter: (node) => (0, import_echo.isSpace)(node.data),
|
|
95
|
+
connector: ({ node }) => {
|
|
96
|
+
const templates = (0, import_plugin_space.memoizeQuery)(node.data, import_echo.Filter.schema(import_chunk_KLSNCP34.TemplateType));
|
|
97
|
+
return templates.length > 0 ? [
|
|
98
|
+
{
|
|
99
|
+
id: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/templates`,
|
|
100
|
+
type: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/templates`,
|
|
101
|
+
data: null,
|
|
102
|
+
properties: {
|
|
103
|
+
label: [
|
|
104
|
+
"templates label",
|
|
105
|
+
{
|
|
106
|
+
ns: import_chunk_U6J2GO7I.ASSISTANT_PLUGIN
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
icon: "ph--file-code--regular",
|
|
110
|
+
space: node.data
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
] : [];
|
|
114
|
+
}
|
|
115
|
+
}),
|
|
116
|
+
(0, import_plugin_graph.createExtension)({
|
|
117
|
+
id: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/templates`,
|
|
118
|
+
filter: (node) => node.id === `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/templates`,
|
|
119
|
+
connector: ({ node }) => {
|
|
120
|
+
const templates = (0, import_plugin_space.memoizeQuery)(node.properties.space, import_echo.Filter.schema(import_chunk_KLSNCP34.TemplateType));
|
|
121
|
+
return templates.toSorted((a, b) => {
|
|
122
|
+
const nameA = a.name ?? "";
|
|
123
|
+
const nameB = b.name ?? "";
|
|
124
|
+
return nameA.localeCompare(nameB);
|
|
125
|
+
}).map((template) => ({
|
|
126
|
+
id: (0, import_echo.fullyQualifiedId)(template),
|
|
127
|
+
type: `${import_chunk_U6J2GO7I.ASSISTANT_PLUGIN}/template`,
|
|
128
|
+
data: template,
|
|
129
|
+
properties: {
|
|
130
|
+
label: template.name ?? [
|
|
131
|
+
"template title placeholder",
|
|
132
|
+
{
|
|
133
|
+
ns: import_chunk_U6J2GO7I.ASSISTANT_PLUGIN
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
icon: "ph--file-code--regular"
|
|
137
|
+
}
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
90
140
|
})
|
|
91
141
|
]);
|
|
92
142
|
var getOrCreateChat = async (dispatch, space) => {
|
|
93
|
-
const { objects } = await space.db.query(import_echo.Filter.schema(
|
|
143
|
+
const { objects } = await space.db.query(import_echo.Filter.schema(import_chunk_KLSNCP34.AIChatType)).run();
|
|
94
144
|
if (objects.length > 0) {
|
|
95
145
|
return objects[objects.length - 1];
|
|
96
146
|
}
|
|
97
|
-
const { data } = await dispatch((0, import_app_framework.createIntent)(
|
|
147
|
+
const { data } = await dispatch((0, import_app_framework.createIntent)(import_chunk_KLSNCP34.AssistantAction.CreateChat, {
|
|
98
148
|
spaceId: space.id
|
|
99
149
|
}));
|
|
100
|
-
(0, import_invariant.invariant)(data?.object instanceof
|
|
150
|
+
(0, import_invariant.invariant)(data?.object instanceof import_chunk_KLSNCP34.AIChatType, void 0, {
|
|
101
151
|
F: __dxlog_file,
|
|
102
|
-
L:
|
|
152
|
+
L: 141,
|
|
103
153
|
S: void 0,
|
|
104
154
|
A: [
|
|
105
155
|
"data?.object instanceof AIChatType",
|
|
@@ -112,4 +162,4 @@ var getOrCreateChat = async (dispatch, space) => {
|
|
|
112
162
|
}));
|
|
113
163
|
return data.object;
|
|
114
164
|
};
|
|
115
|
-
//# sourceMappingURL=app-graph-builder-
|
|
165
|
+
//# sourceMappingURL=app-graph-builder-3P6WSON2.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n LayoutAction,\n type PromiseIntentDispatcher,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { createExtension, type Node, ROOT_ID } from '@dxos/plugin-graph';\nimport { memoizeQuery } from '@dxos/plugin-space';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space, Filter, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';\n\nimport { ASSISTANT_DIALOG, ASSISTANT_PLUGIN } from '../meta';\nimport { AIChatType, AssistantAction, TemplateType } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${ASSISTANT_PLUGIN}/assistant`,\n filter: (node): node is Node<null> => node.id === ROOT_ID,\n actions: () => [\n {\n id: `${LayoutAction.UpdateDialog._tag}/assistant/open`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const client = context.requestCapability(ClientCapabilities.Client);\n const layout = context.requestCapability(Capabilities.Layout);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n\n // TODO(burdon): Get space from workspace.\n // TODO(burdon): If need to create chat, then add to dispatch stack below.\n let chat: AIChatType | undefined;\n if (layout.active.length > 0) {\n const node = graph.findNode(layout.active[0]);\n if (node) {\n const space = getSpace(node.data);\n if (space) {\n chat = await getOrCreateChat(dispatch, space);\n }\n }\n } else {\n const space = client.spaces.default;\n chat = await getOrCreateChat(dispatch, space);\n }\n\n if (!chat) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n subject: ASSISTANT_DIALOG,\n options: {\n state: true,\n blockAlign: 'end',\n props: {\n chat,\n },\n },\n }),\n );\n },\n properties: {\n label: ['open assistant label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--chat-centered-text--regular',\n disposition: 'pin-end',\n position: 'hoist',\n keyBinding: {\n macos: 'shift+meta+k',\n windows: 'shift+ctrl+k',\n },\n },\n },\n ],\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/root`,\n filter: (node): node is Node<Space> => isSpace(node.data),\n connector: ({ node }) => {\n const templates = memoizeQuery(node.data, Filter.schema(TemplateType));\n return templates.length > 0\n ? [\n {\n id: `${ASSISTANT_PLUGIN}/templates`,\n type: `${ASSISTANT_PLUGIN}/templates`,\n data: null,\n properties: {\n label: ['templates label', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n space: node.data,\n },\n },\n ]\n : [];\n },\n }),\n\n createExtension({\n id: `${ASSISTANT_PLUGIN}/templates`,\n filter: (node): node is Node<null, { space: Space }> => node.id === `${ASSISTANT_PLUGIN}/templates`,\n connector: ({ node }) => {\n const templates = memoizeQuery(node.properties.space, Filter.schema(TemplateType));\n return templates\n .toSorted((a, b) => {\n const nameA = a.name ?? '';\n const nameB = b.name ?? '';\n return nameA.localeCompare(nameB);\n })\n .map((template) => ({\n id: fullyQualifiedId(template),\n type: `${ASSISTANT_PLUGIN}/template`,\n data: template,\n properties: {\n label: template.name ?? ['template title placeholder', { ns: ASSISTANT_PLUGIN }],\n icon: 'ph--file-code--regular',\n },\n }));\n },\n }),\n ]);\n\n// TODO(burdon): Factor out.\nconst getOrCreateChat = async (dispatch: PromiseIntentDispatcher, space: Space): Promise<AIChatType | undefined> => {\n const { objects } = await space.db.query(Filter.schema(AIChatType)).run();\n // console.log('objects', JSON.stringify(objects, null, 2));\n if (objects.length > 0) {\n // TODO(burdon): Is this the most recent?\n return objects[objects.length - 1];\n }\n\n const { data } = await dispatch(createIntent(AssistantAction.CreateChat, { spaceId: space.id }));\n invariant(data?.object instanceof AIChatType);\n await dispatch(createIntent(SpaceAction.AddObject, { target: space, object: data.object }));\n return data.object;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "ASSISTANT_PLUGIN", "filter", "node", "ROOT_ID", "actions", "LayoutAction", "UpdateDialog", "_tag", "data", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "client", "ClientCapabilities", "Client", "layout", "Layout", "graph", "AppGraph", "chat", "active", "length", "findNode", "space", "getSpace", "getOrCreateChat", "spaces", "default", "createIntent", "part", "subject", "ASSISTANT_DIALOG", "options", "state", "blockAlign", "props", "properties", "label", "ns", "icon", "disposition", "position", "keyBinding", "macos", "windows", "isSpace", "connector", "templates", "memoizeQuery", "Filter", "schema", "TemplateType", "type", "toSorted", "a", "b", "nameA", "name", "nameB", "localeCompare", "map", "template", "fullyQualifiedId", "objects", "db", "query", "AIChatType", "run", "AssistantAction", "CreateChat", "spaceId", "invariant", "object", "SpaceAction", "AddObject", "target"]
|
|
7
|
+
}
|
|
@@ -26,18 +26,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_G2HY3UJ4_exports = {};
|
|
30
|
+
__export(chunk_G2HY3UJ4_exports, {
|
|
31
31
|
AssistantDialog: () => AssistantDialog,
|
|
32
32
|
AssistantSettings: () => AssistantSettings,
|
|
33
33
|
ChatContainer: () => ChatContainer,
|
|
34
34
|
ServiceRegistry: () => ServiceRegistry,
|
|
35
35
|
TemplateContainer: () => TemplateContainer
|
|
36
36
|
});
|
|
37
|
-
module.exports = __toCommonJS(
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
37
|
+
module.exports = __toCommonJS(chunk_G2HY3UJ4_exports);
|
|
38
|
+
var import_chunk_JAB6KLPP = require("./chunk-JAB6KLPP.cjs");
|
|
39
|
+
var import_chunk_KLSNCP34 = require("./chunk-KLSNCP34.cjs");
|
|
40
|
+
var import_chunk_U6J2GO7I = require("./chunk-U6J2GO7I.cjs");
|
|
41
41
|
var import_react = __toESM(require("react"));
|
|
42
42
|
var import_assistant = require("@dxos/assistant");
|
|
43
43
|
var import_react_ui = require("@dxos/react-ui");
|
|
@@ -47,30 +47,52 @@ var import_echo = require("@dxos/client/echo");
|
|
|
47
47
|
var import_echo2 = require("@dxos/react-client/echo");
|
|
48
48
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
49
49
|
var import_react3 = require("react");
|
|
50
|
+
var DEFAULT_VALUE = "__default";
|
|
50
51
|
var AssistantSettings = ({ settings }) => {
|
|
51
|
-
const { t } = (0, import_react_ui.useTranslation)(
|
|
52
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_U6J2GO7I.ASSISTANT_PLUGIN);
|
|
52
53
|
return /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormContainer, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
|
|
53
54
|
label: t("settings custom prompts label")
|
|
54
55
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Switch, {
|
|
55
56
|
checked: !!settings.customPrompts,
|
|
56
57
|
onCheckedChange: (checked) => settings.customPrompts = checked
|
|
57
58
|
})), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
|
|
58
|
-
label: t("settings llm
|
|
59
|
+
label: t("settings llm provider label")
|
|
60
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Input.Switch, {
|
|
61
|
+
checked: settings.llmProvider === "ollama",
|
|
62
|
+
onCheckedChange: (checked) => settings.llmProvider = checked ? "ollama" : "edge"
|
|
63
|
+
})), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
|
|
64
|
+
label: t("settings edge llm model label")
|
|
65
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
|
|
66
|
+
value: settings.edgeModel ?? DEFAULT_VALUE,
|
|
67
|
+
onValueChange: (value) => {
|
|
68
|
+
settings.edgeModel = value === DEFAULT_VALUE ? void 0 : value;
|
|
69
|
+
}
|
|
70
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, {
|
|
71
|
+
placeholder: t("settings default llm model label")
|
|
72
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
|
|
73
|
+
value: DEFAULT_VALUE
|
|
74
|
+
}, t("settings default label")), import_assistant.DEFAULT_EDGE_MODELS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
|
|
75
|
+
key: model,
|
|
76
|
+
value: model
|
|
77
|
+
}, model))))))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.DeprecatedFormInput, {
|
|
78
|
+
label: t("settings ollama llm model label")
|
|
59
79
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Root, {
|
|
60
|
-
value: settings.
|
|
80
|
+
value: settings.ollamaModel ?? DEFAULT_VALUE,
|
|
61
81
|
onValueChange: (value) => {
|
|
62
|
-
settings.
|
|
82
|
+
settings.ollamaModel = value === DEFAULT_VALUE ? void 0 : value;
|
|
63
83
|
}
|
|
64
84
|
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.TriggerButton, {
|
|
65
85
|
placeholder: t("settings default llm model label")
|
|
66
|
-
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null,
|
|
86
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Portal, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Content, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Viewport, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
|
|
87
|
+
value: DEFAULT_VALUE
|
|
88
|
+
}, t("settings default label")), import_assistant.DEFAULT_OLLAMA_MODELS.map((model) => /* @__PURE__ */ import_react.default.createElement(import_react_ui.Select.Option, {
|
|
67
89
|
key: model,
|
|
68
90
|
value: model
|
|
69
91
|
}, model))))))));
|
|
70
92
|
};
|
|
71
93
|
var ServiceRegistry = ({ space }) => {
|
|
72
|
-
const matchingServices = (0,
|
|
73
|
-
const enabledServices = (0, import_echo2.useQuery)(space, import_echo.Filter.schema(
|
|
94
|
+
const matchingServices = (0, import_chunk_JAB6KLPP.useServices)(space);
|
|
95
|
+
const enabledServices = (0, import_echo2.useQuery)(space, import_echo.Filter.schema(import_chunk_KLSNCP34.ServiceType));
|
|
74
96
|
const services = (0, import_react2.useMemo)(() => {
|
|
75
97
|
return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
|
|
76
98
|
}, [
|
|
@@ -101,7 +123,7 @@ var ServiceItem = ({ service, enabled, setEnabled }) => {
|
|
|
101
123
|
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
102
124
|
className: "flex gow justify-center items-center"
|
|
103
125
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui2.Icon, {
|
|
104
|
-
icon:
|
|
126
|
+
icon: import_chunk_KLSNCP34.categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
|
|
105
127
|
size: 6
|
|
106
128
|
})), /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
107
129
|
className: "grow items-center truncate mie-2"
|
|
@@ -116,9 +138,9 @@ var ServiceItem = ({ service, enabled, setEnabled }) => {
|
|
|
116
138
|
className: "text-sm text-subdued line-clamp-2 mie-1"
|
|
117
139
|
}, service.description)));
|
|
118
140
|
};
|
|
119
|
-
var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-
|
|
120
|
-
var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-
|
|
121
|
-
var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-
|
|
141
|
+
var AssistantDialog = (0, import_react3.lazy)(() => import("./AssistantDialog-GT7R7MKH.cjs"));
|
|
142
|
+
var ChatContainer = (0, import_react3.lazy)(() => import("./ChatContainer-JUZOEZZ7.cjs"));
|
|
143
|
+
var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContainer-VPAZRFQA.cjs"));
|
|
122
144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
123
145
|
0 && (module.exports = {
|
|
124
146
|
AssistantDialog,
|
|
@@ -127,4 +149,4 @@ var TemplateContainer = (0, import_react3.lazy)(() => import("./TemplateContaine
|
|
|
127
149
|
ServiceRegistry,
|
|
128
150
|
TemplateContainer
|
|
129
151
|
});
|
|
130
|
-
//# sourceMappingURL=chunk-
|
|
152
|
+
//# sourceMappingURL=chunk-G2HY3UJ4.cjs.map
|