@dxos/plugin-automation 0.7.5-labs.8a82073 → 0.7.5-labs.c0e040f
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/AutomationPanel-VW2XIUPU.mjs +8 -0
- package/dist/lib/browser/ChatContainer-OLRZNGWK.mjs +12 -0
- package/dist/lib/browser/{ai-client-UJLNYP7B.mjs → ai-client-5CNY6JBF.mjs} +3 -3
- package/dist/lib/browser/{app-graph-builder-3H5TCRG4.mjs → app-graph-builder-6H7MDCXE.mjs} +39 -4
- package/dist/lib/browser/app-graph-builder-6H7MDCXE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BQHXJZ4K.mjs → chunk-2H2EUYXL.mjs} +2 -2
- package/dist/lib/browser/{chunk-N4SSCQ7P.mjs → chunk-ITG6CBKL.mjs} +10 -10
- package/dist/lib/browser/chunk-ITG6CBKL.mjs.map +7 -0
- package/dist/lib/browser/chunk-MRBC5J4T.mjs +518 -0
- package/dist/lib/browser/chunk-MRBC5J4T.mjs.map +7 -0
- package/dist/lib/browser/{chunk-6KJRL5KV.mjs → chunk-NQFZ6XRX.mjs} +2 -2
- package/dist/lib/browser/{chunk-43WRHV2L.mjs → chunk-Q4IMHYGH.mjs} +2 -2
- package/dist/lib/browser/{chunk-DQ7ZSYJJ.mjs → chunk-R4JH4TLE.mjs} +3 -1
- package/dist/lib/browser/chunk-R4JH4TLE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +10 -6
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/{intent-resolver-5YVZJFS3.mjs → intent-resolver-BWAXKT27.mjs} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-RRTZFTKR.mjs → react-surface-O6SHIBCA.mjs} +15 -7
- package/dist/lib/browser/react-surface-O6SHIBCA.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/{AutomationPanel-BCEY3YXO.cjs → AutomationPanel-G6EDDYWW.cjs} +7 -7
- package/dist/lib/node/{AutomationPanel-BCEY3YXO.cjs.map → AutomationPanel-G6EDDYWW.cjs.map} +2 -2
- package/dist/lib/node/{ChatContainer-QUWFEBTI.cjs → ChatContainer-GRZDJIG5.cjs} +10 -10
- package/dist/lib/node/ChatContainer-GRZDJIG5.cjs.map +7 -0
- package/dist/lib/node/{ai-client-AOB6TLNW.cjs → ai-client-FKLPDELV.cjs} +7 -7
- package/dist/lib/node/{app-graph-builder-CDEQJEHY.cjs → app-graph-builder-7JMJLZIE.cjs} +48 -14
- package/dist/lib/node/app-graph-builder-7JMJLZIE.cjs.map +7 -0
- package/dist/lib/node/{chunk-DKGNORZK.cjs → chunk-CFBERLTN.cjs} +21 -21
- package/dist/lib/node/chunk-CFBERLTN.cjs.map +7 -0
- package/dist/lib/node/{chunk-TQEDPRY5.cjs → chunk-EQYHOTGG.cjs} +7 -4
- package/dist/lib/node/chunk-EQYHOTGG.cjs.map +7 -0
- package/dist/lib/node/chunk-FQUY77HT.cjs +527 -0
- package/dist/lib/node/chunk-FQUY77HT.cjs.map +7 -0
- package/dist/lib/node/{chunk-H3RSMGJG.cjs → chunk-GB7245FH.cjs} +6 -6
- package/dist/lib/node/{chunk-IPCNJYQL.cjs → chunk-QXIHYOMF.cjs} +7 -7
- package/dist/lib/node/{chunk-AWZVJZ2I.cjs → chunk-U5Z7LFWB.cjs} +6 -6
- package/dist/lib/node/index.cjs +75 -71
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/{intent-resolver-MJFZT5IU.cjs → intent-resolver-C6OKFVEW.cjs} +8 -8
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-BVZ63QP4.cjs → react-surface-JT6SVCPK.cjs} +23 -17
- package/dist/lib/node/react-surface-JT6SVCPK.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +11 -11
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{AutomationPanel-YTIZ74RI.mjs → AutomationPanel-V3IWQAMO.mjs} +3 -3
- package/dist/lib/node-esm/{ChatContainer-QSMDZRDU.mjs → ChatContainer-ORVWQPJO.mjs} +5 -5
- package/dist/lib/node-esm/{ai-client-RUCCJ7JZ.mjs → ai-client-XGNA6SJ5.mjs} +3 -3
- package/dist/lib/node-esm/{app-graph-builder-GR3URVNX.mjs → app-graph-builder-C6NUQGCU.mjs} +39 -4
- package/dist/lib/node-esm/app-graph-builder-C6NUQGCU.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs +519 -0
- package/dist/lib/node-esm/chunk-2OKJZ4ZW.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CZXU4CFK.mjs → chunk-6HLBYDUI.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-D7RARVTS.mjs → chunk-7VPT3OO3.mjs} +10 -10
- package/dist/lib/node-esm/chunk-7VPT3OO3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-7JO77AAS.mjs → chunk-DNCXRGAF.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-JFHI22MF.mjs → chunk-EMVA6QUT.mjs} +3 -1
- package/dist/lib/node-esm/chunk-EMVA6QUT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LSSWQIQD.mjs → chunk-IJRTDSKN.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +10 -6
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/{intent-resolver-FCKNRTKQ.mjs → intent-resolver-DCP4ZDBA.mjs} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-Y5LQHUQN.mjs → react-surface-DSVM33SA.mjs} +15 -7
- package/dist/lib/node-esm/react-surface-DSVM33SA.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts +23 -22
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts +3 -0
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.d.ts.map +1 -0
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts +8 -0
- package/dist/types/src/components/AmbientChatDialog/AmbientChatDialog.stories.d.ts.map +1 -0
- package/dist/types/src/components/AmbientChatDialog/index.d.ts +2 -0
- package/dist/types/src/components/AmbientChatDialog/index.d.ts.map +1 -0
- package/dist/types/src/components/Prompt/Prompt.d.ts +3 -3
- package/dist/types/src/components/Prompt/Prompt.d.ts.map +1 -1
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts +1 -1
- package/dist/types/src/components/Prompt/prompt-autocomplete.d.ts.map +1 -1
- package/dist/types/src/components/ServiceRegistry/ServiceRegistry.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +52 -51
- package/src/capabilities/app-graph-builder.ts +34 -3
- package/src/capabilities/react-surface.tsx +8 -2
- package/src/components/AmbientChatDialog/AmbientChatDialog.stories.tsx +44 -0
- package/src/components/AmbientChatDialog/AmbientChatDialog.tsx +63 -0
- package/src/components/AmbientChatDialog/index.ts +5 -0
- package/src/components/Prompt/Prompt.tsx +6 -3
- package/src/components/Prompt/prompt-autocomplete.ts +2 -2
- package/src/components/PromptEditor/PromptEditor.tsx +3 -3
- package/src/components/ServiceRegistry/ServiceRegistry.tsx +1 -0
- package/src/components/Thread/Thread.stories.tsx +1 -1
- package/src/components/index.ts +1 -0
- package/src/hooks/useChatProcessor.tsx +2 -2
- package/src/meta.ts +2 -0
- package/src/tools/openapi.test.ts +3 -6
- package/dist/lib/browser/AutomationPanel-CL2TWZT5.mjs +0 -8
- package/dist/lib/browser/ChatContainer-EJ3IWL7Y.mjs +0 -12
- package/dist/lib/browser/app-graph-builder-3H5TCRG4.mjs.map +0 -7
- package/dist/lib/browser/chunk-4M74P6YW.mjs +0 -284
- package/dist/lib/browser/chunk-4M74P6YW.mjs.map +0 -7
- package/dist/lib/browser/chunk-DQ7ZSYJJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-N4SSCQ7P.mjs.map +0 -7
- package/dist/lib/browser/react-surface-RRTZFTKR.mjs.map +0 -7
- package/dist/lib/node/ChatContainer-QUWFEBTI.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-CDEQJEHY.cjs.map +0 -7
- package/dist/lib/node/chunk-DKGNORZK.cjs.map +0 -7
- package/dist/lib/node/chunk-LC6KNDPQ.cjs +0 -302
- package/dist/lib/node/chunk-LC6KNDPQ.cjs.map +0 -7
- package/dist/lib/node/chunk-TQEDPRY5.cjs.map +0 -7
- package/dist/lib/node/react-surface-BVZ63QP4.cjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-GR3URVNX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CQPQXIJP.mjs +0 -285
- package/dist/lib/node-esm/chunk-CQPQXIJP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-D7RARVTS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JFHI22MF.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-Y5LQHUQN.mjs.map +0 -7
- /package/dist/lib/browser/{AutomationPanel-CL2TWZT5.mjs.map → AutomationPanel-VW2XIUPU.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-EJ3IWL7Y.mjs.map → ChatContainer-OLRZNGWK.mjs.map} +0 -0
- /package/dist/lib/browser/{ai-client-UJLNYP7B.mjs.map → ai-client-5CNY6JBF.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-BQHXJZ4K.mjs.map → chunk-2H2EUYXL.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-6KJRL5KV.mjs.map → chunk-NQFZ6XRX.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-43WRHV2L.mjs.map → chunk-Q4IMHYGH.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-5YVZJFS3.mjs.map → intent-resolver-BWAXKT27.mjs.map} +0 -0
- /package/dist/lib/node/{ai-client-AOB6TLNW.cjs.map → ai-client-FKLPDELV.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-H3RSMGJG.cjs.map → chunk-GB7245FH.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-IPCNJYQL.cjs.map → chunk-QXIHYOMF.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-AWZVJZ2I.cjs.map → chunk-U5Z7LFWB.cjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-MJFZT5IU.cjs.map → intent-resolver-C6OKFVEW.cjs.map} +0 -0
- /package/dist/lib/node-esm/{AutomationPanel-YTIZ74RI.mjs.map → AutomationPanel-V3IWQAMO.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-QSMDZRDU.mjs.map → ChatContainer-ORVWQPJO.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ai-client-RUCCJ7JZ.mjs.map → ai-client-XGNA6SJ5.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-CZXU4CFK.mjs.map → chunk-6HLBYDUI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-7JO77AAS.mjs.map → chunk-DNCXRGAF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-LSSWQIQD.mjs.map → chunk-IJRTDSKN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-FCKNRTKQ.mjs.map → intent-resolver-DCP4ZDBA.mjs.map} +0 -0
|
@@ -0,0 +1,527 @@
|
|
|
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 chunk_FQUY77HT_exports = {};
|
|
30
|
+
__export(chunk_FQUY77HT_exports, {
|
|
31
|
+
AmbientChatDialog: () => AmbientChatDialog,
|
|
32
|
+
AutomationPanel: () => AutomationPanel,
|
|
33
|
+
ChatContainer: () => ChatContainer,
|
|
34
|
+
PromptEditor: () => PromptEditor,
|
|
35
|
+
ServiceRegistry: () => ServiceRegistry
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(chunk_FQUY77HT_exports);
|
|
38
|
+
var import_chunk_CFBERLTN = require("./chunk-CFBERLTN.cjs");
|
|
39
|
+
var import_chunk_GB7245FH = require("./chunk-GB7245FH.cjs");
|
|
40
|
+
var import_chunk_EQYHOTGG = require("./chunk-EQYHOTGG.cjs");
|
|
41
|
+
var import_react = __toESM(require("react"));
|
|
42
|
+
var import_react_ui = require("@dxos/react-ui");
|
|
43
|
+
var import_react_ui_dnd = require("@dxos/react-ui-dnd");
|
|
44
|
+
var import_react2 = __toESM(require("react"));
|
|
45
|
+
var import_react_ui2 = require("@dxos/react-ui");
|
|
46
|
+
var import_react_ui_editor = require("@dxos/react-ui-editor");
|
|
47
|
+
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
48
|
+
var import_state = require("@codemirror/state");
|
|
49
|
+
var import_view = require("@codemirror/view");
|
|
50
|
+
var import_react3 = __toESM(require("react"));
|
|
51
|
+
var import_echo = require("@dxos/react-client/echo");
|
|
52
|
+
var import_react_ui3 = require("@dxos/react-ui");
|
|
53
|
+
var import_react_ui_editor2 = require("@dxos/react-ui-editor");
|
|
54
|
+
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
55
|
+
var import_util = require("@dxos/util");
|
|
56
|
+
var import_language = require("@codemirror/language");
|
|
57
|
+
var import_react_ui_editor3 = require("@dxos/react-ui-editor");
|
|
58
|
+
var import_react_ui_theme3 = require("@dxos/react-ui-theme");
|
|
59
|
+
var import_react4 = __toESM(require("react"));
|
|
60
|
+
var import_echo2 = require("@dxos/client/echo");
|
|
61
|
+
var import_echo3 = require("@dxos/react-client/echo");
|
|
62
|
+
var import_react_ui4 = require("@dxos/react-ui");
|
|
63
|
+
var import_react5 = require("react");
|
|
64
|
+
var InlineSuggestionWidget = class extends import_view.WidgetType {
|
|
65
|
+
constructor(suffix) {
|
|
66
|
+
super();
|
|
67
|
+
this.suffix = suffix;
|
|
68
|
+
}
|
|
69
|
+
toDOM() {
|
|
70
|
+
const span = document.createElement("span");
|
|
71
|
+
span.textContent = this.suffix;
|
|
72
|
+
span.className = "cm-inline-suggestion";
|
|
73
|
+
return span;
|
|
74
|
+
}
|
|
75
|
+
eq(other) {
|
|
76
|
+
return other.suffix === this.suffix;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var createAutocompleteExtension = ({ onEnter, onSuggest }) => {
|
|
80
|
+
const suggestionPlugin = import_view.ViewPlugin.fromClass(class {
|
|
81
|
+
constructor(view) {
|
|
82
|
+
this._currentSuggestion = null;
|
|
83
|
+
this._decorations = this.computeDecorations(view);
|
|
84
|
+
}
|
|
85
|
+
update(update) {
|
|
86
|
+
if (update.docChanged || update.selectionSet) {
|
|
87
|
+
this._decorations = this.computeDecorations(update.view);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
computeDecorations(view) {
|
|
91
|
+
const text = view.state.doc.toString();
|
|
92
|
+
const suggestions = onSuggest?.(text) ?? [];
|
|
93
|
+
if (!suggestions.length) {
|
|
94
|
+
this._currentSuggestion = null;
|
|
95
|
+
return import_view.Decoration.none;
|
|
96
|
+
}
|
|
97
|
+
this._currentSuggestion = suggestions[0];
|
|
98
|
+
const suffix = this._currentSuggestion.slice(text.length);
|
|
99
|
+
if (!suffix) {
|
|
100
|
+
return import_view.Decoration.none;
|
|
101
|
+
}
|
|
102
|
+
return import_view.Decoration.set([
|
|
103
|
+
import_view.Decoration.widget({
|
|
104
|
+
widget: new InlineSuggestionWidget(suffix),
|
|
105
|
+
side: 1
|
|
106
|
+
}).range(view.state.doc.length)
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
109
|
+
completeSuggestion(view) {
|
|
110
|
+
if (!this._currentSuggestion) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const text = view.state.doc.toString();
|
|
114
|
+
const suffix = this._currentSuggestion.slice(text.length);
|
|
115
|
+
if (!suffix) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
view.dispatch({
|
|
119
|
+
changes: {
|
|
120
|
+
from: view.state.doc.length,
|
|
121
|
+
insert: suffix
|
|
122
|
+
},
|
|
123
|
+
selection: {
|
|
124
|
+
anchor: view.state.doc.length + suffix.length
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
decorations: (v) => v._decorations
|
|
131
|
+
});
|
|
132
|
+
return [
|
|
133
|
+
suggestionPlugin,
|
|
134
|
+
import_view.EditorView.theme({
|
|
135
|
+
".cm-inline-suggestion": {
|
|
136
|
+
opacity: 0.4
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
// Accept the current suggestion.
|
|
140
|
+
import_state.Prec.highest(import_view.keymap.of([
|
|
141
|
+
{
|
|
142
|
+
key: "Tab",
|
|
143
|
+
run: (view) => {
|
|
144
|
+
const plugin = view.plugin(suggestionPlugin);
|
|
145
|
+
return plugin?.completeSuggestion(view) ?? false;
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: "ArrowRight",
|
|
150
|
+
run: (view) => {
|
|
151
|
+
if (view.state.selection.main.head !== view.state.doc.length) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
const plugin = view.plugin(suggestionPlugin);
|
|
155
|
+
return plugin?.completeSuggestion(view) ?? false;
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: "Enter",
|
|
160
|
+
preventDefault: true,
|
|
161
|
+
run: (view) => {
|
|
162
|
+
const text = view.state.doc.toString();
|
|
163
|
+
if (onEnter) {
|
|
164
|
+
onEnter(text);
|
|
165
|
+
view.dispatch({
|
|
166
|
+
changes: {
|
|
167
|
+
from: 0,
|
|
168
|
+
to: view.state.doc.length,
|
|
169
|
+
insert: ""
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
key: "Shift-Enter",
|
|
179
|
+
run: (view) => {
|
|
180
|
+
view.dispatch({
|
|
181
|
+
changes: {
|
|
182
|
+
from: view.state.selection.main.head,
|
|
183
|
+
insert: "\n"
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
key: "Escape",
|
|
191
|
+
run: (view) => {
|
|
192
|
+
view.dispatch({
|
|
193
|
+
changes: {
|
|
194
|
+
from: 0,
|
|
195
|
+
to: view.state.doc.length,
|
|
196
|
+
insert: ""
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
]))
|
|
203
|
+
];
|
|
204
|
+
};
|
|
205
|
+
var Prompt = ({ classNames, autoFocus, lineWrapping = false, onEnter, onSuggest }) => {
|
|
206
|
+
const { themeMode } = (0, import_react_ui2.useThemeContext)();
|
|
207
|
+
const { parentRef } = (0, import_react_ui_editor.useTextEditor)({
|
|
208
|
+
autoFocus,
|
|
209
|
+
extensions: [
|
|
210
|
+
(0, import_react_ui_editor.createBasicExtensions)({
|
|
211
|
+
bracketMatching: false,
|
|
212
|
+
lineWrapping,
|
|
213
|
+
placeholder: "Ask a question..."
|
|
214
|
+
}),
|
|
215
|
+
(0, import_react_ui_editor.createThemeExtensions)({
|
|
216
|
+
themeMode
|
|
217
|
+
}),
|
|
218
|
+
createAutocompleteExtension({
|
|
219
|
+
onEnter,
|
|
220
|
+
onSuggest
|
|
221
|
+
})
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
return /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
225
|
+
ref: parentRef,
|
|
226
|
+
className: (0, import_react_ui_theme.mx)(classNames)
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
var preventDefault = (event) => event.preventDefault();
|
|
230
|
+
var AmbientChatDialog = ({ children }) => {
|
|
231
|
+
const { t } = (0, import_react_ui.useTranslation)(import_chunk_EQYHOTGG.AUTOMATION_PLUGIN);
|
|
232
|
+
const [size, setSize] = (0, import_react.useState)("min-content");
|
|
233
|
+
const [iter, setIter] = (0, import_react.useState)(0);
|
|
234
|
+
return /* @__PURE__ */ import_react.default.createElement("div", {
|
|
235
|
+
role: "none",
|
|
236
|
+
className: "dx-dialog__overlay bg-transparent pointer-events-none",
|
|
237
|
+
"data-block-align": "end"
|
|
238
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Content, {
|
|
239
|
+
onInteractOutside: preventDefault,
|
|
240
|
+
classNames: "pointer-events-auto relative overflow-hidden is-[500px] max-is-none",
|
|
241
|
+
inOverlayLayout: true,
|
|
242
|
+
...import_react_ui_dnd.resizeAttributes,
|
|
243
|
+
style: {
|
|
244
|
+
...(0, import_react_ui_dnd.sizeStyle)(size, "vertical"),
|
|
245
|
+
maxBlockSize: "calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)"
|
|
246
|
+
}
|
|
247
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_dnd.ResizeHandle, {
|
|
248
|
+
key: iter,
|
|
249
|
+
side: "block-start",
|
|
250
|
+
defaultSize: "min-content",
|
|
251
|
+
minSize: 5,
|
|
252
|
+
fallbackSize: 5,
|
|
253
|
+
iconPosition: "center",
|
|
254
|
+
onSizeChange: setSize
|
|
255
|
+
}), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
256
|
+
className: "flex w-full items-center"
|
|
257
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Title, {
|
|
258
|
+
classNames: "sr-only"
|
|
259
|
+
}, t("ambient chat dialog title")), /* @__PURE__ */ import_react.default.createElement(import_react_ui.Dialog.Close, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Icon, {
|
|
260
|
+
icon: "ph--x--regular",
|
|
261
|
+
size: 4
|
|
262
|
+
})), /* @__PURE__ */ import_react.default.createElement("div", {
|
|
263
|
+
className: "grow"
|
|
264
|
+
}), /* @__PURE__ */ import_react.default.createElement(import_react_ui.IconButton, {
|
|
265
|
+
variant: "ghost",
|
|
266
|
+
icon: "ph--caret-down--regular",
|
|
267
|
+
iconOnly: true,
|
|
268
|
+
label: "Shrink",
|
|
269
|
+
onClick: () => {
|
|
270
|
+
setIter((iter2) => iter2 + 1);
|
|
271
|
+
setSize("min-content");
|
|
272
|
+
}
|
|
273
|
+
})), /* @__PURE__ */ import_react.default.createElement(Prompt, {
|
|
274
|
+
autoFocus: true,
|
|
275
|
+
lineWrapping: true
|
|
276
|
+
})));
|
|
277
|
+
};
|
|
278
|
+
var nameRegex = /\{([\w-]+)}/;
|
|
279
|
+
var parser = import_language.StreamLanguage.define({
|
|
280
|
+
token: (stream) => {
|
|
281
|
+
if (stream.eatSpace()) {
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
if (stream.match(/^#.*/)) {
|
|
285
|
+
return "lineComment";
|
|
286
|
+
}
|
|
287
|
+
if (stream.match(/^-+$/)) {
|
|
288
|
+
return "lineComment";
|
|
289
|
+
}
|
|
290
|
+
if (stream.match(nameRegex)) {
|
|
291
|
+
return "variableName";
|
|
292
|
+
}
|
|
293
|
+
stream.next();
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
var highlightStyles = import_language.HighlightStyle.define([
|
|
298
|
+
{
|
|
299
|
+
tag: import_react_ui_editor3.tags.variableName,
|
|
300
|
+
class: (0, import_react_ui_theme3.mx)("rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm")
|
|
301
|
+
}
|
|
302
|
+
]);
|
|
303
|
+
var promptExtension = [
|
|
304
|
+
parser,
|
|
305
|
+
(0, import_language.syntaxHighlighting)(highlightStyles)
|
|
306
|
+
];
|
|
307
|
+
var inputTypes = [
|
|
308
|
+
{
|
|
309
|
+
value: import_chunk_GB7245FH.ChainInputType.VALUE,
|
|
310
|
+
label: "Value"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
value: import_chunk_GB7245FH.ChainInputType.PASS_THROUGH,
|
|
314
|
+
label: "Pass through"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
value: import_chunk_GB7245FH.ChainInputType.RETRIEVER,
|
|
318
|
+
label: "Retriever"
|
|
319
|
+
},
|
|
320
|
+
// {
|
|
321
|
+
// value: ChainInputType.FUNCTION,
|
|
322
|
+
// label: 'Function',
|
|
323
|
+
// },
|
|
324
|
+
// {
|
|
325
|
+
// value: ChainInputType.QUERY,
|
|
326
|
+
// label: 'Query',
|
|
327
|
+
// },
|
|
328
|
+
{
|
|
329
|
+
value: import_chunk_GB7245FH.ChainInputType.RESOLVER,
|
|
330
|
+
label: "Resolver"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
value: import_chunk_GB7245FH.ChainInputType.CONTEXT,
|
|
334
|
+
label: "Context"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
value: import_chunk_GB7245FH.ChainInputType.SCHEMA,
|
|
338
|
+
label: "Schema"
|
|
339
|
+
}
|
|
340
|
+
];
|
|
341
|
+
var getInputType = (type) => inputTypes.find(({ value }) => String(value) === type)?.value;
|
|
342
|
+
var usePromptInputs = (prompt) => {
|
|
343
|
+
(0, import_react3.useEffect)(() => {
|
|
344
|
+
const text = prompt.template ?? "";
|
|
345
|
+
if (!prompt.inputs) {
|
|
346
|
+
prompt.inputs = [];
|
|
347
|
+
}
|
|
348
|
+
const regex = new RegExp(nameRegex, "g");
|
|
349
|
+
const variables = new Set([
|
|
350
|
+
...text.matchAll(regex)
|
|
351
|
+
].map((m) => m[1]));
|
|
352
|
+
const unclaimed = new Map(prompt.inputs?.filter(import_util.isNonNullable).map((input) => [
|
|
353
|
+
input.name,
|
|
354
|
+
input
|
|
355
|
+
]));
|
|
356
|
+
const missing = [];
|
|
357
|
+
Array.from(variables.values()).forEach((name) => {
|
|
358
|
+
if (unclaimed.has(name)) {
|
|
359
|
+
unclaimed.delete(name);
|
|
360
|
+
} else {
|
|
361
|
+
missing.push(name);
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
const values = unclaimed.values();
|
|
365
|
+
missing.forEach((name) => {
|
|
366
|
+
const next = values.next().value;
|
|
367
|
+
if (next) {
|
|
368
|
+
next.name = name;
|
|
369
|
+
} else {
|
|
370
|
+
prompt.inputs?.push({
|
|
371
|
+
name
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
for (const input of values) {
|
|
376
|
+
prompt.inputs.splice(prompt.inputs.indexOf(input), 1);
|
|
377
|
+
}
|
|
378
|
+
}, [
|
|
379
|
+
prompt.template
|
|
380
|
+
]);
|
|
381
|
+
};
|
|
382
|
+
var PromptEditor = ({ prompt, commandEditable = true }) => {
|
|
383
|
+
const { t } = (0, import_react_ui3.useTranslation)(import_chunk_EQYHOTGG.AUTOMATION_PLUGIN);
|
|
384
|
+
const { themeMode } = (0, import_react_ui3.useThemeContext)();
|
|
385
|
+
const { parentRef } = (0, import_react_ui_editor2.useTextEditor)(() => ({
|
|
386
|
+
initialValue: prompt.template,
|
|
387
|
+
extensions: [
|
|
388
|
+
(0, import_react_ui_editor2.createDataExtensions)({
|
|
389
|
+
id: prompt.id,
|
|
390
|
+
text: prompt.template !== void 0 ? (0, import_echo.createDocAccessor)(prompt, [
|
|
391
|
+
"template"
|
|
392
|
+
]) : void 0
|
|
393
|
+
}),
|
|
394
|
+
(0, import_react_ui_editor2.createBasicExtensions)({
|
|
395
|
+
bracketMatching: false,
|
|
396
|
+
lineWrapping: true,
|
|
397
|
+
placeholder: t("template placeholder")
|
|
398
|
+
}),
|
|
399
|
+
(0, import_react_ui_editor2.createThemeExtensions)({
|
|
400
|
+
themeMode,
|
|
401
|
+
slots: {
|
|
402
|
+
content: {
|
|
403
|
+
className: "!p-3"
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
}),
|
|
407
|
+
promptExtension
|
|
408
|
+
]
|
|
409
|
+
}), [
|
|
410
|
+
themeMode,
|
|
411
|
+
prompt
|
|
412
|
+
]);
|
|
413
|
+
usePromptInputs(prompt);
|
|
414
|
+
return /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
415
|
+
className: (0, import_react_ui_theme2.mx)("flex flex-col w-full overflow-hidden gap-4", import_react_ui_theme2.groupBorder)
|
|
416
|
+
}, commandEditable && /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
417
|
+
className: "flex items-center pl-4"
|
|
418
|
+
}, /* @__PURE__ */ import_react3.default.createElement("span", {
|
|
419
|
+
className: "text-neutral-500"
|
|
420
|
+
}, "/"), /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.TextInput, {
|
|
421
|
+
placeholder: t("command placeholder"),
|
|
422
|
+
classNames: (0, import_react_ui_theme2.mx)("is-full bg-transparent m-2"),
|
|
423
|
+
value: prompt.command ?? "",
|
|
424
|
+
onChange: (event) => {
|
|
425
|
+
prompt.command = event.target.value.replace(/\w/g, "");
|
|
426
|
+
}
|
|
427
|
+
}))), /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
428
|
+
ref: parentRef,
|
|
429
|
+
className: (0, import_react_ui_theme2.mx)(import_react_ui_theme2.attentionSurface, "rounded", "min-h-[120px]")
|
|
430
|
+
}), (prompt.inputs?.length ?? 0) > 0 && /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
431
|
+
className: "flex flex-col"
|
|
432
|
+
}, /* @__PURE__ */ import_react3.default.createElement("table", {
|
|
433
|
+
className: "w-full table-fixed border-collapse my-2"
|
|
434
|
+
}, /* @__PURE__ */ import_react3.default.createElement("tbody", null, prompt.inputs?.filter(import_util.isNonNullable).map((input) => /* @__PURE__ */ import_react3.default.createElement("tr", {
|
|
435
|
+
key: input.name
|
|
436
|
+
}, /* @__PURE__ */ import_react3.default.createElement("td", {
|
|
437
|
+
className: "w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate"
|
|
438
|
+
}, /* @__PURE__ */ import_react3.default.createElement("code", {
|
|
439
|
+
className: "px-2"
|
|
440
|
+
}, input.name)), /* @__PURE__ */ import_react3.default.createElement("td", {
|
|
441
|
+
className: "w-[120px] p-1"
|
|
442
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Root, {
|
|
443
|
+
value: String(input.type),
|
|
444
|
+
onValueChange: (type) => {
|
|
445
|
+
input.type = getInputType(type) ?? import_chunk_GB7245FH.ChainInputType.VALUE;
|
|
446
|
+
}
|
|
447
|
+
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.TriggerButton, {
|
|
448
|
+
placeholder: "Type",
|
|
449
|
+
classNames: "is-full"
|
|
450
|
+
}), /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Content, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Viewport, null, inputTypes.map(({ value, label }) => /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Select.Option, {
|
|
451
|
+
key: value,
|
|
452
|
+
value: String(value)
|
|
453
|
+
}, label)))))))), /* @__PURE__ */ import_react3.default.createElement("td", {
|
|
454
|
+
className: "p-1 pr-2"
|
|
455
|
+
}, input.type !== void 0 && [
|
|
456
|
+
import_chunk_GB7245FH.ChainInputType.VALUE,
|
|
457
|
+
import_chunk_GB7245FH.ChainInputType.CONTEXT,
|
|
458
|
+
import_chunk_GB7245FH.ChainInputType.RESOLVER,
|
|
459
|
+
import_chunk_GB7245FH.ChainInputType.SCHEMA
|
|
460
|
+
].includes(input.type) && /* @__PURE__ */ import_react3.default.createElement("div", null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.Root, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui3.Input.TextInput, {
|
|
461
|
+
placeholder: t("command placeholder"),
|
|
462
|
+
classNames: (0, import_react_ui_theme2.mx)("is-full bg-transparent"),
|
|
463
|
+
value: input.value ?? "",
|
|
464
|
+
onChange: (event) => {
|
|
465
|
+
input.value = event.target.value;
|
|
466
|
+
}
|
|
467
|
+
}))))))))));
|
|
468
|
+
};
|
|
469
|
+
var ServiceRegistry = ({ space }) => {
|
|
470
|
+
const matchingServices = (0, import_chunk_CFBERLTN.useServices)(space);
|
|
471
|
+
const enabledServices = (0, import_echo3.useQuery)(space, import_echo2.Filter.schema(import_chunk_GB7245FH.ServiceType));
|
|
472
|
+
const services = (0, import_react4.useMemo)(() => {
|
|
473
|
+
return matchingServices.map((service) => enabledServices.find((s) => s.serviceId === service.serviceId) ?? service);
|
|
474
|
+
}, [
|
|
475
|
+
matchingServices,
|
|
476
|
+
enabledServices
|
|
477
|
+
]);
|
|
478
|
+
const handleSetEnabled = (service, enabled) => {
|
|
479
|
+
if (enabled) {
|
|
480
|
+
space.db.add(service);
|
|
481
|
+
} else {
|
|
482
|
+
space.db.remove(service);
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.List, {
|
|
486
|
+
classNames: "h-full grid auto-rows-[5rem] gap-2 p-2 pis-2 pie-2 overflow-y-auto scrollbar-thin"
|
|
487
|
+
}, services.map((service) => /* @__PURE__ */ import_react4.default.createElement(ServiceItem, {
|
|
488
|
+
key: service.serviceId,
|
|
489
|
+
service,
|
|
490
|
+
enabled: service.enabled,
|
|
491
|
+
setEnabled: (enabled) => handleSetEnabled(service, enabled)
|
|
492
|
+
})));
|
|
493
|
+
};
|
|
494
|
+
var ServiceItem = ({ service, enabled, setEnabled }) => {
|
|
495
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.ListItem.Root, {
|
|
496
|
+
classNames: "flex flex-col gap-1 p-1 overflow-hidden rounded-md border border-separator"
|
|
497
|
+
}, /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
498
|
+
className: "grid grid-cols-[40px_1fr_40px]"
|
|
499
|
+
}, /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
500
|
+
className: "flex gow justify-center items-center"
|
|
501
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Icon, {
|
|
502
|
+
icon: import_chunk_GB7245FH.categoryIcons[service.category ?? "default"] ?? "ph--placeholder--regular",
|
|
503
|
+
size: 6
|
|
504
|
+
})), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
505
|
+
className: "grow items-center truncate mie-2"
|
|
506
|
+
}, service.name), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
507
|
+
className: "flex gow justify-center items-center"
|
|
508
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Input.Root, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui4.Input.Switch, {
|
|
509
|
+
checked: enabled,
|
|
510
|
+
onClick: () => setEnabled?.(!enabled)
|
|
511
|
+
})))), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
512
|
+
className: "grid grid-cols-[40px_1fr]"
|
|
513
|
+
}, /* @__PURE__ */ import_react4.default.createElement("div", null), /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
514
|
+
className: "text-sm text-subdued line-clamp-2 mie-1"
|
|
515
|
+
}, service.description)));
|
|
516
|
+
};
|
|
517
|
+
var AutomationPanel = (0, import_react5.lazy)(() => import("./AutomationPanel-G6EDDYWW.cjs"));
|
|
518
|
+
var ChatContainer = (0, import_react5.lazy)(() => import("./ChatContainer-GRZDJIG5.cjs"));
|
|
519
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
520
|
+
0 && (module.exports = {
|
|
521
|
+
AmbientChatDialog,
|
|
522
|
+
AutomationPanel,
|
|
523
|
+
ChatContainer,
|
|
524
|
+
PromptEditor,
|
|
525
|
+
ServiceRegistry
|
|
526
|
+
});
|
|
527
|
+
//# sourceMappingURL=chunk-FQUY77HT.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/AmbientChatDialog/AmbientChatDialog.tsx", "../../../src/components/Prompt/Prompt.tsx", "../../../src/components/Prompt/prompt-autocomplete.ts", "../../../src/components/PromptEditor/PromptEditor.tsx", "../../../src/components/PromptEditor/prompt-extension.ts", "../../../src/components/ServiceRegistry/ServiceRegistry.tsx", "../../../src/components/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useState } from 'react';\n\nimport { Dialog, Icon, IconButton, useTranslation } from '@dxos/react-ui';\nimport { resizeAttributes, ResizeHandle, type Size, sizeStyle } from '@dxos/react-ui-dnd';\n\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { Prompt } from '../Prompt';\n\nconst preventDefault = (event: Event) => event.preventDefault();\n\nexport const AmbientChatDialog = ({ children }: PropsWithChildren) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const [size, setSize] = useState<Size>('min-content');\n const [iter, setIter] = useState(0);\n return (\n <div role='none' className='dx-dialog__overlay bg-transparent pointer-events-none' data-block-align='end'>\n <Dialog.Content\n onInteractOutside={preventDefault}\n classNames='pointer-events-auto relative overflow-hidden is-[500px] max-is-none'\n inOverlayLayout\n {...resizeAttributes}\n style={{\n ...sizeStyle(size, 'vertical'),\n maxBlockSize: 'calc(100dvh - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8rem)',\n }}\n >\n <ResizeHandle\n key={iter}\n side='block-start'\n defaultSize='min-content'\n minSize={5}\n fallbackSize={5}\n iconPosition='center'\n onSizeChange={setSize}\n />\n\n <div className='flex w-full items-center'>\n <Dialog.Title classNames='sr-only'>{t('ambient chat dialog title')}</Dialog.Title>\n <Dialog.Close>\n <Icon icon='ph--x--regular' size={4} />\n </Dialog.Close>\n <div className='grow' />\n <IconButton\n variant='ghost'\n icon='ph--caret-down--regular'\n iconOnly\n label='Shrink'\n onClick={() => {\n setIter((iter) => iter + 1);\n setSize('min-content');\n }}\n />\n </div>\n\n <Prompt autoFocus lineWrapping />\n </Dialog.Content>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport {\n type BasicExtensionsOptions,\n createBasicExtensions,\n createThemeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { createAutocompleteExtension, type AutocompleteOptions } from './prompt-autocomplete';\n\nexport type PromptProps = ThemedClassName<\n AutocompleteOptions & Pick<UseTextEditorProps, 'autoFocus'> & Pick<BasicExtensionsOptions, 'lineWrapping'>\n>;\n\nexport const Prompt = ({ classNames, autoFocus, lineWrapping = false, onEnter, onSuggest }: PromptProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef } = useTextEditor({\n autoFocus,\n extensions: [\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping,\n placeholder: 'Ask a question...',\n }),\n createThemeExtensions({ themeMode }),\n createAutocompleteExtension({ onEnter, onSuggest }),\n ],\n });\n\n return <div ref={parentRef} className={mx(classNames)} />;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Prec, type Extension } from '@codemirror/state';\nimport {\n EditorView,\n Decoration,\n ViewPlugin,\n keymap,\n type DecorationSet,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nexport type AutocompleteOptions = {\n /**\n * Callback triggered when Enter is pressed.\n * @param text The current text in the editor\n */\n onEnter?: (text: string) => void;\n\n /**\n * Function that returns a list of suggestions based on the current text.\n * @param text The current text before the cursor\n * @returns Array of suggestion strings\n */\n onSuggest?: (text: string) => string[];\n};\n\nclass InlineSuggestionWidget extends WidgetType {\n constructor(private suffix: string) {\n super();\n }\n\n override toDOM() {\n const span = document.createElement('span');\n span.textContent = this.suffix;\n span.className = 'cm-inline-suggestion';\n return span;\n }\n\n override eq(other: InlineSuggestionWidget) {\n return other.suffix === this.suffix;\n }\n}\n\n/**\n * Creates an autocomplete extension that shows inline suggestions.\n * Pressing Tab will complete the suggestion.\n */\nexport const createAutocompleteExtension = ({ onEnter, onSuggest }: AutocompleteOptions): Extension => {\n const suggestionPlugin = ViewPlugin.fromClass(\n class {\n _decorations: DecorationSet;\n _currentSuggestion: string | null = null;\n\n constructor(view: EditorView) {\n this._decorations = this.computeDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.selectionSet) {\n this._decorations = this.computeDecorations(update.view);\n }\n }\n\n private computeDecorations(view: EditorView): DecorationSet {\n const text = view.state.doc.toString();\n const suggestions = onSuggest?.(text) ?? [];\n if (!suggestions.length) {\n this._currentSuggestion = null;\n return Decoration.none;\n }\n\n // Get the first suggestion.\n this._currentSuggestion = suggestions[0];\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return Decoration.none;\n }\n\n // Always show ghost text at the end of the document.\n return Decoration.set([\n Decoration.widget({\n widget: new InlineSuggestionWidget(suffix),\n side: 1,\n }).range(view.state.doc.length),\n ]);\n }\n\n completeSuggestion(view: EditorView): boolean {\n if (!this._currentSuggestion) {\n return false;\n }\n\n const text = view.state.doc.toString();\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return false;\n }\n\n view.dispatch({\n changes: {\n from: view.state.doc.length,\n insert: suffix,\n },\n selection: {\n anchor: view.state.doc.length + suffix.length,\n },\n });\n\n return true;\n }\n },\n {\n decorations: (v) => v._decorations,\n },\n );\n\n return [\n suggestionPlugin,\n EditorView.theme({\n '.cm-inline-suggestion': {\n opacity: 0.4,\n },\n }),\n\n // Accept the current suggestion.\n Prec.highest(\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n const plugin = view.plugin(suggestionPlugin);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'ArrowRight',\n run: (view) => {\n // Only complete if cursor is at the end\n if (view.state.selection.main.head !== view.state.doc.length) {\n return false;\n }\n\n const plugin = view.plugin(suggestionPlugin);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'Enter',\n preventDefault: true,\n run: (view) => {\n const text = view.state.doc.toString();\n if (onEnter) {\n onEnter(text);\n // Clear the document after calling onEnter\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n return true;\n }\n return false;\n },\n },\n {\n key: 'Shift-Enter',\n run: (view) => {\n view.dispatch({\n changes: {\n from: view.state.selection.main.head,\n insert: '\\n',\n },\n });\n return true;\n },\n },\n {\n key: 'Escape',\n run: (view) => {\n // Clear the entire document.\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n return true;\n },\n },\n ]),\n ),\n ];\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Schema as S } from '@effect/schema';\nimport React, { useEffect } from 'react';\n\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { Input, Select, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport {\n createBasicExtensions,\n createDataExtensions,\n createThemeExtensions,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { attentionSurface, groupBorder, mx } from '@dxos/react-ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { nameRegex, promptExtension } from './prompt-extension';\nimport { AUTOMATION_PLUGIN } from '../../meta';\nimport { type ChainInput, ChainInputType, type ChainPromptType } from '../../types';\n\nconst inputTypes = [\n {\n value: ChainInputType.VALUE,\n label: 'Value',\n },\n {\n value: ChainInputType.PASS_THROUGH,\n label: 'Pass through',\n },\n {\n value: ChainInputType.RETRIEVER,\n label: 'Retriever',\n },\n // {\n // value: ChainInputType.FUNCTION,\n // label: 'Function',\n // },\n // {\n // value: ChainInputType.QUERY,\n // label: 'Query',\n // },\n {\n value: ChainInputType.RESOLVER,\n label: 'Resolver',\n },\n {\n value: ChainInputType.CONTEXT,\n label: 'Context',\n },\n {\n value: ChainInputType.SCHEMA,\n label: 'Schema',\n },\n];\n\nconst getInputType = (type: string) => inputTypes.find(({ value }) => String(value) === type)?.value;\n\nconst usePromptInputs = (prompt: ChainPromptType) => {\n useEffect(() => {\n const text = prompt.template ?? '';\n if (!prompt.inputs) {\n prompt.inputs = []; // TODO(burdon): Required?\n }\n\n const regex = new RegExp(nameRegex, 'g');\n const variables = new Set<string>([...text.matchAll(regex)].map((m) => m[1]));\n\n // Create map of unclaimed inputs.\n const unclaimed = new Map<string, ChainInput>(\n prompt.inputs?.filter(isNonNullable).map((input) => [input.name, input]),\n );\n const missing: string[] = [];\n Array.from(variables.values()).forEach((name) => {\n if (unclaimed.has(name)) {\n unclaimed.delete(name);\n } else {\n missing.push(name);\n }\n });\n\n // Match or create new inputs.\n const values = unclaimed.values();\n missing.forEach((name) => {\n const next = values.next().value;\n if (next) {\n next.name = name;\n } else {\n prompt.inputs?.push({ name });\n }\n });\n\n // Remove unclaimed (deleted) inputs.\n // TODO(burdon): If user types incorrect name value, it will be deleted. Garbage collect?\n for (const input of values) {\n prompt.inputs.splice(prompt.inputs.indexOf(input), 1);\n }\n }, [prompt.template]);\n};\n\nexport type PromptEditorProps = {\n prompt: ChainPromptType;\n commandEditable?: boolean;\n schema?: S.Schema<any, any, any>;\n};\n\nexport const PromptEditor = ({ prompt, commandEditable = true }: PromptEditorProps) => {\n const { t } = useTranslation(AUTOMATION_PLUGIN);\n const { themeMode } = useThemeContext();\n\n const { parentRef } = useTextEditor(\n () => ({\n initialValue: prompt.template,\n extensions: [\n createDataExtensions({\n id: prompt.id,\n text: prompt.template !== undefined ? createDocAccessor(prompt, ['template']) : undefined,\n }),\n createBasicExtensions({\n bracketMatching: false,\n lineWrapping: true,\n placeholder: t('template placeholder'),\n }),\n createThemeExtensions({\n themeMode,\n slots: {\n content: { className: '!p-3' },\n },\n }),\n promptExtension,\n ],\n }),\n [themeMode, prompt],\n );\n\n usePromptInputs(prompt);\n\n return (\n <div className={mx('flex flex-col w-full overflow-hidden gap-4', groupBorder)}>\n {commandEditable && (\n <div className='flex items-center pl-4'>\n <span className='text-neutral-500'>/</span>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent m-2')}\n value={prompt.command ?? ''}\n onChange={(event) => {\n prompt.command = event.target.value.replace(/\\w/g, '');\n }}\n />\n </Input.Root>\n </div>\n )}\n\n <div ref={parentRef} className={mx(attentionSurface, 'rounded', 'min-h-[120px]')} />\n\n {(prompt.inputs?.length ?? 0) > 0 && (\n <div className='flex flex-col'>\n {/* TODO(zan): Improve layout with grid */}\n <table className='w-full table-fixed border-collapse my-2'>\n <tbody>\n {prompt.inputs?.filter(isNonNullable).map((input) => (\n <tr key={input.name}>\n <td className='w-[160px] p-1 font-mono text-sm whitespace-nowrap truncate'>\n <code className='px-2'>{input.name}</code>\n </td>\n <td className='w-[120px] p-1'>\n <Input.Root>\n <Select.Root\n value={String(input.type)}\n onValueChange={(type) => {\n input.type = getInputType(type) ?? ChainInputType.VALUE;\n }}\n >\n <Select.TriggerButton placeholder='Type' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {inputTypes.map(({ value, label }) => (\n <Select.Option key={value} value={String(value)}>\n {label}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n </td>\n <td className='p-1 pr-2'>\n {input.type !== undefined &&\n [\n ChainInputType.VALUE,\n ChainInputType.CONTEXT,\n ChainInputType.RESOLVER,\n ChainInputType.SCHEMA,\n ].includes(input.type) && (\n <div>\n <Input.Root>\n <Input.TextInput\n placeholder={t('command placeholder')}\n classNames={mx('is-full bg-transparent')}\n value={input.value ?? ''}\n onChange={(event) => {\n input.value = event.target.value;\n }}\n />\n </Input.Root>\n </div>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport const nameRegex = /\\{([\\w-]+)}/;\n\nconst parser = StreamLanguage.define({\n token: (stream) => {\n if (stream.eatSpace()) {\n return null;\n }\n if (stream.match(/^#.*/)) {\n return 'lineComment';\n }\n if (stream.match(/^-+$/)) {\n return 'lineComment';\n }\n if (stream.match(nameRegex)) {\n return 'variableName';\n }\n stream.next();\n return null;\n },\n});\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n */\nconst highlightStyles = HighlightStyle.define([\n {\n tag: tags.variableName,\n class: mx('rounded border border-yellow-500 bg-yellow-100 text-black font-mono text-sm'),\n },\n]);\n\nexport const promptExtension: Extension = [parser, syntaxHighlighting(highlightStyles)];\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 './AmbientChatDialog';\nexport * from './AutomationPanel';\nexport * from './ChatContainer';\nexport * from './MarkdownViewer';\nexport * from './PromptEditor';\nexport * from './ServiceRegistry';\nexport * from './Thread';\nexport * from './TriggerEditor';\n\nexport const AutomationPanel = lazy(() => import('./AutomationPanel'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_react", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_echo", "InlineSuggestionWidget", "WidgetType", "constructor", "suffix", "toDOM", "span", "document", "createElement", "textContent", "className", "eq", "other", "createAutocompleteExtension", "onEnter", "onSuggest", "suggestionPlugin", "ViewPlugin", "fromClass", "view", "_currentSuggestion", "_decorations", "computeDecorations", "update", "docChanged", "selectionSet", "text", "state", "doc", "toString", "suggestions", "length", "Decoration", "none", "slice", "set", "widget", "side", "range", "completeSuggestion", "dispatch", "changes", "from", "insert", "selection", "anchor", "decorations", "v", "EditorView", "theme", "opacity", "Prec", "highest", "keymap", "of", "key", "run", "plugin", "main", "head", "preventDefault", "to", "Prompt", "classNames", "autoFocus", "lineWrapping", "themeMode", "useThemeContext", "parentRef", "useTextEditor", "extensions", "createBasicExtensions", "bracketMatching", "placeholder", "createThemeExtensions", "React", "div", "ref", "mx", "event", "AmbientChatDialog", "children", "t", "useTranslation", "AUTOMATION_PLUGIN", "size", "setSize", "useState", "iter", "setIter", "role", "data-block-align", "Dialog", "Content", "onInteractOutside", "inOverlayLayout", "resizeAttributes", "style", "sizeStyle", "maxBlockSize", "ResizeHandle", "defaultSize", "minSize", "fallbackSize", "iconPosition", "onSizeChange", "Title", "Close", "Icon", "icon", "IconButton", "variant", "iconOnly", "label", "onClick", "nameRegex", "parser", "StreamLanguage", "define", "token", "stream", "eatSpace", "match", "next", "highlightStyles", "HighlightStyle", "tag", "tags", "variableName", "class", "promptExtension", "syntaxHighlighting", "inputTypes", "value", "ChainInputType", "VALUE", "PASS_THROUGH", "RETRIEVER", "RESOLVER", "CONTEXT", "SCHEMA", "getInputType", "type", "find", "String", "usePromptInputs", "prompt", "useEffect", "template", "inputs", "regex", "RegExp", "variables", "Set", "matchAll", "map", "m", "unclaimed", "Map", "filter", "isNonNullable", "input", "name", "missing", "Array", "values", "forEach", "has", "delete", "push", "splice", "indexOf", "PromptEditor", "commandEditable", "initialValue", "createDataExtensions", "id", "undefined", "createDocAccessor", "slots", "content", "groupBorder", "Input", "Root", "TextInput", "command", "onChange", "target", "replace", "attentionSurface", "table", "tbody", "tr", "td", "code", "Select", "onValueChange", "TriggerButton", "Portal", "Viewport", "Option", "includes", "ServiceRegistry", "space", "matchingServices", "useServices", "enabledServices", "useQuery", "Filter", "schema", "ServiceType", "services", "useMemo", "service", "s", "serviceId", "handleSetEnabled", "enabled", "db", "add", "remove", "List", "ServiceItem", "setEnabled", "ListItem", "categoryIcons", "category", "Switch", "checked", "description", "AutomationPanel", "lazy", "ChatContainer"]
|
|
7
|
+
}
|
|
@@ -16,8 +16,8 @@ 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 chunk_GB7245FH_exports = {};
|
|
20
|
+
__export(chunk_GB7245FH_exports, {
|
|
21
21
|
AIChatType: () => AIChatType,
|
|
22
22
|
ApiAuthorization: () => ApiAuthorization,
|
|
23
23
|
AutomationAction: () => AutomationAction,
|
|
@@ -28,8 +28,8 @@ __export(chunk_H3RSMGJG_exports, {
|
|
|
28
28
|
ServiceType: () => ServiceType,
|
|
29
29
|
categoryIcons: () => categoryIcons
|
|
30
30
|
});
|
|
31
|
-
module.exports = __toCommonJS(
|
|
32
|
-
var
|
|
31
|
+
module.exports = __toCommonJS(chunk_GB7245FH_exports);
|
|
32
|
+
var import_chunk_EQYHOTGG = require("./chunk-EQYHOTGG.cjs");
|
|
33
33
|
var import_conductor = require("@dxos/conductor");
|
|
34
34
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
35
35
|
var import_functions = require("@dxos/functions");
|
|
@@ -146,7 +146,7 @@ var ServiceType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
146
146
|
};
|
|
147
147
|
var AutomationAction;
|
|
148
148
|
(function(AutomationAction2) {
|
|
149
|
-
const AUTOMATION_ACTION = `${
|
|
149
|
+
const AUTOMATION_ACTION = `${import_chunk_EQYHOTGG.AUTOMATION_PLUGIN}/action`;
|
|
150
150
|
class Create extends import_echo_schema2.S.TaggedClass()(`${AUTOMATION_ACTION}/create`, {
|
|
151
151
|
input: import_echo_schema2.S.Struct({
|
|
152
152
|
name: import_echo_schema2.S.optional(import_echo_schema2.S.String)
|
|
@@ -170,4 +170,4 @@ var AutomationAction;
|
|
|
170
170
|
ServiceType,
|
|
171
171
|
categoryIcons
|
|
172
172
|
});
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-GB7245FH.cjs.map
|