@pagelines/sdk 1.0.635 → 1.0.637
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/AgentProvider.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js +10 -9
- package/dist/AgentWrap.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/agent/index.d.ts +2 -1
- package/dist/agent/test/ElAgentChatPreview.client.test.d.ts +1 -0
- package/dist/agent/ui/ElAgentChatPreview.vue.d.ts +10 -0
- package/dist/agent.js +98 -69
- package/dist/agent.js.map +1 -1
- package/dist/clients/AgentClient.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/sdkClient.js +1 -1
- package/dist/sdkClient.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import { default as AgentProvider } from './ui/AgentProvider.vue';
|
|
|
4
4
|
import { default as AgentWidget } from './ui/AgentWidget.vue';
|
|
5
5
|
import { default as AgentWrap } from './ui/AgentWrap.vue';
|
|
6
6
|
import { default as ElAgentChat } from './ui/ElAgentChat.vue';
|
|
7
|
+
import { default as ElAgentChatPreview } from './ui/ElAgentChatPreview.vue';
|
|
7
8
|
export { AgentChatController, AgentChatController as AgentController } from './AgentController';
|
|
8
9
|
export type { ChatStreamFn } from './AgentController';
|
|
9
10
|
export * from './schema';
|
|
10
|
-
export { AgentChat, AgentModal, AgentProvider, AgentWidget, AgentWrap, ElAgentChat };
|
|
11
|
+
export { AgentChat, AgentModal, AgentProvider, AgentWidget, AgentWrap, ElAgentChat, ElAgentChatPreview };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ChatPreviewMessage = {
|
|
2
|
+
sender: 'user' | 'agent';
|
|
3
|
+
text: string;
|
|
4
|
+
};
|
|
5
|
+
type __VLS_Props = {
|
|
6
|
+
messages: ChatPreviewMessage[];
|
|
7
|
+
variant?: 'light' | 'dark';
|
|
8
|
+
};
|
|
9
|
+
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
10
|
+
export default _default;
|
package/dist/agent.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { _ as
|
|
4
|
-
import { A as
|
|
5
|
-
import { defineComponent as
|
|
1
|
+
var C = Object.defineProperty;
|
|
2
|
+
var u = (e, o) => C(e, "name", { value: o, configurable: !0 });
|
|
3
|
+
import { _ as $, a as M } from "./AgentProvider.vue_vue_type_script_setup_true_lang.js";
|
|
4
|
+
import { A as Y } from "./AgentProvider.vue_vue_type_script_setup_true_lang.js";
|
|
5
|
+
import { defineComponent as m, openBlock as n, createBlock as g, withCtx as w, createElementVNode as i, createVNode as b, ref as p, watch as _, nextTick as z, createElementBlock as d, normalizeClass as f, normalizeStyle as E, createCommentVNode as v, Fragment as N, renderList as j } from "vue";
|
|
6
6
|
import { _ as B } from "./FModal.vue_vue_type_script_setup_true_lang.js";
|
|
7
|
-
import { _ } from "./AgentWrap.vue_vue_type_script_setup_true_lang.js";
|
|
8
|
-
import { A as
|
|
9
|
-
import { Agent as
|
|
10
|
-
const
|
|
7
|
+
import { _ as P, a as T } from "./AgentWrap.vue_vue_type_script_setup_true_lang.js";
|
|
8
|
+
import { A as ee, A as te, b as se } from "./AgentWrap.vue_vue_type_script_setup_true_lang.js";
|
|
9
|
+
import { Agent as ne } from "@pagelines/core";
|
|
10
|
+
const V = { class: "relative w-full h-[80vh] md:h-[600px]" }, J = /* @__PURE__ */ m({
|
|
11
11
|
name: "AgentModal",
|
|
12
12
|
__name: "AgentModal",
|
|
13
13
|
props: {
|
|
@@ -19,38 +19,38 @@ const T = { class: "relative w-full h-[80vh] md:h-[600px]" }, F = /* @__PURE__ *
|
|
|
19
19
|
firstMessage: {}
|
|
20
20
|
},
|
|
21
21
|
emits: ["update:vis"],
|
|
22
|
-
setup(e, { emit:
|
|
23
|
-
const s =
|
|
24
|
-
return (t, a) => (
|
|
22
|
+
setup(e, { emit: o }) {
|
|
23
|
+
const s = o;
|
|
24
|
+
return (t, a) => (n(), g(B, {
|
|
25
25
|
vis: e.vis,
|
|
26
26
|
"modal-class": "max-w-4xl p-0",
|
|
27
27
|
"style-class": "bg-transparent shadow-2xl rounded-2xl",
|
|
28
28
|
"has-close": !1,
|
|
29
|
-
"onUpdate:vis": a[1] || (a[1] = (
|
|
29
|
+
"onUpdate:vis": a[1] || (a[1] = (c) => s("update:vis", c))
|
|
30
30
|
}, {
|
|
31
|
-
default:
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
default: w(() => [
|
|
32
|
+
i("div", V, [
|
|
33
|
+
b($, {
|
|
34
34
|
sdk: e.sdk,
|
|
35
35
|
agent: e.agent,
|
|
36
36
|
handle: e.handle,
|
|
37
37
|
context: e.context,
|
|
38
38
|
"first-message": e.firstMessage,
|
|
39
39
|
"has-close": !0,
|
|
40
|
-
onClose: a[0] || (a[0] = (
|
|
40
|
+
onClose: a[0] || (a[0] = (c) => s("update:vis", !1))
|
|
41
41
|
}, null, 8, ["sdk", "agent", "handle", "context", "first-message"])
|
|
42
42
|
])
|
|
43
43
|
]),
|
|
44
44
|
_: 1
|
|
45
45
|
}, 8, ["vis"]));
|
|
46
46
|
}
|
|
47
|
-
}),
|
|
47
|
+
}), W = {
|
|
48
48
|
key: 0,
|
|
49
49
|
class: "relative h-full w-full"
|
|
50
|
-
},
|
|
50
|
+
}, O = { class: "group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100" }, S = ["src", "alt"], U = {
|
|
51
51
|
key: 0,
|
|
52
52
|
class: "absolute top-0.5 right-0.5"
|
|
53
|
-
},
|
|
53
|
+
}, K = /* @__PURE__ */ m({
|
|
54
54
|
__name: "AgentWidget",
|
|
55
55
|
props: {
|
|
56
56
|
sdk: {},
|
|
@@ -59,100 +59,129 @@ const T = { class: "relative w-full h-[80vh] md:h-[600px]" }, F = /* @__PURE__ *
|
|
|
59
59
|
firstMessage: {},
|
|
60
60
|
position: {}
|
|
61
61
|
},
|
|
62
|
-
setup(e, { expose:
|
|
63
|
-
const s = e, t =
|
|
64
|
-
function
|
|
62
|
+
setup(e, { expose: o }) {
|
|
63
|
+
const s = e, t = p(!1), a = p(!1);
|
|
64
|
+
function c() {
|
|
65
65
|
t.value = !t.value;
|
|
66
66
|
}
|
|
67
|
-
c
|
|
68
|
-
|
|
67
|
+
u(c, "toggle"), _(t, async (x) => {
|
|
68
|
+
x ? (await z(), setTimeout(() => {
|
|
69
69
|
a.value = !0;
|
|
70
70
|
}, 400)) : a.value = !1;
|
|
71
71
|
});
|
|
72
|
-
function
|
|
72
|
+
function k() {
|
|
73
73
|
t.value = !0;
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
function
|
|
75
|
+
u(k, "open");
|
|
76
|
+
function h() {
|
|
77
77
|
t.value = !1;
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
function
|
|
81
|
-
|
|
79
|
+
u(h, "close");
|
|
80
|
+
function y() {
|
|
81
|
+
h();
|
|
82
82
|
}
|
|
83
|
-
return
|
|
84
|
-
toggle:
|
|
85
|
-
open:
|
|
86
|
-
close:
|
|
87
|
-
}), (
|
|
83
|
+
return u(y, "handleClose"), o({
|
|
84
|
+
toggle: c,
|
|
85
|
+
open: k,
|
|
86
|
+
close: h
|
|
87
|
+
}), (x, l) => (n(), g(P, {
|
|
88
88
|
sdk: e.sdk,
|
|
89
89
|
handle: e.handle,
|
|
90
90
|
context: e.context,
|
|
91
91
|
"first-message": e.firstMessage
|
|
92
92
|
}, {
|
|
93
|
-
default:
|
|
94
|
-
|
|
93
|
+
default: w(({ agent: r, sdk: A }) => [
|
|
94
|
+
r ? (n(), d("div", {
|
|
95
95
|
key: 0,
|
|
96
|
-
class:
|
|
96
|
+
class: f(["fixed z-[999999] pointer-events-auto", [
|
|
97
97
|
s.position === "bottom-left" ? "bottom-6 left-6" : s.position === "top-right" ? "top-6 right-6" : s.position === "top-left" ? "top-6 left-6" : "bottom-6 right-6"
|
|
98
98
|
]])
|
|
99
99
|
}, [
|
|
100
|
-
|
|
101
|
-
class:
|
|
100
|
+
i("div", {
|
|
101
|
+
class: f(["transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu", [
|
|
102
102
|
t.value ? "widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100" : "widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer"
|
|
103
103
|
]]),
|
|
104
|
-
style:
|
|
104
|
+
style: E({
|
|
105
105
|
"transform-origin": s.position === "bottom-left" ? "bottom left" : s.position === "top-right" ? "top right" : s.position === "top-left" ? "top left" : "bottom right"
|
|
106
106
|
}),
|
|
107
|
-
onClick:
|
|
107
|
+
onClick: l[0] || (l[0] = (F) => t.value ? void 0 : c())
|
|
108
108
|
}, [
|
|
109
|
-
t.value ?
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
src:
|
|
113
|
-
alt: `${
|
|
109
|
+
t.value ? v("", !0) : (n(), d("div", W, [
|
|
110
|
+
i("div", O, [
|
|
111
|
+
i("img", {
|
|
112
|
+
src: r.avatarUrl.value,
|
|
113
|
+
alt: `${r.displayName.value} assistant`,
|
|
114
114
|
class: "h-full w-full object-cover pointer-events-none",
|
|
115
115
|
width: "80",
|
|
116
116
|
height: "80"
|
|
117
|
-
}, null, 8,
|
|
118
|
-
|
|
117
|
+
}, null, 8, S),
|
|
118
|
+
l[1] || (l[1] = i("div", { class: "absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40" }, null, -1))
|
|
119
119
|
]),
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
r.state.value.lifecycle === "running" ? (n(), d("div", U, [...l[2] || (l[2] = [
|
|
121
|
+
i("div", {
|
|
122
122
|
class: "size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping",
|
|
123
123
|
style: { "animation-duration": "3s" }
|
|
124
124
|
}, null, -1),
|
|
125
|
-
|
|
126
|
-
])])) :
|
|
125
|
+
i("div", { class: "size-3 bg-green-500 rounded-full ring-2 ring-white" }, null, -1)
|
|
126
|
+
])])) : v("", !0)
|
|
127
127
|
])),
|
|
128
|
-
t.value &&
|
|
128
|
+
t.value && r ? (n(), g(M, {
|
|
129
129
|
key: 1,
|
|
130
130
|
class: "rounded-3xl shadow-2xl border border-white/10",
|
|
131
|
-
sdk:
|
|
132
|
-
agent:
|
|
131
|
+
sdk: A,
|
|
132
|
+
agent: r,
|
|
133
133
|
context: e.context,
|
|
134
134
|
"first-message": e.firstMessage,
|
|
135
135
|
"has-close": !0,
|
|
136
136
|
"is-active": a.value,
|
|
137
|
-
onClose:
|
|
138
|
-
}, null, 8, ["sdk", "agent", "context", "first-message", "is-active"])) :
|
|
137
|
+
onClose: y
|
|
138
|
+
}, null, 8, ["sdk", "agent", "context", "first-message", "is-active"])) : v("", !0)
|
|
139
139
|
], 6)
|
|
140
|
-
], 2)) :
|
|
140
|
+
], 2)) : v("", !0)
|
|
141
141
|
]),
|
|
142
142
|
_: 1
|
|
143
143
|
}, 8, ["sdk", "handle", "context", "first-message"]));
|
|
144
144
|
}
|
|
145
|
+
}), D = ["data-sender"], Q = /* @__PURE__ */ m({
|
|
146
|
+
__name: "ElAgentChatPreview",
|
|
147
|
+
props: {
|
|
148
|
+
messages: {},
|
|
149
|
+
variant: {}
|
|
150
|
+
},
|
|
151
|
+
setup(e) {
|
|
152
|
+
return (o, s) => (n(), d("div", {
|
|
153
|
+
class: f(["@container/chat-preview flex flex-col gap-3", e.variant === "dark" ? "text-white" : "text-slate-950"]),
|
|
154
|
+
"data-test": "agent-chat-preview"
|
|
155
|
+
}, [
|
|
156
|
+
(n(!0), d(N, null, j(e.messages, (t, a) => (n(), d("div", {
|
|
157
|
+
key: `${t.sender}-${a}`,
|
|
158
|
+
class: f(["flex", t.sender === "user" ? "justify-end" : "justify-start"]),
|
|
159
|
+
"data-test": "agent-chat-preview-message",
|
|
160
|
+
"data-sender": t.sender
|
|
161
|
+
}, [
|
|
162
|
+
i("div", {
|
|
163
|
+
class: f(["max-w-[88%] rounded-2xl px-4 py-3 text-sm shadow-sm @sm/chat-preview:max-w-[78%]", t.sender === "user" ? "bg-slate-950 text-white" : e.variant === "dark" ? "border border-white/10 bg-white/10 text-white" : "border border-slate-200 bg-white text-slate-950"])
|
|
164
|
+
}, [
|
|
165
|
+
b(T, {
|
|
166
|
+
text: t.text,
|
|
167
|
+
inverted: t.sender === "user" || e.variant === "dark"
|
|
168
|
+
}, null, 8, ["text", "inverted"])
|
|
169
|
+
], 2)
|
|
170
|
+
], 10, D))), 128))
|
|
171
|
+
], 2));
|
|
172
|
+
}
|
|
145
173
|
});
|
|
146
174
|
export {
|
|
147
|
-
|
|
148
|
-
|
|
175
|
+
Y as AGENT_MODES,
|
|
176
|
+
ne as Agent,
|
|
149
177
|
M as AgentChat,
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
178
|
+
ee as AgentChatController,
|
|
179
|
+
te as AgentController,
|
|
180
|
+
J as AgentModal,
|
|
181
|
+
$ as AgentProvider,
|
|
182
|
+
K as AgentWidget,
|
|
183
|
+
P as AgentWrap,
|
|
184
|
+
se as ElAgentChat,
|
|
185
|
+
Q as ElAgentChatPreview
|
|
157
186
|
};
|
|
158
187
|
//# sourceMappingURL=agent.js.map
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sources":["../agent/ui/AgentModal.vue","../agent/ui/AgentWidget.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../schema'\nimport FModal from '@/ui/common/FModal.vue'\nimport AgentProvider from './AgentProvider.vue'\n\ndefineOptions({ name: 'AgentModal' })\n\nconst {\n vis = false,\n sdk,\n agent,\n handle,\n context,\n firstMessage,\n} = defineProps<{\n vis?: boolean\n sdk?: PageLinesSDK\n agent?: AgentConfig\n handle?: string\n context?: string\n firstMessage?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n}>()\n</script>\n\n<template>\n <FModal\n :vis=\"vis\"\n modal-class=\"max-w-4xl p-0\"\n style-class=\"bg-transparent shadow-2xl rounded-2xl\"\n :has-close=\"false\"\n @update:vis=\"(val) => emit('update:vis', val)\"\n >\n <div class=\"relative w-full h-[80vh] md:h-[600px]\">\n <AgentProvider\n :sdk=\"sdk\"\n :agent=\"agent\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n @close=\"emit('update:vis', false)\"\n />\n </div>\n </FModal>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport { nextTick, ref, watch } from 'vue'\nimport AgentChat from './AgentChat.vue'\nimport AgentWrap from './AgentWrap.vue'\n\ninterface Props {\n sdk?: PageLinesSDK\n handle: string\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\nconst props = defineProps<Props>()\nconst isOpen = ref(false)\nconst isAgentActive = ref(false)\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\n// Watch isOpen to delay agent activation for smooth transition\nwatch(isOpen, async (newValue) => {\n if (newValue) {\n // When opening, delay agent activation until transition starts\n await nextTick()\n setTimeout(() => {\n isAgentActive.value = true\n }, 400) // Delay to let container expand first\n } else {\n // When closing, immediately deactivate agent\n isAgentActive.value = false\n }\n})\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\nfunction handleClose() {\n close()\n}\n\ndefineExpose({\n toggle,\n open,\n close,\n})\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n >\n <!-- Fixed Widget Wrapper -->\n <div\n v-if=\"agent\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"[\n props.position === 'bottom-left' ? 'bottom-6 left-6'\n : props.position === 'top-right' ? 'top-6 right-6'\n : props.position === 'top-left' ? 'top-6 left-6'\n : 'bottom-6 right-6',\n ]\"\n >\n <!-- Widget Content with Transition -->\n <div\n class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu\"\n :class=\"[\n isOpen\n ? 'widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100'\n : 'widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer',\n ]\"\n :style=\"{\n 'transform-origin':\n props.position === 'bottom-left' ? 'bottom left'\n : props.position === 'top-right' ? 'top right'\n : props.position === 'top-left' ? 'top left'\n : 'bottom right',\n }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Button Content (visible when closed) -->\n <div v-if=\"!isOpen\" class=\"relative h-full w-full\">\n <div class=\"group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"`${agent.displayName.value} assistant`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"80\"\n height=\"80\"\n />\n <!-- Gradient overlay for contrast -->\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40\" />\n </div>\n <!-- Online indicator -->\n <div v-if=\"agent.state.value.lifecycle === 'running'\" class=\"absolute top-0.5 right-0.5\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Chat Content (visible when open) -->\n <AgentChat\n v-if=\"isOpen && agent\"\n class=\"rounded-3xl shadow-2xl border border-white/10\"\n :sdk=\"resolvedSdk\"\n :agent=\"agent\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n :is-active=\"isAgentActive\"\n @close=\"handleClose\"\n />\n </div>\n </div>\n </AgentWrap>\n</template>\n"],"names":["emit","__emit","_createBlock","FModal","__props","_cache","val","_createElementVNode","_hoisted_1","_createVNode","AgentProvider","props","isOpen","ref","isAgentActive","toggle","__name","watch","newValue","nextTick","open","close","handleClose","__expose","AgentWrap","agent","resolvedSdk","_createElementBlock","_normalizeStyle","$event","_openBlock","_hoisted_2","_hoisted_4","AgentChat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sources":["../agent/ui/AgentModal.vue","../agent/ui/AgentWidget.vue","../agent/ui/ElAgentChatPreview.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../schema'\nimport FModal from '@/ui/common/FModal.vue'\nimport AgentProvider from './AgentProvider.vue'\n\ndefineOptions({ name: 'AgentModal' })\n\nconst {\n vis = false,\n sdk,\n agent,\n handle,\n context,\n firstMessage,\n} = defineProps<{\n vis?: boolean\n sdk?: PageLinesSDK\n agent?: AgentConfig\n handle?: string\n context?: string\n firstMessage?: string\n}>()\n\nconst emit = defineEmits<{\n 'update:vis': [value: boolean]\n}>()\n</script>\n\n<template>\n <FModal\n :vis=\"vis\"\n modal-class=\"max-w-4xl p-0\"\n style-class=\"bg-transparent shadow-2xl rounded-2xl\"\n :has-close=\"false\"\n @update:vis=\"(val) => emit('update:vis', val)\"\n >\n <div class=\"relative w-full h-[80vh] md:h-[600px]\">\n <AgentProvider\n :sdk=\"sdk\"\n :agent=\"agent\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n @close=\"emit('update:vis', false)\"\n />\n </div>\n </FModal>\n</template>\n","<script setup lang=\"ts\">\nimport type { PageLinesSDK } from '../../sdkClient'\nimport { nextTick, ref, watch } from 'vue'\nimport AgentChat from './AgentChat.vue'\nimport AgentWrap from './AgentWrap.vue'\n\ninterface Props {\n sdk?: PageLinesSDK\n handle: string\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\nconst props = defineProps<Props>()\nconst isOpen = ref(false)\nconst isAgentActive = ref(false)\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\n// Watch isOpen to delay agent activation for smooth transition\nwatch(isOpen, async (newValue) => {\n if (newValue) {\n // When opening, delay agent activation until transition starts\n await nextTick()\n setTimeout(() => {\n isAgentActive.value = true\n }, 400) // Delay to let container expand first\n } else {\n // When closing, immediately deactivate agent\n isAgentActive.value = false\n }\n})\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\nfunction handleClose() {\n close()\n}\n\ndefineExpose({\n toggle,\n open,\n close,\n})\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n >\n <!-- Fixed Widget Wrapper -->\n <div\n v-if=\"agent\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"[\n props.position === 'bottom-left' ? 'bottom-6 left-6'\n : props.position === 'top-right' ? 'top-6 right-6'\n : props.position === 'top-left' ? 'top-6 left-6'\n : 'bottom-6 right-6',\n ]\"\n >\n <!-- Widget Content with Transition -->\n <div\n class=\"transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] transform-gpu\"\n :class=\"[\n isOpen\n ? 'widget-expanded w-96 h-[600px] max-w-[calc(100vw-48px)] max-h-[calc(100vh-48px)] rounded-3xl opacity-100 scale-100'\n : 'widget-button w-[80px] h-[80px] opacity-100 scale-100 flex items-center justify-center cursor-pointer',\n ]\"\n :style=\"{\n 'transform-origin':\n props.position === 'bottom-left' ? 'bottom left'\n : props.position === 'top-right' ? 'top right'\n : props.position === 'top-left' ? 'top left'\n : 'bottom right',\n }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Button Content (visible when closed) -->\n <div v-if=\"!isOpen\" class=\"relative h-full w-full\">\n <div class=\"group relative h-full w-full rounded-3xl overflow-hidden shadow-lg transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:shadow-2xl hover:translate-y-[-1px] hover:brightness-110 active:scale-[1.06] active:-translate-y-0.5 active:duration-100\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"`${agent.displayName.value} assistant`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"80\"\n height=\"80\"\n />\n <!-- Gradient overlay for contrast -->\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60 transition-opacity duration-300 group-hover:opacity-40\" />\n </div>\n <!-- Online indicator -->\n <div v-if=\"agent.state.value.lifecycle === 'running'\" class=\"absolute top-0.5 right-0.5\">\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 3s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n\n <!-- Chat Content (visible when open) -->\n <AgentChat\n v-if=\"isOpen && agent\"\n class=\"rounded-3xl shadow-2xl border border-white/10\"\n :sdk=\"resolvedSdk\"\n :agent=\"agent\"\n :context=\"context\"\n :first-message=\"firstMessage\"\n :has-close=\"true\"\n :is-active=\"isAgentActive\"\n @close=\"handleClose\"\n />\n </div>\n </div>\n </AgentWrap>\n</template>\n","<script setup lang=\"ts\">\nimport ChatRichText from './ChatRichText.vue'\n\nexport type ChatPreviewMessage = {\n sender: 'user' | 'agent'\n text: string\n}\n\ndefineProps<{\n messages: ChatPreviewMessage[]\n variant?: 'light' | 'dark'\n}>()\n</script>\n\n<template>\n <div\n class=\"@container/chat-preview flex flex-col gap-3\"\n :class=\"variant === 'dark' ? 'text-white' : 'text-slate-950'\"\n data-test=\"agent-chat-preview\"\n >\n <div\n v-for=\"(message, index) in messages\"\n :key=\"`${message.sender}-${index}`\"\n class=\"flex\"\n :class=\"message.sender === 'user' ? 'justify-end' : 'justify-start'\"\n data-test=\"agent-chat-preview-message\"\n :data-sender=\"message.sender\"\n >\n <div\n class=\"max-w-[88%] rounded-2xl px-4 py-3 text-sm shadow-sm @sm/chat-preview:max-w-[78%]\"\n :class=\"message.sender === 'user'\n ? 'bg-slate-950 text-white'\n : variant === 'dark'\n ? 'border border-white/10 bg-white/10 text-white'\n : 'border border-slate-200 bg-white text-slate-950'\"\n >\n <ChatRichText\n :text=\"message.text\"\n :inverted=\"message.sender === 'user' || variant === 'dark'\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","_createBlock","FModal","__props","_cache","val","_createElementVNode","_hoisted_1","_createVNode","AgentProvider","props","isOpen","ref","isAgentActive","toggle","__name","watch","newValue","nextTick","open","close","handleClose","__expose","AgentWrap","agent","resolvedSdk","_createElementBlock","_normalizeStyle","$event","_openBlock","_hoisted_2","_hoisted_4","AgentChat","_normalizeClass","_Fragment","_renderList","message","index","ChatRichText"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export declare class AgentClient {
|
|
|
10
10
|
/**
|
|
11
11
|
* Live runtime status — the same canonical `LiveStatus` shape every other
|
|
12
12
|
* status producer emits (`GET /agents` rows, SSE status frames, lifecycle
|
|
13
|
-
* action responses). See plans/
|
|
13
|
+
* action responses). See plans/bots/state-management.md.
|
|
14
14
|
* `{ lifecycle: 'unknown' }` is the graceful degrade on any fetch failure.
|
|
15
15
|
*/
|
|
16
16
|
getLiveStatus(args: {
|