@belonguniverseai/react-sdk 0.6.3 → 0.6.5

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 (87) hide show
  1. package/dist/api/agent-grants.d.ts +17 -8
  2. package/dist/api/client.d.ts +220 -3
  3. package/dist/api/pre-prompts.d.ts +80 -0
  4. package/dist/api/queries.d.ts +2 -0
  5. package/dist/api/query-keys.d.ts +4 -0
  6. package/dist/api/skills.d.ts +8 -3
  7. package/dist/component/{abnfDiagram-N423BO3Z-C1O9dfJJ.js → abnfDiagram-N423BO3Z-DXtYRs-k.js} +4 -4
  8. package/dist/component/{arc-Cpnt_LFj.js → arc-k2puh3QC.js} +2 -2
  9. package/dist/component/{architectureDiagram-T3A2C74G-iakL6yUj.js → architectureDiagram-T3A2C74G-DAmYa1QR.js} +3 -3
  10. package/dist/component/{blockDiagram-VBNYF7ZC-D7t0jIvW.js → blockDiagram-VBNYF7ZC-zXWS_7FA.js} +4 -4
  11. package/dist/component/{c4Diagram-5PPSVZJV-CRX1o0CJ.js → c4Diagram-5PPSVZJV-DrhhcFC2.js} +3 -3
  12. package/dist/component/{channel-DnM50Ep0.js → channel-BradwEzR.js} +2 -2
  13. package/dist/component/{chunk-2GRJ4B5K-ChTMjM-v.js → chunk-2GRJ4B5K-CFlVgxT_.js} +2 -2
  14. package/dist/component/{chunk-2Q5K7J3B-F2Rpvtwm.js → chunk-2Q5K7J3B-BWVz-RZT.js} +2 -2
  15. package/dist/component/{chunk-5RXB4S5H-B1WLx-ex.js → chunk-5RXB4S5H-DzGJLYck.js} +5 -5
  16. package/dist/component/{chunk-5VM5RSS4-D35VMAuN.js → chunk-5VM5RSS4-BiYvFRMB.js} +2 -2
  17. package/dist/component/{chunk-6Q2QTUOP-DGVp_gyk.js → chunk-6Q2QTUOP-DKkDhyrb.js} +2 -2
  18. package/dist/component/{chunk-GF5L2VYU-CZOQEv_q.js → chunk-GF5L2VYU-DQDnIvXz.js} +6 -6
  19. package/dist/component/{chunk-JWPE2WC7-BbwyDj9g.js → chunk-JWPE2WC7-xUoyVsyD.js} +2 -2
  20. package/dist/component/{chunk-KBJHAD2P-B9qL0VLM.js → chunk-KBJHAD2P-CeI2oVSe.js} +2 -2
  21. package/dist/component/{chunk-RYQCIY6F-5eaMbXXL.js → chunk-RYQCIY6F-DC_eKBFo.js} +2 -2
  22. package/dist/component/{chunk-XXDRQBXY-XJadTIK5.js → chunk-XXDRQBXY-Chbw9HR0.js} +2 -2
  23. package/dist/component/{classDiagram-JCYQIIEL-DVaEk7uT.js → classDiagram-JCYQIIEL-Cm5ICyOE.js} +3 -3
  24. package/dist/component/{classDiagram-v2-OCEON4UE-DVaEk7uT.js → classDiagram-v2-OCEON4UE-Cm5ICyOE.js} +3 -3
  25. package/dist/component/{cose-bilkent-JH36ORCC-DZA30AqI.js → cose-bilkent-JH36ORCC-DaXtU49r.js} +2 -2
  26. package/dist/component/{cynefinDiagram-MW4NZA55-CutZScTQ.js → cynefinDiagram-MW4NZA55-QC8TFvBp.js} +3 -3
  27. package/dist/component/{dagre-VZM6K2ZE-CelPLP8N.js → dagre-VZM6K2ZE-C2OOSYgW.js} +3 -3
  28. package/dist/component/{diagram-7IWD3JNH-Cr5piwKc.js → diagram-7IWD3JNH-Cax2R3mQ.js} +4 -4
  29. package/dist/component/{diagram-B4RE2ZJO-DgLNdZkh.js → diagram-B4RE2ZJO-Cx3_tBen.js} +3 -3
  30. package/dist/component/{diagram-LBJQPF4R-DxeIMTjN.js → diagram-LBJQPF4R-Cv3oJQdh.js} +3 -3
  31. package/dist/component/{diagram-Q27KOJAE-WACyk_gr.js → diagram-Q27KOJAE-C41GeN84.js} +4 -4
  32. package/dist/component/{diagram-UB23O5K3-DbhVYU5T.js → diagram-UB23O5K3-CNmh6MHJ.js} +3 -3
  33. package/dist/component/{ebnfDiagram-BXEA7PRR-DoGrYW10.js → ebnfDiagram-BXEA7PRR-BLWo9Cro.js} +4 -4
  34. package/dist/component/{erDiagram-JOGREHBK-BgewA6fH.js → erDiagram-JOGREHBK-zOwSdp7J.js} +5 -5
  35. package/dist/component/{flowDiagram-UKHOOZJN-1YmYJYcE.js → flowDiagram-UKHOOZJN-DDHQ3RkH.js} +7 -7
  36. package/dist/component/{ganttDiagram-PKOTCBZU-BFAEPYkH.js → ganttDiagram-PKOTCBZU-CXfR2efe.js} +3 -3
  37. package/dist/component/{gitGraphDiagram-DS77QQ5N-CSiPuE-l.js → gitGraphDiagram-DS77QQ5N-CxtaDoUb.js} +4 -4
  38. package/dist/component/{highlighted-body-OFNGDK62-CSJNGt18.js → highlighted-body-OFNGDK62-C4THAl8M.js} +2 -2
  39. package/dist/component/index.js +2 -2
  40. package/dist/component/{infoDiagram-6WML65LV-CoMVfONe.js → infoDiagram-6WML65LV-CJwjv6J3.js} +2 -2
  41. package/dist/component/{ishikawaDiagram-WSZJBQD7-B2YEkQ4b.js → ishikawaDiagram-WSZJBQD7-CtQFMhUI.js} +2 -2
  42. package/dist/component/{journeyDiagram-NVQOT4AX-B7b5ZwlF.js → journeyDiagram-NVQOT4AX-D0YCMj2N.js} +5 -5
  43. package/dist/component/{kanban-definition-27J2QSJJ-C9GPAsBR.js → kanban-definition-27J2QSJJ-DtT1k--r.js} +3 -3
  44. package/dist/component/{linear-Bi0C-9d1.js → linear-98AY9cNO.js} +2 -2
  45. package/dist/component/{mermaid-GHXKKRXX-BaBCeViM.js → mermaid-GHXKKRXX-CpyPA4Tq.js} +29693 -28685
  46. package/dist/component/{mindmap-definition-FAOFIHXS-tHIAo7Ms.js → mindmap-definition-FAOFIHXS-Cb4ZDYiB.js} +4 -4
  47. package/dist/component/{pegDiagram-VL7TDLO6-Db_7lLRV.js → pegDiagram-VL7TDLO6-3n9pdqFl.js} +4 -4
  48. package/dist/component/{pieDiagram-7S7Q4E2Y-C4fs4XCK.js → pieDiagram-7S7Q4E2Y-BdX_Nmhs.js} +4 -4
  49. package/dist/component/{quadrantDiagram-CIZ2JOQS-Bw7vXO0q.js → quadrantDiagram-CIZ2JOQS-B23YDXjA.js} +3 -3
  50. package/dist/component/{railroadDiagram-AXF67PYL-kY0VoZEg.js → railroadDiagram-AXF67PYL-D-KttLwV.js} +4 -4
  51. package/dist/component/{requirementDiagram-LRYGKXZP-BkNtSZm5.js → requirementDiagram-LRYGKXZP-mg4T4J5m.js} +4 -4
  52. package/dist/component/{sankeyDiagram-W5VNT64P-BK_C1BYE.js → sankeyDiagram-W5VNT64P-DSJ1i2V9.js} +2 -2
  53. package/dist/component/{sequenceDiagram-SI44F4Z6-CEmgVZaE.js → sequenceDiagram-SI44F4Z6-5ASel8SG.js} +4 -4
  54. package/dist/component/{sizeCapture-X5ZJPWSS-J5ZNXT4c.js → sizeCapture-X5ZJPWSS-DhE5AZVC.js} +2 -2
  55. package/dist/component/{stateDiagram-OKZ733FA-DrwrNuNs.js → stateDiagram-OKZ733FA-BDvRPjM1.js} +3 -3
  56. package/dist/component/{stateDiagram-v2-UEYNNEHI-DHD85VTD.js → stateDiagram-v2-UEYNNEHI-gO2Xq1pR.js} +3 -3
  57. package/dist/component/{swimlanes-SLNWSIFB-FOK5tys1.js → swimlanes-SLNWSIFB-BppNVeHn.js} +4 -4
  58. package/dist/component/{swimlanesDiagram-ULZ7WXOC-edTvZTge.js → swimlanesDiagram-ULZ7WXOC-DW8klrQx.js} +3 -3
  59. package/dist/component/{timeline-definition-Z64GVDOM-Cc4fTsjY.js → timeline-definition-Z64GVDOM-7bTdkHDS.js} +3 -3
  60. package/dist/component/{vennDiagram-T6HMQDX7-DYZl8srI.js → vennDiagram-T6HMQDX7-BZGZh-tM.js} +2 -2
  61. package/dist/component/{wardleyDiagram-T6FBY63Y-BEvv3PjS.js → wardleyDiagram-T6FBY63Y-Dq_yq7ay.js} +3 -3
  62. package/dist/component/{xychartDiagram-ELKLHX3M-79AgTtk-.js → xychartDiagram-ELKLHX3M-C5Pwwmdi.js} +3 -3
  63. package/dist/components/embed/EmbedComposer.d.ts +16 -1
  64. package/dist/components/embed/EmbedRail.d.ts +5 -1
  65. package/dist/components/embed/MentionInput.d.ts +7 -0
  66. package/dist/components/embed/MobileNavBar.d.ts +5 -2
  67. package/dist/components/embed/SavePromptDialog.d.ts +11 -0
  68. package/dist/components/embed/save-prompt-name.d.ts +39 -0
  69. package/dist/components/embed/use-preview-bytes.d.ts +5 -0
  70. package/dist/components/prompts/ConfirmDeletePromptDialog.d.ts +13 -0
  71. package/dist/components/prompts/EditPromptDialog.d.ts +14 -0
  72. package/dist/components/prompts/PromptsListSurface.d.ts +21 -0
  73. package/dist/embed/copy.d.ts +9 -0
  74. package/dist/embed/dock-state.d.ts +1 -1
  75. package/dist/embed/legal-disclaimer.d.ts +6 -0
  76. package/dist/embed/prompt-slots.d.ts +26 -0
  77. package/dist/embed/slash-commands.d.ts +45 -0
  78. package/dist/embed/voice-unlock.d.ts +36 -0
  79. package/dist/i18n/messages/en.d.ts +41 -0
  80. package/dist/i18n/messages/surfaces/embedMisc.d.ts +3 -0
  81. package/dist/i18n/messages/surfaces/header.d.ts +3 -0
  82. package/dist/i18n/messages/surfaces/prompts.d.ts +158 -0
  83. package/dist/routes/prompts.d.ts +2 -0
  84. package/dist/stream/belong-chat-transport.d.ts +1 -0
  85. package/dist/stream/belong-data-parts.d.ts +2 -0
  86. package/dist/stream/queued-message-outbox.d.ts +25 -0
  87. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- import { g as oe } from "./chunk-XXDRQBXY-XJadTIK5.js";
2
- import { s as ae } from "./chunk-KBJHAD2P-B9qL0VLM.js";
3
- import { _ as l, l as C, v as ce, x as le, z as he, E as G, c as B, i as F, b9 as de, ad as ge, ae as ue, af as pe } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { g as oe } from "./chunk-XXDRQBXY-Chbw9HR0.js";
2
+ import { s as ae } from "./chunk-KBJHAD2P-CeI2oVSe.js";
3
+ import { _ as l, l as C, v as ce, x as le, z as he, E as G, c as B, i as F, b9 as de, ad as ge, ae as ue, af as pe } from "./mermaid-GHXKKRXX-CpyPA4Tq.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-FAOFIHXS-tHIAo7Ms.js.map
833
+ //# sourceMappingURL=mindmap-definition-FAOFIHXS-Cb4ZDYiB.js.map
@@ -1,6 +1,6 @@
1
- import { g as i, r as m, d as a } from "./chunk-6Q2QTUOP-DGVp_gyk.js";
2
- import { p } from "./chunk-JWPE2WC7-BbwyDj9g.js";
3
- import { _ as t, l as o } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { g as i, r as m, d as a } from "./chunk-6Q2QTUOP-DKkDhyrb.js";
2
+ import { p } from "./chunk-JWPE2WC7-xUoyVsyD.js";
3
+ import { _ as t, l as o } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
4
4
  import { M as u, d as c } from "./cynefin-VYW2F7L2-DAyxamLw.js";
5
5
  globalThis.process = globalThis.process || { env: {} };
6
6
  globalThis.global = globalThis.global || globalThis;
@@ -95,4 +95,4 @@ var f = c().RailroadPeg.parser.LangiumParser, l = /* @__PURE__ */ t((e) => {
95
95
  export {
96
96
  S as diagram
97
97
  };
98
- //# sourceMappingURL=pegDiagram-VL7TDLO6-Db_7lLRV.js.map
98
+ //# sourceMappingURL=pegDiagram-VL7TDLO6-3n9pdqFl.js.map
@@ -1,7 +1,7 @@
1
- import { p as at } from "./chunk-JWPE2WC7-BbwyDj9g.js";
2
- import { V as D, K as P, b8 as rt, g as nt, s as it, a as ot, b as st, p as lt, o as ct, _ as d, l as B, c as gt, D as ut, G as dt, a4 as ht, e as pt, q as ft, E as mt } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { p as at } from "./chunk-JWPE2WC7-xUoyVsyD.js";
2
+ import { V as D, K as P, b8 as rt, g as nt, s as it, a as ot, b as st, p as lt, o as ct, _ as d, l as B, c as gt, D as ut, G as dt, a4 as ht, e as pt, q as ft, E as mt } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
3
  import { p as vt } from "./cynefin-VYW2F7L2-DAyxamLw.js";
4
- import { d as X } from "./arc-Cpnt_LFj.js";
4
+ import { d as X } from "./arc-k2puh3QC.js";
5
5
  import { o as xt } from "./ordinal-D0x7izaa.js";
6
6
  globalThis.process = globalThis.process || { env: {} };
7
7
  globalThis.global = globalThis.global || globalThis;
@@ -207,4 +207,4 @@ var At = mt.pie, I = {
207
207
  export {
208
208
  It as diagram
209
209
  };
210
- //# sourceMappingURL=pieDiagram-7S7Q4E2Y-C4fs4XCK.js.map
210
+ //# sourceMappingURL=pieDiagram-7S7Q4E2Y-BdX_Nmhs.js.map
@@ -1,5 +1,5 @@
1
- import { s as Se, g as _e, p as ee, o as Ae, a as ke, b as Fe, _ as r, c as Et, l as qt, d as vt, e as Pe, q as ve, E as z, i as Ce, Z as Le } from "./mermaid-GHXKKRXX-BaBCeViM.js";
2
- import { l as te } from "./linear-Bi0C-9d1.js";
1
+ import { s as Se, g as _e, p as ee, o as Ae, a as ke, b as Fe, _ as r, c as Et, l as qt, d as vt, e as Pe, q as ve, E as z, i as Ce, Z as Le } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
2
+ import { l as te } from "./linear-98AY9cNO.js";
3
3
  globalThis.process = globalThis.process || { env: {} };
4
4
  globalThis.global = globalThis.global || globalThis;
5
5
  var Ct = (function() {
@@ -1029,4 +1029,4 @@ var ze = /* @__PURE__ */ r(function() {
1029
1029
  export {
1030
1030
  Ne as diagram
1031
1031
  };
1032
- //# sourceMappingURL=quadrantDiagram-CIZ2JOQS-Bw7vXO0q.js.map
1032
+ //# sourceMappingURL=quadrantDiagram-CIZ2JOQS-B23YDXjA.js.map
@@ -1,6 +1,6 @@
1
- import { g as o, r as i, d as t } from "./chunk-6Q2QTUOP-DGVp_gyk.js";
2
- import { p } from "./chunk-JWPE2WC7-BbwyDj9g.js";
3
- import { _ as l, l as n } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { g as o, r as i, d as t } from "./chunk-6Q2QTUOP-DKkDhyrb.js";
2
+ import { p } from "./chunk-JWPE2WC7-xUoyVsyD.js";
3
+ import { _ as l, l as n } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
4
4
  import { M as m, c as u } from "./cynefin-VYW2F7L2-DAyxamLw.js";
5
5
  globalThis.process = globalThis.process || { env: {} };
6
6
  globalThis.global = globalThis.global || globalThis;
@@ -77,4 +77,4 @@ var d = u().Railroad.parser.LangiumParser, a = /* @__PURE__ */ l((e) => {
77
77
  export {
78
78
  E as diagram
79
79
  };
80
- //# sourceMappingURL=railroadDiagram-AXF67PYL-kY0VoZEg.js.map
80
+ //# sourceMappingURL=railroadDiagram-AXF67PYL-D-KttLwV.js.map
@@ -1,6 +1,6 @@
1
- import { g as ze } from "./chunk-XXDRQBXY-XJadTIK5.js";
2
- import { s as Ge } from "./chunk-KBJHAD2P-B9qL0VLM.js";
3
- import { _ as h, z as Ye, b as Xe, a as Je, s as Ze, g as et, o as tt, p as st, c as ke, l as Ne, q as it, u as rt, v as nt, x as at, y as lt } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { g as ze } from "./chunk-XXDRQBXY-Chbw9HR0.js";
2
+ import { s as Ge } from "./chunk-KBJHAD2P-CeI2oVSe.js";
3
+ import { _ as h, z as Ye, b as Xe, a as Je, s as Ze, g as et, o as tt, p as st, c as ke, l as Ne, q as it, u as rt, v as nt, x as at, y as lt } from "./mermaid-GHXKKRXX-CpyPA4Tq.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-LRYGKXZP-BkNtSZm5.js.map
888
+ //# sourceMappingURL=requirementDiagram-LRYGKXZP-mg4T4J5m.js.map
@@ -1,4 +1,4 @@
1
- import { o as kt, p as mt, s as xt, g as _t, b as vt, a as bt, _ as y, c as ot, bc as St, d as G, ag as wt, q as Lt, k as Et } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { o as kt, p as mt, s as xt, g as _t, b as vt, a as bt, _ as y, c as ot, bc as St, d as G, ag as wt, q as Lt, k as Et } from "./mermaid-GHXKKRXX-CpyPA4Tq.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-W5VNT64P-BK_C1BYE.js.map
862
+ //# sourceMappingURL=sankeyDiagram-W5VNT64P-DSJ1i2V9.js.map
@@ -1,6 +1,6 @@
1
- import { I as tr } from "./chunk-2Q5K7J3B-F2Rpvtwm.js";
2
- import { _ as x, $ as er, c as $, d as Vt, l as at, j as Ce, e as rr, f as ar, k as N, b as ke, s as sr, o as ir, a as nr, g as or, p as cr, a0 as lr, a1 as hr, q as dr, i as Yt, y as Z, a2 as Q, a3 as Pt, a4 as Me, a5 as Tr, z as Kt, a6 as pr, a7 as Be } from "./mermaid-GHXKKRXX-BaBCeViM.js";
3
- import { a as Er, b as ae, g as dt, d as ur, c as se, e as ie } from "./chunk-2GRJ4B5K-ChTMjM-v.js";
1
+ import { I as tr } from "./chunk-2Q5K7J3B-BWVz-RZT.js";
2
+ import { _ as x, $ as er, c as $, d as Vt, l as at, j as Ce, e as rr, f as ar, k as N, b as ke, s as sr, o as ir, a as nr, g as or, p as cr, a0 as lr, a1 as hr, q as dr, i as Yt, y as Z, a2 as Q, a3 as Pt, a4 as Me, a5 as Tr, z as Kt, a6 as pr, a7 as Be } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
+ import { a as Er, b as ae, g as dt, d as ur, c as se, e as ie } from "./chunk-2GRJ4B5K-CFlVgxT_.js";
4
4
  globalThis.process = globalThis.process || { env: {} };
5
5
  globalThis.global = globalThis.global || globalThis;
6
6
  var te = (function() {
@@ -2891,4 +2891,4 @@ var ra = /* @__PURE__ */ x(async function(e, t, a) {
2891
2891
  export {
2892
2892
  Ta as diagram
2893
2893
  };
2894
- //# sourceMappingURL=sequenceDiagram-SI44F4Z6-CEmgVZaE.js.map
2894
+ //# sourceMappingURL=sequenceDiagram-SI44F4Z6-5ASel8SG.js.map
@@ -1,4 +1,4 @@
1
- import { _ as t } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { _ as t } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
2
2
  globalThis.process = globalThis.process || { env: {} };
3
3
  globalThis.global = globalThis.global || globalThis;
4
4
  var l = 1;
@@ -46,4 +46,4 @@ export {
46
46
  p as captureNodeSizes,
47
47
  c as shouldCaptureSizes
48
48
  };
49
- //# sourceMappingURL=sizeCapture-X5ZJPWSS-J5ZNXT4c.js.map
49
+ //# sourceMappingURL=sizeCapture-X5ZJPWSS-DhE5AZVC.js.map
@@ -1,5 +1,5 @@
1
- import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-B1WLx-ex.js";
2
- import { _ as f, c as t, d as M, l as S, e as P, k as z, aa as _, ab as U, a6 as C, y as F } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-DzGJLYck.js";
2
+ import { _ as f, c as t, d as M, l as S, e as P, k as z, aa as _, ab as U, a6 as C, y as F } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
3
  import { G as O } from "./graph-CWpEkm4G.js";
4
4
  import { l as J } from "./layout-Br2UjHRU.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-OKZ733FA-DrwrNuNs.js.map
266
+ //# sourceMappingURL=stateDiagram-OKZ733FA-BDvRPjM1.js.map
@@ -1,5 +1,5 @@
1
- import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-B1WLx-ex.js";
2
- import { _ as l } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-DzGJLYck.js";
2
+ import { _ as l } from "./mermaid-GHXKKRXX-CpyPA4Tq.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-UEYNNEHI-DHD85VTD.js.map
19
+ //# sourceMappingURL=stateDiagram-v2-UEYNNEHI-gO2Xq1pR.js.map
@@ -1,5 +1,5 @@
1
- import { c as Tr } from "./chunk-RYQCIY6F-5eaMbXXL.js";
2
- import { ap as Er, aq as wr, ar as Ar, as as Rr, l as Ke, c as Nr, aj as Or, ai as Pr, ak as Br, aw as kr, ay as Fr, z as _r, av as Dr, az as Hr, y as Oe, aA as Ye, _ as d, aB as Ao } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { c as Tr } from "./chunk-RYQCIY6F-DC_eKBFo.js";
2
+ import { ap as Er, aq as wr, ar as Ar, as as Rr, l as Ke, c as Nr, aj as Or, ai as Pr, ak as Br, aw as kr, ay as Fr, z as _r, av as Dr, az as Hr, y as Oe, aA as Ye, _ as d, aB as Ao } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
3
  import { G as Xr } from "./graph-CWpEkm4G.js";
4
4
  globalThis.process = globalThis.process || { env: {} };
5
5
  globalThis.global = globalThis.global || globalThis;
@@ -24,7 +24,7 @@ async function Fo(t, e) {
24
24
  for (const I of o)
25
25
  n.setEdge(I.start, I.end, { ...I }, I.id), e.edges.some((p) => p.id === I.id) || e.edges.push(I);
26
26
  if (globalThis.mermaidCaptureSizes) {
27
- const { captureNodeSizes: I } = await import("./sizeCapture-X5ZJPWSS-J5ZNXT4c.js");
27
+ const { captureNodeSizes: I } = await import("./sizeCapture-X5ZJPWSS-DhE5AZVC.js");
28
28
  I(t, e);
29
29
  }
30
30
  return {
@@ -5332,4 +5332,4 @@ d(Zr, "render");
5332
5332
  export {
5333
5333
  Zr as render
5334
5334
  };
5335
- //# sourceMappingURL=swimlanes-SLNWSIFB-FOK5tys1.js.map
5335
+ //# sourceMappingURL=swimlanes-SLNWSIFB-BppNVeHn.js.map
@@ -1,5 +1,5 @@
1
- import { c as e, s as a } from "./flowDiagram-UKHOOZJN-1YmYJYcE.js";
2
- import { _ as s } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { c as e, s as a } from "./flowDiagram-UKHOOZJN-DDHQ3RkH.js";
2
+ import { _ as s } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
3
  globalThis.process = globalThis.process || { env: {} };
4
4
  globalThis.global = globalThis.global || globalThis;
5
5
  var t = /* @__PURE__ */ s((l) => `${a(l)}
@@ -13,4 +13,4 @@ var t = /* @__PURE__ */ s((l) => `${a(l)}
13
13
  export {
14
14
  g as diagram
15
15
  };
16
- //# sourceMappingURL=swimlanesDiagram-ULZ7WXOC-edTvZTge.js.map
16
+ //# sourceMappingURL=swimlanesDiagram-ULZ7WXOC-DW8klrQx.js.map
@@ -1,5 +1,5 @@
1
- import { _ as o, z as gt, ad as Rt, ae as Ct, af as Wt, c as pt, l as E, G as Pt, a4 as Bt, ag as ft, d as U, u as Vt, ah as Ft, q as zt } from "./mermaid-GHXKKRXX-BaBCeViM.js";
2
- import { d as ot } from "./arc-Cpnt_LFj.js";
1
+ import { _ as o, z as gt, ad as Rt, ae as Ct, af as Wt, c as pt, l as E, G as Pt, a4 as Bt, ag as ft, d as U, u as Vt, ah as Ft, q as zt } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
2
+ import { d as ot } from "./arc-k2puh3QC.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-Z64GVDOM-Cc4fTsjY.js.map
1058
+ //# sourceMappingURL=timeline-definition-Z64GVDOM-7bTdkHDS.js.map
@@ -1,4 +1,4 @@
1
- import { b7 as Wt, s as Kt, g as Ht, p as Yt, o as Xt, a as Zt, b as Jt, _ as w, z as wt, G as Qt, d as ot, ao as $t, ad as te, ae as ee, af as ne, e as se, q as ie, D as oe, E as re } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { b7 as Wt, s as Kt, g as Ht, p as Yt, o as Xt, a as Zt, b as Jt, _ as w, z as wt, G as Qt, d as ot, ao as $t, ad as te, ae as ee, af as ne, e as se, q as ie, D as oe, E as re } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
2
2
  globalThis.process = globalThis.process || { env: {} };
3
3
  globalThis.global = globalThis.global || globalThis;
4
4
  const kt = (t, n) => Wt(t, "a", -n), _t = 1e-10;
@@ -1578,4 +1578,4 @@ var Ue = { draw: qe }, We = {
1578
1578
  export {
1579
1579
  We as diagram
1580
1580
  };
1581
- //# sourceMappingURL=vennDiagram-T6HMQDX7-DYZl8srI.js.map
1581
+ //# sourceMappingURL=vennDiagram-T6HMQDX7-BZGZh-tM.js.map
@@ -1,5 +1,5 @@
1
- import { p as St } from "./chunk-JWPE2WC7-BbwyDj9g.js";
2
- import { s as Mt, g as Nt, p as Tt, o as zt, a as Lt, b as At, _ as u, Z as Xt, z as Et, D as U, l as K, G as Yt, e as It, q as Bt, c as j } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { p as St } from "./chunk-JWPE2WC7-xUoyVsyD.js";
2
+ import { s as Mt, g as Nt, p as Tt, o as zt, a as Lt, b as At, _ as u, Z as Xt, z as Et, D as U, l as K, G as Yt, e as It, q as Bt, c as j } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
3
3
  import { p as Ft } from "./cynefin-VYW2F7L2-DAyxamLw.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-T6FBY63Y-BEvv3PjS.js.map
681
+ //# sourceMappingURL=wardleyDiagram-T6FBY63Y-Dq_yq7ay.js.map
@@ -1,7 +1,7 @@
1
- import { s as si, g as ai, p as Et, o as ni, a as oi, b as ri, _ as n, l as It, G as hi, e as li, q as ci, z as pt, i as ui, D as Mt, E as gi, Z as xi, aC as di, aa as Dt } from "./mermaid-GHXKKRXX-BaBCeViM.js";
1
+ import { s as si, g as ai, p as Et, o as ni, a as oi, b as ri, _ as n, l as It, G as hi, e as li, q as ci, z as pt, i as ui, D as Mt, E as gi, Z as xi, aC as di, aa as Dt } from "./mermaid-GHXKKRXX-CpyPA4Tq.js";
2
2
  import { i as fi } from "./init-BOu0eQYQ.js";
3
3
  import { o as pi } from "./ordinal-D0x7izaa.js";
4
- import { l as vt } from "./linear-Bi0C-9d1.js";
4
+ import { l as vt } from "./linear-98AY9cNO.js";
5
5
  globalThis.process = globalThis.process || { env: {} };
6
6
  globalThis.global = globalThis.global || globalThis;
7
7
  function mi(t, i, e) {
@@ -1418,4 +1418,4 @@ var Ti = /* @__PURE__ */ n(function() {
1418
1418
  export {
1419
1419
  zi as diagram
1420
1420
  };
1421
- //# sourceMappingURL=xychartDiagram-ELKLHX3M-79AgTtk-.js.map
1421
+ //# sourceMappingURL=xychartDiagram-ELKLHX3M-C5Pwwmdi.js.map
@@ -2,9 +2,10 @@ import { PromptInputMessage } from '../ai-elements/prompt-input';
2
2
  import { BelongTheme, BelongThemePalette } from '../../types/public.ts';
3
3
  import { ChatMode } from '../../embed/chat-mode.ts';
4
4
  import { SkillSummary } from '../../api/skills.ts';
5
+ import { PrePromptSummary } from '../../api/pre-prompts.ts';
5
6
  import { WorkspaceFile } from '../../api/workspace-files.ts';
6
7
  import { UsageMeterProps } from './UsageMeter.tsx';
7
- export declare function EmbedComposer({ draft, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSubmit, onStop, usage, }: Readonly<{
8
+ export declare function EmbedComposer({ draft, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, prompts, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSaveAsPrompt, onSubmit, onStop, usage, }: Readonly<{
8
9
  draft: string;
9
10
  status: "submitted" | "streaming" | "ready" | "error";
10
11
  submitting: boolean;
@@ -17,6 +18,11 @@ export declare function EmbedComposer({ draft, status, submitting, disabled, voi
17
18
  theme: BelongTheme;
18
19
  palette: BelongThemePalette;
19
20
  skills: readonly SkillSummary[];
21
+ /** The user's saved prompts (BEL-256) — merged into the `/` menu here, so a
22
+ * prompt cannot leak into a consumer that expects runnable skills (the voice
23
+ * `invoke_skill` resolver dispatches `/name` as RAW text, which the runtime
24
+ * cannot expand for a prompt). */
25
+ prompts: readonly PrePromptSummary[];
20
26
  /** Files in the shared `~/workspace` tree — the `@`-mention picker's options (BEL-89). */
21
27
  workspaceFiles: readonly WorkspaceFile[];
22
28
  mode: ChatMode;
@@ -24,6 +30,15 @@ export declare function EmbedComposer({ draft, status, submitting, disabled, voi
24
30
  onDraftChange: (v: string) => void;
25
31
  /** Called when a fresh `@` token opens — a hook to refresh the file list (BEL-89). */
26
32
  onMentionOpen?: () => void;
33
+ /** Opens the Save-as-prompt dialog (BEL-256). Omitted → no affordance, which
34
+ * is what keeps the ~60 provider-less composer tests and stories rendering.
35
+ *
36
+ * `| undefined` is load-bearing under `exactOptionalPropertyTypes`: since
37
+ * BEL-255 the caller COMPUTES whether to offer this (a draft that is still
38
+ * only the seeded welcome question is not the user's to save), so it has to
39
+ * be able to pass the absence through rather than contort itself into
40
+ * omitting the prop. Same reasoning as `PageHeader.description` in #347. */
41
+ onSaveAsPrompt?: (() => void) | undefined;
27
42
  onSubmit: (message: PromptInputMessage) => void | Promise<void>;
28
43
  onStop: () => void;
29
44
  /** F3 — context/cost meter data (null hides the meter). */
@@ -3,7 +3,11 @@ import { VoiceStatus } from '../../embed/voice-bus.ts';
3
3
  import { SessionSummary } from './EmbedSessions';
4
4
  import { PlanProgress } from '../../stream/plan-progress.ts';
5
5
  import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.ts';
6
- export type EmbedView = "chat" | "files" | "scheduled";
6
+ /** The rail's nav entries. TWIN of `DockView` in `embed/dock-state.ts` — the
7
+ * two must carry the SAME members: this one is what the chrome renders, that
8
+ * one is what the router and localStorage persist, and a view present in only
9
+ * one of them is a view you can reach but not come back to after a reload. */
10
+ export type EmbedView = "chat" | "files" | "scheduled" | "prompts";
7
11
  /**
8
12
  * 52px rail. Top: user avatar (account + theme controls). Middle: Chat /
9
13
  * Files nav (active = Ocean primary fill, brand-driven). Bottom
@@ -15,6 +15,13 @@ export type MentionInputHandle = {
15
15
  getCaret: () => number | null;
16
16
  /** Pin where the caret lands after the NEXT controlled value change. */
17
17
  setPendingCaret: (offset: number) => void;
18
+ /**
19
+ * Pin a NON-COLLAPSED selection for after the next controlled value change —
20
+ * the range arrives already highlighted, so the user's next keystroke replaces
21
+ * it. BEL-258 uses it for the first `{{slot}}` of a picked saved prompt.
22
+ * `setPendingCaret(o)` is exactly `setPendingSelection(o, o)`.
23
+ */
24
+ setPendingSelection: (start: number, end: number) => void;
18
25
  element: HTMLDivElement | null;
19
26
  };
20
27
  export declare function MentionInput({ value, palette, placeholder, disabled, className, ariaProps, onChange, onCaretChange, onKeyDown, onPasteFiles, handleRef, }: {
@@ -4,8 +4,11 @@ import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.
4
4
  /**
5
5
  * Bottom nav bar for the MOBILE fullscreen sheet — the phone-width stand-in
6
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.
7
+ * (chat / files / scheduled / prompts), the sessions switcher, the account
8
+ * avatar, and a close chevron. Every cell is a ≥44px touch target that keeps
9
+ * its own label; menus open upward. Eight labelled cells do not fit a 375px
10
+ * phone, so the row scrolls horizontally rather than crush them — see the
11
+ * comment on the `<nav>` below.
9
12
  */
10
13
  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, onViewStats, }: {
11
14
  view: EmbedView;
@@ -0,0 +1,11 @@
1
+ import { PromptNameOwner } from './save-prompt-name.ts';
2
+ type SavePromptDialogProps = {
3
+ readonly open: boolean;
4
+ readonly onOpenChange: (open: boolean) => void;
5
+ /** The composer draft being saved — shown read-only so the user can confirm. */
6
+ readonly draft: string;
7
+ /** Every name already reachable from `/`, mapped to what owns it. */
8
+ readonly takenNames: ReadonlyMap<string, PromptNameOwner>;
9
+ };
10
+ export declare const SavePromptDialog: ({ open, onOpenChange, draft, takenNames, }: SavePromptDialogProps) => import("react").JSX.Element;
11
+ export {};
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Pure naming model for the Save-as-prompt dialog (BEL-256) — the same split
3
+ * `schedule-dialog-model.ts` uses: every rule lives here, the component holds
4
+ * none of the branching.
5
+ *
6
+ * Two jobs. `slugifyPromptName` turns whatever the user types into the
7
+ * lowercase slug the server accepts (rejecting instead would punish anyone who
8
+ * types a normal title). `validatePromptName` answers the ticket's open
9
+ * save-time UX question: a name already owned by a builtin, a tenant skill, a
10
+ * workspace command, or another saved prompt is BLOCKED and the reason NAMES
11
+ * which one — because the client merge resolves precedence by dropping the
12
+ * shadowed prompt, so saving one would produce a prompt that never appears in
13
+ * `/`. That reads as data loss, and the user has no way to discover it.
14
+ */
15
+ /** Server bound — `pre-prompt.schemas.ts`'s `MAX_PRE_PROMPT_NAME_CHARS`. */
16
+ export declare const MAX_PROMPT_NAME_CHARS = 64;
17
+ /**
18
+ * Lowercase, non-alphanumerics → `-`, collapse runs, trim edge dashes, cap at
19
+ * the server's ceiling (then re-trim, since the cut can land on a dash).
20
+ */
21
+ export declare const slugifyPromptName: (raw: string) => string;
22
+ /** Which kind of existing entry already owns a name the user typed. */
23
+ export type PromptNameOwner = "builtin" | "skill" | "command" | "prompt";
24
+ type PromptNameValidation = {
25
+ readonly kind: "ok";
26
+ } | {
27
+ readonly kind: "empty";
28
+ } | {
29
+ readonly kind: "invalid";
30
+ } | {
31
+ readonly kind: "taken";
32
+ readonly owner: PromptNameOwner;
33
+ };
34
+ export declare const validatePromptName: ({ name, takenNames, }: {
35
+ readonly name: string;
36
+ /** Every name already in the `/` menu, mapped to what owns it. */
37
+ readonly takenNames: ReadonlyMap<string, PromptNameOwner>;
38
+ }) => PromptNameValidation;
39
+ export {};
@@ -41,6 +41,11 @@ export type PreviewBytes = {
41
41
  * mode first, which is an exact test rather than a guess, and fall back to
42
42
  * windows-1252 — a total mapping, so it never throws and never emits U+FFFD.
43
43
  * Exported for the unit test; the hook below is the only production caller.
44
+ *
45
+ * The worker-side twin is `decodeFileText` in
46
+ * `apps/belong-cloud/src/platform/text-decode.ts` (BEL-186), which decodes the
47
+ * same file into the MODEL's context. The two must change together, or the
48
+ * preview panel and the model start disagreeing about what a file says.
44
49
  */
45
50
  export declare const decodePreviewText: (bytes: ArrayBuffer) => string;
46
51
  export declare const blobToDataUrl: (blob: Blob) => Promise<string>;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Delete confirmation for a saved prompt — the `ConfirmDeleteScheduleDialog`
3
+ * shape, with the prompt's `/name` in the body so the confirm names the thing
4
+ * it is about to remove rather than "this prompt".
5
+ */
6
+ export declare const ConfirmDeletePromptDialog: (props: {
7
+ readonly open: boolean;
8
+ readonly onOpenChange: (open: boolean) => void;
9
+ /** The prompt's slug, shown as the `/token` the user knows it by. */
10
+ readonly name: string;
11
+ readonly busy: boolean;
12
+ readonly onConfirm: () => void;
13
+ }) => import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { PrePromptSummary } from '../../api/pre-prompts.ts';
2
+ import { PromptNameOwner } from '../embed/save-prompt-name.ts';
3
+ type EditPromptDialogProps = {
4
+ readonly open: boolean;
5
+ readonly onOpenChange: (open: boolean) => void;
6
+ /** The prompt being edited — its current name/description/body seed the form. */
7
+ readonly prompt: PrePromptSummary;
8
+ /** Names already owned by something else, mapped to what owns them. This
9
+ * prompt's OWN name is excluded by the caller: keeping it would make the
10
+ * dialog refuse to save an edit that never touched the name. */
11
+ readonly takenNames: ReadonlyMap<string, PromptNameOwner>;
12
+ };
13
+ export declare const EditPromptDialog: ({ open, onOpenChange, prompt, takenNames, }: EditPromptDialogProps) => import("react").JSX.Element;
14
+ export {};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Prompts list — the rail's fourth surface (BEL-259). Every prompt the user
3
+ * saved, searchable, each row opening the edit dialog or offering Delete.
4
+ *
5
+ * PROPLESS, exactly like `ScheduledListSurface`: it reads its own server state
6
+ * and takes nothing from the router's outlet context. That is what makes it
7
+ * mountable from a route, a test and a story with the same zero arguments — and
8
+ * what makes a reload render identically to the live view (§41), since there is
9
+ * no in-memory state for a reload to lose.
10
+ *
11
+ * Search filters CLIENT-side. The list call already returns every prompt with
12
+ * its full body (the `/` menu splices bodies straight into the composer, so it
13
+ * has to), and a user with 100 saved prompts is not a user with a scrolling
14
+ * problem — adding a `q` parameter would be a server round-trip per keystroke
15
+ * for data already in the cache.
16
+ *
17
+ * NO run button and NO "schedule this". Running a prompt is what `/` in the
18
+ * composer is for, and giving the same action two doors means two behaviours to
19
+ * keep identical forever.
20
+ */
21
+ export declare const PromptsListSurface: () => import("react").JSX.Element;
@@ -139,6 +139,15 @@ export type DockCopy = {
139
139
  readonly services: string;
140
140
  };
141
141
  readonly skillsPanel: SkillsPanelCopy;
142
+ /** BEL-255 — the unsent opening question a brand-new EMPTY chat pre-fills
143
+ * into the composer (`ChatRoute`'s seed effect). Its own key, deliberately
144
+ * NOT `resolveWelcomeCopy(...).suggestions[0]`: a tenant `theme.copy`
145
+ * override replaces that array WHOLESALE (see `resolveWelcomeCopy` below),
146
+ * and the simetrik variant renders `WelcomeSkills` INSTEAD of the chips
147
+ * whenever the tenant has skills — so `suggestions` is dead config on the
148
+ * very surface being seeded. Deliberately variant-independent too: the
149
+ * question is the same question for every brand. */
150
+ readonly welcomeSeed: string;
142
151
  readonly suggestions: Readonly<Record<DockCopyVariant, readonly string[]>>;
143
152
  readonly composer: {
144
153
  readonly placeholderDefault: Readonly<Record<DockCopyVariant, string>>;
@@ -5,7 +5,7 @@
5
5
  * in the stream-state store; this module owns only view + size. Best-effort:
6
6
  * disabled/quota'd storage just means no cross-reload restore.
7
7
  */
8
- export type DockView = "chat" | "files" | "scheduled";
8
+ export type DockView = "chat" | "files" | "scheduled" | "prompts";
9
9
  export type DockSize = "collapsed" | "expanded" | "modal";
10
10
  export type DockState = {
11
11
  readonly view: DockView;
@@ -16,6 +16,12 @@ export type DisclaimerCopy = {
16
16
  /** Reminder banner when the user comes back after having left without
17
17
  * accepting: the terms are mandatory to use the agent. */
18
18
  readonly requiredHint: string;
19
+ /** The Accept click did not go through (the request never reached us, or
20
+ * came back an error). Surfaced INSTEAD of silence: a client whose
21
+ * responses never reach the browser used to click Accept forever against a
22
+ * gate that recorded every attempt server-side and told them nothing. Names
23
+ * the product and the user's next move — never the transport. */
24
+ readonly acceptError: string;
19
25
  readonly languageHint: string;
20
26
  /** The permanent one-liner under the chat box. */
21
27
  readonly shortLine: string;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Slots in a saved prompt body (BEL-258) — the blanks the user fills in.
3
+ *
4
+ * A saved prompt may read `Reconcile {{account}} for {{month}} and email me the
5
+ * exceptions`. Picking it from the `/` menu drops that text into the composer
6
+ * with `{{account}}` already SELECTED, so typing "LATAM" overwrites it. That is
7
+ * the whole feature: this module answers WHERE the first blank is, and the
8
+ * composer hands that range to the editor.
9
+ *
10
+ * Deliberately literal text, not a typed parameter schema (§2). A slot carries
11
+ * no metadata, is never validated at save time, and is never expanded on the
12
+ * server — so the SAME body serves the composer, the agent tool that loads a
13
+ * prompt conversationally, and any future surface, with no shared contract to
14
+ * keep in sync. Anything the user does not overwrite simply travels to the
15
+ * agent as the literal text `{{month}}`, which reads as a blank to a model too.
16
+ */
17
+ /**
18
+ * The FIRST slot in `body`, as offsets into `body` INCLUDING both braces — the
19
+ * exact span the composer selects, so the user's first keystroke replaces
20
+ * `{{account}}` whole. `null` when the body has no slot (the caller keeps its
21
+ * existing caret-at-end behaviour). Pure.
22
+ */
23
+ export declare const firstSlotRange: (body: string) => {
24
+ readonly start: number;
25
+ readonly end: number;
26
+ } | null;
@@ -1,4 +1,5 @@
1
1
  import { CommandSummary, SkillSummary } from '../api/skills.ts';
2
+ import { PrePromptSummary } from '../api/pre-prompts.ts';
2
3
  /** Fallback group label for a workspace command the backend could not
3
4
  * attribute to a plugin (flat project commands). Plugin-attributed commands
4
5
  * render under their own section instead — see `cmd.group` below. */
@@ -93,6 +94,50 @@ export declare const applySlashCommand: (text: string, match: SlashTokenMatch, n
93
94
  readonly text: string;
94
95
  readonly caret: number;
95
96
  };
97
+ /**
98
+ * Replace the matched `/query` token with the FULL saved body; returns the new
99
+ * draft + the caret at the end of the insert.
100
+ *
101
+ * Deliberately NOT the same splice as {@link applySlashCommand}: that one
102
+ * inserts `/name ` — with a trailing space — so it absorbs a space already at
103
+ * the splice point to avoid a double space. A body carries no trailing space,
104
+ * so absorbing one would glue the saved text to the following word. The token
105
+ * is replaced EXACTLY; prose on both sides survives untouched.
106
+ */
107
+ export declare const applySlashPrompt: (text: string, match_: SlashTokenMatch, body: string) => {
108
+ readonly text: string;
109
+ readonly caret: number;
110
+ };
111
+ /**
112
+ * The section a saved pre-prompt renders under. A stable IDENTITY string (React
113
+ * keys + {@link bucketByGroup}'s tier), NOT the display label — SlashCommandMenu
114
+ * localizes "Your prompts" separately, the same split {@link COMMAND_GROUP}
115
+ * already has.
116
+ */
117
+ export declare const PRE_PROMPT_GROUP = "Your prompts";
118
+ /**
119
+ * Merge a user's saved pre-prompts into the composer's option list, and hand
120
+ * back the name → body map the composer splices from.
121
+ *
122
+ * THIS is where the ticket's precedence — builtins > skills > workspace
123
+ * commands > pre-prompts — is resolved: a prompt whose name is already claimed
124
+ * by a builtin or by anything in `skills` (which `paletteOptions` in chat.tsx
125
+ * has already ordered commands-then-skills) is DROPPED. Survivors append after
126
+ * the skills, and `bodyByName` is built from the SAME survivor set, so the
127
+ * rendered options and the bodies they insert can never disagree.
128
+ *
129
+ * A name shadowed AFTER the fact (the user saves `reconciliation`, the tenant
130
+ * later publishes a skill by that name) silently loses its menu row here. The
131
+ * save dialog blocks the collision at save time; surfacing a later shadow is a
132
+ * follow-up, not this slice.
133
+ */
134
+ export declare const mergeSlashOptions: ({ skills, prompts, }: {
135
+ readonly skills: readonly SkillSummary[];
136
+ readonly prompts: readonly PrePromptSummary[];
137
+ }) => {
138
+ readonly options: readonly SkillSummary[];
139
+ readonly bodyByName: ReadonlyMap<string, string>;
140
+ };
96
141
  /**
97
142
  * Extract the FIRST `/name` token — anywhere in the draft — matching a known
98
143
  * skill. Returns the skill + the draft with the token spliced out, or null