@belonguniverseai/react-sdk 0.1.6 → 0.1.7
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/dist/api/agent-grants.d.ts +18 -23
- package/dist/api/client.d.ts +1049 -30
- package/dist/api/query-keys.d.ts +5 -0
- package/dist/api/task-schedules.d.ts +313 -0
- package/dist/app/dock-outlet.d.ts +18 -0
- package/dist/component/{arc-CTDwT0LX.js → arc-D26RO7cK.js} +2 -2
- package/dist/component/{architectureDiagram-3BPJPVTR-osyB2zKw.js → architectureDiagram-3BPJPVTR-uiXhyHDF.js} +3 -3
- package/dist/component/{blockDiagram-GPEHLZMM-ChWpzkC_.js → blockDiagram-GPEHLZMM-Bm1HEObg.js} +4 -4
- package/dist/component/{c4Diagram-AAUBKEIU-TBt2Sr1T.js → c4Diagram-AAUBKEIU-BypAuFIJ.js} +3 -3
- package/dist/component/{channel-DKYVGzgk.js → channel-MvxNOfHS.js} +2 -2
- package/dist/component/{chunk-2J33WTMH-D-qMyfG9.js → chunk-2J33WTMH-MxAoh_Eu.js} +2 -2
- package/dist/component/{chunk-4BX2VUAB-BYTeOCro.js → chunk-4BX2VUAB-BHpzlyda.js} +2 -2
- package/dist/component/{chunk-55IACEB6-CkLaQSjG.js → chunk-55IACEB6-igXCAYDB.js} +2 -2
- package/dist/component/{chunk-727SXJPM-CzkWgEIS.js → chunk-727SXJPM-BPq4W66f.js} +6 -6
- package/dist/component/{chunk-AQP2D5EJ-d-zIc-67.js → chunk-AQP2D5EJ-Y9AksdXf.js} +4 -4
- package/dist/component/{chunk-FMBD7UC4-amGyEMTp.js → chunk-FMBD7UC4-DHrfutng.js} +2 -2
- package/dist/component/{chunk-ND2GUHAM-DjPCor9N.js → chunk-ND2GUHAM-Ch9c4OTL.js} +2 -2
- package/dist/component/{chunk-QZHKN3VN-B0LrqJFz.js → chunk-QZHKN3VN-DCe5OD8b.js} +2 -2
- package/dist/component/{classDiagram-4FO5ZUOK-BLW37dmc.js → classDiagram-4FO5ZUOK-wW5NdcaU.js} +3 -3
- package/dist/component/{classDiagram-v2-Q7XG4LA2-BLW37dmc.js → classDiagram-v2-Q7XG4LA2-wW5NdcaU.js} +3 -3
- package/dist/component/{cose-bilkent-S5V4N54A-BrAZZB3S.js → cose-bilkent-S5V4N54A-BkRr9q6q.js} +2 -2
- package/dist/component/{dagre-BM42HDAG-lt_pmFeQ.js → dagre-BM42HDAG-BaUecTLo.js} +2 -2
- package/dist/component/{diagram-2AECGRRQ-DfMdC1rS.js → diagram-2AECGRRQ-BaAo02me.js} +3 -3
- package/dist/component/{diagram-5GNKFQAL-CORXCu1y.js → diagram-5GNKFQAL-DKerYV9c.js} +4 -4
- package/dist/component/{diagram-KO2AKTUF-Dt8oiVky.js → diagram-KO2AKTUF-jeKVSHu1.js} +3 -3
- package/dist/component/{diagram-LMA3HP47-Bu-XSRd6.js → diagram-LMA3HP47-wsR18sOb.js} +3 -3
- package/dist/component/{diagram-OG6HWLK6-DiOgJz8h.js → diagram-OG6HWLK6-D6kALGxL.js} +4 -4
- package/dist/component/{erDiagram-TEJ5UH35-DSrXX--n.js → erDiagram-TEJ5UH35-CQb_EY79.js} +5 -5
- package/dist/component/{flowDiagram-I6XJVG4X-D1E_ZfMU.js → flowDiagram-I6XJVG4X-B52f9IhS.js} +7 -7
- package/dist/component/{ganttDiagram-6RSMTGT7-BzGCGwAi.js → ganttDiagram-6RSMTGT7-B6szKgV7.js} +3 -3
- package/dist/component/{gitGraphDiagram-PVQCEYII-C6qUOG7K.js → gitGraphDiagram-PVQCEYII-Cso6Oo6v.js} +4 -4
- package/dist/component/{highlighted-body-OFNGDK62-D1SvZ8C_.js → highlighted-body-OFNGDK62-CD0QHket.js} +2 -2
- package/dist/component/index-Dips44uG.js +2208 -0
- package/dist/component/index.js +2 -2
- package/dist/component/{infoDiagram-5YYISTIA-D0l96um1.js → infoDiagram-5YYISTIA-BGNkBFoP.js} +2 -2
- package/dist/component/{ishikawaDiagram-YF4QCWOH-BDHAOBaC.js → ishikawaDiagram-YF4QCWOH-CDk8KSNE.js} +2 -2
- package/dist/component/{journeyDiagram-JHISSGLW-BtN73bIc.js → journeyDiagram-JHISSGLW-lPfVcAq5.js} +5 -5
- package/dist/component/{kanban-definition-UN3LZRKU-Dll6IAhM.js → kanban-definition-UN3LZRKU-DN_BkNHr.js} +3 -3
- package/dist/component/{linear-ChreRr3h.js → linear-C9Fv-7qu.js} +2 -2
- package/dist/component/{mermaid-GHXKKRXX-C0Oq2bpl.js → mermaid-GHXKKRXX-bJrxMXXe.js} +35640 -32099
- package/dist/component/{mindmap-definition-RKZ34NQL-DC9K87bN.js → mindmap-definition-RKZ34NQL-Duh3XRoZ.js} +4 -4
- package/dist/component/{pieDiagram-4H26LBE5-BNGHaTmE.js → pieDiagram-4H26LBE5-BkKLjdAW.js} +4 -4
- package/dist/component/{quadrantDiagram-W4KKPZXB-D23AXzE2.js → quadrantDiagram-W4KKPZXB-DAvb8fUN.js} +3 -3
- package/dist/component/{requirementDiagram-4Y6WPE33-DRe6Bcy7.js → requirementDiagram-4Y6WPE33-BtRuiyP2.js} +4 -4
- package/dist/component/{sankeyDiagram-5OEKKPKP-Ca--29t-.js → sankeyDiagram-5OEKKPKP-N0AD4yPI.js} +2 -2
- package/dist/component/{sequenceDiagram-3UESZ5HK-Cv6WVN5T.js → sequenceDiagram-3UESZ5HK-BHfCscqu.js} +4 -4
- package/dist/component/{stateDiagram-AJRCARHV-Ba_3WUjf.js → stateDiagram-AJRCARHV-CogCGofy.js} +3 -3
- package/dist/component/{stateDiagram-v2-BHNVJYJU-C8G1MQa8.js → stateDiagram-v2-BHNVJYJU-B1mCX7fI.js} +3 -3
- package/dist/component/{timeline-definition-PNZ67QCA-Bfh6fz9g.js → timeline-definition-PNZ67QCA-CCbxae4K.js} +3 -3
- package/dist/component/{vennDiagram-CIIHVFJN-D1U-PuFV.js → vennDiagram-CIIHVFJN-4A3Z5NhT.js} +2 -2
- package/dist/component/{wardleyDiagram-YWT4CUSO-DTwXmrGn.js → wardleyDiagram-YWT4CUSO-D2FUxcv8.js} +3 -3
- package/dist/component/{xychartDiagram-2RQKCTM6-Dy8C7cbo.js → xychartDiagram-2RQKCTM6-DELqVNap.js} +3 -3
- package/dist/components/embed/AgentGrantAutoConnect.d.ts +1 -0
- package/dist/components/embed/CapabilityHints.d.ts +4 -1
- package/dist/components/embed/EmbedConversation.d.ts +11 -11
- package/dist/components/embed/EmbedRail.d.ts +1 -1
- package/dist/components/embed/FilePreview.d.ts +7 -2
- package/dist/components/embed/FilePreviewDialog.d.ts +6 -2
- package/dist/components/embed/HtmlPreviewFrame.d.ts +7 -0
- package/dist/components/embed/MentionInput.d.ts +8 -1
- package/dist/components/embed/PreviewContent.d.ts +9 -21
- package/dist/components/embed/WelcomeIntro.d.ts +5 -3
- package/dist/components/embed/WelcomeSkills.d.ts +7 -0
- package/dist/components/embed/file-preview-kind.d.ts +7 -3
- package/dist/components/embed/onboarding-story-dock.d.ts +5 -2
- package/dist/components/embed/preview-content-kind.d.ts +5 -7
- package/dist/components/embed/use-inline-preview-url.d.ts +20 -0
- package/dist/components/scheduled/ConfirmDeleteScheduleDialog.d.ts +7 -0
- package/dist/components/scheduled/ScheduleDialog.d.ts +13 -0
- package/dist/components/scheduled/ScheduledDetailSurface.d.ts +8 -0
- package/dist/components/scheduled/ScheduledListSurface.d.ts +7 -0
- package/dist/components/scheduled/TimezoneCombobox.d.ts +7 -0
- package/dist/components/scheduled/schedule-dialog-model.d.ts +11 -0
- package/dist/components/scheduled/schedule-format.d.ts +38 -0
- package/dist/embed/agent-grant-refresh.d.ts +7 -7
- package/dist/embed/composer-submit.d.ts +7 -0
- package/dist/embed/copy.d.ts +92 -15
- package/dist/embed/dock-state.d.ts +1 -1
- package/dist/embed/slash-commands.d.ts +20 -6
- package/dist/embed/task-schedule-command.d.ts +32 -0
- package/dist/embed/task-schedule-store.d.ts +29 -0
- package/dist/embed/theme-preview-params.d.ts +2 -0
- package/dist/embed/voice-narration.d.ts +15 -0
- package/dist/i18n/messages/en.d.ts +106 -22
- package/dist/i18n/messages/surfaces/embedMisc.d.ts +0 -12
- package/dist/i18n/messages/surfaces/header.d.ts +9 -0
- package/dist/i18n/messages/surfaces/scheduled.d.ts +253 -0
- package/dist/lib/use-debounced-value.d.ts +2 -0
- package/dist/routes/chat.d.ts +3 -2
- package/dist/routes/scheduled-detail.d.ts +2 -0
- package/dist/routes/scheduled.d.ts +2 -0
- package/dist/stream/stream-state-store.d.ts +9 -0
- package/dist/types/public.d.ts +44 -9
- package/package.json +1 -1
- package/dist/components/embed/AgentGrantCard.d.ts +0 -27
- package/dist/i18n/messages/surfaces/agentGrant.d.ts +0 -58
package/dist/embed/copy.d.ts
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { Locale } from './locale.ts';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { DockCopyOverride } from '../types/public.ts';
|
|
3
|
+
import { TourStep } from './onboarding-steps.ts';
|
|
4
|
+
/** The two copy flavors — Simetrik tenant vs any other (generic Belong) brand. */
|
|
5
|
+
export type DockCopyVariant = "simetrik" | "generic";
|
|
6
|
+
/** Resolve the copy variant from the theme brand name ("Simetrik" — the
|
|
7
|
+
* built-in preset brand or a host-pushed brand with the same name). */
|
|
8
|
+
export declare const dockCopyVariant: (brandName: string) => DockCopyVariant;
|
|
9
|
+
export type WelcomeCapabilityIcon = "exchange" | "command" | "microphone" | "sliders" | "files" | "pointer";
|
|
10
|
+
/** A welcome-card capability line; label takes the voice key label (only the
|
|
11
|
+
* microphone line uses it — the others ignore the argument). */
|
|
12
|
+
export type WelcomeCapability = {
|
|
13
|
+
readonly icon: WelcomeCapabilityIcon;
|
|
14
|
+
readonly label: (voiceKeyLabel: string) => string;
|
|
15
|
+
};
|
|
16
|
+
/** The RESOLVED welcome-card copy `OnboardingWelcome` renders — flat strings,
|
|
17
|
+
* produced by {@link resolveWelcomeCardCopy} from locale + variant + hotkey. */
|
|
4
18
|
export type WelcomeCardCopy = {
|
|
5
19
|
readonly greeting: (brandName: string) => string;
|
|
6
20
|
readonly subtitle: string;
|
|
@@ -13,6 +27,16 @@ export type WelcomeCardCopy = {
|
|
|
13
27
|
readonly close: string;
|
|
14
28
|
readonly languageHint: string;
|
|
15
29
|
};
|
|
30
|
+
/** The per-locale welcome-card CONTENT — variant-keyed, hotkey-parameterized. */
|
|
31
|
+
type WelcomeCardContent = {
|
|
32
|
+
readonly greeting: (brandName: string) => string;
|
|
33
|
+
readonly subtitle: Readonly<Record<DockCopyVariant, string>>;
|
|
34
|
+
readonly capabilities: Readonly<Record<DockCopyVariant, readonly WelcomeCapability[]>>;
|
|
35
|
+
readonly tourCta: string;
|
|
36
|
+
readonly skipCta: string;
|
|
37
|
+
readonly close: string;
|
|
38
|
+
readonly languageHint: string;
|
|
39
|
+
};
|
|
16
40
|
export type TourLabels = {
|
|
17
41
|
readonly counter: (current: number, total: number) => string;
|
|
18
42
|
readonly back: string;
|
|
@@ -20,11 +44,18 @@ export type TourLabels = {
|
|
|
20
44
|
readonly finish: string;
|
|
21
45
|
readonly skip: string;
|
|
22
46
|
};
|
|
47
|
+
type TourStepContent = {
|
|
48
|
+
readonly title: string;
|
|
49
|
+
readonly body: (voiceKeyLabel: string) => string;
|
|
50
|
+
};
|
|
23
51
|
export type TourCopy = TourLabels & {
|
|
24
|
-
readonly steps:
|
|
25
|
-
readonly
|
|
26
|
-
|
|
27
|
-
|
|
52
|
+
readonly steps: {
|
|
53
|
+
readonly autonomy: TourStepContent;
|
|
54
|
+
/** The `/` step names skills for Simetrik, plain commands for everyone else. */
|
|
55
|
+
readonly commands: Readonly<Record<DockCopyVariant, TourStepContent>>;
|
|
56
|
+
readonly voice: TourStepContent;
|
|
57
|
+
readonly sessions: TourStepContent;
|
|
58
|
+
};
|
|
28
59
|
};
|
|
29
60
|
export type HintItem = {
|
|
30
61
|
readonly keyLabel: string;
|
|
@@ -51,14 +82,33 @@ export type MenuCopy = {
|
|
|
51
82
|
readonly customCss: string;
|
|
52
83
|
readonly logOut: string;
|
|
53
84
|
};
|
|
85
|
+
/** Copy for the empty-state skills table (Simetrik variant only — the compact
|
|
86
|
+
* "start from a skill" index that replaces the generic suggestion chips). */
|
|
87
|
+
export type SkillsPanelCopy = {
|
|
88
|
+
readonly heading: string;
|
|
89
|
+
/** Footer when the table is truncated: "+N more — type / to see all". */
|
|
90
|
+
readonly more: (hiddenCount: number) => string;
|
|
91
|
+
/** Footer when every skill fits: how to reach the full index later. */
|
|
92
|
+
readonly hint: string;
|
|
93
|
+
};
|
|
54
94
|
export type DockCopy = {
|
|
55
|
-
readonly welcomeCard:
|
|
95
|
+
readonly welcomeCard: WelcomeCardContent;
|
|
56
96
|
readonly tour: TourCopy;
|
|
57
97
|
readonly hints: {
|
|
58
|
-
|
|
98
|
+
/** `/` hint; label says "skills" for Simetrik, "commands" for everyone else. */
|
|
99
|
+
readonly commands: {
|
|
100
|
+
readonly keyLabel: string;
|
|
101
|
+
readonly label: Readonly<Record<DockCopyVariant, string>>;
|
|
102
|
+
};
|
|
59
103
|
readonly files: HintItem;
|
|
60
|
-
|
|
104
|
+
/** Voice hint label; the key label is the LIVE push-to-talk key. */
|
|
105
|
+
readonly voice: {
|
|
106
|
+
readonly label: string;
|
|
107
|
+
};
|
|
61
108
|
};
|
|
109
|
+
/** Localized name for the Space key (every other code renders via
|
|
110
|
+
* `formatKeyCode`, which is already language-neutral). */
|
|
111
|
+
readonly spaceKeyLabel: string;
|
|
62
112
|
readonly replayMenu: string;
|
|
63
113
|
readonly language: {
|
|
64
114
|
readonly label: string;
|
|
@@ -69,12 +119,13 @@ export type DockCopy = {
|
|
|
69
119
|
readonly menu: MenuCopy;
|
|
70
120
|
readonly intro: {
|
|
71
121
|
readonly greeting: (brandName: string) => string;
|
|
72
|
-
readonly body: string
|
|
122
|
+
readonly body: Readonly<Record<DockCopyVariant, string>>;
|
|
73
123
|
};
|
|
74
|
-
readonly
|
|
124
|
+
readonly skillsPanel: SkillsPanelCopy;
|
|
125
|
+
readonly suggestions: Readonly<Record<DockCopyVariant, readonly string[]>>;
|
|
75
126
|
readonly composer: {
|
|
76
|
-
readonly placeholderDefault: string
|
|
77
|
-
readonly placeholderPlan: string
|
|
127
|
+
readonly placeholderDefault: Readonly<Record<DockCopyVariant, string>>;
|
|
128
|
+
readonly placeholderPlan: Readonly<Record<DockCopyVariant, string>>;
|
|
78
129
|
readonly voiceHint: (keyLabel: string) => string;
|
|
79
130
|
readonly micNotSupported: string;
|
|
80
131
|
readonly micNotConfigured: string;
|
|
@@ -84,5 +135,31 @@ export type DockCopy = {
|
|
|
84
135
|
};
|
|
85
136
|
};
|
|
86
137
|
export declare const DOCK_COPY: Record<Locale, DockCopy>;
|
|
87
|
-
/**
|
|
88
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Human label for the push-to-talk key, localized where a translation exists:
|
|
140
|
+
* "Space" reads "Espacio"/"Espaço" in ES/PT; every other code goes through
|
|
141
|
+
* `formatKeyCode` ("ControlLeft" → "Left Ctrl", "KeyV" → "V", …).
|
|
142
|
+
*/
|
|
143
|
+
export declare const voiceKeyLabel: (code: string, locale: Locale) => string;
|
|
144
|
+
/**
|
|
145
|
+
* Flatten the variant-keyed welcome-card content into the strings the
|
|
146
|
+
* presentational card renders, injecting the LIVE voice key label, then
|
|
147
|
+
* applying the active theme's per-locale `copy` override (BEL-135) when a
|
|
148
|
+
* tenant supplies one — Simetrik's preset, or a published theme.json. A
|
|
149
|
+
* neutral host with no override gets the variant copy as-is.
|
|
150
|
+
*/
|
|
151
|
+
export declare const resolveWelcomeCardCopy: (locale: Locale, variant: DockCopyVariant, keyLabel: string, override?: DockCopyOverride) => WelcomeCardCopy;
|
|
152
|
+
/**
|
|
153
|
+
* The empty-state intro body + suggestion chips for a locale + variant,
|
|
154
|
+
* overridden by the active theme's per-locale `copy` when a tenant supplies
|
|
155
|
+
* one (BEL-135) — the same override the welcome card honors above.
|
|
156
|
+
*/
|
|
157
|
+
export type ResolvedWelcomeCopy = {
|
|
158
|
+
readonly introBody: string;
|
|
159
|
+
readonly suggestions: readonly string[];
|
|
160
|
+
};
|
|
161
|
+
export declare const resolveWelcomeCopy: (locale: Locale, variant: DockCopyVariant, override: DockCopyOverride | undefined) => ResolvedWelcomeCopy;
|
|
162
|
+
/** Merge the locale-independent step defs with this locale's titles/bodies,
|
|
163
|
+
* injecting the LIVE voice key label and picking the variant's `/` step. */
|
|
164
|
+
export declare const buildTourSteps: (locale: Locale, keyLabel: string, variant: DockCopyVariant) => readonly TourStep[];
|
|
165
|
+
export {};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* in the stream-state store; this module owns only view + size. Best-effort:
|
|
6
6
|
* disabled/quota'd storage just means no cross-reload restore.
|
|
7
7
|
*/
|
|
8
|
-
export type DockView = "chat" | "files";
|
|
8
|
+
export type DockView = "chat" | "files" | "scheduled";
|
|
9
9
|
export type DockSize = "collapsed" | "expanded" | "modal";
|
|
10
10
|
export type DockState = {
|
|
11
11
|
readonly view: DockView;
|
|
@@ -17,14 +17,28 @@ export declare const commandOptions: (commands: readonly CommandSummary[]) => re
|
|
|
17
17
|
* first), so keep these names out of the skill namespace.
|
|
18
18
|
*/
|
|
19
19
|
export declare const BUILTIN_COMMANDS: readonly SkillSummary[];
|
|
20
|
-
export type
|
|
20
|
+
export type BuiltinCommand = {
|
|
21
|
+
readonly type: "compact";
|
|
22
|
+
} | {
|
|
23
|
+
readonly type: "clear";
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: "schedule";
|
|
26
|
+
readonly argumentsText: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly type: "schedule_invalid";
|
|
29
|
+
} | {
|
|
30
|
+
readonly type: "unschedule";
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: "unschedule_invalid";
|
|
33
|
+
};
|
|
21
34
|
/**
|
|
22
|
-
* Recognize a submitted draft as a built-in command.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
35
|
+
* Recognize a submitted draft as a built-in command. `/compact` remains an
|
|
36
|
+
* exact, argument-free command, so trailing text falls through to normal
|
|
37
|
+
* message handling. `/schedule` and `/unschedule` claim their complete command
|
|
38
|
+
* token even when their arguments are invalid, preventing malformed commands
|
|
39
|
+
* from reaching the agent runtime as raw messages.
|
|
26
40
|
*/
|
|
27
|
-
export declare const parseBuiltinCommand: (draft: string) =>
|
|
41
|
+
export declare const parseBuiltinCommand: (draft: string) => BuiltinCommand | null;
|
|
28
42
|
/**
|
|
29
43
|
* The slash menu's option list: built-ins merged ahead of the skills, ranked
|
|
30
44
|
* by {@link filterSkills} (prefix matches first; input order — built-ins
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Locale } from './locale.ts';
|
|
2
|
+
export type ParsedTaskScheduleCommand = {
|
|
3
|
+
readonly ok: true;
|
|
4
|
+
readonly scheduledFor: Date;
|
|
5
|
+
readonly timeExpression: string;
|
|
6
|
+
readonly message: string;
|
|
7
|
+
readonly recurrence: "none" | "daily" | "weekdays" | "weekly";
|
|
8
|
+
} | {
|
|
9
|
+
readonly ok: false;
|
|
10
|
+
readonly reason: "invalid_time" | "missing_message";
|
|
11
|
+
};
|
|
12
|
+
export declare const browserTimezone: () => string;
|
|
13
|
+
export type WallClock = {
|
|
14
|
+
readonly year: number;
|
|
15
|
+
readonly month: number;
|
|
16
|
+
readonly day: number;
|
|
17
|
+
readonly hour: number;
|
|
18
|
+
readonly minute: number;
|
|
19
|
+
readonly second: number;
|
|
20
|
+
};
|
|
21
|
+
export declare const partsInTimezone: (instant: Date, timezone: string) => WallClock;
|
|
22
|
+
/** Resolve an IANA-zone wall clock at the TARGET date (including DST there).
|
|
23
|
+
* Repeated times choose the earlier instant; nonexistent times shift forward
|
|
24
|
+
* by the gap. Exported for the Scheduled dialog's date+time+timezone →
|
|
25
|
+
* instant conversion (the server ports the same algorithm). */
|
|
26
|
+
export declare const instantInTimezone: (wall: WallClock, timezone: string) => Date;
|
|
27
|
+
export declare const parseTaskScheduleCommand: (input: {
|
|
28
|
+
readonly argumentsText: string;
|
|
29
|
+
readonly locale: Locale;
|
|
30
|
+
readonly reference: Date;
|
|
31
|
+
readonly timezone: string;
|
|
32
|
+
}) => Promise<ParsedTaskScheduleCommand>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const storedTaskScheduleSchema: z.ZodObject<{
|
|
3
|
+
taskScheduleId: z.ZodString;
|
|
4
|
+
message: z.ZodString;
|
|
5
|
+
scheduledFor: z.ZodString;
|
|
6
|
+
timezone: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
message: string;
|
|
9
|
+
timezone: string;
|
|
10
|
+
scheduledFor: string;
|
|
11
|
+
taskScheduleId: string;
|
|
12
|
+
}, {
|
|
13
|
+
message: string;
|
|
14
|
+
timezone: string;
|
|
15
|
+
scheduledFor: string;
|
|
16
|
+
taskScheduleId: string;
|
|
17
|
+
}>;
|
|
18
|
+
export type StoredTaskSchedule = z.infer<typeof storedTaskScheduleSchema>;
|
|
19
|
+
type TaskScheduleStoreScope = {
|
|
20
|
+
readonly apiBaseUrl: string;
|
|
21
|
+
readonly workspaceExternalId: string | null;
|
|
22
|
+
};
|
|
23
|
+
/** The most recently created pending schedule known in this account scope. */
|
|
24
|
+
export declare const readLatestStoredTaskSchedule: (scope: TaskScheduleStoreScope) => StoredTaskSchedule | null;
|
|
25
|
+
/** Remember a schedule internally. Its identifier is deliberately never rendered. */
|
|
26
|
+
export declare const rememberTaskSchedule: (scope: TaskScheduleStoreScope, schedule: StoredTaskSchedule) => void;
|
|
27
|
+
/** Drop a schedule after cancellation or once the backend reports it unavailable. */
|
|
28
|
+
export declare const forgetTaskSchedule: (scope: TaskScheduleStoreScope, taskScheduleId: string) => void;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spoken status narration for the CLOSED chat surface (voice-presence spec §3).
|
|
3
|
+
* Pure: classifies a tool call into a WORK PHASE and hands out short spoken
|
|
4
|
+
* lines, round-robin per phase like `voice-fillers.ts`. The ChatRoute narrator
|
|
5
|
+
* effect decides WHEN to speak (surface hidden, speaker on, throttle); this
|
|
6
|
+
* module only decides WHAT to say. English by convention (spec non-goal:
|
|
7
|
+
* spoken phrases are not localized — fillers and plan announcements aren't).
|
|
8
|
+
*/
|
|
9
|
+
export type WorkPhase = "coding" | "files" | "actions";
|
|
10
|
+
export declare const classifyToolPhase: (toolName: string) => WorkPhase;
|
|
11
|
+
/** The next spoken line for a work phase (round-robin within the phase). */
|
|
12
|
+
export declare const narrationLine: (phase: WorkPhase) => string;
|
|
13
|
+
/** The next "still working" line (round-robin). */
|
|
14
|
+
export declare const stillWorkingLine: () => string;
|
|
15
|
+
export declare const __resetNarrationForTest: () => void;
|
|
@@ -92,6 +92,88 @@ export declare const en: {
|
|
|
92
92
|
readonly untitledSession: "Untitled session";
|
|
93
93
|
readonly updated: "updated";
|
|
94
94
|
};
|
|
95
|
+
readonly scheduled: {
|
|
96
|
+
readonly viewTitle: "Scheduled";
|
|
97
|
+
readonly subtitle: "Run work automatically, even when you're away";
|
|
98
|
+
readonly newTask: "New scheduled task";
|
|
99
|
+
readonly searchPlaceholder: "Search scheduled tasks";
|
|
100
|
+
readonly filterAll: "All";
|
|
101
|
+
readonly filterUpcoming: "Upcoming";
|
|
102
|
+
readonly filterCompleted: "Completed";
|
|
103
|
+
readonly loading: "Loading scheduled tasks…";
|
|
104
|
+
readonly empty: "No scheduled tasks yet";
|
|
105
|
+
readonly emptyHint: "Create one to run a prompt later — once or on a repeating schedule.";
|
|
106
|
+
readonly noResults: "No matches for “{{q}}”";
|
|
107
|
+
readonly loadError: "Couldn't load scheduled tasks.";
|
|
108
|
+
readonly loadMore: "Load more";
|
|
109
|
+
readonly statusActive: "Active";
|
|
110
|
+
readonly statusPaused: "Paused";
|
|
111
|
+
readonly statusCompleted: "Completed";
|
|
112
|
+
readonly statusUpcoming: "Upcoming";
|
|
113
|
+
readonly nextRun: "Next run {{time}}";
|
|
114
|
+
readonly nextRunIn: "Next run {{when}}";
|
|
115
|
+
readonly lastRun: "Last run {{time}}";
|
|
116
|
+
readonly dayAtTime: "{{day}} at {{time}}";
|
|
117
|
+
readonly pausedNotice: "Paused — runs won't start until you resume.";
|
|
118
|
+
readonly summaryOnce: "Once on {{time}}";
|
|
119
|
+
readonly summaryDaily: "Daily at {{time}}";
|
|
120
|
+
readonly summaryWeekdays: "Weekdays at {{time}}";
|
|
121
|
+
readonly summaryWeekly: "Every {{day}} at {{time}}";
|
|
122
|
+
readonly timezoneSuffix: "({{timezone}})";
|
|
123
|
+
readonly recurrenceNone: "Does not repeat";
|
|
124
|
+
readonly recurrenceDaily: "Daily";
|
|
125
|
+
readonly recurrenceWeekdays: "Weekdays (Mon–Fri)";
|
|
126
|
+
readonly recurrenceWeekly: "Weekly";
|
|
127
|
+
readonly dialogCreateTitle: "New scheduled task";
|
|
128
|
+
readonly dialogEditTitle: "Edit scheduled task";
|
|
129
|
+
readonly dialogHint: "You can change this later.";
|
|
130
|
+
readonly promptLabel: "What should the agent do?";
|
|
131
|
+
readonly promptPlaceholder: "Include everything the agent needs — each run starts a fresh conversation.";
|
|
132
|
+
readonly titleLabel: "Title (optional)";
|
|
133
|
+
readonly titlePlaceholder: "Shown in your scheduled list";
|
|
134
|
+
readonly whenLabel: "When";
|
|
135
|
+
readonly dateLabel: "Date";
|
|
136
|
+
readonly timeLabel: "Time";
|
|
137
|
+
readonly repeatLabel: "Repeat";
|
|
138
|
+
readonly timezoneLabel: "Timezone";
|
|
139
|
+
readonly timezoneSearchPlaceholder: "Search timezones…";
|
|
140
|
+
readonly timezoneNoMatch: "No matching timezone";
|
|
141
|
+
readonly create: "Create scheduled task";
|
|
142
|
+
readonly saveChanges: "Save changes";
|
|
143
|
+
readonly cancel: "Cancel";
|
|
144
|
+
readonly errorPromptRequired: "Write a prompt for the scheduled run.";
|
|
145
|
+
readonly errorPastTime: "Pick a time in the future.";
|
|
146
|
+
readonly errorTooFar: "Pick a time within the next year.";
|
|
147
|
+
readonly errorCreateFailed: "Couldn't create the schedule — try again.";
|
|
148
|
+
readonly errorUpdateFailed: "Couldn't save the changes — try again.";
|
|
149
|
+
readonly back: "Back to scheduled";
|
|
150
|
+
readonly pause: "Pause";
|
|
151
|
+
readonly resume: "Resume";
|
|
152
|
+
readonly resumedCompleted: "Its time already passed, so this one-time task is now completed.";
|
|
153
|
+
readonly runNow: "Run now";
|
|
154
|
+
readonly runNowStarted: "Run started — it will appear below.";
|
|
155
|
+
readonly edit: "Edit";
|
|
156
|
+
readonly delete: "Delete";
|
|
157
|
+
readonly deleteConfirmTitle: "Delete this scheduled task?";
|
|
158
|
+
readonly deleteConfirmBody: "Future runs are cancelled. Past runs and their conversations stay in your history.";
|
|
159
|
+
readonly deleteConfirm: "Delete";
|
|
160
|
+
readonly actionsMenu: "Schedule actions";
|
|
161
|
+
readonly actionFailed: "That didn't work — refresh and try again.";
|
|
162
|
+
readonly runsHeading: "Runs";
|
|
163
|
+
readonly runsCount_one: "{{count}} run";
|
|
164
|
+
readonly runsCount_other: "{{count}} runs";
|
|
165
|
+
readonly runsEmpty: "No runs yet — the first one appears here after it starts.";
|
|
166
|
+
readonly runsLoadError: "Couldn't load runs.";
|
|
167
|
+
readonly runStatusRunning: "Running";
|
|
168
|
+
readonly runStatusNeedsAttention: "Needs attention";
|
|
169
|
+
readonly runStatusCompleted: "Completed";
|
|
170
|
+
readonly runStatusFailed: "Failed";
|
|
171
|
+
readonly runNeedsAttentionHint: "Waiting for your input.";
|
|
172
|
+
readonly manualRun: "Manual run";
|
|
173
|
+
readonly openRun: "Open this run's conversation";
|
|
174
|
+
readonly detailLoadError: "Couldn't load this scheduled task.";
|
|
175
|
+
readonly detailGone: "This scheduled task no longer exists.";
|
|
176
|
+
};
|
|
95
177
|
readonly plan: {
|
|
96
178
|
readonly cueReady: "Plan ready — View";
|
|
97
179
|
readonly fallbackTitle: "Plan";
|
|
@@ -117,12 +199,15 @@ export declare const en: {
|
|
|
117
199
|
readonly byBelong: "by Belong";
|
|
118
200
|
readonly navChat: "Chat";
|
|
119
201
|
readonly navFiles: "Files";
|
|
202
|
+
readonly navScheduled: "Scheduled";
|
|
120
203
|
readonly chatPlanRunning: "Chat — plan running, {{completed}} of {{total}} steps done";
|
|
121
204
|
readonly devMode: "Dev mode";
|
|
122
205
|
readonly devModeTitle: "Dev mode (belong:dev)";
|
|
123
206
|
readonly muteReplies: "Mute replies";
|
|
124
207
|
readonly readRepliesAloud: "Read replies aloud";
|
|
125
208
|
readonly speechNotSupported: "Speech not supported";
|
|
209
|
+
readonly railVoiceToggle: "Voice replies on/off — hold {{key}} to talk";
|
|
210
|
+
readonly hotkeyHint: "Hold {{key}} to talk — chat can stay closed";
|
|
126
211
|
readonly expand: "Expand";
|
|
127
212
|
readonly collapse: "Collapse";
|
|
128
213
|
};
|
|
@@ -210,10 +295,6 @@ export declare const en: {
|
|
|
210
295
|
readonly micUnmuted: "Mic unmuted";
|
|
211
296
|
readonly micMuted: "Mic muted";
|
|
212
297
|
readonly agentWorking: "{{name}} is working…";
|
|
213
|
-
readonly clearChat: "Clear chat";
|
|
214
|
-
readonly clearChatTooltip: "Clear chat (the assistant keeps the full context)";
|
|
215
|
-
readonly clear: "Clear";
|
|
216
|
-
readonly stop: "Stop";
|
|
217
298
|
};
|
|
218
299
|
readonly app: {
|
|
219
300
|
readonly uploadNoWorkspace: "Open the terminal once so your workspace exists, then upload.";
|
|
@@ -276,23 +357,6 @@ export declare const en: {
|
|
|
276
357
|
readonly nextBranch: "Next branch";
|
|
277
358
|
readonly branchPage: "{{current}} of {{total}}";
|
|
278
359
|
};
|
|
279
|
-
readonly agentGrant: {
|
|
280
|
-
readonly headlineExpired: "Your agent session expired";
|
|
281
|
-
readonly headlineRevoked: "Agent session disconnected";
|
|
282
|
-
readonly headlineNone: "Let the {{name}} agent use the CLI in the background";
|
|
283
|
-
readonly body: "It acts on your behalf in your current workspace — time-limited (24 h), revocable anytime.";
|
|
284
|
-
readonly connected: "{{name}} agent connected";
|
|
285
|
-
readonly connectedUntil: "{{name}} agent connected · until {{until}}";
|
|
286
|
-
readonly disconnect: "Disconnect";
|
|
287
|
-
readonly ctaAllow: "Allow";
|
|
288
|
-
readonly ctaReconnect: "Reconnect";
|
|
289
|
-
readonly notNow: "Not now";
|
|
290
|
-
readonly errorNotScopeMember: "Your {{name}} user isn't a member of this workspace, so the agent can't connect here. Switch to a workspace you belong to.";
|
|
291
|
-
readonly errorScopeSessionLimit: "This workspace is at its limit of active agent connections. We tried to free one up — reload and reconnect, or try again in a moment.";
|
|
292
|
-
readonly errorAuthTokenAlreadyUsed: "Reconnecting needs a fresh {{name}} sign-in — the last one was just used to connect. It refreshes on your next page reload, or on its own in a few minutes.";
|
|
293
|
-
readonly errorGrantRejected: "Simetrik declined the connection. This is usually a permissions or workspace issue — if it persists, contact Simetrik support.";
|
|
294
|
-
readonly errorGeneric: "Couldn't connect the agent session. Try again.";
|
|
295
|
-
};
|
|
296
360
|
readonly common: {
|
|
297
361
|
readonly language: "Language";
|
|
298
362
|
readonly retry: "Retry";
|
|
@@ -323,6 +387,26 @@ export declare const en: {
|
|
|
323
387
|
readonly compacting: "Compacting…";
|
|
324
388
|
readonly clearSuccess: "Chat cleared — the assistant still has the full context.";
|
|
325
389
|
readonly clearError: "Couldn't clear the chat — try again.";
|
|
390
|
+
readonly clearBusy: "Can't clear while the agent is working — try when it finishes.";
|
|
391
|
+
};
|
|
392
|
+
readonly scheduling: {
|
|
393
|
+
readonly scheduleUsage: "Use /schedule <time> <task>, for example: /schedule tomorrow at 9 prepare the report.";
|
|
394
|
+
readonly unscheduleUsage: "Use /unschedule to cancel your most recently scheduled task.";
|
|
395
|
+
readonly invalidTime: "I couldn't resolve that time. Include a time of day, for example: tomorrow at 9.";
|
|
396
|
+
readonly missingMessage: "Add the task after the time, for example: /schedule in 20 minutes prepare the report.";
|
|
397
|
+
readonly pending: "Scheduling…";
|
|
398
|
+
readonly created: "Scheduled for {{time}} ({{timezone}}).";
|
|
399
|
+
readonly task: "Task: {{message}}";
|
|
400
|
+
readonly cancel: "Cancel";
|
|
401
|
+
readonly interactiveWarning: "This mode may pause for your approval or input after it starts.";
|
|
402
|
+
readonly pendingLimit: "You already have {{count}} pending schedules. Cancel one before adding another.";
|
|
403
|
+
readonly serverRejectedTime: "That time is already past or more than one year away.";
|
|
404
|
+
readonly createError: "Couldn't schedule the task — try again.";
|
|
405
|
+
readonly cancelled: "Cancelled \"{{message}}\" scheduled for {{time}} ({{timezone}}).";
|
|
406
|
+
readonly noPendingSchedule: "There isn't a pending scheduled task to cancel here.";
|
|
407
|
+
readonly notFound: "That pending schedule wasn't found.";
|
|
408
|
+
readonly alreadyStarted: "That schedule has already started and can no longer be cancelled.";
|
|
409
|
+
readonly cancelError: "Couldn't cancel the schedule — try again.";
|
|
326
410
|
};
|
|
327
411
|
readonly voiceOverlay: {
|
|
328
412
|
readonly startingMic: "Starting mic…";
|
|
@@ -340,7 +424,7 @@ export declare const en: {
|
|
|
340
424
|
readonly notDelivered: "Not delivered — please resend";
|
|
341
425
|
readonly runFailed: "Run failed";
|
|
342
426
|
readonly uploadFailed: "Attachment upload failed — remove it or try again.";
|
|
343
|
-
readonly authExpired: "Your session expired — please sign in to
|
|
427
|
+
readonly authExpired: "Your session expired — please sign in to {{name}} again, then retry.";
|
|
344
428
|
readonly backendUnavailable: "Can't reach the assistant service — check your connection.";
|
|
345
429
|
readonly streamError: "Stream error — {{message}}";
|
|
346
430
|
readonly streamErrorFallback: "please retry";
|
|
@@ -43,10 +43,6 @@ export declare const embedMiscEn: {
|
|
|
43
43
|
readonly micUnmuted: "Mic unmuted";
|
|
44
44
|
readonly micMuted: "Mic muted";
|
|
45
45
|
readonly agentWorking: "{{name}} is working…";
|
|
46
|
-
readonly clearChat: "Clear chat";
|
|
47
|
-
readonly clearChatTooltip: "Clear chat (the assistant keeps the full context)";
|
|
48
|
-
readonly clear: "Clear";
|
|
49
|
-
readonly stop: "Stop";
|
|
50
46
|
};
|
|
51
47
|
};
|
|
52
48
|
export declare const embedMiscEs: {
|
|
@@ -92,10 +88,6 @@ export declare const embedMiscEs: {
|
|
|
92
88
|
micUnmuted: string;
|
|
93
89
|
micMuted: string;
|
|
94
90
|
agentWorking: string;
|
|
95
|
-
clearChat: string;
|
|
96
|
-
clearChatTooltip: string;
|
|
97
|
-
clear: string;
|
|
98
|
-
stop: string;
|
|
99
91
|
};
|
|
100
92
|
};
|
|
101
93
|
export declare const embedMiscPt: {
|
|
@@ -141,9 +133,5 @@ export declare const embedMiscPt: {
|
|
|
141
133
|
micUnmuted: string;
|
|
142
134
|
micMuted: string;
|
|
143
135
|
agentWorking: string;
|
|
144
|
-
clearChat: string;
|
|
145
|
-
clearChatTooltip: string;
|
|
146
|
-
clear: string;
|
|
147
|
-
stop: string;
|
|
148
136
|
};
|
|
149
137
|
};
|
|
@@ -4,12 +4,15 @@ export declare const headerEn: {
|
|
|
4
4
|
readonly byBelong: "by Belong";
|
|
5
5
|
readonly navChat: "Chat";
|
|
6
6
|
readonly navFiles: "Files";
|
|
7
|
+
readonly navScheduled: "Scheduled";
|
|
7
8
|
readonly chatPlanRunning: "Chat — plan running, {{completed}} of {{total}} steps done";
|
|
8
9
|
readonly devMode: "Dev mode";
|
|
9
10
|
readonly devModeTitle: "Dev mode (belong:dev)";
|
|
10
11
|
readonly muteReplies: "Mute replies";
|
|
11
12
|
readonly readRepliesAloud: "Read replies aloud";
|
|
12
13
|
readonly speechNotSupported: "Speech not supported";
|
|
14
|
+
readonly railVoiceToggle: "Voice replies on/off — hold {{key}} to talk";
|
|
15
|
+
readonly hotkeyHint: "Hold {{key}} to talk — chat can stay closed";
|
|
13
16
|
readonly expand: "Expand";
|
|
14
17
|
readonly collapse: "Collapse";
|
|
15
18
|
};
|
|
@@ -19,12 +22,15 @@ export declare const headerEs: {
|
|
|
19
22
|
byBelong: string;
|
|
20
23
|
navChat: string;
|
|
21
24
|
navFiles: string;
|
|
25
|
+
navScheduled: string;
|
|
22
26
|
chatPlanRunning: string;
|
|
23
27
|
devMode: string;
|
|
24
28
|
devModeTitle: string;
|
|
25
29
|
muteReplies: string;
|
|
26
30
|
readRepliesAloud: string;
|
|
27
31
|
speechNotSupported: string;
|
|
32
|
+
railVoiceToggle: string;
|
|
33
|
+
hotkeyHint: string;
|
|
28
34
|
expand: string;
|
|
29
35
|
collapse: string;
|
|
30
36
|
};
|
|
@@ -34,12 +40,15 @@ export declare const headerPt: {
|
|
|
34
40
|
byBelong: string;
|
|
35
41
|
navChat: string;
|
|
36
42
|
navFiles: string;
|
|
43
|
+
navScheduled: string;
|
|
37
44
|
chatPlanRunning: string;
|
|
38
45
|
devMode: string;
|
|
39
46
|
devModeTitle: string;
|
|
40
47
|
muteReplies: string;
|
|
41
48
|
readRepliesAloud: string;
|
|
42
49
|
speechNotSupported: string;
|
|
50
|
+
railVoiceToggle: string;
|
|
51
|
+
hotkeyHint: string;
|
|
43
52
|
expand: string;
|
|
44
53
|
collapse: string;
|
|
45
54
|
};
|