@belonguniverseai/react-sdk 0.6.21 → 0.6.22

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 (154) hide show
  1. package/README.md +69 -0
  2. package/dist/api/client.d.ts +667 -4
  3. package/dist/api/goals.d.ts +179 -0
  4. package/dist/api/issue-reports.d.ts +13 -0
  5. package/dist/api/query-keys.d.ts +18 -0
  6. package/dist/api/report-client-error.d.ts +3 -0
  7. package/dist/api/retry-fetch.d.ts +19 -0
  8. package/dist/api/skill-library.d.ts +100 -0
  9. package/dist/api/skills.d.ts +3 -1
  10. package/dist/app/dock-outlet.d.ts +15 -5
  11. package/dist/browser/allowed-ops.d.ts +18 -0
  12. package/dist/browser/host-mcp.d.ts +31 -0
  13. package/dist/component/{abnfDiagram-N423BO3Z-DZRUOUZQ.js → abnfDiagram-N423BO3Z-D4mVRMw9.js} +4 -4
  14. package/dist/component/{arc-B4biduil.js → arc-GBp6w3tF.js} +2 -2
  15. package/dist/component/{architectureDiagram-T3A2C74G-q8voStNN.js → architectureDiagram-T3A2C74G-Cxm-USYQ.js} +3 -3
  16. package/dist/component/{blockDiagram-VBNYF7ZC-C0TDyTgw.js → blockDiagram-VBNYF7ZC-BAiLpxJf.js} +4 -4
  17. package/dist/component/{c4Diagram-5PPSVZJV-rxRyd6rh.js → c4Diagram-5PPSVZJV-Sy6sLJOj.js} +3 -3
  18. package/dist/component/{channel-CUruDJSx.js → channel-DPbaAkCI.js} +2 -2
  19. package/dist/component/{chunk-2GRJ4B5K-Kff5Fvbi.js → chunk-2GRJ4B5K-8r8YJzCc.js} +2 -2
  20. package/dist/component/{chunk-2Q5K7J3B-BT3ZD31a.js → chunk-2Q5K7J3B-RZqny7-R.js} +2 -2
  21. package/dist/component/{chunk-5RXB4S5H-CYZ36tQD.js → chunk-5RXB4S5H-QFCY9Dtl.js} +5 -5
  22. package/dist/component/{chunk-5VM5RSS4-BweQRk7u.js → chunk-5VM5RSS4-BG8q5ODa.js} +2 -2
  23. package/dist/component/{chunk-6Q2QTUOP-DHcoXRhe.js → chunk-6Q2QTUOP-D6ec2nI7.js} +2 -2
  24. package/dist/component/{chunk-GF5L2VYU-DtE5ljCc.js → chunk-GF5L2VYU-D7yROYf0.js} +6 -6
  25. package/dist/component/{chunk-JWPE2WC7-ClHq4gN2.js → chunk-JWPE2WC7-CmGlHqne.js} +2 -2
  26. package/dist/component/{chunk-KBJHAD2P-BeCfHf5W.js → chunk-KBJHAD2P-W03s7swc.js} +2 -2
  27. package/dist/component/{chunk-RYQCIY6F-CuAngwHt.js → chunk-RYQCIY6F-D0oyMUJ7.js} +2 -2
  28. package/dist/component/{chunk-XXDRQBXY-D9c0CJyR.js → chunk-XXDRQBXY-D4s0eyp4.js} +2 -2
  29. package/dist/component/{classDiagram-JCYQIIEL-DdzIbKj1.js → classDiagram-JCYQIIEL-DwNAC2XG.js} +3 -3
  30. package/dist/component/{classDiagram-v2-OCEON4UE-DdzIbKj1.js → classDiagram-v2-OCEON4UE-DwNAC2XG.js} +3 -3
  31. package/dist/component/{cose-bilkent-JH36ORCC-hME9BYGm.js → cose-bilkent-JH36ORCC-DhGvXDdi.js} +2 -2
  32. package/dist/component/{cynefinDiagram-MW4NZA55-BiceKBPh.js → cynefinDiagram-MW4NZA55-BCUeX7pB.js} +3 -3
  33. package/dist/component/{dagre-VZM6K2ZE-DiPOLAUX.js → dagre-VZM6K2ZE-DWofHoga.js} +3 -3
  34. package/dist/component/{diagram-7IWD3JNH-BSDWgxjs.js → diagram-7IWD3JNH-DjCFF_Dr.js} +4 -4
  35. package/dist/component/{diagram-B4RE2ZJO-BdpGOPaT.js → diagram-B4RE2ZJO-CSovrpFW.js} +3 -3
  36. package/dist/component/{diagram-LBJQPF4R-B0V6_5ih.js → diagram-LBJQPF4R-Cgpae-sR.js} +3 -3
  37. package/dist/component/{diagram-Q27KOJAE-CYDb40TJ.js → diagram-Q27KOJAE-DikMPfLU.js} +4 -4
  38. package/dist/component/{diagram-UB23O5K3-DgwjRdl5.js → diagram-UB23O5K3-sQU6rZbO.js} +3 -3
  39. package/dist/component/{ebnfDiagram-BXEA7PRR-D-C7SWec.js → ebnfDiagram-BXEA7PRR-B9t8-G8R.js} +4 -4
  40. package/dist/component/{erDiagram-JOGREHBK-DLJCjcXM.js → erDiagram-JOGREHBK-DKg1HhSl.js} +5 -5
  41. package/dist/component/{flowDiagram-UKHOOZJN-BZfBucKB.js → flowDiagram-UKHOOZJN-BO8jpT1D.js} +7 -7
  42. package/dist/component/{ganttDiagram-PKOTCBZU-CxTHmusv.js → ganttDiagram-PKOTCBZU-BPXYyB9Q.js} +3 -3
  43. package/dist/component/{gitGraphDiagram-DS77QQ5N-B_dWXxMf.js → gitGraphDiagram-DS77QQ5N-BjVLFBUS.js} +4 -4
  44. package/dist/component/{highlighted-body-OFNGDK62-CQ1ZdhQ-.js → highlighted-body-OFNGDK62-BKot66c3.js} +2 -2
  45. package/dist/component/index.js +2 -2
  46. package/dist/component/{infoDiagram-6WML65LV-P4GO-aVw.js → infoDiagram-6WML65LV-BkAC5Bwv.js} +2 -2
  47. package/dist/component/{ishikawaDiagram-WSZJBQD7-BMXMrxKI.js → ishikawaDiagram-WSZJBQD7-oplkIs_t.js} +2 -2
  48. package/dist/component/{journeyDiagram-NVQOT4AX-DPdTmxkF.js → journeyDiagram-NVQOT4AX-CuliMCSv.js} +5 -5
  49. package/dist/component/{kanban-definition-27J2QSJJ-sYw64NrE.js → kanban-definition-27J2QSJJ-DdzOdEiL.js} +3 -3
  50. package/dist/component/{linear-DYjDg3gl.js → linear-zZDwdGmK.js} +2 -2
  51. package/dist/component/{mermaid-GHXKKRXX-DfdCmrs3.js → mermaid-GHXKKRXX-aX5umm-y.js} +46587 -40943
  52. package/dist/component/{mindmap-definition-FAOFIHXS-UkAbrucA.js → mindmap-definition-FAOFIHXS-DD2HF9oE.js} +4 -4
  53. package/dist/component/{pegDiagram-VL7TDLO6-BGab1it6.js → pegDiagram-VL7TDLO6-DyiDl9bF.js} +4 -4
  54. package/dist/component/{pieDiagram-7S7Q4E2Y-BnY70Pr-.js → pieDiagram-7S7Q4E2Y-DflxKS_B.js} +4 -4
  55. package/dist/component/{quadrantDiagram-CIZ2JOQS-Cv1bjdQb.js → quadrantDiagram-CIZ2JOQS-nwwayVOP.js} +3 -3
  56. package/dist/component/{railroadDiagram-AXF67PYL-DJhLbGB_.js → railroadDiagram-AXF67PYL-BTtD2eN9.js} +4 -4
  57. package/dist/component/{requirementDiagram-LRYGKXZP-CLW3CgbU.js → requirementDiagram-LRYGKXZP-B37q1LKL.js} +4 -4
  58. package/dist/component/{sankeyDiagram-W5VNT64P-vnapx0yf.js → sankeyDiagram-W5VNT64P-zY0W9eje.js} +2 -2
  59. package/dist/component/{sequenceDiagram-SI44F4Z6-I43iQsY0.js → sequenceDiagram-SI44F4Z6-CmQiqB8F.js} +4 -4
  60. package/dist/component/{sizeCapture-X5ZJPWSS-D9LGwwwC.js → sizeCapture-X5ZJPWSS-dF3FvIT8.js} +2 -2
  61. package/dist/component/snapdom-DkzCA8S0.js +7061 -0
  62. package/dist/component/{stateDiagram-OKZ733FA-BXejMYGk.js → stateDiagram-OKZ733FA-CX61F3L0.js} +3 -3
  63. package/dist/component/{stateDiagram-v2-UEYNNEHI-BP05TJSl.js → stateDiagram-v2-UEYNNEHI-DnFZhhu3.js} +3 -3
  64. package/dist/component/{swimlanes-SLNWSIFB-CfmDVYhs.js → swimlanes-SLNWSIFB-CX9XGBvw.js} +4 -4
  65. package/dist/component/{swimlanesDiagram-ULZ7WXOC-DfjQBUfV.js → swimlanesDiagram-ULZ7WXOC-Bqkgx7qk.js} +3 -3
  66. package/dist/component/{timeline-definition-Z64GVDOM-C0BwzTs3.js → timeline-definition-Z64GVDOM-BUX4OSm1.js} +3 -3
  67. package/dist/component/{vennDiagram-T6HMQDX7-CRf8sGBL.js → vennDiagram-T6HMQDX7-BpVOq4Rh.js} +2 -2
  68. package/dist/component/{wardleyDiagram-T6FBY63Y-C2h7TQ4a.js → wardleyDiagram-T6FBY63Y-BUDGa8Mv.js} +3 -3
  69. package/dist/component/{xychartDiagram-ELKLHX3M-CBcAwmdF.js → xychartDiagram-ELKLHX3M-FIA_LnIu.js} +3 -3
  70. package/dist/components/embed/EmbedComposer.d.ts +11 -1
  71. package/dist/components/embed/EmbedHeader.d.ts +7 -1
  72. package/dist/components/embed/EmbedRail.d.ts +18 -2
  73. package/dist/components/embed/GoalActions.d.ts +15 -0
  74. package/dist/components/embed/GoalBadge.d.ts +17 -0
  75. package/dist/components/embed/GoalClearDialog.d.ts +6 -0
  76. package/dist/components/embed/GoalClearedLine.d.ts +3 -0
  77. package/dist/components/embed/GoalCompletionCard.d.ts +12 -0
  78. package/dist/components/embed/GoalComposeSheet.d.ts +19 -0
  79. package/dist/components/embed/GoalProposalCard.d.ts +29 -0
  80. package/dist/components/embed/GoalRailView.d.ts +15 -0
  81. package/dist/components/embed/GoalRefusalCard.d.ts +22 -0
  82. package/dist/components/embed/GoalSetCard.d.ts +5 -0
  83. package/dist/components/embed/GoalSnoozeMenu.d.ts +14 -0
  84. package/dist/components/embed/GoalStatusRow.d.ts +6 -0
  85. package/dist/components/embed/GoalTimeline.d.ts +6 -0
  86. package/dist/components/embed/MobileNavBar.d.ts +5 -1
  87. package/dist/components/embed/QuestionCard.d.ts +12 -1
  88. package/dist/components/embed/ScheduleNotices.d.ts +23 -0
  89. package/dist/components/embed/SentAsGoalTag.d.ts +1 -0
  90. package/dist/components/embed/SubagentsPaneBody.d.ts +3 -0
  91. package/dist/components/embed/rail-flags.d.ts +13 -0
  92. package/dist/components/feedback/IssueReportController.d.ts +1 -0
  93. package/dist/components/feedback/IssueReportDialog.d.ts +6 -0
  94. package/dist/components/skills/ConfirmDeleteSkillDialog.d.ts +9 -0
  95. package/dist/components/skills/SkillLibraryToolSync.d.ts +4 -0
  96. package/dist/components/skills/SkillsListSurface.d.ts +26 -0
  97. package/dist/components/skills/UploadSkillDialog.d.ts +32 -0
  98. package/dist/components/skills/skill-archive-file.d.ts +15 -0
  99. package/dist/embed/client-error-log.d.ts +72 -0
  100. package/dist/embed/dock-open-request.d.ts +32 -0
  101. package/dist/embed/dock-state.d.ts +1 -1
  102. package/dist/embed/goal-actions-model.d.ts +9 -0
  103. package/dist/embed/goal-cap-notice.d.ts +36 -0
  104. package/dist/embed/goal-deep-link.d.ts +24 -0
  105. package/dist/embed/goal-edit-command.d.ts +25 -0
  106. package/dist/embed/goal-journal.d.ts +53 -0
  107. package/dist/embed/goal-live-status.d.ts +2 -0
  108. package/dist/embed/goal-plain-units.d.ts +35 -0
  109. package/dist/embed/goal-progress.d.ts +15 -0
  110. package/dist/embed/goal-proposal-dismissal.d.ts +11 -0
  111. package/dist/embed/goal-resume-time.d.ts +22 -0
  112. package/dist/embed/goal-row-model.d.ts +27 -0
  113. package/dist/embed/goal-runway.d.ts +5 -0
  114. package/dist/embed/goal-schedule-handoff.d.ts +12 -0
  115. package/dist/embed/goal-status-label.d.ts +3 -0
  116. package/dist/embed/goal-time-usage.d.ts +19 -0
  117. package/dist/embed/issue-report-bus.d.ts +14 -0
  118. package/dist/embed/issue-report-open.d.ts +8 -0
  119. package/dist/embed/issue-report.d.ts +41 -0
  120. package/dist/embed/screen-capture.d.ts +74 -0
  121. package/dist/embed/slash-commands.d.ts +24 -0
  122. package/dist/embed/task-schedule-command.d.ts +7 -0
  123. package/dist/i18n/messages/en.d.ts +372 -8
  124. package/dist/i18n/messages/surfaces/feedback.d.ts +84 -0
  125. package/dist/i18n/messages/surfaces/header.d.ts +16 -0
  126. package/dist/i18n/messages/surfaces/skills.d.ts +216 -0
  127. package/dist/i18n/messages/surfaces/stream.d.ts +152 -29
  128. package/dist/i18n/messages/surfaces/workspace.d.ts +20 -0
  129. package/dist/public-api.d.ts +1 -1
  130. package/dist/routes/chat/part-renderer-extra-props.d.ts +43 -0
  131. package/dist/routes/chat/use-goal-receipt.d.ts +37 -0
  132. package/dist/routes/chat/use-host-draft-request.d.ts +2 -0
  133. package/dist/routes/chat/use-session-goal.d.ts +226 -0
  134. package/dist/routes/chat.d.ts +10 -1
  135. package/dist/routes/goal.d.ts +1 -0
  136. package/dist/routes/skills.d.ts +2 -0
  137. package/dist/stream/activity-items.d.ts +25 -0
  138. package/dist/stream/ai-sdk-part-renderers.d.ts +64 -25
  139. package/dist/stream/belong-chat-transport.d.ts +142 -2
  140. package/dist/stream/belong-data-parts.d.ts +48 -4
  141. package/dist/stream/goal-store.d.ts +43 -0
  142. package/dist/stream/message-metadata.d.ts +1 -0
  143. package/dist/stream/message-parts.d.ts +42 -0
  144. package/dist/stream/select-goal-set-part-id.d.ts +2 -0
  145. package/dist/stream/select-latest-goal.d.ts +13 -0
  146. package/dist/stream/subagent-controls-store.d.ts +20 -0
  147. package/dist/stream/subagent-lanes-model.d.ts +175 -0
  148. package/dist/stream/subagent-lanes.d.ts +89 -0
  149. package/dist/stream/use-publish-subagent-controls.d.ts +11 -0
  150. package/dist/stream/workspace-focus-store.d.ts +7 -1
  151. package/dist/test/render.d.ts +18 -1
  152. package/dist/test/subagent-fixtures.d.ts +24 -0
  153. package/dist/types/public.d.ts +54 -1
  154. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-CYZ36tQD.js";
2
- import { _ as f, c as t, d as M, l as S, e as P, k as z, aa as _, ab as U, a6 as C, y as F } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { s as R, a as W, S as N } from "./chunk-5RXB4S5H-QFCY9Dtl.js";
2
+ import { _ as f, c as t, d as M, l as S, e as P, k as z, aa as _, ab as U, a6 as C, y as F } from "./mermaid-GHXKKRXX-aX5umm-y.js";
3
3
  import { G as O } from "./graph-CWpEkm4G.js";
4
4
  import { l as J } from "./layout-Br2UjHRU.js";
5
5
  globalThis.process = globalThis.process || { env: {} };
@@ -263,4 +263,4 @@ var X = /* @__PURE__ */ f((e) => e.append("circle").attr("class", "start-state")
263
263
  export {
264
264
  ot as diagram
265
265
  };
266
- //# sourceMappingURL=stateDiagram-OKZ733FA-BXejMYGk.js.map
266
+ //# sourceMappingURL=stateDiagram-OKZ733FA-CX61F3L0.js.map
@@ -1,5 +1,5 @@
1
- import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-CYZ36tQD.js";
2
- import { _ as l } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { s as e, b as r, a as s, S as t } from "./chunk-5RXB4S5H-QFCY9Dtl.js";
2
+ import { _ as l } from "./mermaid-GHXKKRXX-aX5umm-y.js";
3
3
  globalThis.process = globalThis.process || { env: {} };
4
4
  globalThis.global = globalThis.global || globalThis;
5
5
  var b = {
@@ -16,4 +16,4 @@ var b = {
16
16
  export {
17
17
  b as diagram
18
18
  };
19
- //# sourceMappingURL=stateDiagram-v2-UEYNNEHI-BP05TJSl.js.map
19
+ //# sourceMappingURL=stateDiagram-v2-UEYNNEHI-DnFZhhu3.js.map
@@ -1,5 +1,5 @@
1
- import { c as Tr } from "./chunk-RYQCIY6F-CuAngwHt.js";
2
- import { ap as Er, aq as wr, ar as Ar, as as Rr, l as Ke, c as Nr, aj as Or, ai as Pr, ak as Br, aw as kr, ay as Fr, z as _r, av as Dr, az as Hr, y as Oe, aA as Ye, _ as d, aB as Ao } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { c as Tr } from "./chunk-RYQCIY6F-D0oyMUJ7.js";
2
+ import { ap as Er, aq as wr, ar as Ar, as as Rr, l as Ke, c as Nr, aj as Or, ai as Pr, ak as Br, aw as kr, ay as Fr, z as _r, av as Dr, az as Hr, y as Oe, aA as Ye, _ as d, aB as Ao } from "./mermaid-GHXKKRXX-aX5umm-y.js";
3
3
  import { G as Xr } from "./graph-CWpEkm4G.js";
4
4
  globalThis.process = globalThis.process || { env: {} };
5
5
  globalThis.global = globalThis.global || globalThis;
@@ -24,7 +24,7 @@ async function Fo(t, e) {
24
24
  for (const I of o)
25
25
  n.setEdge(I.start, I.end, { ...I }, I.id), e.edges.some((p) => p.id === I.id) || e.edges.push(I);
26
26
  if (globalThis.mermaidCaptureSizes) {
27
- const { captureNodeSizes: I } = await import("./sizeCapture-X5ZJPWSS-D9LGwwwC.js");
27
+ const { captureNodeSizes: I } = await import("./sizeCapture-X5ZJPWSS-dF3FvIT8.js");
28
28
  I(t, e);
29
29
  }
30
30
  return {
@@ -5332,4 +5332,4 @@ d(Zr, "render");
5332
5332
  export {
5333
5333
  Zr as render
5334
5334
  };
5335
- //# sourceMappingURL=swimlanes-SLNWSIFB-CfmDVYhs.js.map
5335
+ //# sourceMappingURL=swimlanes-SLNWSIFB-CX9XGBvw.js.map
@@ -1,5 +1,5 @@
1
- import { c as e, s as a } from "./flowDiagram-UKHOOZJN-BZfBucKB.js";
2
- import { _ as s } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { c as e, s as a } from "./flowDiagram-UKHOOZJN-BO8jpT1D.js";
2
+ import { _ as s } from "./mermaid-GHXKKRXX-aX5umm-y.js";
3
3
  globalThis.process = globalThis.process || { env: {} };
4
4
  globalThis.global = globalThis.global || globalThis;
5
5
  var t = /* @__PURE__ */ s((l) => `${a(l)}
@@ -13,4 +13,4 @@ var t = /* @__PURE__ */ s((l) => `${a(l)}
13
13
  export {
14
14
  g as diagram
15
15
  };
16
- //# sourceMappingURL=swimlanesDiagram-ULZ7WXOC-DfjQBUfV.js.map
16
+ //# sourceMappingURL=swimlanesDiagram-ULZ7WXOC-Bqkgx7qk.js.map
@@ -1,5 +1,5 @@
1
- import { _ as o, z as gt, ad as Rt, ae as Ct, af as Wt, c as pt, l as E, G as Pt, a4 as Bt, ag as ft, d as U, u as Vt, ah as Ft, q as zt } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
2
- import { d as ot } from "./arc-B4biduil.js";
1
+ import { _ as o, z as gt, ad as Rt, ae as Ct, af as Wt, c as pt, l as E, G as Pt, a4 as Bt, ag as ft, d as U, u as Vt, ah as Ft, q as zt } from "./mermaid-GHXKKRXX-aX5umm-y.js";
2
+ import { d as ot } from "./arc-GBp6w3tF.js";
3
3
  globalThis.process = globalThis.process || { env: {} };
4
4
  globalThis.global = globalThis.global || globalThis;
5
5
  var tt = (function() {
@@ -1055,4 +1055,4 @@ var Qt = /* @__PURE__ */ o(function(e, t, n, i, r, h = !1) {
1055
1055
  export {
1056
1056
  me as diagram
1057
1057
  };
1058
- //# sourceMappingURL=timeline-definition-Z64GVDOM-C0BwzTs3.js.map
1058
+ //# sourceMappingURL=timeline-definition-Z64GVDOM-BUX4OSm1.js.map
@@ -1,4 +1,4 @@
1
- import { b7 as Wt, s as Kt, g as Ht, p as Yt, o as Xt, a as Zt, b as Jt, _ as w, z as wt, G as Qt, d as ot, ao as $t, ad as te, ae as ee, af as ne, e as se, q as ie, D as oe, E as re } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { b7 as Wt, s as Kt, g as Ht, p as Yt, o as Xt, a as Zt, b as Jt, _ as w, z as wt, G as Qt, d as ot, ao as $t, ad as te, ae as ee, af as ne, e as se, q as ie, D as oe, E as re } from "./mermaid-GHXKKRXX-aX5umm-y.js";
2
2
  globalThis.process = globalThis.process || { env: {} };
3
3
  globalThis.global = globalThis.global || globalThis;
4
4
  const kt = (t, n) => Wt(t, "a", -n), _t = 1e-10;
@@ -1578,4 +1578,4 @@ var Ue = { draw: qe }, We = {
1578
1578
  export {
1579
1579
  We as diagram
1580
1580
  };
1581
- //# sourceMappingURL=vennDiagram-T6HMQDX7-CRf8sGBL.js.map
1581
+ //# sourceMappingURL=vennDiagram-T6HMQDX7-BpVOq4Rh.js.map
@@ -1,5 +1,5 @@
1
- import { p as St } from "./chunk-JWPE2WC7-ClHq4gN2.js";
2
- import { s as Mt, g as Nt, p as Tt, o as zt, a as Lt, b as At, _ as u, Z as Xt, z as Et, D as U, l as K, G as Yt, e as It, q as Bt, c as j } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { p as St } from "./chunk-JWPE2WC7-CmGlHqne.js";
2
+ import { s as Mt, g as Nt, p as Tt, o as zt, a as Lt, b as At, _ as u, Z as Xt, z as Et, D as U, l as K, G as Yt, e as It, q as Bt, c as j } from "./mermaid-GHXKKRXX-aX5umm-y.js";
3
3
  import { p as Ft } from "./cynefin-VYW2F7L2-DAyxamLw.js";
4
4
  globalThis.process = globalThis.process || { env: {} };
5
5
  globalThis.global = globalThis.global || globalThis;
@@ -678,4 +678,4 @@ var Dt = {
678
678
  export {
679
679
  Qt as diagram
680
680
  };
681
- //# sourceMappingURL=wardleyDiagram-T6FBY63Y-C2h7TQ4a.js.map
681
+ //# sourceMappingURL=wardleyDiagram-T6FBY63Y-BUDGa8Mv.js.map
@@ -1,7 +1,7 @@
1
- import { s as si, g as ai, p as Et, o as ni, a as oi, b as ri, _ as n, l as It, G as hi, e as li, q as ci, z as pt, i as ui, D as Mt, E as gi, Z as xi, aC as di, aa as Dt } from "./mermaid-GHXKKRXX-DfdCmrs3.js";
1
+ import { s as si, g as ai, p as Et, o as ni, a as oi, b as ri, _ as n, l as It, G as hi, e as li, q as ci, z as pt, i as ui, D as Mt, E as gi, Z as xi, aC as di, aa as Dt } from "./mermaid-GHXKKRXX-aX5umm-y.js";
2
2
  import { i as fi } from "./init-BOu0eQYQ.js";
3
3
  import { o as pi } from "./ordinal-D0x7izaa.js";
4
- import { l as vt } from "./linear-DYjDg3gl.js";
4
+ import { l as vt } from "./linear-zZDwdGmK.js";
5
5
  globalThis.process = globalThis.process || { env: {} };
6
6
  globalThis.global = globalThis.global || globalThis;
7
7
  function mi(t, i, e) {
@@ -1418,4 +1418,4 @@ var Ti = /* @__PURE__ */ n(function() {
1418
1418
  export {
1419
1419
  zi as diagram
1420
1420
  };
1421
- //# sourceMappingURL=xychartDiagram-ELKLHX3M-CBcAwmdF.js.map
1421
+ //# sourceMappingURL=xychartDiagram-ELKLHX3M-FIA_LnIu.js.map
@@ -5,8 +5,13 @@ import { SkillSummary } from '../../api/skills.ts';
5
5
  import { PrePromptSummary } from '../../api/pre-prompts.ts';
6
6
  import { WorkspaceFile } from '../../api/workspace-files.ts';
7
7
  import { UsageMeterProps } from './UsageMeter.tsx';
8
- export declare function EmbedComposer({ draft, suggestion, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, prompts, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSaveAsPrompt, onSubmit, onStop, usage, pendingQuestion, }: Readonly<{
8
+ export declare function EmbedComposer({ draft, placeholder, suggestion, status, submitting, disabled, voiceSupported, voiceConfigured, listening, theme, palette, skills, prompts, workspaceFiles, mode, onModeChange, onDraftChange, onMentionOpen, onSaveAsPrompt, onSubmit, onStop, usage, pendingQuestion, onSetGoal, }: Readonly<{
9
9
  draft: string;
10
+ /** Overrides the composer's own invitation while a surface above it is
11
+ * asking for something specific (the goal row's "Tell it what to try"
12
+ * hands the composer over with its own words). Null — the default — keeps
13
+ * the ordinary mode-aware copy. */
14
+ placeholder?: string | null;
10
15
  /** BEL-255 — ghost text painted over an EMPTY draft (the locale opening
11
16
  * question on a brand-new chat). Tab completes it into the draft; typing
12
17
  * anything else just replaces it. Never submittable by itself: the draft
@@ -53,4 +58,9 @@ export declare function EmbedComposer({ draft, suggestion, status, submitting, d
53
58
  * reply answers the question in chat) instead of stopping the run. An
54
59
  * empty draft keeps the button as Stop. */
55
60
  pendingQuestion?: boolean;
61
+ /** Task 16 — opens the goal compose sheet ("Set a goal…", the mode menu's
62
+ * fifth entry). Omitted → the entry is not offered at all, which is what
63
+ * keeps every provider-less composer test/story rendering and is how
64
+ * `chat.tsx` gates the door once a `goals_disabled` 503 has been seen. */
65
+ onSetGoal?: (() => void) | undefined;
56
66
  }>): import("react").JSX.Element;
@@ -1,3 +1,4 @@
1
+ import { GoalBadgeProps } from './GoalBadge.tsx';
1
2
  import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
2
3
  /**
3
4
  * Slim brand bar at the top of the chat: the mark + the brand/view title, and
@@ -17,7 +18,7 @@ import { BelongThemeBrand, BelongThemePalette } from '../../types/public.ts';
17
18
  * is nothing to fall back to), so the single-chat header stays exactly as
18
19
  * it always was.
19
20
  */
20
- export declare function EmbedHeader({ title, subtitle, palette, brand, onExportChat, exportState, exportChatLabel, onCloseChat, closeChatLabel, }: {
21
+ export declare function EmbedHeader({ title, subtitle, palette, brand, onExportChat, exportState, exportChatLabel, onCloseChat, closeChatLabel, goal, }: {
21
22
  title: string;
22
23
  /** Second header line — the current chat's name (chat view). Takes the slot
23
24
  * the "by Belong" tagline occupies when absent. */
@@ -38,4 +39,9 @@ export declare function EmbedHeader({ title, subtitle, palette, brand, onExportC
38
39
  /** Accessible name for the close control (carries the agent's identity,
39
40
  * e.g. "Close Agent 2 — invoices"). Required alongside `onCloseChat`. */
40
41
  closeChatLabel?: string;
42
+ /** Goal Mode status pill — rendered next to `BetaBadge` only while the dock
43
+ * has a live, non-cleared goal for the on-screen session. Since spec §4 it
44
+ * is a DOOR: it says the status and opens the Goal rail view. Same place,
45
+ * same tone rules, no panel of its own. */
46
+ goal?: GoalBadgeProps;
41
47
  }): import("react").JSX.Element;
@@ -7,7 +7,7 @@ import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.
7
7
  * two must carry the SAME members: this one is what the chrome renders, that
8
8
  * one is what the router and localStorage persist, and a view present in only
9
9
  * one of them is a view you can reach but not come back to after a reload. */
10
- export type EmbedView = "chat" | "files" | "scheduled" | "prompts" | "connectors";
10
+ export type EmbedView = "chat" | "goal" | "files" | "scheduled" | "prompts" | "connectors" | "skills";
11
11
  /**
12
12
  * 52px rail. Top: user avatar (account + theme controls). Middle: Chat /
13
13
  * Files nav (active = Ocean primary fill, brand-driven). Bottom
@@ -15,7 +15,7 @@ export type EmbedView = "chat" | "files" | "scheduled" | "prompts" | "connectors
15
15
  * expand-to-modal — then the collapse toggle. Active fill + brand colours come
16
16
  * from `palette` so a host brand push re-themes everything.
17
17
  */
18
- export declare function EmbedRail({ view, collapsed, user, theme, palette, sessions, activeId, planProgress, speakEnabled, ttsSupported, voiceSupported, voiceStatus, pendingVoiceDraft, voiceActionFlash, accent, cssVars, presets, activePreset, onSelectView, onToggleCollapse, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onSelectAgentLine, onCloseAgentLine, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, onToggleSpeak, fullscreen, onToggleFullscreen, connectorsUnavailable, }: {
18
+ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessions, activeId, planProgress, speakEnabled, ttsSupported, voiceSupported, voiceStatus, pendingVoiceDraft, voiceActionFlash, accent, cssVars, presets, activePreset, onSelectView, onToggleCollapse, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onSelectAgentLine, onCloseAgentLine, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, onToggleSpeak, fullscreen, onToggleFullscreen, connectorsUnavailable, skillsUnavailable, goalPresent, goalNeedsYou, }: {
19
19
  view: EmbedView;
20
20
  collapsed: boolean;
21
21
  user: string | null;
@@ -51,6 +51,15 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
51
51
  label: string;
52
52
  }[];
53
53
  activePreset: PresetName;
54
+ /** Whether this session has a goal that is not cleared — the Goal chip
55
+ * exists only then, so a user who never runs a goal never sees a dead tab. */
56
+ goalPresent: boolean;
57
+ /** The on-screen session's goal is in one of the five statuses that owe the
58
+ * reader something (`goalRowModel`'s "attention" tone — Task 7). Paints an
59
+ * amber dot on BOTH the Chat and Goal chips while the dock is collapsed, so
60
+ * the ask is visible without opening the panel; never the only signal —
61
+ * each chip's accessible label names the ask too. */
62
+ goalNeedsYou: boolean;
54
63
  onSelectView: (v: EmbedView) => void;
55
64
  onToggleCollapse: () => void;
56
65
  onToggleMode: () => void;
@@ -100,4 +109,11 @@ export declare function EmbedRail({ view, collapsed, user, theme, palette, sessi
100
109
  * ordinary outage keeps the entry, and the surface shows its retry state.
101
110
  */
102
111
  connectorsUnavailable?: boolean;
112
+ /**
113
+ * This deployment answered "the skill library is off here" (404, or a 503
114
+ * whose body is `skill_library_disabled`). Same optimistic semantics as
115
+ * `connectorsUnavailable`: FALSE until that answer has resolved, so the
116
+ * entry never pops in late and an outage never hides it.
117
+ */
118
+ skillsUnavailable?: boolean;
103
119
  }): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { GoalActionOutcome, GoalView } from '../../api/goals.ts';
2
+ export type GoalActionKind = "pause" | "resume" | "clear";
3
+ export type GoalActionsProps = {
4
+ readonly goal: GoalView;
5
+ /** Each returns the API outcome; the footer renders its OWN failure line —
6
+ * the caller never has to. */
7
+ readonly onAction: (action: GoalActionKind) => Promise<GoalActionOutcome>;
8
+ readonly onEdit?: (() => void) | undefined;
9
+ /** Task 19 — the footer's Snooze ▾ menu. Rendered beside Pause exactly
10
+ * where `goalActionAvailability(goal.status).snooze` says the server
11
+ * accepts it (active + the three waiting statuses); undefined for any
12
+ * composer that has not wired snooze up yet (Storybook, older callers). */
13
+ readonly onSnooze?: ((wakeAt: Date) => Promise<GoalActionOutcome>) | undefined;
14
+ };
15
+ export declare function GoalActions({ goal, onAction, onEdit, onSnooze }: GoalActionsProps): import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { GoalView } from '../../api/goals.ts';
2
+ export type GoalBadgeProps = {
3
+ readonly goal: GoalView;
4
+ /** Selects the Goal rail view. The pill is a door now, not a panel
5
+ * (spec §4 — the popover is deleted). */
6
+ readonly onOpenGoalView: () => void;
7
+ };
8
+ /**
9
+ * The header pill (advisory placement per `a3s-dock-advisory-placement`):
10
+ * a shrink-0 status pill next to `BetaBadge` that says what the goal is doing
11
+ * and OPENS THE GOAL VIEW. It used to carry the whole goal behind a popover;
12
+ * that panel is deleted (spec §4) — a surface that must hold a ten-entry
13
+ * timeline and a row of buttons is not a popover, and the buttons were what
14
+ * got squeezed off screen. Renders nothing for a `cleared` goal so a previous
15
+ * chat's pill never lingers.
16
+ */
17
+ export declare function GoalBadge({ goal, onOpenGoalView }: GoalBadgeProps): import("react").JSX.Element | null;
@@ -0,0 +1,6 @@
1
+ export type GoalClearDialogProps = {
2
+ readonly open: boolean;
3
+ readonly onOpenChange: (open: boolean) => void;
4
+ readonly onConfirm: () => void;
5
+ };
6
+ export declare function GoalClearDialog({ open, onOpenChange, onConfirm }: GoalClearDialogProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare function GoalClearedLine({ clearedAt }: {
2
+ readonly clearedAt: string;
3
+ }): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { GoalView } from '../../api/goals.ts';
2
+ export type GoalCompletionCardProps = {
3
+ readonly goal: GoalView;
4
+ readonly fileCount: number;
5
+ readonly onSchedule: (command: string) => void;
6
+ /** Absent hides the button — a control that cannot do anything is a
7
+ * question the user has to answer, and a goal that produced nothing has
8
+ * nothing to get. */
9
+ readonly onGetFiles: (() => void) | undefined;
10
+ readonly onAnotherGoal: () => void;
11
+ };
12
+ export declare function GoalCompletionCard({ goal, fileCount, onSchedule, onGetFiles, onAnotherGoal, }: GoalCompletionCardProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { ChatMode } from '../../embed/chat-mode.ts';
2
+ import { GoalRunwayPreset } from '../../embed/goal-runway.ts';
3
+ export type GoalComposeValue = {
4
+ readonly objective: string;
5
+ readonly criteria: readonly string[];
6
+ readonly runway: GoalRunwayPreset;
7
+ readonly mode: ChatMode;
8
+ };
9
+ export type GoalComposeSheetProps = {
10
+ readonly open: boolean;
11
+ readonly initial: GoalComposeValue;
12
+ /** True when the composer was in plan mode — the sheet says so and runs on
13
+ * Auto (spec §6). A 422 `goal_plan_mode` can no longer reach a human from
14
+ * this door; `/goal <objective>` typed directly can still hit it. */
15
+ readonly planModeResolved: boolean;
16
+ readonly onCancel: () => void;
17
+ readonly onSubmit: (value: GoalComposeValue) => void;
18
+ };
19
+ export declare function GoalComposeSheet({ open, initial, planModeResolved, onCancel, onSubmit, }: GoalComposeSheetProps): import("react").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { GoalProposalData } from '../../stream/belong-data-parts.ts';
2
+ export type GoalProposalCardProps = {
3
+ readonly data: GoalProposalData;
4
+ /** Absent while a run streams, this session already has the goal THIS
5
+ * offer produced, or another live goal exists — the card then renders
6
+ * read-only, exactly as the plan card does without `onExecutePlan`.
7
+ * Fix round 1 (Medium 1) — hands over the WHOLE offer, not just the
8
+ * objective, so Start actually creates what the card promised. */
9
+ readonly onConfirm?: ((proposal: GoalProposalData) => Promise<void>) | undefined;
10
+ /** Opens the compose sheet prefilled with this offer's fields. Same
11
+ * gating as `onConfirm` — absent means read-only. */
12
+ readonly onEdit?: (() => void) | undefined;
13
+ /** The started line's "Open it" — absent hides that action. */
14
+ readonly onOpen?: (() => void) | undefined;
15
+ /**
16
+ * Derived from `GoalView`, never local state (§12/§41): this session
17
+ * already has the goal THIS offer produced. A reload then renders
18
+ * "Started this goal" instead of a live button that would just 409.
19
+ */
20
+ readonly started: boolean;
21
+ /**
22
+ * Ruling 5 — the localStorage dismissal key is per session. Fix round 1
23
+ * (Low 5) — `null` for the rare frame before any session id is known: the
24
+ * card then renders WITHOUT "Not now" rather than reading/writing a
25
+ * `belong:goal-proposal-dismissed:` key shared by every such render.
26
+ */
27
+ readonly sessionId: string | null;
28
+ };
29
+ export declare function GoalProposalCard({ data, onConfirm, onEdit, onOpen, started, sessionId, }: GoalProposalCardProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { GoalView } from '../../api/goals.ts';
3
+ export type GoalRailViewProps = {
4
+ readonly goal: GoalView;
5
+ /** Task 4's sticky footer. Absent renders the view read-only. */
6
+ readonly footer?: ReactNode;
7
+ /** Task 3's timeline section. Absent renders no History. */
8
+ readonly timeline?: ReactNode;
9
+ /** Clock injection (§25) for the "Last step" relative timestamp below —
10
+ * optional because most callers are content with the wall clock, the
11
+ * same trade `GoalBadge` makes for `resumeTime`. Tests and stories pass
12
+ * a fixed instant so "2 min ago" is deterministic. */
13
+ readonly now?: Date;
14
+ };
15
+ export declare function GoalRailView({ goal, footer, timeline, now }: GoalRailViewProps): import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { GoalRefusal } from '../../embed/goal-cap-notice.ts';
2
+ export type GoalRefusalCardProps = {
3
+ readonly refusal: GoalRefusal;
4
+ /** "This chat already has a goal" → Open it. */
5
+ readonly onOpenGoal: () => void;
6
+ /** "This chat already has a goal" → Clear it and set this one (confirmed
7
+ * through `GoalClearDialog` first, inside this component). */
8
+ readonly onReplace: () => void;
9
+ /** A cap refusal → Keep the text (puts the objective back in the composer). */
10
+ readonly onKeepText: () => void;
11
+ /** `not_sent` → Try again; `plan_mode` → Run on Auto (both just
12
+ * re-send — `startGoal` itself resolves plan mode on the spot). */
13
+ readonly onRetry: () => void;
14
+ readonly onDismiss: () => void;
15
+ /** Fix round 1 — Replace/Retry's async chain is in flight. Disables every
16
+ * action button but dismiss, so a fast double click can't fire two
17
+ * `clearSessionGoal`/`startGoal` pairs (the caller's `useRef` guard is the
18
+ * actual correctness fix; this is the visible half of it). Defaults to
19
+ * `false` for callers (tests, Storybook) that never go async. */
20
+ readonly busy?: boolean;
21
+ };
22
+ export declare function GoalRefusalCard({ refusal, onOpenGoal, onReplace, onKeepText, onRetry, onDismiss, busy, }: GoalRefusalCardProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { GoalView } from '../../api/goals.ts';
2
+ export type GoalSetCardProps = {
3
+ readonly goal: GoalView;
4
+ };
5
+ export declare function GoalSetCard({ goal }: GoalSetCardProps): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 09:00 on the day after `now`, in LOCAL time — the same local-Date-component
3
+ * convention `goal-resume-time.ts`'s `formatGoalResumeTime` reads back with
4
+ * (`getFullYear`/`getMonth`/`getDate`, never UTC), run forward instead of
5
+ * formatted back. A pure function of its `now` parameter (CLAUDE.md §25).
6
+ */
7
+ export declare const tomorrowMorning: (now: Date) => Date;
8
+ export type GoalSnoozeMenuProps = {
9
+ /** Disables the trigger while a snooze (or any other footer action) is in
10
+ * flight — the caller owns re-entrancy across every footer control. */
11
+ readonly disabled: boolean;
12
+ readonly onSnooze: (wakeAt: Date) => void;
13
+ };
14
+ export declare function GoalSnoozeMenu({ disabled, onSnooze }: GoalSnoozeMenuProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { GoalRowAction } from '../../embed/goal-row-model.ts';
2
+ import { GoalView } from '../../api/goals.ts';
3
+ export declare function GoalStatusRow({ goal, onAction, }: {
4
+ readonly goal: GoalView;
5
+ readonly onAction: (action: GoalRowAction) => void;
6
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,6 @@
1
+ import { GoalJournalEntry } from '../../api/goals.ts';
2
+ export declare function GoalTimeline({ journal, now, locale, }: {
3
+ readonly journal: readonly GoalJournalEntry[] | undefined;
4
+ readonly now: Date;
5
+ readonly locale: string;
6
+ }): import("react").JSX.Element | null;
@@ -10,7 +10,7 @@ import { BelongTheme, BelongThemePalette, PresetName } from '../../types/public.
10
10
  * phone, so the row scrolls horizontally rather than crush them — see the
11
11
  * comment on the `<nav>` below.
12
12
  */
13
- export declare function MobileNavBar({ view, user, theme, palette, sessions, activeId, voiceSupported, accent, cssVars, presets, activePreset, onSelectView, onClose, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, }: {
13
+ export declare function MobileNavBar({ view, user, theme, palette, sessions, activeId, voiceSupported, accent, cssVars, presets, activePreset, onSelectView, onClose, onToggleMode, onToggleSide, onAccentChange, onAccentReset, onCssVarsChange, onApplyPreset, onLogout, onNewSession, onSelectSession, onDeleteSession, onRenameSession, onSessionsOpen, onViewStats, goalPresent, }: {
14
14
  view: EmbedView;
15
15
  user: string | null;
16
16
  theme: BelongTheme;
@@ -25,6 +25,10 @@ export declare function MobileNavBar({ view, user, theme, palette, sessions, act
25
25
  label: string;
26
26
  }[];
27
27
  activePreset: PresetName;
28
+ /** Whether this session has a goal that is not cleared — the Goal tab
29
+ * exists only then, so the row never grows a dead cell. Same rule (and
30
+ * same caller-computed answer) as the desktop rail's chip. */
31
+ goalPresent: boolean;
28
32
  onSelectView: (v: EmbedView) => void;
29
33
  onClose: () => void;
30
34
  onToggleMode: () => void;
@@ -21,5 +21,16 @@ export type QuestionCardProps = {
21
21
  * the run live, so the reply streams in without a reload.
22
22
  */
23
23
  readonly onContinuation?: ((continuation: QuestionContinuation) => void) | undefined;
24
+ /**
25
+ * Task 12 — set while the session's goal is still in its setup interview
26
+ * (`goal.status === "clarifying"`). Renders as an eyebrow above the
27
+ * header chip so a question asked during setup reads as part of getting
28
+ * the goal down, not as an ordinary mid-run ask. `index` is the journal's
29
+ * own count (chat.tsx), never a counter local to this card.
30
+ */
31
+ readonly setupProgress?: {
32
+ readonly index: number;
33
+ readonly total: number;
34
+ } | undefined;
24
35
  };
25
- export declare const QuestionCard: ({ data, apiBaseUrl, disabled, onHide, onResolved, onContinuation, }: QuestionCardProps) => import("react").JSX.Element | null;
36
+ export declare const QuestionCard: ({ data, apiBaseUrl, disabled, onHide, onResolved, onContinuation, setupProgress, }: QuestionCardProps) => import("react").JSX.Element | null;
@@ -0,0 +1,23 @@
1
+ import { Locale } from '../../embed/locale.ts';
2
+ import { StoredTaskSchedule } from '../../embed/task-schedule-store.ts';
3
+ export type ScheduleNoticePayload = {
4
+ readonly type: "text";
5
+ readonly text: string;
6
+ } | {
7
+ readonly type: "scheduled";
8
+ readonly schedule: StoredTaskSchedule;
9
+ readonly interactiveWarning: boolean;
10
+ } | {
11
+ readonly type: "cancelled";
12
+ readonly schedule: StoredTaskSchedule;
13
+ };
14
+ export type ScheduleNotice = ScheduleNoticePayload & {
15
+ readonly id: string;
16
+ };
17
+ export declare const identifyScheduleNotice: (notice: ScheduleNoticePayload, id: string) => ScheduleNotice;
18
+ export declare function ScheduleNotices({ notices, scheduling, locale, onCancel, }: {
19
+ readonly notices: readonly ScheduleNotice[];
20
+ readonly scheduling: boolean;
21
+ readonly locale: Locale;
22
+ readonly onCancel: (schedule: StoredTaskSchedule) => void;
23
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function SentAsGoalTag(): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export declare const SubagentsPaneBody: ({ waveId }: {
2
+ readonly waveId: string;
3
+ }) => import("react").JSX.Element | null;
@@ -54,3 +54,16 @@ export declare const VOICE_CALL_BUTTON_ENABLED = false;
54
54
  * overflow "More" cell), and the tab appears with no other change.
55
55
  */
56
56
  export declare const CONNECTORS_MOBILE_TAB_ENABLED = false;
57
+ /**
58
+ * The Skills tab in the MOBILE bottom nav bar (skill library spec D11: desktop
59
+ * only at launch). The desktop rail entry is gated only by whether the
60
+ * deployment has the feature.
61
+ *
62
+ * `false` for the same capacity reason as Connectors: the bar is already a
63
+ * horizontal scroller. ACCEPTED PRODUCT GAP (R66): on a phone there is no
64
+ * surface to list, toggle, upload or download skills. The agent tools
65
+ * (`list_skill_library`, `set_skill_enabled`, `save_skill`) still work there.
66
+ * Flip to `true` once the bar is re-thought, and the tab appears with no other
67
+ * change.
68
+ */
69
+ export declare const SKILLS_MOBILE_TAB_ENABLED = false;
@@ -0,0 +1 @@
1
+ export declare const IssueReportController: () => import("react").JSX.Element | null;
@@ -0,0 +1,6 @@
1
+ import { IssueReportRequest } from '../../embed/issue-report-bus.ts';
2
+ export type IssueReportDialogProps = {
3
+ readonly request: IssueReportRequest;
4
+ readonly onClose: () => void;
5
+ };
6
+ export declare const IssueReportDialog: ({ request, onClose }: IssueReportDialogProps) => import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { DeleteSkillOutcome } from '../../api/skill-library.ts';
2
+ export declare const ConfirmDeleteSkillDialog: (props: {
3
+ readonly skill: {
4
+ readonly userSkillId: string;
5
+ readonly name: string;
6
+ } | null;
7
+ readonly onOpenChange: (open: boolean) => void;
8
+ readonly onDeleted: (outcome: DeleteSkillOutcome) => void;
9
+ }) => import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { ToolCallData } from '../../stream/belong-data-parts.ts';
2
+ export declare const SkillLibraryToolSync: ({ data }: {
3
+ readonly data: ToolCallData;
4
+ }) => null;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Skills — the rail surface for the user's OWN skill library in the current
3
+ * workspace (skill library spec §11.3): what they uploaded, or asked the
4
+ * assistant to save. Company skills are not listed here (D3).
5
+ *
6
+ * PROPLESS, like `PromptsListSurface` and `ConnectorsListSurface`: it reads its
7
+ * own server state, so a route, a test and a story mount it the same way, and a
8
+ * reload renders what the live view rendered (§41).
9
+ *
10
+ * States, in the order they win:
11
+ *
12
+ * scope missing → feature absent → rows / empty → outage (+ Retry) → loading
13
+ *
14
+ * Rows beat an outage on purpose: a failed BACKGROUND refetch keeps the list
15
+ * the user is looking at instead of replacing it with an error.
16
+ *
17
+ * The on/off control is an inline SWITCH, not a menu item: turning a skill off
18
+ * is the frequent action, and a row has only two others (Download, Delete). It
19
+ * flips at once, locks while its own request runs, and snaps back on failure.
20
+ *
21
+ * NOTHING HERE IS RED (§42). An outage, a failed toggle, download or delete is
22
+ * an ordinary thing that happens to a working product, said in orange. The only
23
+ * red is the delete dialog's confirm button, and a refused upload inside the
24
+ * upload dialog. No search in v1 (at most 50 skills per workspace; spec §17).
25
+ */
26
+ export declare const SkillsListSurface: () => import("react").JSX.Element;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Upload a skill someone shared with you — a `.zip` or `.skill` (skill library
3
+ * spec §11.4).
4
+ *
5
+ * THREE steps, one component each way through:
6
+ *
7
+ * choose (drop zone + trust line) → replace? (only on `name_taken`) → saved
8
+ *
9
+ * WARN, don't block, on scripts (D10). The trust line is ALWAYS visible before
10
+ * anything is sent, and the saved step badges "Has scripts". Clicking Upload
11
+ * is the user's explicit consent; the D4 approval card is for the agent acting
12
+ * on its own.
13
+ *
14
+ * EVERY server answer is a sentence, matched exhaustively (§19): a new refusal
15
+ * the route starts returning is a compile error here, never a silent "couldn't
16
+ * upload". The copy names the product only (§42) — never SKILL.md, frontmatter,
17
+ * archive or bundle.
18
+ *
19
+ * RED only for a refused submit, inside this dialog (§42). The surface behind
20
+ * it stays orange.
21
+ *
22
+ * The retry key: minted when the dialog opens and again on every accepted
23
+ * pick. A retry of the same pick reuses it (a lost response comes back
24
+ * `idempotent`); a different file never reuses it (the server would answer
25
+ * `client_save_id_reused`). If that retry fails AGAIN with the generic error
26
+ * (which is where `client_save_id_reused` lands), the file is kept and a new key
27
+ * is minted, so the user can never loop on the same 400.
28
+ */
29
+ export declare const UploadSkillDialog: (props: {
30
+ readonly open: boolean;
31
+ readonly onOpenChange: (open: boolean) => void;
32
+ }) => import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Client pre-checks for the archive a user picks in the upload dialog. The
3
+ * server stays the authority (it re-validates everything); these exist so an
4
+ * obviously wrong file is refused before 10 MB crosses the wire. Plain `.ts`
5
+ * so `UploadSkillDialog.tsx` stays a component-only Fast Refresh boundary.
6
+ */
7
+ export type SkillArchiveFileCheck = "ok" | "wrong_type" | "too_large";
8
+ /** The file input's `accept` list, derived from the shared extensions. */
9
+ export declare const SKILL_ARCHIVE_ACCEPT: string;
10
+ export declare const checkSkillArchiveFile: (file: {
11
+ readonly name: string;
12
+ readonly size: number;
13
+ }) => SkillArchiveFileCheck;
14
+ /** Whole megabytes for copy ("max 10 MB"). */
15
+ export declare const megabytesFloor: (bytes: number) => number;