@belonguniverseai/react-sdk 0.6.17 → 0.6.19

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 (112) hide show
  1. package/README.md +70 -8
  2. package/dist/api/account-connectors.d.ts +19 -10
  3. package/dist/api/client.d.ts +573 -44
  4. package/dist/api/connectors.d.ts +1 -0
  5. package/dist/api/queries.d.ts +1 -0
  6. package/dist/api/task-schedules.d.ts +8 -8
  7. package/dist/app/BelongDock.d.ts +2 -2
  8. package/dist/component/BelongWidget.d.ts +22 -1
  9. package/dist/component/{abnfDiagram-N423BO3Z-DQQzuYZD.js → abnfDiagram-N423BO3Z-p8pf1oUu.js} +4 -4
  10. package/dist/component/{arc-DyP79PGf.js → arc-CDN3jDNB.js} +2 -2
  11. package/dist/component/{architectureDiagram-T3A2C74G-D_elSQ1O.js → architectureDiagram-T3A2C74G-Dd8FlfDW.js} +3 -3
  12. package/dist/component/{blockDiagram-VBNYF7ZC-LCbtrdey.js → blockDiagram-VBNYF7ZC-CUgNh_GL.js} +4 -4
  13. package/dist/component/{c4Diagram-5PPSVZJV-BavpcOfZ.js → c4Diagram-5PPSVZJV-CSjftNi_.js} +3 -3
  14. package/dist/component/{channel-BZqwTbw2.js → channel-RXp4rUai.js} +2 -2
  15. package/dist/component/{chunk-2GRJ4B5K-CUnqSIZ_.js → chunk-2GRJ4B5K-Conm-Udw.js} +2 -2
  16. package/dist/component/{chunk-2Q5K7J3B-BXbvDQmH.js → chunk-2Q5K7J3B-BJVcNqca.js} +2 -2
  17. package/dist/component/{chunk-5RXB4S5H-9sfSr0mD.js → chunk-5RXB4S5H-ClnvuSUP.js} +5 -5
  18. package/dist/component/{chunk-5VM5RSS4-VnYY-ckg.js → chunk-5VM5RSS4-CZSg676A.js} +2 -2
  19. package/dist/component/{chunk-6Q2QTUOP-cjY3qI3C.js → chunk-6Q2QTUOP-d6e2hDQ3.js} +2 -2
  20. package/dist/component/{chunk-GF5L2VYU-B4uiGrvB.js → chunk-GF5L2VYU-DMNXiX_5.js} +6 -6
  21. package/dist/component/{chunk-JWPE2WC7-C_FwRGti.js → chunk-JWPE2WC7-Be-HKBKg.js} +2 -2
  22. package/dist/component/{chunk-KBJHAD2P-BThvKHPK.js → chunk-KBJHAD2P-CSs5ejAq.js} +2 -2
  23. package/dist/component/{chunk-RYQCIY6F-CNf0rdtW.js → chunk-RYQCIY6F-BM0CmhLz.js} +2 -2
  24. package/dist/component/{chunk-XXDRQBXY-BDEUQoWy.js → chunk-XXDRQBXY-Xj8K5wzT.js} +2 -2
  25. package/dist/component/{classDiagram-JCYQIIEL-Dp0ahzb0.js → classDiagram-JCYQIIEL-DTZI6cPh.js} +3 -3
  26. package/dist/component/{classDiagram-v2-OCEON4UE-Dp0ahzb0.js → classDiagram-v2-OCEON4UE-DTZI6cPh.js} +3 -3
  27. package/dist/component/{cose-bilkent-JH36ORCC-Dc-CE5JY.js → cose-bilkent-JH36ORCC-DaY5o18F.js} +2 -2
  28. package/dist/component/{cynefinDiagram-MW4NZA55-BA2fEkMD.js → cynefinDiagram-MW4NZA55-DoTeA4Ye.js} +3 -3
  29. package/dist/component/{dagre-VZM6K2ZE-B4d8ixBl.js → dagre-VZM6K2ZE-CF3eWDN_.js} +3 -3
  30. package/dist/component/{diagram-7IWD3JNH-DKOeWl-_.js → diagram-7IWD3JNH-D4CVwoPP.js} +4 -4
  31. package/dist/component/{diagram-B4RE2ZJO-DvvRtQm3.js → diagram-B4RE2ZJO-DTk-yH1g.js} +3 -3
  32. package/dist/component/{diagram-LBJQPF4R-DXFi21rR.js → diagram-LBJQPF4R-C82NaEDn.js} +3 -3
  33. package/dist/component/{diagram-Q27KOJAE-BkZNFrtu.js → diagram-Q27KOJAE-DVbW2GPm.js} +4 -4
  34. package/dist/component/{diagram-UB23O5K3-D_IJQzxk.js → diagram-UB23O5K3-fLwqL8Hl.js} +3 -3
  35. package/dist/component/{ebnfDiagram-BXEA7PRR-DD6VLDvv.js → ebnfDiagram-BXEA7PRR-BLEKzcRB.js} +4 -4
  36. package/dist/component/{erDiagram-JOGREHBK-D2GUhORW.js → erDiagram-JOGREHBK-D9srj1qV.js} +5 -5
  37. package/dist/component/{flowDiagram-UKHOOZJN-BO76VMQu.js → flowDiagram-UKHOOZJN-CeyLyzYo.js} +7 -7
  38. package/dist/component/{ganttDiagram-PKOTCBZU-DiZEbOvk.js → ganttDiagram-PKOTCBZU-D_wnN-8z.js} +3 -3
  39. package/dist/component/{gitGraphDiagram-DS77QQ5N-3JU_fIgh.js → gitGraphDiagram-DS77QQ5N-PeHi2KIR.js} +4 -4
  40. package/dist/component/{highlighted-body-OFNGDK62-DyUfTvlp.js → highlighted-body-OFNGDK62-CuSKYiPW.js} +2 -2
  41. package/dist/component/index.js +2 -2
  42. package/dist/component/{infoDiagram-6WML65LV-wQDDhFdJ.js → infoDiagram-6WML65LV-CGnUeTPG.js} +2 -2
  43. package/dist/component/{ishikawaDiagram-WSZJBQD7-ByqLAAAH.js → ishikawaDiagram-WSZJBQD7-DhbZTdB_.js} +2 -2
  44. package/dist/component/{journeyDiagram-NVQOT4AX-CJrAO9iO.js → journeyDiagram-NVQOT4AX-DbAZyk3F.js} +5 -5
  45. package/dist/component/{kanban-definition-27J2QSJJ-BK-6EIGy.js → kanban-definition-27J2QSJJ-CPIUg4vz.js} +3 -3
  46. package/dist/component/{linear-5HARV3Z1.js → linear-CpcRfWUV.js} +2 -2
  47. package/dist/component/{mermaid-GHXKKRXX-BYmG2b26.js → mermaid-GHXKKRXX-CnsSyJhK.js} +94531 -93143
  48. package/dist/component/{mindmap-definition-FAOFIHXS-CWZ3W_zW.js → mindmap-definition-FAOFIHXS-RIm66-oB.js} +4 -4
  49. package/dist/component/{pegDiagram-VL7TDLO6-DHCzlDWN.js → pegDiagram-VL7TDLO6-C6uB8Ash.js} +4 -4
  50. package/dist/component/{pieDiagram-7S7Q4E2Y-BbgPCeI4.js → pieDiagram-7S7Q4E2Y-6m7QqfK3.js} +4 -4
  51. package/dist/component/{quadrantDiagram-CIZ2JOQS-CVNb4Dn0.js → quadrantDiagram-CIZ2JOQS-Dge2oJ5y.js} +3 -3
  52. package/dist/component/{railroadDiagram-AXF67PYL-BZtclau2.js → railroadDiagram-AXF67PYL-DWfg1byS.js} +4 -4
  53. package/dist/component/{requirementDiagram-LRYGKXZP-DJeluZaM.js → requirementDiagram-LRYGKXZP-C_mrqai9.js} +4 -4
  54. package/dist/component/{sankeyDiagram-W5VNT64P-CxVyzRB-.js → sankeyDiagram-W5VNT64P-D1MhEv2a.js} +2 -2
  55. package/dist/component/{sequenceDiagram-SI44F4Z6-DrkHqtHC.js → sequenceDiagram-SI44F4Z6-mn9it5es.js} +4 -4
  56. package/dist/component/{sizeCapture-X5ZJPWSS-Ctgo1XlA.js → sizeCapture-X5ZJPWSS-Do_vnkJp.js} +2 -2
  57. package/dist/component/{stateDiagram-OKZ733FA-DhCABcA4.js → stateDiagram-OKZ733FA-Pru5Vhsh.js} +3 -3
  58. package/dist/component/{stateDiagram-v2-UEYNNEHI-D_zLh09v.js → stateDiagram-v2-UEYNNEHI-BvRl8AHY.js} +3 -3
  59. package/dist/component/{swimlanes-SLNWSIFB-C40PaZQK.js → swimlanes-SLNWSIFB-CfaY_lmO.js} +4 -4
  60. package/dist/component/{swimlanesDiagram-ULZ7WXOC-BIpHviIl.js → swimlanesDiagram-ULZ7WXOC-BFIfCk31.js} +3 -3
  61. package/dist/component/{timeline-definition-Z64GVDOM-Byx2AKIE.js → timeline-definition-Z64GVDOM-BFU8eZDJ.js} +3 -3
  62. package/dist/component/{vennDiagram-T6HMQDX7-CqLQjKUJ.js → vennDiagram-T6HMQDX7-C475K8TJ.js} +2 -2
  63. package/dist/component/{wardleyDiagram-T6FBY63Y-S9fJVDcY.js → wardleyDiagram-T6FBY63Y-DZEN3DyJ.js} +3 -3
  64. package/dist/component/{xychartDiagram-ELKLHX3M-B3t1Zyyn.js → xychartDiagram-ELKLHX3M-B6MDNNoT.js} +3 -3
  65. package/dist/components/connectors/ConnectorDetailsDialog.d.ts +5 -1
  66. package/dist/components/connectors/ConnectorSetupCard.d.ts +6 -0
  67. package/dist/components/connectors/NewConnectorDialog.d.ts +4 -1
  68. package/dist/components/connectors/authorization-popup.d.ts +3 -0
  69. package/dist/components/connectors/catalog-installation.d.ts +3 -0
  70. package/dist/components/connectors/connector-public-draft.d.ts +4 -0
  71. package/dist/components/connectors/use-connector-oauth.d.ts +1 -1
  72. package/dist/components/embed/AtMentionMenu.d.ts +1 -1
  73. package/dist/components/embed/ComposerMenu.d.ts +4 -1
  74. package/dist/components/embed/EmbedConversation.d.ts +3 -3
  75. package/dist/components/embed/EmbedRail.d.ts +4 -2
  76. package/dist/components/embed/MentionInput.d.ts +2 -1
  77. package/dist/components/embed/SlackConnection.d.ts +6 -0
  78. package/dist/components/embed/SlashCommandMenu.d.ts +1 -1
  79. package/dist/components/embed/WelcomeHero.d.ts +16 -0
  80. package/dist/components/embed/WelcomeIntro.d.ts +18 -7
  81. package/dist/components/embed/WelcomeSkills.d.ts +7 -1
  82. package/dist/components/embed/WorkspacePane.d.ts +16 -0
  83. package/dist/components/embed/onboarding-story-dock.d.ts +3 -2
  84. package/dist/components/embed/use-preview-content-props.d.ts +7 -0
  85. package/dist/components/embed/use-prompt-invocations.d.ts +40 -0
  86. package/dist/components/scheduled/SchedulePrompt.d.ts +10 -0
  87. package/dist/components/scheduled/schedule-prompt-message.d.ts +4 -0
  88. package/dist/embed/copy.d.ts +13 -18
  89. package/dist/embed/dev-mode.d.ts +1 -1
  90. package/dist/embed/dock-layout.d.ts +14 -16
  91. package/dist/embed/dock-size-store.d.ts +7 -0
  92. package/dist/embed/dock-state.d.ts +2 -2
  93. package/dist/embed/hover-capability.d.ts +14 -0
  94. package/dist/embed/page-context.d.ts +11 -0
  95. package/dist/embed/show-target.d.ts +6 -0
  96. package/dist/embed/slash-commands.d.ts +9 -0
  97. package/dist/embed/user-context.d.ts +14 -0
  98. package/dist/embed/voice-call.d.ts +7 -6
  99. package/dist/i18n/messages/en.d.ts +31 -3
  100. package/dist/i18n/messages/surfaces/connectors.d.ts +60 -0
  101. package/dist/i18n/messages/surfaces/embedMisc.d.ts +0 -6
  102. package/dist/i18n/messages/surfaces/header.d.ts +6 -0
  103. package/dist/i18n/messages/surfaces/stream.d.ts +3 -0
  104. package/dist/i18n/messages/surfaces/workspace.d.ts +32 -0
  105. package/dist/stream/ai-sdk-part-renderers.d.ts +2 -1
  106. package/dist/stream/belong-chat-transport.d.ts +9 -9
  107. package/dist/stream/use-agent-workspace-focus.d.ts +5 -0
  108. package/dist/stream/workspace-focus-observer.d.ts +7 -0
  109. package/dist/stream/workspace-focus-store.d.ts +26 -0
  110. package/dist/types/public.d.ts +39 -0
  111. package/package.json +1 -1
  112. package/dist/components/embed/CapabilityHints.d.ts +0 -4
@@ -57,10 +57,6 @@ export type TourCopy = TourLabels & {
57
57
  readonly sessions: TourStepContent;
58
58
  };
59
59
  };
60
- export type HintItem = {
61
- readonly keyLabel: string;
62
- readonly label: string;
63
- };
64
60
  export type MenuCopy = {
65
61
  readonly signedInAs: (user: string) => string;
66
62
  readonly notSignedIn: string;
@@ -85,12 +81,14 @@ export type MenuCopy = {
85
81
  readonly logOut: string;
86
82
  };
87
83
  /** Copy for the empty-state skills table (Simetrik variant only — the compact
88
- * "start from a skill" index that replaces the generic suggestion chips). */
84
+ * index of job rows, each naming a job the agent can do, that replaces the
85
+ * generic suggestion chips). */
89
86
  export type SkillsPanelCopy = {
90
87
  readonly heading: string;
91
88
  /** The "All" group filter chip (shown when skills span multiple groups). */
92
89
  readonly all: string;
93
- /** Footer when the table is truncated: "+N more — type / to see all". */
90
+ /** Footer when the table is truncated:
91
+ * "+N more — type / to see everything". */
94
92
  readonly more: (hiddenCount: number) => string;
95
93
  /** Footer when every skill fits: how to reach the full index later. */
96
94
  readonly hint: string;
@@ -98,18 +96,6 @@ export type SkillsPanelCopy = {
98
96
  export type DockCopy = {
99
97
  readonly welcomeCard: WelcomeCardContent;
100
98
  readonly tour: TourCopy;
101
- readonly hints: {
102
- /** `/` hint; label says "skills" for Simetrik, "commands" for everyone else. */
103
- readonly commands: {
104
- readonly keyLabel: string;
105
- readonly label: Readonly<Record<DockCopyVariant, string>>;
106
- };
107
- readonly files: HintItem;
108
- /** Voice hint label; the key label is the LIVE push-to-talk key. */
109
- readonly voice: {
110
- readonly label: string;
111
- };
112
- };
113
99
  /** Localized name for the Space key (every other code renders via
114
100
  * `formatKeyCode`, which is already language-neutral). */
115
101
  readonly spaceKeyLabel: string;
@@ -121,8 +107,13 @@ export type DockCopy = {
121
107
  readonly portuguese: string;
122
108
  };
123
109
  readonly menu: MenuCopy;
110
+ /** One line of scope in the user's own nouns (spec 2026-09-03). */
124
111
  readonly intro: {
125
112
  readonly greeting: (brandName: string) => string;
113
+ /** Phase 2: the greeting when the host supplied a display name. */
114
+ readonly greetingNamed: (displayName: string) => string;
115
+ /** Phase 2: the page-context line ("Looking at ‹label›"). */
116
+ readonly lookingAt: (label: string) => string;
126
117
  readonly body: Readonly<Record<DockCopyVariant, string>>;
127
118
  };
128
119
  /** Beta advisory — a small always-visible pill in the dock header. The
@@ -152,6 +143,10 @@ export type DockCopy = {
152
143
  readonly composer: {
153
144
  readonly placeholderDefault: Readonly<Record<DockCopyVariant, string>>;
154
145
  readonly placeholderPlan: Readonly<Record<DockCopyVariant, string>>;
146
+ /** Label for the `/` action-row button that opens the slash menu. The
147
+ * syntax moved OFF the placeholder (which is now a plain invitation) and
148
+ * onto a real, discoverable control. */
149
+ readonly slashButton: Readonly<Record<DockCopyVariant, string>>;
155
150
  /** Plan 013 — while the agent's question card is pending above the
156
151
  * composer, a typed send answers it in chat instead of choosing. */
157
152
  readonly placeholderReply: Readonly<Record<DockCopyVariant, string>>;
@@ -20,7 +20,7 @@ export type AgentRuntime = (typeof AGENT_RUNTIMES)[number];
20
20
  * (Vercel AI Gateway): pair it with a free-typed `provider/model` slug
21
21
  * (e.g. `deepseek/deepseek-v4-pro`) to reach any model the gateway serves.
22
22
  */
23
- export declare const LLM_PROVIDERS: readonly ["anthropic", "google", "openai", "cerebras", "gateway"];
23
+ export declare const LLM_PROVIDERS: readonly ["anthropic", "google", "openai", "cerebras", "gateway", "openrouter"];
24
24
  export type LlmProvider = (typeof LLM_PROVIDERS)[number];
25
25
  /**
26
26
  * A free-typed model id must be safe to ride the wire verbatim: bounded, no
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Pure geometry + state transitions for the dock's three resize states.
2
+ * Pure geometry + state transitions for the dock's three resize states:
3
+ * collapsed / expanded / fullscreen.
3
4
  * No DOM, no React — unit-testable. The shell (BelongDock) owns the React
4
5
  * state and applies the resolved width; the host <body> margin reservation
5
6
  * uses the same resolver so the dock never overlaps host content.
6
7
  */
7
- export type DockResizeState = "collapsed" | "expanded" | "modal";
8
+ export type DockResizeState = "collapsed" | "expanded" | "fullscreen";
8
9
  /**
9
10
  * Desktop = side-docked panel + rail with a host-body reserve. Mobile = the
10
11
  * dock takes the whole viewport as an overlay sheet (a side dock plus reserve
@@ -22,12 +23,17 @@ export declare const MOBILE_LAYOUT_MEDIA_QUERY: string;
22
23
  export declare const resolveLayoutMode: (viewportWidthPx: number, viewportHeightPx?: number) => DockLayoutMode;
23
24
  /** The always-visible rail strip. Reference spec: 52px. */
24
25
  export declare const RAIL_WIDTH_PX = 52;
25
- /** Fixed panel width in modal state. Reference spec: 760px panel. */
26
- export declare const MODAL_PANEL_WIDTH_PX = 760;
27
26
  /** Lower bound for a user-dragged expanded panel width. */
28
27
  export declare const MIN_PANEL_WIDTH_PX = 320;
29
28
  /** Upper bound for a user-dragged expanded panel width. */
30
29
  export declare const MAX_PANEL_WIDTH_PX = 720;
30
+ /** Fullscreen: the workspace pane beside the chat column never gets narrower
31
+ * than this, so a deliverable stays readable while the user drags the chat wider. */
32
+ export declare const MIN_WORKSPACE_PANE_WIDTH_PX = 360;
33
+ /** Clamp the fullscreen chat column: same floor as a docked panel; the ceiling
34
+ * leaves the rail plus a minimum pane. On a viewport too narrow for both, the
35
+ * chat column keeps its floor (the pane shrinks — chat is the primary surface). */
36
+ export declare const clampFullscreenChatWidth: (px: number, viewportPx: number) => number;
31
37
  /** Clamp a dragged panel width to [MIN, min(MAX, 90% of viewport)]. */
32
38
  export declare const clampPanelWidth: (px: number, viewportPx: number) => number;
33
39
  /** Total dock width (panel + rail) for a state, given the expanded panel width. */
@@ -35,18 +41,10 @@ export declare const resolveDockWidthPx: (state: DockResizeState, panelWidth: nu
35
41
  /**
36
42
  * Desktop dock width clamped to the live viewport — mid-size screens (small
37
43
  * tablets, half-snapped windows just above the mobile breakpoint) must never
38
- * get a dock wider than the screen: the 760px modal alone overflows a 768px
39
- * tablet, and a persisted wide panel can overflow a re-narrowed window.
40
- * Cap: 90% of the viewport (same budget clampPanelWidth uses for drags).
44
+ * get a dock wider than the screen: a persisted wide panel can overflow a
45
+ * re-narrowed window. Cap: 90% of the viewport (same budget clampPanelWidth uses for drags).
41
46
  */
42
47
  export declare const resolveClampedDockWidthPx: (state: DockResizeState, panelWidth: number, viewportWidthPx: number) => number;
43
- /**
44
- * The panel's OWN width for a state. While collapsed this is the width the
45
- * panel would reveal to (the dock container clips it), so the panel keeps a
46
- * stable layout and the expand animation is a clean wipe — never a continuous
47
- * reflow of text at every intermediate width.
48
- */
49
- export declare const resolvePanelWidthPx: (state: DockResizeState, panelWidth: number) => number;
50
48
  /** Clearance a host modal needs from the dock before we consider it clear. */
51
49
  export declare const HOST_MODAL_GUTTER_PX = 16;
52
50
  /**
@@ -81,5 +79,5 @@ export declare const canHostModalFitBesideDock: (rect: {
81
79
  }, viewportWidthPx: number, side: "left" | "right", reservePx: number) => boolean;
82
80
  /** Collapse toggle: any open state → collapsed; collapsed → expanded. */
83
81
  export declare const nextOnToggleCollapse: (state: DockResizeState) => DockResizeState;
84
- /** Modal toggle: expanded ↔ modal; no-op while collapsed. */
85
- export declare const nextOnToggleModal: (state: DockResizeState) => DockResizeState;
82
+ /** Fullscreen toggle: expanded ↔ fullscreen; no-op while collapsed. */
83
+ export declare const nextOnToggleFullscreen: (state: DockResizeState) => DockResizeState;
@@ -0,0 +1,7 @@
1
+ import { DockResizeState } from './dock-layout.ts';
2
+ export declare const publishDockSize: (size: DockResizeState) => void;
3
+ export declare const peekDockSize: () => DockResizeState;
4
+ export declare const subscribeDockSize: (listener: () => void) => (() => void);
5
+ export declare const useDockSize: () => DockResizeState;
6
+ /** Test-only: back to the desktop default with no subscribers. */
7
+ export declare const __resetDockSizeForTest: () => void;
@@ -6,7 +6,7 @@
6
6
  * disabled/quota'd storage just means no cross-reload restore.
7
7
  */
8
8
  export type DockView = "chat" | "files" | "scheduled" | "prompts" | "connectors";
9
- export type DockSize = "collapsed" | "expanded" | "modal";
9
+ export type DockSize = "collapsed" | "expanded" | "fullscreen";
10
10
  export type DockState = {
11
11
  readonly view: DockView;
12
12
  readonly size: DockSize;
@@ -19,7 +19,7 @@ export declare const viewToPath: (view: DockView) => string;
19
19
  export declare const pathToView: (pathname: string) => DockView;
20
20
  /**
21
21
  * Decide what a rail view-icon click does. The Chat icon is a toggle: clicking
22
- * it while the chat panel is open (expanded/modal) minimizes the dock to the
22
+ * it while the chat panel is open (expanded/fullscreen) minimizes the dock to the
23
23
  * rail; clicking it while collapsed re-opens chat. Every other click navigates,
24
24
  * expanding a collapsed dock. Pure so it's unit-tested without a dock render.
25
25
  */
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Can the PRIMARY pointer hover? `(hover: hover)` is false on phones, touch
3
+ * tablets and kiosks — including ones with a desktop-sized viewport, which the
4
+ * layout breakpoint (`layout-mode.ts`) deliberately treats as desktop. Surfaces
5
+ * that reveal on hover (the composer's voice hint) must key on THIS, not on
6
+ * the viewport, or a touch-only wide device can never reach them: a tap fires
7
+ * pointerover and pointerdown in one gesture, so a hover-revealed chip appears
8
+ * and is dismissed inside the same motion.
9
+ *
10
+ * Read once per mount by callers — an input capability does not flip while a
11
+ * component is on screen. Without matchMedia (jsdom, very old embeds) assume a
12
+ * hovering pointer: the existing desktop behaviour, and the safe default.
13
+ */
14
+ export declare const canHoverPointer: () => boolean;
@@ -0,0 +1,11 @@
1
+ /** Resolve the label LIVE (fresh title read). See the header for precedence. */
2
+ export declare const peekPageContextLabel: () => string | null;
3
+ export declare const subscribePageContext: (listener: () => void) => (() => void);
4
+ /** `useSyncExternalStore` hook — the effective label, re-rendering on change. */
5
+ export declare const usePageContextLabel: () => string | null;
6
+ /** Seed from the embed config (`applyInitConfig`); replaces the whole config. */
7
+ export declare const configurePageContext: (input: unknown) => void;
8
+ /** Imperative host switch (`belong.setPageContext`); `null` drops the override. */
9
+ export declare const setHostPageContext: (label: unknown) => void;
10
+ /** Test-only: reset config + override, disconnect the observer, re-seed. */
11
+ export declare const __resetPageContextForTest: () => void;
@@ -0,0 +1,6 @@
1
+ import { WorkspaceFocusTarget } from '../stream/workspace-focus-store.ts';
2
+ type ShowTargetSource = "user" | "agent-auto";
3
+ export declare const showTarget: (target: WorkspaceFocusTarget, options?: {
4
+ readonly source?: ShowTargetSource;
5
+ }) => void;
6
+ export {};
@@ -78,6 +78,13 @@ export type SlashTokenMatch = {
78
78
  readonly start: number;
79
79
  readonly end: number;
80
80
  };
81
+ /**
82
+ * Can a `/` at this position open the menu? Only at the start of the draft or
83
+ * after whitespace — the rule {@link slashTokenMatch} enforces. Exported so the
84
+ * composer's `/` button can splice a slash in that the matcher will actually
85
+ * recognise, instead of re-deriving the same predicate and drifting from it.
86
+ */
87
+ export declare const isSlashBoundary: (ch: string | undefined) => boolean;
81
88
  /**
82
89
  * Detect a `/command` being typed at `caret` within `text` — ANYWHERE in the
83
90
  * draft, not just at the start (mirrors {@link atMentionMatch}). The `/` must
@@ -187,3 +194,5 @@ export declare const hoistBuiltinCommand: (draft: string) => string;
187
194
  * that happens to also be a group name doesn't bump a direct name match down.
188
195
  */
189
196
  export declare const filterSkills: (skills: readonly SkillSummary[], query: string) => readonly SkillSummary[];
197
+ /** Schedule pickers omit chat actions while retaining contiguous groups. */
198
+ export declare const filterSlashOptionsWithoutBuiltins: (skills: readonly SkillSummary[], query: string) => readonly SkillSummary[];
@@ -0,0 +1,14 @@
1
+ export type UserContext = {
2
+ readonly displayName: string | null;
3
+ };
4
+ /** Seed from the embed config (`applyInitConfig`); re-`init` replaces it. */
5
+ export declare const configureUserContext: (input: unknown) => void;
6
+ /** Imperative host switch (`belong.setUser`) — see the header for the two clears. */
7
+ export declare const setHostUser: (user: unknown) => void;
8
+ /** The effective user context (stable reference until it changes). */
9
+ export declare const peekUserContext: () => UserContext;
10
+ export declare const subscribeUserContext: (listener: () => void) => (() => void);
11
+ /** `useSyncExternalStore` hook — re-renders on a host name change. */
12
+ export declare const useUserContext: () => UserContext;
13
+ /** Test-only: drop the init value, the override, and every listener. */
14
+ export declare const __resetUserContextForTest: () => void;
@@ -278,12 +278,13 @@ export declare const deliverAgentFailure: (message: string) => void;
278
278
  * this section's header. */
279
279
  export declare const deliverLineReply: (line: number) => void;
280
280
  /**
281
- * A background line published an artifact: OPEN it on screen, mirroring
282
- * chat.tsx's foreground auto-open effect exactly — ALWAYS docked (a persisted
283
- * fullscreen pref would swallow the whole app), the same closable/resizable
284
- * panel a click on the artifact card gives. Deduped per artifactId (replays /
285
- * reconnects re-emit the part). NO spoken response: the line's finish reply
286
- * already narrates the result; a second voice line would double-speak.
281
+ * A background line published an artifact: OPEN it on screen via `showTarget`
282
+ * (agent-auto), mirroring chat.tsx's foreground auto-open effect exactly —
283
+ * docked (never the swallow-the-whole-app fullscreen preview) outside the
284
+ * fullscreen workspace pane, a no-op inside it (the focus observer owns agent
285
+ * focus there). Deduped per artifactId (replays / reconnects re-emit the
286
+ * part). NO spoken response: the line's finish reply already narrates the
287
+ * result; a second voice line would double-speak.
287
288
  */
288
289
  export declare const deliverLineArtifact: (line: number, artifact: {
289
290
  readonly artifactId: string;
@@ -1,4 +1,12 @@
1
1
  export declare const en: {
2
+ readonly workspace: {
3
+ readonly newItem: "New: {{title}}";
4
+ readonly close: "Close";
5
+ readonly download: "Download";
6
+ readonly shownByBelong: "Shown by Belong";
7
+ readonly openedByYou: "You opened this";
8
+ readonly planTitle: "Plan";
9
+ };
2
10
  readonly usage: {
3
11
  readonly tooltip: "Auto-compacts at {{chars}} chars; {{tokens}} tokens used this session";
4
12
  readonly windowTooltip: "Context window: {{used}} of {{window}} tokens used ({{pct}}%)";
@@ -24,6 +32,7 @@ export declare const en: {
24
32
  };
25
33
  };
26
34
  readonly stream: {
35
+ readonly toolExecutionError: "The tool could not complete. Please try again.";
27
36
  readonly copyOutput: "Copy output";
28
37
  readonly terminalOutput: "terminal output";
29
38
  readonly skillChip: "Skill: {{name}}";
@@ -350,6 +359,8 @@ export declare const en: {
350
359
  readonly hotkeyHint: "Hold {{key}} to talk — chat can stay closed";
351
360
  readonly expand: "Expand";
352
361
  readonly collapse: "Collapse";
362
+ readonly fullscreen: "Fullscreen";
363
+ readonly exitFullscreen: "Exit fullscreen";
353
364
  readonly spawnAgent: "New agent";
354
365
  readonly closeChat: "Close this chat";
355
366
  readonly closeAgent: "Close {{label}}";
@@ -440,11 +451,29 @@ export declare const en: {
440
451
  readonly deployedAt: "deployed {{label}}";
441
452
  readonly devOverrideActive: "Dev override active — click to change";
442
453
  readonly callLightModelActive: "Calls are stepped down to the light voice model — click for the best voice";
443
- readonly micUnmuted: "Mic unmuted";
444
- readonly micMuted: "Mic muted";
445
454
  readonly agentWorking: "{{name}} is working…";
446
455
  };
447
456
  readonly connectors: {
457
+ readonly setupChooseAccount: "Several accounts are connected. Open Connectors and choose the account to manage, then continue your request.";
458
+ readonly setupConnectName: "Connect {{name}}";
459
+ readonly setupReconnectName: "Reconnect {{name}}";
460
+ readonly setupPreparing: "Preparing connector setup…";
461
+ readonly setupFailed: "Could not prepare connector setup.";
462
+ readonly setupUnavailable: "This connector setup is no longer available.";
463
+ readonly setupReady: "Connected and ready to use.";
464
+ readonly setupDescription: "Review the connector, then connect it to continue.";
465
+ readonly setupConfigure: "Set up connection";
466
+ readonly setupNeedsDetails: "Review the connection details before connecting.";
467
+ readonly setupSignIn: "Sign in to {{name}} to approve access.";
468
+ readonly setupManage: "Manage connection";
469
+ readonly setupContinue: "Continue";
470
+ readonly setupContinued: "Continued";
471
+ readonly setupNotReady: "The connector needs attention before it can be used.";
472
+ readonly setupContinueFailed: "Could not continue. Please try again.";
473
+ readonly setupApplySettings: "Apply proposed settings on Save.";
474
+ readonly setupEnabled: "Enabled";
475
+ readonly setupDisabledTools: "Disabled tools";
476
+ readonly setupContinueMessage: "The connector {{name}} ({{connectorId}}) is ready. Continue my request using its available tools.";
448
477
  readonly viewTitle: "Connectors";
449
478
  readonly subtitle: "Connect services so {{product}} can access and act on your data";
450
479
  readonly searchPlaceholder: "Search your connectors";
@@ -728,7 +757,6 @@ export declare const en: {
728
757
  readonly retry: "Retry";
729
758
  };
730
759
  readonly composer: {
731
- readonly placeholder: "Ask anything — or type / for commands…";
732
760
  readonly attachFiles: "Attach files";
733
761
  readonly dismissVoiceHint: "Dismiss voice hint";
734
762
  readonly executionMode: "Execution mode: {{mode}}";
@@ -46,6 +46,26 @@
46
46
  */
47
47
  export declare const connectorsEn: {
48
48
  readonly connectors: {
49
+ readonly setupChooseAccount: "Several accounts are connected. Open Connectors and choose the account to manage, then continue your request.";
50
+ readonly setupConnectName: "Connect {{name}}";
51
+ readonly setupReconnectName: "Reconnect {{name}}";
52
+ readonly setupPreparing: "Preparing connector setup…";
53
+ readonly setupFailed: "Could not prepare connector setup.";
54
+ readonly setupUnavailable: "This connector setup is no longer available.";
55
+ readonly setupReady: "Connected and ready to use.";
56
+ readonly setupDescription: "Review the connector, then connect it to continue.";
57
+ readonly setupConfigure: "Set up connection";
58
+ readonly setupNeedsDetails: "Review the connection details before connecting.";
59
+ readonly setupSignIn: "Sign in to {{name}} to approve access.";
60
+ readonly setupManage: "Manage connection";
61
+ readonly setupContinue: "Continue";
62
+ readonly setupContinued: "Continued";
63
+ readonly setupNotReady: "The connector needs attention before it can be used.";
64
+ readonly setupContinueFailed: "Could not continue. Please try again.";
65
+ readonly setupApplySettings: "Apply proposed settings on Save.";
66
+ readonly setupEnabled: "Enabled";
67
+ readonly setupDisabledTools: "Disabled tools";
68
+ readonly setupContinueMessage: "The connector {{name}} ({{connectorId}}) is ready. Continue my request using its available tools.";
49
69
  readonly viewTitle: "Connectors";
50
70
  readonly subtitle: "Connect services so {{product}} can access and act on your data";
51
71
  readonly searchPlaceholder: "Search your connectors";
@@ -262,6 +282,26 @@ export declare const connectorsEn: {
262
282
  };
263
283
  export declare const connectorsEs: {
264
284
  connectors: {
285
+ setupChooseAccount: string;
286
+ setupConnectName: string;
287
+ setupReconnectName: string;
288
+ setupPreparing: string;
289
+ setupFailed: string;
290
+ setupUnavailable: string;
291
+ setupReady: string;
292
+ setupDescription: string;
293
+ setupConfigure: string;
294
+ setupNeedsDetails: string;
295
+ setupSignIn: string;
296
+ setupManage: string;
297
+ setupContinue: string;
298
+ setupContinued: string;
299
+ setupNotReady: string;
300
+ setupContinueFailed: string;
301
+ setupApplySettings: string;
302
+ setupEnabled: string;
303
+ setupDisabledTools: string;
304
+ setupContinueMessage: string;
265
305
  viewTitle: string;
266
306
  subtitle: string;
267
307
  searchPlaceholder: string;
@@ -477,6 +517,26 @@ export declare const connectorsEs: {
477
517
  };
478
518
  export declare const connectorsPt: {
479
519
  connectors: {
520
+ setupChooseAccount: string;
521
+ setupConnectName: string;
522
+ setupReconnectName: string;
523
+ setupPreparing: string;
524
+ setupFailed: string;
525
+ setupUnavailable: string;
526
+ setupReady: string;
527
+ setupDescription: string;
528
+ setupConfigure: string;
529
+ setupNeedsDetails: string;
530
+ setupSignIn: string;
531
+ setupManage: string;
532
+ setupContinue: string;
533
+ setupContinued: string;
534
+ setupNotReady: string;
535
+ setupContinueFailed: string;
536
+ setupApplySettings: string;
537
+ setupEnabled: string;
538
+ setupDisabledTools: string;
539
+ setupContinueMessage: string;
480
540
  viewTitle: string;
481
541
  subtitle: string;
482
542
  searchPlaceholder: string;
@@ -42,8 +42,6 @@ export declare const embedMiscEn: {
42
42
  readonly deployedAt: "deployed {{label}}";
43
43
  readonly devOverrideActive: "Dev override active — click to change";
44
44
  readonly callLightModelActive: "Calls are stepped down to the light voice model — click for the best voice";
45
- readonly micUnmuted: "Mic unmuted";
46
- readonly micMuted: "Mic muted";
47
45
  readonly agentWorking: "{{name}} is working…";
48
46
  };
49
47
  };
@@ -89,8 +87,6 @@ export declare const embedMiscEs: {
89
87
  deployedAt: string;
90
88
  devOverrideActive: string;
91
89
  callLightModelActive: string;
92
- micUnmuted: string;
93
- micMuted: string;
94
90
  agentWorking: string;
95
91
  };
96
92
  };
@@ -136,8 +132,6 @@ export declare const embedMiscPt: {
136
132
  deployedAt: string;
137
133
  devOverrideActive: string;
138
134
  callLightModelActive: string;
139
- micUnmuted: string;
140
- micMuted: string;
141
135
  agentWorking: string;
142
136
  };
143
137
  };
@@ -17,6 +17,8 @@ export declare const headerEn: {
17
17
  readonly hotkeyHint: "Hold {{key}} to talk — chat can stay closed";
18
18
  readonly expand: "Expand";
19
19
  readonly collapse: "Collapse";
20
+ readonly fullscreen: "Fullscreen";
21
+ readonly exitFullscreen: "Exit fullscreen";
20
22
  readonly spawnAgent: "New agent";
21
23
  readonly closeChat: "Close this chat";
22
24
  readonly closeAgent: "Close {{label}}";
@@ -43,6 +45,8 @@ export declare const headerEs: {
43
45
  hotkeyHint: string;
44
46
  expand: string;
45
47
  collapse: string;
48
+ fullscreen: string;
49
+ exitFullscreen: string;
46
50
  spawnAgent: string;
47
51
  closeChat: string;
48
52
  closeAgent: string;
@@ -69,6 +73,8 @@ export declare const headerPt: {
69
73
  hotkeyHint: string;
70
74
  expand: string;
71
75
  collapse: string;
76
+ fullscreen: string;
77
+ exitFullscreen: string;
72
78
  spawnAgent: string;
73
79
  closeChat: string;
74
80
  closeAgent: string;
@@ -8,6 +8,7 @@
8
8
  */
9
9
  export declare const streamEn: {
10
10
  readonly stream: {
11
+ readonly toolExecutionError: "The tool could not complete. Please try again.";
11
12
  readonly copyOutput: "Copy output";
12
13
  readonly terminalOutput: "terminal output";
13
14
  readonly skillChip: "Skill: {{name}}";
@@ -118,6 +119,7 @@ export declare const streamEn: {
118
119
  };
119
120
  export declare const streamEs: {
120
121
  stream: {
122
+ toolExecutionError: string;
121
123
  copyOutput: string;
122
124
  terminalOutput: string;
123
125
  skillChip: string;
@@ -225,6 +227,7 @@ export declare const streamEs: {
225
227
  };
226
228
  export declare const streamPt: {
227
229
  stream: {
230
+ toolExecutionError: string;
228
231
  copyOutput: string;
229
232
  terminalOutput: string;
230
233
  skillChip: string;
@@ -0,0 +1,32 @@
1
+ /** Fullscreen workspace pane strings (spec 2026-09-02). §42: the copy names the
2
+ * product only — "Belong" — never the pane, the agent, or the dock. */
3
+ export declare const workspaceEn: {
4
+ readonly workspace: {
5
+ readonly newItem: "New: {{title}}";
6
+ readonly close: "Close";
7
+ readonly download: "Download";
8
+ readonly shownByBelong: "Shown by Belong";
9
+ readonly openedByYou: "You opened this";
10
+ readonly planTitle: "Plan";
11
+ };
12
+ };
13
+ export declare const workspaceEs: {
14
+ workspace: {
15
+ newItem: string;
16
+ close: string;
17
+ download: string;
18
+ shownByBelong: string;
19
+ openedByYou: string;
20
+ planTitle: string;
21
+ };
22
+ };
23
+ export declare const workspacePt: {
24
+ workspace: {
25
+ newItem: string;
26
+ close: string;
27
+ download: string;
28
+ shownByBelong: string;
29
+ openedByYou: string;
30
+ planTitle: string;
31
+ };
32
+ };
@@ -50,6 +50,7 @@ export type PartRendererProps = {
50
50
  * omits it while a run streams so the CTA can't double-submit).
51
51
  */
52
52
  readonly onExecutePlan?: (() => void) | undefined;
53
+ readonly onContinueConnector?: ((connectorId: string, name: string) => Promise<void>) | undefined;
53
54
  /**
54
55
  * The part belongs to a restored-history message (`metadata.fromHistory`,
55
56
  * stamped by `loadSessionHistory`). The dispatch renderers (navigation,
@@ -65,7 +66,7 @@ export type PartRendererProps = {
65
66
  * `BelongDataParts` (above) plus the SDK's built-in `text` and
66
67
  * `reasoning` parts.
67
68
  */
68
- export declare const PartRenderer: ({ part, onExecutePlan, historical }: PartRendererProps) => import("react").JSX.Element | null;
69
+ export declare const PartRenderer: ({ part, onExecutePlan, historical, onContinueConnector, }: PartRendererProps) => import("react").JSX.Element | null;
69
70
  export type RenderGroup = {
70
71
  readonly kind: "part";
71
72
  readonly part: BelongMessagePart;
@@ -20,10 +20,10 @@ export declare const choiceAnswerSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
20
20
  kind: z.ZodLiteral<"skipped">;
21
21
  }, z.core.$strip>], "kind">;
22
22
  export declare const choiceStateSchema: z.ZodEnum<{
23
- pending: "pending";
24
23
  detached: "detached";
25
- answered: "answered";
24
+ pending: "pending";
26
25
  dismissed: "dismissed";
26
+ answered: "answered";
27
27
  cancelled: "cancelled";
28
28
  }>;
29
29
  /**
@@ -55,8 +55,8 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
55
55
  kind: z.ZodString;
56
56
  status: z.ZodOptional<z.ZodEnum<{
57
57
  pending: "pending";
58
- completed: "completed";
59
58
  failed: "failed";
59
+ completed: "completed";
60
60
  in_progress: "in_progress";
61
61
  }>>;
62
62
  }, z.core.$strip>>;
@@ -99,8 +99,8 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
99
99
  data: z.ZodObject<{
100
100
  toolName: z.ZodString;
101
101
  state: z.ZodEnum<{
102
- completed: "completed";
103
102
  failed: "failed";
103
+ completed: "completed";
104
104
  started: "started";
105
105
  }>;
106
106
  input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -136,8 +136,8 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
136
136
  data: z.ZodObject<{
137
137
  state: z.ZodEnum<{
138
138
  output: "output";
139
- completed: "completed";
140
139
  failed: "failed";
140
+ completed: "completed";
141
141
  started: "started";
142
142
  }>;
143
143
  stream: z.ZodOptional<z.ZodEnum<{
@@ -154,8 +154,8 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
154
154
  uiActionRequestId: z.ZodString;
155
155
  actionName: z.ZodString;
156
156
  state: z.ZodEnum<{
157
- completed: "completed";
158
157
  failed: "failed";
158
+ completed: "completed";
159
159
  requested: "requested";
160
160
  }>;
161
161
  args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -188,8 +188,8 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
188
188
  id: z.ZodString;
189
189
  data: z.ZodObject<{
190
190
  status: z.ZodEnum<{
191
- completed: "completed";
192
191
  failed: "failed";
192
+ completed: "completed";
193
193
  cancelled: "cancelled";
194
194
  continuing: "continuing";
195
195
  throttled: "throttled";
@@ -224,10 +224,10 @@ export declare const wireStreamPartSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
224
224
  data: z.ZodObject<{
225
225
  questionRequestId: z.ZodString;
226
226
  state: z.ZodEnum<{
227
- pending: "pending";
228
227
  detached: "detached";
229
- answered: "answered";
228
+ pending: "pending";
230
229
  dismissed: "dismissed";
230
+ answered: "answered";
231
231
  cancelled: "cancelled";
232
232
  }>;
233
233
  questions: z.ZodArray<z.ZodObject<{
@@ -0,0 +1,5 @@
1
+ import { BelongUIMessage } from './belong-data-parts.ts';
2
+ export declare const useAgentWorkspaceFocus: (input: {
3
+ readonly messages: readonly BelongUIMessage[];
4
+ readonly historyLoading: boolean;
5
+ }) => void;
@@ -0,0 +1,7 @@
1
+ import { BelongUIMessage } from './belong-data-parts.ts';
2
+ import { WorkspaceFocusTarget } from './workspace-focus-store.ts';
3
+ export type WorkspaceFocusEvent = {
4
+ readonly key: string;
5
+ readonly target: WorkspaceFocusTarget;
6
+ };
7
+ export declare const collectWorkspaceFocusEvents: (messages: readonly BelongUIMessage[], workspaceExternalId: string | null) => readonly WorkspaceFocusEvent[];