@pagelines/sdk 1.0.758 → 1.0.760

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/AgentProvider.js +251 -235
  2. package/dist/AgentProvider.js.map +1 -1
  3. package/dist/AgentWidgetModal.js +184 -29
  4. package/dist/AgentWidgetModal.js.map +1 -1
  5. package/dist/AgentWrap.js +821 -613
  6. package/dist/AgentWrap.js.map +1 -1
  7. package/dist/agent/AgentController.d.ts +82 -22
  8. package/dist/agent/index.d.ts +4 -2
  9. package/dist/agent/schema.d.ts +2 -17
  10. package/dist/agent/ui/AgentAvatar.vue.d.ts +2 -0
  11. package/dist/agent/ui/AgentChat.vue.d.ts +7 -0
  12. package/dist/agent/ui/AgentProvider.vue.d.ts +4 -0
  13. package/dist/agent/ui/ElCreateAgent.vue.d.ts +8 -0
  14. package/dist/agent/ui/{AgentModal.vue.d.ts → VoiceMode.vue.d.ts} +7 -10
  15. package/dist/agent/utils.d.ts +0 -4
  16. package/dist/agent/voice/provider.d.ts +28 -0
  17. package/dist/agent/voice/providers/elevenlabs/provider.d.ts +30 -0
  18. package/dist/agent/voice/providers/livekit/provider.d.ts +55 -0
  19. package/dist/agent/voice/voice-session-client.d.ts +49 -0
  20. package/dist/agent.js +168 -74
  21. package/dist/agent.js.map +1 -1
  22. package/dist/clients/ChatClient.d.ts +1 -9
  23. package/dist/contract.js +1756 -1664
  24. package/dist/contract.js.map +1 -1
  25. package/dist/demo/index.d.ts +4 -0
  26. package/dist/provider.js +40 -0
  27. package/dist/provider.js.map +1 -0
  28. package/dist/provider2.js +16451 -0
  29. package/dist/provider2.js.map +1 -0
  30. package/dist/provider3.js +18439 -0
  31. package/dist/provider3.js.map +1 -0
  32. package/dist/sdk.css +1 -1
  33. package/dist/sdkClient.d.ts +17 -0
  34. package/dist/sdkClient.js +37 -47
  35. package/dist/sdkClient.js.map +1 -1
  36. package/dist/widget/composables/useWidgetState.d.ts +12 -0
  37. package/dist/widget.js +23 -23
  38. package/package.json +3 -1
  39. package/dist/FModal.js +0 -165
  40. package/dist/FModal.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import "./rolldown-runtime.js";
2
2
  import { SOCIAL_PLATFORMS as e } from "./constants.js";
3
- import { a as t, c as n, d as r, f as i, i as a, l as o, m as s, n as c, o as l, s as u, t as d, u as ee } from "./AgentWrap.js";
4
- import { getColorSchemeOklch as te } from "@pagelines/core";
5
- import { Fragment as f, Transition as p, TransitionGroup as m, computed as h, createBlock as g, createCommentVNode as _, createElementBlock as v, createElementVNode as y, createSlots as b, createTextVNode as x, createVNode as S, defineComponent as C, guardReactiveProps as w, mergeProps as T, normalizeClass as E, normalizeProps as D, normalizeStyle as O, onMounted as k, onUnmounted as ne, openBlock as A, ref as j, renderList as M, renderSlot as N, shallowRef as re, toDisplayString as P, unref as F, watch as I, withCtx as L, withKeys as R, withModifiers as z } from "vue";
3
+ import { a as t, c as n, d as r, f as i, h as a, l as o, n as s, o as c, p as l, s as u, t as d, u as f } from "./AgentWrap.js";
4
+ import { getColorSchemeOklch as ee } from "@pagelines/core";
5
+ import { Fragment as p, Transition as m, TransitionGroup as h, computed as g, createBlock as _, createCommentVNode as v, createElementBlock as y, createElementVNode as b, createSlots as x, createTextVNode as S, createVNode as C, defineComponent as w, guardReactiveProps as T, mergeProps as E, normalizeClass as D, normalizeProps as O, normalizeStyle as k, onMounted as A, onUnmounted as te, openBlock as j, ref as M, renderList as N, renderSlot as P, shallowRef as ne, toDisplayString as F, unref as I, watch as L, withCtx as R, withKeys as z, withModifiers as B } from "vue";
6
6
  //#endregion
7
7
  //#region ui/EffectTransitionList.vue
8
- var B = /* @__PURE__ */ C({
8
+ var V = /* @__PURE__ */ w({
9
9
  __name: "EffectTransitionList",
10
10
  props: {
11
11
  disabled: {
@@ -15,39 +15,39 @@ var B = /* @__PURE__ */ C({
15
15
  mode: { default: "block" }
16
16
  },
17
17
  setup(e) {
18
- return (t, n) => (A(), g(m, { name: e.disabled ? "" : "nlist" }, {
19
- default: L(() => [N(t.$slots, "default")]),
18
+ return (t, n) => (j(), _(h, { name: e.disabled ? "" : "nlist" }, {
19
+ default: R(() => [P(t.$slots, "default")]),
20
20
  _: 3
21
21
  }, 8, ["name"]));
22
22
  }
23
- }), V = ["data-test-mode"], H = { class: "w-full max-w-xs space-y-12" }, U = {
23
+ }), H = ["data-test-mode"], U = { class: "w-full max-w-xs space-y-12" }, W = {
24
24
  key: 0,
25
25
  class: "text-xs text-theme-400 text-center"
26
- }, W = { class: "text-base font-light text-white text-center" }, G = { class: "space-y-6 relative" }, K = {
26
+ }, G = { class: "text-base font-light text-white text-center" }, K = { class: "space-y-6 relative" }, q = {
27
27
  key: "email-field",
28
28
  class: "w-full"
29
- }, q = {
29
+ }, J = {
30
30
  key: "code-field",
31
31
  class: "w-full"
32
- }, J = /* @__PURE__ */ C({
32
+ }, Y = /* @__PURE__ */ w({
33
33
  __name: "ElAuthGate",
34
34
  props: { sdk: {} },
35
35
  setup(e) {
36
- let n = j({
36
+ let t = M({
37
37
  email: "",
38
38
  code: ""
39
- }), r = j("email"), i = j(!1), a = {
39
+ }), r = M("email"), i = M(!1), a = {
40
40
  email: {
41
41
  title: "Enter Your Email",
42
42
  button: {
43
43
  label: "Continue",
44
- disabled: () => !n.value.email || i.value
44
+ disabled: () => !t.value.email || i.value
45
45
  },
46
46
  action: async () => {
47
47
  if (!i.value) {
48
48
  i.value = !0;
49
49
  try {
50
- await e.sdk.auth.requestAuthCode({ email: n.value.email }) && (r.value = "code");
50
+ await e.sdk.auth.requestAuthCode({ email: t.value.email }) && (r.value = "code");
51
51
  } finally {
52
52
  i.value = !1;
53
53
  }
@@ -58,15 +58,15 @@ var B = /* @__PURE__ */ C({
58
58
  title: "Enter Verification Code",
59
59
  button: {
60
60
  label: "Verify",
61
- disabled: () => n.value.code.length !== 6 || i.value
61
+ disabled: () => t.value.code.length !== 6 || i.value
62
62
  },
63
63
  action: async () => {
64
64
  if (!i.value) {
65
65
  i.value = !0;
66
66
  try {
67
67
  await e.sdk.auth.loginWithCode({
68
- email: n.value.email,
69
- code: n.value.code
68
+ email: t.value.email,
69
+ code: t.value.code
70
70
  });
71
71
  } finally {
72
72
  i.value = !1;
@@ -74,33 +74,33 @@ var B = /* @__PURE__ */ C({
74
74
  }
75
75
  }
76
76
  }
77
- }, o = h(() => a[r.value]);
78
- return I(() => e.sdk.activeUser.value, (e) => {
77
+ }, o = g(() => a[r.value]);
78
+ return L(() => e.sdk.activeUser.value, (e) => {
79
79
  e && r.value === "code" && console.log("[ElAuthGate] Authentication successful", { email: e.email });
80
- }), (i, a) => (A(), v("div", {
80
+ }), (i, a) => (j(), y("div", {
81
81
  "data-test": "auth-form",
82
82
  "data-test-mode": r.value,
83
83
  class: "flex flex-col items-center justify-center h-full p-6"
84
- }, [y("div", H, [
85
- e.sdk.error.value ? (A(), v("p", U, P(e.sdk.error.value), 1)) : _("", !0),
86
- y("h3", W, P(o.value.title), 1),
87
- y("div", G, [S(B, null, {
88
- default: L(() => [r.value === "email" ? (A(), v("div", K, [S(l, {
89
- modelValue: n.value.email,
90
- "onUpdate:modelValue": a[0] || (a[0] = (e) => n.value.email = e),
84
+ }, [b("div", U, [
85
+ e.sdk.error.value ? (j(), y("p", W, F(e.sdk.error.value), 1)) : v("", !0),
86
+ b("h3", G, F(o.value.title), 1),
87
+ b("div", K, [C(V, null, {
88
+ default: R(() => [r.value === "email" ? (j(), y("div", q, [C(u, {
89
+ modelValue: t.value.email,
90
+ "onUpdate:modelValue": a[0] || (a[0] = (e) => t.value.email = e),
91
91
  "data-test": "auth-email-input",
92
- onKeyup: R(o.value.action, ["enter"])
93
- }, null, 8, ["modelValue", "onKeyup"])])) : (A(), v("div", q, [S(t, {
94
- modelValue: n.value.code,
95
- "onUpdate:modelValue": a[1] || (a[1] = (e) => n.value.code = e),
92
+ onKeyup: z(o.value.action, ["enter"])
93
+ }, null, 8, ["modelValue", "onKeyup"])])) : (j(), y("div", J, [C(c, {
94
+ modelValue: t.value.code,
95
+ "onUpdate:modelValue": a[1] || (a[1] = (e) => t.value.code = e),
96
96
  length: 6,
97
97
  "focus-first": !0,
98
98
  "data-test": "auth-code-input",
99
99
  onAutoSubmit: o.value.action
100
- }, null, 8, ["modelValue", "onAutoSubmit"])])), (A(), v("div", {
100
+ }, null, 8, ["modelValue", "onAutoSubmit"])])), (j(), y("div", {
101
101
  key: o.value.button.label,
102
102
  class: "space-y-4 w-full"
103
- }, [S(u, {
103
+ }, [C(n, {
104
104
  theme: "primary",
105
105
  size: "md",
106
106
  class: "w-full",
@@ -109,22 +109,22 @@ var B = /* @__PURE__ */ C({
109
109
  disabled: o.value.button.disabled() || e.sdk.loading.value,
110
110
  onClick: o.value.action
111
111
  }, {
112
- default: L(() => [x(P(o.value.button.label), 1)]),
112
+ default: R(() => [S(F(o.value.button.label), 1)]),
113
113
  _: 1
114
114
  }, 8, [
115
115
  "loading",
116
116
  "disabled",
117
117
  "onClick"
118
- ]), r.value === "code" ? (A(), v("button", {
118
+ ]), r.value === "code" ? (j(), y("button", {
119
119
  key: 0,
120
120
  class: "w-full text-xs text-white/50 hover:text-white/70 transition-colors py-2",
121
121
  onClick: a[2] || (a[2] = (e) => r.value = "email")
122
- }, " Change Email ")) : _("", !0)]))]),
122
+ }, " Change Email ")) : v("", !0)]))]),
123
123
  _: 1
124
124
  })])
125
- ])], 8, V));
125
+ ])], 8, H));
126
126
  }
127
- }), Y = { class: "flex-1 flex flex-col min-h-0 py-6 space-y-6 h-full overflow-scroll [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden relative" }, X = { class: "flex-1 space-y-6 pb-12" }, ie = {
127
+ }), re = { class: "flex-1 flex flex-col min-h-0 py-6 space-y-6 h-full overflow-scroll [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden relative" }, X = { class: "flex-1 space-y-6 pb-12" }, ie = {
128
128
  key: 0,
129
129
  class: "text-sm bg-white/10 backdrop-blur-sm rounded-2xl p-4 border border-white/20 space-y-3"
130
130
  }, ae = ["innerHTML"], oe = {
@@ -136,7 +136,7 @@ var B = /* @__PURE__ */ C({
136
136
  }, le = ["href"], ue = {
137
137
  key: 3,
138
138
  class: "space-y-3"
139
- }, de = { class: "grid grid-cols-2 gap-3" }, fe = ["href"], pe = /* @__PURE__ */ C({
139
+ }, de = { class: "grid grid-cols-2 gap-3" }, fe = ["href"], pe = /* @__PURE__ */ w({
140
140
  __name: "ElAgentAbout",
141
141
  props: {
142
142
  agent: {},
@@ -145,35 +145,35 @@ var B = /* @__PURE__ */ C({
145
145
  default: !1
146
146
  }
147
147
  },
148
- setup(t) {
149
- return (n, r) => (A(), v("div", Y, [S(a, {
150
- agent: t.agent,
151
- "is-online": t.isOnline
152
- }, null, 8, ["agent", "is-online"]), y("div", X, [
153
- t.agent.summary.value ? (A(), v("div", ie, [r[0] || (r[0] = y("h3", { class: "font-medium text-white/50" }, " About ", -1)), y("div", {
148
+ setup(n) {
149
+ return (r, i) => (j(), y("div", re, [C(t, {
150
+ agent: n.agent,
151
+ "is-online": n.isOnline
152
+ }, null, 8, ["agent", "is-online"]), b("div", X, [
153
+ n.agent.summary.value ? (j(), y("div", ie, [i[0] || (i[0] = b("h3", { class: "font-medium text-white/50" }, " About ", -1)), b("div", {
154
154
  class: "text-white/70 leading-relaxed",
155
- innerHTML: t.agent.summary.value
156
- }, null, 8, ae)])) : _("", !0),
157
- t.agent.entityType.value === "company" ? (A(), v("div", oe, [r[1] || (r[1] = y("h3", { class: "text-sm font-medium text-white/90 mb-2" }, " Company Info ", -1)), y("p", se, " This is a company agent representing " + P(t.agent.name.value) + ". ", 1)])) : _("", !0),
158
- t.agent.email.value ? (A(), v("div", ce, [r[3] || (r[3] = y("h3", { class: "text-sm font-medium text-white/90" }, " Contact ", -1)), y("a", {
159
- href: `mailto:${t.agent.email.value}`,
155
+ innerHTML: n.agent.summary.value
156
+ }, null, 8, ae)])) : v("", !0),
157
+ n.agent.entityType.value === "company" ? (j(), y("div", oe, [i[1] || (i[1] = b("h3", { class: "text-sm font-medium text-white/90 mb-2" }, " Company Info ", -1)), b("p", se, " This is a company agent representing " + F(n.agent.name.value) + ". ", 1)])) : v("", !0),
158
+ n.agent.email.value ? (j(), y("div", ce, [i[3] || (i[3] = b("h3", { class: "text-sm font-medium text-white/90" }, " Contact ", -1)), b("a", {
159
+ href: `mailto:${n.agent.email.value}`,
160
160
  target: "_blank",
161
161
  rel: "noopener noreferrer",
162
162
  class: "relative inline-flex items-center justify-center gap-2 rounded-full px-4 py-2 font-medium transition-colors duration-200 focus:outline-none active:opacity-80 cursor-pointer bg-white/5 hover:bg-white/10 border border-white/10 text-white/80 text-sm justify-start h-10 w-full"
163
- }, [...r[2] || (r[2] = [y("span", { class: "i-heroicons-envelope flex items-center size-[1.1em] mt-[-.07em]" }, null, -1), x(" Email ", -1)])], 8, le)])) : _("", !0),
164
- t.agent.accounts.value && t.agent.accounts.value.length > 0 ? (A(), v("div", ue, [r[4] || (r[4] = y("h3", { class: "text-sm font-medium text-white/90" }, " Links ", -1)), y("div", de, [(A(!0), v(f, null, M(t.agent.accounts.value, (t) => (A(), v("a", {
163
+ }, [...i[2] || (i[2] = [b("span", { class: "i-heroicons-envelope flex items-center size-[1.1em] mt-[-.07em]" }, null, -1), S(" Email ", -1)])], 8, le)])) : v("", !0),
164
+ n.agent.accounts.value && n.agent.accounts.value.length > 0 ? (j(), y("div", ue, [i[4] || (i[4] = b("h3", { class: "text-sm font-medium text-white/90" }, " Links ", -1)), b("div", de, [(j(!0), y(p, null, N(n.agent.accounts.value, (t) => (j(), y("a", {
165
165
  key: `${t.platform}-${t.handle}`,
166
- href: F(e)[t.platform].getUrl(t.handle),
166
+ href: I(e)[t.platform].getUrl(t.handle),
167
167
  target: "_blank",
168
168
  rel: "noopener noreferrer",
169
169
  class: "relative inline-flex items-center justify-center gap-2 rounded-full px-4 py-2 font-medium transition-colors duration-200 focus:outline-none active:opacity-80 cursor-pointer bg-white/10 hover:bg-white/20 border border-white/20 text-white/80 text-sm"
170
- }, [y("span", { class: E(["flex items-center size-[1.1em] mt-[-.07em]", F(e)[t.platform].icon]) }, null, 2), x(" " + P(F(e)[t.platform].label), 1)], 8, fe))), 128))])])) : _("", !0)
170
+ }, [b("span", { class: D(["flex items-center size-[1.1em] mt-[-.07em]", I(e)[t.platform].icon]) }, null, 2), S(" " + F(I(e)[t.platform].label), 1)], 8, fe))), 128))])])) : v("", !0)
171
171
  ])]));
172
172
  }
173
173
  }), me = { class: "flex flex-col items-center text-center gap-4" }, he = { class: "relative flex-shrink-0" }, ge = { class: "w-20 h-20 sm:w-24 sm:h-24 rounded-full overflow-hidden border-4 border-white" }, _e = ["src", "alt"], ve = { class: "absolute top-1.5 right-1.5" }, ye = {
174
174
  key: 1,
175
175
  class: "size-4 bg-theme-400 rounded-full ring-2 ring-white"
176
- }, be = { class: "min-w-0" }, xe = { class: "text-3xl font-light text-white mb-2 truncate" }, Se = { class: "text-base font-light text-white/60 line-clamp-1" }, Ce = /* @__PURE__ */ C({
176
+ }, be = { class: "min-w-0" }, xe = { class: "text-3xl font-light text-white mb-2 truncate" }, Se = { class: "text-base font-light text-white/60 line-clamp-1" }, Ce = /* @__PURE__ */ w({
177
177
  __name: "ElAgentHeader",
178
178
  props: {
179
179
  agent: {},
@@ -183,37 +183,37 @@ var B = /* @__PURE__ */ C({
183
183
  }
184
184
  },
185
185
  setup(e) {
186
- return (t, n) => (A(), v("div", me, [y("div", he, [y("div", ge, [y("img", {
186
+ return (t, n) => (j(), y("div", me, [b("div", he, [b("div", ge, [b("img", {
187
187
  src: e.agent.avatarUrl.value,
188
188
  alt: e.agent.displayName.value,
189
189
  class: "w-full h-full object-cover",
190
- onError: n[0] || (n[0] = (...e) => F(o) && F(o)(...e))
191
- }, null, 40, _e)]), y("div", ve, [e.isOnline ? (A(), v(f, { key: 0 }, [n[1] || (n[1] = y("div", {
190
+ onError: n[0] || (n[0] = (...e) => I(f) && I(f)(...e))
191
+ }, null, 40, _e)]), b("div", ve, [e.isOnline ? (j(), y(p, { key: 0 }, [n[1] || (n[1] = b("div", {
192
192
  class: "size-4 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping",
193
193
  style: { "animation-duration": "3s" }
194
- }, null, -1)), n[2] || (n[2] = y("div", { class: "size-4 bg-green-500 rounded-full ring-2 ring-white" }, null, -1))], 64)) : (A(), v("div", ye))])]), y("div", be, [y("h1", xe, P(e.agent.displayName.value), 1), y("p", Se, P(e.agent.title.value), 1)])]));
194
+ }, null, -1)), n[2] || (n[2] = b("div", { class: "size-4 bg-green-500 rounded-full ring-2 ring-white" }, null, -1))], 64)) : (j(), y("div", ye))])]), b("div", be, [b("h1", xe, F(e.agent.displayName.value), 1), b("p", Se, F(e.agent.title.value), 1)])]));
195
195
  }
196
- }), we = { class: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[28px] h-[28px] overflow-hidden" }, Te = /* @__PURE__ */ C({
196
+ }), we = { class: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[28px] h-[28px] overflow-hidden" }, Te = /* @__PURE__ */ w({
197
197
  name: "SelfSidebarClose",
198
198
  __name: "AgentSidebarClose",
199
199
  emits: ["click"],
200
200
  setup(e) {
201
- let t = j(!1);
202
- return k(() => {
201
+ let t = M(!1);
202
+ return A(() => {
203
203
  setTimeout(() => {
204
204
  t.value = !0;
205
205
  }, 100);
206
- }), (e, n) => (A(), v("a", {
206
+ }), (e, n) => (j(), y("a", {
207
207
  class: "close block cursor-pointer w-[60px] h-[60px] rounded-full transition-all duration-1000 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-110 active:scale-90 hover:rotate-90",
208
208
  onClick: n[0] || (n[0] = (t) => e.$emit("click", t))
209
- }, [n[1] || (n[1] = y("span", { class: "absolute inset-0 rounded-full transition-all" }, null, -1)), y("span", we, [y("span", {
210
- class: E(["absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]", t.value ? "translate-y-0 translate-x-0 rotate-45" : "translate-y-[30px] -translate-x-[30px] rotate-0"]),
209
+ }, [n[1] || (n[1] = b("span", { class: "absolute inset-0 rounded-full transition-all" }, null, -1)), b("span", we, [b("span", {
210
+ class: D(["absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]", t.value ? "translate-y-0 translate-x-0 rotate-45" : "translate-y-[30px] -translate-x-[30px] rotate-0"]),
211
211
  style: {
212
212
  "background-color": "currentColor",
213
213
  "transition-delay": "0.15s"
214
214
  }
215
- }, null, 2), y("span", {
216
- class: E(["absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]", t.value ? "translate-y-0 translate-x-0 -rotate-45" : "-translate-y-[30px] -translate-x-[30px] rotate-0"]),
215
+ }, null, 2), b("span", {
216
+ class: D(["absolute h-full w-[3px] rounded-[5px] left-[13px] transition-all duration-[400ms] ease-[cubic-bezier(0.52,0.01,0.16,1)]", t.value ? "translate-y-0 translate-x-0 -rotate-45" : "-translate-y-[30px] -translate-x-[30px] rotate-0"]),
217
217
  style: {
218
218
  "background-color": "currentColor",
219
219
  "transition-delay": "0.45s"
@@ -229,7 +229,7 @@ var B = /* @__PURE__ */ C({
229
229
  }, ke = ["disabled", "onClick"], Ae = { class: "flex items-center gap-3" }, je = { class: "flex-1" }, Me = {
230
230
  key: 0,
231
231
  class: "text-xs text-white/50 mt-0.5"
232
- }, Ne = { class: "p-6" }, Z = /* @__PURE__ */ C({
232
+ }, Ne = { class: "p-6" }, Z = /* @__PURE__ */ w({
233
233
  name: "ElSidebar",
234
234
  inheritAttrs: !1,
235
235
  __name: "ElSidebar",
@@ -242,17 +242,17 @@ var B = /* @__PURE__ */ C({
242
242
  },
243
243
  emits: ["update:modelValue"],
244
244
  setup(e, { emit: t }) {
245
- let n = e, r = t, i = n.position || "left", a = n.widthClasses || "w-[80%] max-w-[300px]", o = h({
245
+ let n = e, r = t, i = n.position || "left", a = n.widthClasses || "w-[80%] max-w-[300px]", o = g({
246
246
  get: () => n.modelValue,
247
247
  set: (e) => r("update:modelValue", e)
248
- }), s = h(() => n.items.filter((e) => !e.isHidden));
248
+ }), s = g(() => n.items.filter((e) => !e.isHidden));
249
249
  function handleItemClick(e) {
250
250
  e.isDisabled || (e.onClick ? e.onClick({
251
251
  item: e,
252
252
  event: new MouseEvent("click")
253
253
  }) : e.href && (e.href.includes("http") ? window.open(e.href, e.target || "_self")?.focus() : window.location.href = e.href), o.value = !1);
254
254
  }
255
- let c = h(() => i === "left" ? {
255
+ let c = g(() => i === "left" ? {
256
256
  enter: "-translate-x-full",
257
257
  leave: "-translate-x-full",
258
258
  position: "justify-start",
@@ -263,7 +263,7 @@ var B = /* @__PURE__ */ C({
263
263
  position: "justify-end",
264
264
  closeButton: "-left-16"
265
265
  });
266
- return (t, n) => (A(), v(f, null, [S(p, {
266
+ return (t, n) => (j(), y(p, null, [C(m, {
267
267
  "enter-active-class": "transition-opacity duration-300 ease-out",
268
268
  "leave-active-class": "transition-opacity duration-200 ease-in",
269
269
  "enter-from-class": "opacity-0",
@@ -271,13 +271,13 @@ var B = /* @__PURE__ */ C({
271
271
  "leave-from-class": "opacity-100",
272
272
  "leave-to-class": "opacity-0"
273
273
  }, {
274
- default: L(() => [o.value ? (A(), v("div", {
274
+ default: R(() => [o.value ? (j(), y("div", {
275
275
  key: 0,
276
276
  class: "absolute inset-0 z-40 bg-black/50 backdrop-blur-sm",
277
277
  onClick: n[0] || (n[0] = (e) => o.value = !1)
278
- })) : _("", !0)]),
278
+ })) : v("", !0)]),
279
279
  _: 1
280
- }), S(p, {
280
+ }), C(m, {
281
281
  "enter-active-class": "transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)]",
282
282
  "leave-active-class": "transition-all duration-400 ease-[cubic-bezier(0.25,1,0.33,1)]",
283
283
  "enter-from-class": c.value.enter,
@@ -285,49 +285,49 @@ var B = /* @__PURE__ */ C({
285
285
  "leave-from-class": "translate-x-0",
286
286
  "leave-to-class": c.value.leave
287
287
  }, {
288
- default: L(() => [o.value ? (A(), v("div", {
288
+ default: R(() => [o.value ? (j(), y("div", {
289
289
  key: 0,
290
- class: E(["absolute inset-0 z-50 flex", c.value.position]),
290
+ class: D(["absolute inset-0 z-50 flex", c.value.position]),
291
291
  onClick: n[3] || (n[3] = (e) => o.value = !1)
292
- }, [y("div", {
293
- class: E(["relative h-full shadow-2xl bg-black/30 backdrop-blur-xl flex flex-col justify-center", F(a)]),
294
- onClick: n[2] || (n[2] = z(() => {}, ["stop"]))
292
+ }, [b("div", {
293
+ class: D(["relative h-full shadow-2xl bg-black/30 backdrop-blur-xl flex flex-col justify-center", I(a)]),
294
+ onClick: n[2] || (n[2] = B(() => {}, ["stop"]))
295
295
  }, [
296
- S(Te, {
297
- class: E(["absolute top-4 z-10 text-white", c.value.closeButton]),
296
+ C(Te, {
297
+ class: D(["absolute top-4 z-10 text-white", c.value.closeButton]),
298
298
  onClick: n[1] || (n[1] = (e) => o.value = !1)
299
299
  }, null, 8, ["class"]),
300
- e.title ? (A(), v("div", Ee, [y("h3", De, P(e.title), 1)])) : _("", !0),
301
- t.$slots.header ? (A(), v("div", Oe, [N(t.$slots, "header")])) : _("", !0),
302
- y("div", { class: E(["flex-1 p-6 space-y-2 overflow-y-auto", {
300
+ e.title ? (j(), y("div", Ee, [b("h3", De, F(e.title), 1)])) : v("", !0),
301
+ t.$slots.header ? (j(), y("div", Oe, [P(t.$slots, "header")])) : v("", !0),
302
+ b("div", { class: D(["flex-1 p-6 space-y-2 overflow-y-auto", {
303
303
  "pt-6": !e.title && !t.$slots.header,
304
304
  "pt-4": e.title || t.$slots.header
305
- }]) }, [S(m, {
305
+ }]) }, [C(h, {
306
306
  "enter-active-class": "transition-all duration-400 ease-[cubic-bezier(0.25,1,0.33,1)]",
307
307
  "leave-active-class": "transition-all duration-200 ease-[cubic-bezier(0.25,1,0.33,1)]",
308
- "enter-from-class": F(i) === "left" ? "-translate-x-4 opacity-0" : "translate-x-4 opacity-0",
308
+ "enter-from-class": I(i) === "left" ? "-translate-x-4 opacity-0" : "translate-x-4 opacity-0",
309
309
  "enter-to-class": "translate-x-0 opacity-100",
310
310
  "leave-from-class": "translate-x-0 opacity-100",
311
- "leave-to-class": F(i) === "left" ? "-translate-x-4 opacity-0" : "translate-x-4 opacity-0"
311
+ "leave-to-class": I(i) === "left" ? "-translate-x-4 opacity-0" : "translate-x-4 opacity-0"
312
312
  }, {
313
- default: L(() => [(A(!0), v(f, null, M(s.value, (e, t) => (A(), v("button", {
313
+ default: R(() => [(j(!0), y(p, null, N(s.value, (e, t) => (j(), y("button", {
314
314
  key: e.key || e.label || t,
315
- style: O({ transitionDelay: `${t * 40}ms` }),
316
- class: E(["cursor-pointer w-full text-left p-3 rounded-xl transition-all duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group", [e.isActive ? "bg-primary-500/20 border border-primary-500/40" : "hover:bg-white/10", e.isDisabled && "opacity-50 cursor-not-allowed"]]),
315
+ style: k({ transitionDelay: `${t * 40}ms` }),
316
+ class: D(["cursor-pointer w-full text-left p-3 rounded-xl transition-all duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group", [e.isActive ? "bg-primary-500/20 border border-primary-500/40" : "hover:bg-white/10", e.isDisabled && "opacity-50 cursor-not-allowed"]]),
317
317
  disabled: e.isDisabled,
318
318
  onClick: (t) => handleItemClick(e)
319
- }, [y("div", Ae, [e.icon?.src ? (A(), v("i", {
319
+ }, [b("div", Ae, [e.icon?.src ? (j(), y("i", {
320
320
  key: 0,
321
- class: E(["size-5 flex-shrink-0 transition-transform duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group-hover:scale-110", [e.icon.src, e.isActive ? "text-primary-400" : "text-white/70 group-hover:text-white"]])
322
- }, null, 2)) : _("", !0), y("div", je, [y("div", { class: E(["font-medium text-sm", e.isActive ? "text-primary-300" : "text-white"]) }, P(e.label), 3), e.subLabel ? (A(), v("div", Me, P(e.subLabel), 1)) : _("", !0)])])], 14, ke))), 128))]),
321
+ class: D(["size-5 flex-shrink-0 transition-transform duration-200 ease-[cubic-bezier(0.25,1,0.33,1)] group-hover:scale-110", [e.icon.src, e.isActive ? "text-primary-400" : "text-white/70 group-hover:text-white"]])
322
+ }, null, 2)) : v("", !0), b("div", je, [b("div", { class: D(["font-medium text-sm", e.isActive ? "text-primary-300" : "text-white"]) }, F(e.label), 3), e.subLabel ? (j(), y("div", Me, F(e.subLabel), 1)) : v("", !0)])])], 14, ke))), 128))]),
323
323
  _: 1
324
324
  }, 8, ["enter-from-class", "leave-to-class"])], 2),
325
- y("div", Ne, [N(t.$slots, "footer")])
326
- ], 2)], 2)) : _("", !0)]),
325
+ b("div", Ne, [P(t.$slots, "footer")])
326
+ ], 2)], 2)) : v("", !0)]),
327
327
  _: 3
328
328
  }, 8, ["enter-from-class", "leave-to-class"])], 64));
329
329
  }
330
- }), Pe = /* @__PURE__ */ C({
330
+ }), Pe = /* @__PURE__ */ w({
331
331
  name: "AgentModeSidebar",
332
332
  __name: "ElAgentModeSidebar",
333
333
  props: {
@@ -336,28 +336,28 @@ var B = /* @__PURE__ */ C({
336
336
  },
337
337
  emits: ["update:modelValue"],
338
338
  setup(e, { emit: t }) {
339
- let n = e, r = t, a = h({
339
+ let n = e, r = t, i = g({
340
340
  get: () => n.modelValue,
341
341
  set: (e) => r("update:modelValue", e)
342
- }), o = h(() => n.chatController?.agentMode?.value ?? "self"), s = h(() => i.map((e) => ({
342
+ }), a = g(() => n.chatController?.agentMode?.value ?? "self"), o = g(() => l.map((e) => ({
343
343
  key: e.mode,
344
344
  icon: { src: e.icon },
345
345
  label: e.label,
346
- isActive: o.value === e.mode,
346
+ isActive: a.value === e.mode,
347
347
  onClick: () => {
348
348
  n.chatController?.setMode(e.mode);
349
349
  }
350
350
  })));
351
- return (e, t) => (A(), g(Z, {
352
- modelValue: a.value,
353
- "onUpdate:modelValue": t[0] || (t[0] = (e) => a.value = e),
354
- items: s.value,
351
+ return (e, t) => (j(), _(Z, {
352
+ modelValue: i.value,
353
+ "onUpdate:modelValue": t[0] || (t[0] = (e) => i.value = e),
354
+ items: o.value,
355
355
  position: "right",
356
356
  title: "Mode",
357
357
  "width-classes": "w-[80%] max-w-[255px]"
358
358
  }, null, 8, ["modelValue", "items"]));
359
359
  }
360
- }), Fe = /* @__PURE__ */ C({
360
+ }), Fe = /* @__PURE__ */ w({
361
361
  name: "AgentSidebar",
362
362
  __name: "ElAgentSidebar",
363
363
  props: {
@@ -368,10 +368,10 @@ var B = /* @__PURE__ */ C({
368
368
  },
369
369
  emits: ["update:modelValue"],
370
370
  setup(e, { emit: t }) {
371
- let n = e, r = t, i = h({
371
+ let n = e, r = t, i = g({
372
372
  get: () => n.modelValue,
373
373
  set: (e) => r("update:modelValue", e)
374
- }), a = h(() => {
374
+ }), a = g(() => {
375
375
  let e = [
376
376
  {
377
377
  key: "share",
@@ -410,7 +410,7 @@ var B = /* @__PURE__ */ C({
410
410
  }
411
411
  }), e;
412
412
  });
413
- return (t, n) => (A(), g(Z, {
413
+ return (t, n) => (j(), _(Z, {
414
414
  modelValue: i.value,
415
415
  "onUpdate:modelValue": n[0] || (n[0] = (e) => i.value = e),
416
416
  items: a.value,
@@ -452,7 +452,7 @@ var B = /* @__PURE__ */ C({
452
452
  }, Qe = { class: "text-center max-w-md space-y-4" }, $e = { class: "text-sm text-white/70 leading-relaxed" }, et = {
453
453
  key: 3,
454
454
  class: "bg-white/10 backdrop-blur-sm text-white/70 flex items-center justify-center h-full"
455
- }, $ = /* @__PURE__ */ C({
455
+ }, $ = /* @__PURE__ */ w({
456
456
  __name: "AgentChat",
457
457
  props: {
458
458
  sdk: {},
@@ -487,19 +487,28 @@ var B = /* @__PURE__ */ C({
487
487
  default: !1
488
488
  },
489
489
  emptyStateMessage: {},
490
- suggestedPrompts: { default: () => [] }
490
+ suggestedPrompts: { default: () => [] },
491
+ createVoiceClientFn: { type: Function }
491
492
  },
492
- emits: ["close", "error"],
493
- setup(t, { emit: o }) {
494
- let l = o, d = re(), p = j(!1), m = j(!1), C = j(), T = j(), R = h(() => d.value?.agentMode?.value ?? "self"), B = h(() => d.value?.textState.value.isConnected ?? !1), V = h(() => t.sdk.activeUser.value !== void 0), H = h(() => i.find((e) => e.mode === R.value));
493
+ emits: [
494
+ "close",
495
+ "error",
496
+ "turnStarted",
497
+ "turnCompleted"
498
+ ],
499
+ setup(c, { emit: u }) {
500
+ let d = u, f = ne(), m = M(!1), h = M(!1), w = M(), E = M(), z = g(() => f.value?.agentMode?.value ?? "self"), V = g(() => f.value?.textState.value.isConnected ?? !1), H = g(() => c.sdk.activeUser.value !== void 0), U = g(() => l.find((e) => e.mode === z.value));
495
501
  function createChatController() {
496
- d.value && d.value.destroy();
502
+ f.value && f.value.destroy();
497
503
  try {
498
- d.value = new r({
499
- sdk: t.sdk,
500
- agent: t.agent,
501
- context: t.context,
502
- firstMessage: t.firstMessage
504
+ f.value = new i({
505
+ sdk: c.sdk,
506
+ agent: c.agent,
507
+ context: c.context,
508
+ firstMessage: c.firstMessage,
509
+ ...c.createVoiceClientFn ? { createVoiceClientFn: c.createVoiceClientFn } : {},
510
+ onTurnStarted: () => d("turnStarted"),
511
+ onTurnCompleted: (e) => d("turnCompleted", e)
503
512
  });
504
513
  } catch (e) {
505
514
  throw console.error("AgentChatController creation failed:", e), e;
@@ -509,105 +518,105 @@ var B = /* @__PURE__ */ C({
509
518
  createChatController();
510
519
  } catch (e) {
511
520
  let t = e instanceof Error ? e.message : "Couldn't initialize your assistant";
512
- C.value = t, l("error", t);
521
+ w.value = t, d("error", t);
513
522
  }
514
523
  function applyTheme(e) {
515
- if (!T.value) return;
516
- let t = te(e);
524
+ if (!E.value) return;
525
+ let t = ee(e);
517
526
  Object.entries(t).forEach(([e, t]) => {
518
- T.value.style.setProperty(`--primary-${e}`, t);
527
+ E.value.style.setProperty(`--primary-${e}`, t);
519
528
  });
520
529
  }
521
- k(() => {
530
+ A(() => {
522
531
  try {
523
- applyTheme(t.theme), t.chatOnly && d.value && d.value.setMode("chat");
532
+ applyTheme(c.theme), c.chatOnly && f.value && f.value.setMode("chat");
524
533
  } catch (e) {
525
534
  let t = e instanceof Error ? e.message : "Couldn't initialize your assistant";
526
- C.value = t, l("error", t);
535
+ w.value = t, d("error", t);
527
536
  }
528
- }), ne(() => {
529
- d.value && d.value.destroy();
530
- }), I(() => t.theme, (e) => {
537
+ }), te(() => {
538
+ f.value && f.value.destroy();
539
+ }), L(() => c.theme, (e) => {
531
540
  applyTheme(e);
532
- }), I(() => t.sdk.activeUser.value, (e, t) => {
533
- t && !e && d.value && d.value.setMode("self");
541
+ }), L(() => c.sdk.activeUser.value, (e, t) => {
542
+ t && !e && f.value && f.value.setMode("self");
534
543
  });
535
- let U = h(() => !!(t.agent.cover.value?.src && t.agent.cover.value?.quality === "low") || !!(t.agent.avatar.value?.src && t.agent.avatar.value?.quality === "low")), W = h(() => {
536
- let e = [U.value ? "backdrop-blur-sm" : ""];
537
- return U.value && R.value === "self" ? e.push("from-black/80 via-black/60 to-black/80") : R.value === "self" ? e.push("from-black/70 via-black/50 to-black/80") : e.push("from-black/90 via-black/90 to-black/100"), e.join(" ");
538
- }), G = {
544
+ let W = g(() => !!(c.agent.cover.value?.src && c.agent.cover.value?.quality === "low") || !!(c.agent.avatar.value?.src && c.agent.avatar.value?.quality === "low")), G = g(() => {
545
+ let e = [W.value ? "backdrop-blur-sm" : ""];
546
+ return W.value && z.value === "self" ? e.push("from-black/80 via-black/60 to-black/80") : z.value === "self" ? e.push("from-black/70 via-black/50 to-black/80") : e.push("from-black/90 via-black/90 to-black/100"), e.join(" ");
547
+ }), K = {
539
548
  phone: "i-heroicons-phone",
540
549
  calendar: "i-heroicons-calendar",
541
550
  question: "i-heroicons-question-mark-circle",
542
551
  message: "i-heroicons-chat-bubble-left-right",
543
552
  sparkles: "i-heroicons-sparkles"
544
- }, K = h(() => ee({
545
- template: t.buttonText || "Talk to {name}",
546
- agent: t.agent.toConfig()
547
- })), q = h(() => G[t.buttonIcon || "phone"] || G.phone);
548
- return (r, i) => (A(), v("div", {
553
+ }, q = g(() => r({
554
+ template: c.buttonText || "Talk to {name}",
555
+ agent: c.agent.toConfig()
556
+ })), J = g(() => K[c.buttonIcon || "phone"] || K.phone);
557
+ return (r, i) => (j(), y("div", {
549
558
  ref_key: "rootElement",
550
- ref: T,
551
- key: F(n)(t.agent.toConfig()),
559
+ ref: E,
560
+ key: I(o)(c.agent.toConfig()),
552
561
  class: "pagelines-sdk @container/agent pagelines-agent w-full h-full overflow-hidden relative",
553
562
  "data-test": "agent-chat"
554
563
  }, [
555
- t.loading ? (A(), v("div", Ie, [S(s, { class: "text-white size-8" })])) : t.agent && !C.value ? (A(), v("div", {
564
+ c.loading ? (j(), y("div", Ie, [C(a, { class: "text-white size-8" })])) : c.agent && !w.value ? (j(), y("div", {
556
565
  key: 1,
557
- class: E(["absolute inset-0", t.bare ? "bg-theme-0" : "bg-cover bg-center bg-no-repeat"]),
558
- style: O(t.bare ? void 0 : { backgroundImage: `url(${F(n)(t.agent.toConfig())})` }),
559
- "data-quality": t.agent.avatar.value?.quality || "none"
560
- }, [t.bare ? _("", !0) : (A(), v("div", {
566
+ class: D(["absolute inset-0", c.bare ? "bg-theme-0" : "bg-cover bg-center bg-no-repeat"]),
567
+ style: k(c.bare ? void 0 : { backgroundImage: `url(${I(o)(c.agent.toConfig())})` }),
568
+ "data-quality": c.agent.avatar.value?.quality || "none"
569
+ }, [c.bare ? v("", !0) : (j(), y("div", {
561
570
  key: 0,
562
- class: E(["absolute inset-0 bg-gradient-to-br z-0", W.value])
563
- }, null, 2)), y("div", { class: E(["relative z-10 flex flex-col h-full transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] will-change-transform", t.isActive ? "opacity-100 translate-y-0" : "opacity-0 translate-y-2"]) }, [!t.bare || t.hasClose ? (A(), v("div", {
571
+ class: D(["absolute inset-0 bg-gradient-to-br z-0", G.value])
572
+ }, null, 2)), b("div", { class: D(["relative z-10 flex flex-col h-full transition-all duration-500 ease-[cubic-bezier(0.25,1,0.33,1)] will-change-transform", c.isActive ? "opacity-100 translate-y-0" : "opacity-0 translate-y-2"]) }, [!c.bare || c.hasClose ? (j(), y("div", {
564
573
  key: 0,
565
- class: E(["relative z-30 p-2", !t.bare && R.value !== "self" ? "backdrop-blur-lg" : ""])
566
- }, [t.chatOnly ? (A(), v("div", {
574
+ class: D(["relative z-30 p-2", !c.bare && z.value !== "self" ? "backdrop-blur-lg" : ""])
575
+ }, [c.chatOnly ? (j(), y("div", {
567
576
  key: 0,
568
- class: E(["flex items-center", t.bare ? "justify-end" : ""])
569
- }, [t.bare ? _("", !0) : (A(), v("div", Re, [y("img", {
570
- src: F(n)(t.agent.toConfig()),
571
- alt: t.agent.displayName.value,
577
+ class: D(["flex items-center", c.bare ? "justify-end" : ""])
578
+ }, [c.bare ? v("", !0) : (j(), y("div", Re, [b("img", {
579
+ src: I(o)(c.agent.toConfig()),
580
+ alt: c.agent.displayName.value,
572
581
  class: "size-8 rounded-full object-cover"
573
- }, null, 8, ze), y("span", Be, P(t.agent.displayName.value), 1)])), t.hasClose ? (A(), v("div", Ve, [y("button", {
574
- class: E(["flex cursor-pointer items-center rounded-2xl p-3 transition-colors", t.bare ? "text-theme-500 hover:bg-theme-50" : "text-white/70 hover:bg-white/10"]),
575
- onClick: i[0] || (i[0] = z((e) => l("close", "button"), ["stop"]))
576
- }, [...i[7] || (i[7] = [y("i", { class: "size-6 i-tabler-x" }, null, -1)])], 2)])) : _("", !0)], 2)) : (A(), v("div", {
582
+ }, null, 8, ze), b("span", Be, F(c.agent.displayName.value), 1)])), c.hasClose ? (j(), y("div", Ve, [b("button", {
583
+ class: D(["flex cursor-pointer items-center rounded-2xl p-3 transition-colors", c.bare ? "text-theme-500 hover:bg-theme-50" : "text-white/70 hover:bg-white/10"]),
584
+ onClick: i[0] || (i[0] = B((e) => d("close", "button"), ["stop"]))
585
+ }, [...i[7] || (i[7] = [b("i", { class: "size-6 i-tabler-x" }, null, -1)])], 2)])) : v("", !0)], 2)) : (j(), y("div", {
577
586
  key: 1,
578
- class: E(["flex items-center", t.hasClose ? "" : "justify-between"])
587
+ class: D(["flex items-center", c.hasClose ? "" : "justify-between"])
579
588
  }, [
580
- y("div", { class: E(t.hasClose ? "flex-1 basis-0" : "") }, [y("button", {
589
+ b("div", { class: D(c.hasClose ? "flex-1 basis-0" : "") }, [b("button", {
581
590
  class: "cursor-pointer p-2 flex items-center gap-2 rounded-2xl text-white/70 hover:bg-white/10 transition-all duration-300 ease-[cubic-bezier(0.25,1,0.33,1)] hover:scale-105 active:scale-95",
582
- onClick: i[1] || (i[1] = (e) => p.value = !0)
583
- }, [...i[8] || (i[8] = [y("i", { class: "i-tabler-menu size-7" }, null, -1)])])], 2),
584
- y("button", {
585
- class: E(["flex items-center gap-2 px-3.5 py-3 rounded-2xl text-white/90 hover:bg-white/10 transition-all cursor-pointer flex-grow-0", { "bg-white/10": m.value }]),
586
- onClick: i[2] || (i[2] = (e) => m.value = !0)
591
+ onClick: i[1] || (i[1] = (e) => m.value = !0)
592
+ }, [...i[8] || (i[8] = [b("i", { class: "i-tabler-menu size-7" }, null, -1)])])], 2),
593
+ b("button", {
594
+ class: D(["flex items-center gap-2 px-3.5 py-3 rounded-2xl text-white/90 hover:bg-white/10 transition-all cursor-pointer flex-grow-0", { "bg-white/10": h.value }]),
595
+ onClick: i[2] || (i[2] = (e) => h.value = !0)
587
596
  }, [
588
- y("i", { class: E([H.value?.icon, "size-4 opacity-60"]) }, null, 2),
589
- y("span", He, P(H.value?.label), 1),
590
- i[9] || (i[9] = y("i", { class: "i-tabler-chevron-down size-4" }, null, -1))
597
+ b("i", { class: D([U.value?.icon, "size-4 opacity-60"]) }, null, 2),
598
+ b("span", He, F(U.value?.label), 1),
599
+ i[9] || (i[9] = b("i", { class: "i-tabler-chevron-down size-4" }, null, -1))
591
600
  ], 2),
592
- t.hasClose ? (A(), v("div", Q, [y("button", {
601
+ c.hasClose ? (j(), y("div", Q, [b("button", {
593
602
  class: "cursor-pointer flex items-center p-3 rounded-2xl text-white/70 hover:bg-white/10 transition-colors",
594
- onClick: i[3] || (i[3] = z((e) => l("close", "button"), ["stop"]))
595
- }, [...i[10] || (i[10] = [y("i", { class: "size-6 i-tabler-x" }, null, -1)])])])) : _("", !0)
596
- ], 2))], 2)) : _("", !0), t.chatOnly ? (A(), v("div", {
603
+ onClick: i[3] || (i[3] = B((e) => d("close", "button"), ["stop"]))
604
+ }, [...i[10] || (i[10] = [b("i", { class: "size-6 i-tabler-x" }, null, -1)])])])) : v("", !0)
605
+ ], 2))], 2)) : v("", !0), c.chatOnly ? (j(), y("div", {
597
606
  key: 1,
598
- class: E(["relative z-20 flex min-h-0 w-full flex-1 flex-col", t.bare ? "bg-theme-0" : "px-4"])
599
- }, [y("div", { class: E(["min-h-0 w-full flex-1", t.bare ? "" : "mx-auto max-w-md"]) }, [S(c, {
600
- "chat-controller": d.value,
601
- agent: t.agent,
602
- scope: V.value ? "private" : "public",
603
- "empty-state-message": t.emptyStateMessage,
604
- "suggested-prompts": t.suggestedPrompts,
605
- variant: t.bare ? "light" : "dark",
606
- "show-header": !t.bare,
607
- centered: t.bare
608
- }, b({ _: 2 }, [r.$slots["empty-heading"] ? {
607
+ class: D(["relative z-20 flex min-h-0 w-full flex-1 flex-col", c.bare ? "bg-theme-0" : "px-4"])
608
+ }, [b("div", { class: D(["min-h-0 w-full flex-1", c.bare ? "" : "mx-auto max-w-md"]) }, [C(s, {
609
+ "chat-controller": f.value,
610
+ agent: c.agent,
611
+ scope: H.value ? "private" : "public",
612
+ "empty-state-message": c.emptyStateMessage,
613
+ "suggested-prompts": c.suggestedPrompts,
614
+ variant: c.bare ? "light" : "dark",
615
+ "show-header": !c.bare,
616
+ centered: c.bare
617
+ }, x({ _: 2 }, [r.$slots["empty-heading"] ? {
609
618
  name: "empty-heading",
610
- fn: L((e) => [N(r.$slots, "empty-heading", D(w(e)))]),
619
+ fn: R((e) => [P(r.$slots, "empty-heading", O(T(e)))]),
611
620
  key: "0"
612
621
  } : void 0]), 1032, [
613
622
  "chat-controller",
@@ -618,61 +627,61 @@ var B = /* @__PURE__ */ C({
618
627
  "variant",
619
628
  "show-header",
620
629
  "centered"
621
- ])], 2)], 2)) : (A(), v(f, { key: 2 }, [R.value === "self" ? (A(), v("div", Ue, [
622
- i[11] || (i[11] = y("div", { class: "flex-1 basis-0 mb-12" }, null, -1)),
623
- S(Ce, {
624
- agent: t.agent,
625
- "is-online": B.value
630
+ ])], 2)], 2)) : (j(), y(p, { key: 2 }, [z.value === "self" ? (j(), y("div", Ue, [
631
+ i[11] || (i[11] = b("div", { class: "flex-1 basis-0 mb-12" }, null, -1)),
632
+ C(Ce, {
633
+ agent: c.agent,
634
+ "is-online": V.value
626
635
  }, null, 8, ["agent", "is-online"]),
627
- y("div", We, [S(u, {
636
+ b("div", We, [C(n, {
628
637
  theme: "primary",
629
638
  size: "lg",
630
639
  class: "w-full",
631
- icon: q.value,
640
+ icon: J.value,
632
641
  "data-test": "voice-button",
633
- onClick: i[4] || (i[4] = (e) => d.value?.setMode("talk"))
642
+ onClick: i[4] || (i[4] = (e) => f.value?.setMode("talk"))
634
643
  }, {
635
- default: L(() => [x(P(K.value), 1)]),
644
+ default: R(() => [S(F(q.value), 1)]),
636
645
  _: 1
637
- }, 8, ["icon"]), t.agent.accounts.value && t.agent.accounts.value.length > 0 ? (A(), v("div", Ge, [(A(!0), v(f, null, M((t.agent.accounts.value || []).filter((t) => F(e)[t.platform]), (t) => (A(), v("a", {
646
+ }, 8, ["icon"]), c.agent.accounts.value && c.agent.accounts.value.length > 0 ? (j(), y("div", Ge, [(j(!0), y(p, null, N((c.agent.accounts.value || []).filter((t) => I(e)[t.platform]), (t) => (j(), y("a", {
638
647
  key: `${t.platform}-${t.handle}`,
639
- href: F(e)[t.platform].getUrl(t.handle),
648
+ href: I(e)[t.platform].getUrl(t.handle),
640
649
  target: "_blank",
641
650
  class: "size-12 rounded-full text-white/60 hover:text-white hover:bg-white/5 border border-white/0 hover:border-white/10 flex items-center justify-center transition-all duration-200 hover:scale-105"
642
- }, [y("i", { class: E([F(e)[t.platform].icon, "size-5"]) }, null, 2)], 8, Ke))), 128))])) : _("", !0)])
643
- ])) : R.value === "talk" ? (A(), v("div", qe, [t.requireAuth && !V.value ? (A(), g(J, {
651
+ }, [b("i", { class: D([I(e)[t.platform].icon, "size-5"]) }, null, 2)], 8, Ke))), 128))])) : v("", !0)])
652
+ ])) : z.value === "talk" ? (j(), y("div", qe, [c.requireAuth && !H.value ? (j(), _(Y, {
644
653
  key: 0,
645
- sdk: t.sdk
646
- }, null, 8, ["sdk"])) : (A(), v(f, { key: 1 }, [y("div", null, [y("div", Je, [S(a, {
647
- agent: t.agent,
648
- "is-online": B.value
649
- }, null, 8, ["agent", "is-online"])])]), S(c, {
650
- "chat-controller": d.value,
651
- agent: t.agent
652
- }, null, 8, ["chat-controller", "agent"])], 64))])) : (A(), v("div", Ye, [y("div", Xe, [R.value === "chat" ? (A(), v(f, { key: 0 }, [t.requireAuth && !V.value ? (A(), g(J, {
654
+ sdk: c.sdk
655
+ }, null, 8, ["sdk"])) : (j(), y(p, { key: 1 }, [b("div", null, [b("div", Je, [C(t, {
656
+ agent: c.agent,
657
+ "is-online": V.value
658
+ }, null, 8, ["agent", "is-online"])])]), C(s, {
659
+ "chat-controller": f.value,
660
+ agent: c.agent
661
+ }, null, 8, ["chat-controller", "agent"])], 64))])) : (j(), y("div", Ye, [b("div", Xe, [z.value === "chat" ? (j(), y(p, { key: 0 }, [c.requireAuth && !H.value ? (j(), _(Y, {
653
662
  key: 0,
654
- sdk: t.sdk
655
- }, null, 8, ["sdk"])) : (A(), g(c, {
663
+ sdk: c.sdk
664
+ }, null, 8, ["sdk"])) : (j(), _(s, {
656
665
  key: 1,
657
- "chat-controller": d.value,
658
- agent: t.agent,
666
+ "chat-controller": f.value,
667
+ agent: c.agent,
659
668
  "show-header": ""
660
- }, null, 8, ["chat-controller", "agent"]))], 64)) : R.value === "info" ? (A(), g(pe, {
669
+ }, null, 8, ["chat-controller", "agent"]))], 64)) : z.value === "info" ? (j(), _(pe, {
661
670
  key: 1,
662
- agent: t.agent,
663
- "is-online": B.value
664
- }, null, 8, ["agent", "is-online"])) : _("", !0)])]))], 64))], 2)], 14, Le)) : C.value ? (A(), v("div", Ze, [y("div", Qe, [
665
- i[12] || (i[12] = y("div", { class: "flex justify-center" }, [y("div", { class: "rounded-full bg-red-500/20 flex items-center justify-center size-10" }, [y("i", { class: "i-tabler-alert-circle size-6 text-red-400" })])], -1)),
666
- i[13] || (i[13] = y("h3", { class: "text-lg font-medium" }, " Agent Error ", -1)),
667
- y("p", $e, P(C.value), 1)
668
- ])])) : (A(), v("div", et, " Couldn't load your assistant. Please try again later. ")),
669
- t.chatOnly ? _("", !0) : (A(), g(Fe, {
671
+ agent: c.agent,
672
+ "is-online": V.value
673
+ }, null, 8, ["agent", "is-online"])) : v("", !0)])]))], 64))], 2)], 14, Le)) : w.value ? (j(), y("div", Ze, [b("div", Qe, [
674
+ i[12] || (i[12] = b("div", { class: "flex justify-center" }, [b("div", { class: "rounded-full bg-red-500/20 flex items-center justify-center size-10" }, [b("i", { class: "i-tabler-alert-circle size-6 text-red-400" })])], -1)),
675
+ i[13] || (i[13] = b("h3", { class: "text-lg font-medium" }, " Agent Error ", -1)),
676
+ b("p", $e, F(w.value), 1)
677
+ ])])) : (j(), y("div", et, " Couldn't load your assistant. Please try again later. ")),
678
+ c.chatOnly ? v("", !0) : (j(), _(Fe, {
670
679
  key: 4,
671
- modelValue: p.value,
672
- "onUpdate:modelValue": i[5] || (i[5] = (e) => p.value = e),
673
- agent: t.agent,
674
- sdk: t.sdk,
675
- title: t.agent.displayName.value,
680
+ modelValue: m.value,
681
+ "onUpdate:modelValue": i[5] || (i[5] = (e) => m.value = e),
682
+ agent: c.agent,
683
+ sdk: c.sdk,
684
+ title: c.agent.displayName.value,
676
685
  "data-test": "agent-sidebar"
677
686
  }, null, 8, [
678
687
  "modelValue",
@@ -680,16 +689,16 @@ var B = /* @__PURE__ */ C({
680
689
  "sdk",
681
690
  "title"
682
691
  ])),
683
- t.chatOnly ? _("", !0) : (A(), g(Pe, {
692
+ c.chatOnly ? v("", !0) : (j(), _(Pe, {
684
693
  key: 5,
685
- modelValue: m.value,
686
- "onUpdate:modelValue": i[6] || (i[6] = (e) => m.value = e),
687
- "chat-controller": d.value,
694
+ modelValue: h.value,
695
+ "onUpdate:modelValue": i[6] || (i[6] = (e) => h.value = e),
696
+ "chat-controller": f.value,
688
697
  "data-test": "agent-mode-sidebar"
689
698
  }, null, 8, ["modelValue", "chat-controller"]))
690
699
  ]));
691
700
  }
692
- }), tt = /* @__PURE__ */ C({
701
+ }), tt = /* @__PURE__ */ w({
693
702
  __name: "AgentProvider",
694
703
  props: {
695
704
  sdk: {},
@@ -707,11 +716,16 @@ var B = /* @__PURE__ */ C({
707
716
  emptyStateMessage: {},
708
717
  suggestedPrompts: {}
709
718
  },
710
- emits: ["close", "error"],
719
+ emits: [
720
+ "close",
721
+ "error",
722
+ "turnStarted",
723
+ "turnCompleted"
724
+ ],
711
725
  setup(e, { emit: t }) {
712
726
  let n = e, r = t;
713
- return (e, t) => (A(), g(d, T(n, { class: "agent-provider size-full relative" }), {
714
- default: L((i) => [S($, {
727
+ return (e, t) => (j(), _(d, E(n, { class: "agent-provider size-full relative" }), {
728
+ default: R((i) => [C($, {
715
729
  sdk: i.sdk,
716
730
  agent: i.agent,
717
731
  context: i.context,
@@ -726,10 +740,12 @@ var B = /* @__PURE__ */ C({
726
740
  "is-active": !0,
727
741
  class: "size-full",
728
742
  onClose: t[0] || (t[0] = (e) => r("close", e)),
729
- onError: t[1] || (t[1] = (e) => r("error", e))
730
- }, b({ _: 2 }, [e.$slots["empty-heading"] ? {
743
+ onError: t[1] || (t[1] = (e) => r("error", e)),
744
+ onTurnStarted: t[2] || (t[2] = (e) => r("turnStarted")),
745
+ onTurnCompleted: t[3] || (t[3] = (e) => r("turnCompleted", e))
746
+ }, x({ _: 2 }, [e.$slots["empty-heading"] ? {
731
747
  name: "empty-heading",
732
- fn: L((t) => [N(e.$slots, "empty-heading", D(w(t)))]),
748
+ fn: R((t) => [P(e.$slots, "empty-heading", O(T(t)))]),
733
749
  key: "0"
734
750
  } : void 0]), 1032, [
735
751
  "sdk",