@belonguniverseai/react-sdk 0.6.31 → 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 (125) hide show
  1. package/dist/api/account-connectors.d.ts +2 -2
  2. package/dist/api/client.d.ts +1126 -63
  3. package/dist/api/goals.d.ts +4 -4
  4. package/dist/api/guide.d.ts +15 -0
  5. package/dist/api/query-keys.d.ts +6 -5
  6. package/dist/api/quota-refusal.d.ts +49 -0
  7. package/dist/api/secret-paste.d.ts +5 -0
  8. package/dist/api/suggestions.d.ts +18 -0
  9. package/dist/api/task-schedule-sharing.d.ts +13 -1
  10. package/dist/api/task-schedules.d.ts +33 -4
  11. package/dist/api/vault.d.ts +49 -0
  12. package/dist/app/dock-story-data.d.ts +6 -0
  13. package/dist/component/{abnfDiagram-N423BO3Z-C_vMQSL0.js → abnfDiagram-N423BO3Z-CK4wvzwz.js} +4 -4
  14. package/dist/component/{architectureDiagram-T3A2C74G-dvNbgSIj.js → architectureDiagram-T3A2C74G-DoljsqqO.js} +6 -6
  15. package/dist/component/{blockDiagram-VBNYF7ZC-CRm9PRRf.js → blockDiagram-VBNYF7ZC-Ie7SErpH.js} +8 -8
  16. package/dist/component/{c4Diagram-5PPSVZJV-B1PMAZEg.js → c4Diagram-5PPSVZJV-rfEof5mj.js} +4 -4
  17. package/dist/component/{channel-Boj1wmAa.js → channel-C5ABP6lE.js} +2 -2
  18. package/dist/component/{chunk-2GRJ4B5K-CBAw5kla.js → chunk-2GRJ4B5K-CWOCv67u.js} +2 -2
  19. package/dist/component/{chunk-3NCLNEKW-BuxgmuBS.js → chunk-3NCLNEKW-BJYANBvv.js} +2 -2
  20. package/dist/component/{chunk-4I5QYGJK-CDPqoPOq.js → chunk-4I5QYGJK-C29OfER5.js} +2 -2
  21. package/dist/component/{chunk-5RXB4S5H-fv_mFlec.js → chunk-5RXB4S5H-D__NH4Op.js} +6 -6
  22. package/dist/component/{chunk-6Q2QTUOP-RU5jVXsd.js → chunk-6Q2QTUOP-BgSQgII8.js} +3 -3
  23. package/dist/component/{chunk-7Z6QIM7H-BgV4nQ80.js → chunk-7Z6QIM7H-vNexNF_V.js} +8 -8
  24. package/dist/component/{chunk-GF5L2VYU-CSROQiBr.js → chunk-GF5L2VYU-D3vxqomE.js} +6 -6
  25. package/dist/component/{chunk-I66GZJ75-CGsmSAKB.js → chunk-I66GZJ75-Dkw1ISGd.js} +2 -2
  26. package/dist/component/{chunk-J7OUQ5F2-D0GPh9LA.js → chunk-J7OUQ5F2-dC67pJWg.js} +7 -7
  27. package/dist/component/{chunk-JQJVKLGR-D4zeU7rQ.js → chunk-JQJVKLGR-Djj9TdhH.js} +8 -8
  28. package/dist/component/{chunk-KBJHAD2P-_EJQ1rNN.js → chunk-KBJHAD2P-dwIA6Vmi.js} +2 -2
  29. package/dist/component/{chunk-NSK5VX7P-dusZw8pp.js → chunk-NSK5VX7P-thQxjtNK.js} +2 -2
  30. package/dist/component/{chunk-QR6OTTB3-Bb0pFQ-m.js → chunk-QR6OTTB3-OMd-rgNj.js} +7 -7
  31. package/dist/component/{chunk-UBXNYLIW-CJHU4Dfa.js → chunk-UBXNYLIW-D26S6zO6.js} +3 -3
  32. package/dist/component/{chunk-W5SLKNZC-CRG_NQXu.js → chunk-W5SLKNZC-DLV7M8by.js} +2 -2
  33. package/dist/component/{chunk-WRU74C26-D8hrtupL.js → chunk-WRU74C26-13bvIAgD.js} +4 -4
  34. package/dist/component/{classDiagram-JCYQIIEL-CIgvdG3B.js → classDiagram-JCYQIIEL-BFQ72AZA.js} +13 -13
  35. package/dist/component/{classDiagram-v2-OCEON4UE-CyMNFCrX.js → classDiagram-v2-OCEON4UE-UFfArXpP.js} +13 -13
  36. package/dist/component/{component-CtEw7QuU.js → component-Bhs6PFPY.js} +42587 -40222
  37. package/dist/component/{cynefinDiagram-MW4NZA55-M_mUz7fS.js → cynefinDiagram-MW4NZA55-Bgfw8c41.js} +4 -4
  38. package/dist/component/{dagre-VZM6K2ZE-Co5UZ6ZI.js → dagre-VZM6K2ZE-CQoUcF3S.js} +9 -9
  39. package/dist/component/{diagram-7IWD3JNH-Bfgrgw1x.js → diagram-7IWD3JNH-C8-mvAEv.js} +5 -5
  40. package/dist/component/{diagram-B4RE2ZJO-On8y3Dsu.js → diagram-B4RE2ZJO-BATqCIx3.js} +3 -3
  41. package/dist/component/{diagram-LBJQPF4R-CzDYf7jJ.js → diagram-LBJQPF4R-DwRMRXWz.js} +4 -4
  42. package/dist/component/{diagram-Q27KOJAE-D2MlvnqP.js → diagram-Q27KOJAE-D6gO0LTm.js} +6 -6
  43. package/dist/component/{diagram-UB23O5K3-Bl3kdzTb.js → diagram-UB23O5K3-4nOrWHql.js} +4 -4
  44. package/dist/component/{ebnfDiagram-BXEA7PRR-CyKWxoNI.js → ebnfDiagram-BXEA7PRR-DCO-Nj3k.js} +4 -4
  45. package/dist/component/{erDiagram-JOGREHBK-B2DjPQI6.js → erDiagram-JOGREHBK-hWtImhPN.js} +12 -12
  46. package/dist/component/flowDiagram-UKHOOZJN-8qLgX2Wv.js +19 -0
  47. package/dist/component/{ganttDiagram-PKOTCBZU-Do3-h4U7.js → ganttDiagram-PKOTCBZU-BE8Mqoej.js} +3 -3
  48. package/dist/component/{gitGraphDiagram-DS77QQ5N-CRyn9FyP.js → gitGraphDiagram-DS77QQ5N-DURS7rAN.js} +3 -3
  49. package/dist/component/index.js +2 -2
  50. package/dist/component/{infoDiagram-6WML65LV-BvRo6Umd.js → infoDiagram-6WML65LV-BqBxR6YB.js} +3 -3
  51. package/dist/component/{ishikawaDiagram-WSZJBQD7-DNxrL1bn.js → ishikawaDiagram-WSZJBQD7-CnYZd1Dq.js} +4 -4
  52. package/dist/component/{journeyDiagram-NVQOT4AX-Cvzr6jFA.js → journeyDiagram-NVQOT4AX-Cgkpx4Qx.js} +3 -3
  53. package/dist/component/{kanban-definition-27J2QSJJ-CWjHCc6Q.js → kanban-definition-27J2QSJJ-CJSdhT0i.js} +9 -9
  54. package/dist/component/{line-qLTHZib7.js → line-BBEHlpsV.js} +2 -2
  55. package/dist/component/{mindmap-definition-FAOFIHXS-CTrxLLMf.js → mindmap-definition-FAOFIHXS-DgHouLA-.js} +11 -11
  56. package/dist/component/{pegDiagram-VL7TDLO6-DKquwTLr.js → pegDiagram-VL7TDLO6-B_iGQ6sI.js} +4 -4
  57. package/dist/component/{pieDiagram-7S7Q4E2Y-B9mrWWER.js → pieDiagram-7S7Q4E2Y-g7GxM0JA.js} +4 -4
  58. package/dist/component/{quadrantDiagram-CIZ2JOQS-CLMlPfFg.js → quadrantDiagram-CIZ2JOQS-Bp7z4raq.js} +2 -2
  59. package/dist/component/{railroadDiagram-AXF67PYL-DBRxaZy0.js → railroadDiagram-AXF67PYL-CYx3PP5o.js} +4 -4
  60. package/dist/component/{requirementDiagram-LRYGKXZP-DFbNp-NQ.js → requirementDiagram-LRYGKXZP-BJNRJceo.js} +11 -11
  61. package/dist/component/{sankeyDiagram-W5VNT64P-Ba10c9Ya.js → sankeyDiagram-W5VNT64P-Cf0tVHbW.js} +2 -2
  62. package/dist/component/{sequenceDiagram-SI44F4Z6-CakxF9z5.js → sequenceDiagram-SI44F4Z6-BsAsKMRH.js} +4 -4
  63. package/dist/component/{stateDiagram-OKZ733FA-DpwaZHAD.js → stateDiagram-OKZ733FA-Bpk0vtTK.js} +14 -14
  64. package/dist/component/{stateDiagram-v2-UEYNNEHI-CXLHj_sq.js → stateDiagram-v2-UEYNNEHI-CJFoUvD2.js} +13 -13
  65. package/dist/component/{swimlanes-SLNWSIFB-CLLLQ7CI.js → swimlanes-SLNWSIFB-Be5A0lwq.js} +9 -9
  66. package/dist/component/{swimlanesDiagram-ULZ7WXOC-B1LbGSCS.js → swimlanesDiagram-ULZ7WXOC-J8VNaPhM.js} +13 -13
  67. package/dist/component/{timeline-definition-Z64GVDOM-BsifI4rA.js → timeline-definition-Z64GVDOM-CU9PEkPY.js} +4 -4
  68. package/dist/component/{vennDiagram-T6HMQDX7-zuVcjY9p.js → vennDiagram-T6HMQDX7-Cno78tFK.js} +4 -4
  69. package/dist/component/{wardleyDiagram-T6FBY63Y-B9DV6RwN.js → wardleyDiagram-T6FBY63Y-BEb1Rn5J.js} +4 -4
  70. package/dist/component/{xychartDiagram-ELKLHX3M-FyZaGaUV.js → xychartDiagram-ELKLHX3M-BwjMczCl.js} +7 -7
  71. package/dist/components/ai-elements/dock-link.d.ts +14 -1
  72. package/dist/components/ai-elements/message.d.ts +8 -1
  73. package/dist/components/embed/EmbedRail.d.ts +8 -1
  74. package/dist/components/embed/NextStepCard.d.ts +6 -0
  75. package/dist/components/embed/QuotaNoticeCard.d.ts +4 -0
  76. package/dist/components/embed/SessionSwitcher.d.ts +6 -1
  77. package/dist/components/embed/quota-notice-copy.d.ts +3 -0
  78. package/dist/components/guide/GuideArticleView.d.ts +7 -0
  79. package/dist/components/guide/GuideHub.d.ts +9 -0
  80. package/dist/components/guide/GuideSettings.d.ts +23 -0
  81. package/dist/components/guide/figures/ComposerIndicatorsFigure.d.ts +16 -0
  82. package/dist/components/guide/figures/SharedTaskCopiesFigure.d.ts +12 -0
  83. package/dist/components/guide/figures/index.d.ts +3 -0
  84. package/dist/components/guide/guide-fixtures.d.ts +3 -0
  85. package/dist/components/guide/guide-icons.d.ts +3 -0
  86. package/dist/components/guide/guide-link.d.ts +12 -0
  87. package/dist/components/guide/guide-search.d.ts +15 -0
  88. package/dist/components/scheduled/schedule-dialog-model.d.ts +2 -1
  89. package/dist/components/scheduled/schedule-format.d.ts +4 -1
  90. package/dist/components/ui/button.d.ts +1 -1
  91. package/dist/components/ui/input-group.d.ts +1 -1
  92. package/dist/components/vault/SecretPasteFeedback.d.ts +6 -0
  93. package/dist/components/vault/SecretsPanel.d.ts +23 -0
  94. package/dist/components/vault/vault-open.d.ts +3 -0
  95. package/dist/embed/goal-edit-command.d.ts +6 -1
  96. package/dist/embed/quota-notice.d.ts +9 -0
  97. package/dist/embed/theme.d.ts +10 -0
  98. package/dist/embed/voice/agent-spawn.d.ts +12 -2
  99. package/dist/embed/voice-call.d.ts +4 -1
  100. package/dist/i18n/messages/en.d.ts +85 -0
  101. package/dist/i18n/messages/surfaces/guide.d.ts +131 -0
  102. package/dist/i18n/messages/surfaces/quota.d.ts +69 -0
  103. package/dist/i18n/messages/surfaces/scheduled.d.ts +32 -0
  104. package/dist/i18n/messages/surfaces/settings.d.ts +16 -0
  105. package/dist/i18n/messages/surfaces/stream.d.ts +4 -0
  106. package/dist/i18n/messages/surfaces/vault.d.ts +120 -0
  107. package/dist/lib/use-tab-leadership.d.ts +1 -0
  108. package/dist/routes/chat/history-cache.d.ts +5 -0
  109. package/dist/routes/chat/question-parts.d.ts +26 -0
  110. package/dist/routes/chat/queued-delivery.d.ts +20 -0
  111. package/dist/routes/chat/queued-messages.d.ts +15 -0
  112. package/dist/routes/chat/session-api.d.ts +52 -0
  113. package/dist/routes/chat/session-history-api.d.ts +9 -0
  114. package/dist/routes/chat/transcript-update.d.ts +45 -0
  115. package/dist/routes/chat/use-catch-up-on-return.d.ts +7 -0
  116. package/dist/routes/chat/use-next-step-suggestion.d.ts +38 -0
  117. package/dist/routes/chat/use-quota-notice.d.ts +29 -0
  118. package/dist/routes/chat/use-quota-stop-refresh.d.ts +27 -0
  119. package/dist/routes/chat/use-session-goal.d.ts +6 -0
  120. package/dist/routes/chat.d.ts +9 -15
  121. package/dist/stream/belong-chat-transport.d.ts +17 -2
  122. package/dist/stream/belong-data-parts.d.ts +31 -1
  123. package/dist/stream/provider-blocked.d.ts +16 -0
  124. package/package.json +1 -1
  125. package/dist/component/flowDiagram-UKHOOZJN-CjSeviPw.js +0 -19
@@ -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,8 +18,12 @@ 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;
25
+ guide: string;
26
+ guideDescription: string;
23
27
  apiKeysName: string;
24
28
  apiKeysCreate: string;
25
29
  apiKeysRevoke: string;
@@ -82,8 +86,12 @@ export declare const settingsEs: {
82
86
  usageDescription: string;
83
87
  about: string;
84
88
  aboutDescription: string;
89
+ secrets: string;
90
+ secretsDescription: string;
85
91
  apiKeys: string;
86
92
  apiKeysDescription: string;
93
+ guide: string;
94
+ guideDescription: string;
87
95
  apiKeysName: string;
88
96
  apiKeysCreate: string;
89
97
  apiKeysRevoke: string;
@@ -146,8 +154,12 @@ export declare const settingsPt: {
146
154
  usageDescription: string;
147
155
  about: string;
148
156
  aboutDescription: string;
157
+ secrets: string;
158
+ secretsDescription: string;
149
159
  apiKeys: string;
150
160
  apiKeysDescription: string;
161
+ guide: string;
162
+ guideDescription: string;
151
163
  apiKeysName: string;
152
164
  apiKeysCreate: string;
153
165
  apiKeysRevoke: string;
@@ -210,8 +222,12 @@ export declare const settingsIt: {
210
222
  usageDescription: string;
211
223
  about: string;
212
224
  aboutDescription: string;
225
+ secrets: string;
226
+ secretsDescription: string;
213
227
  apiKeys: string;
214
228
  apiKeysDescription: string;
229
+ guide: string;
230
+ guideDescription: string;
215
231
  apiKeysName: string;
216
232
  apiKeysCreate: string;
217
233
  apiKeysRevoke: 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;
@@ -0,0 +1,120 @@
1
+ export declare const vaultEn: {
2
+ readonly vault: {
3
+ readonly title: "Secrets";
4
+ readonly description: "Save credentials for your own use across workspaces. Only their names and references are shown to the agent.";
5
+ readonly add: "Add secret";
6
+ readonly empty: "No secrets saved.";
7
+ readonly loading: "Loading secrets…";
8
+ readonly unavailable: "Secrets are unavailable here. Remove credentials from your message before sending.";
9
+ readonly name: "Name";
10
+ readonly nameHint: "Use lowercase letters, numbers and hyphens. Names cannot be changed.";
11
+ readonly kind: "Kind";
12
+ readonly apiKey: "API key";
13
+ readonly pem: "PEM private key";
14
+ readonly value: "Secret value";
15
+ readonly save: "Save";
16
+ readonly saveSecret: "Save secret";
17
+ readonly captureHint: "Secret detected. Save it securely; only its reference will be included in your message.";
18
+ readonly saving: "Saving…";
19
+ readonly cancel: "Cancel";
20
+ readonly replace: "Replace value";
21
+ readonly delete: "Delete";
22
+ readonly deleteConfirm: "Delete {{name}}? Commands using this reference will no longer work.";
23
+ readonly nameTaken: "That name is already in use.";
24
+ readonly notFound: "This secret no longer exists. Refresh and try again.";
25
+ readonly invalidInput: "Check the name and secret value.";
26
+ readonly requestFailed: "Could not update secrets. Try again.";
27
+ readonly forbidden: "You do not have access to secrets.";
28
+ readonly pasteBlocked: "This text looks like a credential. Remove it from your message and save it as a secret.";
29
+ };
30
+ };
31
+ export declare const vaultEs: {
32
+ vault: {
33
+ title: string;
34
+ description: string;
35
+ add: string;
36
+ empty: string;
37
+ loading: string;
38
+ unavailable: string;
39
+ name: string;
40
+ nameHint: string;
41
+ kind: string;
42
+ apiKey: string;
43
+ pem: string;
44
+ value: string;
45
+ save: string;
46
+ saveSecret: string;
47
+ captureHint: string;
48
+ saving: string;
49
+ cancel: string;
50
+ replace: string;
51
+ delete: string;
52
+ deleteConfirm: string;
53
+ nameTaken: string;
54
+ notFound: string;
55
+ invalidInput: string;
56
+ requestFailed: string;
57
+ forbidden: string;
58
+ pasteBlocked: string;
59
+ };
60
+ };
61
+ export declare const vaultPt: {
62
+ vault: {
63
+ title: string;
64
+ description: string;
65
+ add: string;
66
+ empty: string;
67
+ loading: string;
68
+ unavailable: string;
69
+ name: string;
70
+ nameHint: string;
71
+ kind: string;
72
+ apiKey: string;
73
+ pem: string;
74
+ value: string;
75
+ save: string;
76
+ saveSecret: string;
77
+ captureHint: string;
78
+ saving: string;
79
+ cancel: string;
80
+ replace: string;
81
+ delete: string;
82
+ deleteConfirm: string;
83
+ nameTaken: string;
84
+ notFound: string;
85
+ invalidInput: string;
86
+ requestFailed: string;
87
+ forbidden: string;
88
+ pasteBlocked: string;
89
+ };
90
+ };
91
+ export declare const vaultIt: {
92
+ vault: {
93
+ title: string;
94
+ description: string;
95
+ add: string;
96
+ empty: string;
97
+ loading: string;
98
+ unavailable: string;
99
+ name: string;
100
+ nameHint: string;
101
+ kind: string;
102
+ apiKey: string;
103
+ pem: string;
104
+ value: string;
105
+ save: string;
106
+ saveSecret: string;
107
+ captureHint: string;
108
+ saving: string;
109
+ cancel: string;
110
+ replace: string;
111
+ delete: string;
112
+ deleteConfirm: string;
113
+ nameTaken: string;
114
+ notFound: string;
115
+ invalidInput: string;
116
+ requestFailed: string;
117
+ forbidden: string;
118
+ pasteBlocked: string;
119
+ };
120
+ };
@@ -2,5 +2,6 @@ import { TabRole } from './tab-leadership.ts';
2
2
  /** The persisted server id replaces a new Session's per-tab placeholder. */
3
3
  export declare const useTabLeadership: (chatId: string) => {
4
4
  readonly role: TabRole;
5
+ readonly ownedElsewhere: boolean;
5
6
  readonly requestControl: () => void;
6
7
  };
@@ -39,6 +39,11 @@ export declare const refreshNewestHistoryPage: (client: QueryClient, scope: Hist
39
39
  * and not marked stale by a turn that finished since.
40
40
  */
41
41
  export declare const peekNewestHistoryPage: (client: QueryClient, scope: HistoryScope) => LoadedHistoryPage | null;
42
+ /**
43
+ * A session this dock just created has no turns, so its newest page is known
44
+ * without asking. Opening it paints at once, with no spinner and no read.
45
+ */
46
+ export declare const seedEmptyNewestHistoryPage: (client: QueryClient, scope: HistoryScope) => void;
42
47
  /** A turn finished: the cached newest page no longer holds the chat's end. */
43
48
  export declare const markNewestHistoryPageStale: (client: QueryClient, scope: HistoryScope) => void;
44
49
  /** Drop every cached page of one chat (deleted), in any workspace. */
@@ -0,0 +1,26 @@
1
+ import { AnswerQuestionResult } from '../../api/questions.ts';
2
+ import { BelongUIMessage, ChoiceRequestData } from '../../stream/belong-data-parts.ts';
3
+ /**
4
+ * Plan 013 — rewrite the transcript's `data-choice-request` part for one
5
+ * question with its resolved shape, so the record reads exactly as it will
6
+ * after a reload (the history patch) without waiting for the wire; the live
7
+ * same-id part that follows overwrites it with the identical state. Every
8
+ * other message keeps its identity (no churn for the renderers).
9
+ */
10
+ export declare const patchChoicePart: (messages: readonly BelongUIMessage[], resolved: ChoiceRequestData) => BelongUIMessage[];
11
+ /**
12
+ * Plan 013 — Stop's local un-arm: the newest `pending` question flips to
13
+ * `cancelled`, exactly as the server's abort path flips its row. Walks the
14
+ * transcript itself rather than the derived card: X only HIDES a card in
15
+ * this tab, and a question hidden here is still cancelled by Stop — the
16
+ * record must read the same as it will after a reload (§41).
17
+ */
18
+ export declare const cancelPendingQuestion: (messages: readonly BelongUIMessage[]) => BelongUIMessage[];
19
+ /**
20
+ * Plan 013 — the part as the server's 409 says it settled: the row of record
21
+ * (another tab's answer / reply, a Stop's `cancelled`, a dismissal), which is
22
+ * what a reload would show — never an `answered` synthesised from nothing.
23
+ */
24
+ export declare const rowOfRecord: (question: ChoiceRequestData, settled: Extract<AnswerQuestionResult, {
25
+ reason: "already_resolved";
26
+ }>) => ChoiceRequestData;
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { BelongChatTransport } from '../../stream/belong-chat-transport.ts';
3
+ import { QuotaNoticeData } from '../../stream/belong-data-parts.ts';
4
+ import { QueuedMessageOutboxEntry } from '../../stream/queued-message-outbox.ts';
5
+ declare const postMessageResponseSchema: z.ZodObject<{
6
+ messageId: z.ZodString;
7
+ taskId: z.ZodString;
8
+ runId: z.ZodString;
9
+ idempotent: z.ZodBoolean;
10
+ }, z.core.$strip>;
11
+ type QueuedMessageAccepted = z.infer<typeof postMessageResponseSchema> & {
12
+ readonly kind: "accepted";
13
+ };
14
+ export type QueuedMessagePostOwner = {
15
+ readonly kind: "queued-message-post-owner";
16
+ };
17
+ export declare const releaseQueuedMessagePostOwner: (owner: QueuedMessagePostOwner) => void;
18
+ export declare const persistAndPostQueuedMessage: (apiBaseUrl: string, entry: QueuedMessageOutboxEntry, owner: QueuedMessagePostOwner, onFailure: () => void, onAccepted?: (result: QueuedMessageAccepted) => void, onQuotaRefused?: (notice: QuotaNoticeData) => void) => void;
19
+ export declare const persistNewQueuedMessage: (apiBaseUrl: string, entry: QueuedMessageOutboxEntry, owner: QueuedMessagePostOwner, replayedIds: Set<string>, onFailure: () => void, onQuotaRefused: (notice: QuotaNoticeData) => void, timingTransport?: BelongChatTransport) => void;
20
+ export {};
@@ -0,0 +1,15 @@
1
+ import { BelongUIMessage, QuotaNoticeData } from '../../stream/belong-data-parts.ts';
2
+ export type QueuedMessage = {
3
+ readonly clientId: string;
4
+ readonly text: string;
5
+ readonly submittedAt: number;
6
+ } & ({
7
+ readonly state: "queued" | "failed";
8
+ } | {
9
+ readonly state: "quota_refused";
10
+ readonly notice: QuotaNoticeData;
11
+ });
12
+ export declare const queuedTurnHasReply: (history: readonly BelongUIMessage[], text: string) => boolean;
13
+ export declare const dropQueuedLandedIn: (history: readonly BelongUIMessage[]) => (prev: readonly QueuedMessage[]) => readonly QueuedMessage[];
14
+ export declare const markQueuedFailed: (clientId: string) => (prev: readonly QueuedMessage[]) => readonly QueuedMessage[];
15
+ export declare const markQueuedQuotaRefused: (clientId: string, notice: QuotaNoticeData) => (prev: readonly QueuedMessage[]) => readonly QueuedMessage[];
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { ActiveRunLookup } from './use-catch-up-on-return.ts';
3
+ import { BelongChatTransport, RecalledQueuedMessage } from '../../stream/belong-chat-transport.ts';
4
+ type SessionApiResult = {
5
+ readonly ok: true;
6
+ readonly body: unknown;
7
+ } | {
8
+ readonly ok: false;
9
+ readonly status: number | null;
10
+ readonly body: unknown;
11
+ };
12
+ export declare const sessionApiFetch: (apiBaseUrl: string, sessionId: string, path: "messages" | "compact" | "clear" | "active-run", init?: RequestInit, query?: URLSearchParams) => Promise<SessionApiResult>;
13
+ declare const activeRunResponseSchema: z.ZodUnion<readonly [z.ZodNull, z.ZodObject<{
14
+ runId: z.ZodString;
15
+ status: z.ZodEnum<{
16
+ queued: "queued";
17
+ waiting_for_approval: "waiting_for_approval";
18
+ running: "running";
19
+ waiting_for_user: "waiting_for_user";
20
+ waiting_for_ui_action: "waiting_for_ui_action";
21
+ recovering: "recovering";
22
+ cancelling: "cancelling";
23
+ }>;
24
+ }, z.core.$strip>]>;
25
+ type ActiveRunInfo = z.infer<typeof activeRunResponseSchema>;
26
+ export declare const loadActiveRun: (apiBaseUrl: string, sessionId: string) => Promise<ActiveRunInfo>;
27
+ export declare const lookUpActiveRun: (apiBaseUrl: string, sessionId: string) => Promise<ActiveRunLookup>;
28
+ export declare const cancelRunForStop: (input: {
29
+ readonly apiBaseUrl: string;
30
+ readonly transport: BelongChatTransport;
31
+ readonly runId: string | null;
32
+ readonly sessionId: string | null;
33
+ }) => Promise<readonly RecalledQueuedMessage[]>;
34
+ type CompactOutcome = {
35
+ readonly status: "compacted";
36
+ readonly messagesCompacted: number;
37
+ } | {
38
+ readonly status: "noop";
39
+ } | {
40
+ readonly status: "busy";
41
+ } | {
42
+ readonly status: "error";
43
+ };
44
+ export declare const compactSession: (apiBaseUrl: string, sessionId: string) => Promise<CompactOutcome>;
45
+ export declare const compactNoticeText: (outcome: CompactOutcome) => string;
46
+ type ClearOutcome = {
47
+ readonly status: "cleared";
48
+ } | {
49
+ readonly status: "error";
50
+ };
51
+ export declare const clearSession: (apiBaseUrl: string, sessionId: string) => Promise<ClearOutcome>;
52
+ export {};
@@ -0,0 +1,9 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ import { HistoryPageResult, HistoryScope } from './history-cache.ts';
3
+ export declare const loadSessionHistory: (apiBaseUrl: string, sessionId: string, before?: string) => Promise<HistoryPageResult>;
4
+ /**
5
+ * Read a chat's newest page ahead of opening it (the Chats list's
6
+ * `SessionIntentContext`), so it opens painted from the cache. A chat kept
7
+ * live needs no read; a page read in the last 30 s is not read again.
8
+ */
9
+ export declare const prefetchChatHistory: (queryClient: QueryClient, apiBaseUrl: string, scope: HistoryScope) => void;
@@ -0,0 +1,45 @@
1
+ import { BelongUIMessage } from '../../stream/belong-data-parts.ts';
2
+ import { LoadedHistoryPage } from './history-cache.ts';
3
+ import { HistoryPaging } from './history-paging.ts';
4
+ export type TranscriptEvent = {
5
+ readonly kind: "history_restored";
6
+ readonly page: LoadedHistoryPage;
7
+ readonly onScreen: readonly BelongUIMessage[];
8
+ } | {
9
+ readonly kind: "caught_up";
10
+ readonly page: LoadedHistoryPage;
11
+ readonly caughtUp: BelongUIMessage[];
12
+ } | {
13
+ readonly kind: "compacted";
14
+ readonly page: LoadedHistoryPage;
15
+ } | {
16
+ readonly kind: "quota_stopped";
17
+ readonly page: LoadedHistoryPage;
18
+ } | {
19
+ readonly kind: "queued_reply_landed";
20
+ readonly history: readonly BelongUIMessage[];
21
+ /** Asked when React applies the update: a Clear or a new turn may come first. */
22
+ readonly canApply: () => boolean;
23
+ } | {
24
+ readonly kind: "older_page_loaded";
25
+ readonly page: LoadedHistoryPage;
26
+ readonly expectedFirstId: string;
27
+ } | {
28
+ readonly kind: "cleared";
29
+ } | {
30
+ readonly kind: "unsaved_chat_cleared";
31
+ };
32
+ type CursorUpdate = {
33
+ readonly kind: "keep";
34
+ } | {
35
+ readonly kind: "set";
36
+ readonly id: string | null;
37
+ };
38
+ export type TranscriptUpdate = {
39
+ readonly messages: BelongUIMessage[] | ((current: BelongUIMessage[]) => BelongUIMessage[]);
40
+ readonly paging: HistoryPaging | ((paging: HistoryPaging) => HistoryPaging) | null;
41
+ readonly historyThrough: CursorUpdate;
42
+ readonly spokenThrough: CursorUpdate;
43
+ };
44
+ export declare const transcriptUpdateFor: (event: TranscriptEvent) => TranscriptUpdate;
45
+ export {};
@@ -66,5 +66,12 @@ export declare const useCatchUpOnReturn: (input: {
66
66
  readonly controlRequestId?: number;
67
67
  readonly prepareControl?: (sessionId: string) => Promise<void>;
68
68
  readonly onControlReady?: (ready: boolean) => void;
69
+ /**
70
+ * This mount shows a session this tab created a moment ago. Its first
71
+ * promotion has nothing to catch up on, so writing is not held for the reads.
72
+ * Only the first: if control ever moves to another tab and back, this tab
73
+ * catches up like any other.
74
+ */
75
+ readonly justCreated?: boolean;
69
76
  readonly returnOptions?: Parameters<typeof useReturnToPage>[1];
70
77
  }) => void;