site-operator-react 0.2.1 → 0.2.6
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/README.md +40 -0
- package/dist/index.d.ts +28 -4
- package/dist/site-operator-react.es.js +204 -174
- package/dist/site-operator-react.umd.js +4 -4
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -119,3 +119,43 @@ function App() {
|
|
|
119
119
|
// - once ready, it returns the live ChatController instance
|
|
120
120
|
// controller?.sendMessage('Hola');
|
|
121
121
|
```
|
|
122
|
+
|
|
123
|
+
### AgentChatProvider + AgentChatMount + useAgentChatController
|
|
124
|
+
|
|
125
|
+
If you prefer a React Context approach, wrap your app (or a subtree) with `AgentChatProvider`. It manages the `ref` and exposes the `ChatController` via `useAgentChatController`. Place `<AgentChatMount />` where you want the chat UI to render.
|
|
126
|
+
|
|
127
|
+
```tsx
|
|
128
|
+
import { AgentChatProvider, AgentChatMount, useAgentChatController, type AppContext } from 'site-operator-react';
|
|
129
|
+
|
|
130
|
+
const context: AppContext = {
|
|
131
|
+
v: "1.1",
|
|
132
|
+
site: { name: "Mi Portal" },
|
|
133
|
+
user: { id: "u-123" },
|
|
134
|
+
nav: { routes: [] }
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
function ChatActions() {
|
|
138
|
+
const controller = useAgentChatController();
|
|
139
|
+
return (
|
|
140
|
+
<button onClick={() => controller?.startNewThread()}>
|
|
141
|
+
Nuevo chat
|
|
142
|
+
</button>
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function App() {
|
|
147
|
+
return (
|
|
148
|
+
<AgentChatProvider
|
|
149
|
+
backendUrl="http://localhost:8001/ag_ui"
|
|
150
|
+
appName="My React App"
|
|
151
|
+
context={{ appContext: context }}
|
|
152
|
+
>
|
|
153
|
+
<header>Mi App</header>
|
|
154
|
+
<main>
|
|
155
|
+
<AgentChatMount className="chat-root" />
|
|
156
|
+
</main>
|
|
157
|
+
<ChatActions />
|
|
158
|
+
</AgentChatProvider>
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
```
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Action } from 'site-operator';
|
|
1
2
|
import { AgentChat as AgentChat_2 } from 'site-operator';
|
|
2
3
|
import { AgentState } from 'site-operator';
|
|
3
4
|
import { AppContext } from 'site-operator';
|
|
@@ -5,9 +6,15 @@ import { AppState } from 'site-operator';
|
|
|
5
6
|
import { ChatController } from 'site-operator';
|
|
6
7
|
import { ClickTarget } from 'site-operator';
|
|
7
8
|
import { default as default_2 } from 'react';
|
|
9
|
+
import { ExecutePlanResult } from 'site-operator';
|
|
8
10
|
import { RefObject } from 'react';
|
|
11
|
+
import { SuggestedPrompt } from 'site-operator';
|
|
9
12
|
|
|
10
|
-
export declare const AgentChat: default_2.ForwardRefExoticComponent<AgentChatProps & default_2.RefAttributes<AgentChat_2
|
|
13
|
+
export declare const AgentChat: default_2.ForwardRefExoticComponent<AgentChatProps & default_2.RefAttributes<AgentChat_2>>;
|
|
14
|
+
|
|
15
|
+
export declare const AgentChatMount: default_2.FC<AgentChatMountProps>;
|
|
16
|
+
|
|
17
|
+
export declare type AgentChatMountProps = default_2.HTMLAttributes<HTMLDivElement>;
|
|
11
18
|
|
|
12
19
|
export declare interface AgentChatProps {
|
|
13
20
|
backendUrl?: string;
|
|
@@ -23,6 +30,15 @@ export declare interface AgentChatProps {
|
|
|
23
30
|
context?: ContextProps;
|
|
24
31
|
}
|
|
25
32
|
|
|
33
|
+
export declare const AgentChatProvider: default_2.FC<AgentChatProviderProps>;
|
|
34
|
+
|
|
35
|
+
export declare type AgentChatProviderProps = AgentChatProps & {
|
|
36
|
+
children?: default_2.ReactNode;
|
|
37
|
+
handlers?: {
|
|
38
|
+
executePlan?: (plan: Action) => Promise<ExecutePlanResult>;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
26
42
|
export { AgentState }
|
|
27
43
|
|
|
28
44
|
export { AppContext }
|
|
@@ -34,6 +50,7 @@ export { ClickTarget }
|
|
|
34
50
|
export declare interface ComposerProps {
|
|
35
51
|
disclaimer?: string;
|
|
36
52
|
placeholder?: string;
|
|
53
|
+
suggestedPrompts?: SuggestedPrompt[];
|
|
37
54
|
}
|
|
38
55
|
|
|
39
56
|
export declare interface ContextProps {
|
|
@@ -50,17 +67,24 @@ export declare interface ThreadViewProps {
|
|
|
50
67
|
emptyText?: string;
|
|
51
68
|
}
|
|
52
69
|
|
|
70
|
+
export declare function useAgentChatController(): ChatController | null;
|
|
71
|
+
|
|
53
72
|
/**
|
|
54
73
|
* A hook to register a Chat Portal specification for the agent.
|
|
55
74
|
* This allows the agent to navigate and control the host application.
|
|
56
75
|
* @param context The AppContext defining site, user and navigation.
|
|
57
|
-
*
|
|
76
|
+
* If null/undefined, registration is skipped.
|
|
77
|
+
* @param options Optional refs for accessing the AgentChat controller and custom handlers.
|
|
58
78
|
* @returns ChatController instance if an AgentChat ref is provided.
|
|
59
79
|
*/
|
|
60
|
-
export declare function useChatPortal(context: AppContext, options?: UseChatPortalOptions
|
|
80
|
+
export declare function useChatPortal(context: AppContext | null | undefined, options?: UseChatPortalOptions & {
|
|
81
|
+
handlers?: {
|
|
82
|
+
executePlan?: (plan: Action) => Promise<ExecutePlanResult>;
|
|
83
|
+
};
|
|
84
|
+
}): ChatController | null;
|
|
61
85
|
|
|
62
86
|
export declare type UseChatPortalOptions = {
|
|
63
|
-
chatRef?: RefObject<AgentChat_2>;
|
|
87
|
+
chatRef?: RefObject<AgentChat_2 | null>;
|
|
64
88
|
};
|
|
65
89
|
|
|
66
90
|
export { }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { chatPortalService as
|
|
3
|
-
|
|
1
|
+
import q, { useRef as N, useImperativeHandle as ie, useEffect as R, useState as J, createContext as V, useContext as z } from "react";
|
|
2
|
+
import { chatPortalService as ce } from "site-operator";
|
|
3
|
+
import { createPortal as fe } from "react-dom";
|
|
4
|
+
var S = { exports: {} }, T = {};
|
|
4
5
|
/**
|
|
5
6
|
* @license React
|
|
6
7
|
* react-jsx-runtime.production.js
|
|
@@ -10,29 +11,29 @@ var A = { exports: {} }, p = {};
|
|
|
10
11
|
* This source code is licensed under the MIT license found in the
|
|
11
12
|
* LICENSE file in the root directory of this source tree.
|
|
12
13
|
*/
|
|
13
|
-
var
|
|
14
|
-
function
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
var
|
|
18
|
-
function
|
|
19
|
-
var
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
for (var
|
|
23
|
-
|
|
24
|
-
} else
|
|
25
|
-
return a =
|
|
26
|
-
$$typeof:
|
|
27
|
-
type:
|
|
28
|
-
key:
|
|
14
|
+
var L;
|
|
15
|
+
function de() {
|
|
16
|
+
if (L) return T;
|
|
17
|
+
L = 1;
|
|
18
|
+
var s = Symbol.for("react.transitional.element"), t = Symbol.for("react.fragment");
|
|
19
|
+
function f(d, a, i) {
|
|
20
|
+
var E = null;
|
|
21
|
+
if (i !== void 0 && (E = "" + i), a.key !== void 0 && (E = "" + a.key), "key" in a) {
|
|
22
|
+
i = {};
|
|
23
|
+
for (var n in a)
|
|
24
|
+
n !== "key" && (i[n] = a[n]);
|
|
25
|
+
} else i = a;
|
|
26
|
+
return a = i.ref, {
|
|
27
|
+
$$typeof: s,
|
|
28
|
+
type: d,
|
|
29
|
+
key: E,
|
|
29
30
|
ref: a !== void 0 ? a : null,
|
|
30
|
-
props:
|
|
31
|
+
props: i
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
|
-
return
|
|
34
|
+
return T.Fragment = t, T.jsx = f, T.jsxs = f, T;
|
|
34
35
|
}
|
|
35
|
-
var
|
|
36
|
+
var p = {};
|
|
36
37
|
/**
|
|
37
38
|
* @license React
|
|
38
39
|
* react-jsx-runtime.development.js
|
|
@@ -42,126 +43,126 @@ var b = {};
|
|
|
42
43
|
* This source code is licensed under the MIT license found in the
|
|
43
44
|
* LICENSE file in the root directory of this source tree.
|
|
44
45
|
*/
|
|
45
|
-
var
|
|
46
|
-
function
|
|
47
|
-
return
|
|
48
|
-
function
|
|
46
|
+
var W;
|
|
47
|
+
function Ee() {
|
|
48
|
+
return W || (W = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
49
|
+
function s(e) {
|
|
49
50
|
if (e == null) return null;
|
|
50
51
|
if (typeof e == "function")
|
|
51
|
-
return e.$$typeof ===
|
|
52
|
+
return e.$$typeof === ue ? null : e.displayName || e.name || null;
|
|
52
53
|
if (typeof e == "string") return e;
|
|
53
54
|
switch (e) {
|
|
54
|
-
case
|
|
55
|
+
case C:
|
|
55
56
|
return "Fragment";
|
|
56
|
-
case
|
|
57
|
+
case Q:
|
|
57
58
|
return "Profiler";
|
|
58
|
-
case
|
|
59
|
+
case Z:
|
|
59
60
|
return "StrictMode";
|
|
60
|
-
case
|
|
61
|
+
case te:
|
|
61
62
|
return "Suspense";
|
|
62
|
-
case
|
|
63
|
+
case ne:
|
|
63
64
|
return "SuspenseList";
|
|
64
|
-
case
|
|
65
|
+
case le:
|
|
65
66
|
return "Activity";
|
|
66
67
|
}
|
|
67
68
|
if (typeof e == "object")
|
|
68
69
|
switch (typeof e.tag == "number" && console.error(
|
|
69
70
|
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
|
|
70
71
|
), e.$$typeof) {
|
|
71
|
-
case
|
|
72
|
+
case B:
|
|
72
73
|
return "Portal";
|
|
73
|
-
case
|
|
74
|
+
case ee:
|
|
74
75
|
return e.displayName || "Context";
|
|
75
|
-
case
|
|
76
|
+
case K:
|
|
76
77
|
return (e._context.displayName || "Context") + ".Consumer";
|
|
77
|
-
case
|
|
78
|
+
case re:
|
|
78
79
|
var r = e.render;
|
|
79
80
|
return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
|
|
80
|
-
case
|
|
81
|
-
return r = e.displayName || null, r !== null ? r :
|
|
82
|
-
case
|
|
81
|
+
case ae:
|
|
82
|
+
return r = e.displayName || null, r !== null ? r : s(e.type) || "Memo";
|
|
83
|
+
case h:
|
|
83
84
|
r = e._payload, e = e._init;
|
|
84
85
|
try {
|
|
85
|
-
return
|
|
86
|
+
return s(e(r));
|
|
86
87
|
} catch {
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
return null;
|
|
90
91
|
}
|
|
91
|
-
function
|
|
92
|
+
function t(e) {
|
|
92
93
|
return "" + e;
|
|
93
94
|
}
|
|
94
|
-
function
|
|
95
|
+
function f(e) {
|
|
95
96
|
try {
|
|
96
|
-
|
|
97
|
+
t(e);
|
|
97
98
|
var r = !1;
|
|
98
99
|
} catch {
|
|
99
100
|
r = !0;
|
|
100
101
|
}
|
|
101
102
|
if (r) {
|
|
102
103
|
r = console;
|
|
103
|
-
var
|
|
104
|
-
return
|
|
104
|
+
var l = r.error, u = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
|
|
105
|
+
return l.call(
|
|
105
106
|
r,
|
|
106
107
|
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
|
|
107
|
-
|
|
108
|
-
),
|
|
108
|
+
u
|
|
109
|
+
), t(e);
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
function
|
|
112
|
-
if (e ===
|
|
113
|
-
if (typeof e == "object" && e !== null && e.$$typeof ===
|
|
112
|
+
function d(e) {
|
|
113
|
+
if (e === C) return "<>";
|
|
114
|
+
if (typeof e == "object" && e !== null && e.$$typeof === h)
|
|
114
115
|
return "<...>";
|
|
115
116
|
try {
|
|
116
|
-
var r =
|
|
117
|
+
var r = s(e);
|
|
117
118
|
return r ? "<" + r + ">" : "<...>";
|
|
118
119
|
} catch {
|
|
119
120
|
return "<...>";
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
function a() {
|
|
123
|
-
var e =
|
|
124
|
+
var e = y.A;
|
|
124
125
|
return e === null ? null : e.getOwner();
|
|
125
126
|
}
|
|
126
|
-
function
|
|
127
|
+
function i() {
|
|
127
128
|
return Error("react-stack-top-frame");
|
|
128
129
|
}
|
|
129
|
-
function
|
|
130
|
-
if (
|
|
130
|
+
function E(e) {
|
|
131
|
+
if (Y.call(e, "key")) {
|
|
131
132
|
var r = Object.getOwnPropertyDescriptor(e, "key").get;
|
|
132
133
|
if (r && r.isReactWarning) return !1;
|
|
133
134
|
}
|
|
134
135
|
return e.key !== void 0;
|
|
135
136
|
}
|
|
136
|
-
function
|
|
137
|
-
function
|
|
138
|
-
|
|
137
|
+
function n(e, r) {
|
|
138
|
+
function l() {
|
|
139
|
+
$ || ($ = !0, console.error(
|
|
139
140
|
"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
|
|
140
141
|
r
|
|
141
142
|
));
|
|
142
143
|
}
|
|
143
|
-
|
|
144
|
-
get:
|
|
144
|
+
l.isReactWarning = !0, Object.defineProperty(e, "key", {
|
|
145
|
+
get: l,
|
|
145
146
|
configurable: !0
|
|
146
147
|
});
|
|
147
148
|
}
|
|
148
|
-
function
|
|
149
|
-
var e =
|
|
150
|
-
return
|
|
149
|
+
function b() {
|
|
150
|
+
var e = s(this.type);
|
|
151
|
+
return I[e] || (I[e] = !0, console.error(
|
|
151
152
|
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
|
|
152
153
|
)), e = this.props.ref, e !== void 0 ? e : null;
|
|
153
154
|
}
|
|
154
|
-
function
|
|
155
|
-
var
|
|
155
|
+
function v(e, r, l, u, k, j) {
|
|
156
|
+
var o = l.ref;
|
|
156
157
|
return e = {
|
|
157
|
-
$$typeof:
|
|
158
|
+
$$typeof: x,
|
|
158
159
|
type: e,
|
|
159
160
|
key: r,
|
|
160
|
-
props:
|
|
161
|
-
_owner:
|
|
162
|
-
}, (
|
|
161
|
+
props: l,
|
|
162
|
+
_owner: u
|
|
163
|
+
}, (o !== void 0 ? o : null) !== null ? Object.defineProperty(e, "ref", {
|
|
163
164
|
enumerable: !1,
|
|
164
|
-
get:
|
|
165
|
+
get: b
|
|
165
166
|
}) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
|
|
166
167
|
configurable: !1,
|
|
167
168
|
enumerable: !1,
|
|
@@ -176,7 +177,7 @@ function oe() {
|
|
|
176
177
|
configurable: !1,
|
|
177
178
|
enumerable: !1,
|
|
178
179
|
writable: !0,
|
|
179
|
-
value:
|
|
180
|
+
value: k
|
|
180
181
|
}), Object.defineProperty(e, "_debugTask", {
|
|
181
182
|
configurable: !1,
|
|
182
183
|
enumerable: !1,
|
|
@@ -184,159 +185,188 @@ function oe() {
|
|
|
184
185
|
value: j
|
|
185
186
|
}), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
|
|
186
187
|
}
|
|
187
|
-
function
|
|
188
|
-
var
|
|
189
|
-
if (
|
|
190
|
-
if (
|
|
191
|
-
if (
|
|
192
|
-
for (
|
|
193
|
-
|
|
194
|
-
Object.freeze && Object.freeze(
|
|
188
|
+
function c(e, r, l, u, k, j) {
|
|
189
|
+
var o = r.children;
|
|
190
|
+
if (o !== void 0)
|
|
191
|
+
if (u)
|
|
192
|
+
if (oe(o)) {
|
|
193
|
+
for (u = 0; u < o.length; u++)
|
|
194
|
+
A(o[u]);
|
|
195
|
+
Object.freeze && Object.freeze(o);
|
|
195
196
|
} else
|
|
196
197
|
console.error(
|
|
197
198
|
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
|
|
198
199
|
);
|
|
199
|
-
else
|
|
200
|
-
if (
|
|
201
|
-
|
|
202
|
-
var
|
|
203
|
-
return
|
|
200
|
+
else A(o);
|
|
201
|
+
if (Y.call(r, "key")) {
|
|
202
|
+
o = s(e);
|
|
203
|
+
var _ = Object.keys(r).filter(function(se) {
|
|
204
|
+
return se !== "key";
|
|
204
205
|
});
|
|
205
|
-
|
|
206
|
+
u = 0 < _.length ? "{key: someKey, " + _.join(": ..., ") + ": ...}" : "{key: someKey}", D[o + u] || (_ = 0 < _.length ? "{" + _.join(": ..., ") + ": ...}" : "{}", console.error(
|
|
206
207
|
`A props object containing a "key" prop is being spread into JSX:
|
|
207
208
|
let props = %s;
|
|
208
209
|
<%s {...props} />
|
|
209
210
|
React keys must be passed directly to JSX without using spread:
|
|
210
211
|
let props = %s;
|
|
211
212
|
<%s key={someKey} {...props} />`,
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
),
|
|
213
|
+
u,
|
|
214
|
+
o,
|
|
215
|
+
_,
|
|
216
|
+
o
|
|
217
|
+
), D[o + u] = !0);
|
|
217
218
|
}
|
|
218
|
-
if (
|
|
219
|
-
|
|
220
|
-
for (var
|
|
221
|
-
|
|
222
|
-
} else
|
|
223
|
-
return
|
|
224
|
-
|
|
219
|
+
if (o = null, l !== void 0 && (f(l), o = "" + l), E(r) && (f(r.key), o = "" + r.key), "key" in r) {
|
|
220
|
+
l = {};
|
|
221
|
+
for (var w in r)
|
|
222
|
+
w !== "key" && (l[w] = r[w]);
|
|
223
|
+
} else l = r;
|
|
224
|
+
return o && n(
|
|
225
|
+
l,
|
|
225
226
|
typeof e == "function" ? e.displayName || e.name || "Unknown" : e
|
|
226
|
-
),
|
|
227
|
+
), v(
|
|
227
228
|
e,
|
|
229
|
+
o,
|
|
228
230
|
l,
|
|
229
|
-
t,
|
|
230
231
|
a(),
|
|
231
|
-
|
|
232
|
+
k,
|
|
232
233
|
j
|
|
233
234
|
);
|
|
234
235
|
}
|
|
235
|
-
function
|
|
236
|
-
|
|
236
|
+
function A(e) {
|
|
237
|
+
m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === h && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
|
|
237
238
|
}
|
|
238
|
-
function
|
|
239
|
-
return typeof e == "object" && e !== null && e.$$typeof ===
|
|
239
|
+
function m(e) {
|
|
240
|
+
return typeof e == "object" && e !== null && e.$$typeof === x;
|
|
240
241
|
}
|
|
241
|
-
var
|
|
242
|
+
var P = q, x = Symbol.for("react.transitional.element"), B = Symbol.for("react.portal"), C = Symbol.for("react.fragment"), Z = Symbol.for("react.strict_mode"), Q = Symbol.for("react.profiler"), K = Symbol.for("react.consumer"), ee = Symbol.for("react.context"), re = Symbol.for("react.forward_ref"), te = Symbol.for("react.suspense"), ne = Symbol.for("react.suspense_list"), ae = Symbol.for("react.memo"), h = Symbol.for("react.lazy"), le = Symbol.for("react.activity"), ue = Symbol.for("react.client.reference"), y = P.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, Y = Object.prototype.hasOwnProperty, oe = Array.isArray, O = console.createTask ? console.createTask : function() {
|
|
242
243
|
return null;
|
|
243
244
|
};
|
|
244
|
-
|
|
245
|
+
P = {
|
|
245
246
|
react_stack_bottom_frame: function(e) {
|
|
246
247
|
return e();
|
|
247
248
|
}
|
|
248
249
|
};
|
|
249
|
-
var
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
)(),
|
|
253
|
-
|
|
254
|
-
var
|
|
255
|
-
return
|
|
250
|
+
var $, I = {}, M = P.react_stack_bottom_frame.bind(
|
|
251
|
+
P,
|
|
252
|
+
i
|
|
253
|
+
)(), F = O(d(i)), D = {};
|
|
254
|
+
p.Fragment = C, p.jsx = function(e, r, l) {
|
|
255
|
+
var u = 1e4 > y.recentlyCreatedOwnerStacks++;
|
|
256
|
+
return c(
|
|
256
257
|
e,
|
|
257
258
|
r,
|
|
258
|
-
|
|
259
|
+
l,
|
|
259
260
|
!1,
|
|
260
|
-
|
|
261
|
-
|
|
261
|
+
u ? Error("react-stack-top-frame") : M,
|
|
262
|
+
u ? O(d(e)) : F
|
|
262
263
|
);
|
|
263
|
-
},
|
|
264
|
-
var
|
|
265
|
-
return
|
|
264
|
+
}, p.jsxs = function(e, r, l) {
|
|
265
|
+
var u = 1e4 > y.recentlyCreatedOwnerStacks++;
|
|
266
|
+
return c(
|
|
266
267
|
e,
|
|
267
268
|
r,
|
|
268
|
-
|
|
269
|
+
l,
|
|
269
270
|
!0,
|
|
270
|
-
|
|
271
|
-
|
|
271
|
+
u ? Error("react-stack-top-frame") : M,
|
|
272
|
+
u ? O(d(e)) : F
|
|
272
273
|
);
|
|
273
274
|
};
|
|
274
|
-
})()),
|
|
275
|
+
})()), p;
|
|
275
276
|
}
|
|
276
|
-
var
|
|
277
|
-
function
|
|
278
|
-
return
|
|
277
|
+
var U;
|
|
278
|
+
function me() {
|
|
279
|
+
return U || (U = 1, process.env.NODE_ENV === "production" ? S.exports = de() : S.exports = Ee()), S.exports;
|
|
279
280
|
}
|
|
280
|
-
var
|
|
281
|
-
const
|
|
282
|
-
backendUrl:
|
|
283
|
-
conversationUrl:
|
|
284
|
-
appName:
|
|
285
|
-
agentAvatar:
|
|
281
|
+
var g = me();
|
|
282
|
+
const G = q.forwardRef(({
|
|
283
|
+
backendUrl: s,
|
|
284
|
+
conversationUrl: t,
|
|
285
|
+
appName: f,
|
|
286
|
+
agentAvatar: d,
|
|
286
287
|
inspector: a,
|
|
287
|
-
interceptor:
|
|
288
|
-
className:
|
|
289
|
-
composer:
|
|
290
|
-
thread:
|
|
291
|
-
header:
|
|
292
|
-
context:
|
|
293
|
-
},
|
|
294
|
-
const
|
|
295
|
-
return
|
|
296
|
-
|
|
297
|
-
}, [
|
|
298
|
-
|
|
299
|
-
}, [
|
|
288
|
+
interceptor: i,
|
|
289
|
+
className: E,
|
|
290
|
+
composer: n,
|
|
291
|
+
thread: b,
|
|
292
|
+
header: v,
|
|
293
|
+
context: c
|
|
294
|
+
}, A) => {
|
|
295
|
+
const m = N(null);
|
|
296
|
+
return ie(A, () => m.current), R(() => {
|
|
297
|
+
m.current && (c != null && c.appContext) && m.current.setAppContext(c.appContext);
|
|
298
|
+
}, [c == null ? void 0 : c.appContext]), R(() => {
|
|
299
|
+
m.current && (c != null && c.appState) && m.current.setAppState(c.appState);
|
|
300
|
+
}, [c == null ? void 0 : c.appState]), R(() => {
|
|
301
|
+
m.current && (n != null && n.suggestedPrompts) && m.current.setSuggestedPrompts(n.suggestedPrompts);
|
|
302
|
+
}, [n == null ? void 0 : n.suggestedPrompts]), /* @__PURE__ */ g.jsx(
|
|
300
303
|
"agent-chat",
|
|
301
304
|
{
|
|
302
|
-
ref:
|
|
303
|
-
backendUrl:
|
|
304
|
-
conversationUrl:
|
|
305
|
-
appName:
|
|
306
|
-
agentAvatar:
|
|
307
|
-
disclaimer:
|
|
308
|
-
placeholder:
|
|
309
|
-
emptyText:
|
|
310
|
-
headerTitle:
|
|
311
|
-
hideHeader:
|
|
305
|
+
ref: m,
|
|
306
|
+
backendUrl: s,
|
|
307
|
+
conversationUrl: t,
|
|
308
|
+
appName: f,
|
|
309
|
+
agentAvatar: d,
|
|
310
|
+
disclaimer: n == null ? void 0 : n.disclaimer,
|
|
311
|
+
placeholder: n == null ? void 0 : n.placeholder,
|
|
312
|
+
emptyText: b == null ? void 0 : b.emptyText,
|
|
313
|
+
headerTitle: v == null ? void 0 : v.title,
|
|
314
|
+
hideHeader: v == null ? void 0 : v.hide,
|
|
312
315
|
inspector: a ? "true" : void 0,
|
|
313
|
-
interceptor:
|
|
314
|
-
class:
|
|
316
|
+
interceptor: i ? !0 : void 0,
|
|
317
|
+
class: E
|
|
315
318
|
}
|
|
316
319
|
);
|
|
317
320
|
});
|
|
318
|
-
|
|
319
|
-
function
|
|
320
|
-
const [
|
|
321
|
-
return
|
|
322
|
-
|
|
323
|
-
}, [
|
|
324
|
-
var
|
|
325
|
-
const a = (
|
|
321
|
+
G.displayName = "AgentChat";
|
|
322
|
+
function ve(s, t) {
|
|
323
|
+
const [f, d] = J(null);
|
|
324
|
+
return R(() => {
|
|
325
|
+
s && ce.registerPortal(s, t == null ? void 0 : t.handlers);
|
|
326
|
+
}, [s, t == null ? void 0 : t.handlers]), R(() => {
|
|
327
|
+
var E;
|
|
328
|
+
const a = (E = t == null ? void 0 : t.chatRef) == null ? void 0 : E.current;
|
|
326
329
|
if (!a) return;
|
|
327
330
|
if (a.controller) {
|
|
328
|
-
|
|
331
|
+
d(a.controller);
|
|
329
332
|
return;
|
|
330
333
|
}
|
|
331
|
-
const
|
|
332
|
-
|
|
334
|
+
const i = (n) => {
|
|
335
|
+
d(n.detail ?? null);
|
|
333
336
|
};
|
|
334
|
-
return a.addEventListener("controller-ready",
|
|
335
|
-
a.removeEventListener("controller-ready",
|
|
337
|
+
return a.addEventListener("controller-ready", i), () => {
|
|
338
|
+
a.removeEventListener("controller-ready", i);
|
|
336
339
|
};
|
|
337
|
-
}, [
|
|
340
|
+
}, [t == null ? void 0 : t.chatRef]), f;
|
|
338
341
|
}
|
|
342
|
+
const X = V(null), H = V(null);
|
|
343
|
+
function Te() {
|
|
344
|
+
return z(X);
|
|
345
|
+
}
|
|
346
|
+
const pe = ({ children: s, ...t }) => {
|
|
347
|
+
const f = z(H), d = N(null);
|
|
348
|
+
return R(() => {
|
|
349
|
+
if (f)
|
|
350
|
+
return f(d.current), () => {
|
|
351
|
+
f(null);
|
|
352
|
+
};
|
|
353
|
+
}, [f]), /* @__PURE__ */ g.jsx("div", { ref: d, ...t, children: s });
|
|
354
|
+
}, ge = ({
|
|
355
|
+
children: s,
|
|
356
|
+
context: t,
|
|
357
|
+
handlers: f,
|
|
358
|
+
...d
|
|
359
|
+
}) => {
|
|
360
|
+
const a = N(null), i = ve(t == null ? void 0 : t.appContext, { chatRef: a, handlers: f }), [E, n] = J(null);
|
|
361
|
+
return /* @__PURE__ */ g.jsx(X.Provider, { value: i, children: /* @__PURE__ */ g.jsxs(H.Provider, { value: n, children: [
|
|
362
|
+
s,
|
|
363
|
+
E ? fe(/* @__PURE__ */ g.jsx(G, { ref: a, context: t, ...d }), E) : null
|
|
364
|
+
] }) });
|
|
365
|
+
};
|
|
339
366
|
export {
|
|
340
|
-
|
|
341
|
-
|
|
367
|
+
G as AgentChat,
|
|
368
|
+
pe as AgentChatMount,
|
|
369
|
+
ge as AgentChatProvider,
|
|
370
|
+
Te as useAgentChatController,
|
|
371
|
+
ve as useChatPortal
|
|
342
372
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(v,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("react"),require("site-operator"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","site-operator","react-dom"],a):(v=typeof globalThis<"u"?globalThis:v||self,a(v.SiteOperatorReact={},v.React,v.SiteOperator,v.ReactDOM))})(this,(function(v,a,H,B){"use strict";var P={exports:{}},b={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var
|
|
9
|
+
*/var Y;function Z(){if(Y)return b;Y=1;var c=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function d(E,l,f){var R=null;if(f!==void 0&&(R=""+f),l.key!==void 0&&(R=""+l.key),"key"in l){f={};for(var n in l)n!=="key"&&(f[n]=l[n])}else f=l;return l=f.ref,{$$typeof:c,type:E,key:R,ref:l!==void 0?l:null,props:f}}return b.Fragment=t,b.jsx=d,b.jsxs=d,b}var p={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var
|
|
17
|
+
*/var M;function Q(){return M||(M=1,process.env.NODE_ENV!=="production"&&(function(){function c(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ie?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case y:return"Fragment";case ne:return"Profiler";case te:return"StrictMode";case se:return"Suspense";case oe:return"SuspenseList";case fe:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case re:return"Portal";case le:return e.displayName||"Context";case ae:return(e._context.displayName||"Context")+".Consumer";case ue:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ce:return r=e.displayName||null,r!==null?r:c(e.type)||"Memo";case O:r=e._payload,e=e._init;try{return c(e(r))}catch{}}return null}function t(e){return""+e}function d(e){try{t(e);var r=!1}catch{r=!0}if(r){r=console;var u=r.error,s=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return u.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",s),t(e)}}function E(e){if(e===y)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===O)return"<...>";try{var r=c(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function l(){var e=j.A;return e===null?null:e.getOwner()}function f(){return Error("react-stack-top-frame")}function R(e){if(U.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function n(e,r){function u(){J||(J=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}u.isReactWarning=!0,Object.defineProperty(e,"key",{get:u,configurable:!0})}function A(){var e=c(this.type);return V[e]||(V[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function m(e,r,u,s,h,N){var o=u.ref;return e={$$typeof:W,type:e,key:r,props:u,_owner:s},(o!==void 0?o:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:A}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:h}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:N}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function i(e,r,u,s,h,N){var o=r.children;if(o!==void 0)if(s)if(de(o)){for(s=0;s<o.length;s++)C(o[s]);Object.freeze&&Object.freeze(o)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else C(o);if(U.call(r,"key")){o=c(e);var T=Object.keys(r).filter(function(Ee){return Ee!=="key"});s=0<T.length?"{key: someKey, "+T.join(": ..., ")+": ...}":"{key: someKey}",X[o+s]||(T=0<T.length?"{"+T.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
18
|
let props = %s;
|
|
19
19
|
<%s {...props} />
|
|
20
20
|
React keys must be passed directly to JSX without using spread:
|
|
21
21
|
let props = %s;
|
|
22
|
-
<%s key={someKey} {...props} />`,
|
|
22
|
+
<%s key={someKey} {...props} />`,s,o,T,o),X[o+s]=!0)}if(o=null,u!==void 0&&(d(u),o=""+u),R(r)&&(d(r.key),o=""+r.key),"key"in r){u={};for(var x in r)x!=="key"&&(u[x]=r[x])}else u=r;return o&&n(u,typeof e=="function"?e.displayName||e.name||"Unknown":e),m(e,o,u,l(),h,N)}function C(e){_(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===O&&(e._payload.status==="fulfilled"?_(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function _(e){return typeof e=="object"&&e!==null&&e.$$typeof===W}var S=a,W=Symbol.for("react.transitional.element"),re=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),te=Symbol.for("react.strict_mode"),ne=Symbol.for("react.profiler"),ae=Symbol.for("react.consumer"),le=Symbol.for("react.context"),ue=Symbol.for("react.forward_ref"),se=Symbol.for("react.suspense"),oe=Symbol.for("react.suspense_list"),ce=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),fe=Symbol.for("react.activity"),ie=Symbol.for("react.client.reference"),j=S.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,U=Object.prototype.hasOwnProperty,de=Array.isArray,w=console.createTask?console.createTask:function(){return null};S={react_stack_bottom_frame:function(e){return e()}};var J,V={},z=S.react_stack_bottom_frame.bind(S,f)(),G=w(E(f)),X={};p.Fragment=y,p.jsx=function(e,r,u){var s=1e4>j.recentlyCreatedOwnerStacks++;return i(e,r,u,!1,s?Error("react-stack-top-frame"):z,s?w(E(e)):G)},p.jsxs=function(e,r,u){var s=1e4>j.recentlyCreatedOwnerStacks++;return i(e,r,u,!0,s?Error("react-stack-top-frame"):z,s?w(E(e)):G)}})()),p}var I;function K(){return I||(I=1,process.env.NODE_ENV==="production"?P.exports=Z():P.exports=Q()),P.exports}var g=K();const k=a.forwardRef(({backendUrl:c,conversationUrl:t,appName:d,agentAvatar:E,inspector:l,interceptor:f,className:R,composer:n,thread:A,header:m,context:i},C)=>{const _=a.useRef(null);return a.useImperativeHandle(C,()=>_.current),a.useEffect(()=>{_.current&&(i!=null&&i.appContext)&&_.current.setAppContext(i.appContext)},[i==null?void 0:i.appContext]),a.useEffect(()=>{_.current&&(i!=null&&i.appState)&&_.current.setAppState(i.appState)},[i==null?void 0:i.appState]),a.useEffect(()=>{_.current&&(n!=null&&n.suggestedPrompts)&&_.current.setSuggestedPrompts(n.suggestedPrompts)},[n==null?void 0:n.suggestedPrompts]),g.jsx("agent-chat",{ref:_,backendUrl:c,conversationUrl:t,appName:d,agentAvatar:E,disclaimer:n==null?void 0:n.disclaimer,placeholder:n==null?void 0:n.placeholder,emptyText:A==null?void 0:A.emptyText,headerTitle:m==null?void 0:m.title,hideHeader:m==null?void 0:m.hide,inspector:l?"true":void 0,interceptor:f?!0:void 0,class:R})});k.displayName="AgentChat";function D(c,t){const[d,E]=a.useState(null);return a.useEffect(()=>{c&&H.chatPortalService.registerPortal(c,t==null?void 0:t.handlers)},[c,t==null?void 0:t.handlers]),a.useEffect(()=>{var R;const l=(R=t==null?void 0:t.chatRef)==null?void 0:R.current;if(!l)return;if(l.controller){E(l.controller);return}const f=n=>{E(n.detail??null)};return l.addEventListener("controller-ready",f),()=>{l.removeEventListener("controller-ready",f)}},[t==null?void 0:t.chatRef]),d}const F=a.createContext(null),L=a.createContext(null);function q(){return a.useContext(F)}const $=({children:c,...t})=>{const d=a.useContext(L),E=a.useRef(null);return a.useEffect(()=>{if(d)return d(E.current),()=>{d(null)}},[d]),g.jsx("div",{ref:E,...t,children:c})},ee=({children:c,context:t,handlers:d,...E})=>{const l=a.useRef(null),f=D(t==null?void 0:t.appContext,{chatRef:l,handlers:d}),[R,n]=a.useState(null);return g.jsx(F.Provider,{value:f,children:g.jsxs(L.Provider,{value:n,children:[c,R?B.createPortal(g.jsx(k,{ref:l,context:t,...E}),R):null]})})};v.AgentChat=k,v.AgentChatMount=$,v.AgentChatProvider=ee,v.useAgentChatController=q,v.useChatPortal=D,Object.defineProperty(v,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "site-operator-react",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "React wrapper for site-operator, providing AgentChat component and hooks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "jostvian",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"dev": "vite build --watch"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"site-operator": "^0.
|
|
35
|
+
"site-operator": "^0.2.6"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"react": "^19.0.0",
|
|
@@ -47,4 +47,4 @@
|
|
|
47
47
|
"vite": "^6.0.0",
|
|
48
48
|
"vite-plugin-dts": "^4.5.0"
|
|
49
49
|
}
|
|
50
|
-
}
|
|
50
|
+
}
|