@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,815 @@
1
+ /**
2
+ * `AIHubTexts` — the user-facing-string surface for every built-in screen.
3
+ *
4
+ * Per-customer wrappers pass a localized object via `texts` (on
5
+ * `<DataClubAIHub />` and on the standalone auth components); the components
6
+ * fall back to the English defaults for any key the wrapper omits. Step 8
7
+ * defines the auth-screen keys; Step 9 + Step 10 + Step 11 + Step 12 extend
8
+ * the map as their own screens land.
9
+ *
10
+ * Conventions:
11
+ *
12
+ * - Keys are namespaced (`login.signInButton`, `changePassword.saveButton`).
13
+ * The namespace is the screen / surface; the leaf is what the string is for.
14
+ * - **Defaults are English** — wrappers can ship any locale by passing
15
+ * `texts={{ login: { signInButton: "Přihlásit se" } }}` and so on.
16
+ * - Defaults are exported as a frozen object so a careless caller mutating
17
+ * them blows up loudly in dev instead of poisoning every render after.
18
+ *
19
+ * @see SPECIFICATIONS.md §7.2.1 — login props (texts is wrapper-localized)
20
+ * @see SPECIFICATIONS.md §7.3 — `<DataClubAIHub />` texts forwarding
21
+ * @see ui-sketches/01-login.md — the strings on the login card
22
+ * @see ui-sketches/02-change-password.md — the strings on the change-password card
23
+ */
24
+ /**
25
+ * User-facing strings on `<DataClubAIHubLogin />`. Every string the screen
26
+ * renders has a key here so wrappers can localize without forking the
27
+ * component.
28
+ */
29
+ export interface AIHubLoginTexts {
30
+ /** Label above the username input. */
31
+ usernameLabel: string;
32
+ /** Label above the password input. */
33
+ passwordLabel: string;
34
+ /** Submit-button label (idle). */
35
+ signInButton: string;
36
+ /** Submit-button label while the request is in flight. */
37
+ signingInButton: string;
38
+ /**
39
+ * Footer note below the sign-in button — v1 has no self-serve reset
40
+ * (§8.5), this is the user-visible instruction. Plain text, not a link.
41
+ */
42
+ forgotPasswordNote: string;
43
+ /** `aria-label` on the show/hide-password toggle when the password is hidden. */
44
+ showPasswordAriaLabel: string;
45
+ /** `aria-label` on the show/hide-password toggle when the password is shown. */
46
+ hidePasswordAriaLabel: string;
47
+ /** Banner shown on a 401 from `/auth/login`. */
48
+ invalidCredentialsError: string;
49
+ /** Banner shown on a transport / network failure. */
50
+ networkError: string;
51
+ }
52
+ /**
53
+ * User-facing strings on `<DataClubAIHubChangePassword />` (both the forced
54
+ * and the voluntary variants).
55
+ */
56
+ export interface AIHubChangePasswordTexts {
57
+ /** Card title at the top. */
58
+ title: string;
59
+ /** Intro message shown only on the forced variant. */
60
+ forcedChangePasswordIntro: string;
61
+ /** Label for the (voluntary-only) current-password field. */
62
+ currentPasswordLabel: string;
63
+ /** Label for the new-password field. */
64
+ newPasswordLabel: string;
65
+ /** Label for the confirm-password field. */
66
+ confirmPasswordLabel: string;
67
+ /** Submit button (idle). */
68
+ changePasswordButton: string;
69
+ /** Submit button while saving. */
70
+ savingButton: string;
71
+ /** Voluntary-only cancel button. */
72
+ cancelButton: string;
73
+ /** Inline error: confirm-password doesn't match new-password. */
74
+ passwordsMustMatchError: string;
75
+ /** Inline error: new-password shorter than the minimum length. */
76
+ passwordTooShortError: string;
77
+ /**
78
+ * Inline error: new-password fails the §8.5 complexity rule (≥2 of
79
+ * letters, digits, special characters).
80
+ */
81
+ passwordTooSimpleError: string;
82
+ /** Banner shown when the server rejects the current password (voluntary). */
83
+ invalidCurrentPasswordError: string;
84
+ /** Banner shown on a transport / network failure. */
85
+ networkError: string;
86
+ /** `aria-label` on the show/hide-password toggle when the password is hidden. */
87
+ showPasswordAriaLabel: string;
88
+ /** `aria-label` on the show/hide-password toggle when the password is shown. */
89
+ hidePasswordAriaLabel: string;
90
+ }
91
+ /**
92
+ * User-facing strings on the chat surface — agents picker, sessions panel,
93
+ * chat header, message list, input. Step 9 ships the structural-layout
94
+ * keys; Step 10 will add the affordance keys (TPM banner, theme switcher,
95
+ * tool-call card, etc.).
96
+ *
97
+ * @see ui-sketches/03-chat.md
98
+ */
99
+ export interface AIHubChatTexts {
100
+ /** Heading on the agents picker. */
101
+ agentsPickerHeading: string;
102
+ /**
103
+ * Subtitle template — `{count}` is replaced with the per-caller session
104
+ * count. Pluralization is handled by the wrapper if needed.
105
+ */
106
+ agentCardSessionsSubtitle: string;
107
+ /** Subtitle on agent cards with zero sessions yet. */
108
+ agentCardNoSessionsSubtitle: string;
109
+ /** Empty-state heading when the deployment has zero non-archived agents. */
110
+ agentsPickerEmptyHeading: string;
111
+ /** Empty-state body. */
112
+ agentsPickerEmptyBody: string;
113
+ /** Loading line shown on the agents picker while `/agents` is in flight. */
114
+ agentsPickerLoading: string;
115
+ /** Error banner on the agents picker when `/agents` fails. */
116
+ agentsPickerError: string;
117
+ /** Loading line on the sessions list. */
118
+ sessionsLoading: string;
119
+ /** Empty-state line when the user has no sessions for the open agent. */
120
+ sessionsEmpty: string;
121
+ /** "+ New chat" button label on the sessions panel. */
122
+ newSessionButton: string;
123
+ /** Sessions-panel "Show archived" filter label. */
124
+ showArchivedToggle: string;
125
+ /** Sessions-panel "Hide archived" filter label. */
126
+ hideArchivedToggle: string;
127
+ /** `aria-label` for the row's edit-title button. */
128
+ editSessionTitleAriaLabel: string;
129
+ /** `aria-label` for the row's archive button. */
130
+ archiveSessionAriaLabel: string;
131
+ /** `aria-label` for the row's unarchive button (archived view only). */
132
+ unarchiveSessionAriaLabel: string;
133
+ /**
134
+ * Archive-row `confirm()` text — `{title}` is replaced with the session
135
+ * title.
136
+ */
137
+ archiveConfirmPrompt: string;
138
+ /** `aria-label` for the sessions-panel collapse button. */
139
+ collapseSessionsPanel: string;
140
+ /** `aria-label` for the sessions-panel reveal button (collapsed state). */
141
+ expandSessionsPanel: string;
142
+ /** `[← Agents]` back-to-picker link in the chat header. */
143
+ backToAgentsLink: string;
144
+ /** Fallback title for a session somehow rendered without one. */
145
+ untitledSessionFallback: string;
146
+ /** Body shown when no session is selected yet. */
147
+ noActiveSessionHint: string;
148
+ /** Body shown when the user opens a session with zero messages. */
149
+ emptyConversationHint: string;
150
+ /** Placeholder inside the input textarea. */
151
+ inputPlaceholder: string;
152
+ /** Send-button label. */
153
+ sendButton: string;
154
+ /** Stop-button label (generic — Step 10 adds phase-specific labels). */
155
+ stopButton: string;
156
+ /**
157
+ * Stop-button label shown from the moment the user clicks Stop until
158
+ * the server delivers `stream_end{cancelled}` — typically a few
159
+ * hundred ms while Letta winds the run down.
160
+ */
161
+ stoppingButton: string;
162
+ /** `aria-label` on the send button. */
163
+ sendButtonAriaLabel: string;
164
+ /** `aria-label` on the stop button. */
165
+ stopButtonAriaLabel: string;
166
+ /** Modal title — new-session flow. */
167
+ newSessionModalTitle: string;
168
+ /** Modal title — edit-session-title flow. */
169
+ editSessionModalTitle: string;
170
+ /** Label above the chat-title input in the modal. */
171
+ sessionTitleLabel: string;
172
+ /** Placeholder text inside the chat-title input. */
173
+ sessionTitlePlaceholder: string;
174
+ /** Inline validation: title required (empty submit). */
175
+ sessionTitleRequiredError: string;
176
+ /** Inline validation: title too long (>80 chars). */
177
+ sessionTitleTooLongError: string;
178
+ /** Modal cancel button. */
179
+ modalCancelButton: string;
180
+ /** Modal create button (new-session). */
181
+ modalCreateButton: string;
182
+ /** Modal save button (edit-title). */
183
+ modalSaveButton: string;
184
+ /** Generic banner when a session / chat / agents request fails. */
185
+ genericRequestError: string;
186
+ /**
187
+ * Surfaced in `<MessageList />` when a turn ends without the agent
188
+ * producing any assistant output (no `assistant_delta`, no
189
+ * `assistant_message_complete`) AND without an explicit `error` event.
190
+ * Catches the "API key wrong / provider returned empty" case.
191
+ */
192
+ noAssistantResponseError: string;
193
+ /** User-menu sign-out item label (minimal Step 9 user menu). */
194
+ signOutMenuItem: string;
195
+ /** Stop-button label during model-text / model-reasoning / etc. phases. */
196
+ stopGenerationButton: string;
197
+ /** Stop-button label during `tool_executing` phase. */
198
+ cancelToolButton: string;
199
+ /** Generic system-notice "Resumed." flash text. */
200
+ systemResumedText: string;
201
+ /**
202
+ * TPM-banner body during `waiting_provider`. `{seconds}` is replaced
203
+ * with the remaining countdown.
204
+ */
205
+ tpmWaitText: string;
206
+ /** TPM-banner body when recovery exhausted. */
207
+ tpmExhaustedText: string;
208
+ /** TPM-banner retry button. */
209
+ tpmRetryButton: string;
210
+ /** Generic stream-error banner body for `--failed` assistant bubbles. */
211
+ streamFailedText: string;
212
+ /** Retry button on `--failed` bubbles. */
213
+ retryFailedButton: string;
214
+ /** "Stopped" stamp on cancelled bubbles. */
215
+ cancelledStampText: string;
216
+ /** `[↓ Jump to latest]` scroll-to-present button. */
217
+ scrollToPresentButton: string;
218
+ /**
219
+ * Reasoning view collapsed-header text WITH a known duration.
220
+ * `{seconds}` is replaced with the elapsed seconds (e.g. `3.2`).
221
+ * Used during streaming and on historical bubbles that recorded a
222
+ * duration; the no-duration variant is used otherwise.
223
+ */
224
+ reasoningCollapsedHeader: string;
225
+ /**
226
+ * Reasoning view collapsed-header text when no duration is known —
227
+ * e.g. on historical bubbles where the wire shape doesn't carry a
228
+ * duration. Should NOT contain `{seconds}`.
229
+ */
230
+ reasoningCollapsedHeaderNoDuration: string;
231
+ /** Reasoning view expanded-header text — same `{seconds}` rules. */
232
+ reasoningExpandedHeader: string;
233
+ /** Reasoning view expanded-header text when no duration is known. */
234
+ reasoningExpandedHeaderNoDuration: string;
235
+ /** Reasoning view expand-button `aria-label`. */
236
+ reasoningExpandAriaLabel: string;
237
+ /** Reasoning view collapse-button `aria-label`. */
238
+ reasoningCollapseAriaLabel: string;
239
+ /** Reasoning view "thinking…" placeholder while deltas are arriving. */
240
+ reasoningThinkingPlaceholder: string;
241
+ /** Tool-call card header — `running` state. */
242
+ toolCallRunningStatus: string;
243
+ /** Tool-call card header — `done` state. */
244
+ toolCallDoneStatus: string;
245
+ /** Tool-call card header — `error` state. */
246
+ toolCallErrorStatus: string;
247
+ /** Tool-call card "Input:" section label. */
248
+ toolCallInputLabel: string;
249
+ /** Tool-call card "Output:" section label. */
250
+ toolCallOutputLabel: string;
251
+ /** Tool-call card "Error:" section label. */
252
+ toolCallErrorLabel: string;
253
+ /** Tool-call card expand-button `aria-label`. */
254
+ toolCallExpandAriaLabel: string;
255
+ /** Tool-call card collapse-button `aria-label`. */
256
+ toolCallCollapseAriaLabel: string;
257
+ /** Effort dropdown label. */
258
+ effortLabel: string;
259
+ /** Effort dropdown — None. */
260
+ effortNone: string;
261
+ /** Effort dropdown — Minimal. */
262
+ effortMinimal: string;
263
+ /** Effort dropdown — Low. */
264
+ effortLow: string;
265
+ /** Effort dropdown — Medium. */
266
+ effortMedium: string;
267
+ /** Effort dropdown — High. */
268
+ effortHigh: string;
269
+ /** Effort dropdown — Extra High. */
270
+ effortExtraHigh: string;
271
+ /** Theme switcher — visible label when current theme is light. */
272
+ themeDarkLabel: string;
273
+ /** Theme switcher — visible label when current theme is dark. */
274
+ themeLightLabel: string;
275
+ /** Theme switcher — `aria-label` when current theme is light. */
276
+ themeSwitchToDarkAriaLabel: string;
277
+ /** Theme switcher — `aria-label` when current theme is dark. */
278
+ themeSwitchToLightAriaLabel: string;
279
+ /** User-menu "Admin" item label (only rendered for `role >= power_user`). */
280
+ adminMenuItem: string;
281
+ /**
282
+ * User-menu "Open Letta ADE ↗" item label — opens the deployment's Letta
283
+ * ADE in a new browser tab. Only rendered for `role >= power_user`.
284
+ */
285
+ openLettaAdeMenuItem: string;
286
+ }
287
+ /**
288
+ * User-facing strings on `<DataClubAIHubAdmin />` — the role-gated admin UI
289
+ * mounted under the same shell as chat (§7.1, §8.3, [04-admin-overview.md]).
290
+ *
291
+ * Step 11 fills in the shell + Users sub-page strings; Step 12 will extend
292
+ * this map with `agents.*`, `sessionsOverview.*`, and `settings.*` keys
293
+ * without touching the existing keys (wrappers stay forward-compatible).
294
+ *
295
+ * @see ui-sketches/04-admin-overview.md
296
+ * @see ui-sketches/05-admin-users.md
297
+ */
298
+ export interface AIHubAdminTexts {
299
+ /** `admin_nav` section heading shown above the nav list. */
300
+ navHeading: string;
301
+ /** Nav item label — Users sub-page (visible to admin / super_admin). */
302
+ navUsers: string;
303
+ /** Nav item label — Agents sub-page (visible to power_user and above). */
304
+ navAgents: string;
305
+ /** Nav item label — Sessions overview sub-page (visible to power_user and above). */
306
+ navSessionsOverview: string;
307
+ /** Nav item label — Rotating messages sub-page (visible to power_user and above). */
308
+ navRotatingMessages: string;
309
+ /** Nav item label — Settings sub-page (super_admin only). */
310
+ navSettings: string;
311
+ /**
312
+ * "← Back to chat" link at the bottom of the admin nav. Surfaces when
313
+ * the admin shell is mounted inside `<DataClubAIHub />` (the monolith
314
+ * passes an `onExit` callback that swaps the view); Tier-3 wrappers
315
+ * mounting the admin on its own route can omit `onExit` and the link
316
+ * stays hidden.
317
+ */
318
+ backToChatLink: string;
319
+ /**
320
+ * @deprecated Unused since Step 12 landed the real Agents / Sessions
321
+ * overview / Settings pages. Retained in the interface so per-customer
322
+ * wrappers that overrode the string don't get a type error on upgrade;
323
+ * remove in v2.
324
+ */
325
+ comingInStep12Placeholder: string;
326
+ /** Page heading on the Users sub-page. */
327
+ usersHeading: string;
328
+ /** "+ Create user" button label (top-right). */
329
+ createUserButton: string;
330
+ /** `users_table` column header — Username. */
331
+ userColumnUsername: string;
332
+ /** `users_table` column header — Display name. */
333
+ userColumnDisplay: string;
334
+ /** `users_table` column header — Role. */
335
+ userColumnRole: string;
336
+ /** `users_table` column header — Actions. */
337
+ userColumnActions: string;
338
+ /** Loading placeholder for the table. */
339
+ usersLoading: string;
340
+ /** Empty placeholder when the deployment somehow has zero users. */
341
+ usersEmpty: string;
342
+ /** Generic banner shown when `/admin/users` fails. */
343
+ usersGenericError: string;
344
+ /** `aria-label` for the per-row reset-password button. */
345
+ resetPasswordButtonLabel: string;
346
+ /** `aria-label` for the per-row delete button. */
347
+ deleteUserButtonLabel: string;
348
+ /** Tooltip / sr-only text on a row's `[role▼]` when admin-shield disables it. */
349
+ roleSelectShieldDisabledHint: string;
350
+ /** Tooltip / sr-only text on a row's `[role▼]` when min-count disables it. */
351
+ roleSelectMinCountDisabledHint: string;
352
+ /**
353
+ * Banner text shown after a server 403 on a role change — message comes
354
+ * from the server but we provide a fallback so empty messages don't
355
+ * leave the user staring at a silent revert.
356
+ */
357
+ roleChangeForbiddenFallback: string;
358
+ /** Toast / inline success message after a successful role change. `{role}` is interpolated. */
359
+ roleChangeSuccessToast: string;
360
+ /** Visual marker text appended to a row whose `is_initial_password === true`. */
361
+ initialPasswordIndicator: string;
362
+ /** Role option labels (used in the dropdowns). */
363
+ roleOptionUser: string;
364
+ /** Role option labels (used in the dropdowns). */
365
+ roleOptionPowerUser: string;
366
+ /** Role option labels (used in the dropdowns). */
367
+ roleOptionAdmin: string;
368
+ /** Role option labels (used in the dropdowns). */
369
+ roleOptionSuperAdmin: string;
370
+ /** Modal title. */
371
+ createUserModalTitle: string;
372
+ /** Label above the username input. */
373
+ createUserUsernameLabel: string;
374
+ /** Label above the display-name input (optional). */
375
+ createUserDisplayLabel: string;
376
+ /** Label above the role dropdown. */
377
+ createUserRoleLabel: string;
378
+ /** Cancel button. */
379
+ createUserCancelButton: string;
380
+ /** Submit button. */
381
+ createUserSubmitButton: string;
382
+ /** Submit button while the request is in flight. */
383
+ createUserSubmittingButton: string;
384
+ /** Inline validation: username required. */
385
+ createUserUsernameRequiredError: string;
386
+ /** Banner: server returned 409 `username_taken`. */
387
+ createUserUsernameTakenError: string;
388
+ /** Generic banner for any other create error. */
389
+ createUserGenericError: string;
390
+ /** Title shown immediately after a successful create. */
391
+ passwordRevealCreateTitle: string;
392
+ /** Title shown after a successful reset. */
393
+ passwordRevealResetTitle: string;
394
+ /** Warning callout above the password field. */
395
+ passwordRevealWarning: string;
396
+ /** Label above the username read-only field. */
397
+ passwordRevealUsernameLabel: string;
398
+ /** Label above the password read-only field. */
399
+ passwordRevealPasswordLabel: string;
400
+ /** `aria-label` for the copy-to-clipboard button. */
401
+ passwordRevealCopyAriaLabel: string;
402
+ /** Visual confirmation that briefly flashes after a successful copy. */
403
+ passwordRevealCopiedFlash: string;
404
+ /** Dismiss button. The modal MUST be explicitly closed. */
405
+ passwordRevealDoneButton: string;
406
+ /** Modal title; `{username}` is interpolated. */
407
+ resetPasswordModalTitle: string;
408
+ /** Modal body explaining what the action does. */
409
+ resetPasswordModalBody: string;
410
+ /** Cancel button (no server call). */
411
+ resetPasswordCancelButton: string;
412
+ /** Confirm button — kicks off the reset. */
413
+ resetPasswordConfirmButton: string;
414
+ /** Confirm button while the request is in flight. */
415
+ resetPasswordConfirmingButton: string;
416
+ /** Generic banner shown when the reset request fails. */
417
+ resetPasswordGenericError: string;
418
+ /** `window.confirm` prompt body; `{username}` is interpolated. */
419
+ deleteUserConfirmPrompt: string;
420
+ /** Generic banner shown when delete fails. */
421
+ deleteUserGenericError: string;
422
+ /** Page heading. */
423
+ agentsHeading: string;
424
+ /** Top-right `+ Create agent` button label. */
425
+ createAgentButton: string;
426
+ /** Top-right `[↗ Open Letta ADE]` button label. Same gate as the user-menu item. */
427
+ openLettaAdeButton: string;
428
+ /** `agents_table` column header — display name. */
429
+ agentColumnName: string;
430
+ /** `agents_table` column header — Letta `agent_id`. */
431
+ agentColumnLettaId: string;
432
+ /** `agents_table` column header — status. */
433
+ agentColumnStatus: string;
434
+ /** `agents_table` column header — actions. */
435
+ agentColumnActions: string;
436
+ /** Loading placeholder. */
437
+ agentsLoading: string;
438
+ /** Empty placeholder when the deployment has zero agents. */
439
+ agentsEmpty: string;
440
+ /** Generic banner shown when `/admin/agents` fails. */
441
+ agentsGenericError: string;
442
+ /** Status pill text — active row. */
443
+ agentStatusActive: string;
444
+ /** Status pill text — archived row. */
445
+ agentStatusArchived: string;
446
+ /** Per-row `[Edit]` button label. */
447
+ agentEditButton: string;
448
+ /** Per-row `[Archive]` button label. */
449
+ agentArchiveButton: string;
450
+ /** Per-row `[Unarchive]` button label. */
451
+ agentUnarchiveButton: string;
452
+ /** Bottom-of-table `[☐ Show archived]` toggle label. */
453
+ agentShowArchivedToggle: string;
454
+ /**
455
+ * Footer note explaining that model / provider / system prompt are not
456
+ * editable here — the link to Letta's ADE is the place for that.
457
+ */
458
+ agentsAdeFootnote: string;
459
+ /**
460
+ * `window.confirm` prompt body for archive; `{name}` is interpolated.
461
+ */
462
+ agentArchiveConfirmPrompt: string;
463
+ /** Create-modal title. */
464
+ createAgentModalTitle: string;
465
+ /** Edit-modal title; `{name}` is interpolated. */
466
+ editAgentModalTitle: string;
467
+ /** Label above the display-name input. */
468
+ agentNameLabel: string;
469
+ /** Helper text below the display-name input (visible-to-users hint). */
470
+ agentNameHelper: string;
471
+ /** Label above the Letta-agent-id input. */
472
+ agentLettaIdLabel: string;
473
+ /** Helper text below the Letta-agent-id input (find-this-in-ADE hint). */
474
+ agentLettaIdHelper: string;
475
+ /** Helper text on the edit modal warning about re-pointing semantics. */
476
+ agentLettaIdReassignHelper: string;
477
+ /** Cancel button. */
478
+ agentModalCancelButton: string;
479
+ /** Modal create button. */
480
+ agentModalCreateButton: string;
481
+ /** Modal save button. */
482
+ agentModalSaveButton: string;
483
+ /** Submit button while the request is in flight. */
484
+ agentModalSubmittingButton: string;
485
+ /** Inline validation: display name required. */
486
+ agentNameRequiredError: string;
487
+ /** Inline validation: Letta-agent-id required. */
488
+ agentLettaIdRequiredError: string;
489
+ /** Inline validation: server returned `letta_agent_not_found`. */
490
+ agentLettaIdNotFoundError: string;
491
+ /** Generic banner shown on other create / edit errors. */
492
+ agentSubmitGenericError: string;
493
+ /** Sub-heading above the optional fields. */
494
+ agentSpecializedSectionHeading: string;
495
+ /** Helper paragraph below the sub-heading. */
496
+ agentSpecializedSectionHelper: string;
497
+ /** Label for the sandbox seed name input. */
498
+ agentSandboxSeedLabel: string;
499
+ /** Helper text below the sandbox seed name input. */
500
+ agentSandboxSeedHelper: string;
501
+ /** Inline error: regex / format violation. */
502
+ agentSandboxSeedInvalidError: string;
503
+ /** Inline error: server returned `seed_dir_not_found`. */
504
+ agentSandboxSeedNotFoundError: string;
505
+ /** Label for the fork source conversation id input. */
506
+ agentForkSourceLabel: string;
507
+ /** Helper text below the fork source conversation id input. */
508
+ agentForkSourceHelper: string;
509
+ /** Inline error: server returned `fork_source_not_found`. */
510
+ agentForkSourceNotFoundError: string;
511
+ /** Inline error: server returned `fork_source_agent_mismatch`. */
512
+ agentForkSourceAgentMismatchError: string;
513
+ /** Base-conversation mode option — none (brand-new conversation). */
514
+ agentForkSourceModeNone: string;
515
+ /** Base-conversation mode option — pick a rotating message. */
516
+ agentForkSourceModeRotating: string;
517
+ /** Base-conversation mode option — paste a raw conversation id. */
518
+ agentForkSourceModeManual: string;
519
+ /** Placeholder in the rotating-message search box. */
520
+ agentForkSourceRotatingSearchPlaceholder: string;
521
+ /** Shown when no rotating messages exist / match the search. */
522
+ agentForkSourceRotatingEmpty: string;
523
+ /** Inline error: server returned `rotating_message_not_found`. */
524
+ agentForkSourceRotatingNotFoundError: string;
525
+ /** Inline error: server returned `rotating_message_agent_mismatch`. */
526
+ agentForkSourceRotatingMismatchError: string;
527
+ /** Page heading. */
528
+ rotatingHeading: string;
529
+ /** Loading placeholder. */
530
+ rotatingLoading: string;
531
+ /** Empty-state copy. */
532
+ rotatingEmpty: string;
533
+ /** Generic load error. */
534
+ rotatingGenericError: string;
535
+ /** `[+ Create rotating message]` button. */
536
+ rotatingCreateButton: string;
537
+ /** Table column — name. */
538
+ rotatingColumnName: string;
539
+ /** Table column — Letta agent. */
540
+ rotatingColumnAgent: string;
541
+ /** Table column — schedule summary. */
542
+ rotatingColumnSchedule: string;
543
+ /** Table column — last rotation status. */
544
+ rotatingColumnStatus: string;
545
+ /** Table column — the rmsg- id (copyable). */
546
+ rotatingColumnId: string;
547
+ /** Table column — actions. */
548
+ rotatingColumnActions: string;
549
+ /** Row action — edit. */
550
+ rotatingEditButton: string;
551
+ /** Row action — rotate now. */
552
+ rotatingRotateNowButton: string;
553
+ /** Row action — archive. */
554
+ rotatingArchiveButton: string;
555
+ /** Row action — unarchive. */
556
+ rotatingUnarchiveButton: string;
557
+ /** `{name}` archive confirmation prompt. */
558
+ rotatingArchiveConfirmPrompt: string;
559
+ /** Show-archived filter toggle. */
560
+ rotatingShowArchivedToggle: string;
561
+ /** Status pill — never rotated yet. */
562
+ rotatingStatusPending: string;
563
+ /** Status pill — last rotation succeeded. */
564
+ rotatingStatusOk: string;
565
+ /** Status pill — last rotation failed. */
566
+ rotatingStatusError: string;
567
+ /** Status pill — archived. */
568
+ rotatingStatusArchived: string;
569
+ /** Transient label while a rotate-now request is running. */
570
+ rotatingRotateNowRunning: string;
571
+ /** Create-modal title. */
572
+ createRotatingModalTitle: string;
573
+ /** Edit-modal title (`{name}` placeholder). */
574
+ editRotatingModalTitle: string;
575
+ /** Display-name field label. */
576
+ rotatingNameLabel: string;
577
+ /** Display-name field helper. */
578
+ rotatingNameHelper: string;
579
+ /** Inline validation: name required. */
580
+ rotatingNameRequiredError: string;
581
+ /** Prompt field label. */
582
+ rotatingPromptLabel: string;
583
+ /** Prompt field helper. */
584
+ rotatingPromptHelper: string;
585
+ /** Inline validation: prompt required. */
586
+ rotatingPromptRequiredError: string;
587
+ /** Letta-agent-id field label. */
588
+ rotatingAgentLabel: string;
589
+ /** Letta-agent-id field helper. */
590
+ rotatingAgentHelper: string;
591
+ /** Inline validation: agent id required. */
592
+ rotatingAgentRequiredError: string;
593
+ /** Inline error: server returned `letta_agent_not_found`. */
594
+ rotatingAgentNotFoundError: string;
595
+ /** Schedule section label. */
596
+ rotatingScheduleLabel: string;
597
+ /** Schedule mode — fixed interval. */
598
+ rotatingScheduleEveryOption: string;
599
+ /** Schedule mode — daily at a fixed time. */
600
+ rotatingScheduleDailyOption: string;
601
+ /** Schedule mode — advanced cron. */
602
+ rotatingScheduleCronOption: string;
603
+ /** Interval value field label (the number). */
604
+ rotatingIntervalValueLabel: string;
605
+ /** Interval unit — hours. */
606
+ rotatingIntervalUnitHours: string;
607
+ /** Interval unit — days. */
608
+ rotatingIntervalUnitDays: string;
609
+ /** Daily-time field label. */
610
+ rotatingDailyTimeLabel: string;
611
+ /** Daily-time field helper (notes UTC). */
612
+ rotatingDailyTimeHelper: string;
613
+ /** Cron field label. */
614
+ rotatingCronLabel: string;
615
+ /** Cron field helper. */
616
+ rotatingCronHelper: string;
617
+ /** Inline error: server returned `invalid_schedule`. */
618
+ rotatingScheduleInvalidError: string;
619
+ /** Generic banner for other create/edit errors. */
620
+ rotatingSubmitGenericError: string;
621
+ /** Cancel button. */
622
+ rotatingModalCancelButton: string;
623
+ /** Create button. */
624
+ rotatingModalCreateButton: string;
625
+ /** Save button (edit mode). */
626
+ rotatingModalSaveButton: string;
627
+ /** In-flight submit button label. */
628
+ rotatingModalSubmittingButton: string;
629
+ /** Page heading. */
630
+ sessionsOverviewHeading: string;
631
+ /** Search input placeholder. */
632
+ sessionsOverviewSearchPlaceholder: string;
633
+ /** Filter label — owner dropdown. */
634
+ sessionsOverviewOwnerFilterLabel: string;
635
+ /** Filter dropdown option — all owners. */
636
+ sessionsOverviewOwnerFilterAll: string;
637
+ /** Filter label — agent dropdown. */
638
+ sessionsOverviewAgentFilterLabel: string;
639
+ /** Filter dropdown option — all agents. */
640
+ sessionsOverviewAgentFilterAll: string;
641
+ /** Filter label — status dropdown. */
642
+ sessionsOverviewStatusFilterLabel: string;
643
+ /** Filter dropdown option — active. */
644
+ sessionsOverviewStatusActive: string;
645
+ /** Filter dropdown option — archived. */
646
+ sessionsOverviewStatusArchived: string;
647
+ /** Filter dropdown option — all. */
648
+ sessionsOverviewStatusAll: string;
649
+ /** Table column header — title. */
650
+ sessionsOverviewColumnTitle: string;
651
+ /** Table column header — owner. */
652
+ sessionsOverviewColumnOwner: string;
653
+ /** Table column header — agent. */
654
+ sessionsOverviewColumnAgent: string;
655
+ /** Table column header — last message timestamp. */
656
+ sessionsOverviewColumnLastMessage: string;
657
+ /** Table column header — actions. */
658
+ sessionsOverviewColumnActions: string;
659
+ /** Per-row `[View]` button label. */
660
+ sessionsOverviewViewButton: string;
661
+ /** Pagination — Previous page button. */
662
+ sessionsOverviewPrevPage: string;
663
+ /** Pagination — Next page button. */
664
+ sessionsOverviewNextPage: string;
665
+ /** Pagination — current-page text; `{n}` is interpolated. */
666
+ sessionsOverviewPageNumber: string;
667
+ /** Loading placeholder. */
668
+ sessionsOverviewLoading: string;
669
+ /** Empty placeholder for the current filter combination. */
670
+ sessionsOverviewEmpty: string;
671
+ /** Generic banner shown when `/admin/sessions` fails. */
672
+ sessionsOverviewGenericError: string;
673
+ /** Back link on the session detail view. */
674
+ sessionsOverviewBackLink: string;
675
+ /** Detail header subtitle template — `{title} — {owner} — {agent}`. */
676
+ sessionsOverviewDetailHeading: string;
677
+ /** Loading placeholder on the detail view. */
678
+ sessionsOverviewDetailLoading: string;
679
+ /** Empty placeholder when the conversation has no messages yet. */
680
+ sessionsOverviewDetailEmpty: string;
681
+ /** Generic banner on detail-view fetch failure. */
682
+ sessionsOverviewDetailGenericError: string;
683
+ /** Step-12.5 — label for the sandbox-state line in the detail footer. */
684
+ sessionsOverviewDetailSandboxLabel: string;
685
+ /** Step-12.5 — text shown when the session has a sandbox on disk. */
686
+ sessionsOverviewDetailSandboxPresent: string;
687
+ /** Step-12.5 — text shown when no sandbox is configured. */
688
+ sessionsOverviewDetailSandboxAbsent: string;
689
+ /** Step-12.5 — `[Purge sandbox]` button label. */
690
+ sessionsOverviewPurgeSandboxButton: string;
691
+ /** Step-12.5 — `window.confirm` body when the operator clicks purge. */
692
+ sessionsOverviewPurgeSandboxConfirmPrompt: string;
693
+ /** Step-12.5 — button label while the purge request is in flight. */
694
+ sessionsOverviewPurgeSandboxConfirming: string;
695
+ /** Step-12.5 — flash on successful purge. */
696
+ sessionsOverviewPurgeSandboxSuccessFlash: string;
697
+ /** Step-12.5 — inline error: 409 turn_running. */
698
+ sessionsOverviewPurgeSandboxTurnRunningError: string;
699
+ /** Step-12.5 — generic error banner. */
700
+ sessionsOverviewPurgeSandboxGenericError: string;
701
+ /** Page heading. */
702
+ settingsHeading: string;
703
+ /** Loading placeholder. */
704
+ settingsLoading: string;
705
+ /** Generic banner shown when `/admin/settings` fails. */
706
+ settingsGenericError: string;
707
+ settingsLettaSectionHeading: string;
708
+ settingsLettaBaseUrlLabel: string;
709
+ settingsLettaAdeUrlLabel: string;
710
+ settingsLettaAdeUrlHelper: string;
711
+ settingsLettaApiKeyLabel: string;
712
+ /** Shown when DB column has a value (super-admin set it via admin panel). */
713
+ settingsLettaApiKeyDbHelper: string;
714
+ /** Shown when DB column is empty but `LETTA_API_KEY` env var is set. */
715
+ settingsLettaApiKeyEnvHelper: string;
716
+ /** Shown when nothing is configured anywhere (chat will fail). */
717
+ settingsLettaApiKeyNoneHelper: string;
718
+ /** @deprecated Use `settingsLettaApiKeyDbHelper` (DB) or `settingsLettaApiKeyEnvHelper` (env). Kept for wrapper backward-compat. */
719
+ settingsLettaApiKeyMaskedHelper: string;
720
+ /** @deprecated Use `settingsLettaApiKeyNoneHelper`. Kept for wrapper backward-compat. */
721
+ settingsLettaApiKeyUnsetHelper: string;
722
+ settingsLettaApiKeyPlaceholder: string;
723
+ /** "Clear admin override (use env)" button label — only rendered when source is "db". */
724
+ settingsLettaApiKeyClearOverrideButton: string;
725
+ settingsSaveLettaButton: string;
726
+ settingsSaveSavingButton: string;
727
+ settingsSaveSuccessFlash: string;
728
+ settingsSaveGenericError: string;
729
+ settingsThemeSectionHeading: string;
730
+ settingsThemeDefaultLabel: string;
731
+ settingsThemeDefaultLight: string;
732
+ settingsThemeDefaultDark: string;
733
+ settingsThemeSwitcherEnabledLabel: string;
734
+ settingsThemeSwitcherEnabledHelper: string;
735
+ settingsSaveThemeButton: string;
736
+ settingsTogglesSectionHeading: string;
737
+ settingsTogglesGroupSessions: string;
738
+ settingsTogglesGroupInput: string;
739
+ settingsTogglesGroupAffordances: string;
740
+ settingsTogglesSaveButton: string;
741
+ settingsSigningKeySectionHeading: string;
742
+ settingsSigningKeyLastRotated: string;
743
+ settingsSigningKeyNeverRotated: string;
744
+ settingsSigningKeyWarning: string;
745
+ settingsRotateSigningKeyButton: string;
746
+ settingsRotateSigningKeyModalTitle: string;
747
+ settingsRotateSigningKeyModalBody: string;
748
+ settingsRotateConfirmInputLabel: string;
749
+ settingsRotateConfirmPlaceholder: string;
750
+ settingsRotateConfirmKeyword: string;
751
+ settingsRotateConfirmButton: string;
752
+ settingsRotateConfirmingButton: string;
753
+ settingsRotateGenericError: string;
754
+ settingsMetricsSectionHeading: string;
755
+ settingsMetricsLastRotated: string;
756
+ settingsMetricsNeverRotated: string;
757
+ settingsMetricsWarning: string;
758
+ settingsRotateMetricsButton: string;
759
+ settingsRotateMetricsModalTitle: string;
760
+ settingsRotateMetricsModalBody: string;
761
+ settingsMetricsRevealTitle: string;
762
+ settingsMetricsRevealTokenLabel: string;
763
+ settingsMetricsRevealWarning: string;
764
+ }
765
+ /**
766
+ * Aggregate `texts` surface. Wrappers pass a `Partial<AIHubTexts>` and the
767
+ * components fall back to `defaultAIHubTexts` for any missing key.
768
+ *
769
+ * Step 8 defines `login` + `changePassword`; Step 9 appends `chat`. Later
770
+ * steps will add `admin`, `agents`, etc. (each typed as its own
771
+ * sub-interface) without touching existing keys — wrappers stay
772
+ * forward-compatible.
773
+ */
774
+ export interface AIHubTexts {
775
+ /** Strings on the login screen. */
776
+ login: AIHubLoginTexts;
777
+ /** Strings on the change-password screen (both variants). */
778
+ changePassword: AIHubChangePasswordTexts;
779
+ /** Strings on the chat surface (Step 9). */
780
+ chat: AIHubChatTexts;
781
+ /** Strings on the admin surface (Step 11+). */
782
+ admin: AIHubAdminTexts;
783
+ }
784
+ /**
785
+ * English defaults for every key. Frozen so accidental mutation surfaces.
786
+ */
787
+ export declare const defaultAIHubTexts: AIHubTexts;
788
+ /**
789
+ * Resolves the final `AIHubTexts` map by merging a wrapper-supplied partial
790
+ * over the English defaults. Resolution is **shallow per namespace, deep per
791
+ * key** — wrappers can override individual keys without re-declaring the
792
+ * whole namespace.
793
+ *
794
+ * Example:
795
+ *
796
+ * ```ts
797
+ * resolveAIHubTexts({ login: { signInButton: "Přihlásit" } })
798
+ * .login.signInButton // "Přihlásit"
799
+ * .login.signingInButton // "Signing in…" (default)
800
+ * .changePassword.title // "Change Password" (default)
801
+ * ```
802
+ *
803
+ * @param overrides - the wrapper-supplied partial. `undefined` is fine and
804
+ * returns the defaults unchanged.
805
+ * @returns the fully resolved `AIHubTexts`.
806
+ */
807
+ export declare function resolveAIHubTexts(overrides: DeepPartial<AIHubTexts> | undefined): AIHubTexts;
808
+ /**
809
+ * Recursive `Partial` — wrappers only need to set the keys they want to
810
+ * override; everything else falls back to the English default.
811
+ */
812
+ export type DeepPartial<T> = {
813
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
814
+ };
815
+ //# sourceMappingURL=texts.d.ts.map