@stigmer/react 3.6.0 → 3.8.0

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 (260) hide show
  1. package/billing/CreditLedgerTable.d.ts.map +1 -1
  2. package/billing/CreditLedgerTable.js +2 -7
  3. package/billing/CreditLedgerTable.js.map +1 -1
  4. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  5. package/channel/AgentChannelsPanel.js +21 -2
  6. package/channel/AgentChannelsPanel.js.map +1 -1
  7. package/channel/ChannelConversationsDialog.d.ts +12 -4
  8. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  9. package/channel/ChannelConversationsDialog.js +18 -24
  10. package/channel/ChannelConversationsDialog.js.map +1 -1
  11. package/channel/providers.d.ts +23 -0
  12. package/channel/providers.d.ts.map +1 -1
  13. package/channel/providers.js +4 -0
  14. package/channel/providers.js.map +1 -1
  15. package/channel/useSaveAgentChannel.d.ts +5 -4
  16. package/channel/useSaveAgentChannel.d.ts.map +1 -1
  17. package/channel/useSaveAgentChannel.js +18 -4
  18. package/channel/useSaveAgentChannel.js.map +1 -1
  19. package/composer/ComposerToolbar.d.ts +6 -1
  20. package/composer/ComposerToolbar.d.ts.map +1 -1
  21. package/composer/ComposerToolbar.js +2 -2
  22. package/composer/ComposerToolbar.js.map +1 -1
  23. package/composer/SessionComposer.d.ts +9 -0
  24. package/composer/SessionComposer.d.ts.map +1 -1
  25. package/composer/SessionComposer.js +13 -2
  26. package/composer/SessionComposer.js.map +1 -1
  27. package/conversation/ConversationAttentionBanner.d.ts +22 -0
  28. package/conversation/ConversationAttentionBanner.d.ts.map +1 -0
  29. package/conversation/ConversationAttentionBanner.js +25 -0
  30. package/conversation/ConversationAttentionBanner.js.map +1 -0
  31. package/conversation/ConversationComposer.d.ts +41 -0
  32. package/conversation/ConversationComposer.d.ts.map +1 -0
  33. package/conversation/ConversationComposer.js +57 -0
  34. package/conversation/ConversationComposer.js.map +1 -0
  35. package/conversation/ConversationControlBanner.d.ts +52 -0
  36. package/conversation/ConversationControlBanner.d.ts.map +1 -0
  37. package/conversation/ConversationControlBanner.js +59 -0
  38. package/conversation/ConversationControlBanner.js.map +1 -0
  39. package/conversation/ConversationListPane.d.ts +68 -0
  40. package/conversation/ConversationListPane.d.ts.map +1 -0
  41. package/conversation/ConversationListPane.js +120 -0
  42. package/conversation/ConversationListPane.js.map +1 -0
  43. package/conversation/ConversationTimelineView.d.ts +46 -0
  44. package/conversation/ConversationTimelineView.d.ts.map +1 -0
  45. package/conversation/ConversationTimelineView.js +166 -0
  46. package/conversation/ConversationTimelineView.js.map +1 -0
  47. package/conversation/ConversationsWorkbench.d.ts +63 -0
  48. package/conversation/ConversationsWorkbench.d.ts.map +1 -0
  49. package/conversation/ConversationsWorkbench.js +165 -0
  50. package/conversation/ConversationsWorkbench.js.map +1 -0
  51. package/conversation/conversationPresentation.d.ts +137 -0
  52. package/conversation/conversationPresentation.d.ts.map +1 -0
  53. package/conversation/conversationPresentation.js +230 -0
  54. package/conversation/conversationPresentation.js.map +1 -0
  55. package/conversation/index.d.ts +26 -0
  56. package/conversation/index.d.ts.map +1 -0
  57. package/conversation/index.js +14 -0
  58. package/conversation/index.js.map +1 -0
  59. package/conversation/polling.d.ts +39 -0
  60. package/conversation/polling.d.ts.map +1 -0
  61. package/conversation/polling.js +39 -0
  62. package/conversation/polling.js.map +1 -0
  63. package/conversation/useConversation.d.ts +61 -0
  64. package/conversation/useConversation.d.ts.map +1 -0
  65. package/conversation/useConversation.js +153 -0
  66. package/conversation/useConversation.js.map +1 -0
  67. package/conversation/useConversationList.d.ts +98 -0
  68. package/conversation/useConversationList.d.ts.map +1 -0
  69. package/conversation/useConversationList.js +200 -0
  70. package/conversation/useConversationList.js.map +1 -0
  71. package/conversation/useConversationParticipation.d.ts +63 -0
  72. package/conversation/useConversationParticipation.d.ts.map +1 -0
  73. package/conversation/useConversationParticipation.js +84 -0
  74. package/conversation/useConversationParticipation.js.map +1 -0
  75. package/conversation/useConversationTimeline.d.ts +71 -0
  76. package/conversation/useConversationTimeline.d.ts.map +1 -0
  77. package/conversation/useConversationTimeline.js +152 -0
  78. package/conversation/useConversationTimeline.js.map +1 -0
  79. package/conversation/useConversationsWantsHumanCount.d.ts +42 -0
  80. package/conversation/useConversationsWantsHumanCount.d.ts.map +1 -0
  81. package/conversation/useConversationsWantsHumanCount.js +40 -0
  82. package/conversation/useConversationsWantsHumanCount.js.map +1 -0
  83. package/execution/useCreateAgentExecution.d.ts +14 -0
  84. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  85. package/execution/useCreateAgentExecution.js +5 -0
  86. package/execution/useCreateAgentExecution.js.map +1 -1
  87. package/index.d.ts +6 -2
  88. package/index.d.ts.map +1 -1
  89. package/index.js +14 -5
  90. package/index.js.map +1 -1
  91. package/internal/Pagination.d.ts +15 -0
  92. package/internal/Pagination.d.ts.map +1 -0
  93. package/internal/Pagination.js +20 -0
  94. package/internal/Pagination.js.map +1 -0
  95. package/internal/tooltip.d.ts.map +1 -1
  96. package/internal/tooltip.js +7 -1
  97. package/internal/tooltip.js.map +1 -1
  98. package/internal/useAutoScroll.d.ts +25 -4
  99. package/internal/useAutoScroll.d.ts.map +1 -1
  100. package/internal/useAutoScroll.js +55 -15
  101. package/internal/useAutoScroll.js.map +1 -1
  102. package/internal/useFetch.d.ts.map +1 -1
  103. package/internal/useFetch.js +14 -4
  104. package/internal/useFetch.js.map +1 -1
  105. package/models/ModelSelector.d.ts +45 -1
  106. package/models/ModelSelector.d.ts.map +1 -1
  107. package/models/ModelSelector.js +49 -6
  108. package/models/ModelSelector.js.map +1 -1
  109. package/models/index.d.ts +2 -0
  110. package/models/index.d.ts.map +1 -1
  111. package/models/index.js +1 -0
  112. package/models/index.js.map +1 -1
  113. package/models/registry.d.ts +11 -0
  114. package/models/registry.d.ts.map +1 -1
  115. package/models/registry.js +3 -0
  116. package/models/registry.js.map +1 -1
  117. package/models/service-tier.d.ts +27 -0
  118. package/models/service-tier.d.ts.map +1 -0
  119. package/models/service-tier.js +34 -0
  120. package/models/service-tier.js.map +1 -0
  121. package/package.json +4 -4
  122. package/schedule/ScheduleDetailView.d.ts +31 -8
  123. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  124. package/schedule/ScheduleDetailView.js +441 -29
  125. package/schedule/ScheduleDetailView.js.map +1 -1
  126. package/schedule/ScheduleForm.d.ts +7 -4
  127. package/schedule/ScheduleForm.d.ts.map +1 -1
  128. package/schedule/ScheduleForm.js +94 -8
  129. package/schedule/ScheduleForm.js.map +1 -1
  130. package/schedule/ScheduleRunsTable.d.ts +72 -0
  131. package/schedule/ScheduleRunsTable.d.ts.map +1 -0
  132. package/schedule/ScheduleRunsTable.js +161 -0
  133. package/schedule/ScheduleRunsTable.js.map +1 -0
  134. package/schedule/index.d.ts +6 -0
  135. package/schedule/index.d.ts.map +1 -1
  136. package/schedule/index.js +3 -0
  137. package/schedule/index.js.map +1 -1
  138. package/schedule/useScheduleRuns.d.ts +44 -0
  139. package/schedule/useScheduleRuns.d.ts.map +1 -0
  140. package/schedule/useScheduleRuns.js +48 -0
  141. package/schedule/useScheduleRuns.js.map +1 -0
  142. package/schedule/useTriggerSchedule.d.ts +23 -10
  143. package/schedule/useTriggerSchedule.d.ts.map +1 -1
  144. package/schedule/useTriggerSchedule.js +28 -9
  145. package/schedule/useTriggerSchedule.js.map +1 -1
  146. package/schedule/useUpdateScheduleSpec.d.ts +49 -0
  147. package/schedule/useUpdateScheduleSpec.d.ts.map +1 -0
  148. package/schedule/useUpdateScheduleSpec.js +70 -0
  149. package/schedule/useUpdateScheduleSpec.js.map +1 -0
  150. package/session/useNewSessionFlow.d.ts.map +1 -1
  151. package/session/useNewSessionFlow.js +1 -0
  152. package/session/useNewSessionFlow.js.map +1 -1
  153. package/session/useSessionConversation.d.ts +11 -0
  154. package/session/useSessionConversation.d.ts.map +1 -1
  155. package/session/useSessionConversation.js +1 -0
  156. package/session/useSessionConversation.js.map +1 -1
  157. package/session/useSessionPageFlow.d.ts.map +1 -1
  158. package/session/useSessionPageFlow.js +1 -0
  159. package/session/useSessionPageFlow.js.map +1 -1
  160. package/sharing/useSaveAgentShare.d.ts +10 -1
  161. package/sharing/useSaveAgentShare.d.ts.map +1 -1
  162. package/sharing/useSaveAgentShare.js +9 -0
  163. package/sharing/useSaveAgentShare.js.map +1 -1
  164. package/sidebar/WorkspaceSidebar.d.ts +12 -4
  165. package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
  166. package/sidebar/WorkspaceSidebar.js +19 -7
  167. package/sidebar/WorkspaceSidebar.js.map +1 -1
  168. package/src/billing/CreditLedgerTable.tsx +3 -42
  169. package/src/channel/AgentChannelsPanel.tsx +33 -2
  170. package/src/channel/ChannelConversationsDialog.tsx +22 -25
  171. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +36 -5
  172. package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +38 -1
  173. package/src/channel/__tests__/useSaveAgentChannel.test.tsx +26 -0
  174. package/src/channel/providers.ts +27 -0
  175. package/src/channel/useSaveAgentChannel.ts +18 -4
  176. package/src/composer/ComposerToolbar.tsx +9 -0
  177. package/src/composer/SessionComposer.tsx +24 -1
  178. package/src/composer/__tests__/SessionComposer-serviceTier.test.tsx +157 -0
  179. package/src/conversation/ConversationAttentionBanner.tsx +77 -0
  180. package/src/conversation/ConversationComposer.tsx +156 -0
  181. package/src/conversation/ConversationControlBanner.tsx +193 -0
  182. package/src/conversation/ConversationListPane.tsx +459 -0
  183. package/src/conversation/ConversationTimelineView.tsx +435 -0
  184. package/src/conversation/ConversationsWorkbench.tsx +378 -0
  185. package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +82 -0
  186. package/src/conversation/__tests__/ConversationComposer.test.tsx +160 -0
  187. package/src/conversation/__tests__/ConversationControlBanner.test.tsx +190 -0
  188. package/src/conversation/__tests__/ConversationListPane.test.tsx +372 -0
  189. package/src/conversation/__tests__/ConversationTimelineView.layout.test.tsx +160 -0
  190. package/src/conversation/__tests__/ConversationTimelineView.test.tsx +405 -0
  191. package/src/conversation/__tests__/ConversationsWorkbench.test.tsx +860 -0
  192. package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +235 -0
  193. package/src/conversation/__tests__/a11y/harness.tsx +100 -0
  194. package/src/conversation/__tests__/conversation-tooltips.layout.test.tsx +167 -0
  195. package/src/conversation/__tests__/conversationPollingComposition.test.tsx +138 -0
  196. package/src/conversation/__tests__/conversationPresentation.test.ts +289 -0
  197. package/src/conversation/__tests__/useConversation.test.tsx +243 -0
  198. package/src/conversation/__tests__/useConversationList.test.tsx +492 -0
  199. package/src/conversation/__tests__/useConversationParticipation.test.tsx +190 -0
  200. package/src/conversation/__tests__/useConversationTimeline.test.tsx +258 -0
  201. package/src/conversation/__tests__/useConversationsWantsHumanCount.test.tsx +102 -0
  202. package/src/conversation/conversationPresentation.ts +305 -0
  203. package/src/conversation/index.ts +80 -0
  204. package/src/conversation/polling.ts +41 -0
  205. package/src/conversation/useConversation.ts +221 -0
  206. package/src/conversation/useConversationList.ts +328 -0
  207. package/src/conversation/useConversationParticipation.ts +178 -0
  208. package/src/conversation/useConversationTimeline.ts +244 -0
  209. package/src/conversation/useConversationsWantsHumanCount.ts +86 -0
  210. package/src/execution/useCreateAgentExecution.ts +18 -0
  211. package/src/index.ts +76 -4
  212. package/src/internal/Pagination.tsx +72 -0
  213. package/src/internal/__tests__/fake-timer-slices.ts +29 -0
  214. package/src/internal/__tests__/useAutoScroll.layout.test.tsx +143 -0
  215. package/src/internal/__tests__/useAutoScroll.test.tsx +62 -5
  216. package/src/internal/__tests__/useFetch-poll-under-render-pressure.test.tsx +79 -0
  217. package/src/internal/tooltip.tsx +6 -1
  218. package/src/internal/useAutoScroll.ts +66 -20
  219. package/src/internal/useFetch.ts +15 -4
  220. package/src/models/ModelSelector.tsx +133 -4
  221. package/src/models/__tests__/ModelSelector-serviceTier.test.tsx +256 -0
  222. package/src/models/__tests__/useModelRegistry.test.tsx +15 -0
  223. package/src/models/index.ts +2 -0
  224. package/src/models/registry.ts +17 -0
  225. package/src/models/service-tier.ts +49 -0
  226. package/src/schedule/ScheduleDetailView.tsx +1179 -111
  227. package/src/schedule/ScheduleForm.tsx +218 -7
  228. package/src/schedule/ScheduleRunsTable.tsx +424 -0
  229. package/src/schedule/__tests__/ScheduleDetailView.test.tsx +431 -8
  230. package/src/schedule/__tests__/scheduleCreation.test.tsx +197 -0
  231. package/src/schedule/__tests__/scheduleHooks.test.tsx +94 -7
  232. package/src/schedule/index.ts +12 -0
  233. package/src/schedule/useScheduleRuns.ts +93 -0
  234. package/src/schedule/useTriggerSchedule.ts +39 -14
  235. package/src/schedule/useUpdateScheduleSpec.ts +108 -0
  236. package/src/session/useNewSessionFlow.ts +1 -0
  237. package/src/session/useSessionConversation.ts +12 -0
  238. package/src/session/useSessionPageFlow.ts +1 -0
  239. package/src/sharing/__tests__/useSaveAgentShare.test.tsx +55 -1
  240. package/src/sharing/__tests__/useShareToolReadiness.test.tsx +1 -0
  241. package/src/sharing/useSaveAgentShare.ts +19 -1
  242. package/src/sidebar/WorkspaceSidebar.tsx +62 -3
  243. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +56 -1
  244. package/src/workflow/__tests__/inspector-forms.test.tsx +119 -2
  245. package/src/workflow/inspector/forms/AgentCallForm.tsx +260 -37
  246. package/src/workflow/inspector/tabs/RuntimeTab.tsx +72 -33
  247. package/src/workflow/starter-workflow-yaml.ts +2 -1
  248. package/styles.css +1 -1
  249. package/workflow/inspector/forms/AgentCallForm.d.ts +18 -2
  250. package/workflow/inspector/forms/AgentCallForm.d.ts.map +1 -1
  251. package/workflow/inspector/forms/AgentCallForm.js +87 -9
  252. package/workflow/inspector/forms/AgentCallForm.js.map +1 -1
  253. package/workflow/inspector/tabs/RuntimeTab.d.ts +2 -1
  254. package/workflow/inspector/tabs/RuntimeTab.d.ts.map +1 -1
  255. package/workflow/inspector/tabs/RuntimeTab.js +31 -5
  256. package/workflow/inspector/tabs/RuntimeTab.js.map +1 -1
  257. package/workflow/starter-workflow-yaml.d.ts +1 -1
  258. package/workflow/starter-workflow-yaml.d.ts.map +1 -1
  259. package/workflow/starter-workflow-yaml.js +2 -1
  260. package/workflow/starter-workflow-yaml.js.map +1 -1
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Props for {@link Pagination}. */
2
+ export interface PaginationProps {
3
+ /** Current page number, 1-indexed. */
4
+ readonly pageNum: number;
5
+ /** Total number of pages. Render the control only when > 1. */
6
+ readonly totalPages: number;
7
+ /** Called with the new page number when the user navigates. */
8
+ readonly onPageChange: (page: number) => void;
9
+ /** Accessible label naming what is being paginated (e.g. "Run history pagination"). */
10
+ readonly ariaLabel: string;
11
+ /** Additional CSS classes for the root container. */
12
+ readonly className?: string;
13
+ }
14
+ export declare function Pagination({ pageNum, totalPages, onPageChange, ariaLabel, className, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../src/internal/Pagination.tsx"],"names":[],"mappings":"AAiBA,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,GACV,EAAE,eAAe,2CA4BjB"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Shared prev/next pagination control for paginated SDK tables.
5
+ *
6
+ * Extracted from `CreditLedgerTable` (its original, file-private home)
7
+ * when `ScheduleRunsTable` became the second consumer. Deliberately
8
+ * minimal — Previous / "Page N of M" / Next — because every paginated
9
+ * surface in the SDK so far wants exactly this shape; page-number
10
+ * jumping earns its complexity only when a consumer actually needs it.
11
+ *
12
+ * Internal (not barrel-exported): the public contract is each table
13
+ * component, not this control.
14
+ */
15
+ import { cn } from "@stigmer/theme";
16
+ const buttonClasses = cn("rounded-md px-2.5 py-1 text-xs font-medium text-muted-foreground transition-colors", "hover:bg-accent hover:text-foreground", "disabled:pointer-events-none disabled:opacity-40");
17
+ export function Pagination({ pageNum, totalPages, onPageChange, ariaLabel, className, }) {
18
+ return (_jsxs("div", { className: cn("flex items-center justify-between", className), role: "navigation", "aria-label": ariaLabel, children: [_jsx("button", { type: "button", disabled: pageNum <= 1, onClick: () => onPageChange(pageNum - 1), className: buttonClasses, children: "Previous" }), _jsxs("span", { className: "text-xs tabular-nums text-muted-foreground", children: ["Page ", pageNum, " of ", totalPages] }), _jsx("button", { type: "button", disabled: pageNum >= totalPages, onClick: () => onPageChange(pageNum + 1), className: buttonClasses, children: "Next" })] }));
19
+ }
20
+ //# sourceMappingURL=Pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../src/internal/Pagination.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAgBpC,MAAM,aAAa,GAAG,EAAE,CACtB,oFAAoF,EACpF,uCAAuC,EACvC,kDAAkD,CACnD,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,GACO;IAChB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,SAAS,CAAC,EAC7D,IAAI,EAAC,YAAY,gBACL,SAAS,aAErB,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,IAAI,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EACxC,SAAS,EAAE,aAAa,yBAGjB,EACT,gBAAM,SAAS,EAAC,4CAA4C,sBACpD,OAAO,UAAM,UAAU,IACxB,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,IAAI,UAAU,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EACxC,SAAS,EAAE,aAAa,qBAGjB,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgBrE,iBAAS,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAE9D;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAElD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAE5D;AAED,iBAAS,cAAc,CAAC,EACtB,IAAc,EACd,UAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,2CAyB/D;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAgBrE,iBAAS,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAE9D;AAED,iBAAS,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,2CAElD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAE5D;AAED,iBAAS,cAAc,CAAC,EACtB,IAAc,EACd,UAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAC7B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,2CA8B/D;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -25,7 +25,13 @@ function TooltipTrigger(props) {
25
25
  }
26
26
  function TooltipContent({ side = "right", sideOffset = 8, className, children, ...props }) {
27
27
  const portalContainer = useStigmerPortalContainer();
28
- return (_jsx(TooltipPrimitive.Portal, { container: portalContainer, children: _jsx(TooltipPrimitive.Positioner, { className: "isolate z-50 outline-none", side: side, sideOffset: sideOffset, children: _jsx(TooltipPrimitive.Popup, { className: cn("bg-popover text-popover-foreground ring-foreground/10 z-50 max-w-64 rounded-lg px-2.5 py-1.5 text-sm shadow-md ring-1", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "duration-100", className), ...props, children: children }) }) }));
28
+ return (
29
+ // `?? undefined`, never a raw null: Base UI treats an EXPLICIT null
30
+ // container as "wait for one" and renders the popup nowhere, while
31
+ // undefined falls back to document.body — the standalone behavior
32
+ // `useStigmerPortalContainer` documents. Without the coalesce, a
33
+ // tooltip outside a StigmerProvider opens invisibly.
34
+ _jsx(TooltipPrimitive.Portal, { container: portalContainer ?? undefined, children: _jsx(TooltipPrimitive.Positioner, { className: "isolate z-50 outline-none", side: side, sideOffset: sideOffset, children: _jsx(TooltipPrimitive.Popup, { className: cn("bg-popover text-popover-foreground ring-foreground/10 z-50 max-w-64 rounded-lg px-2.5 py-1.5 text-sm shadow-md ring-1", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", "duration-100", className), ...props, children: children }) }) }));
29
35
  }
30
36
  export { Tooltip, TooltipProvider, TooltipTrigger, TooltipContent };
31
37
  //# sourceMappingURL=tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAsC;IAC7D,OAAO,KAAC,gBAAgB,CAAC,QAAQ,OAAK,KAAK,GAAI,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,OAAO,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,GAAI,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAqC;IAC3D,OAAO,KAAC,gBAAgB,CAAC,OAAO,OAAK,KAAK,GAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAEsD;IAC9D,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IAEpD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,eAAe,YACjD,KAAC,gBAAgB,CAAC,UAAU,IAC1B,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,YAEtB,KAAC,gBAAgB,CAAC,KAAK,IACrB,SAAS,EAAE,EAAE,CACX,uHAAuH,EACvH,+DAA+D,EAC/D,wEAAwE,EACxE,cAAc,EACd,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACc,GACG,GACN,CAC3B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/internal/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,8EAA8E;AAE9E,SAAS,eAAe,CAAC,KAAsC;IAC7D,OAAO,KAAC,gBAAgB,CAAC,QAAQ,OAAK,KAAK,GAAI,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,KAAkC;IACjD,OAAO,KAAC,gBAAgB,CAAC,IAAI,OAAK,KAAK,GAAI,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAqC;IAC3D,OAAO,KAAC,gBAAgB,CAAC,OAAO,OAAK,KAAK,GAAI,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,IAAI,GAAG,OAAO,EACd,UAAU,GAAG,CAAC,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EAEsD;IAC9D,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IAEpD,OAAO;IACL,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,iEAAiE;IACjE,qDAAqD;IACrD,KAAC,gBAAgB,CAAC,MAAM,IAAC,SAAS,EAAE,eAAe,IAAI,SAAS,YAC9D,KAAC,gBAAgB,CAAC,UAAU,IAC1B,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,YAEtB,KAAC,gBAAgB,CAAC,KAAK,IACrB,SAAS,EAAE,EAAE,CACX,uHAAuH,EACvH,+DAA+D,EAC/D,wEAAwE,EACxE,cAAc,EACd,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACc,GACG,GACN,CAC3B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}
@@ -1,10 +1,18 @@
1
1
  export interface UseAutoScrollReturn {
2
- /** Attach to the scrollable container. */
2
+ /** Attach to the scrollable container. Must be mounted from the first render. */
3
3
  readonly scrollRef: React.RefObject<HTMLDivElement | null>;
4
- /** Attach to a zero-height div as the last child of the scroll container. */
4
+ /**
5
+ * Attach to a zero-height div as the last child of the scroll container.
6
+ * Must be mounted from the first render.
7
+ */
5
8
  readonly sentinelRef: React.RefObject<HTMLDivElement | null>;
6
- /** Attach to a wrapper div around the thread content (ResizeObserver target). */
7
- readonly contentRef: React.RefObject<HTMLDivElement | null>;
9
+ /**
10
+ * Attach to a wrapper div around the thread content (ResizeObserver
11
+ * target). MAY mount late or round-trip through unmount — a callback
12
+ * ref, so consumers whose content sits inside a loading branch (the
13
+ * conversation timeline) are observed the moment the wrapper appears.
14
+ */
15
+ readonly contentRef: React.RefCallback<HTMLDivElement>;
8
16
  /** True when the thread auto-scrolls to follow new content. */
9
17
  readonly isFollowing: boolean;
10
18
  /** Scroll to the latest content and re-engage follow mode. */
@@ -26,6 +34,19 @@ export interface UseAutoScrollReturn {
26
34
  * detects height growth and triggers rAF-batched scroll writes when
27
35
  * in the Following state.
28
36
  *
37
+ * Ref contract (asymmetric on purpose): the scroller and sentinel must
38
+ * exist from the first render — every thread renders its scroll pane
39
+ * unconditionally, and the observers that need them attach once at
40
+ * mount. The CONTENT wrapper may appear later or round-trip through
41
+ * unmount: chat threads legitimately render a loading skeleton first
42
+ * (the conversation timeline does), so `contentRef` is a callback ref
43
+ * that owns the ResizeObserver's lifecycle — React hands it the node on
44
+ * attach and `null` on detach, so the observer follows the wrapper
45
+ * wherever it goes, with no render cost. Attaching only at mount
46
+ * shipped channel-conversations F-09: a late-mounting wrapper was never
47
+ * observed, so every conversation opened at its oldest message and
48
+ * nothing ever scrolled the view.
49
+ *
29
50
  * @internal Not part of the public API.
30
51
  */
31
52
  export declare function useAutoScroll(): UseAutoScrollReturn;
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoScroll.d.ts","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7D,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5D,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CA6EnD"}
1
+ {"version":3,"file":"useAutoScroll.d.ts","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACvD,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CAsGnD"}
@@ -23,12 +23,24 @@ const NEAR_BOTTOM_MARGIN_PX = 80;
23
23
  * detects height growth and triggers rAF-batched scroll writes when
24
24
  * in the Following state.
25
25
  *
26
+ * Ref contract (asymmetric on purpose): the scroller and sentinel must
27
+ * exist from the first render — every thread renders its scroll pane
28
+ * unconditionally, and the observers that need them attach once at
29
+ * mount. The CONTENT wrapper may appear later or round-trip through
30
+ * unmount: chat threads legitimately render a loading skeleton first
31
+ * (the conversation timeline does), so `contentRef` is a callback ref
32
+ * that owns the ResizeObserver's lifecycle — React hands it the node on
33
+ * attach and `null` on detach, so the observer follows the wrapper
34
+ * wherever it goes, with no render cost. Attaching only at mount
35
+ * shipped channel-conversations F-09: a late-mounting wrapper was never
36
+ * observed, so every conversation opened at its oldest message and
37
+ * nothing ever scrolled the view.
38
+ *
26
39
  * @internal Not part of the public API.
27
40
  */
28
41
  export function useAutoScroll() {
29
42
  const scrollRef = useRef(null);
30
43
  const sentinelRef = useRef(null);
31
- const contentRef = useRef(null);
32
44
  const [isFollowing, setIsFollowing] = useState(true);
33
45
  const isFollowingRef = useRef(true);
34
46
  const rafIdRef = useRef(0);
@@ -46,11 +58,20 @@ export function useAutoScroll() {
46
58
  // Establish initial position at the bottom so the first IO
47
59
  // callback sees the sentinel as intersecting.
48
60
  scroller.scrollTop = scroller.scrollHeight;
49
- const io = new IntersectionObserver((entries) => {
50
- const entry = entries[0];
51
- if (!entry)
61
+ const io = new IntersectionObserver(() => {
62
+ // The delivery is the signal; the LIVE geometry is the truth.
63
+ // An entry snapshots geometry at OBSERVATION time and can be
64
+ // delivered after the reader has scrolled again — measured in
65
+ // the F-09 net: a stale "visible" (captured at the pinned
66
+ // instant) landed after a scroll-up, re-engaged follow, and the
67
+ // next growth yanked the reader to the bottom. Measuring at
68
+ // delivery time keeps the observer as a poll-free change
69
+ // detector without trusting its stale payload.
70
+ const el = scrollRef.current;
71
+ if (!el)
52
72
  return;
53
- const visible = entry.isIntersecting;
73
+ const visible = el.scrollHeight - el.scrollTop - el.clientHeight <=
74
+ NEAR_BOTTOM_MARGIN_PX;
54
75
  isFollowingRef.current = visible;
55
76
  setIsFollowing(visible);
56
77
  }, {
@@ -62,25 +83,44 @@ export function useAutoScroll() {
62
83
  return () => io.disconnect();
63
84
  }, []);
64
85
  // --- ResizeObserver: scroll on content height growth while following ---
65
- useEffect(() => {
66
- const content = contentRef.current;
67
- if (!content || !scrollRef.current)
86
+ // Lifecycle lives in the callback ref (not a run-once effect): the
87
+ // observer must adopt a wrapper that mounts after a loading branch and
88
+ // let go of one that unmounts — including on component unmount, where
89
+ // React also calls the ref with null. Its initial delivery on observe()
90
+ // doubles as the first-fill bottom pin. The scroller is read lazily at
91
+ // fire time (deliveries are async, after every commit's refs are set).
92
+ const resizeObserverRef = useRef(null);
93
+ const contentRef = useCallback((node) => {
94
+ resizeObserverRef.current?.disconnect();
95
+ resizeObserverRef.current = null;
96
+ cancelAnimationFrame(rafIdRef.current);
97
+ if (!node)
68
98
  return;
69
99
  const ro = new ResizeObserver(() => {
70
100
  if (!isFollowingRef.current)
71
101
  return;
72
102
  cancelAnimationFrame(rafIdRef.current);
103
+ // The reader-took-control guard, decided at WRITE time: a frame
104
+ // can lag (headless and busy tabs throttle rAF) long enough for
105
+ // the reader to scroll up between scheduling and writing, and a
106
+ // stale pin then yanks them back to the bottom (the F-09 suite's
107
+ // scrolled-up case, flaking ~1-in-5 under real Chromium). The
108
+ // discriminator is scrollTop itself: content growth never moves
109
+ // it, only the reader does — `isFollowingRef` cannot arbitrate
110
+ // here because growth makes the sentinel leave the viewport
111
+ // transiently, so the flag reads false mid-pin by design.
112
+ const scheduledAt = scrollRef.current?.scrollTop ?? null;
73
113
  rafIdRef.current = requestAnimationFrame(() => {
74
114
  const el = scrollRef.current;
75
- if (el)
76
- el.scrollTop = el.scrollHeight;
115
+ if (!el)
116
+ return;
117
+ if (scheduledAt !== null && el.scrollTop !== scheduledAt)
118
+ return;
119
+ el.scrollTop = el.scrollHeight;
77
120
  });
78
121
  });
79
- ro.observe(content);
80
- return () => {
81
- ro.disconnect();
82
- cancelAnimationFrame(rafIdRef.current);
83
- };
122
+ ro.observe(node);
123
+ resizeObserverRef.current = ro;
84
124
  }, []);
85
125
  const jumpToLatest = useCallback(() => {
86
126
  const el = scrollRef.current;
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoScroll.js","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAejC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEvD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3B,oEAAoE;IACpE,sDAAsD;IACtD,SAAS,CAAC,GAAG,EAAE;QACb,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IACvC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEnC,2DAA2D;QAC3D,8CAA8C;QAC9C,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;QAE3C,MAAM,EAAE,GAAG,IAAI,oBAAoB,CACjC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC;YACrC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;YACjC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,EACD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,WAAW,qBAAqB,QAAQ;YACpD,SAAS,EAAE,CAAC;SACb,CACF,CAAC;QAEF,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAE3C,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,OAAO;gBAAE,OAAO;YACpC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,QAAQ,CAAC,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE;gBAC5C,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;gBAC7B,IAAI,EAAE;oBAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEpB,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;QAC/B,4DAA4D;QAC5D,6CAA6C;QAC7C,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,cAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"useAutoScroll.js","sourceRoot":"","sources":["../../src/internal/useAutoScroll.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAItF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAClC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,CAAC,CAAC,CAmInB"}
1
+ {"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,OAAO,CAAC;AAItF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAExC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAClC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,CAAC,EACd,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,CAAC,CAAC,CA8InB"}
@@ -107,19 +107,29 @@ export function useFetch(fetchFn, deps, initialData, options) {
107
107
  cancelled.current = true;
108
108
  };
109
109
  }, [...deps, fetchKey]);
110
+ // The two effects below use `fetchFn` only as an enabled/disabled
111
+ // signal — they trigger fetches through `refetch()`, and the fetch
112
+ // effect above already closes over the current render's `fetchFn`.
113
+ // Keying them on this boolean instead of on `fetchFn` itself is
114
+ // load-bearing: consumers pass inline closures (referentially new
115
+ // every render), so an identity dep tears the interval down on every
116
+ // render — and under any co-mounted faster render source the timer
117
+ // never completes a period and the consumer never polls at all
118
+ // (channel-conversations F-14; pinned by the render-pressure tests).
119
+ const fetchEnabled = fetchFn !== null;
110
120
  const refetchInterval = options?.refetchInterval;
111
121
  useEffect(() => {
112
- if (!refetchInterval || refetchInterval <= 0 || !fetchFn)
122
+ if (!refetchInterval || refetchInterval <= 0 || !fetchEnabled)
113
123
  return;
114
124
  const id = setInterval(() => {
115
125
  if (!isFetchingRef.current)
116
126
  refetch();
117
127
  }, refetchInterval);
118
128
  return () => clearInterval(id);
119
- }, [refetchInterval, fetchFn, refetch]);
129
+ }, [refetchInterval, fetchEnabled, refetch]);
120
130
  const refetchOnWindowFocus = options?.refetchOnWindowFocus;
121
131
  useEffect(() => {
122
- if (!refetchOnWindowFocus || !fetchFn)
132
+ if (!refetchOnWindowFocus || !fetchEnabled)
123
133
  return;
124
134
  if (typeof window === "undefined")
125
135
  return;
@@ -137,7 +147,7 @@ export function useFetch(fetchFn, deps, initialData, options) {
137
147
  window.removeEventListener("focus", onActive);
138
148
  document.removeEventListener("visibilitychange", onVisible);
139
149
  };
140
- }, [refetchOnWindowFocus, fetchFn, refetch]);
150
+ }, [refetchOnWindowFocus, fetchEnabled, refetch]);
141
151
  const isLoading = isFetching && !hasDataRef.current;
142
152
  const isRefetching = isFetching && hasDataRef.current;
143
153
  return { data, isLoading, isRefetching, error, refetch };
@@ -1 +1 @@
1
- {"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../src/internal/useFetch.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAuB,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyDvC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,QAAQ,CACtB,OAAkC,EAClC,IAAoB,EACpB,WAAc,EACd,OAAyB;IAEzB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IAEnC,mEAAmE;IACnE,qEAAqE;IACrE,gEAAgE;IAChE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAI,GAAG,EAAE;QACvC,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;QAC1C,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,CACvB,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAChD,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAE/D,kEAAkE;IAClE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,gEAAgE;IAChE,iEAAiE;IACjE,qEAAqE;IACrE,sEAAsE;IACtE,MAAM,mBAAmB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,WAAW,CAAC,CAAC;YACrB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACnC,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,KAAK,mBAAmB,CAAC,OAAO,CAAC,MAAM;YAClD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;QAEnC,oEAAoE;QACpE,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;gBACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,WAAW,CAAC,CAAC;oBACrB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,WAAW,CAAC,CAAC;gBACrB,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,OAAO,EAAE,CAAC,IAAI,CACZ,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,SAAS,CAAC,OAAO;gBAAE,OAAO;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACjC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,SAAS,CAAC,OAAO;gBAAE,OAAO;YAC9B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;QAChC,CAAC,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,kEAAkE;IAClE,mEAAmE;IACnE,mEAAmE;IACnE,gEAAgE;IAChE,kEAAkE;IAClE,qEAAqE;IACrE,mEAAmE;IACnE,+DAA+D;IAC/D,qEAAqE;IACrE,MAAM,YAAY,GAAG,OAAO,KAAK,IAAI,CAAC;IAEtC,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QACtE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;QACxC,CAAC,EAAE,eAAe,CAAC,CAAC;QACpB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7C,MAAM,oBAAoB,GAAG,OAAO,EAAE,oBAAoB,CAAC;IAC3D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY;YAAE,OAAO;QACnD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;QACxC,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;gBAAE,QAAQ,EAAE,CAAC;QACzD,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9C,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,oBAAoB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IACpD,MAAM,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC;IAEtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type HarnessOption } from "./harness.js";
2
+ import { type ServiceTierOption } from "./service-tier.js";
2
3
  /** Props for {@link ModelSelector}. */
3
4
  export interface ModelSelectorProps {
4
5
  /** Currently selected model ID. */
@@ -39,6 +40,36 @@ export interface ModelSelectorProps {
39
40
  readonly className?: string;
40
41
  /** When true, disables the selector. */
41
42
  readonly disabled?: boolean;
43
+ /**
44
+ * Trigger label shown while `value` is empty, instead of falling back
45
+ * to the registry's default model. Lets a form distinguish "nothing
46
+ * pinned — the platform default applies" from an actual selection
47
+ * (the schedule form's contract: an unset model inherits the
48
+ * surface's platform default). The harness prefix is hidden while
49
+ * the placeholder shows, since no engine is pinned either.
50
+ */
51
+ readonly placeholderLabel?: string;
52
+ /**
53
+ * Current service tier for the selected model (stigmer/stigmer#357).
54
+ * Defaults to "standard". Only meaningful together with
55
+ * {@link onServiceTierChange}.
56
+ */
57
+ readonly serviceTier?: ServiceTierOption;
58
+ /**
59
+ * Called when the user toggles the fast tier. Providing this enables the
60
+ * "Fast tier" switch in the popover's options area (top of the popover,
61
+ * beside the harness row — the Cursor options-panel convention), which
62
+ * renders ONLY while the selected model prices a fast variant
63
+ * ({@link ModelInfo.serviceTiers}) — no dead controls.
64
+ *
65
+ * An active fast tier persists across switches between fast-capable
66
+ * models (the tier is always visible: trigger badge + options switch),
67
+ * so "fast, but on that other model" is one action, not a re-toggle.
68
+ * Selecting a model without a fast tier resets to "standard" through
69
+ * this callback — an unsupported combination can never be submitted
70
+ * (#357, refused at create time).
71
+ */
72
+ readonly onServiceTierChange?: (tier: ServiceTierOption) => void;
42
73
  /**
43
74
  * @deprecated Use {@link onHarnessChange} instead.
44
75
  */
@@ -55,6 +86,19 @@ export interface ModelSelectorProps {
55
86
  * The trigger button displays the current selection in compact format:
56
87
  * `Harness · Model Name ▾` (or just `Model Name ▾` when harness is locked).
57
88
  *
89
+ * **Service tier (#357).** When the consumer opts in via
90
+ * {@link ModelSelectorProps.onServiceTierChange} and the selected model
91
+ * prices a fast variant, a "Fast tier" switch renders in the options area
92
+ * at the TOP of the popover — the first thing visible on open, mirroring
93
+ * Cursor's own options panel (Jakob's Law: our users already know that
94
+ * layout). Deliberately not a per-row affordance: row-level chips crowd
95
+ * the rows and collide with the "Fast/Fastest" speed badge, and an
96
+ * interactive element inside `role="option"` is an ARIA authoring error
97
+ * (option children are presentational). An active fast tier persists
98
+ * across switches between fast-capable models — the visible badge and
99
+ * switch keep the state honest — and resets only for models with no fast
100
+ * variant, where it would be refused at create time.
101
+ *
58
102
  * @example
59
103
  * ```tsx
60
104
  * <ModelSelector
@@ -65,5 +109,5 @@ export interface ModelSelectorProps {
65
109
  * />
66
110
  * ```
67
111
  */
68
- export declare function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy, showSpeedBadge, showDescriptions, compact, className, disabled, }: ModelSelectorProps): import("react/jsx-runtime").JSX.Element;
112
+ export declare function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy, showSpeedBadge, showDescriptions, compact, className, disabled, placeholderLabel, serviceTier, onServiceTierChange, }: ModelSelectorProps): import("react/jsx-runtime").JSX.Element;
69
113
  //# sourceMappingURL=ModelSelector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAejF,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACvD,oEAAoE;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,OAAoB,EACpB,cAAqB,EACrB,gBAAuB,EACvB,OAAe,EACf,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,2CAoXpB"}
1
+ {"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../src/models/ModelSelector.tsx"],"names":[],"mappings":"AASA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAe9E,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACvD,oEAAoE;IACpE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,OAAoB,EACpB,cAAqB,EACrB,gBAAuB,EACvB,OAAe,EACf,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,WAAwB,EACxB,mBAAmB,GACpB,EAAE,kBAAkB,2CAqbpB"}
@@ -4,8 +4,10 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { Popover } from "@base-ui/react/popover";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import { useStigmerPortalContainer } from "../portal-container.js";
7
+ import { Switch } from "../switch/Switch.js";
7
8
  import { useModelRegistry } from "./useModelRegistry.js";
8
9
  import { HARNESS_META, HARNESS_OPTIONS } from "./harness.js";
10
+ import { FAST_SERVICE_TIER } from "./service-tier.js";
9
11
  const COST_TIER_LABEL = {
10
12
  economy: "$",
11
13
  standard: "$$",
@@ -28,6 +30,19 @@ const SPEED_TIER_LABEL = {
28
30
  * The trigger button displays the current selection in compact format:
29
31
  * `Harness · Model Name ▾` (or just `Model Name ▾` when harness is locked).
30
32
  *
33
+ * **Service tier (#357).** When the consumer opts in via
34
+ * {@link ModelSelectorProps.onServiceTierChange} and the selected model
35
+ * prices a fast variant, a "Fast tier" switch renders in the options area
36
+ * at the TOP of the popover — the first thing visible on open, mirroring
37
+ * Cursor's own options panel (Jakob's Law: our users already know that
38
+ * layout). Deliberately not a per-row affordance: row-level chips crowd
39
+ * the rows and collide with the "Fast/Fastest" speed badge, and an
40
+ * interactive element inside `role="option"` is an ARIA authoring error
41
+ * (option children are presentational). An active fast tier persists
42
+ * across switches between fast-capable models — the visible badge and
43
+ * switch keep the state honest — and resets only for models with no fast
44
+ * variant, where it would be refused at create time.
45
+ *
31
46
  * @example
32
47
  * ```tsx
33
48
  * <ModelSelector
@@ -38,7 +53,7 @@ const SPEED_TIER_LABEL = {
38
53
  * />
39
54
  * ```
40
55
  */
41
- export function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy = "provider", showSpeedBadge = true, showDescriptions = true, compact = false, className, disabled, }) {
56
+ export function ModelSelector({ value, onValueChange, harness, initialHarness, onHarnessChange, onHarnessResolved, availableHarnesses, curatedModels, groupBy = "provider", showSpeedBadge = true, showDescriptions = true, compact = false, className, disabled, placeholderLabel, serviceTier = "standard", onServiceTierChange, }) {
42
57
  const portalContainer = useStigmerPortalContainer();
43
58
  const isHarnessLocked = harness !== undefined;
44
59
  const [internalHarness, setInternalHarness] = useState(harness ?? initialHarness ?? "native");
@@ -128,8 +143,18 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
128
143
  }, [onHarnessChange, onHarnessResolved]);
129
144
  const selectModel = useCallback((model) => {
130
145
  onValueChange(model.modelId);
146
+ // An active fast tier survives a switch between fast-capable models —
147
+ // resetting it forced users to re-toggle on every model change, and
148
+ // the tier is never silent (trigger badge + options switch both show
149
+ // it). It resets ONLY when the new model prices no fast variant: a
150
+ // stale tier there would be refused at create time (#357).
151
+ if (serviceTier === "fast"
152
+ && onServiceTierChange
153
+ && !model.serviceTiers.includes(FAST_SERVICE_TIER)) {
154
+ onServiceTierChange("standard");
155
+ }
131
156
  setOpen(false);
132
- }, [onValueChange]);
157
+ }, [onValueChange, serviceTier, onServiceTierChange]);
133
158
  const scrollHighlightIntoView = useCallback((idx) => {
134
159
  const container = listRef.current;
135
160
  if (!container)
@@ -170,9 +195,24 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
170
195
  }
171
196
  }, [visibleModels, highlightIdx, selectModel, scrollHighlightIntoView]);
172
197
  const showShowAllButton = !isSearching && !showAll && featuredModels.length > 0 && featuredModels.length < models.length;
173
- const triggerLabel = selectedModel?.displayName ?? "Select model";
174
- const triggerHarness = !isHarnessLocked ? HARNESS_META[activeHarness].label : undefined;
175
- return (_jsxs(Popover.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(Popover.Trigger, { disabled: disabled, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "hover:bg-accent-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", "transition-colors max-w-[20rem] max-sm:max-w-[12rem]", className), children: [triggerHarness && (_jsx("span", { className: "shrink-0 text-muted-foreground", children: triggerHarness })), triggerHarness && (_jsx("span", { className: "shrink-0 text-border", "aria-hidden": true, children: "\u00B7" })), _jsx("span", { className: "truncate", children: triggerLabel }), _jsx(ChevronIcon, {})] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 4, children: _jsxs(Popover.Popup, { role: "dialog", "aria-label": "Model selector", className: cn("z-popover w-72 rounded-lg border border-border bg-popover shadow-md", "text-popover-foreground"), children: [_jsxs("div", { className: "relative flex items-center justify-between border-b border-border px-3 py-2", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Harness" }), _jsxs("button", { type: "button", "aria-haspopup": "listbox", "aria-expanded": harnessOpen, "aria-label": "Select harness", disabled: isHarnessLocked, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isHarnessLocked
198
+ // The options-area switch exists only where it applies: a consumer opted
199
+ // in AND the selected model prices a fast variant (recognition over
200
+ // recall never a dead control on models with no tier choice).
201
+ const showServiceTierToggle = onServiceTierChange !== undefined
202
+ && selectedModel !== undefined
203
+ && selectedModel.serviceTiers.includes(FAST_SERVICE_TIER);
204
+ // The trigger badge is display-only: fast is in effect iff the tier is
205
+ // fast AND the selected model actually prices the variant.
206
+ const fastActive = serviceTier === "fast"
207
+ && (selectedModel?.serviceTiers.includes(FAST_SERVICE_TIER) ?? false);
208
+ const usingPlaceholder = !value && placeholderLabel !== undefined;
209
+ const triggerLabel = usingPlaceholder
210
+ ? placeholderLabel
211
+ : (selectedModel?.displayName ?? "Select model");
212
+ const triggerHarness = !isHarnessLocked && !usingPlaceholder
213
+ ? HARNESS_META[activeHarness].label
214
+ : undefined;
215
+ return (_jsxs(Popover.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(Popover.Trigger, { disabled: disabled, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "hover:bg-accent-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", "transition-colors max-w-[20rem] max-sm:max-w-[12rem]", className), children: [triggerHarness && (_jsx("span", { className: "shrink-0 text-muted-foreground", children: triggerHarness })), triggerHarness && (_jsx("span", { className: "shrink-0 text-border", "aria-hidden": true, children: "\u00B7" })), _jsx("span", { className: "truncate", children: triggerLabel }), fastActive && (_jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-0.5 rounded-full border border-primary px-1.5 py-px", "text-[0.6rem] font-medium uppercase tracking-wider text-primary"), children: [_jsx(BoltIcon, {}), "Fast"] })), _jsx(ChevronIcon, {})] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 4, children: _jsxs(Popover.Popup, { role: "dialog", "aria-label": "Model selector", className: cn("z-popover w-72 rounded-lg border border-border bg-popover shadow-md", "text-popover-foreground"), children: [_jsxs("div", { className: "relative flex items-center justify-between border-b border-border px-3 py-2", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Harness" }), _jsxs("button", { type: "button", "aria-haspopup": "listbox", "aria-expanded": harnessOpen, "aria-label": "Select harness", disabled: isHarnessLocked, className: cn("inline-flex items-center gap-1.5 rounded-md border border-border", "bg-background px-2.5 py-1.5 text-xs text-foreground", "transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isHarnessLocked
176
216
  ? "cursor-not-allowed opacity-50"
177
217
  : "hover:bg-accent-hover"), onClick: () => {
178
218
  if (!isHarnessLocked)
@@ -188,7 +228,7 @@ export function ModelSelector({ value, onValueChange, harness, initialHarness, o
188
228
  handleHarnessChange(h);
189
229
  setHarnessOpen(false);
190
230
  }, children: [_jsx("span", { className: "flex-1 text-left", children: HARNESS_META[h].label }), isActive && _jsx(CheckIcon, { className: "shrink-0 text-primary" })] }, h));
191
- }) }))] }), _jsx("div", { className: "border-b border-border px-3 py-1.5", children: _jsx("input", { ref: searchRef, role: "searchbox", "aria-label": "Search models", placeholder: "Search models\u2026", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleKeyDown, className: cn("w-full bg-transparent text-xs text-foreground placeholder:text-muted-foreground", "outline-none") }) }), _jsxs("div", { ref: listRef, role: "listbox", "aria-label": "Available models", className: "max-h-72 overflow-y-auto p-1", children: [visibleModels.length === 0 && isLoading && (_jsxs("div", { className: "flex items-center justify-center gap-2 px-2 py-3", children: [_jsx("div", { className: "size-3 animate-spin rounded-full border border-muted border-t-primary" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Loading models\u2026" })] })), visibleModels.length === 0 && !isLoading && error != null && (_jsxs("div", { className: "flex flex-col items-center gap-1.5 px-2 py-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Failed to load models" }), _jsx("button", { type: "button", className: cn("rounded-md border border-border bg-background px-2.5 py-1 text-xs text-foreground", "hover:bg-accent-hover transition-colors cursor-pointer"), onClick: refetch, children: "Retry" })] })), visibleModels.length === 0 && !isLoading && error == null && (_jsx("div", { className: "px-2 py-3 text-center text-xs text-muted-foreground", children: "No models found" })), groupedModels ? (Array.from(groupedModels.entries()).map(([group, groupModels]) => (_jsxs("div", { children: [_jsx("div", { className: "px-2 pb-0.5 pt-2 text-[0.6rem] font-medium uppercase tracking-wider text-muted-foreground", children: group }), groupModels.map((model) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, showDescription: false, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model) }, model.modelId)))] }, group)))) : (visibleModels.map((model, idx) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, isHighlighted: idx === highlightIdx, showDescription: showDescriptions && !compact && !isSearching && !showAll, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model), onMouseEnter: () => setHighlightIdx(idx) }, model.modelId)))), showShowAllButton && (_jsx("button", { type: "button", className: cn("mt-1 flex w-full items-center justify-center rounded-md border border-dashed border-border", "px-2 py-1.5 text-xs text-muted-foreground", "hover:bg-accent-hover hover:text-foreground transition-colors cursor-pointer"), onClick: () => setShowAll(true), children: "Show all models" }))] })] }) }) })] }));
231
+ }) }))] }), showServiceTierToggle && (_jsxs("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-xs text-foreground", children: "Fast tier" }), _jsx("span", { className: "text-[0.65rem] text-muted-foreground", children: "Faster responses at higher per-token rates" })] }), _jsx(Switch, { checked: fastActive, onCheckedChange: (next) => onServiceTierChange?.(next ? "fast" : "standard"), "aria-label": "Fast tier" })] })), _jsx("div", { className: "border-b border-border px-3 py-1.5", children: _jsx("input", { ref: searchRef, role: "searchbox", "aria-label": "Search models", placeholder: "Search models\u2026", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: handleKeyDown, className: cn("w-full bg-transparent text-xs text-foreground placeholder:text-muted-foreground", "outline-none") }) }), _jsxs("div", { ref: listRef, role: "listbox", "aria-label": "Available models", className: "max-h-72 overflow-y-auto p-1", children: [visibleModels.length === 0 && isLoading && (_jsxs("div", { className: "flex items-center justify-center gap-2 px-2 py-3", children: [_jsx("div", { className: "size-3 animate-spin rounded-full border border-muted border-t-primary" }), _jsx("span", { className: "text-xs text-muted-foreground", children: "Loading models\u2026" })] })), visibleModels.length === 0 && !isLoading && error != null && (_jsxs("div", { className: "flex flex-col items-center gap-1.5 px-2 py-3", children: [_jsx("span", { className: "text-xs text-muted-foreground", children: "Failed to load models" }), _jsx("button", { type: "button", className: cn("rounded-md border border-border bg-background px-2.5 py-1 text-xs text-foreground", "hover:bg-accent-hover transition-colors cursor-pointer"), onClick: refetch, children: "Retry" })] })), visibleModels.length === 0 && !isLoading && error == null && (_jsx("div", { className: "px-2 py-3 text-center text-xs text-muted-foreground", children: "No models found" })), groupedModels ? (Array.from(groupedModels.entries()).map(([group, groupModels]) => (_jsxs("div", { children: [_jsx("div", { className: "px-2 pb-0.5 pt-2 text-[0.6rem] font-medium uppercase tracking-wider text-muted-foreground", children: group }), groupModels.map((model) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, showDescription: false, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model) }, model.modelId)))] }, group)))) : (visibleModels.map((model, idx) => (_jsx(ModelRow, { model: model, isSelected: model.modelId === selectedModel?.modelId, isHighlighted: idx === highlightIdx, showDescription: showDescriptions && !compact && !isSearching && !showAll, showSpeedBadge: showSpeedBadge, onClick: () => selectModel(model), onMouseEnter: () => setHighlightIdx(idx) }, model.modelId)))), showShowAllButton && (_jsx("button", { type: "button", className: cn("mt-1 flex w-full items-center justify-center rounded-md border border-dashed border-border", "px-2 py-1.5 text-xs text-muted-foreground", "hover:bg-accent-hover hover:text-foreground transition-colors cursor-pointer"), onClick: () => setShowAll(true), children: "Show all models" }))] })] }) }) })] }));
192
232
  }
193
233
  function ModelRow({ model, isSelected, isHighlighted, showDescription, showSpeedBadge, onClick, onMouseEnter, }) {
194
234
  return (_jsxs("button", { "data-model-option": "", role: "option", "aria-selected": isSelected, type: "button", className: cn("flex w-full cursor-pointer flex-col rounded-md px-2 py-1.5 text-xs outline-none", "transition-colors", isHighlighted && "bg-accent text-accent-foreground", !isHighlighted && "hover:bg-accent-hover"), onClick: onClick, onMouseEnter: onMouseEnter, children: [_jsxs("div", { className: "flex w-full items-center gap-2", children: [_jsx("span", { className: "flex-1 truncate text-left font-medium", children: model.displayName }), _jsx("span", { className: "shrink-0 text-[0.6rem] text-muted-foreground", children: showSpeedBadge
@@ -201,4 +241,7 @@ function ChevronIcon() {
201
241
  function CheckIcon({ className }) {
202
242
  return (_jsx("svg", { className: className, width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M2 6L5 9L10 3" }) }));
203
243
  }
244
+ function BoltIcon() {
245
+ return (_jsx("svg", { className: "shrink-0", width: "8", height: "10", viewBox: "0 0 8 10", fill: "currentColor", "aria-hidden": true, children: _jsx("path", { d: "M4.9 0.2L0.6 5.6h2.6L3.1 9.8l4.3-5.4H4.8L4.9 0.2z" }) }));
246
+ }
204
247
  //# sourceMappingURL=ModelSelector.js.map