@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.
- package/README.md +69 -0
- package/dist/api/account-connectors.d.ts +2 -2
- package/dist/api/api-keys.d.ts +22 -0
- package/dist/api/client-identity.d.ts +12 -0
- package/dist/api/client.d.ts +2453 -92
- package/dist/api/goals.d.ts +179 -0
- package/dist/api/issue-reports.d.ts +13 -0
- package/dist/api/query-keys.d.ts +19 -0
- package/dist/api/report-client-error.d.ts +3 -0
- package/dist/api/retry-fetch.d.ts +19 -0
- package/dist/api/session-end.d.ts +2 -0
- package/dist/api/skill-library.d.ts +100 -0
- package/dist/api/skills.d.ts +3 -1
- package/dist/api/task-schedule-sharing.d.ts +166 -0
- package/dist/api/task-schedules.d.ts +23 -1
- package/dist/app/BelongDock.d.ts +0 -28
- package/dist/app/dock-demo-features.d.ts +13 -0
- package/dist/app/dock-demo-transport.d.ts +37 -0
- package/dist/app/dock-outlet.d.ts +15 -5
- package/dist/app/dock-story-data.d.ts +116 -0
- package/dist/browser/allowed-ops.d.ts +18 -0
- package/dist/browser/host-mcp.d.ts +31 -0
- package/dist/component/THIRD_PARTY_NOTICES.txt +24 -0
- package/dist/component/{abnfDiagram-N423BO3Z-DZRUOUZQ.js → abnfDiagram-N423BO3Z-bM1BoI0O.js} +4 -4
- package/dist/component/{arc-B4biduil.js → arc-DaSgre52.js} +2 -2
- package/dist/component/{architectureDiagram-T3A2C74G-q8voStNN.js → architectureDiagram-T3A2C74G-avMCXzQw.js} +3 -3
- package/dist/component/{blockDiagram-VBNYF7ZC-C0TDyTgw.js → blockDiagram-VBNYF7ZC-Cg6EDrdt.js} +4 -4
- package/dist/component/{c4Diagram-5PPSVZJV-rxRyd6rh.js → c4Diagram-5PPSVZJV-DhUs6wdK.js} +3 -3
- package/dist/component/{channel-CUruDJSx.js → channel-DlmuDpcv.js} +2 -2
- package/dist/component/{chunk-2GRJ4B5K-Kff5Fvbi.js → chunk-2GRJ4B5K-Drdf-9Az.js} +2 -2
- package/dist/component/{chunk-2Q5K7J3B-BT3ZD31a.js → chunk-2Q5K7J3B-CG6mCJjr.js} +2 -2
- package/dist/component/{chunk-5RXB4S5H-CYZ36tQD.js → chunk-5RXB4S5H-DYJwqjr4.js} +5 -5
- package/dist/component/{chunk-5VM5RSS4-BweQRk7u.js → chunk-5VM5RSS4-B21XfkBj.js} +2 -2
- package/dist/component/{chunk-6Q2QTUOP-DHcoXRhe.js → chunk-6Q2QTUOP-DZkWqf90.js} +2 -2
- package/dist/component/{chunk-GF5L2VYU-DtE5ljCc.js → chunk-GF5L2VYU-5hBEo1f5.js} +6 -6
- package/dist/component/{chunk-JWPE2WC7-ClHq4gN2.js → chunk-JWPE2WC7-DAn-TcDC.js} +2 -2
- package/dist/component/{chunk-KBJHAD2P-BeCfHf5W.js → chunk-KBJHAD2P-CEMDhN2A.js} +2 -2
- package/dist/component/{chunk-RYQCIY6F-CuAngwHt.js → chunk-RYQCIY6F-BWL1otLK.js} +2 -2
- package/dist/component/{chunk-XXDRQBXY-D9c0CJyR.js → chunk-XXDRQBXY-D0TWnqlD.js} +2 -2
- package/dist/component/{classDiagram-JCYQIIEL-DdzIbKj1.js → classDiagram-JCYQIIEL-CjU-7xK0.js} +3 -3
- package/dist/component/{classDiagram-v2-OCEON4UE-DdzIbKj1.js → classDiagram-v2-OCEON4UE-CjU-7xK0.js} +3 -3
- package/dist/component/{cose-bilkent-JH36ORCC-hME9BYGm.js → cose-bilkent-JH36ORCC-MkPQhZKJ.js} +2 -2
- package/dist/component/{cynefinDiagram-MW4NZA55-BiceKBPh.js → cynefinDiagram-MW4NZA55-Wf-Eh_MR.js} +3 -3
- package/dist/component/{dagre-VZM6K2ZE-DiPOLAUX.js → dagre-VZM6K2ZE-D1ND11ws.js} +3 -3
- package/dist/component/{diagram-7IWD3JNH-BSDWgxjs.js → diagram-7IWD3JNH-ChO63Ikp.js} +4 -4
- package/dist/component/{diagram-B4RE2ZJO-BdpGOPaT.js → diagram-B4RE2ZJO-CFVIZBxd.js} +3 -3
- package/dist/component/{diagram-LBJQPF4R-B0V6_5ih.js → diagram-LBJQPF4R-BFErKt-H.js} +3 -3
- package/dist/component/{diagram-Q27KOJAE-CYDb40TJ.js → diagram-Q27KOJAE-3EA2fDKz.js} +4 -4
- package/dist/component/{diagram-UB23O5K3-DgwjRdl5.js → diagram-UB23O5K3-D914yr1r.js} +3 -3
- package/dist/component/{ebnfDiagram-BXEA7PRR-D-C7SWec.js → ebnfDiagram-BXEA7PRR-BlRDglJm.js} +4 -4
- package/dist/component/{erDiagram-JOGREHBK-DLJCjcXM.js → erDiagram-JOGREHBK-BgHUzm41.js} +5 -5
- package/dist/component/{flowDiagram-UKHOOZJN-BZfBucKB.js → flowDiagram-UKHOOZJN-Cf42sXVK.js} +7 -7
- package/dist/component/{ganttDiagram-PKOTCBZU-CxTHmusv.js → ganttDiagram-PKOTCBZU-Bqai8Nqw.js} +3 -3
- package/dist/component/{gitGraphDiagram-DS77QQ5N-B_dWXxMf.js → gitGraphDiagram-DS77QQ5N-M6yX_E4b.js} +4 -4
- package/dist/component/{highlighted-body-OFNGDK62-CQ1ZdhQ-.js → highlighted-body-OFNGDK62-C2rmuXAs.js} +2 -2
- package/dist/component/index.js +2 -2
- package/dist/component/{infoDiagram-6WML65LV-P4GO-aVw.js → infoDiagram-6WML65LV-Bk4qDfY4.js} +2 -2
- package/dist/component/{ishikawaDiagram-WSZJBQD7-BMXMrxKI.js → ishikawaDiagram-WSZJBQD7-CQ0-i0XP.js} +2 -2
- package/dist/component/{journeyDiagram-NVQOT4AX-DPdTmxkF.js → journeyDiagram-NVQOT4AX-CK9lX22d.js} +5 -5
- package/dist/component/{kanban-definition-27J2QSJJ-sYw64NrE.js → kanban-definition-27J2QSJJ-CrIKfzfe.js} +3 -3
- package/dist/component/{linear-DYjDg3gl.js → linear-CzN3Xd3g.js} +2 -2
- package/dist/component/{mermaid-GHXKKRXX-DfdCmrs3.js → mermaid-GHXKKRXX-B-ea5OKA.js} +116618 -105206
- package/dist/component/{mindmap-definition-FAOFIHXS-UkAbrucA.js → mindmap-definition-FAOFIHXS-DUDsEObz.js} +4 -4
- package/dist/component/{pegDiagram-VL7TDLO6-BGab1it6.js → pegDiagram-VL7TDLO6-DFJ-rOLH.js} +4 -4
- package/dist/component/{pieDiagram-7S7Q4E2Y-BnY70Pr-.js → pieDiagram-7S7Q4E2Y-OwliOUdN.js} +4 -4
- package/dist/component/{quadrantDiagram-CIZ2JOQS-Cv1bjdQb.js → quadrantDiagram-CIZ2JOQS-CLKxzqPi.js} +3 -3
- package/dist/component/{railroadDiagram-AXF67PYL-DJhLbGB_.js → railroadDiagram-AXF67PYL-_jBOX7-D.js} +4 -4
- package/dist/component/{requirementDiagram-LRYGKXZP-CLW3CgbU.js → requirementDiagram-LRYGKXZP-CxfMaDPH.js} +4 -4
- package/dist/component/{sankeyDiagram-W5VNT64P-vnapx0yf.js → sankeyDiagram-W5VNT64P-D-qOUzh7.js} +2 -2
- package/dist/component/{sequenceDiagram-SI44F4Z6-I43iQsY0.js → sequenceDiagram-SI44F4Z6-B57h29Ae.js} +4 -4
- package/dist/component/{sizeCapture-X5ZJPWSS-D9LGwwwC.js → sizeCapture-X5ZJPWSS-DlIoKfk1.js} +2 -2
- package/dist/component/snapdom-DkzCA8S0.js +7061 -0
- package/dist/component/{stateDiagram-OKZ733FA-BXejMYGk.js → stateDiagram-OKZ733FA-CNNoDNwB.js} +3 -3
- package/dist/component/{stateDiagram-v2-UEYNNEHI-BP05TJSl.js → stateDiagram-v2-UEYNNEHI-xYjW9R-s.js} +3 -3
- package/dist/component/{swimlanes-SLNWSIFB-CfmDVYhs.js → swimlanes-SLNWSIFB-Chjr6NCU.js} +4 -4
- package/dist/component/{swimlanesDiagram-ULZ7WXOC-DfjQBUfV.js → swimlanesDiagram-ULZ7WXOC-A9mWwnCX.js} +3 -3
- package/dist/component/{timeline-definition-Z64GVDOM-C0BwzTs3.js → timeline-definition-Z64GVDOM-DldyCd1l.js} +3 -3
- package/dist/component/{vennDiagram-T6HMQDX7-CRf8sGBL.js → vennDiagram-T6HMQDX7-BGfiPWG2.js} +2 -2
- package/dist/component/{wardleyDiagram-T6FBY63Y-C2h7TQ4a.js → wardleyDiagram-T6FBY63Y-Bzn9DJ27.js} +3 -3
- package/dist/component/{xychartDiagram-ELKLHX3M-CBcAwmdF.js → xychartDiagram-ELKLHX3M-nMaNgT12.js} +3 -3
- package/dist/components/ai-elements/message.d.ts +2 -2
- package/dist/components/ai-elements/prompt-input.d.ts +3 -1
- package/dist/components/ai-elements/task.d.ts +2 -1
- package/dist/components/ai-elements/terminal-task.d.ts +2 -1
- package/dist/components/connectors/portal-theme.d.ts +2 -8
- package/dist/components/embed/AgentChatIcon.d.ts +1 -1
- package/dist/components/embed/AgentPhaseIcon.d.ts +16 -14
- package/dist/components/embed/ApiKeysSettings.d.ts +1 -0
- package/dist/components/embed/BetaBadge.d.ts +8 -10
- package/dist/components/embed/ComposerContext.d.ts +9 -0
- package/dist/components/embed/EmbedAvatar.d.ts +19 -18
- package/dist/components/embed/EmbedComposer.d.ts +13 -1
- package/dist/components/embed/EmbedHeader.d.ts +13 -30
- package/dist/components/embed/EmbedRail.d.ts +29 -10
- package/dist/components/embed/EmbedSessions.d.ts +10 -12
- package/dist/components/embed/GoalActions.d.ts +15 -0
- package/dist/components/embed/GoalBadge.d.ts +17 -0
- package/dist/components/embed/GoalClearDialog.d.ts +6 -0
- package/dist/components/embed/GoalClearedLine.d.ts +3 -0
- package/dist/components/embed/GoalCompletionCard.d.ts +12 -0
- package/dist/components/embed/GoalComposeSheet.d.ts +20 -0
- package/dist/components/embed/GoalProposalCard.d.ts +29 -0
- package/dist/components/embed/GoalRailView.d.ts +15 -0
- package/dist/components/embed/GoalRefusalCard.d.ts +22 -0
- package/dist/components/embed/GoalSetCard.d.ts +5 -0
- package/dist/components/embed/GoalSnoozeMenu.d.ts +14 -0
- package/dist/components/embed/GoalStatusRow.d.ts +6 -0
- package/dist/components/embed/GoalTimeline.d.ts +6 -0
- package/dist/components/embed/LegalShortDisclaimer.d.ts +6 -8
- package/dist/components/embed/MentionInput.d.ts +9 -3
- package/dist/components/embed/MobileNavBar.d.ts +16 -10
- package/dist/components/embed/OnboardingOverlay.d.ts +3 -1
- package/dist/components/embed/OnboardingTour.d.ts +1 -10
- package/dist/components/embed/OnboardingWelcome.d.ts +1 -11
- package/dist/components/embed/PlanPanel.d.ts +3 -1
- package/dist/components/embed/PreviewPanel.d.ts +3 -1
- package/dist/components/embed/QuestionCard.d.ts +12 -1
- package/dist/components/embed/ScheduleNotices.d.ts +23 -0
- package/dist/components/embed/SentAsGoalTag.d.ts +1 -0
- package/dist/components/embed/SessionSwitcher.d.ts +12 -0
- package/dist/components/embed/SubagentAvatar.d.ts +8 -0
- package/dist/components/embed/SubagentsPaneBody.d.ts +3 -0
- package/dist/components/embed/WorkspacePane.d.ts +3 -1
- package/dist/components/embed/navigation-layout.d.ts +7 -0
- package/dist/components/embed/rail-flags.d.ts +6 -0
- package/dist/components/embed/use-prompt-invocations.d.ts +6 -1
- package/dist/components/feedback/IssueReportController.d.ts +1 -0
- package/dist/components/feedback/IssueReportDialog.d.ts +6 -0
- package/dist/components/prompts/PromptPreviewDialog.d.ts +10 -0
- package/dist/components/prompts/PromptsListSurface.d.ts +4 -4
- package/dist/components/scheduled/ConfirmDeleteScheduleDialog.d.ts +1 -0
- package/dist/components/scheduled/ScheduleDialog.d.ts +4 -0
- package/dist/components/scheduled/ScheduledDetailSurface.d.ts +1 -0
- package/dist/components/scheduled/ScheduledHeader.d.ts +3 -0
- package/dist/components/scheduled/ScheduledListSurface.d.ts +1 -1
- package/dist/components/scheduled/ShareScheduleDialog.d.ts +10 -0
- package/dist/components/scheduled/SharedSchedulesSurface.d.ts +1 -0
- package/dist/components/scheduled/schedule-dialog-model.d.ts +5 -2
- package/dist/components/skills/ConfirmDeleteSkillDialog.d.ts +9 -0
- package/dist/components/skills/SkillDiscover.d.ts +1 -0
- package/dist/components/skills/SkillLibraryToolSync.d.ts +4 -0
- package/dist/components/skills/SkillsListSurface.d.ts +29 -0
- package/dist/components/skills/UploadSkillDialog.d.ts +32 -0
- package/dist/components/skills/skill-archive-file.d.ts +15 -0
- package/dist/components/ui/card.d.ts +1 -1
- package/dist/components/ui/dialog.d.ts +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +2 -2
- package/dist/components/ui/hover-card.d.ts +1 -1
- package/dist/components/ui/popover.d.ts +1 -1
- package/dist/components/ui/select.d.ts +1 -1
- package/dist/components/ui/shadow-dialog-focus.d.ts +5 -0
- package/dist/components/ui/tooltip.d.ts +1 -1
- package/dist/embed/brand-marks.d.ts +3 -3
- package/dist/embed/client-error-log.d.ts +72 -0
- package/dist/embed/copy.d.ts +8 -2
- package/dist/embed/dock-open-request.d.ts +32 -0
- package/dist/embed/dock-state.d.ts +1 -1
- package/dist/embed/goal-actions-model.d.ts +9 -0
- package/dist/embed/goal-cap-notice.d.ts +36 -0
- package/dist/embed/goal-deep-link.d.ts +24 -0
- package/dist/embed/goal-edit-command.d.ts +25 -0
- package/dist/embed/goal-journal.d.ts +53 -0
- package/dist/embed/goal-live-status.d.ts +2 -0
- package/dist/embed/goal-plain-units.d.ts +35 -0
- package/dist/embed/goal-progress.d.ts +15 -0
- package/dist/embed/goal-proposal-dismissal.d.ts +11 -0
- package/dist/embed/goal-resume-time.d.ts +22 -0
- package/dist/embed/goal-row-model.d.ts +27 -0
- package/dist/embed/goal-runway.d.ts +5 -0
- package/dist/embed/goal-schedule-handoff.d.ts +12 -0
- package/dist/embed/goal-status-label.d.ts +3 -0
- package/dist/embed/goal-time-usage.d.ts +19 -0
- package/dist/embed/issue-report-bus.d.ts +14 -0
- package/dist/embed/issue-report-open.d.ts +8 -0
- package/dist/embed/issue-report.d.ts +41 -0
- package/dist/embed/legal-disclaimer.d.ts +5 -1
- package/dist/embed/library-composer.d.ts +24 -0
- package/dist/embed/library-navigation.d.ts +6 -0
- package/dist/embed/portal-container.d.ts +17 -16
- package/dist/embed/presets.d.ts +2 -2
- package/dist/embed/schedule-invitation.d.ts +5 -0
- package/dist/embed/screen-capture.d.ts +74 -0
- package/dist/embed/slash-commands.d.ts +24 -0
- package/dist/embed/task-schedule-command.d.ts +7 -0
- package/dist/embed/use-session-draft.d.ts +11 -0
- package/dist/i18n/messages/en.d.ts +599 -4
- package/dist/i18n/messages/surfaces/feedback.d.ts +84 -0
- package/dist/i18n/messages/surfaces/files.d.ts +4 -0
- package/dist/i18n/messages/surfaces/header.d.ts +20 -0
- package/dist/i18n/messages/surfaces/navigation.d.ts +149 -0
- package/dist/i18n/messages/surfaces/prompts.d.ts +56 -5
- package/dist/i18n/messages/surfaces/scheduled.d.ts +233 -1
- package/dist/i18n/messages/surfaces/sessions.d.ts +16 -0
- package/dist/i18n/messages/surfaces/settings.d.ts +229 -0
- package/dist/i18n/messages/surfaces/skills.d.ts +299 -0
- package/dist/i18n/messages/surfaces/stream.d.ts +232 -0
- package/dist/i18n/messages/surfaces/usage.d.ts +56 -0
- package/dist/i18n/messages/surfaces/workspace.d.ts +20 -0
- package/dist/public-api.d.ts +1 -1
- package/dist/routes/chat/part-renderer-extra-props.d.ts +43 -0
- package/dist/routes/chat/use-goal-receipt.d.ts +37 -0
- package/dist/routes/chat/use-host-draft-request.d.ts +2 -0
- package/dist/routes/chat/use-session-goal.d.ts +227 -0
- package/dist/routes/chat.d.ts +11 -1
- package/dist/routes/goal.d.ts +1 -0
- package/dist/routes/library.d.ts +4 -0
- package/dist/routes/skills.d.ts +2 -0
- package/dist/stream/activity-items.d.ts +25 -0
- package/dist/stream/ai-sdk-part-renderers.d.ts +67 -32
- package/dist/stream/belong-chat-transport.d.ts +157 -2
- package/dist/stream/belong-data-parts.d.ts +56 -6
- package/dist/stream/goal-store.d.ts +43 -0
- package/dist/stream/message-metadata.d.ts +1 -0
- package/dist/stream/message-parts.d.ts +42 -0
- package/dist/stream/select-goal-set-part-id.d.ts +2 -0
- package/dist/stream/select-latest-goal.d.ts +13 -0
- package/dist/stream/subagent-controls-store.d.ts +20 -0
- package/dist/stream/subagent-lanes-model.d.ts +175 -0
- package/dist/stream/subagent-lanes.d.ts +90 -0
- package/dist/stream/use-publish-subagent-controls.d.ts +11 -0
- package/dist/stream/workspace-focus-store.d.ts +7 -1
- package/dist/test/render.d.ts +18 -1
- package/dist/test/subagent-fixtures.d.ts +24 -0
- package/dist/types/public.d.ts +54 -1
- package/package.json +1 -1
- package/dist/components/ai-elements/reasoning.d.ts +0 -26
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GoalView } from '../../api/goals.ts';
|
|
2
|
+
export type GoalCompletionCardProps = {
|
|
3
|
+
readonly goal: GoalView;
|
|
4
|
+
readonly fileCount: number;
|
|
5
|
+
readonly onSchedule: (command: string) => void;
|
|
6
|
+
/** Absent hides the button — a control that cannot do anything is a
|
|
7
|
+
* question the user has to answer, and a goal that produced nothing has
|
|
8
|
+
* nothing to get. */
|
|
9
|
+
readonly onGetFiles: (() => void) | undefined;
|
|
10
|
+
readonly onAnotherGoal: () => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function GoalCompletionCard({ goal, fileCount, onSchedule, onGetFiles, onAnotherGoal, }: GoalCompletionCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChatMode } from '../../embed/chat-mode.ts';
|
|
2
|
+
import { GoalRunwayPreset } from '../../embed/goal-runway.ts';
|
|
3
|
+
export type GoalComposeValue = {
|
|
4
|
+
readonly objective: string;
|
|
5
|
+
readonly criteria: readonly string[];
|
|
6
|
+
readonly runway: GoalRunwayPreset;
|
|
7
|
+
readonly mode: ChatMode;
|
|
8
|
+
};
|
|
9
|
+
export type GoalComposeSheetProps = {
|
|
10
|
+
readonly open: boolean;
|
|
11
|
+
readonly initial: GoalComposeValue;
|
|
12
|
+
/** True when the composer was in plan mode — the sheet says so and runs on
|
|
13
|
+
* Auto (spec §6). A 422 `goal_plan_mode` can no longer reach a human from
|
|
14
|
+
* this door; `/goal <objective>` typed directly can still hit it. */
|
|
15
|
+
readonly planModeResolved: boolean;
|
|
16
|
+
readonly onCancel: () => void;
|
|
17
|
+
readonly onSubmit: (value: GoalComposeValue) => void;
|
|
18
|
+
readonly onReturnFocus?: () => void;
|
|
19
|
+
};
|
|
20
|
+
export declare function GoalComposeSheet({ open, initial, planModeResolved, onCancel, onSubmit, onReturnFocus, }: GoalComposeSheetProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GoalProposalData } from '../../stream/belong-data-parts.ts';
|
|
2
|
+
export type GoalProposalCardProps = {
|
|
3
|
+
readonly data: GoalProposalData;
|
|
4
|
+
/** Absent while a run streams, this session already has the goal THIS
|
|
5
|
+
* offer produced, or another live goal exists — the card then renders
|
|
6
|
+
* read-only, exactly as the plan card does without `onExecutePlan`.
|
|
7
|
+
* Fix round 1 (Medium 1) — hands over the WHOLE offer, not just the
|
|
8
|
+
* objective, so Start actually creates what the card promised. */
|
|
9
|
+
readonly onConfirm?: ((proposal: GoalProposalData) => Promise<void>) | undefined;
|
|
10
|
+
/** Opens the compose sheet prefilled with this offer's fields. Same
|
|
11
|
+
* gating as `onConfirm` — absent means read-only. */
|
|
12
|
+
readonly onEdit?: (() => void) | undefined;
|
|
13
|
+
/** The started line's "Open it" — absent hides that action. */
|
|
14
|
+
readonly onOpen?: (() => void) | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Derived from `GoalView`, never local state (§12/§41): this session
|
|
17
|
+
* already has the goal THIS offer produced. A reload then renders
|
|
18
|
+
* "Started this goal" instead of a live button that would just 409.
|
|
19
|
+
*/
|
|
20
|
+
readonly started: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Ruling 5 — the localStorage dismissal key is per session. Fix round 1
|
|
23
|
+
* (Low 5) — `null` for the rare frame before any session id is known: the
|
|
24
|
+
* card then renders WITHOUT "Not now" rather than reading/writing a
|
|
25
|
+
* `belong:goal-proposal-dismissed:` key shared by every such render.
|
|
26
|
+
*/
|
|
27
|
+
readonly sessionId: string | null;
|
|
28
|
+
};
|
|
29
|
+
export declare function GoalProposalCard({ data, onConfirm, onEdit, onOpen, started, sessionId, }: GoalProposalCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { GoalView } from '../../api/goals.ts';
|
|
3
|
+
export type GoalRailViewProps = {
|
|
4
|
+
readonly goal: GoalView;
|
|
5
|
+
/** Task 4's sticky footer. Absent renders the view read-only. */
|
|
6
|
+
readonly footer?: ReactNode;
|
|
7
|
+
/** Task 3's timeline section. Absent renders no History. */
|
|
8
|
+
readonly timeline?: ReactNode;
|
|
9
|
+
/** Clock injection (§25) for the "Last step" relative timestamp below —
|
|
10
|
+
* optional because most callers are content with the wall clock, the
|
|
11
|
+
* same trade `GoalBadge` makes for `resumeTime`. Tests and stories pass
|
|
12
|
+
* a fixed instant so "2 min ago" is deterministic. */
|
|
13
|
+
readonly now?: Date;
|
|
14
|
+
};
|
|
15
|
+
export declare function GoalRailView({ goal, footer, timeline, now }: GoalRailViewProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { GoalRefusal } from '../../embed/goal-cap-notice.ts';
|
|
2
|
+
export type GoalRefusalCardProps = {
|
|
3
|
+
readonly refusal: GoalRefusal;
|
|
4
|
+
/** "This chat already has a goal" → Open it. */
|
|
5
|
+
readonly onOpenGoal: () => void;
|
|
6
|
+
/** "This chat already has a goal" → Clear it and set this one (confirmed
|
|
7
|
+
* through `GoalClearDialog` first, inside this component). */
|
|
8
|
+
readonly onReplace: () => void;
|
|
9
|
+
/** A cap refusal → Keep the text (puts the objective back in the composer). */
|
|
10
|
+
readonly onKeepText: () => void;
|
|
11
|
+
/** `not_sent` → Try again; `plan_mode` → Run on Auto (both just
|
|
12
|
+
* re-send — `startGoal` itself resolves plan mode on the spot). */
|
|
13
|
+
readonly onRetry: () => void;
|
|
14
|
+
readonly onDismiss: () => void;
|
|
15
|
+
/** Fix round 1 — Replace/Retry's async chain is in flight. Disables every
|
|
16
|
+
* action button but dismiss, so a fast double click can't fire two
|
|
17
|
+
* `clearSessionGoal`/`startGoal` pairs (the caller's `useRef` guard is the
|
|
18
|
+
* actual correctness fix; this is the visible half of it). Defaults to
|
|
19
|
+
* `false` for callers (tests, Storybook) that never go async. */
|
|
20
|
+
readonly busy?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare function GoalRefusalCard({ refusal, onOpenGoal, onReplace, onKeepText, onRetry, onDismiss, busy, }: GoalRefusalCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 09:00 on the day after `now`, in LOCAL time — the same local-Date-component
|
|
3
|
+
* convention `goal-resume-time.ts`'s `formatGoalResumeTime` reads back with
|
|
4
|
+
* (`getFullYear`/`getMonth`/`getDate`, never UTC), run forward instead of
|
|
5
|
+
* formatted back. A pure function of its `now` parameter (CLAUDE.md §25).
|
|
6
|
+
*/
|
|
7
|
+
export declare const tomorrowMorning: (now: Date) => Date;
|
|
8
|
+
export type GoalSnoozeMenuProps = {
|
|
9
|
+
/** Disables the trigger while a snooze (or any other footer action) is in
|
|
10
|
+
* flight — the caller owns re-entrancy across every footer control. */
|
|
11
|
+
readonly disabled: boolean;
|
|
12
|
+
readonly onSnooze: (wakeAt: Date) => void;
|
|
13
|
+
};
|
|
14
|
+
export declare function GoalSnoozeMenu({ disabled, onSnooze }: GoalSnoozeMenuProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GoalRowAction } from '../../embed/goal-row-model.ts';
|
|
2
|
+
import { GoalView } from '../../api/goals.ts';
|
|
3
|
+
export declare function GoalStatusRow({ goal, onAction, }: {
|
|
4
|
+
readonly goal: GoalView;
|
|
5
|
+
readonly onAction: (action: GoalRowAction) => void;
|
|
6
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GoalJournalEntry } from '../../api/goals.ts';
|
|
2
|
+
export declare function GoalTimeline({ journal, now, locale, }: {
|
|
3
|
+
readonly journal: readonly GoalJournalEntry[] | undefined;
|
|
4
|
+
readonly now: Date;
|
|
5
|
+
readonly locale: string;
|
|
6
|
+
}): import("react").JSX.Element | null;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { DockCopyVariant } from '../../embed/copy.ts';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* alike — per Simetrik legal's placement requirement.
|
|
8
|
-
*/
|
|
2
|
+
/** The footer under the composer, in every session state: a short accuracy
|
|
3
|
+
* reminder and the tenant's beta status, with details behind the info icon.
|
|
4
|
+
* For Simetrik those details open with its legal caveat in full; the cost
|
|
5
|
+
* advisory in it is Simetrik's alone. The separate Simetrik acceptance gate
|
|
6
|
+
* and its versioned legal terms are unchanged. */
|
|
9
7
|
export declare function LegalShortDisclaimer({ variant }: {
|
|
10
8
|
variant: DockCopyVariant;
|
|
11
|
-
}): import("react").JSX.Element
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KeyboardEvent as ReactKeyboardEvent, Ref } from 'react';
|
|
1
|
+
import { CSSProperties, KeyboardEvent as ReactKeyboardEvent, Ref } from 'react';
|
|
2
2
|
import { BelongThemePalette } from '../../types/public.ts';
|
|
3
3
|
/**
|
|
4
4
|
* Is the editor the focused element within its OWN root? The dock mounts in a
|
|
@@ -11,7 +11,11 @@ import { BelongThemePalette } from '../../types/public.ts';
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const isEditorFocused: (el: HTMLElement) => boolean;
|
|
13
13
|
export type MentionInputHandle = {
|
|
14
|
-
|
|
14
|
+
/** Focus an already-rendered editor, optionally selecting an inserted slot. */
|
|
15
|
+
focus: (selection?: {
|
|
16
|
+
readonly start: number;
|
|
17
|
+
readonly end: number;
|
|
18
|
+
}) => void;
|
|
15
19
|
getCaret: () => number | null;
|
|
16
20
|
/** Pin where the caret lands after the NEXT controlled value change. */
|
|
17
21
|
setPendingCaret: (offset: number) => void;
|
|
@@ -24,7 +28,9 @@ export type MentionInputHandle = {
|
|
|
24
28
|
setPendingSelection: (start: number, end: number) => void;
|
|
25
29
|
element: HTMLDivElement | null;
|
|
26
30
|
};
|
|
27
|
-
export declare function MentionInput({ value, palette, placeholder, suggestion, suggestionTabHint, disabled, className, ariaProps, onChange, onCaretChange, onKeyDown, onPasteFiles, handleRef, enterBehavior, }: {
|
|
31
|
+
export declare function MentionInput({ value, palette, placeholder, suggestion, suggestionTabHint, disabled, className, ariaProps, onChange, onCaretChange, onKeyDown, onPasteFiles, handleRef, enterBehavior, style, }: {
|
|
32
|
+
/** Applied to the editor and its placeholder together so their text aligns. */
|
|
33
|
+
style?: CSSProperties;
|
|
28
34
|
enterBehavior?: "submit" | "newline";
|
|
29
35
|
value: string;
|
|
30
36
|
palette: BelongThemePalette;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
import { EmbedAvatar } from './EmbedAvatar';
|
|
1
3
|
import { SessionSummary } from './EmbedSessions';
|
|
2
4
|
import { EmbedView } from './EmbedRail';
|
|
3
5
|
import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.ts';
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export declare function MobileNavBar({ view, user, theme, palette, sessions, activeId, voiceSupported, accent, cssVars, presets, activePreset, onSelectView, onClose, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, }: {
|
|
6
|
+
/** Four mobile destinations. Secondary tools and account controls live in
|
|
7
|
+
* Tools; session switching lives above the conversation. Primary cells retain
|
|
8
|
+
* 44px targets (56px with labels) and surface-scaled glyphs without horizontal scrolling. */
|
|
9
|
+
export declare function MobileNavBar({ view, user, theme, palette, sessions, activeId, voiceSupported, readReplies, accent, cssVars, presets, activePreset, onSelectView, onClose, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, navigationLabelsVisible, onToggleNavigationLabels, connectorsUnavailable, skillsUnavailable, goalPresent, }: {
|
|
10
|
+
/** Focus changes navigation labels only; the icons always remain available. */
|
|
11
|
+
navigationLabelsVisible?: boolean;
|
|
12
|
+
onToggleNavigationLabels?: () => void;
|
|
13
|
+
connectorsUnavailable?: boolean;
|
|
14
|
+
skillsUnavailable?: boolean;
|
|
14
15
|
view: EmbedView;
|
|
15
16
|
user: string | null;
|
|
16
17
|
theme: BelongTheme;
|
|
@@ -18,6 +19,7 @@ export declare function MobileNavBar({ view, user, theme, palette, sessions, act
|
|
|
18
19
|
sessions: readonly SessionSummary[];
|
|
19
20
|
activeId: string | null;
|
|
20
21
|
voiceSupported: boolean;
|
|
22
|
+
readReplies?: ComponentProps<typeof EmbedAvatar>["readReplies"];
|
|
21
23
|
accent: string | null;
|
|
22
24
|
cssVars: Record<string, string>;
|
|
23
25
|
presets: readonly {
|
|
@@ -25,6 +27,10 @@ export declare function MobileNavBar({ view, user, theme, palette, sessions, act
|
|
|
25
27
|
label: string;
|
|
26
28
|
}[];
|
|
27
29
|
activePreset: PresetName;
|
|
30
|
+
/** Whether this session has a goal that is not cleared — the Goal tab
|
|
31
|
+
* exists only then, so the row never grows a dead cell. Same rule (and
|
|
32
|
+
* same caller-computed answer) as the desktop rail's chip. */
|
|
33
|
+
goalPresent: boolean;
|
|
28
34
|
onSelectView: (v: EmbedView) => void;
|
|
29
35
|
onClose: () => void;
|
|
30
36
|
onToggleMode: () => void;
|
|
@@ -13,9 +13,11 @@ import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
|
|
|
13
13
|
* `active` folds in the gates that need React context (authed + on the chat
|
|
14
14
|
* view + not collapsed); the persistence gate lives in `shouldOfferOnboarding`.
|
|
15
15
|
*/
|
|
16
|
-
export declare function OnboardingOverlay({ dockRef, brand, palette, active, }: {
|
|
16
|
+
export declare function OnboardingOverlay({ dockRef, brand, palette, active, mobile, voiceAvailable, }: {
|
|
17
17
|
dockRef: RefObject<HTMLElement | null>;
|
|
18
18
|
brand: BelongThemeBrand;
|
|
19
19
|
palette: BelongThemePalette;
|
|
20
20
|
active: boolean;
|
|
21
|
+
mobile?: boolean;
|
|
22
|
+
voiceAvailable?: boolean;
|
|
21
23
|
}): import("react").JSX.Element | null;
|
|
@@ -2,16 +2,7 @@ import { RefObject } from 'react';
|
|
|
2
2
|
import { BelongThemePalette } from '../../types/public.ts';
|
|
3
3
|
import { TourStep } from '../../embed/onboarding-steps.ts';
|
|
4
4
|
import { TourLabels } from '../../embed/copy.ts';
|
|
5
|
-
/**
|
|
6
|
-
* The spotlight coach-mark engine. For the active step it resolves the step's
|
|
7
|
-
* anchor INSIDE the dock root, paints a dimming layer with a bright cut-out over
|
|
8
|
-
* the control (a clipped `box-shadow` ring — clipped to the dock by the dock
|
|
9
|
-
* root's `overflow-hidden`, so the host app is never dimmed), and floats a
|
|
10
|
-
* tooltip with progress dots and Back / Skip / Next.
|
|
11
|
-
*
|
|
12
|
-
* An anchor that never mounts (feature gated, rail collapsed) is skipped after a
|
|
13
|
-
* short wait via `onNext`, so a missing control never blocks the tour.
|
|
14
|
-
*/
|
|
5
|
+
/** Optional, keyboard-accessible coach marks scoped to the actual dock controls. */
|
|
15
6
|
export declare function OnboardingTour({ dockRef, steps, stepIndex, palette, labels, onNext, onPrev, onSkip, }: {
|
|
16
7
|
dockRef: RefObject<HTMLElement | null>;
|
|
17
8
|
steps: readonly TourStep[];
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
|
|
2
2
|
import { WelcomeCardCopy } from '../../embed/copy.ts';
|
|
3
3
|
import { Locale } from '../../embed/locale.ts';
|
|
4
|
-
/**
|
|
5
|
-
* First-run welcome card — the single branded screen a new user sees before
|
|
6
|
-
* anything else: who the assistant is, three headline capabilities, and one
|
|
7
|
-
* choice — take the 30-second tour, or explore alone. Both paths dismiss the
|
|
8
|
-
* card; "explore alone" also marks onboarding complete (handled by the caller's
|
|
9
|
-
* `onSkip`). Presentational: it reads `brand` + `palette` and calls back, so it
|
|
10
|
-
* stories and tests without the store.
|
|
11
|
-
*
|
|
12
|
-
* Scoped to the dock (absolute inset-0 inside the dock root), so the dim
|
|
13
|
-
* backdrop never reaches the host app and the card inherits the projected theme.
|
|
14
|
-
*/
|
|
4
|
+
/** A brief, optional introduction. The dialog stays inside the dock's theme and bounds. */
|
|
15
5
|
export declare function OnboardingWelcome({ brand, palette, copy, locale, onSelectLocale, onStartTour, onSkip, }: {
|
|
16
6
|
brand: BelongThemeBrand;
|
|
17
7
|
palette: BelongThemePalette;
|
|
@@ -4,10 +4,12 @@ export type PlanPanelProps = {
|
|
|
4
4
|
/** Live chat dock width (px). The panel is offset by this so it sits
|
|
5
5
|
* immediately beside the chat rather than across the viewport. */
|
|
6
6
|
readonly chatDockWidthPx: number;
|
|
7
|
+
/** Hide the presentation while keeping the open plan and its scroll position. */
|
|
8
|
+
readonly hidden?: boolean;
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* The plan as a separate surface docked beside the chat dock, offset by the
|
|
10
12
|
* live dock width so the two read as one combined surface. Open state + width
|
|
11
13
|
* come from plan-panel-store; the plan itself from plan-store.
|
|
12
14
|
*/
|
|
13
|
-
export declare const PlanPanel: ({ chatSide, chatDockWidthPx }: PlanPanelProps) => import("react").JSX.Element | null;
|
|
15
|
+
export declare const PlanPanel: ({ chatSide, chatDockWidthPx, hidden }: PlanPanelProps) => import("react").JSX.Element | null;
|
|
@@ -4,6 +4,8 @@ export type PreviewPanelProps = {
|
|
|
4
4
|
/** Offset (px) from the chat side: the live chat dock width PLUS any open plan
|
|
5
5
|
* panel, so the preview sits immediately beside them (stacked, not overlapping). */
|
|
6
6
|
readonly chatDockOffsetPx: number;
|
|
7
|
+
/** Hide the presentation while retaining the selected file and scope guard. */
|
|
8
|
+
readonly hidden?: boolean;
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* The artifact preview as a separate surface docked beside the chat dock — the
|
|
@@ -14,4 +16,4 @@ export type PreviewPanelProps = {
|
|
|
14
16
|
* Fullscreen lifts the panel out of the docked offset to cover the whole
|
|
15
17
|
* viewport (above the dock); Escape exits fullscreen, then closes.
|
|
16
18
|
*/
|
|
17
|
-
export declare const PreviewPanel: ({ chatSide, chatDockOffsetPx }: PreviewPanelProps) => import("react").JSX.Element | null;
|
|
19
|
+
export declare const PreviewPanel: ({ chatSide, chatDockOffsetPx, hidden }: PreviewPanelProps) => import("react").JSX.Element | null;
|
|
@@ -21,5 +21,16 @@ export type QuestionCardProps = {
|
|
|
21
21
|
* the run live, so the reply streams in without a reload.
|
|
22
22
|
*/
|
|
23
23
|
readonly onContinuation?: ((continuation: QuestionContinuation) => void) | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Task 12 — set while the session's goal is still in its setup interview
|
|
26
|
+
* (`goal.status === "clarifying"`). Renders as an eyebrow above the
|
|
27
|
+
* header chip so a question asked during setup reads as part of getting
|
|
28
|
+
* the goal down, not as an ordinary mid-run ask. `index` is the journal's
|
|
29
|
+
* own count (chat.tsx), never a counter local to this card.
|
|
30
|
+
*/
|
|
31
|
+
readonly setupProgress?: {
|
|
32
|
+
readonly index: number;
|
|
33
|
+
readonly total: number;
|
|
34
|
+
} | undefined;
|
|
24
35
|
};
|
|
25
|
-
export declare const QuestionCard: ({ data, apiBaseUrl, disabled, onHide, onResolved, onContinuation, }: QuestionCardProps) => import("react").JSX.Element | null;
|
|
36
|
+
export declare const QuestionCard: ({ data, apiBaseUrl, disabled, onHide, onResolved, onContinuation, setupProgress, }: QuestionCardProps) => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Locale } from '../../embed/locale.ts';
|
|
2
|
+
import { StoredTaskSchedule } from '../../embed/task-schedule-store.ts';
|
|
3
|
+
export type ScheduleNoticePayload = {
|
|
4
|
+
readonly type: "text";
|
|
5
|
+
readonly text: string;
|
|
6
|
+
} | {
|
|
7
|
+
readonly type: "scheduled";
|
|
8
|
+
readonly schedule: StoredTaskSchedule;
|
|
9
|
+
readonly interactiveWarning: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
readonly type: "cancelled";
|
|
12
|
+
readonly schedule: StoredTaskSchedule;
|
|
13
|
+
};
|
|
14
|
+
export type ScheduleNotice = ScheduleNoticePayload & {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const identifyScheduleNotice: (notice: ScheduleNoticePayload, id: string) => ScheduleNotice;
|
|
18
|
+
export declare function ScheduleNotices({ notices, scheduling, locale, onCancel, }: {
|
|
19
|
+
readonly notices: readonly ScheduleNotice[];
|
|
20
|
+
readonly scheduling: boolean;
|
|
21
|
+
readonly locale: Locale;
|
|
22
|
+
readonly onCancel: (schedule: StoredTaskSchedule) => void;
|
|
23
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function SentAsGoalTag(): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BelongTheme } from '../../types/public.ts';
|
|
2
|
+
import { SessionSummary } from './EmbedSessions';
|
|
3
|
+
/** A view of the real line registry. Selection never remints or reassigns a
|
|
4
|
+
* session; the dock owns that boundary, including resume and unseen state. */
|
|
5
|
+
export declare function SessionSwitcher({ layout, theme, sessions, activeId, onSelect, onClose, }: {
|
|
6
|
+
layout: "dock" | "mobile" | "sidebar";
|
|
7
|
+
theme: BelongTheme;
|
|
8
|
+
sessions: readonly SessionSummary[];
|
|
9
|
+
activeId: string | null;
|
|
10
|
+
onSelect: (sessionId: string | null) => void;
|
|
11
|
+
onClose: (line: number) => void;
|
|
12
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type SubagentAvatarState = "working" | "complete" | "attention" | "idle";
|
|
2
|
+
/** A compact role symbol that stays recognizable through runtime changes.
|
|
3
|
+
* Working motion surrounds the glyph; the glyph itself remains easy to read. */
|
|
4
|
+
export declare function SubagentAvatar({ name, state, className, }: {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly state: SubagentAvatarState;
|
|
7
|
+
readonly className?: string;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* `flex-row-reverse` on a LEFT dock, so the pane sits right of the chat there
|
|
12
12
|
* and its separating border must flip with it.
|
|
13
13
|
*/
|
|
14
|
-
export declare const WorkspacePane: ({ chatSide }: {
|
|
14
|
+
export declare const WorkspacePane: ({ chatSide, hidden, }: {
|
|
15
15
|
readonly chatSide: "left" | "right";
|
|
16
|
+
/** Hide the presentation without discarding the selected item or its scroll position. */
|
|
17
|
+
readonly hidden?: boolean;
|
|
16
18
|
}) => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Compact rail shared by docked and fullscreen navigation. */
|
|
2
|
+
export { RAIL_WIDTH_PX as COMPACT_SIDEBAR_WIDTH_PX } from '../../embed/dock-layout';
|
|
3
|
+
/** Width shared by the fullscreen sidebar and the adjacent artifact layout. */
|
|
4
|
+
export declare const FULLSCREEN_SIDEBAR_WIDTH_PX = 208;
|
|
5
|
+
/** Glyph size follows the agent surface; interactive targets remain independent. */
|
|
6
|
+
export declare const NAVIGATION_ICON_CLASS_NAME = "size-[var(--belong-icon-size,16px)] shrink-0 stroke-[1.75]";
|
|
7
|
+
export declare const NAVIGATION_SECONDARY_ICON_CLASS_NAME = "size-[var(--belong-icon-secondary-size,14px)] shrink-0 stroke-[1.75]";
|
|
@@ -54,3 +54,9 @@ export declare const VOICE_CALL_BUTTON_ENABLED = false;
|
|
|
54
54
|
* overflow "More" cell), and the tab appears with no other change.
|
|
55
55
|
*/
|
|
56
56
|
export declare const CONNECTORS_MOBILE_TAB_ENABLED = false;
|
|
57
|
+
/**
|
|
58
|
+
* Skills are available inside the MOBILE Library selector. The bottom bar
|
|
59
|
+
* keeps four primary cells, moving Library to Tools while a goal is present.
|
|
60
|
+
* Deployment feature availability still gates both desktop and mobile.
|
|
61
|
+
*/
|
|
62
|
+
export declare const SKILLS_MOBILE_TAB_ENABLED = true;
|
|
@@ -2,11 +2,13 @@ import { SkillSummary } from '../../api/skills.ts';
|
|
|
2
2
|
import { PrePromptSummary } from '../../api/pre-prompts.ts';
|
|
3
3
|
import { WorkspaceFile } from '../../api/workspace-files.ts';
|
|
4
4
|
import { filterSlashOptions } from '../../embed/slash-commands.ts';
|
|
5
|
+
import { LibraryComposerRequest } from '../../embed/library-composer.tsx';
|
|
5
6
|
import { MentionInputHandle } from './MentionInput';
|
|
6
7
|
/** Shared composer and schedule picker state, caret handling, and keyboard controls. */
|
|
7
|
-
export declare function usePromptInvocations({ draft, skills, prompts, workspaceFiles, onDraftChange, onMentionOpen, suggestion, filterOptions, invocationBody, idPrefix, placement, }: {
|
|
8
|
+
export declare function usePromptInvocations({ draft, skills, librarySkills, prompts, workspaceFiles, onDraftChange, onMentionOpen, suggestion, filterOptions, invocationBody, idPrefix, placement, }: {
|
|
8
9
|
draft: string;
|
|
9
10
|
skills: readonly SkillSummary[];
|
|
11
|
+
librarySkills?: readonly SkillSummary[];
|
|
10
12
|
prompts: readonly PrePromptSummary[];
|
|
11
13
|
workspaceFiles: readonly WorkspaceFile[];
|
|
12
14
|
onDraftChange: (text: string) => void;
|
|
@@ -20,6 +22,7 @@ export declare function usePromptInvocations({ draft, skills, prompts, workspace
|
|
|
20
22
|
editorRef: import('react').RefObject<MentionInputHandle | null>;
|
|
21
23
|
pickerOpen: import('react').RefObject<boolean>;
|
|
22
24
|
inputProps: Pick<{
|
|
25
|
+
style?: import('react').CSSProperties;
|
|
23
26
|
enterBehavior?: "submit" | "newline";
|
|
24
27
|
value: string;
|
|
25
28
|
palette: import('../../component').BelongThemePalette;
|
|
@@ -36,5 +39,7 @@ export declare function usePromptInvocations({ draft, skills, prompts, workspace
|
|
|
36
39
|
handleRef?: import('react').Ref<MentionInputHandle>;
|
|
37
40
|
}, "onChange" | "onKeyDown" | "ariaProps" | "onCaretChange" | "handleRef">;
|
|
38
41
|
insertSlash: () => void;
|
|
42
|
+
appendLibraryItem: (request: LibraryComposerRequest) => boolean;
|
|
43
|
+
focusLibraryItem: () => void;
|
|
39
44
|
menus: import("react").JSX.Element;
|
|
40
45
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const IssueReportController: () => import("react").JSX.Element | null;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IssueReportRequest } from '../../embed/issue-report-bus.ts';
|
|
2
|
+
export type IssueReportDialogProps = {
|
|
3
|
+
readonly request: IssueReportRequest;
|
|
4
|
+
readonly onClose: () => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const IssueReportDialog: ({ request, onClose }: IssueReportDialogProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { PrePromptSummary } from '../../api/pre-prompts.ts';
|
|
2
|
+
/** The library shows exactly what will be added to the message. It never
|
|
3
|
+
* interprets prompt text as Markdown or executes it from this surface. */
|
|
4
|
+
export declare function PromptPreviewDialog({ prompt, onOpenChange, onEdit, onUse, onReturnFocus, }: {
|
|
5
|
+
readonly prompt: PrePromptSummary;
|
|
6
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
7
|
+
readonly onEdit: () => void;
|
|
8
|
+
readonly onUse: () => boolean;
|
|
9
|
+
readonly onReturnFocus: () => void;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Prompts list — the rail's fourth surface (BEL-259). Every prompt the user
|
|
3
|
-
* saved, searchable,
|
|
3
|
+
* saved, searchable, with a readable preview before it enters the message.
|
|
4
4
|
*
|
|
5
5
|
* PROPLESS, exactly like `ScheduledListSurface`: it reads its own server state
|
|
6
6
|
* and takes nothing from the router's outlet context. That is what makes it
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* problem — adding a `q` parameter would be a server round-trip per keystroke
|
|
15
15
|
* for data already in the cache.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* Previewing never runs a prompt. The explicit Use action asks the mounted
|
|
18
|
+
* conversation to append through the same invocation and slot-selection path
|
|
19
|
+
* as `/`; editing and deletion remain separate actions.
|
|
20
20
|
*/
|
|
21
21
|
export declare const PromptsListSurface: () => import("react").JSX.Element;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Shared delete confirmation for a schedule (list card menu + detail menu). */
|
|
2
2
|
export declare const ConfirmDeleteScheduleDialog: (props: {
|
|
3
|
+
readonly shared?: boolean;
|
|
3
4
|
readonly open: boolean;
|
|
4
5
|
readonly onOpenChange: (open: boolean) => void;
|
|
5
6
|
readonly busy: boolean;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { TaskScheduleDetail } from '../../api/task-schedules.ts';
|
|
2
|
+
import { SharedSchedule } from '../../api/task-schedule-sharing.ts';
|
|
2
3
|
export type ScheduleDialogMode = {
|
|
3
4
|
readonly kind: "create";
|
|
4
5
|
} | {
|
|
5
6
|
readonly kind: "edit";
|
|
6
7
|
readonly schedule: TaskScheduleDetail;
|
|
8
|
+
} | {
|
|
9
|
+
readonly kind: "shared";
|
|
10
|
+
readonly schedule: SharedSchedule;
|
|
7
11
|
};
|
|
8
12
|
export declare const ScheduleDialog: (props: {
|
|
9
13
|
readonly open: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TaskScheduleDetail, TaskScheduleRun } from '../../api/task-schedules.ts';
|
|
2
2
|
export declare const EmailNotificationIndicator: (props: {
|
|
3
3
|
readonly notification: TaskScheduleDetail["notification"];
|
|
4
|
+
readonly shared?: boolean;
|
|
4
5
|
}) => import("react").JSX.Element;
|
|
5
6
|
export declare const MicrosoftTeamsDeliveryIndicator: (props: {
|
|
6
7
|
readonly delivery: NonNullable<TaskScheduleDetail["microsoftTeamsDelivery"]>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scheduled list: searchable, filterable (All / Upcoming / Completed) cards of
|
|
3
3
|
* the user's schedule definitions. A card navigates to the detail view; its
|
|
4
|
-
* overflow menu offers Run now / Delete in place. Internal UUIDs never appear
|
|
4
|
+
* overflow menu offers Share / Run now / Delete in place. Internal UUIDs never appear
|
|
5
5
|
* in copy (they live only in the memory-router path).
|
|
6
6
|
*/
|
|
7
7
|
export declare const ScheduledListSurface: () => import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const ShareScheduleDialog: (props: {
|
|
2
|
+
readonly definitionId: string;
|
|
3
|
+
readonly title: string;
|
|
4
|
+
readonly onClose: () => void;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
export declare const ShareScheduleButton: (props: {
|
|
7
|
+
readonly seriesId: string;
|
|
8
|
+
readonly definitionId?: string;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
}) => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SharedSchedulesSurface: () => import("react").JSX.Element;
|
|
@@ -12,5 +12,8 @@ export type ScheduleDialogInputs = {
|
|
|
12
12
|
* control keeps its value while the user toggles kinds. */
|
|
13
13
|
readonly intervalMinutes: number;
|
|
14
14
|
};
|
|
15
|
-
export
|
|
16
|
-
|
|
15
|
+
export type ScheduleEditorValue = Pick<TaskScheduleDetail, "explicitTitle" | "message" | "anchorAt" | "timezone" | "recurrence"> & {
|
|
16
|
+
readonly nextRunAt?: string | null;
|
|
17
|
+
};
|
|
18
|
+
export declare const scheduleDialogInputs: (schedule: ScheduleEditorValue) => ScheduleDialogInputs;
|
|
19
|
+
export declare const scheduleTimeShapeChanged: (schedule: ScheduleEditorValue, input: Pick<ScheduleDialogInputs, "date" | "time" | "timezone" | "recurrence" | "intervalMinutes">) => boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DeleteSkillOutcome } from '../../api/skill-library.ts';
|
|
2
|
+
export declare const ConfirmDeleteSkillDialog: (props: {
|
|
3
|
+
readonly skill: {
|
|
4
|
+
readonly userSkillId: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
} | null;
|
|
7
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
8
|
+
readonly onDeleted: (outcome: DeleteSkillOutcome) => void;
|
|
9
|
+
}) => import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function SkillDiscover(): import("react").JSX.Element;
|