@belonguniverseai/react-sdk 0.6.21 → 0.6.23

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 (226) hide show
  1. package/README.md +69 -0
  2. package/dist/api/account-connectors.d.ts +2 -2
  3. package/dist/api/api-keys.d.ts +22 -0
  4. package/dist/api/client-identity.d.ts +12 -0
  5. package/dist/api/client.d.ts +2453 -92
  6. package/dist/api/goals.d.ts +179 -0
  7. package/dist/api/issue-reports.d.ts +13 -0
  8. package/dist/api/query-keys.d.ts +19 -0
  9. package/dist/api/report-client-error.d.ts +3 -0
  10. package/dist/api/retry-fetch.d.ts +19 -0
  11. package/dist/api/session-end.d.ts +2 -0
  12. package/dist/api/skill-library.d.ts +100 -0
  13. package/dist/api/skills.d.ts +3 -1
  14. package/dist/api/task-schedule-sharing.d.ts +166 -0
  15. package/dist/api/task-schedules.d.ts +23 -1
  16. package/dist/app/BelongDock.d.ts +0 -28
  17. package/dist/app/dock-demo-features.d.ts +13 -0
  18. package/dist/app/dock-demo-transport.d.ts +37 -0
  19. package/dist/app/dock-outlet.d.ts +15 -5
  20. package/dist/app/dock-story-data.d.ts +116 -0
  21. package/dist/browser/allowed-ops.d.ts +18 -0
  22. package/dist/browser/host-mcp.d.ts +31 -0
  23. package/dist/component/THIRD_PARTY_NOTICES.txt +24 -0
  24. package/dist/component/{abnfDiagram-N423BO3Z-DZRUOUZQ.js → abnfDiagram-N423BO3Z-bM1BoI0O.js} +4 -4
  25. package/dist/component/{arc-B4biduil.js → arc-DaSgre52.js} +2 -2
  26. package/dist/component/{architectureDiagram-T3A2C74G-q8voStNN.js → architectureDiagram-T3A2C74G-avMCXzQw.js} +3 -3
  27. package/dist/component/{blockDiagram-VBNYF7ZC-C0TDyTgw.js → blockDiagram-VBNYF7ZC-Cg6EDrdt.js} +4 -4
  28. package/dist/component/{c4Diagram-5PPSVZJV-rxRyd6rh.js → c4Diagram-5PPSVZJV-DhUs6wdK.js} +3 -3
  29. package/dist/component/{channel-CUruDJSx.js → channel-DlmuDpcv.js} +2 -2
  30. package/dist/component/{chunk-2GRJ4B5K-Kff5Fvbi.js → chunk-2GRJ4B5K-Drdf-9Az.js} +2 -2
  31. package/dist/component/{chunk-2Q5K7J3B-BT3ZD31a.js → chunk-2Q5K7J3B-CG6mCJjr.js} +2 -2
  32. package/dist/component/{chunk-5RXB4S5H-CYZ36tQD.js → chunk-5RXB4S5H-DYJwqjr4.js} +5 -5
  33. package/dist/component/{chunk-5VM5RSS4-BweQRk7u.js → chunk-5VM5RSS4-B21XfkBj.js} +2 -2
  34. package/dist/component/{chunk-6Q2QTUOP-DHcoXRhe.js → chunk-6Q2QTUOP-DZkWqf90.js} +2 -2
  35. package/dist/component/{chunk-GF5L2VYU-DtE5ljCc.js → chunk-GF5L2VYU-5hBEo1f5.js} +6 -6
  36. package/dist/component/{chunk-JWPE2WC7-ClHq4gN2.js → chunk-JWPE2WC7-DAn-TcDC.js} +2 -2
  37. package/dist/component/{chunk-KBJHAD2P-BeCfHf5W.js → chunk-KBJHAD2P-CEMDhN2A.js} +2 -2
  38. package/dist/component/{chunk-RYQCIY6F-CuAngwHt.js → chunk-RYQCIY6F-BWL1otLK.js} +2 -2
  39. package/dist/component/{chunk-XXDRQBXY-D9c0CJyR.js → chunk-XXDRQBXY-D0TWnqlD.js} +2 -2
  40. package/dist/component/{classDiagram-JCYQIIEL-DdzIbKj1.js → classDiagram-JCYQIIEL-CjU-7xK0.js} +3 -3
  41. package/dist/component/{classDiagram-v2-OCEON4UE-DdzIbKj1.js → classDiagram-v2-OCEON4UE-CjU-7xK0.js} +3 -3
  42. package/dist/component/{cose-bilkent-JH36ORCC-hME9BYGm.js → cose-bilkent-JH36ORCC-MkPQhZKJ.js} +2 -2
  43. package/dist/component/{cynefinDiagram-MW4NZA55-BiceKBPh.js → cynefinDiagram-MW4NZA55-Wf-Eh_MR.js} +3 -3
  44. package/dist/component/{dagre-VZM6K2ZE-DiPOLAUX.js → dagre-VZM6K2ZE-D1ND11ws.js} +3 -3
  45. package/dist/component/{diagram-7IWD3JNH-BSDWgxjs.js → diagram-7IWD3JNH-ChO63Ikp.js} +4 -4
  46. package/dist/component/{diagram-B4RE2ZJO-BdpGOPaT.js → diagram-B4RE2ZJO-CFVIZBxd.js} +3 -3
  47. package/dist/component/{diagram-LBJQPF4R-B0V6_5ih.js → diagram-LBJQPF4R-BFErKt-H.js} +3 -3
  48. package/dist/component/{diagram-Q27KOJAE-CYDb40TJ.js → diagram-Q27KOJAE-3EA2fDKz.js} +4 -4
  49. package/dist/component/{diagram-UB23O5K3-DgwjRdl5.js → diagram-UB23O5K3-D914yr1r.js} +3 -3
  50. package/dist/component/{ebnfDiagram-BXEA7PRR-D-C7SWec.js → ebnfDiagram-BXEA7PRR-BlRDglJm.js} +4 -4
  51. package/dist/component/{erDiagram-JOGREHBK-DLJCjcXM.js → erDiagram-JOGREHBK-BgHUzm41.js} +5 -5
  52. package/dist/component/{flowDiagram-UKHOOZJN-BZfBucKB.js → flowDiagram-UKHOOZJN-Cf42sXVK.js} +7 -7
  53. package/dist/component/{ganttDiagram-PKOTCBZU-CxTHmusv.js → ganttDiagram-PKOTCBZU-Bqai8Nqw.js} +3 -3
  54. package/dist/component/{gitGraphDiagram-DS77QQ5N-B_dWXxMf.js → gitGraphDiagram-DS77QQ5N-M6yX_E4b.js} +4 -4
  55. package/dist/component/{highlighted-body-OFNGDK62-CQ1ZdhQ-.js → highlighted-body-OFNGDK62-C2rmuXAs.js} +2 -2
  56. package/dist/component/index.js +2 -2
  57. package/dist/component/{infoDiagram-6WML65LV-P4GO-aVw.js → infoDiagram-6WML65LV-Bk4qDfY4.js} +2 -2
  58. package/dist/component/{ishikawaDiagram-WSZJBQD7-BMXMrxKI.js → ishikawaDiagram-WSZJBQD7-CQ0-i0XP.js} +2 -2
  59. package/dist/component/{journeyDiagram-NVQOT4AX-DPdTmxkF.js → journeyDiagram-NVQOT4AX-CK9lX22d.js} +5 -5
  60. package/dist/component/{kanban-definition-27J2QSJJ-sYw64NrE.js → kanban-definition-27J2QSJJ-CrIKfzfe.js} +3 -3
  61. package/dist/component/{linear-DYjDg3gl.js → linear-CzN3Xd3g.js} +2 -2
  62. package/dist/component/{mermaid-GHXKKRXX-DfdCmrs3.js → mermaid-GHXKKRXX-B-ea5OKA.js} +116618 -105206
  63. package/dist/component/{mindmap-definition-FAOFIHXS-UkAbrucA.js → mindmap-definition-FAOFIHXS-DUDsEObz.js} +4 -4
  64. package/dist/component/{pegDiagram-VL7TDLO6-BGab1it6.js → pegDiagram-VL7TDLO6-DFJ-rOLH.js} +4 -4
  65. package/dist/component/{pieDiagram-7S7Q4E2Y-BnY70Pr-.js → pieDiagram-7S7Q4E2Y-OwliOUdN.js} +4 -4
  66. package/dist/component/{quadrantDiagram-CIZ2JOQS-Cv1bjdQb.js → quadrantDiagram-CIZ2JOQS-CLKxzqPi.js} +3 -3
  67. package/dist/component/{railroadDiagram-AXF67PYL-DJhLbGB_.js → railroadDiagram-AXF67PYL-_jBOX7-D.js} +4 -4
  68. package/dist/component/{requirementDiagram-LRYGKXZP-CLW3CgbU.js → requirementDiagram-LRYGKXZP-CxfMaDPH.js} +4 -4
  69. package/dist/component/{sankeyDiagram-W5VNT64P-vnapx0yf.js → sankeyDiagram-W5VNT64P-D-qOUzh7.js} +2 -2
  70. package/dist/component/{sequenceDiagram-SI44F4Z6-I43iQsY0.js → sequenceDiagram-SI44F4Z6-B57h29Ae.js} +4 -4
  71. package/dist/component/{sizeCapture-X5ZJPWSS-D9LGwwwC.js → sizeCapture-X5ZJPWSS-DlIoKfk1.js} +2 -2
  72. package/dist/component/snapdom-DkzCA8S0.js +7061 -0
  73. package/dist/component/{stateDiagram-OKZ733FA-BXejMYGk.js → stateDiagram-OKZ733FA-CNNoDNwB.js} +3 -3
  74. package/dist/component/{stateDiagram-v2-UEYNNEHI-BP05TJSl.js → stateDiagram-v2-UEYNNEHI-xYjW9R-s.js} +3 -3
  75. package/dist/component/{swimlanes-SLNWSIFB-CfmDVYhs.js → swimlanes-SLNWSIFB-Chjr6NCU.js} +4 -4
  76. package/dist/component/{swimlanesDiagram-ULZ7WXOC-DfjQBUfV.js → swimlanesDiagram-ULZ7WXOC-A9mWwnCX.js} +3 -3
  77. package/dist/component/{timeline-definition-Z64GVDOM-C0BwzTs3.js → timeline-definition-Z64GVDOM-DldyCd1l.js} +3 -3
  78. package/dist/component/{vennDiagram-T6HMQDX7-CRf8sGBL.js → vennDiagram-T6HMQDX7-BGfiPWG2.js} +2 -2
  79. package/dist/component/{wardleyDiagram-T6FBY63Y-C2h7TQ4a.js → wardleyDiagram-T6FBY63Y-Bzn9DJ27.js} +3 -3
  80. package/dist/component/{xychartDiagram-ELKLHX3M-CBcAwmdF.js → xychartDiagram-ELKLHX3M-nMaNgT12.js} +3 -3
  81. package/dist/components/ai-elements/message.d.ts +2 -2
  82. package/dist/components/ai-elements/prompt-input.d.ts +3 -1
  83. package/dist/components/ai-elements/task.d.ts +2 -1
  84. package/dist/components/ai-elements/terminal-task.d.ts +2 -1
  85. package/dist/components/connectors/portal-theme.d.ts +2 -8
  86. package/dist/components/embed/AgentChatIcon.d.ts +1 -1
  87. package/dist/components/embed/AgentPhaseIcon.d.ts +16 -14
  88. package/dist/components/embed/ApiKeysSettings.d.ts +1 -0
  89. package/dist/components/embed/BetaBadge.d.ts +8 -10
  90. package/dist/components/embed/ComposerContext.d.ts +9 -0
  91. package/dist/components/embed/EmbedAvatar.d.ts +19 -18
  92. package/dist/components/embed/EmbedComposer.d.ts +13 -1
  93. package/dist/components/embed/EmbedHeader.d.ts +13 -30
  94. package/dist/components/embed/EmbedRail.d.ts +29 -10
  95. package/dist/components/embed/EmbedSessions.d.ts +10 -12
  96. package/dist/components/embed/GoalActions.d.ts +15 -0
  97. package/dist/components/embed/GoalBadge.d.ts +17 -0
  98. package/dist/components/embed/GoalClearDialog.d.ts +6 -0
  99. package/dist/components/embed/GoalClearedLine.d.ts +3 -0
  100. package/dist/components/embed/GoalCompletionCard.d.ts +12 -0
  101. package/dist/components/embed/GoalComposeSheet.d.ts +20 -0
  102. package/dist/components/embed/GoalProposalCard.d.ts +29 -0
  103. package/dist/components/embed/GoalRailView.d.ts +15 -0
  104. package/dist/components/embed/GoalRefusalCard.d.ts +22 -0
  105. package/dist/components/embed/GoalSetCard.d.ts +5 -0
  106. package/dist/components/embed/GoalSnoozeMenu.d.ts +14 -0
  107. package/dist/components/embed/GoalStatusRow.d.ts +6 -0
  108. package/dist/components/embed/GoalTimeline.d.ts +6 -0
  109. package/dist/components/embed/LegalShortDisclaimer.d.ts +6 -8
  110. package/dist/components/embed/MentionInput.d.ts +9 -3
  111. package/dist/components/embed/MobileNavBar.d.ts +16 -10
  112. package/dist/components/embed/OnboardingOverlay.d.ts +3 -1
  113. package/dist/components/embed/OnboardingTour.d.ts +1 -10
  114. package/dist/components/embed/OnboardingWelcome.d.ts +1 -11
  115. package/dist/components/embed/PlanPanel.d.ts +3 -1
  116. package/dist/components/embed/PreviewPanel.d.ts +3 -1
  117. package/dist/components/embed/QuestionCard.d.ts +12 -1
  118. package/dist/components/embed/ScheduleNotices.d.ts +23 -0
  119. package/dist/components/embed/SentAsGoalTag.d.ts +1 -0
  120. package/dist/components/embed/SessionSwitcher.d.ts +12 -0
  121. package/dist/components/embed/SubagentAvatar.d.ts +8 -0
  122. package/dist/components/embed/SubagentsPaneBody.d.ts +3 -0
  123. package/dist/components/embed/WorkspacePane.d.ts +3 -1
  124. package/dist/components/embed/navigation-layout.d.ts +7 -0
  125. package/dist/components/embed/rail-flags.d.ts +6 -0
  126. package/dist/components/embed/use-prompt-invocations.d.ts +6 -1
  127. package/dist/components/feedback/IssueReportController.d.ts +1 -0
  128. package/dist/components/feedback/IssueReportDialog.d.ts +6 -0
  129. package/dist/components/prompts/PromptPreviewDialog.d.ts +10 -0
  130. package/dist/components/prompts/PromptsListSurface.d.ts +4 -4
  131. package/dist/components/scheduled/ConfirmDeleteScheduleDialog.d.ts +1 -0
  132. package/dist/components/scheduled/ScheduleDialog.d.ts +4 -0
  133. package/dist/components/scheduled/ScheduledDetailSurface.d.ts +1 -0
  134. package/dist/components/scheduled/ScheduledHeader.d.ts +3 -0
  135. package/dist/components/scheduled/ScheduledListSurface.d.ts +1 -1
  136. package/dist/components/scheduled/ShareScheduleDialog.d.ts +10 -0
  137. package/dist/components/scheduled/SharedSchedulesSurface.d.ts +1 -0
  138. package/dist/components/scheduled/schedule-dialog-model.d.ts +5 -2
  139. package/dist/components/skills/ConfirmDeleteSkillDialog.d.ts +9 -0
  140. package/dist/components/skills/SkillDiscover.d.ts +1 -0
  141. package/dist/components/skills/SkillLibraryToolSync.d.ts +4 -0
  142. package/dist/components/skills/SkillsListSurface.d.ts +29 -0
  143. package/dist/components/skills/UploadSkillDialog.d.ts +32 -0
  144. package/dist/components/skills/skill-archive-file.d.ts +15 -0
  145. package/dist/components/ui/card.d.ts +1 -1
  146. package/dist/components/ui/dialog.d.ts +1 -1
  147. package/dist/components/ui/dropdown-menu.d.ts +2 -2
  148. package/dist/components/ui/hover-card.d.ts +1 -1
  149. package/dist/components/ui/popover.d.ts +1 -1
  150. package/dist/components/ui/select.d.ts +1 -1
  151. package/dist/components/ui/shadow-dialog-focus.d.ts +5 -0
  152. package/dist/components/ui/tooltip.d.ts +1 -1
  153. package/dist/embed/brand-marks.d.ts +3 -3
  154. package/dist/embed/client-error-log.d.ts +72 -0
  155. package/dist/embed/copy.d.ts +8 -2
  156. package/dist/embed/dock-open-request.d.ts +32 -0
  157. package/dist/embed/dock-state.d.ts +1 -1
  158. package/dist/embed/goal-actions-model.d.ts +9 -0
  159. package/dist/embed/goal-cap-notice.d.ts +36 -0
  160. package/dist/embed/goal-deep-link.d.ts +24 -0
  161. package/dist/embed/goal-edit-command.d.ts +25 -0
  162. package/dist/embed/goal-journal.d.ts +53 -0
  163. package/dist/embed/goal-live-status.d.ts +2 -0
  164. package/dist/embed/goal-plain-units.d.ts +35 -0
  165. package/dist/embed/goal-progress.d.ts +15 -0
  166. package/dist/embed/goal-proposal-dismissal.d.ts +11 -0
  167. package/dist/embed/goal-resume-time.d.ts +22 -0
  168. package/dist/embed/goal-row-model.d.ts +27 -0
  169. package/dist/embed/goal-runway.d.ts +5 -0
  170. package/dist/embed/goal-schedule-handoff.d.ts +12 -0
  171. package/dist/embed/goal-status-label.d.ts +3 -0
  172. package/dist/embed/goal-time-usage.d.ts +19 -0
  173. package/dist/embed/issue-report-bus.d.ts +14 -0
  174. package/dist/embed/issue-report-open.d.ts +8 -0
  175. package/dist/embed/issue-report.d.ts +41 -0
  176. package/dist/embed/legal-disclaimer.d.ts +5 -1
  177. package/dist/embed/library-composer.d.ts +24 -0
  178. package/dist/embed/library-navigation.d.ts +6 -0
  179. package/dist/embed/portal-container.d.ts +17 -16
  180. package/dist/embed/presets.d.ts +2 -2
  181. package/dist/embed/schedule-invitation.d.ts +5 -0
  182. package/dist/embed/screen-capture.d.ts +74 -0
  183. package/dist/embed/slash-commands.d.ts +24 -0
  184. package/dist/embed/task-schedule-command.d.ts +7 -0
  185. package/dist/embed/use-session-draft.d.ts +11 -0
  186. package/dist/i18n/messages/en.d.ts +599 -4
  187. package/dist/i18n/messages/surfaces/feedback.d.ts +84 -0
  188. package/dist/i18n/messages/surfaces/files.d.ts +4 -0
  189. package/dist/i18n/messages/surfaces/header.d.ts +20 -0
  190. package/dist/i18n/messages/surfaces/navigation.d.ts +149 -0
  191. package/dist/i18n/messages/surfaces/prompts.d.ts +56 -5
  192. package/dist/i18n/messages/surfaces/scheduled.d.ts +233 -1
  193. package/dist/i18n/messages/surfaces/sessions.d.ts +16 -0
  194. package/dist/i18n/messages/surfaces/settings.d.ts +229 -0
  195. package/dist/i18n/messages/surfaces/skills.d.ts +299 -0
  196. package/dist/i18n/messages/surfaces/stream.d.ts +232 -0
  197. package/dist/i18n/messages/surfaces/usage.d.ts +56 -0
  198. package/dist/i18n/messages/surfaces/workspace.d.ts +20 -0
  199. package/dist/public-api.d.ts +1 -1
  200. package/dist/routes/chat/part-renderer-extra-props.d.ts +43 -0
  201. package/dist/routes/chat/use-goal-receipt.d.ts +37 -0
  202. package/dist/routes/chat/use-host-draft-request.d.ts +2 -0
  203. package/dist/routes/chat/use-session-goal.d.ts +227 -0
  204. package/dist/routes/chat.d.ts +11 -1
  205. package/dist/routes/goal.d.ts +1 -0
  206. package/dist/routes/library.d.ts +4 -0
  207. package/dist/routes/skills.d.ts +2 -0
  208. package/dist/stream/activity-items.d.ts +25 -0
  209. package/dist/stream/ai-sdk-part-renderers.d.ts +67 -32
  210. package/dist/stream/belong-chat-transport.d.ts +157 -2
  211. package/dist/stream/belong-data-parts.d.ts +56 -6
  212. package/dist/stream/goal-store.d.ts +43 -0
  213. package/dist/stream/message-metadata.d.ts +1 -0
  214. package/dist/stream/message-parts.d.ts +42 -0
  215. package/dist/stream/select-goal-set-part-id.d.ts +2 -0
  216. package/dist/stream/select-latest-goal.d.ts +13 -0
  217. package/dist/stream/subagent-controls-store.d.ts +20 -0
  218. package/dist/stream/subagent-lanes-model.d.ts +175 -0
  219. package/dist/stream/subagent-lanes.d.ts +90 -0
  220. package/dist/stream/use-publish-subagent-controls.d.ts +11 -0
  221. package/dist/stream/workspace-focus-store.d.ts +7 -1
  222. package/dist/test/render.d.ts +18 -1
  223. package/dist/test/subagent-fixtures.d.ts +24 -0
  224. package/dist/types/public.d.ts +54 -1
  225. package/package.json +1 -1
  226. package/dist/components/ai-elements/reasoning.d.ts +0 -26
@@ -1,5 +1,5 @@
1
- import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-CYZ36tQD.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-DfdCmrs3.js";
1
+ import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-DYJwqjr4.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-B-ea5OKA.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-BXejMYGk.js.map
266
+ //# sourceMappingURL=stateDiagram-OKZ733FA-CNNoDNwB.js.map
@@ -1,5 +1,5 @@
1
- import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-CYZ36tQD.js";
2
- import { _ as l } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-DYJwqjr4.js";
2
+ import { _ as l } from "./mermaid-GHXKKRXX-B-ea5OKA.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-BP05TJSl.js.map
19
+ //# sourceMappingURL=stateDiagram-v2-UEYNNEHI-xYjW9R-s.js.map
@@ -1,5 +1,5 @@
1
- import { c as Tr } from "./chunk-RYQCIY6F-CuAngwHt.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-DfdCmrs3.js";
1
+ import { c as Tr } from "./chunk-RYQCIY6F-BWL1otLK.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-B-ea5OKA.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-D9LGwwwC.js");
27
+ const { captureNodeSizes: I } = await import("./sizeCapture-X5ZJPWSS-DlIoKfk1.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-CfmDVYhs.js.map
5335
+ //# sourceMappingURL=swimlanes-SLNWSIFB-Chjr6NCU.js.map
@@ -1,5 +1,5 @@
1
- import { c as e, s as a } from "./flowDiagram-UKHOOZJN-BZfBucKB.js";
2
- import { _ as s } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { c as e, s as a } from "./flowDiagram-UKHOOZJN-Cf42sXVK.js";
2
+ import { _ as s } from "./mermaid-GHXKKRXX-B-ea5OKA.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-DfjQBUfV.js.map
16
+ //# sourceMappingURL=swimlanesDiagram-ULZ7WXOC-A9mWwnCX.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-DfdCmrs3.js";
2
- import { d as ot } from "./arc-B4biduil.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-B-ea5OKA.js";
2
+ import { d as ot } from "./arc-DaSgre52.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-C0BwzTs3.js.map
1058
+ //# sourceMappingURL=timeline-definition-Z64GVDOM-DldyCd1l.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-DfdCmrs3.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-B-ea5OKA.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-CRf8sGBL.js.map
1581
+ //# sourceMappingURL=vennDiagram-T6HMQDX7-BGfiPWG2.js.map
@@ -1,5 +1,5 @@
1
- import { p as St } from "./chunk-JWPE2WC7-ClHq4gN2.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-DfdCmrs3.js";
1
+ import { p as St } from "./chunk-JWPE2WC7-DAn-TcDC.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-B-ea5OKA.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-C2h7TQ4a.js.map
681
+ //# sourceMappingURL=wardleyDiagram-T6FBY63Y-Bzn9DJ27.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-DfdCmrs3.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-B-ea5OKA.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-DYjDg3gl.js";
4
+ import { l as vt } from "./linear-CzN3Xd3g.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-CBcAwmdF.js.map
1421
+ //# sourceMappingURL=xychartDiagram-ELKLHX3M-nMaNgT12.js.map
@@ -6,7 +6,7 @@ import { Streamdown, ControlsConfig } from 'streamdown';
6
6
  export type MessageProps = HTMLAttributes<HTMLDivElement> & {
7
7
  from: UIMessage["role"];
8
8
  };
9
- export declare const Message: ({ className, from, ...props }: MessageProps) => import("react").JSX.Element;
9
+ export declare const Message: ({ className, from, children, ...props }: MessageProps) => import("react").JSX.Element;
10
10
  export type MessageContentProps = HTMLAttributes<HTMLDivElement>;
11
11
  export declare const MessageContent: ({ children, className, ...props }: MessageContentProps) => import("react").JSX.Element;
12
12
  export type MessageActionsProps = ComponentProps<"div">;
@@ -15,7 +15,7 @@ export type MessageActionProps = ComponentProps<typeof Button> & {
15
15
  tooltip?: string;
16
16
  label?: string;
17
17
  };
18
- export declare const MessageAction: ({ tooltip, children, label, variant, size, ...props }: MessageActionProps) => import("react").JSX.Element;
18
+ export declare const MessageAction: ({ tooltip, children, label, className, variant, size, ...props }: MessageActionProps) => import("react").JSX.Element;
19
19
  export type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {
20
20
  defaultBranch?: number;
21
21
  onBranchChange?: (branchIndex: number) => void;
@@ -71,6 +71,8 @@ export interface PromptInputMessage {
71
71
  files: FileUIPart[];
72
72
  }
73
73
  export type PromptInputProps = Omit<HTMLAttributes<HTMLFormElement>, "onSubmit" | "onError"> & {
74
+ /** A context/usage row that shares the validated attachment provider. */
75
+ beforeInput?: ReactNode;
74
76
  accept?: string;
75
77
  multiple?: boolean;
76
78
  globalDrop?: boolean;
@@ -83,7 +85,7 @@ export type PromptInputProps = Omit<HTMLAttributes<HTMLFormElement>, "onSubmit"
83
85
  }) => void;
84
86
  onSubmit: (message: PromptInputMessage, event: SyntheticEvent<HTMLFormElement>) => void | Promise<void>;
85
87
  };
86
- export declare const PromptInput: ({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, ...props }: PromptInputProps) => import("react").JSX.Element;
88
+ export declare const PromptInput: ({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, beforeInput, ...props }: PromptInputProps) => import("react").JSX.Element;
87
89
  export type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;
88
90
  export declare const PromptInputBody: ({ className, ...props }: PromptInputBodyProps) => import("react").JSX.Element;
89
91
  export type PromptInputTextareaProps = ComponentProps<typeof InputGroupTextarea>;
@@ -8,7 +8,8 @@ export type TaskProps = ComponentProps<typeof Collapsible>;
8
8
  export declare const Task: ({ defaultOpen, className, ...props }: TaskProps) => import("react").JSX.Element;
9
9
  export type TaskTriggerProps = Omit<ComponentProps<typeof CollapsibleTrigger>, "title"> & {
10
10
  title: ReactNode;
11
+ icon?: ReactNode;
11
12
  };
12
- export declare const TaskTrigger: ({ children, className, title, ...props }: TaskTriggerProps) => import("react").JSX.Element;
13
+ export declare const TaskTrigger: ({ children, className, title, icon, ...props }: TaskTriggerProps) => import("react").JSX.Element;
13
14
  export type TaskContentProps = ComponentProps<typeof CollapsibleContent>;
14
15
  export declare const TaskContent: ({ children, className, ...props }: TaskContentProps) => import("react").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import { SandboxCommandData, ToolCallData } from '../../stream/belong-data-parts.ts';
2
- export declare const TerminalTask: ({ command, output, }: {
2
+ export declare const TerminalTask: ({ command, output, live, }: {
3
3
  readonly command: ToolCallData;
4
4
  readonly output: SandboxCommandData | null;
5
+ readonly live?: boolean;
5
6
  }) => import("react").JSX.Element;
@@ -1,8 +1,2 @@
1
- import { CSSProperties } from 'react';
2
- export type PortalTheme = {
3
- /** Spread onto the portaled content element. */
4
- readonly style: CSSProperties;
5
- /** `"dark"` when the dock is dark, so Tailwind's `.dark` variants apply. */
6
- readonly className: string | undefined;
7
- };
8
- export declare const usePortalTheme: () => PortalTheme;
1
+ /** Compatibility export for connector surfaces; all shared overlays now use it. */
2
+ export { usePortalTheme, type PortalTheme } from '../../embed/portal-container.tsx';
@@ -3,7 +3,7 @@
3
3
  * the single-agent rail item uses (same `MessageSquare`, same size — the
4
4
  * icons must not read as a different family), with the agent's number as a
5
5
  * small counter disc at the bottom-right corner, unread-count style. The
6
- * disc mirrors the working badge's idiom (`size-3.5` rounded disc on
6
+ * disc mirrors the working badge's idiom (a small rounded disc on
7
7
  * `bg-background`, EmbedRail's `lineBadge`) so the two corners speak the same
8
8
  * visual language: status top-right, identity bottom-right.
9
9
  *
@@ -1,17 +1,19 @@
1
+ import { LucideIcon } from 'lucide-react';
1
2
  import { WorkPhase } from '../../embed/voice-narration.ts';
2
- /**
3
- * The ONE phase→icon mapping for "an agent is working right now" — extracted
4
- * from CallScreen (the orb's work badge + each agent-board card's working
5
- * icon) so the rail's agent-group badges (Rail-C) wear the SAME icon per
6
- * phase instead of a second hand-rolled copy drifting from the first.
7
- *
8
- * `phase === null` means "working but the kind of work isn't classified yet"
9
- * (e.g. between dispatch and the run's first tool call) — a spinner, not a
10
- * missing icon. Every caller passes its own `className` for sizing/color;
11
- * the spinner's `animate-spin` is baked in here rather than left to callers,
12
- * since a non-spinning "spinner" icon would be a silent visual bug.
13
- */
14
- export declare function AgentPhaseIcon({ phase, className, }: {
15
- readonly phase: WorkPhase | null;
3
+ export type AgentWorkPhase = WorkPhase | "thinking" | "terminal" | "skill" | null;
4
+ /** Presentation only: real activity may continue while its decoration rests.
5
+ * One observer per symbol also covers scroll containers and Shadow DOM. */
6
+ export declare function useActivityMotion(active: boolean): {
7
+ ref: import('react').RefObject<HTMLSpanElement | null>;
8
+ moving: boolean;
9
+ };
10
+ /** The actual MIT Thinking Orbs inline preset for thinking/working; Lucide
11
+ * task symbols retain their familiar silhouette while their inner marks move.
12
+ * Only callers with current runtime evidence enable activity. */
13
+ export declare function AgentPhaseIcon({ phase, className, active, icon, theme, }: {
14
+ readonly phase: AgentWorkPhase;
16
15
  readonly className?: string;
16
+ readonly active?: boolean;
17
+ readonly icon?: LucideIcon;
18
+ readonly theme?: "light" | "dark";
17
19
  }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ApiKeysSettings: () => import("react").JSX.Element;
@@ -1,12 +1,10 @@
1
- /**
2
- * The dock-header beta advisory: a small always-visible "Beta" pill next to
3
- * the header title. Clicking it opens the info widget — "«brand» is in beta",
4
- * the instability + report-with-👍/👎 explanation, and the U.S.-hosted-services
5
- * line separated as its own row. A Popover (portaled into the shadow-root
6
- * container) with collision handling, so the widget stays inside the viewport
7
- * at any dock width; the pill itself is shrink-0 so the truncating title can
8
- * never squeeze it out.
9
- */
10
- export declare function BetaBadge({ brandName }: {
1
+ /** Shared beta information. The composer uses the compact footer disclosure;
2
+ * the older badge/menu presentations remain available to existing consumers.
3
+ * Overlays inherit the agent's tenant tokens and Shadow DOM portal container.
4
+ * `legalLine` is a tenant's own legal caveat (Simetrik's), shown first in the
5
+ * information behind the icon. */
6
+ export declare function BetaBadge({ brandName, presentation, legalLine, }: {
11
7
  brandName: string;
8
+ presentation?: "badge" | "menu" | "label" | "footer";
9
+ legalLine?: string | null;
12
10
  }): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { FileUIPart } from 'ai';
2
+ /** Current host page and real pending files, separate from past token telemetry. */
3
+ export declare function ComposerContext({ files, onAttach, onRemove, }: {
4
+ readonly files: readonly (FileUIPart & {
5
+ readonly id: string;
6
+ })[];
7
+ readonly onAttach: () => void;
8
+ readonly onRemove: (id: string) => void;
9
+ }): import("react").JSX.Element | null;
@@ -1,30 +1,31 @@
1
1
  import { SessionSummary } from './EmbedSessions.tsx';
2
2
  import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.ts';
3
- /**
4
- * Logged-in user avatar (rail top). Opens a menu: "Signed in as …", the theme
5
- * controls (Dark mode + Move to left/right — kept here because this dock has a
6
- * multi-brand theme store), a Voice group (push-to-talk key rebinding, shown
7
- * only when the browser supports mic capture), an Appearance group (accent
8
- * colour + custom CSS), then Log out. Gradient is brand-driven (Ocean → Deep
9
- * Sea) via the active palette.
10
- */
11
- export declare function EmbedAvatar({ user, size, theme, palette, side, menuSide: menuSideOverride, sessionId, voiceSupported, sessions, accent, cssVars, presets, activePreset, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, sessionAgentLine, }: {
3
+ /** Profile access opens one settings surface; preferences never change the active conversation. */
4
+ export declare function EmbedAvatar({ user, size, showBrandMark, presentation, readReplies, theme, palette, side, sessionId, voiceSupported, sessions, accent, cssVars, presets, activePreset, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, sessionAgentLine, }: {
12
5
  user: string | null;
13
6
  size?: number;
7
+ /** Keep the agent identity visible while the dock is collapsed. */
8
+ showBrandMark?: boolean;
9
+ /** Fullscreen sidebar footer keeps the account and its settings discoverable. */
10
+ presentation?: "icon" | "account-row";
11
+ /** Reply playback is independent of microphone capture support. */
12
+ readReplies?: {
13
+ readonly supported: boolean;
14
+ readonly enabled: boolean;
15
+ readonly onToggle: () => void;
16
+ };
14
17
  theme: BelongTheme;
15
18
  palette: BelongThemePalette;
16
19
  side: "left" | "right";
17
- /** Where the menu opens. Defaults to "toward the panel" from the rail edge;
18
- * the mobile bottom nav bar overrides it to open upward. */
20
+ /** Retained for source compatibility; settings now use a fullscreen dialog. */
19
21
  menuSide?: "left" | "right" | "top";
20
22
  /** Active chat session id (null when no conversation is open yet). Shown in
21
- * the menu under the build stamp and copyable for telemetry correlation;
22
- * also the History submenu's active-row indicator (Rail-D). */
23
+ * About and copyable for telemetry correlation;
24
+ * also the History section's active-row indicator (Rail-D). */
23
25
  sessionId: string | null;
24
26
  /** Browser supports mic capture — gates the Voice (push-to-talk) section. */
25
27
  voiceSupported: boolean;
26
- /** Recent sessions for the History submenu (Rail-D: demoted from the
27
- * rail's own dropdown into the settings menu). */
28
+ /** Recent sessions shared by settings History and the direct rail launcher. */
28
29
  sessions: readonly SessionSummary[];
29
30
  accent: string | null;
30
31
  cssVars: Record<string, string>;
@@ -44,14 +45,14 @@ export declare function EmbedAvatar({ user, size, theme, palette, side, menuSide
44
45
  onSelectSession: (id: string) => void;
45
46
  onDeleteSession: (id: string) => void;
46
47
  onRenameSession: (id: string, title: string) => void;
47
- /** Fired when the History submenu opens — the dock refetches the list so
48
+ /** Fired when the History section opens — the dock refetches the list so
48
49
  * it's fresh (mirrors EmbedSessions' own `onOpen`). */
49
50
  onSessionsOpen?: () => void;
50
51
  /** Open the per-session stats dialog (plan 2026-07-24). Optional so the
51
- * avatar menu still renders without the dock's panel host wired up. */
52
+ * settings dialog still renders without the dock's panel host wired up. */
52
53
  onViewStats?: (sessionId: string) => void;
53
54
  /** sessionId -> the agent line currently bound to it (F3) — threaded
54
- * straight through to the History submenu's `EmbedSessionsBody` so an
55
+ * straight through to the History section's `EmbedSessionsBody` so an
55
56
  * already-open row wears its "Agent N" badge. */
56
57
  sessionAgentLine?: ReadonlyMap<string, number>;
57
58
  }): import("react").JSX.Element;
@@ -5,8 +5,13 @@ import { SkillSummary } from '../../api/skills.ts';
5
5
  import { PrePromptSummary } from '../../api/pre-prompts.ts';
6
6
  import { WorkspaceFile } from '../../api/workspace-files.ts';
7
7
  import { UsageMeterProps } from './UsageMeter.tsx';
8
- export declare function EmbedComposer({ draft, suggestion, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, prompts, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSaveAsPrompt, onSubmit, onStop, usage, pendingQuestion, }: Readonly<{
8
+ export declare function EmbedComposer({ draft, placeholder, suggestion, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, librarySkills, prompts, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSaveAsPrompt, onSubmit, onStop, usage, pendingQuestion, onSetGoal, }: Readonly<{
9
9
  draft: string;
10
+ /** Overrides the composer's own invitation while a surface above it is
11
+ * asking for something specific (the goal row's "Tell it what to try"
12
+ * hands the composer over with its own words). Null — the default — keeps
13
+ * the ordinary mode-aware copy. */
14
+ placeholder?: string | null;
10
15
  /** BEL-255 — ghost text painted over an EMPTY draft (the locale opening
11
16
  * question on a brand-new chat). Tab completes it into the draft; typing
12
17
  * anything else just replaces it. Never submittable by itself: the draft
@@ -23,6 +28,8 @@ export declare function EmbedComposer({ draft, suggestion, status, submitting, d
23
28
  theme: BelongTheme;
24
29
  palette: BelongThemePalette;
25
30
  skills: readonly SkillSummary[];
31
+ /** Enabled skills only; the slash picker also contains workspace commands. */
32
+ librarySkills?: readonly SkillSummary[];
26
33
  /** The user's saved prompts (BEL-256) — merged into the `/` menu here, so a
27
34
  * prompt cannot leak into a consumer that expects runnable skills (the voice
28
35
  * `invoke_skill` resolver dispatches `/name` as RAW text, which the runtime
@@ -53,4 +60,9 @@ export declare function EmbedComposer({ draft, suggestion, status, submitting, d
53
60
  * reply answers the question in chat) instead of stopping the run. An
54
61
  * empty draft keeps the button as Stop. */
55
62
  pendingQuestion?: boolean;
63
+ /** Task 16 — opens the goal compose sheet ("Set a goal…", the mode menu's
64
+ * fifth entry). Omitted → the entry is not offered at all, which is what
65
+ * keeps every provider-less composer test/story rendering and is how
66
+ * `chat.tsx` gates the door once a `goals_disabled` 503 has been seen. */
67
+ onSetGoal?: (() => void) | undefined;
56
68
  }>): import("react").JSX.Element;
@@ -1,41 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ import { GoalBadgeProps } from './GoalBadge.tsx';
1
3
  import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
2
- /**
3
- * Slim brand bar at the top of the chat: the mark + the brand/view title, and
4
- * a small second line under it — the name of the conversation on screen when
5
- * the dock passes one (`subtitle`, chat view), otherwise the "by Belong"
6
- * tagline when a tenant brand is active. Knowing WHICH chat is open beats the
7
- * co-branding line on the one surface where both compete for the same slot.
8
- * Action controls live in the rail (EmbedRail), not here — with TWO
9
- * exceptions:
10
- * • `onExportChat` — download the current conversation as JSON. Stateful:
11
- * while the backend generates the export the button shows a spinner and
12
- * is disabled; the label (aria + hover title) carries the timestamp of
13
- * the session's last export when one exists.
14
- * • `onCloseChat` — the in-surface way to close the CURRENT agent chat.
15
- * The dock passes it only while the chat view is up AND more than one
16
- * agent chat exists (closing the only conversation is meaningless — there
17
- * is nothing to fall back to), so the single-chat header stays exactly as
18
- * it always was.
19
- */
20
- export declare function EmbedHeader({ title, subtitle, palette, brand, onExportChat, exportState, exportChatLabel, onCloseChat, closeChatLabel, }: {
4
+ /** Conversation title on desktop; mobile keeps the agent's direct logo control. */
5
+ export declare function EmbedHeader({ title, subtitle, palette, brand, onExportChat, exportState, exportChatLabel, onCloseChat, closeChatLabel, onMinimize, onToggleFullscreen, fullscreen, layoutControl, goal, }: {
21
6
  title: string;
22
- /** Second header line — the current chat's name (chat view). Takes the slot
23
- * the "by Belong" tagline occupies when absent. */
24
7
  subtitle?: string;
25
8
  palette: BelongThemePalette;
26
9
  brand: BelongThemeBrand;
27
- /** Request a chat export (rendered only when provided — chat view with a
28
- * server-bound session). Disabled while `exportState` is "generating". */
29
10
  onExportChat?: () => void;
30
11
  exportState?: "idle" | "generating";
31
- /** Accessible name + hover title for the export control. Carries the last
32
- * export timestamp when the session has one. Required with `onExportChat`. */
33
12
  exportChatLabel?: string;
34
- /** Close the current agent chat (release its line, fall back to the next
35
- * agent). Rendered only when provided — see the component doc for the
36
- * dock's gating rule. */
37
13
  onCloseChat?: () => void;
38
- /** Accessible name for the close control (carries the agent's identity,
39
- * e.g. "Close Agent 2 — invoices"). Required alongside `onCloseChat`. */
40
14
  closeChatLabel?: string;
15
+ onMinimize?: () => void;
16
+ onToggleFullscreen?: () => void;
17
+ fullscreen?: boolean;
18
+ layoutControl?: ReactNode;
19
+ /** Goal Mode status pill — rendered only while the dock
20
+ * has a live, non-cleared goal for the on-screen session. Since spec §4 it
21
+ * is a DOOR: it says the status and opens the Goal rail view. Same place,
22
+ * same tone rules, no panel of its own. */
23
+ goal?: GoalBadgeProps;
41
24
  }): import("react").JSX.Element;
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import { VoiceActionFlash } from '../../embed/closed-surface-voice-bus.ts';
2
3
  import { VoiceStatus } from '../../embed/voice-bus.ts';
3
4
  import { SessionSummary } from './EmbedSessions';
@@ -7,15 +8,14 @@ import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.
7
8
  * two must carry the SAME members: this one is what the chrome renders, that
8
9
  * one is what the router and localStorage persist, and a view present in only
9
10
  * 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" | "connectors";
11
+ export type EmbedView = "chat" | "goal" | "files" | "scheduled" | "prompts" | "connectors" | "skills";
11
12
  /**
12
- * 52px rail. Top: user avatar (account + theme controls). Middle: Chat /
13
- * Files nav (active = Ocean primary fill, brand-driven). Bottom
14
- * (when expanded): the chat action cluster — Chats (sessions), TTS speaker,
15
- * expand-to-modal — then the collapse toggle. Active fill + brand colours come
16
- * from `palette` so a host brand push re-themes everything.
13
+ * Compact 52px rail, expanding into a labeled 208px sidebar on request.
14
+ * History and workspace navigation share one hierarchy in both dock states.
15
+ * Focus hides labels only; every destination remains available as an icon.
16
+ * Active fill and brand colors come from the tenant palette.
17
17
  */
18
- 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, onSelectAgentLine, onCloseAgentLine, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, onToggleSpeak, fullscreen, onToggleFullscreen, connectorsUnavailable, }: {
18
+ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessions, activeId, planProgress, speakEnabled, ttsSupported, voiceSupported, voiceStatus, pendingVoiceDraft, voiceActionFlash, accent, cssVars, presets, activePreset, onSelectView, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onSelectAgentLine, onCloseAgentLine, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, onToggleSpeak, fullscreen, navigationLabelsVisible, onToggleNavigationLabels, layoutControl, connectorsUnavailable, skillsUnavailable, goalPresent, goalNeedsYou, }: {
19
19
  view: EmbedView;
20
20
  collapsed: boolean;
21
21
  user: string | null;
@@ -51,8 +51,16 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
51
51
  label: string;
52
52
  }[];
53
53
  activePreset: PresetName;
54
+ /** Whether this session has a goal that is not cleared — the Goal chip
55
+ * exists only then, so a user who never runs a goal never sees a dead tab. */
56
+ goalPresent: boolean;
57
+ /** The on-screen session's goal is in one of the five statuses that owe the
58
+ * reader something (`goalRowModel`'s "attention" tone — Task 7). Paints an
59
+ * amber dot on BOTH the Chat and Goal chips while the dock is collapsed, so
60
+ * the ask is visible without opening the panel; never the only signal —
61
+ * each chip's accessible label names the ask too. */
62
+ goalNeedsYou: boolean;
54
63
  onSelectView: (v: EmbedView) => void;
55
- onToggleCollapse: () => void;
56
64
  onToggleMode: () => void;
57
65
  onToggleSide: () => void;
58
66
  onAccentChange: (c: string) => void;
@@ -85,9 +93,13 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
85
93
  * rail still renders without the dock's panel host wired up. */
86
94
  onViewStats?: (sessionId: string) => void;
87
95
  onToggleSpeak: () => void;
88
- /** The dock is fullscreen right now — the toggle reads "Exit fullscreen". */
96
+ /** Actual fullscreen layout; its rail stays on the physical left edge. */
89
97
  fullscreen: boolean;
90
- onToggleFullscreen: () => void;
98
+ /** Presentation only: Focus hides labels without changing layout or navigation. */
99
+ navigationLabelsVisible?: boolean;
100
+ onToggleNavigationLabels?: () => void;
101
+ /** The logo controls dock visibility or fullscreen labels, owned by the shell. */
102
+ layoutControl?: ReactNode;
91
103
  /**
92
104
  * This deployment answered "the connectors feature is off here" — the rail
93
105
  * then hides the Connectors entry entirely, because a surface that can only
@@ -100,4 +112,11 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
100
112
  * ordinary outage keeps the entry, and the surface shows its retry state.
101
113
  */
102
114
  connectorsUnavailable?: boolean;
115
+ /**
116
+ * This deployment answered "the skill library is off here" (404, or a 503
117
+ * whose body is `skill_library_disabled`). Same optimistic semantics as
118
+ * `connectorsUnavailable`: FALSE until that answer has resolved, so the
119
+ * entry never pops in late and an outage never hides it.
120
+ */
121
+ skillsUnavailable?: boolean;
103
122
  }): import("react").JSX.Element;
@@ -24,23 +24,18 @@ type SessionsBodyProps = {
24
24
  * list without the dock's panel host still renders. */
25
25
  onViewStats?: (sessionId: string) => void;
26
26
  };
27
- /**
28
- * The "New chat" item + recent-sessions list, WITHOUT a menu shell of its own —
29
- * the reusable half of the sessions switcher. `EmbedSessions` below wraps this
30
- * in its own `DropdownMenu`/`DropdownMenuContent` for the rail/mobile trigger;
31
- * `EmbedAvatar`'s History submenu wraps the SAME body in a
32
- * `DropdownMenuSub`/`DropdownMenuSubContent` instead (Rail-D) — one
33
- * implementation of rename/delete/select, two menu shells. Radix unmounts a
34
- * closed Content/SubContent by default, so this component's local edit/confirm
35
- * state resets for free on every close — no explicit reset needed here.
36
- */
37
- export declare function EmbedSessionsBody({ sessions, activeId, onNew, onSelect, onDelete, onRename, sessionAgentLine, onViewStats, }: SessionsBodyProps): import("react").JSX.Element;
27
+ /** Shared history behavior for the compact menu and fullscreen settings.
28
+ * Panel rows use native buttons with sibling edit actions, so history does
29
+ * not depend on a Radix menu context or nest interactive controls. */
30
+ export declare function EmbedSessionsBody({ sessions, activeId, onNew, onSelect, onDelete, onRename, sessionAgentLine, onViewStats, presentation, }: SessionsBodyProps & {
31
+ presentation?: "menu" | "panel";
32
+ }): import("react").JSX.Element;
38
33
  /**
39
34
  * Header control to start a new chat, switch to a recent session, rename one via
40
35
  * an inline text edit, or delete one via an inline trash → confirm flow. Rename +
41
36
  * delete are per-row inline affordances that keep the menu open (BEL-120).
42
37
  */
43
- export declare function EmbedSessions({ sessions, activeId, theme, side, triggerClassName, triggerLabel, onNew, onSelect, onDelete, onRename, onOpen, sessionAgentLine, onViewStats, }: SessionsBodyProps & {
38
+ export declare function EmbedSessions({ sessions, activeId, theme, side, triggerClassName, triggerLabel, presentation, onNew, onSelect, onDelete, onRename, onOpen, sessionAgentLine, onViewStats, }: SessionsBodyProps & {
44
39
  theme: BelongTheme;
45
40
  /** Which way the menu opens — toward the panel from the rail edge, or
46
41
  * upward when the trigger lives in the mobile bottom nav bar. */
@@ -51,6 +46,9 @@ export declare function EmbedSessions({ sessions, activeId, theme, side, trigger
51
46
  /** Visible text under the trigger icon (mobile nav names its cells; the
52
47
  * rail stays icon-only). */
53
48
  triggerLabel?: string;
49
+ /** Labeled navigation row for the expanded sidebar; icon preserves the
50
+ * compact launcher and optional mobile triggerLabel. */
51
+ presentation?: "icon" | "labeled";
54
52
  /** Fired when the menu opens — the dock refetches the list so it's fresh. */
55
53
  onOpen?: () => void;
56
54
  }): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { GoalActionOutcome, GoalView } from '../../api/goals.ts';
2
+ export type GoalActionKind = "pause" | "resume" | "clear";
3
+ export type GoalActionsProps = {
4
+ readonly goal: GoalView;
5
+ /** Each returns the API outcome; the footer renders its OWN failure line —
6
+ * the caller never has to. */
7
+ readonly onAction: (action: GoalActionKind) => Promise<GoalActionOutcome>;
8
+ readonly onEdit?: (() => void) | undefined;
9
+ /** Task 19 — the footer's Snooze ▾ menu. Rendered beside Pause exactly
10
+ * where `goalActionAvailability(goal.status).snooze` says the server
11
+ * accepts it (active + the three waiting statuses); undefined for any
12
+ * composer that has not wired snooze up yet (Storybook, older callers). */
13
+ readonly onSnooze?: ((wakeAt: Date) => Promise<GoalActionOutcome>) | undefined;
14
+ };
15
+ export declare function GoalActions({ goal, onAction, onEdit, onSnooze }: GoalActionsProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { GoalView } from '../../api/goals.ts';
2
+ export type GoalBadgeProps = {
3
+ readonly goal: GoalView;
4
+ /** Selects the Goal rail view. The pill is a door now, not a panel
5
+ * (spec §4 — the popover is deleted). */
6
+ readonly onOpenGoalView: () => void;
7
+ };
8
+ /**
9
+ * The header pill (advisory placement per `a3s-dock-advisory-placement`):
10
+ * a shrink-0 status pill next to `BetaBadge` that says what the goal is doing
11
+ * and OPENS THE GOAL VIEW. It used to carry the whole goal behind a popover;
12
+ * that panel is deleted (spec §4) — a surface that must hold a ten-entry
13
+ * timeline and a row of buttons is not a popover, and the buttons were what
14
+ * got squeezed off screen. Renders nothing for a `cleared` goal so a previous
15
+ * chat's pill never lingers.
16
+ */
17
+ export declare function GoalBadge({ goal, onOpenGoalView }: GoalBadgeProps): import("react").JSX.Element | null;
@@ -0,0 +1,6 @@
1
+ export type GoalClearDialogProps = {
2
+ readonly open: boolean;
3
+ readonly onOpenChange: (open: boolean) => void;
4
+ readonly onConfirm: () => void;
5
+ };
6
+ export declare function GoalClearDialog({ open, onOpenChange, onConfirm }: GoalClearDialogProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare function GoalClearedLine({ clearedAt }: {
2
+ readonly clearedAt: string;
3
+ }): import("react").JSX.Element;