@belonguniverseai/react-sdk 0.6.32 → 0.6.33

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 (108) hide show
  1. package/dist/api/account-connectors.d.ts +2 -2
  2. package/dist/api/client.d.ts +1114 -78
  3. package/dist/api/goals.d.ts +4 -4
  4. package/dist/api/quota-refusal.d.ts +49 -0
  5. package/dist/api/secret-paste.d.ts +5 -0
  6. package/dist/api/suggestions.d.ts +18 -0
  7. package/dist/api/task-schedule-sharing.d.ts +13 -1
  8. package/dist/api/task-schedules.d.ts +33 -4
  9. package/dist/api/vault.d.ts +49 -0
  10. package/dist/app/dock-story-data.d.ts +6 -0
  11. package/dist/component/{abnfDiagram-N423BO3Z-Cs6vuzym.js → abnfDiagram-N423BO3Z-CK4wvzwz.js} +4 -4
  12. package/dist/component/{architectureDiagram-T3A2C74G-BdBpK2d_.js → architectureDiagram-T3A2C74G-DoljsqqO.js} +6 -6
  13. package/dist/component/{blockDiagram-VBNYF7ZC-Cf6dsn1j.js → blockDiagram-VBNYF7ZC-Ie7SErpH.js} +8 -8
  14. package/dist/component/{c4Diagram-5PPSVZJV-Cxt2hfnn.js → c4Diagram-5PPSVZJV-rfEof5mj.js} +4 -4
  15. package/dist/component/{channel-COtJQ6CP.js → channel-C5ABP6lE.js} +2 -2
  16. package/dist/component/{chunk-2GRJ4B5K-C14K2lKj.js → chunk-2GRJ4B5K-CWOCv67u.js} +2 -2
  17. package/dist/component/{chunk-3NCLNEKW-oHacP_OI.js → chunk-3NCLNEKW-BJYANBvv.js} +2 -2
  18. package/dist/component/{chunk-4I5QYGJK-CGOVqmKQ.js → chunk-4I5QYGJK-C29OfER5.js} +2 -2
  19. package/dist/component/{chunk-5RXB4S5H-CMJnmUzX.js → chunk-5RXB4S5H-D__NH4Op.js} +6 -6
  20. package/dist/component/{chunk-6Q2QTUOP-B5ACmZa2.js → chunk-6Q2QTUOP-BgSQgII8.js} +3 -3
  21. package/dist/component/{chunk-7Z6QIM7H-CSfSb_Xc.js → chunk-7Z6QIM7H-vNexNF_V.js} +8 -8
  22. package/dist/component/{chunk-GF5L2VYU-xi_oDTd2.js → chunk-GF5L2VYU-D3vxqomE.js} +6 -6
  23. package/dist/component/{chunk-I66GZJ75-DB1sFGc-.js → chunk-I66GZJ75-Dkw1ISGd.js} +2 -2
  24. package/dist/component/{chunk-J7OUQ5F2-DB9d7Gt_.js → chunk-J7OUQ5F2-dC67pJWg.js} +7 -7
  25. package/dist/component/{chunk-JQJVKLGR-De7zUJDv.js → chunk-JQJVKLGR-Djj9TdhH.js} +8 -8
  26. package/dist/component/{chunk-KBJHAD2P-CVoxmRa8.js → chunk-KBJHAD2P-dwIA6Vmi.js} +2 -2
  27. package/dist/component/{chunk-NSK5VX7P-ur_ZGcVX.js → chunk-NSK5VX7P-thQxjtNK.js} +2 -2
  28. package/dist/component/{chunk-QR6OTTB3-Bl3Z_jKC.js → chunk-QR6OTTB3-OMd-rgNj.js} +7 -7
  29. package/dist/component/{chunk-UBXNYLIW-CDKeQUnO.js → chunk-UBXNYLIW-D26S6zO6.js} +3 -3
  30. package/dist/component/{chunk-W5SLKNZC-Dq8uD14N.js → chunk-W5SLKNZC-DLV7M8by.js} +2 -2
  31. package/dist/component/{chunk-WRU74C26-BwQb4DnE.js → chunk-WRU74C26-13bvIAgD.js} +4 -4
  32. package/dist/component/{classDiagram-JCYQIIEL-yl7JabGO.js → classDiagram-JCYQIIEL-BFQ72AZA.js} +13 -13
  33. package/dist/component/{classDiagram-v2-OCEON4UE-ozBAEvyC.js → classDiagram-v2-OCEON4UE-UFfArXpP.js} +13 -13
  34. package/dist/component/{component-DnTvWVQQ.js → component-Bhs6PFPY.js} +22656 -21083
  35. package/dist/component/{cynefinDiagram-MW4NZA55-fdKo3DVx.js → cynefinDiagram-MW4NZA55-Bgfw8c41.js} +4 -4
  36. package/dist/component/{dagre-VZM6K2ZE-C7nAehQV.js → dagre-VZM6K2ZE-CQoUcF3S.js} +9 -9
  37. package/dist/component/{diagram-7IWD3JNH-DRM3Hv3P.js → diagram-7IWD3JNH-C8-mvAEv.js} +5 -5
  38. package/dist/component/{diagram-B4RE2ZJO-DXqATSZd.js → diagram-B4RE2ZJO-BATqCIx3.js} +3 -3
  39. package/dist/component/{diagram-LBJQPF4R-DJRJfBnF.js → diagram-LBJQPF4R-DwRMRXWz.js} +4 -4
  40. package/dist/component/{diagram-Q27KOJAE-B4cTzsYZ.js → diagram-Q27KOJAE-D6gO0LTm.js} +6 -6
  41. package/dist/component/{diagram-UB23O5K3-CyUjYCbX.js → diagram-UB23O5K3-4nOrWHql.js} +4 -4
  42. package/dist/component/{ebnfDiagram-BXEA7PRR-C6GS4eTe.js → ebnfDiagram-BXEA7PRR-DCO-Nj3k.js} +4 -4
  43. package/dist/component/{erDiagram-JOGREHBK-D8qt0_mW.js → erDiagram-JOGREHBK-hWtImhPN.js} +12 -12
  44. package/dist/component/flowDiagram-UKHOOZJN-8qLgX2Wv.js +19 -0
  45. package/dist/component/{ganttDiagram-PKOTCBZU-D6o-gloU.js → ganttDiagram-PKOTCBZU-BE8Mqoej.js} +3 -3
  46. package/dist/component/{gitGraphDiagram-DS77QQ5N-Cz3kf7xj.js → gitGraphDiagram-DS77QQ5N-DURS7rAN.js} +3 -3
  47. package/dist/component/index.js +2 -2
  48. package/dist/component/{infoDiagram-6WML65LV-sdz8qoTE.js → infoDiagram-6WML65LV-BqBxR6YB.js} +3 -3
  49. package/dist/component/{ishikawaDiagram-WSZJBQD7--tUiPVAr.js → ishikawaDiagram-WSZJBQD7-CnYZd1Dq.js} +4 -4
  50. package/dist/component/{journeyDiagram-NVQOT4AX-_-TjqBid.js → journeyDiagram-NVQOT4AX-Cgkpx4Qx.js} +3 -3
  51. package/dist/component/{kanban-definition-27J2QSJJ-BXBySx2U.js → kanban-definition-27J2QSJJ-CJSdhT0i.js} +9 -9
  52. package/dist/component/{line-C2WkjBlg.js → line-BBEHlpsV.js} +2 -2
  53. package/dist/component/{mindmap-definition-FAOFIHXS-CbpSDN_k.js → mindmap-definition-FAOFIHXS-DgHouLA-.js} +11 -11
  54. package/dist/component/{pegDiagram-VL7TDLO6-Cp_Wn0PS.js → pegDiagram-VL7TDLO6-B_iGQ6sI.js} +4 -4
  55. package/dist/component/{pieDiagram-7S7Q4E2Y-D6KGBWSF.js → pieDiagram-7S7Q4E2Y-g7GxM0JA.js} +4 -4
  56. package/dist/component/{quadrantDiagram-CIZ2JOQS-BWjdUg-z.js → quadrantDiagram-CIZ2JOQS-Bp7z4raq.js} +2 -2
  57. package/dist/component/{railroadDiagram-AXF67PYL-B5iYZXm-.js → railroadDiagram-AXF67PYL-CYx3PP5o.js} +4 -4
  58. package/dist/component/{requirementDiagram-LRYGKXZP-CewRkYfE.js → requirementDiagram-LRYGKXZP-BJNRJceo.js} +11 -11
  59. package/dist/component/{sankeyDiagram-W5VNT64P-D3Zb5dQ6.js → sankeyDiagram-W5VNT64P-Cf0tVHbW.js} +2 -2
  60. package/dist/component/{sequenceDiagram-SI44F4Z6-BfxhjyrN.js → sequenceDiagram-SI44F4Z6-BsAsKMRH.js} +4 -4
  61. package/dist/component/{stateDiagram-OKZ733FA-DLd9YI1A.js → stateDiagram-OKZ733FA-Bpk0vtTK.js} +14 -14
  62. package/dist/component/{stateDiagram-v2-UEYNNEHI-Dd_FaBaY.js → stateDiagram-v2-UEYNNEHI-CJFoUvD2.js} +13 -13
  63. package/dist/component/{swimlanes-SLNWSIFB-C56sHJuV.js → swimlanes-SLNWSIFB-Be5A0lwq.js} +9 -9
  64. package/dist/component/{swimlanesDiagram-ULZ7WXOC-nHtka4qn.js → swimlanesDiagram-ULZ7WXOC-J8VNaPhM.js} +13 -13
  65. package/dist/component/{timeline-definition-Z64GVDOM-JYR_6zGi.js → timeline-definition-Z64GVDOM-CU9PEkPY.js} +4 -4
  66. package/dist/component/{vennDiagram-T6HMQDX7-CEGGwXxv.js → vennDiagram-T6HMQDX7-Cno78tFK.js} +4 -4
  67. package/dist/component/{wardleyDiagram-T6FBY63Y-zZGm618Q.js → wardleyDiagram-T6FBY63Y-BEb1Rn5J.js} +4 -4
  68. package/dist/component/{xychartDiagram-ELKLHX3M-BYbnWmqD.js → xychartDiagram-ELKLHX3M-BwjMczCl.js} +7 -7
  69. package/dist/components/embed/EmbedRail.d.ts +8 -1
  70. package/dist/components/embed/NextStepCard.d.ts +6 -0
  71. package/dist/components/embed/QuotaNoticeCard.d.ts +4 -0
  72. package/dist/components/embed/SessionSwitcher.d.ts +6 -1
  73. package/dist/components/embed/quota-notice-copy.d.ts +3 -0
  74. package/dist/components/scheduled/schedule-dialog-model.d.ts +2 -1
  75. package/dist/components/scheduled/schedule-format.d.ts +4 -1
  76. package/dist/components/vault/SecretPasteFeedback.d.ts +6 -0
  77. package/dist/components/vault/SecretsPanel.d.ts +23 -0
  78. package/dist/components/vault/vault-open.d.ts +3 -0
  79. package/dist/embed/goal-edit-command.d.ts +6 -1
  80. package/dist/embed/quota-notice.d.ts +9 -0
  81. package/dist/embed/theme.d.ts +10 -0
  82. package/dist/embed/voice/agent-spawn.d.ts +12 -2
  83. package/dist/embed/voice-call.d.ts +4 -1
  84. package/dist/i18n/messages/en.d.ts +55 -0
  85. package/dist/i18n/messages/surfaces/quota.d.ts +69 -0
  86. package/dist/i18n/messages/surfaces/scheduled.d.ts +32 -0
  87. package/dist/i18n/messages/surfaces/settings.d.ts +8 -0
  88. package/dist/i18n/messages/surfaces/stream.d.ts +4 -0
  89. package/dist/i18n/messages/surfaces/vault.d.ts +120 -0
  90. package/dist/lib/use-tab-leadership.d.ts +1 -0
  91. package/dist/routes/chat/history-cache.d.ts +5 -0
  92. package/dist/routes/chat/question-parts.d.ts +26 -0
  93. package/dist/routes/chat/queued-delivery.d.ts +20 -0
  94. package/dist/routes/chat/queued-messages.d.ts +15 -0
  95. package/dist/routes/chat/session-api.d.ts +52 -0
  96. package/dist/routes/chat/session-history-api.d.ts +9 -0
  97. package/dist/routes/chat/transcript-update.d.ts +45 -0
  98. package/dist/routes/chat/use-catch-up-on-return.d.ts +7 -0
  99. package/dist/routes/chat/use-next-step-suggestion.d.ts +38 -0
  100. package/dist/routes/chat/use-quota-notice.d.ts +29 -0
  101. package/dist/routes/chat/use-quota-stop-refresh.d.ts +27 -0
  102. package/dist/routes/chat/use-session-goal.d.ts +6 -0
  103. package/dist/routes/chat.d.ts +9 -15
  104. package/dist/stream/belong-chat-transport.d.ts +17 -2
  105. package/dist/stream/belong-data-parts.d.ts +31 -1
  106. package/dist/stream/provider-blocked.d.ts +16 -0
  107. package/package.json +1 -1
  108. package/dist/component/flowDiagram-UKHOOZJN-U55NEBew.js +0 -19
@@ -11,9 +11,10 @@ export type ScheduleDialogInputs = {
11
11
  /** Only meaningful when `recurrence === "interval"`; carried always so the
12
12
  * control keeps its value while the user toggles kinds. */
13
13
  readonly intervalMinutes: number;
14
+ readonly weekdays: number[];
14
15
  };
15
16
  export type ScheduleEditorValue = Pick<TaskScheduleDetail, "explicitTitle" | "message" | "anchorAt" | "timezone" | "recurrence"> & {
16
17
  readonly nextRunAt?: string | null;
17
18
  };
18
19
  export declare const scheduleDialogInputs: (schedule: ScheduleEditorValue) => ScheduleDialogInputs;
19
- export declare const scheduleTimeShapeChanged: (schedule: ScheduleEditorValue, input: Pick<ScheduleDialogInputs, "date" | "time" | "timezone" | "recurrence" | "intervalMinutes">) => boolean;
20
+ export declare const scheduleTimeShapeChanged: (schedule: ScheduleEditorValue, input: Pick<ScheduleDialogInputs, "date" | "time" | "timezone" | "recurrence" | "intervalMinutes" | "weekdays">) => boolean;
@@ -8,6 +8,8 @@ export declare const weekdayIn: (timezone: string, iso: string, locale: Locale)
8
8
  export declare const dateTimeLocal: (iso: string, locale: Locale) => string;
9
9
  /** Non-null when the schedule's zone differs from the viewer's (shown as a suffix). */
10
10
  export declare const foreignTimezone: (timezone: string) => string | null;
11
+ /** Monday-first names, independent of the viewer's timezone. */
12
+ export declare const selectedWeekdayNames: (weekdays: readonly number[], locale: Locale, width?: "short" | "long") => string[];
11
13
  /** i18n params for the recurrence summary line, keyed by kind. */
12
14
  export declare const recurrenceSummaryParams: (input: {
13
15
  readonly kind: RecurrenceKind;
@@ -17,8 +19,9 @@ export declare const recurrenceSummaryParams: (input: {
17
19
  readonly locale: Locale;
18
20
  /** Interval width — only read for the `interval` kind. */
19
21
  readonly intervalMinutes: number | null;
22
+ readonly weekdays?: readonly number[] | null;
20
23
  }) => {
21
- readonly key: `scheduled.summary${"Once" | "Daily" | "Weekdays" | "Weekly" | "Interval" | "Manual"}`;
24
+ readonly key: `scheduled.summary${"Once" | "Daily" | "Weekdays" | "Weekly" | "CustomWeekly" | "Interval" | "Manual"}`;
22
25
  readonly time: string;
23
26
  readonly day: string;
24
27
  /** Interval width for the `Interval` message (0 for other kinds). */
@@ -0,0 +1,6 @@
1
+ export declare function SecretPasteFeedback({ text, onReplace, blocked, disabled, }: {
2
+ readonly text?: string;
3
+ readonly onReplace?: (value: string, reference: string) => void;
4
+ readonly blocked?: boolean;
5
+ readonly disabled?: boolean;
6
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,23 @@
1
+ import { VaultSecretSummary, VaultSecretKind } from '@belong/codec/vault';
2
+ type Editor = {
3
+ readonly kind: "add";
4
+ } | {
5
+ readonly kind: "replace";
6
+ readonly secret: VaultSecretSummary;
7
+ };
8
+ export declare function SecretEditor({ editor, onDone, initialSecret, inline, disabled, }: {
9
+ readonly editor: Editor;
10
+ readonly onDone: (reference?: string) => void;
11
+ readonly initialSecret?: {
12
+ readonly name: string;
13
+ readonly kind: VaultSecretKind;
14
+ readonly value: string;
15
+ };
16
+ readonly inline?: boolean;
17
+ readonly disabled?: boolean;
18
+ }): import("react").JSX.Element;
19
+ /** Metadata-only query cache; each editor owns its value until save or unmount. */
20
+ export declare function SecretsPanel({ initialAdd }: {
21
+ readonly initialAdd?: boolean;
22
+ }): import("react").JSX.Element;
23
+ export {};
@@ -0,0 +1,3 @@
1
+ /** Opens the existing account dialog at Add secret. Never carries secret text. */
2
+ export declare const requestAddSecret: () => void;
3
+ export declare const subscribeAddSecret: (listener: () => void) => (() => void);
@@ -21,6 +21,11 @@ export declare const goalEditRequestBody: (command: GoalEditCommand) => GoalEdit
21
21
  * cap that un-stalled a `budget_limited` goal) gets its own copy distinct
22
22
  * from a plain edit — see `GoalActionOutcome`'s `revived` flag — and one
23
23
  * that left the goal `budget_limited` says it is still stopped (#766).
24
+ *
25
+ * Console P1 — `statusReason` is the goal's reason AFTER the edit. A goal the
26
+ * monthly token quota keeps stopped has no cap to raise (`exhaustedBudgets`
27
+ * is empty), so "every limit it reached has to go above…" would be untrue:
28
+ * it says the plain "Goal updated." and the orange notice card explains.
24
29
  */
25
- export declare const goalEditNoticeText: (t: TFunction, outcome: GoalEditOutcome) => string;
30
+ export declare const goalEditNoticeText: (t: TFunction, outcome: GoalEditOutcome, statusReason?: string | null) => string;
26
31
  export {};
@@ -0,0 +1,9 @@
1
+ import { QuotaRefusal } from '../api/quota-refusal.ts';
2
+ /**
3
+ * Console P1 (TS-DOCK-01) — classify a failed send handed to `useChat`'s
4
+ * `onError` as a monthly-quota refusal (the body schema and its rules live in
5
+ * `api/quota-refusal.ts`). `null` when it is not one — the goal and generic
6
+ * error paths still own it. The goal classifier (`goal-cap-notice.ts`)
7
+ * returns `null` for this body, so the two never both claim one failure.
8
+ */
9
+ export declare const quotaNoticeFromError: (error: unknown) => QuotaRefusal | null;
@@ -39,6 +39,16 @@ export declare const peekCustomCssVars: () => Record<string, string>;
39
39
  export declare const activePalette: (theme: BelongTheme) => BelongThemePalette;
40
40
  /** Pick a readable foreground (near-black or white) for text on `color`. */
41
41
  export declare const contrastForeground: (color: string) => string;
42
+ /** WCAG contrast ratio of two colours, or null when either can't be parsed. */
43
+ export declare const contrastRatio: (first: string, second: string) => number | null;
44
+ /**
45
+ * The background of inline code in the user's bubble. The chip's text is the
46
+ * bubble's own, so the chip must be derived from that pair: any fixed grey goes
47
+ * unreadable on some bubble (white text on a pale chip, on a bright accent).
48
+ * A roomy pair gets a gentle tint; a tight one moves away from the text until
49
+ * the code is readable, even when the bubble's own text falls short of AA.
50
+ */
51
+ export declare const userBubbleCodeBackground: (bubble: string, foreground: string) => string;
42
52
  /** Recolor only the brand/primary family with `accent`; leave bg/text/border. */
43
53
  export declare const applyAccent: (palette: BelongThemePalette, accent: string) => BelongThemePalette;
44
54
  export declare const toggleThemeMode: () => void;
@@ -31,8 +31,18 @@ export type SpawnAgentLineResult = {
31
31
  * they got exactly that. The caller must not navigate and must not surface a
32
32
  * message. Distinct from `create_failed` precisely so it can be told apart.
33
33
  */
34
+ /**
35
+ * `superseded` is quiet too: the mint succeeded, but the user went to another
36
+ * chat while it was out. The agent keeps its chip; nothing may navigate.
37
+ */
34
38
  | {
35
39
  readonly ok: false;
36
- readonly reason: "cap_reached" | "create_failed" | "line_released";
40
+ readonly reason: "cap_reached" | "create_failed" | "line_released" | "superseded";
37
41
  };
38
- export declare const spawnAgentLine: (fetchFn?: typeof fetch) => Promise<SpawnAgentLineResult>;
42
+ /**
43
+ * `onLineReserved` runs synchronously once the line is reserved and BEFORE the
44
+ * mint's round trip, so the dock can show the new chat on the click itself. It
45
+ * does not run when the spawn is refused up front (at the cap, or no workspace).
46
+ */
47
+ export type SpawnAgent = (onLineReserved: (line: number) => void) => Promise<SpawnAgentLineResult>;
48
+ export declare const spawnAgentLine: (fetchFn?: typeof fetch, onLineReserved?: (line: number) => void) => Promise<SpawnAgentLineResult>;
@@ -273,8 +273,11 @@ export declare const deliverAgentReply: (text: string) => void;
273
273
  * ChatRoute calls this when the delegated run FAILS (stream error, run_error).
274
274
  * Without it the call stays silently "Working…" forever — the voice agent
275
275
  * must tell the user something went wrong and offer to retry.
276
+ *
277
+ * `nextStep`: what the voice offers. A refused answer (#974) is not fixed by
278
+ * asking again, so it points at a new conversation, as the dock's notice does.
276
279
  */
277
- export declare const deliverAgentFailure: (message: string) => void;
280
+ export declare const deliverAgentFailure: (message: string, nextStep?: "try_again" | "new_conversation") => void;
278
281
  /** A background line finished: converge its chip. Nothing is spoken — see
279
282
  * this section's header. */
280
283
  export declare const deliverLineReply: (line: number) => void;
@@ -239,10 +239,22 @@ export declare const en: {
239
239
  readonly reconnectingBadge: "reconnecting";
240
240
  readonly incompleteTask: "Paused — unfinished";
241
241
  readonly resumingAfterPause: "Taking longer than expected — picking it back up…";
242
+ readonly answerBlocked: "That answer was blocked before it finished. You can start a new conversation. If it keeps happening, contact support.";
242
243
  readonly open: "Open";
243
244
  readonly reconnectRateLimited: "{{provider}} is busy — trying again automatically in {{seconds}}s.";
244
245
  readonly reconnectRateLimitedStill: "{{provider}} is still busy. We'll keep trying on our own.";
245
246
  };
247
+ readonly quota: {
248
+ readonly notice: {
249
+ readonly exhausted: "You've used this month's tokens for {{product}}. They reset on {{resetDate}}. Ask your {{product}} admin if you need more.";
250
+ readonly exhaustedNoDate: "You've used this month's tokens for {{product}}. Ask your {{product}} admin if you need more.";
251
+ readonly exhaustedNoProduct: "You've used this month's tokens. They reset on {{resetDate}}. Ask your admin if you need more.";
252
+ readonly exhaustedNoProductNoDate: "You've used this month's tokens. Ask your admin if you need more.";
253
+ readonly blocked: "Your access to the agent in {{product}} is paused. Ask your {{product}} admin to turn it back on.";
254
+ readonly blockedNoProduct: "Your access to the agent is paused. Ask your admin to turn it back on.";
255
+ readonly scheduleSkipped: "Skipped: this month's tokens are used up.";
256
+ };
257
+ };
246
258
  readonly myUsage: {
247
259
  readonly thisMonth: "This month";
248
260
  readonly today: "Today";
@@ -375,6 +387,8 @@ export declare const en: {
375
387
  usageDescription: string;
376
388
  about: string;
377
389
  aboutDescription: string;
390
+ secrets: string;
391
+ secretsDescription: string;
378
392
  apiKeys: string;
379
393
  apiKeysDescription: string;
380
394
  guide: string;
@@ -503,10 +517,12 @@ export declare const en: {
503
517
  readonly sharedConflict: "Someone updated this task while you were editing. Your text is still here. Copy any changes you want to keep, then reopen the editor to load the latest version.";
504
518
  readonly sharedReadOnly: "You no longer have edit access. Your unsaved changes are still here.";
505
519
  readonly templateUnavailable: "The linked HTML template could not be read. Ask the owner to restore it, then resume this task.";
520
+ readonly sharedOwnerUnavailable: "This shared task is unavailable right now. Resume it when its owner's workspace is back.";
506
521
  readonly cliReconnectRequired: "Simetrik couldn't be reached during this run. It reconnects on its own the next time you open Simetrik.";
507
522
  readonly deliveryFailed: "The task ran but couldn't send its result: every message or email it tried to send failed. Check that its Slack, Teams or email connection is still connected.";
508
523
  readonly cliUnavailable: "Simetrik didn't respond during this run, so nothing could be checked and no email was sent.";
509
524
  readonly emailNotPrepared: "This run ended before it finished its check, so no email was sent. Open the run to see what stopped it.";
525
+ readonly runIncomplete: "This run stopped before it finished, so its work may be partial. Open its conversation to see where it stopped.";
510
526
  readonly viewTitle: "Scheduled";
511
527
  readonly subtitle: "Run work automatically, even when you're away";
512
528
  readonly newTask: "New task";
@@ -519,6 +535,7 @@ export declare const en: {
519
535
  readonly loading: "Loading scheduled tasks…";
520
536
  readonly empty: "No scheduled tasks yet";
521
537
  readonly emptyHint: "Create one to run a prompt later — once or on a repeating schedule.";
538
+ readonly emptyProjectHint: "Or start a project to share tasks and files with your team.";
522
539
  readonly noResults: "No matches for “{{q}}”";
523
540
  readonly loadError: "Couldn't load scheduled tasks.";
524
541
  readonly loadMore: "Load more";
@@ -573,6 +590,10 @@ export declare const en: {
573
590
  readonly summaryDaily: "Daily at {{time}}";
574
591
  readonly summaryWeekdays: "Weekdays at {{time}}";
575
592
  readonly summaryWeekly: "Every {{day}} at {{time}}";
593
+ readonly recurrenceCustomWeekly: "Custom weekly";
594
+ readonly weekdaysLabel: "Days of the week";
595
+ readonly daysRequired: "Select at least one day.";
596
+ readonly summaryCustomWeekly: "Every {{day}} at {{time}}";
576
597
  readonly summaryInterval: "Every {{minutes}} min";
577
598
  readonly summaryManual: "Manual only";
578
599
  readonly timezoneSuffix: "({{timezone}})";
@@ -631,6 +652,7 @@ export declare const en: {
631
652
  readonly runStatusNeedsAttention: "Needs attention";
632
653
  readonly runStatusCompleted: "Completed";
633
654
  readonly runStatusFailed: "Failed";
655
+ readonly runStatusStoppedEarly: "Stopped early";
634
656
  readonly runNeedsAttentionHint: "Waiting for your input.";
635
657
  readonly manualRun: "Manual run";
636
658
  readonly manualRunPaused: "Manual run while paused";
@@ -1392,6 +1414,34 @@ export declare const en: {
1392
1414
  readonly nextBranch: "Next branch";
1393
1415
  readonly branchPage: "{{current}} of {{total}}";
1394
1416
  };
1417
+ readonly vault: {
1418
+ readonly title: "Secrets";
1419
+ readonly description: "Save credentials for your own use across workspaces. Only their names and references are shown to the agent.";
1420
+ readonly add: "Add secret";
1421
+ readonly empty: "No secrets saved.";
1422
+ readonly loading: "Loading secrets…";
1423
+ readonly unavailable: "Secrets are unavailable here. Remove credentials from your message before sending.";
1424
+ readonly name: "Name";
1425
+ readonly nameHint: "Use lowercase letters, numbers and hyphens. Names cannot be changed.";
1426
+ readonly kind: "Kind";
1427
+ readonly apiKey: "API key";
1428
+ readonly pem: "PEM private key";
1429
+ readonly value: "Secret value";
1430
+ readonly save: "Save";
1431
+ readonly saveSecret: "Save secret";
1432
+ readonly captureHint: "Secret detected. Save it securely; only its reference will be included in your message.";
1433
+ readonly saving: "Saving…";
1434
+ readonly cancel: "Cancel";
1435
+ readonly replace: "Replace value";
1436
+ readonly delete: "Delete";
1437
+ readonly deleteConfirm: "Delete {{name}}? Commands using this reference will no longer work.";
1438
+ readonly nameTaken: "That name is already in use.";
1439
+ readonly notFound: "This secret no longer exists. Refresh and try again.";
1440
+ readonly invalidInput: "Check the name and secret value.";
1441
+ readonly requestFailed: "Could not update secrets. Try again.";
1442
+ readonly forbidden: "You do not have access to secrets.";
1443
+ readonly pasteBlocked: "This text looks like a credential. Remove it from your message and save it as a secret.";
1444
+ };
1395
1445
  readonly common: {
1396
1446
  readonly language: "Language";
1397
1447
  readonly retry: "Retry";
@@ -1668,6 +1718,8 @@ export declare const en: {
1668
1718
  readonly newGoal: "Start a new goal";
1669
1719
  readonly newGoalHint: "Say what the new goal should get done…";
1670
1720
  readonly exit: "Exit goal mode";
1721
+ readonly quotaHeadline: "Paused";
1722
+ readonly quotaDetail: "This month's tokens are used up";
1671
1723
  };
1672
1724
  readonly composerHint: "Tell it what to try instead…";
1673
1725
  };
@@ -1799,7 +1851,10 @@ export declare const en: {
1799
1851
  };
1800
1852
  readonly chat: {
1801
1853
  readonly queued: "Queued";
1854
+ readonly nextStepLabel: "Suggested next step";
1855
+ readonly nextStepDismiss: "Dismiss suggestion";
1802
1856
  readonly notDelivered: "Not delivered — please resend";
1857
+ readonly notSent: "Not sent";
1803
1858
  readonly runFailed: "Run failed";
1804
1859
  readonly uploadFailed: "Attachment upload failed — remove it or try again.";
1805
1860
  readonly uploadRejectedType: "“{{filename}}” isn’t a file type that can be attached — remove it. Text, data, config, code, document and image files work.";
@@ -0,0 +1,69 @@
1
+ /**
2
+ * The monthly token quota's refusal notice (TS-DOCK-03, DE-QTA-10).
3
+ *
4
+ * The server renders the same four-locale table for the notice's fallback
5
+ * text (`quota-notice-copy.ts` in belong-cloud), and a root parity test
6
+ * compares the two key by key — change one, change both.
7
+ *
8
+ * Copy rules (plan 018, CLAUDE.md §42): the unit is "tokens", never
9
+ * "weighted" / "ponderados" / "ponderati"; the copy never names Belong; it
10
+ * names the tenant's product, or — when a notice carries none — no product at
11
+ * all ("your admin"), never a stand-in noun.
12
+ *
13
+ * The `NoDate` / `NoProduct` variants are for a notice whose `resetsAt` or
14
+ * `productName` is missing or unreadable (every field but `kind` is optional
15
+ * on the wire, SAD §9). The server always sends both with `exhausted`, so it
16
+ * renders only `exhausted`, `blocked`, and `scheduleSkipped` itself.
17
+ */
18
+ export declare const quotaEn: {
19
+ readonly quota: {
20
+ readonly notice: {
21
+ readonly exhausted: "You've used this month's tokens for {{product}}. They reset on {{resetDate}}. Ask your {{product}} admin if you need more.";
22
+ readonly exhaustedNoDate: "You've used this month's tokens for {{product}}. Ask your {{product}} admin if you need more.";
23
+ readonly exhaustedNoProduct: "You've used this month's tokens. They reset on {{resetDate}}. Ask your admin if you need more.";
24
+ readonly exhaustedNoProductNoDate: "You've used this month's tokens. Ask your admin if you need more.";
25
+ readonly blocked: "Your access to the agent in {{product}} is paused. Ask your {{product}} admin to turn it back on.";
26
+ readonly blockedNoProduct: "Your access to the agent is paused. Ask your admin to turn it back on.";
27
+ readonly scheduleSkipped: "Skipped: this month's tokens are used up.";
28
+ };
29
+ };
30
+ };
31
+ export declare const quotaEs: {
32
+ readonly quota: {
33
+ readonly notice: {
34
+ readonly exhausted: "Usaste los tokens de este mes para {{product}}. Se restablecen el {{resetDate}}. Si necesitas más, pídeselo a tu administrador de {{product}}.";
35
+ readonly exhaustedNoDate: "Usaste los tokens de este mes para {{product}}. Si necesitas más, pídeselo a tu administrador de {{product}}.";
36
+ readonly exhaustedNoProduct: "Usaste los tokens de este mes. Se restablecen el {{resetDate}}. Si necesitas más, pídeselo a tu administrador.";
37
+ readonly exhaustedNoProductNoDate: "Usaste los tokens de este mes. Si necesitas más, pídeselo a tu administrador.";
38
+ readonly blocked: "Tu acceso al agente en {{product}} está en pausa. Pídele a tu administrador de {{product}} que lo reactive.";
39
+ readonly blockedNoProduct: "Tu acceso al agente está en pausa. Pídele a tu administrador que lo reactive.";
40
+ readonly scheduleSkipped: "Omitida: se agotaron los tokens de este mes.";
41
+ };
42
+ };
43
+ };
44
+ export declare const quotaPt: {
45
+ readonly quota: {
46
+ readonly notice: {
47
+ readonly exhausted: "Você usou os tokens deste mês para {{product}}. Eles são renovados em {{resetDate}}. Se precisar de mais, fale com o administrador do {{product}}.";
48
+ readonly exhaustedNoDate: "Você usou os tokens deste mês para {{product}}. Se precisar de mais, fale com o administrador do {{product}}.";
49
+ readonly exhaustedNoProduct: "Você usou os tokens deste mês. Eles são renovados em {{resetDate}}. Se precisar de mais, fale com o seu administrador.";
50
+ readonly exhaustedNoProductNoDate: "Você usou os tokens deste mês. Se precisar de mais, fale com o seu administrador.";
51
+ readonly blocked: "Seu acesso ao agente no {{product}} está pausado. Peça ao administrador do {{product}} para reativá-lo.";
52
+ readonly blockedNoProduct: "Seu acesso ao agente está pausado. Peça ao seu administrador para reativá-lo.";
53
+ readonly scheduleSkipped: "Ignorada: os tokens deste mês acabaram.";
54
+ };
55
+ };
56
+ };
57
+ export declare const quotaIt: {
58
+ readonly quota: {
59
+ readonly notice: {
60
+ readonly exhausted: "Hai usato i token di questo mese per {{product}}. Si azzerano il giorno {{resetDate}}. Se te ne servono altri, chiedi all'amministratore di {{product}}.";
61
+ readonly exhaustedNoDate: "Hai usato i token di questo mese per {{product}}. Se te ne servono altri, chiedi all'amministratore di {{product}}.";
62
+ readonly exhaustedNoProduct: "Hai usato i token di questo mese. Si azzerano il giorno {{resetDate}}. Se te ne servono altri, chiedi al tuo amministratore.";
63
+ readonly exhaustedNoProductNoDate: "Hai usato i token di questo mese. Se te ne servono altri, chiedi al tuo amministratore.";
64
+ readonly blocked: "Il tuo accesso all'agente in {{product}} è in pausa. Chiedi all'amministratore di {{product}} di riattivarlo.";
65
+ readonly blockedNoProduct: "Il tuo accesso all'agente è in pausa. Chiedi al tuo amministratore di riattivarlo.";
66
+ readonly scheduleSkipped: "Saltata: i token di questo mese sono esauriti.";
67
+ };
68
+ };
69
+ };
@@ -57,10 +57,12 @@ export declare const scheduledEn: {
57
57
  readonly sharedConflict: "Someone updated this task while you were editing. Your text is still here. Copy any changes you want to keep, then reopen the editor to load the latest version.";
58
58
  readonly sharedReadOnly: "You no longer have edit access. Your unsaved changes are still here.";
59
59
  readonly templateUnavailable: "The linked HTML template could not be read. Ask the owner to restore it, then resume this task.";
60
+ readonly sharedOwnerUnavailable: "This shared task is unavailable right now. Resume it when its owner's workspace is back.";
60
61
  readonly cliReconnectRequired: "Simetrik couldn't be reached during this run. It reconnects on its own the next time you open Simetrik.";
61
62
  readonly deliveryFailed: "The task ran but couldn't send its result: every message or email it tried to send failed. Check that its Slack, Teams or email connection is still connected.";
62
63
  readonly cliUnavailable: "Simetrik didn't respond during this run, so nothing could be checked and no email was sent.";
63
64
  readonly emailNotPrepared: "This run ended before it finished its check, so no email was sent. Open the run to see what stopped it.";
65
+ readonly runIncomplete: "This run stopped before it finished, so its work may be partial. Open its conversation to see where it stopped.";
64
66
  readonly viewTitle: "Scheduled";
65
67
  readonly subtitle: "Run work automatically, even when you're away";
66
68
  readonly newTask: "New task";
@@ -73,6 +75,7 @@ export declare const scheduledEn: {
73
75
  readonly loading: "Loading scheduled tasks…";
74
76
  readonly empty: "No scheduled tasks yet";
75
77
  readonly emptyHint: "Create one to run a prompt later — once or on a repeating schedule.";
78
+ readonly emptyProjectHint: "Or start a project to share tasks and files with your team.";
76
79
  readonly noResults: "No matches for “{{q}}”";
77
80
  readonly loadError: "Couldn't load scheduled tasks.";
78
81
  readonly loadMore: "Load more";
@@ -127,6 +130,10 @@ export declare const scheduledEn: {
127
130
  readonly summaryDaily: "Daily at {{time}}";
128
131
  readonly summaryWeekdays: "Weekdays at {{time}}";
129
132
  readonly summaryWeekly: "Every {{day}} at {{time}}";
133
+ readonly recurrenceCustomWeekly: "Custom weekly";
134
+ readonly weekdaysLabel: "Days of the week";
135
+ readonly daysRequired: "Select at least one day.";
136
+ readonly summaryCustomWeekly: "Every {{day}} at {{time}}";
130
137
  readonly summaryInterval: "Every {{minutes}} min";
131
138
  readonly summaryManual: "Manual only";
132
139
  readonly timezoneSuffix: "({{timezone}})";
@@ -185,6 +192,7 @@ export declare const scheduledEn: {
185
192
  readonly runStatusNeedsAttention: "Needs attention";
186
193
  readonly runStatusCompleted: "Completed";
187
194
  readonly runStatusFailed: "Failed";
195
+ readonly runStatusStoppedEarly: "Stopped early";
188
196
  readonly runNeedsAttentionHint: "Waiting for your input.";
189
197
  readonly manualRun: "Manual run";
190
198
  readonly manualRunPaused: "Manual run while paused";
@@ -334,10 +342,12 @@ export declare const scheduledEs: {
334
342
  sharedConflict: string;
335
343
  sharedReadOnly: string;
336
344
  templateUnavailable: string;
345
+ sharedOwnerUnavailable: string;
337
346
  cliReconnectRequired: string;
338
347
  deliveryFailed: string;
339
348
  cliUnavailable: string;
340
349
  emailNotPrepared: string;
350
+ runIncomplete: string;
341
351
  viewTitle: string;
342
352
  subtitle: string;
343
353
  newTask: string;
@@ -350,6 +360,7 @@ export declare const scheduledEs: {
350
360
  loading: string;
351
361
  empty: string;
352
362
  emptyHint: string;
363
+ emptyProjectHint: string;
353
364
  noResults: string;
354
365
  loadError: string;
355
366
  loadMore: string;
@@ -404,6 +415,10 @@ export declare const scheduledEs: {
404
415
  summaryDaily: string;
405
416
  summaryWeekdays: string;
406
417
  summaryWeekly: string;
418
+ recurrenceCustomWeekly: string;
419
+ weekdaysLabel: string;
420
+ daysRequired: string;
421
+ summaryCustomWeekly: string;
407
422
  summaryInterval: string;
408
423
  summaryManual: string;
409
424
  timezoneSuffix: string;
@@ -462,6 +477,7 @@ export declare const scheduledEs: {
462
477
  runStatusNeedsAttention: string;
463
478
  runStatusCompleted: string;
464
479
  runStatusFailed: string;
480
+ runStatusStoppedEarly: string;
465
481
  runNeedsAttentionHint: string;
466
482
  manualRun: string;
467
483
  manualRunPaused: string;
@@ -611,10 +627,12 @@ export declare const scheduledPt: {
611
627
  sharedConflict: string;
612
628
  sharedReadOnly: string;
613
629
  templateUnavailable: string;
630
+ sharedOwnerUnavailable: string;
614
631
  cliReconnectRequired: string;
615
632
  deliveryFailed: string;
616
633
  cliUnavailable: string;
617
634
  emailNotPrepared: string;
635
+ runIncomplete: string;
618
636
  viewTitle: string;
619
637
  subtitle: string;
620
638
  newTask: string;
@@ -627,6 +645,7 @@ export declare const scheduledPt: {
627
645
  loading: string;
628
646
  empty: string;
629
647
  emptyHint: string;
648
+ emptyProjectHint: string;
630
649
  noResults: string;
631
650
  loadError: string;
632
651
  loadMore: string;
@@ -681,6 +700,10 @@ export declare const scheduledPt: {
681
700
  summaryDaily: string;
682
701
  summaryWeekdays: string;
683
702
  summaryWeekly: string;
703
+ recurrenceCustomWeekly: string;
704
+ weekdaysLabel: string;
705
+ daysRequired: string;
706
+ summaryCustomWeekly: string;
684
707
  summaryInterval: string;
685
708
  summaryManual: string;
686
709
  timezoneSuffix: string;
@@ -739,6 +762,7 @@ export declare const scheduledPt: {
739
762
  runStatusNeedsAttention: string;
740
763
  runStatusCompleted: string;
741
764
  runStatusFailed: string;
765
+ runStatusStoppedEarly: string;
742
766
  runNeedsAttentionHint: string;
743
767
  manualRun: string;
744
768
  manualRunPaused: string;
@@ -888,10 +912,12 @@ export declare const scheduledIt: {
888
912
  sharedConflict: string;
889
913
  sharedReadOnly: string;
890
914
  templateUnavailable: string;
915
+ sharedOwnerUnavailable: string;
891
916
  cliReconnectRequired: string;
892
917
  deliveryFailed: string;
893
918
  cliUnavailable: string;
894
919
  emailNotPrepared: string;
920
+ runIncomplete: string;
895
921
  viewTitle: string;
896
922
  subtitle: string;
897
923
  newTask: string;
@@ -904,6 +930,7 @@ export declare const scheduledIt: {
904
930
  loading: string;
905
931
  empty: string;
906
932
  emptyHint: string;
933
+ emptyProjectHint: string;
907
934
  noResults: string;
908
935
  loadError: string;
909
936
  loadMore: string;
@@ -958,6 +985,10 @@ export declare const scheduledIt: {
958
985
  summaryDaily: string;
959
986
  summaryWeekdays: string;
960
987
  summaryWeekly: string;
988
+ recurrenceCustomWeekly: string;
989
+ weekdaysLabel: string;
990
+ daysRequired: string;
991
+ summaryCustomWeekly: string;
961
992
  summaryInterval: string;
962
993
  summaryManual: string;
963
994
  timezoneSuffix: string;
@@ -1016,6 +1047,7 @@ export declare const scheduledIt: {
1016
1047
  runStatusNeedsAttention: string;
1017
1048
  runStatusCompleted: string;
1018
1049
  runStatusFailed: string;
1050
+ runStatusStoppedEarly: string;
1019
1051
  runNeedsAttentionHint: string;
1020
1052
  manualRun: string;
1021
1053
  manualRunPaused: string;
@@ -18,6 +18,8 @@ export declare const settingsEn: {
18
18
  usageDescription: string;
19
19
  about: string;
20
20
  aboutDescription: string;
21
+ secrets: string;
22
+ secretsDescription: string;
21
23
  apiKeys: string;
22
24
  apiKeysDescription: string;
23
25
  guide: string;
@@ -84,6 +86,8 @@ export declare const settingsEs: {
84
86
  usageDescription: string;
85
87
  about: string;
86
88
  aboutDescription: string;
89
+ secrets: string;
90
+ secretsDescription: string;
87
91
  apiKeys: string;
88
92
  apiKeysDescription: string;
89
93
  guide: string;
@@ -150,6 +154,8 @@ export declare const settingsPt: {
150
154
  usageDescription: string;
151
155
  about: string;
152
156
  aboutDescription: string;
157
+ secrets: string;
158
+ secretsDescription: string;
153
159
  apiKeys: string;
154
160
  apiKeysDescription: string;
155
161
  guide: string;
@@ -216,6 +222,8 @@ export declare const settingsIt: {
216
222
  usageDescription: string;
217
223
  about: string;
218
224
  aboutDescription: string;
225
+ secrets: string;
226
+ secretsDescription: string;
219
227
  apiKeys: string;
220
228
  apiKeysDescription: string;
221
229
  guide: string;
@@ -208,6 +208,7 @@ export declare const streamEn: {
208
208
  readonly reconnectingBadge: "reconnecting";
209
209
  readonly incompleteTask: "Paused — unfinished";
210
210
  readonly resumingAfterPause: "Taking longer than expected — picking it back up…";
211
+ readonly answerBlocked: "That answer was blocked before it finished. You can start a new conversation. If it keeps happening, contact support.";
211
212
  readonly open: "Open";
212
213
  readonly reconnectRateLimited: "{{provider}} is busy — trying again automatically in {{seconds}}s.";
213
214
  readonly reconnectRateLimitedStill: "{{provider}} is still busy. We'll keep trying on our own.";
@@ -412,6 +413,7 @@ export declare const streamEs: {
412
413
  reconnectingBadge: string;
413
414
  incompleteTask: string;
414
415
  resumingAfterPause: string;
416
+ answerBlocked: string;
415
417
  open: string;
416
418
  reconnectRateLimited: string;
417
419
  reconnectRateLimitedStill: string;
@@ -616,6 +618,7 @@ export declare const streamPt: {
616
618
  reconnectingBadge: string;
617
619
  incompleteTask: string;
618
620
  resumingAfterPause: string;
621
+ answerBlocked: string;
619
622
  open: string;
620
623
  reconnectRateLimited: string;
621
624
  reconnectRateLimitedStill: string;
@@ -820,6 +823,7 @@ export declare const streamIt: {
820
823
  reconnectingBadge: string;
821
824
  incompleteTask: string;
822
825
  resumingAfterPause: string;
826
+ answerBlocked: string;
823
827
  open: string;
824
828
  reconnectRateLimited: string;
825
829
  reconnectRateLimitedStill: string;