@belonguniverseai/react-sdk 0.1.8 → 0.3.0
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 +19 -0
- package/dist/api/client.d.ts +122 -0
- package/dist/api/retry-fetch.d.ts +58 -0
- package/dist/app/CallScreen.d.ts +6 -0
- package/dist/component/{arc-BZj9pfle.js → arc-CMhGaHbE.js} +2 -2
- package/dist/component/{architectureDiagram-3BPJPVTR-DYVPejo6.js → architectureDiagram-3BPJPVTR-BPbeN6Nl.js} +3 -3
- package/dist/component/{blockDiagram-GPEHLZMM-Cqht4SXD.js → blockDiagram-GPEHLZMM-BVn0uHLE.js} +4 -4
- package/dist/component/{c4Diagram-AAUBKEIU-Dw8BtNVv.js → c4Diagram-AAUBKEIU-D3XBTnJa.js} +3 -3
- package/dist/component/{channel-BcdBKo26.js → channel-DpI8-a3_.js} +2 -2
- package/dist/component/{chunk-2J33WTMH-j6gfAyGs.js → chunk-2J33WTMH-Bqhv40NQ.js} +2 -2
- package/dist/component/{chunk-4BX2VUAB-DiX7q4eX.js → chunk-4BX2VUAB-DtucQWno.js} +2 -2
- package/dist/component/{chunk-55IACEB6-CgTvaBsI.js → chunk-55IACEB6-CWb5s5u5.js} +2 -2
- package/dist/component/{chunk-727SXJPM-Bfq_QRBE.js → chunk-727SXJPM-C83L2sLw.js} +6 -6
- package/dist/component/{chunk-AQP2D5EJ-ClrornzZ.js → chunk-AQP2D5EJ-D00bX5Fy.js} +4 -4
- package/dist/component/{chunk-FMBD7UC4-WZfa6aDS.js → chunk-FMBD7UC4-CR6LCs0Q.js} +2 -2
- package/dist/component/{chunk-ND2GUHAM-Cto8_209.js → chunk-ND2GUHAM-DUfRBvcM.js} +2 -2
- package/dist/component/{chunk-QZHKN3VN-CM6Lx0p-.js → chunk-QZHKN3VN-ZyFUERub.js} +2 -2
- package/dist/component/{classDiagram-4FO5ZUOK-BdDf650t.js → classDiagram-4FO5ZUOK-nhACsjTQ.js} +3 -3
- package/dist/component/{classDiagram-v2-Q7XG4LA2-BdDf650t.js → classDiagram-v2-Q7XG4LA2-nhACsjTQ.js} +3 -3
- package/dist/component/{cose-bilkent-S5V4N54A-BTkoGwqd.js → cose-bilkent-S5V4N54A-CNyhXSKg.js} +2 -2
- package/dist/component/{dagre-BM42HDAG-Cm9Q4GTR.js → dagre-BM42HDAG-Dr_3n4A9.js} +2 -2
- package/dist/component/{diagram-2AECGRRQ-BG7WS0_C.js → diagram-2AECGRRQ-Y2n2wNX9.js} +3 -3
- package/dist/component/{diagram-5GNKFQAL-bAlneREF.js → diagram-5GNKFQAL-DHwEARtq.js} +4 -4
- package/dist/component/{diagram-KO2AKTUF-By1LuXMT.js → diagram-KO2AKTUF-JBQc-Qhk.js} +3 -3
- package/dist/component/{diagram-LMA3HP47-COR5m3x6.js → diagram-LMA3HP47-B55TgguV.js} +3 -3
- package/dist/component/{diagram-OG6HWLK6-hxRK9G9i.js → diagram-OG6HWLK6-BjQ8Y6zl.js} +4 -4
- package/dist/component/{erDiagram-TEJ5UH35-8VyxgLye.js → erDiagram-TEJ5UH35-BNl5eT59.js} +5 -5
- package/dist/component/{flowDiagram-I6XJVG4X-GL0-g_NL.js → flowDiagram-I6XJVG4X-_bWa0zJX.js} +7 -7
- package/dist/component/{ganttDiagram-6RSMTGT7-CY-pvQs9.js → ganttDiagram-6RSMTGT7-D12wJRpv.js} +3 -3
- package/dist/component/{gitGraphDiagram-PVQCEYII-C-banevz.js → gitGraphDiagram-PVQCEYII-CKGKNDkP.js} +4 -4
- package/dist/component/{highlighted-body-OFNGDK62-DoKWOEyS.js → highlighted-body-OFNGDK62-T6VnSue_.js} +2 -2
- package/dist/component/index.js +2 -2
- package/dist/component/{infoDiagram-5YYISTIA-BxrYTrgH.js → infoDiagram-5YYISTIA-CtbQ2PNx.js} +2 -2
- package/dist/component/{ishikawaDiagram-YF4QCWOH-D_ZdaanN.js → ishikawaDiagram-YF4QCWOH-DWHoe0x7.js} +2 -2
- package/dist/component/{journeyDiagram-JHISSGLW-CJUxH22Z.js → journeyDiagram-JHISSGLW-Y8U0aQ2t.js} +5 -5
- package/dist/component/{kanban-definition-UN3LZRKU-BYcx0C0k.js → kanban-definition-UN3LZRKU-Cxa5quvJ.js} +3 -3
- package/dist/component/{linear-DXA6Ni38.js → linear-Deqp7k-y.js} +2 -2
- package/dist/component/{mermaid-GHXKKRXX-BP0EPCnA.js → mermaid-GHXKKRXX-Bb3nq6cF.js} +32285 -29983
- package/dist/component/{mindmap-definition-RKZ34NQL-DnvW0LPZ.js → mindmap-definition-RKZ34NQL-CJO5YIaF.js} +4 -4
- package/dist/component/{pieDiagram-4H26LBE5-DA_l8HVF.js → pieDiagram-4H26LBE5-fLrS62rY.js} +4 -4
- package/dist/component/{quadrantDiagram-W4KKPZXB-CJH3QV2I.js → quadrantDiagram-W4KKPZXB-BMjq2Lu4.js} +3 -3
- package/dist/component/{requirementDiagram-4Y6WPE33-RQu1NwhU.js → requirementDiagram-4Y6WPE33-BPUkO56k.js} +4 -4
- package/dist/component/{sankeyDiagram-5OEKKPKP-DaQ-xlau.js → sankeyDiagram-5OEKKPKP-ekNfY75x.js} +2 -2
- package/dist/component/{sequenceDiagram-3UESZ5HK-DVuPvNoe.js → sequenceDiagram-3UESZ5HK-CyVmC9Rm.js} +4 -4
- package/dist/component/{stateDiagram-AJRCARHV-CUhrYhQ-.js → stateDiagram-AJRCARHV-DFkc559m.js} +3 -3
- package/dist/component/{stateDiagram-v2-BHNVJYJU-DJwdiVQa.js → stateDiagram-v2-BHNVJYJU-DyEtRcsV.js} +3 -3
- package/dist/component/{timeline-definition-PNZ67QCA-vxoNetpl.js → timeline-definition-PNZ67QCA-BDLP-x66.js} +3 -3
- package/dist/component/{vennDiagram-CIIHVFJN-B23Eo4r8.js → vennDiagram-CIIHVFJN-Bvhzsn8q.js} +2 -2
- package/dist/component/{wardleyDiagram-YWT4CUSO-CHPIaRL_.js → wardleyDiagram-YWT4CUSO-SKdyvNF1.js} +3 -3
- package/dist/component/{xychartDiagram-2RQKCTM6-gaiGaKCA.js → xychartDiagram-2RQKCTM6-DHchnrpW.js} +3 -3
- package/dist/components/embed/CallButton.d.ts +26 -0
- package/dist/components/embed/EmbedAvatar.d.ts +4 -1
- package/dist/components/embed/EmbedSessions.d.ts +10 -3
- package/dist/components/embed/MobileNavBar.d.ts +39 -0
- package/dist/components/embed/mobile-nav-bar.fixtures.d.ts +3 -0
- package/dist/embed/approval-bus.d.ts +3 -0
- package/dist/embed/copy.d.ts +4 -0
- package/dist/embed/dock-layout.d.ts +23 -0
- package/dist/embed/layout-mode.d.ts +6 -0
- package/dist/embed/voice/line-dispatch.d.ts +20 -0
- package/dist/embed/voice/line-run-reader.d.ts +42 -0
- package/dist/embed/voice/realtime-call.d.ts +56 -0
- package/dist/embed/voice-bus.d.ts +2 -1
- package/dist/embed/voice-call-lines.d.ts +31 -0
- package/dist/embed/voice-call-pacing.d.ts +80 -0
- package/dist/embed/voice-call.d.ts +210 -0
- package/dist/i18n/messages/en.d.ts +67 -0
- package/dist/i18n/messages/surfaces/app.d.ts +9 -0
- package/dist/types/public.d.ts +23 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as oe } from "./chunk-55IACEB6-
|
|
2
|
-
import { s as ae } from "./chunk-2J33WTMH-
|
|
3
|
-
import { _ as l, l as C, p as ce, r as le, G as he, K as G, c as B, i as F, b6 as de, af as ge, ag as ue, ah as pe } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { g as oe } from "./chunk-55IACEB6-CWb5s5u5.js";
|
|
2
|
+
import { s as ae } from "./chunk-2J33WTMH-Bqhv40NQ.js";
|
|
3
|
+
import { _ as l, l as C, p as ce, r as le, G as he, K as G, c as B, i as F, b6 as de, af as ge, ag as ue, ah as pe } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
4
4
|
globalThis.process = globalThis.process || { env: {} };
|
|
5
5
|
globalThis.global = globalThis.global || globalThis;
|
|
6
6
|
const b = [];
|
|
@@ -830,4 +830,4 @@ var _e = Y, ke = 12, N = {
|
|
|
830
830
|
export {
|
|
831
831
|
we as diagram
|
|
832
832
|
};
|
|
833
|
-
//# sourceMappingURL=mindmap-definition-RKZ34NQL-
|
|
833
|
+
//# sourceMappingURL=mindmap-definition-RKZ34NQL-CJO5YIaF.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a0 as S, S as R, b5 as J, g as Q, s as Y, a as tt, b as et, t as at, q as nt, _ as g, l as W, c as rt, I as it, N as st, a7 as lt, e as ot, B as ct, K as ut } from "./mermaid-GHXKKRXX-
|
|
2
|
-
import { p as gt } from "./chunk-4BX2VUAB-
|
|
1
|
+
import { a0 as S, S as R, b5 as J, g as Q, s as Y, a as tt, b as et, t as at, q as nt, _ as g, l as W, c as rt, I as it, N as st, a7 as lt, e as ot, B as ct, K as ut } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
|
+
import { p as gt } from "./chunk-4BX2VUAB-DtucQWno.js";
|
|
3
3
|
import { p as dt } from "./wardley-L42UT6IY-HA1eSIS_.js";
|
|
4
|
-
import { d as P } from "./arc-
|
|
4
|
+
import { d as P } from "./arc-CMhGaHbE.js";
|
|
5
5
|
import { o as pt } from "./ordinal-D0x7izaa.js";
|
|
6
6
|
globalThis.process = globalThis.process || { env: {} };
|
|
7
7
|
globalThis.global = globalThis.global || globalThis;
|
|
@@ -163,4 +163,4 @@ var vt = ut.pie, z = {
|
|
|
163
163
|
export {
|
|
164
164
|
Lt as diagram
|
|
165
165
|
};
|
|
166
|
-
//# sourceMappingURL=pieDiagram-4H26LBE5-
|
|
166
|
+
//# sourceMappingURL=pieDiagram-4H26LBE5-fLrS62rY.js.map
|
package/dist/component/{quadrantDiagram-W4KKPZXB-CJH3QV2I.js → quadrantDiagram-W4KKPZXB-BMjq2Lu4.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as Se, g as _e, t as ee, q as Ae, a as ke, b as Fe, _ as r, c as Et, l as qt, d as vt, e as Pe, B as ve, K as z, i as Ce, a4 as Le } from "./mermaid-GHXKKRXX-
|
|
2
|
-
import { l as te } from "./linear-
|
|
1
|
+
import { s as Se, g as _e, t as ee, q as Ae, a as ke, b as Fe, _ as r, c as Et, l as qt, d as vt, e as Pe, B as ve, K as z, i as Ce, a4 as Le } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
|
+
import { l as te } from "./linear-Deqp7k-y.js";
|
|
3
3
|
globalThis.process = globalThis.process || { env: {} };
|
|
4
4
|
globalThis.global = globalThis.global || globalThis;
|
|
5
5
|
var Ct = (function() {
|
|
@@ -1030,4 +1030,4 @@ var Ve = /* @__PURE__ */ r(function() {
|
|
|
1030
1030
|
export {
|
|
1031
1031
|
We as diagram
|
|
1032
1032
|
};
|
|
1033
|
-
//# sourceMappingURL=quadrantDiagram-W4KKPZXB-
|
|
1033
|
+
//# sourceMappingURL=quadrantDiagram-W4KKPZXB-BMjq2Lu4.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as Ge } from "./chunk-55IACEB6-
|
|
2
|
-
import { s as ze } from "./chunk-2J33WTMH-
|
|
3
|
-
import { _ as h, G as Ye, b as Xe, a as Je, s as Ze, g as et, q as tt, t as st, c as ke, l as Ne, B as it, F as rt, p as nt, r as at, u as lt } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { g as Ge } from "./chunk-55IACEB6-CWb5s5u5.js";
|
|
2
|
+
import { s as ze } from "./chunk-2J33WTMH-Bqhv40NQ.js";
|
|
3
|
+
import { _ as h, G as Ye, b as Xe, a as Je, s as Ze, g as et, q as tt, t as st, c as ke, l as Ne, B as it, F as rt, p as nt, r as at, u as lt } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
4
4
|
globalThis.process = globalThis.process || { env: {} };
|
|
5
5
|
globalThis.global = globalThis.global || globalThis;
|
|
6
6
|
var qe = (function() {
|
|
@@ -885,4 +885,4 @@ var mt = /* @__PURE__ */ h(async function(e, u, o, n) {
|
|
|
885
885
|
export {
|
|
886
886
|
Rt as diagram
|
|
887
887
|
};
|
|
888
|
-
//# sourceMappingURL=requirementDiagram-4Y6WPE33-
|
|
888
|
+
//# sourceMappingURL=requirementDiagram-4Y6WPE33-BPUkO56k.js.map
|
package/dist/component/{sankeyDiagram-5OEKKPKP-DaQ-xlau.js → sankeyDiagram-5OEKKPKP-ekNfY75x.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { q as kt, t as mt, s as xt, g as _t, b as vt, a as bt, _ as y, c as ot, C as St, d as G, ai as wt, B as Lt, k as Et } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { q as kt, t as mt, s as xt, g as _t, b as vt, a as bt, _ as y, c as ot, C as St, d as G, ai as wt, B as Lt, k as Et } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
2
|
import { o as Tt } from "./ordinal-D0x7izaa.js";
|
|
3
3
|
globalThis.process = globalThis.process || { env: {} };
|
|
4
4
|
globalThis.global = globalThis.global || globalThis;
|
|
@@ -859,4 +859,4 @@ var ge = {
|
|
|
859
859
|
export {
|
|
860
860
|
ge as diagram
|
|
861
861
|
};
|
|
862
|
-
//# sourceMappingURL=sankeyDiagram-5OEKKPKP-
|
|
862
|
+
//# sourceMappingURL=sankeyDiagram-5OEKKPKP-ekNfY75x.js.map
|
package/dist/component/{sequenceDiagram-3UESZ5HK-DVuPvNoe.js → sequenceDiagram-3UESZ5HK-CyVmC9Rm.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { _ as g, o as tr, c as $, d as Mt, l as at, j as Ce, e as er, f as rr, k as P, b as ke, s as ar, q as sr, a as ir, g as nr, t as or, v as cr, J as lr, B as hr, i as Bt, u as Z, a5 as Q, a6 as wt, a7 as Me, a8 as dr, G as Yt, a9 as Tr, aa as Be } from "./mermaid-GHXKKRXX-
|
|
2
|
-
import { a as pr, b as ee, g as dt, d as Er, e as re, f as ae } from "./chunk-ND2GUHAM-
|
|
3
|
-
import { I as ur } from "./chunk-QZHKN3VN-
|
|
1
|
+
import { _ as g, o as tr, c as $, d as Mt, l as at, j as Ce, e as er, f as rr, k as P, b as ke, s as ar, q as sr, a as ir, g as nr, t as or, v as cr, J as lr, B as hr, i as Bt, u as Z, a5 as Q, a6 as wt, a7 as Me, a8 as dr, G as Yt, a9 as Tr, aa as Be } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
|
+
import { a as pr, b as ee, g as dt, d as Er, e as re, f as ae } from "./chunk-ND2GUHAM-DUfRBvcM.js";
|
|
3
|
+
import { I as ur } from "./chunk-QZHKN3VN-ZyFUERub.js";
|
|
4
4
|
globalThis.process = globalThis.process || { env: {} };
|
|
5
5
|
globalThis.global = globalThis.global || globalThis;
|
|
6
6
|
var $t = (function() {
|
|
@@ -2894,4 +2894,4 @@ var ra = /* @__PURE__ */ g(async function(e, t, a) {
|
|
|
2894
2894
|
export {
|
|
2895
2895
|
Ta as diagram
|
|
2896
2896
|
};
|
|
2897
|
-
//# sourceMappingURL=sequenceDiagram-3UESZ5HK-
|
|
2897
|
+
//# sourceMappingURL=sequenceDiagram-3UESZ5HK-CyVmC9Rm.js.map
|
package/dist/component/{stateDiagram-AJRCARHV-CUhrYhQ-.js → stateDiagram-AJRCARHV-DFkc559m.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as R, a as W, S as N } from "./chunk-AQP2D5EJ-
|
|
2
|
-
import { _ as f, c as t, d as M, l as S, e as P, k as z, ac as _, ad as U, a9 as C, u as F } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { s as R, a as W, S as N } from "./chunk-AQP2D5EJ-D00bX5Fy.js";
|
|
2
|
+
import { _ as f, c as t, d as M, l as S, e as P, k as z, ac as _, ad as U, a9 as C, u as F } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
3
3
|
import { G as O } from "./graph-BZLHvygk.js";
|
|
4
4
|
import { l as J } from "./layout-Bu6nRdWm.js";
|
|
5
5
|
globalThis.process = globalThis.process || { env: {} };
|
|
@@ -263,4 +263,4 @@ var X = /* @__PURE__ */ f((e) => e.append("circle").attr("class", "start-state")
|
|
|
263
263
|
export {
|
|
264
264
|
ot as diagram
|
|
265
265
|
};
|
|
266
|
-
//# sourceMappingURL=stateDiagram-AJRCARHV-
|
|
266
|
+
//# sourceMappingURL=stateDiagram-AJRCARHV-DFkc559m.js.map
|
package/dist/component/{stateDiagram-v2-BHNVJYJU-DJwdiVQa.js → stateDiagram-v2-BHNVJYJU-DyEtRcsV.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as e, b as r, a as s, S as t } from "./chunk-AQP2D5EJ-
|
|
2
|
-
import { _ as l } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { s as e, b as r, a as s, S as t } from "./chunk-AQP2D5EJ-D00bX5Fy.js";
|
|
2
|
+
import { _ as l } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
3
3
|
globalThis.process = globalThis.process || { env: {} };
|
|
4
4
|
globalThis.global = globalThis.global || globalThis;
|
|
5
5
|
var b = {
|
|
@@ -16,4 +16,4 @@ var b = {
|
|
|
16
16
|
export {
|
|
17
17
|
b as diagram
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=stateDiagram-v2-BHNVJYJU-
|
|
19
|
+
//# sourceMappingURL=stateDiagram-v2-BHNVJYJU-DyEtRcsV.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as o, G as gt, af as Rt, ag as Ct, ah as Wt, c as pt, l as E, N as Pt, a7 as Bt, ai as ft, d as U, F as Vt, aj as Ft, B as zt } from "./mermaid-GHXKKRXX-
|
|
2
|
-
import { d as ot } from "./arc-
|
|
1
|
+
import { _ as o, G as gt, af as Rt, ag as Ct, ah as Wt, c as pt, l as E, N as Pt, a7 as Bt, ai as ft, d as U, F as Vt, aj as Ft, B as zt } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
|
+
import { d as ot } from "./arc-CMhGaHbE.js";
|
|
3
3
|
globalThis.process = globalThis.process || { env: {} };
|
|
4
4
|
globalThis.global = globalThis.global || globalThis;
|
|
5
5
|
var tt = (function() {
|
|
@@ -1055,4 +1055,4 @@ var Qt = /* @__PURE__ */ o(function(e, t, n, i, r, h = !1) {
|
|
|
1055
1055
|
export {
|
|
1056
1056
|
me as diagram
|
|
1057
1057
|
};
|
|
1058
|
-
//# sourceMappingURL=timeline-definition-PNZ67QCA-
|
|
1058
|
+
//# sourceMappingURL=timeline-definition-PNZ67QCA-BDLP-x66.js.map
|
package/dist/component/{vennDiagram-CIIHVFJN-B23Eo4r8.js → vennDiagram-CIIHVFJN-Bvhzsn8q.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aX as Gt, s as Wt, g as Kt, t as Ht, q as Xt, a as Yt, b as Zt, _ as w, G as wt, N as Jt, d as ot, ao as Qt, af as $t, ag as te, ah as ee, e as ne, B as se, I as ie, K as oe } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { aX as Gt, s as Wt, g as Kt, t as Ht, q as Xt, a as Yt, b as Zt, _ as w, G as wt, N as Jt, d as ot, ao as Qt, af as $t, ag as te, ah as ee, e as ne, B as se, I as ie, K as oe } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
2
|
globalThis.process = globalThis.process || { env: {} };
|
|
3
3
|
globalThis.global = globalThis.global || globalThis;
|
|
4
4
|
const kt = (t, n) => Gt(t, "a", -n), _t = 1e-10;
|
|
@@ -1557,4 +1557,4 @@ var qe = { draw: Ve }, Ge = {
|
|
|
1557
1557
|
export {
|
|
1558
1558
|
Ge as diagram
|
|
1559
1559
|
};
|
|
1560
|
-
//# sourceMappingURL=vennDiagram-CIIHVFJN-
|
|
1560
|
+
//# sourceMappingURL=vennDiagram-CIIHVFJN-Bvhzsn8q.js.map
|
package/dist/component/{wardleyDiagram-YWT4CUSO-CHPIaRL_.js → wardleyDiagram-YWT4CUSO-SKdyvNF1.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as St, g as Mt, t as Nt, q as Tt, a as zt, b as Lt, _ as u, a4 as At, G as Xt, I as U, l as K, N as Et, e as Yt, B as It, c as j } from "./mermaid-GHXKKRXX-
|
|
2
|
-
import { p as Bt } from "./chunk-4BX2VUAB-
|
|
1
|
+
import { s as St, g as Mt, t as Nt, q as Tt, a as zt, b as Lt, _ as u, a4 as At, G as Xt, I as U, l as K, N as Et, e as Yt, B as It, c as j } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
|
+
import { p as Bt } from "./chunk-4BX2VUAB-DtucQWno.js";
|
|
3
3
|
import { p as Ft } from "./wardley-L42UT6IY-HA1eSIS_.js";
|
|
4
4
|
globalThis.process = globalThis.process || { env: {} };
|
|
5
5
|
globalThis.global = globalThis.global || globalThis;
|
|
@@ -678,4 +678,4 @@ var Dt = {
|
|
|
678
678
|
export {
|
|
679
679
|
Qt as diagram
|
|
680
680
|
};
|
|
681
|
-
//# sourceMappingURL=wardleyDiagram-YWT4CUSO-
|
|
681
|
+
//# sourceMappingURL=wardleyDiagram-YWT4CUSO-SKdyvNF1.js.map
|
package/dist/component/{xychartDiagram-2RQKCTM6-gaiGaKCA.js → xychartDiagram-2RQKCTM6-DHchnrpW.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { s as ei, g as si, t as Lt, q as ni, a as ai, b as oi, _ as a, l as Et, N as ri, e as hi, B as li, G as dt, i as ci, I as It, K as ui, a4 as gi, ap as xi, ac as Rt } from "./mermaid-GHXKKRXX-
|
|
1
|
+
import { s as ei, g as si, t as Lt, q as ni, a as ai, b as oi, _ as a, l as Et, N as ri, e as hi, B as li, G as dt, i as ci, I as It, K as ui, a4 as gi, ap as xi, ac as Rt } from "./mermaid-GHXKKRXX-Bb3nq6cF.js";
|
|
2
2
|
import { i as di } from "./init-BOu0eQYQ.js";
|
|
3
3
|
import { o as fi } from "./ordinal-D0x7izaa.js";
|
|
4
|
-
import { l as Dt } from "./linear-
|
|
4
|
+
import { l as Dt } from "./linear-Deqp7k-y.js";
|
|
5
5
|
globalThis.process = globalThis.process || { env: {} };
|
|
6
6
|
globalThis.global = globalThis.global || globalThis;
|
|
7
7
|
function pi(t, i, e) {
|
|
@@ -1372,4 +1372,4 @@ var Ti = /* @__PURE__ */ a(function() {
|
|
|
1372
1372
|
export {
|
|
1373
1373
|
Mi as diagram
|
|
1374
1374
|
};
|
|
1375
|
-
//# sourceMappingURL=xychartDiagram-2RQKCTM6-
|
|
1375
|
+
//# sourceMappingURL=xychartDiagram-2RQKCTM6-DHchnrpW.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BelongThemePalette } from '../../types/public.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Live-call button — shared by the desktop rail (always visible, docked or
|
|
4
|
+
* collapsed) and the mobile bottom nav bar, so the user can call their agent
|
|
5
|
+
* from either chrome. Store-connected and self-contained: idle shows a plain
|
|
6
|
+
* phone; connecting spins; in-call shows a hang-up glyph over a pulsing ring
|
|
7
|
+
* (the "live" animation). Clicking toggles dial / hang-up; errors surface on
|
|
8
|
+
* the CallScreen when the chat surface is visible (audio + state machine run
|
|
9
|
+
* regardless).
|
|
10
|
+
*/
|
|
11
|
+
export declare const CallButton: ({ palette, testId, className, label, callSurfaceHidden, onShowCallSurface, }: {
|
|
12
|
+
palette: BelongThemePalette;
|
|
13
|
+
/** Distinguishes the rail instance from the mobile nav bar instance. */
|
|
14
|
+
testId?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
/** Visible text under the icon (mobile nav tabs carry names; the 52px rail
|
|
17
|
+
* has no room and stays icon-only with the aria-label/tooltip). */
|
|
18
|
+
label?: string;
|
|
19
|
+
/** True when the CallScreen cannot be on screen (chat view hidden or dock
|
|
20
|
+
* collapsed). A live call with the surface hidden means this button
|
|
21
|
+
* RETURNS to the call — hanging up belongs to a screen the user can see. */
|
|
22
|
+
callSurfaceHidden?: boolean;
|
|
23
|
+
/** Navigate so the CallScreen is visible (switch to chat / expand). Called
|
|
24
|
+
* when dialing or returning from a place where the surface is hidden. */
|
|
25
|
+
onShowCallSurface?: () => void;
|
|
26
|
+
}) => import("react").JSX.Element;
|
|
@@ -7,12 +7,15 @@ import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.
|
|
|
7
7
|
* colour + custom CSS), then Log out. Gradient is brand-driven (Ocean → Deep
|
|
8
8
|
* Sea) via the active palette.
|
|
9
9
|
*/
|
|
10
|
-
export declare function EmbedAvatar({ user, size, theme, palette, side, sessionId, voiceSupported, accent, cssVars, presets, activePreset, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, }: {
|
|
10
|
+
export declare function EmbedAvatar({ user, size, theme, palette, side, menuSide: menuSideOverride, sessionId, voiceSupported, accent, cssVars, presets, activePreset, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, }: {
|
|
11
11
|
user: string | null;
|
|
12
12
|
size?: number;
|
|
13
13
|
theme: BelongTheme;
|
|
14
14
|
palette: BelongThemePalette;
|
|
15
15
|
side: "left" | "right";
|
|
16
|
+
/** Where the menu opens. Defaults to "toward the panel" from the rail edge;
|
|
17
|
+
* the mobile bottom nav bar overrides it to open upward. */
|
|
18
|
+
menuSide?: "left" | "right" | "top";
|
|
16
19
|
/** Active chat session id (null when no conversation is open yet). Shown in
|
|
17
20
|
* the menu under the build stamp and copyable for telemetry correlation. */
|
|
18
21
|
sessionId: string | null;
|
|
@@ -9,12 +9,19 @@ export interface SessionSummary {
|
|
|
9
9
|
* an inline text edit, or delete one via an inline trash → confirm flow. Rename +
|
|
10
10
|
* delete are per-row inline affordances that keep the menu open (BEL-120).
|
|
11
11
|
*/
|
|
12
|
-
export declare function EmbedSessions({ sessions, activeId, theme, side, onNew, onSelect, onDelete, onRename, onOpen, }: {
|
|
12
|
+
export declare function EmbedSessions({ sessions, activeId, theme, side, triggerClassName, triggerLabel, onNew, onSelect, onDelete, onRename, onOpen, }: {
|
|
13
13
|
sessions: readonly SessionSummary[];
|
|
14
14
|
activeId: string | null;
|
|
15
15
|
theme: BelongTheme;
|
|
16
|
-
/** Which way the menu opens — toward the panel from the rail edge
|
|
17
|
-
|
|
16
|
+
/** Which way the menu opens — toward the panel from the rail edge, or
|
|
17
|
+
* upward when the trigger lives in the mobile bottom nav bar. */
|
|
18
|
+
side?: "left" | "right" | "top";
|
|
19
|
+
/** Extra trigger classes — the mobile nav bar bumps the 32px rail trigger
|
|
20
|
+
* to a ≥44px touch target. */
|
|
21
|
+
triggerClassName?: string;
|
|
22
|
+
/** Visible text under the trigger icon (mobile nav names its cells; the
|
|
23
|
+
* rail stays icon-only). */
|
|
24
|
+
triggerLabel?: string;
|
|
18
25
|
onNew: () => void;
|
|
19
26
|
onSelect: (id: string) => void;
|
|
20
27
|
onDelete: (id: string) => void;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SessionSummary } from './EmbedSessions';
|
|
2
|
+
import { EmbedView } from './EmbedRail';
|
|
3
|
+
import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Bottom nav bar for the MOBILE fullscreen sheet — the phone-width stand-in
|
|
6
|
+
* for the 52px desktop rail (which has no room on a phone). View tabs
|
|
7
|
+
* (chat / files / scheduled), the sessions switcher, the account avatar, and
|
|
8
|
+
* a close chevron. Every cell is a ≥44px touch target; menus open upward.
|
|
9
|
+
*/
|
|
10
|
+
export declare function MobileNavBar({ view, user, theme, palette, sessions, activeId, voiceSupported, accent, cssVars, presets, activePreset, onSelectView, onClose, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, }: {
|
|
11
|
+
view: EmbedView;
|
|
12
|
+
user: string | null;
|
|
13
|
+
theme: BelongTheme;
|
|
14
|
+
palette: BelongThemePalette;
|
|
15
|
+
sessions: readonly SessionSummary[];
|
|
16
|
+
activeId: string | null;
|
|
17
|
+
voiceSupported: boolean;
|
|
18
|
+
accent: string | null;
|
|
19
|
+
cssVars: Record<string, string>;
|
|
20
|
+
presets: readonly {
|
|
21
|
+
name: PresetName;
|
|
22
|
+
label: string;
|
|
23
|
+
}[];
|
|
24
|
+
activePreset: PresetName;
|
|
25
|
+
onSelectView: (v: EmbedView) => void;
|
|
26
|
+
onClose: () => void;
|
|
27
|
+
onToggleMode: () => void;
|
|
28
|
+
onToggleSide: () => void;
|
|
29
|
+
onAccentChange: (c: string) => void;
|
|
30
|
+
onAccentReset: () => void;
|
|
31
|
+
onCssVarsChange: (v: Record<string, string>) => void;
|
|
32
|
+
onApplyPreset: (name: PresetName) => void;
|
|
33
|
+
onLogout: () => void;
|
|
34
|
+
onNewSession: () => void;
|
|
35
|
+
onSelectSession: (id: string) => void;
|
|
36
|
+
onDeleteSession: (id: string) => void;
|
|
37
|
+
onRenameSession: (id: string, title: string) => void;
|
|
38
|
+
onSessionsOpen?: () => void;
|
|
39
|
+
}): import("react").JSX.Element;
|
|
@@ -12,3 +12,6 @@ export type PendingApproval = {
|
|
|
12
12
|
};
|
|
13
13
|
export declare const registerPendingApproval: (entry: PendingApproval) => (() => void);
|
|
14
14
|
export declare const peekPendingApproval: () => PendingApproval | null;
|
|
15
|
+
/** Fires whenever an approval card registers or resolves — live call mode
|
|
16
|
+
* uses this to surface the ask into the call and offer voice approval. */
|
|
17
|
+
export declare const subscribePendingApproval: (listener: () => void) => (() => void);
|
package/dist/embed/copy.d.ts
CHANGED
|
@@ -127,9 +127,13 @@ export type DockCopy = {
|
|
|
127
127
|
readonly placeholderDefault: Readonly<Record<DockCopyVariant, string>>;
|
|
128
128
|
readonly placeholderPlan: Readonly<Record<DockCopyVariant, string>>;
|
|
129
129
|
readonly voiceHint: (keyLabel: string) => string;
|
|
130
|
+
/** Mobile variant — no physical keyboard, so no push-to-talk key. */
|
|
131
|
+
readonly voiceHintTouch: string;
|
|
130
132
|
readonly micNotSupported: string;
|
|
131
133
|
readonly micNotConfigured: string;
|
|
132
134
|
readonly micTooltip: (keyLabel: string) => string;
|
|
135
|
+
/** Mobile variant of the mic tooltip — omits the keyboard fallback. */
|
|
136
|
+
readonly micTooltipTouch: string;
|
|
133
137
|
readonly viewPlan: string;
|
|
134
138
|
readonly hidePlan: string;
|
|
135
139
|
};
|
|
@@ -5,6 +5,21 @@
|
|
|
5
5
|
* uses the same resolver so the dock never overlaps host content.
|
|
6
6
|
*/
|
|
7
7
|
export type DockResizeState = "collapsed" | "expanded" | "modal";
|
|
8
|
+
/**
|
|
9
|
+
* Desktop = side-docked panel + rail with a host-body reserve. Mobile = the
|
|
10
|
+
* dock takes the whole viewport as an overlay sheet (a side dock plus reserve
|
|
11
|
+
* would squeeze the host to zero width on a phone).
|
|
12
|
+
*/
|
|
13
|
+
export type DockLayoutMode = "desktop" | "mobile";
|
|
14
|
+
/** Viewports at or below this width get the mobile fullscreen-sheet layout. */
|
|
15
|
+
export declare const MOBILE_LAYOUT_MAX_WIDTH_PX = 640;
|
|
16
|
+
/** Short viewports get the mobile layout too: a rotated phone (e.g. 844×390)
|
|
17
|
+
* is wider than the width breakpoint, but a 52px rail + side panel is
|
|
18
|
+
* unusable at that height. */
|
|
19
|
+
export declare const MOBILE_LAYOUT_MAX_HEIGHT_PX = 480;
|
|
20
|
+
/** The single matchMedia source for the mode — both clauses, OR'd. */
|
|
21
|
+
export declare const MOBILE_LAYOUT_MEDIA_QUERY: string;
|
|
22
|
+
export declare const resolveLayoutMode: (viewportWidthPx: number, viewportHeightPx?: number) => DockLayoutMode;
|
|
8
23
|
/** The always-visible rail strip. Reference spec: 52px. */
|
|
9
24
|
export declare const RAIL_WIDTH_PX = 52;
|
|
10
25
|
/** Fixed panel width in modal state. Reference spec: 760px panel. */
|
|
@@ -17,6 +32,14 @@ export declare const MAX_PANEL_WIDTH_PX = 720;
|
|
|
17
32
|
export declare const clampPanelWidth: (px: number, viewportPx: number) => number;
|
|
18
33
|
/** Total dock width (panel + rail) for a state, given the expanded panel width. */
|
|
19
34
|
export declare const resolveDockWidthPx: (state: DockResizeState, panelWidth: number) => number;
|
|
35
|
+
/**
|
|
36
|
+
* Desktop dock width clamped to the live viewport — mid-size screens (small
|
|
37
|
+
* tablets, half-snapped windows just above the mobile breakpoint) must never
|
|
38
|
+
* get a dock wider than the screen: the 760px modal alone overflows a 768px
|
|
39
|
+
* tablet, and a persisted wide panel can overflow a re-narrowed window.
|
|
40
|
+
* Cap: 90% of the viewport (same budget clampPanelWidth uses for drags).
|
|
41
|
+
*/
|
|
42
|
+
export declare const resolveClampedDockWidthPx: (state: DockResizeState, panelWidth: number, viewportWidthPx: number) => number;
|
|
20
43
|
/**
|
|
21
44
|
* The panel's OWN width for a state. While collapsed this is the width the
|
|
22
45
|
* panel would reveal to (the dock container clips it), so the panel keeps a
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DockLayoutMode } from './dock-layout.ts';
|
|
2
|
+
export declare const peekLayoutMode: () => DockLayoutMode;
|
|
3
|
+
export declare const subscribeLayoutMode: (listener: () => void) => (() => void);
|
|
4
|
+
export declare const useLayoutMode: () => DockLayoutMode;
|
|
5
|
+
/** Test-only: drop the cached media query so a new stub takes effect. */
|
|
6
|
+
export declare const __resetLayoutModeForTest: () => void;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background-line dispatch: create the line's session on first use (plain
|
|
3
|
+
* HTTP — the same endpoints the chat transport uses), post the message, and
|
|
4
|
+
* attach the line-run reader so results/failures/phases/approvals flow back
|
|
5
|
+
* into the call. Line 1 (the foreground chat) never comes through here.
|
|
6
|
+
*
|
|
7
|
+
* Workspace isolation (§28): a background line opened while the host is inside
|
|
8
|
+
* a workspace must land in THAT workspace, not the shared legacy root — so the
|
|
9
|
+
* create body carries the effective `workspaceExternalId` (absent when the host
|
|
10
|
+
* runs unscoped). The line's registry label seeds the session title, so the
|
|
11
|
+
* sessions list names the background conversation.
|
|
12
|
+
*/
|
|
13
|
+
/** Abort every live line reader and invalidate their callbacks (call teardown).
|
|
14
|
+
* Subscribed below to fire whenever a call leaves in_call/connecting. */
|
|
15
|
+
export declare const abortAllLineReaders: () => void;
|
|
16
|
+
export declare const dispatchToLine: (req: {
|
|
17
|
+
readonly line: number;
|
|
18
|
+
readonly request: string;
|
|
19
|
+
readonly isNewLine: boolean;
|
|
20
|
+
}, fetchFn?: typeof fetch) => Promise<void>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal SSE consumer for a BACKGROUND line's run stream — the Operator's
|
|
3
|
+
* ear on lines the chat surface isn't showing. Reads the AI-SDK data-stream
|
|
4
|
+
* protocol from `GET /v1/runs/:runId/stream` and surfaces only what the call
|
|
5
|
+
* needs: tool phases, approval-needed, the final text, errors. No `useChat`,
|
|
6
|
+
* no rendering, no reconnect/resume (that's `BelongChatTransport`'s job for
|
|
7
|
+
* the foreground chat surface — a background line reader just watches once).
|
|
8
|
+
* Fetch is injected for tests.
|
|
9
|
+
*
|
|
10
|
+
* Wire shapes mirror the real protocol pinned in `belong-chat-transport.ts` /
|
|
11
|
+
* `belong-data-parts.ts` — NOT the placeholder `text-delta` / `finish` shapes
|
|
12
|
+
* from the original task brief:
|
|
13
|
+
* - text is a DELTA part: `{ type: "text", id, text }` — accumulate `.text`.
|
|
14
|
+
* - `data-tool-call` carries a `state` ("started" | "completed" | "failed");
|
|
15
|
+
* only "started" is a phase change worth reporting.
|
|
16
|
+
* - `data-approval-request` carries a `state` ("pending" | "approved" |
|
|
17
|
+
* "rejected" | "amend_requested" | "expired"); only "pending" means an
|
|
18
|
+
* approval is newly needed.
|
|
19
|
+
* - there is no `finish` / `error` part. The terminal signal is
|
|
20
|
+
* `data-status` with `status` ∈ "continuing" | "completed" | "cancelled" |
|
|
21
|
+
* "failed" | "throttled". "continuing" is the max-turns auto-continue —
|
|
22
|
+
* NOT terminal, keep reading the same stream. "completed" finishes with
|
|
23
|
+
* the accumulated text; "cancelled" | "failed" | "throttled" are errors.
|
|
24
|
+
*
|
|
25
|
+
* SSE parsing here is LINE-BY-LINE (split on "\n", not "\n\n") — the server
|
|
26
|
+
* sends exactly one `data:` line per event. `id:` lines carry the event
|
|
27
|
+
* cursor (ignored — v1 has no reconnect/resume) and `:`-prefixed lines are
|
|
28
|
+
* keepalive comments.
|
|
29
|
+
*/
|
|
30
|
+
export type WatchLineRunInput = {
|
|
31
|
+
readonly runId: string;
|
|
32
|
+
readonly onPhase: (toolName: string) => void;
|
|
33
|
+
readonly onApprovalNeeded: () => void;
|
|
34
|
+
readonly onArtifact: (artifact: {
|
|
35
|
+
artifactId: string;
|
|
36
|
+
title: string;
|
|
37
|
+
mimeType: string;
|
|
38
|
+
}) => void;
|
|
39
|
+
readonly onFinish: (finalText: string) => void;
|
|
40
|
+
readonly onError: (message: string) => void;
|
|
41
|
+
};
|
|
42
|
+
export declare const watchLineRun: (input: WatchLineRunInput, fetchFn?: typeof fetch) => (() => void);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebRTC transport for live call mode (OpenAI Realtime, speech-to-speech).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the Deepgram pattern one file over: the browser holds a short-lived
|
|
5
|
+
* secret minted by belong-cloud (`POST /v1/voice/call-token`) and negotiates a
|
|
6
|
+
* DIRECT WebRTC media session with the provider — call audio never relays
|
|
7
|
+
* through the backend. The one plain `fetch` in the handshake (the SDP
|
|
8
|
+
* offer/answer exchange) goes through belong-cloud (`POST /v1/voice/call-sdp`)
|
|
9
|
+
* because embedding hosts' CSP `connect-src` allowlists rarely include
|
|
10
|
+
* api.openai.com (Simetrik's doesn't) — the negotiated ICE/DTLS media leg is
|
|
11
|
+
* not governed by `connect-src`, so only the signaling needs the relay.
|
|
12
|
+
*
|
|
13
|
+
* getUserMedia (mic track) ──▶ RTCPeerConnection ──▶ remote audio track
|
|
14
|
+
* │ (autoplay <audio>)
|
|
15
|
+
* └─ data channel "oai-events"
|
|
16
|
+
* JSON events both ways (transcripts,
|
|
17
|
+
* function calls, response control)
|
|
18
|
+
*
|
|
19
|
+
* This module owns ONLY the transport: connection setup, the event pipe, mic
|
|
20
|
+
* mute, and teardown. Conversation logic (function-call dispatch, captions,
|
|
21
|
+
* state machine) lives in `voice-call.ts`. Hand-rolled like `deepgram-stt.ts`
|
|
22
|
+
* — no provider SDK for one SDP exchange.
|
|
23
|
+
*/
|
|
24
|
+
export type RealtimeCallHandle = {
|
|
25
|
+
/** Queue-or-send a client event on the data channel (JSON-encoded). */
|
|
26
|
+
readonly sendEvent: (event: Record<string, unknown>) => void;
|
|
27
|
+
/** Toggle the local mic track without renegotiating. */
|
|
28
|
+
readonly setMuted: (muted: boolean) => void;
|
|
29
|
+
/** Tear down mic, peer connection, and audio playback. Idempotent. */
|
|
30
|
+
readonly close: () => void;
|
|
31
|
+
};
|
|
32
|
+
export type ConnectRealtimeCallResult = {
|
|
33
|
+
readonly ok: true;
|
|
34
|
+
readonly call: RealtimeCallHandle;
|
|
35
|
+
} | {
|
|
36
|
+
readonly ok: false;
|
|
37
|
+
readonly reason: "mic_denied" | "connect_failed";
|
|
38
|
+
};
|
|
39
|
+
export type ConnectRealtimeCallInput = {
|
|
40
|
+
readonly callToken: string;
|
|
41
|
+
/** Every server event, JSON-parsed to `unknown` — the store Zod-narrows. */
|
|
42
|
+
readonly onServerEvent: (event: unknown) => void;
|
|
43
|
+
/** Fired once when the transport drops (remote close / ICE failure). */
|
|
44
|
+
readonly onDisconnect: () => void;
|
|
45
|
+
/** Fired once when the event channel opens — the store decides THEN whether
|
|
46
|
+
* a greeting is still appropriate (a blind pre-queued greeting races the
|
|
47
|
+
* server-VAD response created while the channel was still connecting). */
|
|
48
|
+
readonly onOpen?: () => void;
|
|
49
|
+
/** Local mic + remote (agent voice) streams, for audio-level analysis —
|
|
50
|
+
* the orb visualization reacts to REAL speech, not a canned loop. */
|
|
51
|
+
readonly onStreams?: (streams: {
|
|
52
|
+
readonly local: MediaStream;
|
|
53
|
+
readonly remote: MediaStream;
|
|
54
|
+
}) => void;
|
|
55
|
+
};
|
|
56
|
+
export declare const connectRealtimeCall: (input: ConnectRealtimeCallInput) => Promise<ConnectRealtimeCallResult>;
|
|
@@ -43,10 +43,11 @@ export declare const __setVoiceEngineFactories: (overrides: Partial<VoiceEngineF
|
|
|
43
43
|
* from the reactive state so it stays consistent with `peekVoiceState().interim`.
|
|
44
44
|
*/
|
|
45
45
|
export declare const peekVoiceInterim: () => string;
|
|
46
|
+
export declare const setCaptureSuppressed: (suppressed: boolean) => void;
|
|
46
47
|
/**
|
|
47
48
|
* Begin a push-to-talk capture: mint a voice token, open the streaming STT,
|
|
48
49
|
* then start the mic. No-op unless idle/error (a re-entrant start while
|
|
49
|
-
* requesting/listening is ignored).
|
|
50
|
+
* requesting/listening is ignored), and no-op while a live call owns the mic.
|
|
50
51
|
*/
|
|
51
52
|
export declare const startCapture: () => void;
|
|
52
53
|
/**
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent lines registry — the Operator's switchboard. Line 1 is the
|
|
3
|
+
* FOREGROUND chat (existing single-line behavior, unchanged); lines 2+ are
|
|
4
|
+
* background sessions dispatched over plain HTTP and monitored by the
|
|
5
|
+
* line-run reader. External-store singleton, same idiom as voice-bus.ts.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MAX_AGENT_LINES = 3;
|
|
8
|
+
export type AgentLineStatus = "working" | "ready" | "failed" | "needs_approval";
|
|
9
|
+
export type AgentLine = {
|
|
10
|
+
readonly line: number;
|
|
11
|
+
readonly sessionId: string | null;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
readonly status: AgentLineStatus;
|
|
14
|
+
readonly lastText: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const peekAgentLines: () => readonly AgentLine[];
|
|
17
|
+
export declare const subscribeAgentLines: (listener: () => void) => (() => void);
|
|
18
|
+
export declare const resetAgentLines: () => void;
|
|
19
|
+
export declare const getLine: (line: number) => AgentLine | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* The "foreground-routed alias": a background line (≥ 2) bound to the SAME
|
|
22
|
+
* session line 1 currently shows (the user opened it in the chat via
|
|
23
|
+
* `show_agent_line`). New work for that line is routed through the foreground
|
|
24
|
+
* pipeline so the visible chat renders the run — but the background line's
|
|
25
|
+
* strip status must still be kept truthful, and this finds the line to update.
|
|
26
|
+
* Returns `undefined` when line 1 is unbound or no background line aliases it.
|
|
27
|
+
*/
|
|
28
|
+
export declare const findAliasedLine: () => AgentLine | undefined;
|
|
29
|
+
export declare const openAgentLine: (label: string) => AgentLine | null;
|
|
30
|
+
export declare const bindLineSession: (line: number, sessionId: string) => void;
|
|
31
|
+
export declare const setLineStatus: (line: number, status: AgentLineStatus, lastText?: string) => void;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The utterance pacer: sequencing for agent-initiated call utterances,
|
|
3
|
+
* extracted from the voice-call store so every ordering (audio response,
|
|
4
|
+
* no-audio response, stopped-before-done, lost `stopped`, barge-in mid-gap)
|
|
5
|
+
* is unit-testable without a WebRTC/mic harness. voice-call.ts is a thin
|
|
6
|
+
* driver: it feeds server events into the pacer's entry points and sends the
|
|
7
|
+
* actual `response.create` from the `dispatch` callback.
|
|
8
|
+
*
|
|
9
|
+
* Agent-initiated utterances (function acks, result relays, progress nudges,
|
|
10
|
+
* the greeting) are paced from AUDIO PLAYOUT END, not generation end: the next
|
|
11
|
+
* one may only dispatch once both generation (`responseActive`) and playback
|
|
12
|
+
* (`audioPlaying`) are idle, plus a breath (`UTTERANCE_GAP_MS`). User turns go
|
|
13
|
+
* through server VAD directly and never touch this logic.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Breath between agent-initiated utterances, measured from AUDIO PLAYOUT END
|
|
17
|
+
* (the `output_audio_buffer.stopped` server event), NOT from `response.done`
|
|
18
|
+
* (generation complete). Anchoring to playout end is what makes the gap real:
|
|
19
|
+
* generation outpaces realtime playback, so a pause timed from `response.done`
|
|
20
|
+
* routinely elapses while the previous sentence is still audible.
|
|
21
|
+
*/
|
|
22
|
+
export declare const UTTERANCE_GAP_MS = 700;
|
|
23
|
+
/**
|
|
24
|
+
* Safety net for a missing `output_audio_buffer.stopped`. If audio began but no
|
|
25
|
+
* stopped event arrives within this window after `response.done`, the pacer
|
|
26
|
+
* treats audio as idle and releases any queued follow-up so it cannot wedge.
|
|
27
|
+
* Conservative — real spoken relays are a few seconds; 30 s only trips on a
|
|
28
|
+
* genuinely dropped stopped event.
|
|
29
|
+
*/
|
|
30
|
+
export declare const AUDIO_IDLE_SAFETY_MS = 30000;
|
|
31
|
+
/**
|
|
32
|
+
* Hold a follow-up `response.create` while a response is still generating OR
|
|
33
|
+
* its audio is still playing out. Both must be idle before the pause timer may
|
|
34
|
+
* run and the create may be sent.
|
|
35
|
+
*/
|
|
36
|
+
export declare const shouldHoldDispatch: (input: {
|
|
37
|
+
readonly responseActive: boolean;
|
|
38
|
+
readonly audioPlaying: boolean;
|
|
39
|
+
}) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* On `response.done`, decide whether to release a queued follow-up immediately.
|
|
42
|
+
* When audio is still playing, the release is deferred to
|
|
43
|
+
* `output_audio_buffer.stopped`. When the response produced no audio (nothing
|
|
44
|
+
* in playout — e.g. a function-call-only or empty response), release now so the
|
|
45
|
+
* pacer can't wedge waiting for a stopped event that will never arrive.
|
|
46
|
+
*/
|
|
47
|
+
export declare const shouldReleaseFollowUpOnDone: (audioPlaying: boolean) => boolean;
|
|
48
|
+
/** What `response.done` found in playout — the driver clears its `speaking`
|
|
49
|
+
* UI state on `"no_audio"` (no `output_audio_buffer.stopped` will come). */
|
|
50
|
+
export type ResponseAudioOutcome = "no_audio" | "audio_playing";
|
|
51
|
+
export type UtterancePacer = {
|
|
52
|
+
/** Ask for an agent-initiated `response.create`. Held (deduped to one
|
|
53
|
+
* pending) while a response is generating or its audio is playing; otherwise
|
|
54
|
+
* dispatched after `UTTERANCE_GAP_MS`. */
|
|
55
|
+
readonly request: () => void;
|
|
56
|
+
/** A response started generating (`response.created`) — server VAD or ours. */
|
|
57
|
+
readonly onResponseCreated: () => void;
|
|
58
|
+
/** Generation finished (`response.done`). Releases a held follow-up when the
|
|
59
|
+
* response produced no audio; otherwise arms the missing-`stopped` safety. */
|
|
60
|
+
readonly onResponseDone: () => ResponseAudioOutcome;
|
|
61
|
+
/** Audio playout began (`output_audio_buffer.started`). */
|
|
62
|
+
readonly onAudioStarted: () => void;
|
|
63
|
+
/** Audio playout ended (`output_audio_buffer.stopped`) — the anchor the next
|
|
64
|
+
* agent-initiated breath is measured from. */
|
|
65
|
+
readonly onAudioStopped: () => void;
|
|
66
|
+
/** The user took the floor (`input_audio_buffer.speech_started`). Clears the
|
|
67
|
+
* playout gate and timers; a follow-up already counting down its breath is
|
|
68
|
+
* DEFERRED behind the user's turn (re-queued as pending), never dropped. */
|
|
69
|
+
readonly onBargeIn: () => void;
|
|
70
|
+
/** Call teardown: clear all flags and timers so nothing leaks forward. */
|
|
71
|
+
readonly reset: () => void;
|
|
72
|
+
};
|
|
73
|
+
export declare const createUtterancePacer: (opts: {
|
|
74
|
+
/** Send the actual `response.create`. Called at most once per released
|
|
75
|
+
* follow-up, only when generation + playout are idle and the gap elapsed. */
|
|
76
|
+
readonly dispatch: () => void;
|
|
77
|
+
/** The safety net declared audio idle after a lost `stopped` — the driver
|
|
78
|
+
* clears its `speaking` UI state here. */
|
|
79
|
+
readonly onSafetyIdle?: () => void;
|
|
80
|
+
}) => UtterancePacer;
|