@data-club/ai-hub 0.0.1

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 (344) hide show
  1. package/dist/auth/passwordPolicy.d.ts +55 -0
  2. package/dist/auth/passwordPolicy.d.ts.map +1 -0
  3. package/dist/auth/passwordPolicy.js +63 -0
  4. package/dist/auth/passwordPolicy.js.map +1 -0
  5. package/dist/auth/texts.d.ts +815 -0
  6. package/dist/auth/texts.d.ts.map +1 -0
  7. package/dist/auth/texts.js +429 -0
  8. package/dist/auth/texts.js.map +1 -0
  9. package/dist/client/AIHubClient.d.ts +1058 -0
  10. package/dist/client/AIHubClient.d.ts.map +1 -0
  11. package/dist/client/AIHubClient.js +950 -0
  12. package/dist/client/AIHubClient.js.map +1 -0
  13. package/dist/client/index.d.ts +11 -0
  14. package/dist/client/index.d.ts.map +1 -0
  15. package/dist/client/index.js +9 -0
  16. package/dist/client/index.js.map +1 -0
  17. package/dist/client/sseParser.d.ts +41 -0
  18. package/dist/client/sseParser.d.ts.map +1 -0
  19. package/dist/client/sseParser.js +153 -0
  20. package/dist/client/sseParser.js.map +1 -0
  21. package/dist/client/tokenStorage.d.ts +56 -0
  22. package/dist/client/tokenStorage.d.ts.map +1 -0
  23. package/dist/client/tokenStorage.js +116 -0
  24. package/dist/client/tokenStorage.js.map +1 -0
  25. package/dist/components/AgentsPicker/index.d.ts +70 -0
  26. package/dist/components/AgentsPicker/index.d.ts.map +1 -0
  27. package/dist/components/AgentsPicker/index.js +63 -0
  28. package/dist/components/AgentsPicker/index.js.map +1 -0
  29. package/dist/components/AuthGate/index.d.ts +79 -0
  30. package/dist/components/AuthGate/index.d.ts.map +1 -0
  31. package/dist/components/AuthGate/index.js +61 -0
  32. package/dist/components/AuthGate/index.js.map +1 -0
  33. package/dist/components/CacheBadge/index.d.ts +88 -0
  34. package/dist/components/CacheBadge/index.d.ts.map +1 -0
  35. package/dist/components/CacheBadge/index.js +127 -0
  36. package/dist/components/CacheBadge/index.js.map +1 -0
  37. package/dist/components/ChangePassword/index.d.ts +109 -0
  38. package/dist/components/ChangePassword/index.d.ts.map +1 -0
  39. package/dist/components/ChangePassword/index.js +142 -0
  40. package/dist/components/ChangePassword/index.js.map +1 -0
  41. package/dist/components/ChatShell/ShellHeader.d.ts +44 -0
  42. package/dist/components/ChatShell/ShellHeader.d.ts.map +1 -0
  43. package/dist/components/ChatShell/ShellHeader.js +14 -0
  44. package/dist/components/ChatShell/ShellHeader.js.map +1 -0
  45. package/dist/components/ChatShell/UserMenu.d.ts +48 -0
  46. package/dist/components/ChatShell/UserMenu.d.ts.map +1 -0
  47. package/dist/components/ChatShell/UserMenu.js +86 -0
  48. package/dist/components/ChatShell/UserMenu.js.map +1 -0
  49. package/dist/components/ChatShell/index.d.ts +98 -0
  50. package/dist/components/ChatShell/index.d.ts.map +1 -0
  51. package/dist/components/ChatShell/index.js +124 -0
  52. package/dist/components/ChatShell/index.js.map +1 -0
  53. package/dist/components/DataClubAIHub/index.d.ts +132 -0
  54. package/dist/components/DataClubAIHub/index.d.ts.map +1 -0
  55. package/dist/components/DataClubAIHub/index.js +124 -0
  56. package/dist/components/DataClubAIHub/index.js.map +1 -0
  57. package/dist/components/DataClubAIHubAdmin/AgentEditorModal.d.ts +89 -0
  58. package/dist/components/DataClubAIHubAdmin/AgentEditorModal.d.ts.map +1 -0
  59. package/dist/components/DataClubAIHubAdmin/AgentEditorModal.js +199 -0
  60. package/dist/components/DataClubAIHubAdmin/AgentEditorModal.js.map +1 -0
  61. package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts +33 -0
  62. package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts.map +1 -0
  63. package/dist/components/DataClubAIHubAdmin/AgentsPage.js +137 -0
  64. package/dist/components/DataClubAIHubAdmin/AgentsPage.js.map +1 -0
  65. package/dist/components/DataClubAIHubAdmin/CreateUserModal.d.ts +50 -0
  66. package/dist/components/DataClubAIHubAdmin/CreateUserModal.d.ts.map +1 -0
  67. package/dist/components/DataClubAIHubAdmin/CreateUserModal.js +93 -0
  68. package/dist/components/DataClubAIHubAdmin/CreateUserModal.js.map +1 -0
  69. package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.d.ts +49 -0
  70. package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.d.ts.map +1 -0
  71. package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.js +94 -0
  72. package/dist/components/DataClubAIHubAdmin/PasswordRevealModal.js.map +1 -0
  73. package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.d.ts +37 -0
  74. package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.d.ts.map +1 -0
  75. package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.js +44 -0
  76. package/dist/components/DataClubAIHubAdmin/ResetPasswordModal.js.map +1 -0
  77. package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.d.ts +56 -0
  78. package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.d.ts.map +1 -0
  79. package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.js +158 -0
  80. package/dist/components/DataClubAIHubAdmin/RotatingMessageEditorModal.js.map +1 -0
  81. package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.d.ts +29 -0
  82. package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.d.ts.map +1 -0
  83. package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.js +183 -0
  84. package/dist/components/DataClubAIHubAdmin/RotatingMessagesPage.js.map +1 -0
  85. package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.d.ts +38 -0
  86. package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.d.ts.map +1 -0
  87. package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.js +294 -0
  88. package/dist/components/DataClubAIHubAdmin/SessionsOverviewPage.js.map +1 -0
  89. package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts +36 -0
  90. package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts.map +1 -0
  91. package/dist/components/DataClubAIHubAdmin/SettingsPage.js +373 -0
  92. package/dist/components/DataClubAIHubAdmin/SettingsPage.js.map +1 -0
  93. package/dist/components/DataClubAIHubAdmin/UsersPage.d.ts +47 -0
  94. package/dist/components/DataClubAIHubAdmin/UsersPage.d.ts.map +1 -0
  95. package/dist/components/DataClubAIHubAdmin/UsersPage.js +233 -0
  96. package/dist/components/DataClubAIHubAdmin/UsersPage.js.map +1 -0
  97. package/dist/components/DataClubAIHubAdmin/index.d.ts +87 -0
  98. package/dist/components/DataClubAIHubAdmin/index.d.ts.map +1 -0
  99. package/dist/components/DataClubAIHubAdmin/index.js +137 -0
  100. package/dist/components/DataClubAIHubAdmin/index.js.map +1 -0
  101. package/dist/components/DataClubAIHubLogin/index.d.ts +113 -0
  102. package/dist/components/DataClubAIHubLogin/index.d.ts.map +1 -0
  103. package/dist/components/DataClubAIHubLogin/index.js +123 -0
  104. package/dist/components/DataClubAIHubLogin/index.js.map +1 -0
  105. package/dist/components/EffortControl/index.d.ts +57 -0
  106. package/dist/components/EffortControl/index.d.ts.map +1 -0
  107. package/dist/components/EffortControl/index.js +84 -0
  108. package/dist/components/EffortControl/index.js.map +1 -0
  109. package/dist/components/Layout/index.d.ts +63 -0
  110. package/dist/components/Layout/index.d.ts.map +1 -0
  111. package/dist/components/Layout/index.js +45 -0
  112. package/dist/components/Layout/index.js.map +1 -0
  113. package/dist/components/MainColumn/index.d.ts +69 -0
  114. package/dist/components/MainColumn/index.d.ts.map +1 -0
  115. package/dist/components/MainColumn/index.js +47 -0
  116. package/dist/components/MainColumn/index.js.map +1 -0
  117. package/dist/components/MarkdownRenderer/index.d.ts +66 -0
  118. package/dist/components/MarkdownRenderer/index.d.ts.map +1 -0
  119. package/dist/components/MarkdownRenderer/index.js +153 -0
  120. package/dist/components/MarkdownRenderer/index.js.map +1 -0
  121. package/dist/components/MessageInput/index.d.ts +85 -0
  122. package/dist/components/MessageInput/index.d.ts.map +1 -0
  123. package/dist/components/MessageInput/index.js +139 -0
  124. package/dist/components/MessageInput/index.js.map +1 -0
  125. package/dist/components/MessageList/index.d.ts +156 -0
  126. package/dist/components/MessageList/index.d.ts.map +1 -0
  127. package/dist/components/MessageList/index.js +352 -0
  128. package/dist/components/MessageList/index.js.map +1 -0
  129. package/dist/components/ReasoningSelector/index.d.ts +77 -0
  130. package/dist/components/ReasoningSelector/index.d.ts.map +1 -0
  131. package/dist/components/ReasoningSelector/index.js +156 -0
  132. package/dist/components/ReasoningSelector/index.js.map +1 -0
  133. package/dist/components/ReasoningView/index.d.ts +94 -0
  134. package/dist/components/ReasoningView/index.d.ts.map +1 -0
  135. package/dist/components/ReasoningView/index.js +83 -0
  136. package/dist/components/ReasoningView/index.js.map +1 -0
  137. package/dist/components/ScrollToPresentButton/index.d.ts +54 -0
  138. package/dist/components/ScrollToPresentButton/index.d.ts.map +1 -0
  139. package/dist/components/ScrollToPresentButton/index.js +44 -0
  140. package/dist/components/ScrollToPresentButton/index.js.map +1 -0
  141. package/dist/components/SessionsPanel/SessionTitleModal.d.ts +79 -0
  142. package/dist/components/SessionsPanel/SessionTitleModal.d.ts.map +1 -0
  143. package/dist/components/SessionsPanel/SessionTitleModal.js +102 -0
  144. package/dist/components/SessionsPanel/SessionTitleModal.js.map +1 -0
  145. package/dist/components/SessionsPanel/index.d.ts +100 -0
  146. package/dist/components/SessionsPanel/index.d.ts.map +1 -0
  147. package/dist/components/SessionsPanel/index.js +176 -0
  148. package/dist/components/SessionsPanel/index.js.map +1 -0
  149. package/dist/components/SystemNotice/index.d.ts +66 -0
  150. package/dist/components/SystemNotice/index.d.ts.map +1 -0
  151. package/dist/components/SystemNotice/index.js +81 -0
  152. package/dist/components/SystemNotice/index.js.map +1 -0
  153. package/dist/components/ThemeSwitcher/index.d.ts +66 -0
  154. package/dist/components/ThemeSwitcher/index.d.ts.map +1 -0
  155. package/dist/components/ThemeSwitcher/index.js +73 -0
  156. package/dist/components/ThemeSwitcher/index.js.map +1 -0
  157. package/dist/components/ToolCallView/formatContent.d.ts +36 -0
  158. package/dist/components/ToolCallView/formatContent.d.ts.map +1 -0
  159. package/dist/components/ToolCallView/formatContent.js +53 -0
  160. package/dist/components/ToolCallView/formatContent.js.map +1 -0
  161. package/dist/components/ToolCallView/index.d.ts +120 -0
  162. package/dist/components/ToolCallView/index.d.ts.map +1 -0
  163. package/dist/components/ToolCallView/index.js +104 -0
  164. package/dist/components/ToolCallView/index.js.map +1 -0
  165. package/dist/components/TpmBanner/index.d.ts +53 -0
  166. package/dist/components/TpmBanner/index.d.ts.map +1 -0
  167. package/dist/components/TpmBanner/index.js +116 -0
  168. package/dist/components/TpmBanner/index.js.map +1 -0
  169. package/dist/components/TurnStatusIndicator/index.d.ts +77 -0
  170. package/dist/components/TurnStatusIndicator/index.d.ts.map +1 -0
  171. package/dist/components/TurnStatusIndicator/index.js +122 -0
  172. package/dist/components/TurnStatusIndicator/index.js.map +1 -0
  173. package/dist/components/internal/PasswordInput.d.ts +62 -0
  174. package/dist/components/internal/PasswordInput.d.ts.map +1 -0
  175. package/dist/components/internal/PasswordInput.js +42 -0
  176. package/dist/components/internal/PasswordInput.js.map +1 -0
  177. package/dist/context/AIHubContext.d.ts +220 -0
  178. package/dist/context/AIHubContext.d.ts.map +1 -0
  179. package/dist/context/AIHubContext.js +19 -0
  180. package/dist/context/AIHubContext.js.map +1 -0
  181. package/dist/context/AIHubProvider.d.ts +75 -0
  182. package/dist/context/AIHubProvider.d.ts.map +1 -0
  183. package/dist/context/AIHubProvider.js +954 -0
  184. package/dist/context/AIHubProvider.js.map +1 -0
  185. package/dist/context/index.d.ts +9 -0
  186. package/dist/context/index.d.ts.map +1 -0
  187. package/dist/context/index.js +9 -0
  188. package/dist/context/index.js.map +1 -0
  189. package/dist/context/theme.d.ts +43 -0
  190. package/dist/context/theme.d.ts.map +1 -0
  191. package/dist/context/theme.js +70 -0
  192. package/dist/context/theme.js.map +1 -0
  193. package/dist/context/useAIHub.d.ts +104 -0
  194. package/dist/context/useAIHub.d.ts.map +1 -0
  195. package/dist/context/useAIHub.js +63 -0
  196. package/dist/context/useAIHub.js.map +1 -0
  197. package/dist/context/useAIHubAuth.d.ts +44 -0
  198. package/dist/context/useAIHubAuth.d.ts.map +1 -0
  199. package/dist/context/useAIHubAuth.js +35 -0
  200. package/dist/context/useAIHubAuth.js.map +1 -0
  201. package/dist/index.d.ts +76 -0
  202. package/dist/index.d.ts.map +1 -0
  203. package/dist/index.js +57 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/primitives/index.d.ts +99 -0
  206. package/dist/primitives/index.d.ts.map +1 -0
  207. package/dist/primitives/index.js +97 -0
  208. package/dist/primitives/index.js.map +1 -0
  209. package/dist/state/affordances.d.ts +182 -0
  210. package/dist/state/affordances.d.ts.map +1 -0
  211. package/dist/state/affordances.js +189 -0
  212. package/dist/state/affordances.js.map +1 -0
  213. package/dist/state/stateReducer.d.ts +72 -0
  214. package/dist/state/stateReducer.d.ts.map +1 -0
  215. package/dist/state/stateReducer.js +122 -0
  216. package/dist/state/stateReducer.js.map +1 -0
  217. package/dist/stories/EffortControl.stories.d.ts +14 -0
  218. package/dist/stories/EffortControl.stories.d.ts.map +1 -0
  219. package/dist/stories/EffortControl.stories.js +43 -0
  220. package/dist/stories/EffortControl.stories.js.map +1 -0
  221. package/dist/stories/MarkdownRenderer.stories.d.ts +25 -0
  222. package/dist/stories/MarkdownRenderer.stories.d.ts.map +1 -0
  223. package/dist/stories/MarkdownRenderer.stories.js +178 -0
  224. package/dist/stories/MarkdownRenderer.stories.js.map +1 -0
  225. package/dist/stories/MessageBubble.stories.d.ts +21 -0
  226. package/dist/stories/MessageBubble.stories.d.ts.map +1 -0
  227. package/dist/stories/MessageBubble.stories.js +59 -0
  228. package/dist/stories/MessageBubble.stories.js.map +1 -0
  229. package/dist/stories/ReasoningView.stories.d.ts +18 -0
  230. package/dist/stories/ReasoningView.stories.d.ts.map +1 -0
  231. package/dist/stories/ReasoningView.stories.js +62 -0
  232. package/dist/stories/ReasoningView.stories.js.map +1 -0
  233. package/dist/stories/ScrollToPresentButton.stories.d.ts +18 -0
  234. package/dist/stories/ScrollToPresentButton.stories.d.ts.map +1 -0
  235. package/dist/stories/ScrollToPresentButton.stories.js +34 -0
  236. package/dist/stories/ScrollToPresentButton.stories.js.map +1 -0
  237. package/dist/stories/SystemNotice.stories.d.ts +17 -0
  238. package/dist/stories/SystemNotice.stories.d.ts.map +1 -0
  239. package/dist/stories/SystemNotice.stories.js +42 -0
  240. package/dist/stories/SystemNotice.stories.js.map +1 -0
  241. package/dist/stories/ThemeSwitcher.stories.d.ts +15 -0
  242. package/dist/stories/ThemeSwitcher.stories.d.ts.map +1 -0
  243. package/dist/stories/ThemeSwitcher.stories.js +35 -0
  244. package/dist/stories/ThemeSwitcher.stories.js.map +1 -0
  245. package/dist/stories/ToolCallView.stories.d.ts +20 -0
  246. package/dist/stories/ToolCallView.stories.d.ts.map +1 -0
  247. package/dist/stories/ToolCallView.stories.js +65 -0
  248. package/dist/stories/ToolCallView.stories.js.map +1 -0
  249. package/dist/stories/TpmBanner.stories.d.ts +24 -0
  250. package/dist/stories/TpmBanner.stories.d.ts.map +1 -0
  251. package/dist/stories/TpmBanner.stories.js +63 -0
  252. package/dist/stories/TpmBanner.stories.js.map +1 -0
  253. package/dist/stories/TurnStatusIndicator.stories.d.ts +25 -0
  254. package/dist/stories/TurnStatusIndicator.stories.d.ts.map +1 -0
  255. package/dist/stories/TurnStatusIndicator.stories.js +56 -0
  256. package/dist/stories/TurnStatusIndicator.stories.js.map +1 -0
  257. package/dist/stories/_mockProvider.d.ts +44 -0
  258. package/dist/stories/_mockProvider.d.ts.map +1 -0
  259. package/dist/stories/_mockProvider.js +84 -0
  260. package/dist/stories/_mockProvider.js.map +1 -0
  261. package/dist/types.d.ts +787 -0
  262. package/dist/types.d.ts.map +1 -0
  263. package/dist/types.js +19 -0
  264. package/dist/types.js.map +1 -0
  265. package/dist/webcomponent/defineWebComponent.d.ts +106 -0
  266. package/dist/webcomponent/defineWebComponent.d.ts.map +1 -0
  267. package/dist/webcomponent/defineWebComponent.js +126 -0
  268. package/dist/webcomponent/defineWebComponent.js.map +1 -0
  269. package/dist/webcomponent/index.d.ts +7 -0
  270. package/dist/webcomponent/index.d.ts.map +1 -0
  271. package/dist/webcomponent/index.js +7 -0
  272. package/dist/webcomponent/index.js.map +1 -0
  273. package/package.json +63 -0
  274. package/src/__lint-canary__/step1-lint-canary.ts.disabled +28 -0
  275. package/src/auth/passwordPolicy.ts +75 -0
  276. package/src/auth/texts.ts +1294 -0
  277. package/src/client/AIHubClient.ts +1718 -0
  278. package/src/client/index.ts +30 -0
  279. package/src/client/sseParser.ts +168 -0
  280. package/src/client/tokenStorage.ts +131 -0
  281. package/src/components/AgentsPicker/index.tsx +147 -0
  282. package/src/components/AuthGate/index.tsx +132 -0
  283. package/src/components/CacheBadge/index.tsx +245 -0
  284. package/src/components/ChangePassword/index.tsx +375 -0
  285. package/src/components/ChatShell/ShellHeader.tsx +80 -0
  286. package/src/components/ChatShell/UserMenu.tsx +196 -0
  287. package/src/components/ChatShell/index.tsx +307 -0
  288. package/src/components/DataClubAIHub/index.tsx +300 -0
  289. package/src/components/DataClubAIHubAdmin/AgentEditorModal.tsx +505 -0
  290. package/src/components/DataClubAIHubAdmin/AgentsPage.tsx +342 -0
  291. package/src/components/DataClubAIHubAdmin/CreateUserModal.tsx +214 -0
  292. package/src/components/DataClubAIHubAdmin/PasswordRevealModal.tsx +204 -0
  293. package/src/components/DataClubAIHubAdmin/ResetPasswordModal.tsx +122 -0
  294. package/src/components/DataClubAIHubAdmin/RotatingMessageEditorModal.tsx +408 -0
  295. package/src/components/DataClubAIHubAdmin/RotatingMessagesPage.tsx +373 -0
  296. package/src/components/DataClubAIHubAdmin/SessionsOverviewPage.tsx +639 -0
  297. package/src/components/DataClubAIHubAdmin/SettingsPage.tsx +979 -0
  298. package/src/components/DataClubAIHubAdmin/UsersPage.tsx +495 -0
  299. package/src/components/DataClubAIHubAdmin/index.tsx +277 -0
  300. package/src/components/DataClubAIHubLogin/index.tsx +282 -0
  301. package/src/components/EffortControl/index.tsx +138 -0
  302. package/src/components/Layout/index.tsx +92 -0
  303. package/src/components/MainColumn/index.tsx +131 -0
  304. package/src/components/MarkdownRenderer/index.tsx +256 -0
  305. package/src/components/MessageInput/index.tsx +283 -0
  306. package/src/components/MessageList/index.tsx +753 -0
  307. package/src/components/ReasoningSelector/index.tsx +268 -0
  308. package/src/components/ReasoningView/index.tsx +183 -0
  309. package/src/components/ScrollToPresentButton/index.tsx +85 -0
  310. package/src/components/SessionsPanel/SessionTitleModal.tsx +256 -0
  311. package/src/components/SessionsPanel/index.tsx +406 -0
  312. package/src/components/SystemNotice/index.tsx +151 -0
  313. package/src/components/ThemeSwitcher/index.tsx +136 -0
  314. package/src/components/ToolCallView/formatContent.ts +50 -0
  315. package/src/components/ToolCallView/index.tsx +274 -0
  316. package/src/components/TpmBanner/index.tsx +172 -0
  317. package/src/components/TurnStatusIndicator/index.tsx +203 -0
  318. package/src/components/internal/PasswordInput.tsx +145 -0
  319. package/src/context/AIHubContext.ts +249 -0
  320. package/src/context/AIHubProvider.tsx +1084 -0
  321. package/src/context/index.ts +9 -0
  322. package/src/context/theme.ts +76 -0
  323. package/src/context/useAIHub.ts +151 -0
  324. package/src/context/useAIHubAuth.ts +65 -0
  325. package/src/index.ts +275 -0
  326. package/src/primitives/index.ts +101 -0
  327. package/src/state/affordances.ts +321 -0
  328. package/src/state/stateReducer.ts +131 -0
  329. package/src/stories/EffortControl.stories.tsx +63 -0
  330. package/src/stories/MarkdownRenderer.stories.tsx +201 -0
  331. package/src/stories/MessageBubble.stories.tsx +101 -0
  332. package/src/stories/ReasoningView.stories.tsx +81 -0
  333. package/src/stories/ScrollToPresentButton.stories.tsx +52 -0
  334. package/src/stories/SystemNotice.stories.tsx +59 -0
  335. package/src/stories/ThemeSwitcher.stories.tsx +55 -0
  336. package/src/stories/ToolCallView.stories.tsx +95 -0
  337. package/src/stories/TpmBanner.stories.tsx +93 -0
  338. package/src/stories/TurnStatusIndicator.stories.tsx +86 -0
  339. package/src/stories/_mockProvider.tsx +116 -0
  340. package/src/styles/CLASSES.md +356 -0
  341. package/src/styles/default.css +2937 -0
  342. package/src/types.ts +867 -0
  343. package/src/webcomponent/defineWebComponent.tsx +193 -0
  344. package/src/webcomponent/index.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ChangePassword/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * `<ShellHeader />` — the sticky top bar wrapping every authenticated
3
+ * view ([00-shell.md]).
4
+ *
5
+ * Lives in both the chat shell AND the admin shell — Step 11 split it
6
+ * out of `<ChatShell />` so the admin view doesn't lose the user-menu /
7
+ * log-out / theme toggle / Open Letta ADE affordances when the user
8
+ * navigates from chat to admin.
9
+ *
10
+ * Left side: wrapper-supplied slot (`customShellHeaderLeft`) or default
11
+ * gradient text logo derived from `productName`. **Right side:
12
+ * library-owned** — the `<UserMenu />` is non-customizable per
13
+ * [00-shell.md] because it carries session, role, and `Open Letta ADE`
14
+ * affordances ai-hub controls.
15
+ *
16
+ * @see ui-sketches/00-shell.md
17
+ */
18
+ import type { ReactNode } from "react";
19
+ import type { AIHubChatTexts } from "../../auth/texts.js";
20
+ /**
21
+ * Props for `<ShellHeader />`.
22
+ */
23
+ export interface ShellHeaderProps {
24
+ /** Default-logo source (when `customShellHeaderLeft` is unset). */
25
+ productName: string;
26
+ /** Wrapper-supplied logo / nav-links slot. */
27
+ customShellHeaderLeft?: ReactNode;
28
+ /** Resolved chat texts (the user-menu copy lives under `texts.chat`). */
29
+ texts: AIHubChatTexts;
30
+ /**
31
+ * Fired when the user picks "Admin" from the user menu. Wired to the
32
+ * monolith's chat ↔ admin route swap; omitted by Tier-3 wrappers that
33
+ * handle navigation themselves.
34
+ */
35
+ onOpenAdmin?: () => void;
36
+ }
37
+ /**
38
+ * Renders the sticky shell header.
39
+ *
40
+ * @param props - see `ShellHeaderProps`.
41
+ * @returns the rendered header.
42
+ */
43
+ export declare function ShellHeader(props: ShellHeaderProps): ReactNode;
44
+ //# sourceMappingURL=ShellHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ChatShell/ShellHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,yEAAyE;IACzE,KAAK,EAAE,cAAc,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAgC9D"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { UserMenu } from "./UserMenu.js";
3
+ /**
4
+ * Renders the sticky shell header.
5
+ *
6
+ * @param props - see `ShellHeaderProps`.
7
+ * @returns the rendered header.
8
+ */
9
+ export function ShellHeader(props) {
10
+ return (_jsxs("header", { className: "data-club-ai-hub__shell-header", "data-testid": "shell-header", children: [_jsx("div", { className: "data-club-ai-hub__shell-header-left", "data-testid": "shell-header-left", children: props.customShellHeaderLeft ?? (_jsx("span", { className: "data-club-ai-hub__shell-header-logo", "data-testid": "shell-header-default-logo", children: props.productName })) }), _jsx("div", { className: "data-club-ai-hub__shell-header-right", "data-testid": "shell-header-right", children: _jsx(UserMenu, { texts: props.texts, ...(props.onOpenAdmin !== undefined
11
+ ? { onOpenAdmin: props.onOpenAdmin }
12
+ : {}) }) })] }));
13
+ }
14
+ //# sourceMappingURL=ShellHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellHeader.js","sourceRoot":"","sources":["../../../src/components/ChatShell/ShellHeader.tsx"],"names":[],"mappings":";AAqBA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,CACL,kBACE,SAAS,EAAC,gCAAgC,iBAC9B,cAAc,aAE1B,cACE,SAAS,EAAC,qCAAqC,iBACnC,mBAAmB,YAE9B,KAAK,CAAC,qBAAqB,IAAI,CAC9B,eACE,SAAS,EAAC,qCAAqC,iBACnC,2BAA2B,YAEtC,KAAK,CAAC,WAAW,GACb,CACR,GACG,EACN,cACE,SAAS,EAAC,sCAAsC,iBACpC,oBAAoB,YAEhC,KAAC,QAAQ,IACP,KAAK,EAAE,KAAK,CAAC,KAAK,KACd,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;wBAClC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;wBACpC,CAAC,CAAC,EAAE,CAAC,GACP,GACE,IACC,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * `<UserMenu />` — the right-side identity affordance in the shell
3
+ * header.
4
+ *
5
+ * Step 9 ships the minimal version: avatar circle + username, click
6
+ * opens a dropdown with the role label and a `Sign out` item. Step 10
7
+ * adds the `Theme: Light ↔ Dark` item. **Step 11 adds the `Admin` and
8
+ * `Open Letta ADE ↗` items**, both gated to `role >= power_user` per
9
+ * §8.3 / [00-shell.md]. Step 12 wires the voluntary `Change Password`
10
+ * item via the shell's shell-aware framing.
11
+ *
12
+ * `Open Letta ADE` opens the deployment's ADE in a new tab
13
+ * (`target="_blank" rel="noopener noreferrer"`); the URL comes from the
14
+ * `deployment.letta_ade_url` field on `/auth/me` (only present for
15
+ * `power_user` and above by design — see `AIHubDeployment` JSDoc).
16
+ *
17
+ * The right side of the shell header is **library-owned** and not
18
+ * customizable — per-customer wrappers can theme via CSS but cannot
19
+ * replace this component.
20
+ *
21
+ * @see ui-sketches/00-shell.md — user_menu_button + user_menu_dropdown
22
+ * @see SPECIFICATIONS.md §8.3 — Open Letta ADE link
23
+ */
24
+ import { type ReactNode } from "react";
25
+ import type { AIHubChatTexts } from "../../auth/texts.js";
26
+ /**
27
+ * Props for the internal `<UserMenu />` helper.
28
+ */
29
+ export interface UserMenuProps {
30
+ /** Resolved chat texts (the menu copy lives under `texts.chat`). */
31
+ texts: AIHubChatTexts;
32
+ /**
33
+ * Fired when the user clicks the `Admin` item. The host (chat shell)
34
+ * decides what to do — typically swap the main area for
35
+ * `<DataClubAIHubAdmin />`. Omitted when the host doesn't support an
36
+ * in-shell admin route (a Tier-3 wrapper that mounts admin on its own
37
+ * Next.js page can omit this and rely on its own nav instead).
38
+ */
39
+ onOpenAdmin?: () => void;
40
+ }
41
+ /**
42
+ * Renders the user menu (button + dropdown).
43
+ *
44
+ * @param props - see `UserMenuProps`.
45
+ * @returns the rendered menu, or `null` when unauthenticated.
46
+ */
47
+ export declare function UserMenu(props: UserMenuProps): ReactNode;
48
+ //# sourceMappingURL=UserMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAkB1D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,KAAK,EAAE,cAAc,CAAC;IACtB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CA4HxD"}
@@ -0,0 +1,86 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * `<UserMenu />` — the right-side identity affordance in the shell
4
+ * header.
5
+ *
6
+ * Step 9 ships the minimal version: avatar circle + username, click
7
+ * opens a dropdown with the role label and a `Sign out` item. Step 10
8
+ * adds the `Theme: Light ↔ Dark` item. **Step 11 adds the `Admin` and
9
+ * `Open Letta ADE ↗` items**, both gated to `role >= power_user` per
10
+ * §8.3 / [00-shell.md]. Step 12 wires the voluntary `Change Password`
11
+ * item via the shell's shell-aware framing.
12
+ *
13
+ * `Open Letta ADE` opens the deployment's ADE in a new tab
14
+ * (`target="_blank" rel="noopener noreferrer"`); the URL comes from the
15
+ * `deployment.letta_ade_url` field on `/auth/me` (only present for
16
+ * `power_user` and above by design — see `AIHubDeployment` JSDoc).
17
+ *
18
+ * The right side of the shell header is **library-owned** and not
19
+ * customizable — per-customer wrappers can theme via CSS but cannot
20
+ * replace this component.
21
+ *
22
+ * @see ui-sketches/00-shell.md — user_menu_button + user_menu_dropdown
23
+ * @see SPECIFICATIONS.md §8.3 — Open Letta ADE link
24
+ */
25
+ import { useEffect, useRef, useState, } from "react";
26
+ import { useAIHub } from "../../context/useAIHub.js";
27
+ import { useAIHubAuth } from "../../context/useAIHubAuth.js";
28
+ import { ThemeSwitcher } from "../ThemeSwitcher/index.js";
29
+ /**
30
+ * Returns true when the given role can see the admin-only menu items
31
+ * (`Admin` + `Open Letta ADE`). Mirrors the §8.2 matrix.
32
+ *
33
+ * @param role - the caller's role, or `null` when not authenticated.
34
+ * @returns whether the items should render.
35
+ */
36
+ function canSeeAdminItems(role) {
37
+ return role === "power_user" || role === "admin" || role === "super_admin";
38
+ }
39
+ /**
40
+ * Renders the user menu (button + dropdown).
41
+ *
42
+ * @param props - see `UserMenuProps`.
43
+ * @returns the rendered menu, or `null` when unauthenticated.
44
+ */
45
+ export function UserMenu(props) {
46
+ const { texts } = props;
47
+ const auth = useAIHubAuth();
48
+ const { themeSwitcherEnabled } = useAIHub();
49
+ const [open, setOpen] = useState(false);
50
+ const wrapRef = useRef(null);
51
+ const showAdminItems = canSeeAdminItems(auth.role);
52
+ const lettaAdeUrl = auth.deployment?.letta_ade_url ?? null;
53
+ // Close on outside-click + Escape so the menu can't be left open
54
+ // accidentally over the chat below.
55
+ useEffect(() => {
56
+ if (!open)
57
+ return;
58
+ function handleClick(e) {
59
+ const node = wrapRef.current;
60
+ if (node && !node.contains(e.target)) {
61
+ setOpen(false);
62
+ }
63
+ }
64
+ function handleKey(e) {
65
+ if (e.key === "Escape")
66
+ setOpen(false);
67
+ }
68
+ document.addEventListener("mousedown", handleClick);
69
+ document.addEventListener("keydown", handleKey);
70
+ return () => {
71
+ document.removeEventListener("mousedown", handleClick);
72
+ document.removeEventListener("keydown", handleKey);
73
+ };
74
+ }, [open]);
75
+ if (!auth.user)
76
+ return null;
77
+ const displayName = auth.user.display_name ?? auth.user.username;
78
+ return (_jsxs("div", { className: "data-club-ai-hub__user-menu", ref: wrapRef, "data-testid": "user-menu", children: [_jsxs("button", { type: "button", className: "data-club-ai-hub__user-menu__button", "aria-haspopup": "menu", "aria-expanded": open, onClick: () => setOpen((o) => !o), "data-testid": "user-menu-button", children: [_jsx("span", { className: "data-club-ai-hub__user-menu__avatar", "aria-hidden": "true", children: displayName.slice(0, 1).toUpperCase() }), _jsx("span", { className: "data-club-ai-hub__user-menu__username", children: auth.user.username })] }), open ? (_jsxs("div", { className: "data-club-ai-hub__user-menu__dropdown", role: "menu", "data-testid": "user-menu-dropdown", children: [_jsxs("div", { className: "data-club-ai-hub__user-menu__header", children: [_jsx("div", { className: "data-club-ai-hub__user-menu__username-large", children: displayName }), _jsx("div", { className: "data-club-ai-hub__user-menu__role", children: auth.role ?? "" })] }), showAdminItems && props.onOpenAdmin ? (_jsxs("button", { type: "button", role: "menuitem", className: "data-club-ai-hub__user-menu__item", "data-testid": "user-menu-admin", onClick: () => {
79
+ setOpen(false);
80
+ props.onOpenAdmin?.();
81
+ }, children: ["\u2699 ", texts.adminMenuItem] })) : null, showAdminItems && lettaAdeUrl !== null && lettaAdeUrl.length > 0 ? (_jsxs("a", { role: "menuitem", className: "data-club-ai-hub__user-menu__item data-club-ai-hub__user-menu__item--link", "data-testid": "user-menu-open-letta-ade", href: lettaAdeUrl, target: "_blank", rel: "noopener noreferrer", onClick: () => setOpen(false), children: ["\u2197 ", texts.openLettaAdeMenuItem] })) : null, themeSwitcherEnabled ? (_jsx("div", { className: "data-club-ai-hub__user-menu__item", role: "none", "data-testid": "user-menu-theme-row", children: _jsx(ThemeSwitcher, {}) })) : null, _jsxs("button", { type: "button", role: "menuitem", className: "data-club-ai-hub__user-menu__item", onClick: () => {
82
+ setOpen(false);
83
+ void auth.logout();
84
+ }, "data-testid": "user-menu-sign-out", children: ["\u23FB ", texts.signOutMenuItem] })] })) : null] }));
85
+ }
86
+ //# sourceMappingURL=UserMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../../src/components/ChatShell/UserMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * `<ChatShell />` — the authenticated chrome wrapping the chat layout.
3
+ *
4
+ * Step 10 lights up the §8.4 server-toggle precedence here: this is the
5
+ * one place that calls `resolveAffordanceFlags(serverToggles, propStack)`
6
+ * and then forwards the resolved booleans to the child primitives so
7
+ * each primitive doesn't have to re-implement the merge.
8
+ *
9
+ * `ChatShell` is internal to `<DataClubAIHub />` — Tier-3 wrappers
10
+ * compose primitives directly and don't render this component.
11
+ *
12
+ * @see SPECIFICATIONS.md §7.3, §8.4
13
+ * @see ui-sketches/00-shell.md, ui-sketches/03-chat.md
14
+ */
15
+ import { type ReactNode } from "react";
16
+ import { type AIHubTexts, type DeepPartial } from "../../auth/texts.js";
17
+ import type { AIHubMessageActionRenderer, AIHubMessageBubbleRenderer } from "../../types.js";
18
+ /**
19
+ * Props for `<ChatShell />` — a strict subset of `<DataClubAIHub />` props
20
+ * the shell actually reads.
21
+ */
22
+ export interface ChatShellProps {
23
+ /** Product name shown when `customShellHeaderLeft` is unset. */
24
+ productName?: string;
25
+ /** Wrapper-supplied left-of-header slot. */
26
+ customShellHeaderLeft?: ReactNode;
27
+ /** Wrapper-supplied below-main-area footer slot. */
28
+ customShellFooter?: ReactNode;
29
+ /** Wrapper-supplied per-agent header slot (right of agent name). */
30
+ customHeaderContent?: ReactNode;
31
+ /** Top-of-sessions-panel slot. */
32
+ customSidebarHeader?: ReactNode;
33
+ /** Bottom-of-sessions-panel slot. */
34
+ customSidebarFooter?: ReactNode;
35
+ /** Per-message action bar renderer (Tier-2 slot). */
36
+ customMessageActions?: AIHubMessageActionRenderer;
37
+ /** Override the entire bubble (Tier-3 escape hatch). */
38
+ customMessageBubble?: AIHubMessageBubbleRenderer;
39
+ /** Extra toolbar items in the input area. */
40
+ customInputToolbarItems?: ReactNode;
41
+ /** Whether the agents picker is reachable. Defaults to true. */
42
+ showAgentsPicker?: boolean;
43
+ /** Skip the picker entirely and open this agent. */
44
+ initialAgentId?: string;
45
+ /** Deep-link a session inside `initialAgentId`. */
46
+ initialSessionId?: string;
47
+ /** sessions_panel_enabled default. */
48
+ showSessionsPanel?: boolean;
49
+ /** sessions_panel_collapsible default. */
50
+ sessionsPanelCollapsible?: boolean;
51
+ /** sessions_panel_resizable default. */
52
+ sessionsPanelResizable?: boolean;
53
+ /** Layout-only (not a §8.4 toggle). */
54
+ sessionsPanelPosition?: "left" | "right";
55
+ /** Layout-only (not a §8.4 toggle). */
56
+ sessionsPanelWidthPercent?: number;
57
+ /** user_input_enabled default. */
58
+ showInput?: boolean;
59
+ /** create_session_button_enabled default. */
60
+ showCreateSessionButton?: boolean;
61
+ /** effort_control_visible default. */
62
+ showEffortControl?: boolean;
63
+ /** stop_button_enabled default. */
64
+ showStopButton?: boolean;
65
+ /** tool_calls_visible default. */
66
+ showToolCalls?: boolean;
67
+ /** reasoning_visible default. */
68
+ showReasoning?: boolean;
69
+ /** system_messages_visible default. */
70
+ showSystemMessages?: boolean;
71
+ /** tpm_notice_visible default. */
72
+ showTpmNotice?: boolean;
73
+ /** scroll_to_present_visible default. */
74
+ showScrollToPresentButton?: boolean;
75
+ /** turn_status_visible default. */
76
+ showTurnStatus?: boolean;
77
+ /** Whether the ThemeSwitcher renders in the user menu (server override wins). */
78
+ showThemeSwitcher?: boolean;
79
+ /** Wrapper-supplied i18n. */
80
+ texts?: DeepPartial<AIHubTexts>;
81
+ /** Extra className merged on the shell root. */
82
+ className?: string;
83
+ /**
84
+ * Fired when the user clicks the `Admin` item in the user-menu. Step 11
85
+ * — the monolith uses this to swap the main area for
86
+ * `<DataClubAIHubAdmin />`. Omitted by Tier-3 wrappers that mount admin
87
+ * on a separate Next.js route.
88
+ */
89
+ onOpenAdmin?: () => void;
90
+ }
91
+ /**
92
+ * Renders the chat shell.
93
+ *
94
+ * @param props - see `ChatShellProps`.
95
+ * @returns the rendered shell.
96
+ */
97
+ export declare function ChatShell(props: ChatShellProps): ReactNode;
98
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ChatShell/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EACV,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AAUxB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,kCAAkC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAClD,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,SAAS,CAAC;IACpC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,wCAAwC;IACxC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uCAAuC;IACvC,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,uCAAuC;IACvC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kCAAkC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AA0CD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CA+I1D"}
@@ -0,0 +1,124 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * `<ChatShell />` — the authenticated chrome wrapping the chat layout.
4
+ *
5
+ * Step 10 lights up the §8.4 server-toggle precedence here: this is the
6
+ * one place that calls `resolveAffordanceFlags(serverToggles, propStack)`
7
+ * and then forwards the resolved booleans to the child primitives so
8
+ * each primitive doesn't have to re-implement the merge.
9
+ *
10
+ * `ChatShell` is internal to `<DataClubAIHub />` — Tier-3 wrappers
11
+ * compose primitives directly and don't render this component.
12
+ *
13
+ * @see SPECIFICATIONS.md §7.3, §8.4
14
+ * @see ui-sketches/00-shell.md, ui-sketches/03-chat.md
15
+ */
16
+ import { useEffect, useMemo } from "react";
17
+ import { resolveAIHubTexts, } from "../../auth/texts.js";
18
+ import { useAIHub } from "../../context/useAIHub.js";
19
+ import { resolveAffordanceFlags, } from "../../state/affordances.js";
20
+ import { AgentsPicker } from "../AgentsPicker/index.js";
21
+ import { Layout } from "../Layout/index.js";
22
+ import { MainColumn } from "../MainColumn/index.js";
23
+ import { MessageInput } from "../MessageInput/index.js";
24
+ import { MessageList } from "../MessageList/index.js";
25
+ import { SessionsPanel } from "../SessionsPanel/index.js";
26
+ import { ShellHeader } from "./ShellHeader.js";
27
+ /**
28
+ * Builds the prop-override record consumed by `resolveAffordanceFlags`.
29
+ *
30
+ * Note that some props on `ChatShellProps` use slightly different names
31
+ * than the `AIHubAffordanceFlags` field names (e.g. `showInput` vs.
32
+ * `userInputEnabled`); this function maps them. Adding a new flag
33
+ * requires touching this function alongside `AIHubAffordanceFlags`.
34
+ */
35
+ function buildPropOverrides(props) {
36
+ const out = {};
37
+ if (props.showSessionsPanel !== undefined)
38
+ out.sessionsPanelEnabled = props.showSessionsPanel;
39
+ if (props.sessionsPanelResizable !== undefined)
40
+ out.sessionsPanelResizable = props.sessionsPanelResizable;
41
+ if (props.sessionsPanelCollapsible !== undefined)
42
+ out.sessionsPanelCollapsible = props.sessionsPanelCollapsible;
43
+ if (props.showCreateSessionButton !== undefined)
44
+ out.createSessionButtonEnabled = props.showCreateSessionButton;
45
+ if (props.showInput !== undefined)
46
+ out.userInputEnabled = props.showInput;
47
+ if (props.showStopButton !== undefined)
48
+ out.stopButtonEnabled = props.showStopButton;
49
+ if (props.showToolCalls !== undefined)
50
+ out.toolCallsVisible = props.showToolCalls;
51
+ if (props.showReasoning !== undefined)
52
+ out.reasoningVisible = props.showReasoning;
53
+ if (props.showSystemMessages !== undefined)
54
+ out.systemMessagesVisible = props.showSystemMessages;
55
+ if (props.showTpmNotice !== undefined)
56
+ out.tpmNoticeVisible = props.showTpmNotice;
57
+ if (props.showEffortControl !== undefined)
58
+ out.effortControlVisible = props.showEffortControl;
59
+ if (props.showScrollToPresentButton !== undefined)
60
+ out.scrollToPresentVisible = props.showScrollToPresentButton;
61
+ if (props.showTurnStatus !== undefined)
62
+ out.turnStatusVisible = props.showTurnStatus;
63
+ return out;
64
+ }
65
+ /**
66
+ * Renders the chat shell.
67
+ *
68
+ * @param props - see `ChatShellProps`.
69
+ * @returns the rendered shell.
70
+ */
71
+ export function ChatShell(props) {
72
+ const { agents, agentsLoading, activeAgentId, setActiveAgent, activeSessionId, setActiveSession, featureToggles, } = useAIHub();
73
+ const texts = resolveAIHubTexts(props.texts);
74
+ const productName = props.productName ?? "ai-hub";
75
+ const showAgentsPicker = props.showAgentsPicker ?? true;
76
+ const sessionsPanelPosition = props.sessionsPanelPosition ?? "left";
77
+ const sessionsPanelWidthPercent = props.sessionsPanelWidthPercent ?? 25;
78
+ // Compose the §8.4 precedence stack once. `featureToggles === null`
79
+ // (still loading) → fall through to prop / default; we treat it as
80
+ // an empty blob so the precedence rule reduces to "prop > default".
81
+ const propOverrides = useMemo(() => buildPropOverrides(props), [props]);
82
+ const flags = useMemo(() => resolveAffordanceFlags(featureToggles, propOverrides), [featureToggles, propOverrides]);
83
+ // Deep-link: open `initialAgentId` and `initialSessionId` on first
84
+ // mount (and whenever those props change).
85
+ useEffect(() => {
86
+ if (props.initialAgentId && activeAgentId !== props.initialAgentId) {
87
+ setActiveAgent(props.initialAgentId);
88
+ }
89
+ }, [props.initialAgentId]);
90
+ useEffect(() => {
91
+ if (props.initialSessionId &&
92
+ activeSessionId !== props.initialSessionId) {
93
+ setActiveSession(props.initialSessionId);
94
+ }
95
+ }, [props.initialSessionId]);
96
+ const autoSelectOnlyAgent = useMemo(() => showAgentsPicker && !activeAgentId && !agentsLoading && agents.length === 1, [showAgentsPicker, activeAgentId, agentsLoading, agents]);
97
+ useEffect(() => {
98
+ if (autoSelectOnlyAgent && agents[0]) {
99
+ setActiveAgent(agents[0].id);
100
+ }
101
+ }, [autoSelectOnlyAgent, agents, setActiveAgent]);
102
+ const inPicker = showAgentsPicker && !activeAgentId;
103
+ const rootClass = props.className
104
+ ? `data-club-ai-hub__shell ${props.className}`
105
+ : "data-club-ai-hub__shell";
106
+ return (_jsxs("div", { className: rootClass, "data-testid": "chat-shell", children: [_jsx(ShellHeader, { productName: productName, texts: texts.chat, ...(props.customShellHeaderLeft !== undefined
107
+ ? { customShellHeaderLeft: props.customShellHeaderLeft }
108
+ : {}), ...(props.onOpenAdmin !== undefined
109
+ ? { onOpenAdmin: props.onOpenAdmin }
110
+ : {}) }), _jsx("main", { className: "data-club-ai-hub__shell-main", "data-testid": "shell-main", children: inPicker ? (_jsx(AgentsPicker, { ...(props.texts !== undefined ? { texts: props.texts } : {}) })) : (_jsxs(Layout, { panelPosition: sessionsPanelPosition, panelWidthPercent: sessionsPanelWidthPercent, children: [flags.sessionsPanelEnabled ? (_jsx(SessionsPanel, { showCreateButton: flags.createSessionButtonEnabled, collapsible: flags.sessionsPanelCollapsible, ...(props.texts !== undefined ? { texts: props.texts } : {}), ...(props.customSidebarHeader !== undefined
111
+ ? { customHeader: props.customSidebarHeader }
112
+ : {}), ...(props.customSidebarFooter !== undefined
113
+ ? { customFooter: props.customSidebarFooter }
114
+ : {}) })) : null, _jsxs(MainColumn, { showBackToAgents: showAgentsPicker, showTurnStatus: flags.turnStatusVisible, ...(props.texts !== undefined ? { texts: props.texts } : {}), ...(props.customHeaderContent !== undefined
115
+ ? { customHeaderContent: props.customHeaderContent }
116
+ : {}), children: [_jsx(MessageList, { showSystemMessages: flags.systemMessagesVisible, showTpmNotice: flags.tpmNoticeVisible, showScrollToPresentButton: flags.scrollToPresentVisible, showReasoning: flags.reasoningVisible, showToolCalls: flags.toolCallsVisible, ...(props.texts !== undefined ? { texts: props.texts } : {}), ...(props.customMessageActions !== undefined
117
+ ? { renderMessageActions: props.customMessageActions }
118
+ : {}), ...(props.customMessageBubble !== undefined
119
+ ? { renderMessageBubble: props.customMessageBubble }
120
+ : {}) }), flags.userInputEnabled ? (_jsx(MessageInput, { showEffortControl: flags.effortControlVisible, stopButtonEnabled: flags.stopButtonEnabled, ...(props.texts !== undefined ? { texts: props.texts } : {}), ...(props.customInputToolbarItems !== undefined
121
+ ? { toolbar: props.customInputToolbarItems }
122
+ : {}) })) : null] })] })) }), props.customShellFooter ? (_jsx("footer", { className: "data-club-ai-hub__shell-footer", "data-testid": "shell-footer", children: props.customShellFooter })) : null] }));
123
+ }
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ChatShell/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * `<DataClubAIHub />` — the default monolithic chat component
3
+ * (Tier 1 / Tier 2 surface).
4
+ *
5
+ * Internally a thin composition over `<AIHubProvider>` + `<AuthGate>` +
6
+ * `<ChatShell>`. The structural budget of ≤50 lines for the body (§7.1)
7
+ * is honored — the body is a single JSX tree; the prop forwarding is
8
+ * verbose because TypeScript's `exactOptionalPropertyTypes: true`
9
+ * forbids passing `prop={undefined}`.
10
+ *
11
+ * Step 10 lights up:
12
+ *
13
+ * - The remaining slot props (`customMessageActions`,
14
+ * `customMessageBubble`, `customInputToolbarItems`).
15
+ * - The server-toggle precedence (§8.4) — the resolved boolean stack
16
+ * is computed inside `ChatShell` from `useAIHub().featureToggles +
17
+ * the prop overrides we forward here.
18
+ * - The theme props (`defaultTheme`, `showThemeSwitcher`) — these flow
19
+ * through the provider (theme_default is a server-config override).
20
+ *
21
+ * @see SPECIFICATIONS.md §7.3 — `<DataClubAIHub />` props
22
+ * @see SPECIFICATIONS.md §5 — per-customer wrapper shape
23
+ * @see ui-sketches/03-chat.md — the chat layout
24
+ * @see ui-sketches/00-shell.md — the shell chrome
25
+ */
26
+ import { type ReactNode } from "react";
27
+ import type { AIHubMessageActionRenderer, AIHubMessageBubbleRenderer } from "../../types.js";
28
+ import type { AIHubLoginClassNames } from "../DataClubAIHubLogin/index.js";
29
+ import type { AIHubChangePasswordClassNames } from "../ChangePassword/index.js";
30
+ import type { AIHubTexts, DeepPartial } from "../../auth/texts.js";
31
+ /**
32
+ * Props for `<DataClubAIHub />`.
33
+ *
34
+ * Every `show*` / boolean prop here is a **React-prop default** for the
35
+ * §8.4 precedence stack: server toggle > React prop > built-in default.
36
+ * The server toggle is fetched lazily by the provider and applied
37
+ * inside `ChatShell` via `resolveAffordanceFlags`.
38
+ */
39
+ export interface DataClubAIHubProps {
40
+ /**
41
+ * Base URL the ai-hub-server is mounted at — typically `/api/ai-hub`
42
+ * for the per-customer wrapper shape (§5). Defaults to `/api/ai-hub`.
43
+ */
44
+ baseUrl?: string;
45
+ /**
46
+ * Title shown on the login_card *and* used as the default shell
47
+ * header logo when `customShellHeaderLeft` is unset. Defaults to
48
+ * `"ai-hub"`. Per-customer wrappers set this to their brand label.
49
+ */
50
+ productName?: string;
51
+ /** Placeholder for the username input on the login card. */
52
+ usernamePlaceholder?: string;
53
+ /** Wrapper-supplied i18n. */
54
+ texts?: DeepPartial<AIHubTexts>;
55
+ /** Per-element class overrides for the login screen. */
56
+ loginClassNames?: Partial<AIHubLoginClassNames>;
57
+ /** Per-element class overrides for the change-password screen. */
58
+ changePasswordClassNames?: Partial<AIHubChangePasswordClassNames>;
59
+ /** Extra className merged onto the chat shell root. */
60
+ className?: string;
61
+ /** Default for sessions_panel_enabled. Default true. */
62
+ sessions?: boolean;
63
+ /** Default for sessions_panel_resizable. Default true. */
64
+ sessionsPanelResizable?: boolean;
65
+ /** Sessions panel side — not a §8.4 toggle, pure layout prop. */
66
+ sessionsPanelPosition?: "left" | "right";
67
+ /** Sessions panel width in percent — not a §8.4 toggle. */
68
+ sessionsPanelWidthPercent?: number;
69
+ /** Default for sessions_panel_collapsible. Default true. */
70
+ sessionsPanelCollapsible?: boolean;
71
+ /** Default for create_session_button_enabled. Default true. */
72
+ showCreateSessionButton?: boolean;
73
+ /** Default for user_input_enabled. Default true. */
74
+ userInput?: boolean;
75
+ /** Default for effort_control_visible. Default true. */
76
+ showEffortControl?: boolean;
77
+ /** Default for stop_button_enabled. Default true. */
78
+ showStopButton?: boolean;
79
+ /** Default for tool_calls_visible. Default true. */
80
+ showToolCalls?: boolean;
81
+ /** Default for reasoning_visible. Default true. */
82
+ showReasoning?: boolean;
83
+ /** Default for system_messages_visible. Default true. */
84
+ showSystemMessages?: boolean;
85
+ /** Default for tpm_notice_visible. Default true. */
86
+ showTpmNotice?: boolean;
87
+ /** Default for scroll_to_present_visible. Default true. */
88
+ showScrollToPresentButton?: boolean;
89
+ /** Default for turn_status_visible. Default true. */
90
+ showTurnStatus?: boolean;
91
+ /**
92
+ * Fallback theme used before `/auth/me` resolves (or when no
93
+ * cache exists). Server's `theme_default` wins after hydration.
94
+ */
95
+ defaultTheme?: "light" | "dark";
96
+ /**
97
+ * Whether the `ThemeSwitcher` primitive renders in the user menu.
98
+ * Server's `theme_switcher_enabled` wins (true → switcher; false →
99
+ * hidden entirely). The React prop is the dev-time fallback.
100
+ */
101
+ showThemeSwitcher?: boolean;
102
+ /** Whether the agents picker is reachable. Default true. */
103
+ showAgentsPicker?: boolean;
104
+ /** Open this agent directly on mount (skips the picker). */
105
+ initialAgentId?: string;
106
+ /** Open this session directly on mount. */
107
+ initialSessionId?: string;
108
+ /** Left-of-shell-header slot (logo + brand name + nav links). */
109
+ customShellHeaderLeft?: ReactNode;
110
+ /** Bottom-of-shell footer strip. Unset → no footer. */
111
+ customShellFooter?: ReactNode;
112
+ /** Per-agent header slot (right of agent name + turn-status indicator). */
113
+ customHeaderContent?: ReactNode;
114
+ /** Top-of-sessions-panel slot. */
115
+ customSidebarHeader?: ReactNode;
116
+ /** Bottom-of-sessions-panel slot. */
117
+ customSidebarFooter?: ReactNode;
118
+ /** Per-message action bar renderer — gets every assistant message. */
119
+ customMessageActions?: AIHubMessageActionRenderer;
120
+ /** Replaces the entire message bubble. Advanced; Tier 3 only typically. */
121
+ customMessageBubble?: AIHubMessageBubbleRenderer;
122
+ /** Extra toolbar items in the input area (next to the effort dropdown). */
123
+ customInputToolbarItems?: ReactNode;
124
+ }
125
+ /**
126
+ * Renders the monolith.
127
+ *
128
+ * @param props - see `DataClubAIHubProps`.
129
+ * @returns the rendered component.
130
+ */
131
+ export declare function DataClubAIHub(props: DataClubAIHubProps): ReactNode;
132
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DataClubAIHub/index.tsx"],"names":[],"mappings":"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"}