@belonguniverseai/react-sdk 0.1.2 → 0.1.4

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 (100) hide show
  1. package/dist/api/client.d.ts +382 -9
  2. package/dist/api/mutations.d.ts +5 -0
  3. package/dist/api/query-keys.d.ts +9 -0
  4. package/dist/api/workspace-files.d.ts +1 -1
  5. package/dist/app/providers.d.ts +1 -1
  6. package/dist/component/BelongWidget.d.ts +7 -1
  7. package/dist/component/{arc-DPDIJagU.js → arc-BEnKmFiH.js} +2 -2
  8. package/dist/component/{architectureDiagram-3BPJPVTR-WmTdGYxp.js → architectureDiagram-3BPJPVTR-qrW4PiqE.js} +3 -3
  9. package/dist/component/{blockDiagram-GPEHLZMM-myKtXzN1.js → blockDiagram-GPEHLZMM-Cy83RTvZ.js} +4 -4
  10. package/dist/component/{c4Diagram-AAUBKEIU-BbN6n9Vc.js → c4Diagram-AAUBKEIU-DA1KAAqR.js} +3 -3
  11. package/dist/component/{channel-B0H_QP_-.js → channel-S3CulQua.js} +2 -2
  12. package/dist/component/{chunk-2J33WTMH-iwZo17vf.js → chunk-2J33WTMH-B3IpUX0y.js} +2 -2
  13. package/dist/component/{chunk-4BX2VUAB-CKT6dptL.js → chunk-4BX2VUAB-TXwXVoCn.js} +2 -2
  14. package/dist/component/{chunk-55IACEB6-CLJ9pgvn.js → chunk-55IACEB6-TgAuWAzl.js} +2 -2
  15. package/dist/component/{chunk-727SXJPM-BngOIcz0.js → chunk-727SXJPM-CRzAhEpU.js} +6 -6
  16. package/dist/component/{chunk-AQP2D5EJ-iLdnjZec.js → chunk-AQP2D5EJ-BGyYD9fu.js} +4 -4
  17. package/dist/component/{chunk-FMBD7UC4-6uJqTx36.js → chunk-FMBD7UC4-DMPGLPzn.js} +2 -2
  18. package/dist/component/{chunk-ND2GUHAM-BUngsBoq.js → chunk-ND2GUHAM-D4Pq2Sbn.js} +2 -2
  19. package/dist/component/{chunk-QZHKN3VN-CFfcj0kF.js → chunk-QZHKN3VN-pAuUtuaS.js} +2 -2
  20. package/dist/component/{classDiagram-4FO5ZUOK-4Unpku5g.js → classDiagram-4FO5ZUOK-Cfk5JVma.js} +3 -3
  21. package/dist/component/{classDiagram-v2-Q7XG4LA2-4Unpku5g.js → classDiagram-v2-Q7XG4LA2-Cfk5JVma.js} +3 -3
  22. package/dist/component/{cose-bilkent-S5V4N54A-CxgXF1ox.js → cose-bilkent-S5V4N54A-DDqAk-Nd.js} +2 -2
  23. package/dist/component/{dagre-BM42HDAG-CvJZZLBU.js → dagre-BM42HDAG-CRWiZgwY.js} +2 -2
  24. package/dist/component/{diagram-2AECGRRQ-BM26zrSB.js → diagram-2AECGRRQ-vfIORQjw.js} +3 -3
  25. package/dist/component/{diagram-5GNKFQAL-E7W8UahE.js → diagram-5GNKFQAL-BrdNWhYp.js} +4 -4
  26. package/dist/component/{diagram-KO2AKTUF-Cx9n9K8j.js → diagram-KO2AKTUF-BzvQZ4om.js} +3 -3
  27. package/dist/component/{diagram-LMA3HP47-DD5MMO35.js → diagram-LMA3HP47-ByWVR7eR.js} +3 -3
  28. package/dist/component/{diagram-OG6HWLK6-DaiZ4TvN.js → diagram-OG6HWLK6-DFJUF0-3.js} +4 -4
  29. package/dist/component/{erDiagram-TEJ5UH35-ChBEEVA8.js → erDiagram-TEJ5UH35-h-b8M9my.js} +5 -5
  30. package/dist/component/{flowDiagram-I6XJVG4X-DAsWdPx4.js → flowDiagram-I6XJVG4X-Bs5-0VOV.js} +7 -7
  31. package/dist/component/{ganttDiagram-6RSMTGT7-qtGq5aA8.js → ganttDiagram-6RSMTGT7-BFOggcmT.js} +3 -3
  32. package/dist/component/{gitGraphDiagram-PVQCEYII-B-KRbsvH.js → gitGraphDiagram-PVQCEYII-DqyxmsbF.js} +4 -4
  33. package/dist/component/{highlighted-body-OFNGDK62-etsPYV7E.js → highlighted-body-OFNGDK62-Bdj8cutJ.js} +2 -2
  34. package/dist/component/index.js +2 -2
  35. package/dist/component/{infoDiagram-5YYISTIA-BzJ6egpv.js → infoDiagram-5YYISTIA-8md68U3E.js} +2 -2
  36. package/dist/component/{ishikawaDiagram-YF4QCWOH-DnPu1odF.js → ishikawaDiagram-YF4QCWOH-C3xT9wjK.js} +2 -2
  37. package/dist/component/{journeyDiagram-JHISSGLW-BDbOAXFA.js → journeyDiagram-JHISSGLW-BbHXf52q.js} +5 -5
  38. package/dist/component/{kanban-definition-UN3LZRKU-BjvUIgNN.js → kanban-definition-UN3LZRKU-Xcxe9Aqi.js} +3 -3
  39. package/dist/component/{linear-COVcd8bM.js → linear-tnf14jhv.js} +2 -2
  40. package/dist/component/{mermaid-GHXKKRXX-Bk5cDfRV.js → mermaid-GHXKKRXX-DRKI1NOg.js} +31423 -28144
  41. package/dist/component/{mindmap-definition-RKZ34NQL-C0g8QURW.js → mindmap-definition-RKZ34NQL-DT2YOYJT.js} +4 -4
  42. package/dist/component/{pieDiagram-4H26LBE5-Mbexiv4J.js → pieDiagram-4H26LBE5-DnaT-EHy.js} +4 -4
  43. package/dist/component/{quadrantDiagram-W4KKPZXB-BPRDLHzc.js → quadrantDiagram-W4KKPZXB-Chj0SIr_.js} +3 -3
  44. package/dist/component/{requirementDiagram-4Y6WPE33-XjOXpLfB.js → requirementDiagram-4Y6WPE33-C8P86Vfk.js} +4 -4
  45. package/dist/component/{sankeyDiagram-5OEKKPKP-Boo0vXVH.js → sankeyDiagram-5OEKKPKP-BTV3aQxb.js} +2 -2
  46. package/dist/component/{sequenceDiagram-3UESZ5HK-CmZk5hb2.js → sequenceDiagram-3UESZ5HK-CszXtNuQ.js} +4 -4
  47. package/dist/component/{stateDiagram-AJRCARHV-zKdC8ZqU.js → stateDiagram-AJRCARHV-BPKVLcMj.js} +3 -3
  48. package/dist/component/{stateDiagram-v2-BHNVJYJU-C3TFxstc.js → stateDiagram-v2-BHNVJYJU-CAAXRt1C.js} +3 -3
  49. package/dist/component/{timeline-definition-PNZ67QCA-DV17S1NP.js → timeline-definition-PNZ67QCA-CqzXrhgH.js} +3 -3
  50. package/dist/component/{vennDiagram-CIIHVFJN-DtHYS_yc.js → vennDiagram-CIIHVFJN-Cvb9lpke.js} +2 -2
  51. package/dist/component/{wardleyDiagram-YWT4CUSO-BxPk1XTc.js → wardleyDiagram-YWT4CUSO-BzPLaYx7.js} +3 -3
  52. package/dist/component/{xychartDiagram-2RQKCTM6-C3o6FXYC.js → xychartDiagram-2RQKCTM6-C50_ldFc.js} +3 -3
  53. package/dist/components/embed/AgentGrantCard.d.ts +6 -4
  54. package/dist/components/embed/ComposerMenu.d.ts +9 -1
  55. package/dist/components/embed/EmbedRail.d.ts +18 -1
  56. package/dist/components/embed/EmbedSessions.d.ts +6 -4
  57. package/dist/components/embed/MentionInput.d.ts +10 -0
  58. package/dist/components/embed/SlashCommandMenu.d.ts +10 -6
  59. package/dist/components/feedback/feedback-metadata.d.ts +4 -30
  60. package/dist/dev-modal-repro.d.ts +0 -0
  61. package/dist/embed/approval-bus.d.ts +14 -0
  62. package/dist/embed/approval-decision.d.ts +10 -0
  63. package/dist/embed/auto-embed.d.ts +1 -1
  64. package/dist/embed/closed-surface-voice-bus.d.ts +25 -0
  65. package/dist/embed/copy.d.ts +3 -0
  66. package/dist/embed/dock-layout.d.ts +32 -0
  67. package/dist/embed/global.d.ts +4 -3
  68. package/dist/embed/locale.d.ts +24 -5
  69. package/dist/embed/plan-decision.d.ts +3 -1
  70. package/dist/embed/use-workspace-file-download.d.ts +2 -0
  71. package/dist/embed/voice-decision.d.ts +27 -0
  72. package/dist/embed/voice-phrase-match.d.ts +5 -0
  73. package/dist/embed/voice-prefs.d.ts +4 -0
  74. package/dist/embed/voice-send-intent.d.ts +12 -0
  75. package/dist/embed/workspace-scope.d.ts +44 -0
  76. package/dist/i18n/i18n.d.ts +6 -0
  77. package/dist/i18n/index.d.ts +2 -0
  78. package/dist/i18n/messages/en.d.ts +350 -0
  79. package/dist/i18n/messages/es.d.ts +3 -0
  80. package/dist/i18n/messages/surfaces/agentGrant.d.ts +39 -0
  81. package/dist/i18n/messages/surfaces/aiElements.d.ts +101 -0
  82. package/dist/i18n/messages/surfaces/app.d.ts +31 -0
  83. package/dist/i18n/messages/surfaces/embedMisc.d.ts +100 -0
  84. package/dist/i18n/messages/surfaces/feedback.d.ts +19 -0
  85. package/dist/i18n/messages/surfaces/files.d.ts +75 -0
  86. package/dist/i18n/messages/surfaces/header.d.ts +31 -0
  87. package/dist/i18n/messages/surfaces/login.d.ts +17 -0
  88. package/dist/i18n/messages/surfaces/plan.d.ts +35 -0
  89. package/dist/i18n/messages/surfaces/sessions.d.ts +43 -0
  90. package/dist/i18n/messages/surfaces/stream.d.ts +144 -0
  91. package/dist/i18n/messages/surfaces/usage.d.ts +21 -0
  92. package/dist/i18n/messages/types.d.ts +10 -0
  93. package/dist/routes/chat.d.ts +1 -0
  94. package/dist/stream/ai-sdk-part-renderers.d.ts +10 -2
  95. package/dist/stream/belong-chat-transport.d.ts +54 -1
  96. package/dist/stream/belong-data-parts.d.ts +6 -4
  97. package/dist/stream/message-metadata.d.ts +45 -0
  98. package/dist/stream/stream-state-store.d.ts +4 -4
  99. package/dist/types/public.d.ts +20 -4
  100. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
- import { g as oe } from "./chunk-55IACEB6-CLJ9pgvn.js";
2
- import { s as ae } from "./chunk-2J33WTMH-iwZo17vf.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-Bk5cDfRV.js";
1
+ import { g as oe } from "./chunk-55IACEB6-TgAuWAzl.js";
2
+ import { s as ae } from "./chunk-2J33WTMH-B3IpUX0y.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-DRKI1NOg.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-C0g8QURW.js.map
833
+ //# sourceMappingURL=mindmap-definition-RKZ34NQL-DT2YOYJT.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-Bk5cDfRV.js";
2
- import { p as gt } from "./chunk-4BX2VUAB-CKT6dptL.js";
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-DRKI1NOg.js";
2
+ import { p as gt } from "./chunk-4BX2VUAB-TXwXVoCn.js";
3
3
  import { p as dt } from "./wardley-L42UT6IY-HA1eSIS_.js";
4
- import { d as P } from "./arc-DPDIJagU.js";
4
+ import { d as P } from "./arc-BEnKmFiH.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-Mbexiv4J.js.map
166
+ //# sourceMappingURL=pieDiagram-4H26LBE5-DnaT-EHy.js.map
@@ -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-Bk5cDfRV.js";
2
- import { l as te } from "./linear-COVcd8bM.js";
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-DRKI1NOg.js";
2
+ import { l as te } from "./linear-tnf14jhv.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-BPRDLHzc.js.map
1033
+ //# sourceMappingURL=quadrantDiagram-W4KKPZXB-Chj0SIr_.js.map
@@ -1,6 +1,6 @@
1
- import { g as Ge } from "./chunk-55IACEB6-CLJ9pgvn.js";
2
- import { s as ze } from "./chunk-2J33WTMH-iwZo17vf.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-Bk5cDfRV.js";
1
+ import { g as Ge } from "./chunk-55IACEB6-TgAuWAzl.js";
2
+ import { s as ze } from "./chunk-2J33WTMH-B3IpUX0y.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-DRKI1NOg.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-XjOXpLfB.js.map
888
+ //# sourceMappingURL=requirementDiagram-4Y6WPE33-C8P86Vfk.js.map
@@ -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-Bk5cDfRV.js";
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-DRKI1NOg.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-Boo0vXVH.js.map
862
+ //# sourceMappingURL=sankeyDiagram-5OEKKPKP-BTV3aQxb.js.map
@@ -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-Bk5cDfRV.js";
2
- import { a as pr, b as ee, g as dt, d as Er, e as re, f as ae } from "./chunk-ND2GUHAM-BUngsBoq.js";
3
- import { I as ur } from "./chunk-QZHKN3VN-CFfcj0kF.js";
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-DRKI1NOg.js";
2
+ import { a as pr, b as ee, g as dt, d as Er, e as re, f as ae } from "./chunk-ND2GUHAM-D4Pq2Sbn.js";
3
+ import { I as ur } from "./chunk-QZHKN3VN-pAuUtuaS.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-CmZk5hb2.js.map
2897
+ //# sourceMappingURL=sequenceDiagram-3UESZ5HK-CszXtNuQ.js.map
@@ -1,5 +1,5 @@
1
- import { s as R, a as W, S as N } from "./chunk-AQP2D5EJ-iLdnjZec.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-Bk5cDfRV.js";
1
+ import { s as R, a as W, S as N } from "./chunk-AQP2D5EJ-BGyYD9fu.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-DRKI1NOg.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-zKdC8ZqU.js.map
266
+ //# sourceMappingURL=stateDiagram-AJRCARHV-BPKVLcMj.js.map
@@ -1,5 +1,5 @@
1
- import { s as e, b as r, a as s, S as t } from "./chunk-AQP2D5EJ-iLdnjZec.js";
2
- import { _ as l } from "./mermaid-GHXKKRXX-Bk5cDfRV.js";
1
+ import { s as e, b as r, a as s, S as t } from "./chunk-AQP2D5EJ-BGyYD9fu.js";
2
+ import { _ as l } from "./mermaid-GHXKKRXX-DRKI1NOg.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-C3TFxstc.js.map
19
+ //# sourceMappingURL=stateDiagram-v2-BHNVJYJU-CAAXRt1C.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-Bk5cDfRV.js";
2
- import { d as ot } from "./arc-DPDIJagU.js";
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-DRKI1NOg.js";
2
+ import { d as ot } from "./arc-BEnKmFiH.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-DV17S1NP.js.map
1058
+ //# sourceMappingURL=timeline-definition-PNZ67QCA-CqzXrhgH.js.map
@@ -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-Bk5cDfRV.js";
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-DRKI1NOg.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-DtHYS_yc.js.map
1560
+ //# sourceMappingURL=vennDiagram-CIIHVFJN-Cvb9lpke.js.map
@@ -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-Bk5cDfRV.js";
2
- import { p as Bt } from "./chunk-4BX2VUAB-CKT6dptL.js";
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-DRKI1NOg.js";
2
+ import { p as Bt } from "./chunk-4BX2VUAB-TXwXVoCn.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-BxPk1XTc.js.map
681
+ //# sourceMappingURL=wardleyDiagram-YWT4CUSO-BzPLaYx7.js.map
@@ -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-Bk5cDfRV.js";
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-DRKI1NOg.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-COVcd8bM.js";
4
+ import { l as Dt } from "./linear-tnf14jhv.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-C3o6FXYC.js.map
1375
+ //# sourceMappingURL=xychartDiagram-2RQKCTM6-C50_ldFc.js.map
@@ -9,10 +9,12 @@ import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
9
9
  * active → slim "connected until <time>" row + revoke
10
10
  * unconfigured embed → renders nothing (host didn't pass a scope)
11
11
  *
12
- * The scope (the host's active workspace) is re-read from the page URL
13
- * (SPA pushState doesn't fire events, so poll): switching workspace
14
- * re-keys the status query a grant is single-workspace, so the new
15
- * workspace prompts its own consent, and dismissal is per-workspace.
12
+ * The scope (the host's active workspace) comes from the shared
13
+ * workspace-scope store (embed/workspace-scope.ts one URL poll +
14
+ * `belong.setWorkspace`, shared with the session list / Files tab / chat):
15
+ * switching workspace re-keys the status query a grant is
16
+ * single-workspace, so the new workspace prompts its own consent, and
17
+ * dismissal is per-workspace.
16
18
  *
17
19
  * The Allow click POSTs with the same host web JWT every API call
18
20
  * carries; only status + expiry ever come back — never tokens.
@@ -10,6 +10,12 @@ import { ReactNode } from 'react';
10
10
  * refocus stays seamless. Each picker passes its own ids / test-ids / aria-label
11
11
  * (consumed by the composer's `aria-controls` + `aria-activedescendant`) and a
12
12
  * `layout` for the only part that differs — the row's flex direction/gap.
13
+ *
14
+ * The option rows live in their own `overflow-auto` scroll region so a long list
15
+ * scrolls INSIDE the capped popover (`max-h-60`); an optional `header` is pinned
16
+ * above that region (it stays put while the rows scroll). Keyboard highlight
17
+ * follows the scroll — see the selected-row `scrollIntoView` in
18
+ * {@link ComposerMenuOption}.
13
19
  */
14
20
  /** The highlight + select callbacks both composer pickers take from the parent. */
15
21
  export type ComposerPickerProps = {
@@ -17,10 +23,12 @@ export type ComposerPickerProps = {
17
23
  onSelect: (value: string) => void;
18
24
  onHighlight: (index: number) => void;
19
25
  };
20
- export declare function ComposerMenu({ id, testId, ariaLabel, children, }: {
26
+ export declare function ComposerMenu({ id, testId, ariaLabel, header, children, }: {
21
27
  id: string;
22
28
  testId: string;
23
29
  ariaLabel: string;
30
+ /** Pinned above the scroll region — stays visible while the rows scroll. */
31
+ header?: ReactNode;
24
32
  children: ReactNode;
25
33
  }): import("react").JSX.Element;
26
34
  export declare function ComposerMenuOption({ id, testId, selected, index, layout, onSelect, onHighlight, children, }: {
@@ -1,3 +1,5 @@
1
+ import { VoiceActionFlash } from '../../embed/closed-surface-voice-bus.ts';
2
+ import { VoiceStatus } from '../../embed/voice-bus.ts';
1
3
  import { SessionSummary } from './EmbedSessions';
2
4
  import { PlanProgress } from '../../stream/plan-progress.ts';
3
5
  import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.ts';
@@ -9,7 +11,7 @@ export type EmbedView = "chat" | "files";
9
11
  * expand-to-modal — then the collapse toggle. Active fill + brand colours come
10
12
  * from `palette` so a host brand push re-themes everything.
11
13
  */
12
- export declare function EmbedRail({ view, collapsed, user, theme, palette, sessions, activeId, planProgress, speakEnabled, ttsSupported, voiceSupported, accent, cssVars, presets, activePreset, onSelectView, onToggleCollapse, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onSessionsOpen, onToggleSpeak, onExpand, }: {
14
+ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessions, activeId, planProgress, speakEnabled, ttsSupported, voiceSupported, voiceStatus, pendingVoiceDraft, voiceActionFlash, accent, cssVars, presets, activePreset, onSelectView, onToggleCollapse, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onToggleSpeak, onExpand, }: {
13
15
  view: EmbedView;
14
16
  collapsed: boolean;
15
17
  user: string | null;
@@ -24,6 +26,20 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
24
26
  ttsSupported: boolean;
25
27
  /** Browser supports mic capture — gates the avatar menu's Voice section. */
26
28
  voiceSupported: boolean;
29
+ /** Live capture status for the rail's voice cue, or null to show none.
30
+ * The dock passes it only while the chat surface (and thus VoiceOverlay)
31
+ * is off-screen — collapsed or on another view — so push-to-talk still
32
+ * gives visible feedback without yanking the panel open. */
33
+ voiceStatus: VoiceStatus | null;
34
+ /** Held dictation draft shown on the rail while the chat surface is closed
35
+ * and confirm-mode is active; null shows no chip. */
36
+ pendingVoiceDraft: string | null;
37
+ /** Transient action confirmation (sent / approved / rejected); the seq lets a
38
+ * repeated same-kind action re-trigger the flash. */
39
+ voiceActionFlash: {
40
+ readonly kind: VoiceActionFlash;
41
+ readonly seq: number;
42
+ } | null;
27
43
  accent: string | null;
28
44
  cssVars: Record<string, string>;
29
45
  presets: readonly {
@@ -43,6 +59,7 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
43
59
  onNewSession: () => void;
44
60
  onSelectSession: (id: string) => void;
45
61
  onDeleteSession: (id: string) => void;
62
+ onRenameSession: (id: string, title: string) => void;
46
63
  onSessionsOpen?: () => void;
47
64
  onToggleSpeak: () => void;
48
65
  onExpand: () => void;
@@ -5,11 +5,11 @@ export interface SessionSummary {
5
5
  readonly updatedAt: string;
6
6
  }
7
7
  /**
8
- * Header control to start a new chat, switch to a recent session, or delete
9
- * one via an inline trash → confirm flow. Supports new chat, switch, and
10
- * per-row delete (inline confirm).
8
+ * Header control to start a new chat, switch to a recent session, rename one via
9
+ * an inline text edit, or delete one via an inline trash → confirm flow. Rename +
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, onOpen, }: {
12
+ export declare function EmbedSessions({ sessions, activeId, theme, side, onNew, onSelect, onDelete, onRename, onOpen, }: {
13
13
  sessions: readonly SessionSummary[];
14
14
  activeId: string | null;
15
15
  theme: BelongTheme;
@@ -18,6 +18,8 @@ export declare function EmbedSessions({ sessions, activeId, theme, side, onNew,
18
18
  onNew: () => void;
19
19
  onSelect: (id: string) => void;
20
20
  onDelete: (id: string) => void;
21
+ /** Persist a user-chosen chat name (BEL-120). Only fired for a non-blank change. */
22
+ onRename: (id: string, title: string) => void;
21
23
  /** Fired when the menu opens — the dock refetches the list so it's fresh. */
22
24
  onOpen?: () => void;
23
25
  }): import("react").JSX.Element;
@@ -1,5 +1,15 @@
1
1
  import { KeyboardEvent as ReactKeyboardEvent, Ref } from 'react';
2
2
  import { BelongThemePalette } from '../../types/public.ts';
3
+ /**
4
+ * Is the editor the focused element within its OWN root? The dock mounts in a
5
+ * shadow root, where `el.ownerDocument.activeElement` is the shadow HOST (the dock
6
+ * element), never the inner editor — so a document-level focus check always reads
7
+ * "not focused", the caret-restore in the controlled-sync effect is skipped, and
8
+ * the caret collapses to offset 0 on every Shift+Enter / paste (BEL-94).
9
+ * `getRootNode()` returns the ShadowRoot (or Document in the light DOM); both
10
+ * expose `activeElement` scoped to that tree, so this holds in either mount.
11
+ */
12
+ export declare const isEditorFocused: (el: HTMLElement) => boolean;
3
13
  export type MentionInputHandle = {
4
14
  focus: () => void;
5
15
  getCaret: () => number | null;
@@ -2,12 +2,16 @@ import { SkillSummary } from '../../api/skills.ts';
2
2
  import { ComposerPickerProps } from './ComposerMenu';
3
3
  /**
4
4
  * Slash-command menu shown above the composer when the user types `/`. Purely
5
- * presentational — the parent owns the filtered list, highlight, and select.
6
- * Skills render under group headings (app groups, plus a "Your skills" section
7
- * for the user's own installed skills); a header is emitted whenever the group
8
- * changes between consecutive options, so the flat highlight index the parent
9
- * tracks stays intact. Built on the shared {@link ComposerMenu} chrome.
5
+ * presentational — the parent owns the filtered list, highlight, select, and the
6
+ * `collapsed` state. Skills render under group headings (app groups, plus a
7
+ * "Your skills" section for the user's own installed skills); a header is emitted
8
+ * whenever the group changes between consecutive options, so the flat highlight
9
+ * index the parent tracks stays intact. A pinned title bar carries a
10
+ * minimize/expand toggle; when `collapsed`, only that bar shows. Built on the
11
+ * shared {@link ComposerMenu} chrome.
10
12
  */
11
- export declare function SlashCommandMenu({ skills, highlightedIndex, onSelect, onHighlight, }: {
13
+ export declare function SlashCommandMenu({ skills, highlightedIndex, collapsed, onToggleCollapse, onSelect, onHighlight, }: {
12
14
  skills: readonly SkillSummary[];
15
+ collapsed: boolean;
16
+ onToggleCollapse: () => void;
13
17
  } & ComposerPickerProps): import("react").JSX.Element;
@@ -1,36 +1,10 @@
1
- import { z } from 'zod';
1
+ import { BelongMessageMetadata } from '../../stream/message-metadata.ts';
2
2
  import { FeedbackSentiment } from './message-feedback.tsx';
3
- export declare const feedbackMetadataSchema: z.ZodObject<{
4
- taskId: z.ZodString;
5
- feedback: z.ZodOptional<z.ZodNullable<z.ZodObject<{
6
- sentiment: z.ZodEnum<["up", "down"]>;
7
- reason: z.ZodNullable<z.ZodString>;
8
- }, "strip", z.ZodTypeAny, {
9
- reason: string | null;
10
- sentiment: "up" | "down";
11
- }, {
12
- reason: string | null;
13
- sentiment: "up" | "down";
14
- }>>>;
15
- }, "strip", z.ZodTypeAny, {
16
- taskId: string;
17
- feedback?: {
18
- reason: string | null;
19
- sentiment: "up" | "down";
20
- } | null | undefined;
21
- }, {
22
- taskId: string;
23
- feedback?: {
24
- reason: string | null;
25
- sentiment: "up" | "down";
26
- } | null | undefined;
27
- }>;
28
3
  /**
29
- * Narrow an assistant message's `unknown` metadata to its feedback shape, or
30
- * null when it carries no taskId (user turns, pre-feedback rows) — which hides
31
- * the feedback row.
4
+ * Flatten a message's metadata to its feedback shape, or null when it carries
5
+ * no taskId (user turns, pre-feedback rows) — which hides the feedback row.
32
6
  */
33
- export declare const readFeedbackMetadata: (meta: unknown) => {
7
+ export declare const readFeedbackMetadata: (meta: BelongMessageMetadata | undefined) => {
34
8
  readonly taskId: string;
35
9
  readonly sentiment: FeedbackSentiment | null;
36
10
  readonly reason: string | null;
File without changes
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Registry of tool-approval cards awaiting a decision, so the voice transcript
3
+ * handler in ChatRoute can resolve one hands-free (chat surface closed) without
4
+ * reaching into a card's local state. Each ApprovalRenderer registers while its
5
+ * card is actionable and calls the returned cleanup on resolve/unmount. `peek`
6
+ * returns the most-recently-registered entry — the card the user is answering.
7
+ */
8
+ export type ApprovalCardDecision = "approved" | "rejected" | "amend_requested";
9
+ export type PendingApproval = {
10
+ readonly approvalId: string;
11
+ readonly resolve: (decision: ApprovalCardDecision) => void;
12
+ };
13
+ export declare const registerPendingApproval: (entry: PendingApproval) => (() => void);
14
+ export declare const peekPendingApproval: () => PendingApproval | null;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Spoken tool-approval decision (pure, no DOM). While a `data-approval-request`
3
+ * card is actionable, a final voice transcript is classified into the card's
4
+ * wire decisions. Safety bias mirrors plan-decision: a modification marker
5
+ * anywhere → amend_requested (never approve/reject a card the user wants
6
+ * changed); reject checked before approve; unrecognized speech → "unclear",
7
+ * which the caller ignores rather than resolving the card by accident.
8
+ */
9
+ export type ApprovalVoiceDecision = "approved" | "rejected" | "amend_requested" | "unclear";
10
+ export declare const interpretApprovalDecision: (transcript: string) => ApprovalVoiceDecision;
@@ -4,7 +4,7 @@
4
4
  * Lets a host drop the dock in with a single tag and no glue JS:
5
5
  *
6
6
  * <script src="https://…/belong-a3s-sdk.js" id="belong-sdk-script"
7
- * data-backend="https://api.example.com"></script>
7
+ * data-backend="https://api.example.com" data-locale="es"></script>
8
8
  *
9
9
  * On load we find that tag, read `data-backend`, and — for hosts that sign the
10
10
  * user in with Auth0 (e.g. Simetrik) — read the user's EXISTING access token
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Coordinates CLOSED-surface voice UI state between the two always-mounted
3
+ * sibling components: BelongDock (owns the rail + collapse/view) publishes
4
+ * `surfaceHidden`; ChatRoute (owns conversation + draft) publishes the pending
5
+ * dictation draft and fires a transient action flash. BelongDock feeds the
6
+ * draft + flash into the rail as props. One immutable snapshot per mutation so
7
+ * `useSyncExternalStore` observes identity changes.
8
+ */
9
+ export type VoiceActionFlash = "sent" | "approved" | "rejected";
10
+ export type ClosedSurfaceVoiceState = {
11
+ readonly surfaceHidden: boolean;
12
+ readonly pendingDraft: string | null;
13
+ readonly lastAction: {
14
+ readonly kind: VoiceActionFlash;
15
+ readonly seq: number;
16
+ } | null;
17
+ };
18
+ export declare const subscribeClosedSurfaceVoice: (listener: () => void) => (() => void);
19
+ export declare const peekClosedSurfaceVoice: () => ClosedSurfaceVoiceState;
20
+ export declare const peekSurfaceHidden: () => boolean;
21
+ export declare const peekPendingDraft: () => string | null;
22
+ export declare const setSurfaceHidden: (hidden: boolean) => void;
23
+ export declare const setPendingDraft: (text: string | null) => void;
24
+ export declare const flashVoiceAction: (kind: VoiceActionFlash) => void;
25
+ export declare const __resetClosedSurfaceVoiceForTest: () => void;
@@ -42,6 +42,9 @@ export type MenuCopy = {
42
42
  readonly pressAnyKey: string;
43
43
  readonly change: string;
44
44
  readonly reset: string;
45
+ readonly voiceSend: string;
46
+ readonly voiceSendConfirm: string;
47
+ readonly voiceSendAuto: string;
45
48
  readonly style: string;
46
49
  readonly appearance: string;
47
50
  readonly accentColor: string;
@@ -24,6 +24,38 @@ export declare const resolveDockWidthPx: (state: DockResizeState, panelWidth: nu
24
24
  * reflow of text at every intermediate width.
25
25
  */
26
26
  export declare const resolvePanelWidthPx: (state: DockResizeState, panelWidth: number) => number;
27
+ /** Clearance a host modal needs from the dock before we consider it clear. */
28
+ export declare const HOST_MODAL_GUTTER_PX = 16;
29
+ /**
30
+ * BEL-112: would a host modal at `rect` land under a dock reserving
31
+ * `reservePx` on `side` of a `viewportWidthPx` viewport? Pure geometry — the
32
+ * caller decides what to do about it (yield: collapse to the rail).
33
+ */
34
+ export declare const hostModalOverlapsReserve: (rect: {
35
+ readonly left: number;
36
+ readonly right: number;
37
+ }, viewportWidthPx: number, side: "left" | "right", reservePx: number) => boolean;
38
+ /**
39
+ * BEL-112 "side to side": the signed `margin-left` (px) that pushes a host
40
+ * modal at `rect` (its UNSHIFTED position) out from under the dock — negative
41
+ * shifts left for a right dock, positive shifts right for a left dock. 0 when
42
+ * it's already clear. Margin composes with the host's own `left: 50%;
43
+ * translateX(-50%)` centering AND its open/close transform animations,
44
+ * so the push never fights either.
45
+ */
46
+ export declare const resolveHostModalShiftPx: (rect: {
47
+ readonly left: number;
48
+ readonly right: number;
49
+ }, viewportWidthPx: number, side: "left" | "right", reservePx: number) => number;
50
+ /**
51
+ * Can the modal clear the dock by shifting alone — i.e. after the shift it
52
+ * still sits fully on-screen (a gutter from the far edge)? When false the
53
+ * dock must yield instead (collapse to the rail).
54
+ */
55
+ export declare const canHostModalFitBesideDock: (rect: {
56
+ readonly left: number;
57
+ readonly right: number;
58
+ }, viewportWidthPx: number, side: "left" | "right", reservePx: number) => boolean;
27
59
  /** Collapse toggle: any open state → collapsed; collapsed → expanded. */
28
60
  export declare const nextOnToggleCollapse: (state: DockResizeState) => DockResizeState;
29
61
  /** Modal toggle: expanded ↔ modal; no-op while collapsed. */
@@ -29,9 +29,10 @@ export declare const peekPanelEnabled: () => boolean;
29
29
  */
30
30
  export declare const peekAgentGrantConfig: () => AgentGrantConfig | null;
31
31
  /**
32
- * The CURRENT scope: the live URL param when tracking is configured (the
33
- * host SPA rewrites it on workspace switch without a reload), else the
34
- * static value from init. Null = no scope grant surface hidden.
32
+ * The CURRENT scope: resolved by the workspace-scope store (host override
33
+ * live URL param static init value see embed/workspace-scope.ts, which
34
+ * the whole dock keys off). Null = no grant config or no workspace in effect
35
+ * → grant surface hidden.
35
36
  */
36
37
  export declare const resolveAgentGrantScope: () => {
37
38
  provider: string;
@@ -1,18 +1,37 @@
1
1
  import { BelongLocale } from '../types/public.ts';
2
2
  export type Locale = BelongLocale;
3
3
  export declare const DEFAULT_LOCALE: Locale;
4
- /** Set the host/tenant default locale (from `init`); user choice still wins. */
4
+ /** Narrow an untrusted value (attribute, storage, navigator) to a Locale. */
5
+ export declare const parseLocale: (value: unknown) => Locale | null;
6
+ /**
7
+ * Declarative host/tenant default (from `init` / the React `locale` prop).
8
+ * The FIRST call seeds the deployment default — a stored user choice still
9
+ * wins. A LATER call with a different value is the host switching language
10
+ * at runtime (BEL-140): it drops the user override so the switch is visible.
11
+ * Re-applying the same value (React effect re-runs, re-`init`) is a no-op.
12
+ */
5
13
  export declare const configureLocale: (locale: Locale | undefined) => void;
14
+ /**
15
+ * Imperative host switch (`belong.setLocale`, a `data-locale` attribute flip).
16
+ * Always applies and drops the user override — the host just told us the page
17
+ * language changed NOW.
18
+ */
19
+ export declare const setHostLocale: (locale: Locale) => void;
6
20
  export declare const subscribeLocale: (listener: () => void) => (() => void);
7
- /** The effective locale: user choice, else host default, else English. */
21
+ /** The effective locale: user choice host locale browser ▸ English. */
8
22
  export declare const peekLocale: () => Locale;
9
23
  /** The user's explicit choice, or null when none (host default applies). */
10
24
  export declare const peekUserLocale: () => Locale | null;
11
- /** Persist the user's language choice and notify subscribers. */
25
+ /** Persist the user's in-dock language choice and notify subscribers. */
12
26
  export declare const setUserLocale: (locale: Locale) => void;
13
- /** Drop the user override (back to the host default / English). */
27
+ /** Drop the user override (back to the host default / browser / English). */
14
28
  export declare const clearUserLocale: () => void;
15
29
  /** `useSyncExternalStore` hook — the effective locale, re-rendering on change. */
16
30
  export declare const useLocale: () => Locale;
17
- /** Test-only: clear listeners + host default and re-seed the user choice. */
31
+ /**
32
+ * Test-only: reset host locale and re-seed the user choice from storage.
33
+ * Deliberately KEEPS the listener set — the i18next instance (`@sdk/i18n`)
34
+ * subscribes once at module load, and clearing it would silently detach the
35
+ * catalogs from the store for the rest of the test file.
36
+ */
18
37
  export declare const __resetLocaleForTest: () => void;
@@ -1,6 +1,8 @@
1
1
  import { PlanData } from '../stream/belong-data-parts.ts';
2
2
  export type PlanDecision = "approve" | "reject" | "feedback";
3
- /** Classify a final voice transcript while a plan is awaiting a decision. */
3
+ /** Classify a final voice transcript while a plan is awaiting a decision. A
4
+ * modification marker (or anything unrecognized) is "feedback" — forwarded to
5
+ * the agent verbatim rather than approving/rejecting a plan the user is tweaking. */
4
6
  export declare const interpretPlanDecision: (transcript: string) => PlanDecision;
5
7
  /**
6
8
  * Spoken announcement for a freshly proposed plan: title, summary, step
@@ -10,6 +10,8 @@
10
10
  * `onError` so each component keeps its own `error` state (also used by its
11
11
  * `load()` flow).
12
12
  */
13
+ /** `path` (+ the current workspace scope) as a workspace-file query string. */
14
+ export declare const workspaceFileQuery: (path: string) => string;
13
15
  export declare function useWorkspaceFileDownload(apiBaseUrl: string, onError: (message: string | null) => void): {
14
16
  download: (path: string) => Promise<void>;
15
17
  downloading: string | null;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Shared spoken-decision classifier for the two places we accept a voice
3
+ * approve/reject: a proposed plan (`plan-decision.ts`) and a tool-approval card
4
+ * (`approval-decision.ts`). Both apply the same safety ordering — a modification
5
+ * marker anywhere wins, reject is checked before approve, and bare yes/no/ok
6
+ * only decide on short utterances — over their own vocabularies, then map the
7
+ * outcome to their own domain type. Keeping the algorithm here (not copied into
8
+ * each caller) is the single source for that ordering.
9
+ */
10
+ /** Per-caller vocabulary + the short-utterance bound for bare words. */
11
+ export type DecisionVocab = {
12
+ /** Modification markers — any occurrence routes to "marker" (feedback/amend). */
13
+ readonly markers: readonly string[];
14
+ /** Unambiguous reject phrases, matched as a word-boundary prefix. */
15
+ readonly rejectPhrases: readonly string[];
16
+ /** Unambiguous approve phrases, matched as a word-boundary prefix. */
17
+ readonly approvePhrases: readonly string[];
18
+ /** Bare rejects ("no"…) — decide only as the first word of a short utterance. */
19
+ readonly bareRejectWords: readonly string[];
20
+ /** Bare approvals ("yes"…) — decide only as the first word of a short utterance. */
21
+ readonly bareApproveWords: readonly string[];
22
+ /** Bare words decide only when the utterance is at most this many words. */
23
+ readonly maxBareWords: number;
24
+ };
25
+ export type DecisionOutcome = "approve" | "reject" | "marker" | "none";
26
+ /** Classify a final voice transcript against a caller's decision vocabulary. */
27
+ export declare const classifyDecision: (transcript: string, vocab: DecisionVocab) => DecisionOutcome;
@@ -0,0 +1,5 @@
1
+ /** Shared voice-transcript normalization + word-prefix matching. */
2
+ /** Lowercase, strip diacritics + punctuation, collapse whitespace. */
3
+ export declare const normalizeTranscript: (transcript: string) => string;
4
+ /** True when `phrase` is a word-boundary prefix of the utterance's words. */
5
+ export declare const startsWithPhrase: (words: readonly string[], phrase: string) => boolean;