@yadsh/dsh-qa-surface 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/README.md +269 -2
  2. package/lib/access/service.js +49 -10
  3. package/lib/access/service.js.map +1 -1
  4. package/lib/account-remotes.js +41 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/database.js +140 -0
  7. package/lib/accounts/database.js.map +1 -1
  8. package/lib/accounts/errors.js.map +1 -1
  9. package/lib/accounts/service-token.js +103 -0
  10. package/lib/accounts/service-token.js.map +1 -0
  11. package/lib/accounts/store.js +291 -5
  12. package/lib/accounts/store.js.map +1 -1
  13. package/lib/admin/conversation-log.js +14 -8
  14. package/lib/admin/conversation-log.js.map +1 -1
  15. package/lib/admin/permissions.js +5 -0
  16. package/lib/admin/permissions.js.map +1 -1
  17. package/lib/admin/quality-store.js +4 -0
  18. package/lib/admin/quality-store.js.map +1 -1
  19. package/lib/admin/service.js +180 -7
  20. package/lib/admin/service.js.map +1 -1
  21. package/lib/admin/session-log.js +39 -8
  22. package/lib/admin/session-log.js.map +1 -1
  23. package/lib/attachment-rules.js +39 -6
  24. package/lib/attachment-rules.js.map +1 -1
  25. package/lib/cli.js +83 -1
  26. package/lib/cli.js.map +1 -1
  27. package/lib/client/QaAccountsController.js +213 -4
  28. package/lib/client/QaAccountsController.js.map +1 -1
  29. package/lib/client/QaSessionController.js +49 -21
  30. package/lib/client/QaSessionController.js.map +1 -1
  31. package/lib/client/QaSurface.js +51 -9
  32. package/lib/client/QaSurface.js.map +1 -1
  33. package/lib/client/QaSurfaceGuard.js +12 -5
  34. package/lib/client/QaSurfaceGuard.js.map +1 -1
  35. package/lib/client/admin/QaAdmin.js +14 -2
  36. package/lib/client/admin/QaAdmin.js.map +1 -1
  37. package/lib/client/admin/pages/SkillFiles.js +78 -0
  38. package/lib/client/admin/pages/SkillFiles.js.map +1 -0
  39. package/lib/client/admin/pages/Users.js +74 -3
  40. package/lib/client/admin/pages/Users.js.map +1 -1
  41. package/lib/client/admin/routes.js +8 -1
  42. package/lib/client/admin/routes.js.map +1 -1
  43. package/lib/client/admin/shared.js +5 -1
  44. package/lib/client/admin/shared.js.map +1 -1
  45. package/lib/client/admin/styles.js +2 -0
  46. package/lib/client/admin/styles.js.map +1 -1
  47. package/lib/client/attachments.js +41 -11
  48. package/lib/client/attachments.js.map +1 -1
  49. package/lib/client/base64.js +22 -1
  50. package/lib/client/base64.js.map +1 -1
  51. package/lib/client/components/QaAgentsDrawer.js +9 -6
  52. package/lib/client/components/QaAgentsDrawer.js.map +1 -1
  53. package/lib/client/components/QaApproval.js +1 -1
  54. package/lib/client/components/QaApproval.js.map +1 -1
  55. package/lib/client/components/QaAuthGate.js +19 -10
  56. package/lib/client/components/QaAuthGate.js.map +1 -1
  57. package/lib/client/components/QaChangelog.js +56 -0
  58. package/lib/client/components/QaChangelog.js.map +1 -1
  59. package/lib/client/components/QaFilesPanel.js +17 -11
  60. package/lib/client/components/QaFilesPanel.js.map +1 -1
  61. package/lib/client/components/QaHeader.js +3 -11
  62. package/lib/client/components/QaHeader.js.map +1 -1
  63. package/lib/client/components/QaModal.js.map +1 -1
  64. package/lib/client/components/QaQuestions.js +4 -4
  65. package/lib/client/components/QaQuestions.js.map +1 -1
  66. package/lib/client/components/QaSidebar.js +10 -2
  67. package/lib/client/components/QaSidebar.js.map +1 -1
  68. package/lib/client/components/QaWidthHandle.js +111 -5
  69. package/lib/client/components/QaWidthHandle.js.map +1 -1
  70. package/lib/client/components/QaWorkspaceBrowser.js +231 -0
  71. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -0
  72. package/lib/client/index.js +122 -53
  73. package/lib/client/index.js.map +1 -1
  74. package/lib/client/kiosk.js +51 -0
  75. package/lib/client/kiosk.js.map +1 -0
  76. package/lib/client/lineage.js +64 -0
  77. package/lib/client/lineage.js.map +1 -1
  78. package/lib/client/markdown/blocks.js +122 -7
  79. package/lib/client/markdown/blocks.js.map +1 -1
  80. package/lib/client/markdown/inline.js +108 -12
  81. package/lib/client/markdown/inline.js.map +1 -1
  82. package/lib/client/markdown/katex-css.js +12 -0
  83. package/lib/client/markdown/katex-css.js.map +1 -0
  84. package/lib/client/markdown/math.js +84 -0
  85. package/lib/client/markdown/math.js.map +1 -0
  86. package/lib/client/markdown/render.js +74 -5
  87. package/lib/client/markdown/render.js.map +1 -1
  88. package/lib/client/settings/card.js +2 -2
  89. package/lib/client/settings/card.js.map +1 -1
  90. package/lib/client/settings/sections/attachments.js +6 -5
  91. package/lib/client/settings/sections/attachments.js.map +1 -1
  92. package/lib/client/settings/sections/notes.js +64 -0
  93. package/lib/client/settings/sections/notes.js.map +1 -0
  94. package/lib/client/settings/sections/sources.js +4 -1
  95. package/lib/client/settings/sections/sources.js.map +1 -1
  96. package/lib/client/settings/sections.js +1 -0
  97. package/lib/client/settings/sections.js.map +1 -1
  98. package/lib/client/settlement.js +1 -1
  99. package/lib/client/settlement.js.map +1 -1
  100. package/lib/client/source-preview.js +3 -0
  101. package/lib/client/source-preview.js.map +1 -1
  102. package/lib/client/styles.js +106 -18
  103. package/lib/client/styles.js.map +1 -1
  104. package/lib/client/types.js.map +1 -1
  105. package/lib/client/user-settings/IntegrationTokensPage.js +150 -0
  106. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -0
  107. package/lib/client/user-settings/PasswordSettingsPage.js +48 -0
  108. package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -0
  109. package/lib/client/user-settings/SkillCatalog.js +2 -2
  110. package/lib/client/user-settings/SkillCatalog.js.map +1 -1
  111. package/lib/client/user-settings/UserSettingsDialog.js +17 -2
  112. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
  113. package/lib/client/user-settings/copy.js +20 -0
  114. package/lib/client/user-settings/copy.js.map +1 -1
  115. package/lib/client.js +31007 -686
  116. package/lib/client.js.map +1 -1
  117. package/lib/config-resolvers/attachments.js +6 -5
  118. package/lib/config-resolvers/attachments.js.map +1 -1
  119. package/lib/config-resolvers/defaults.js +33 -2
  120. package/lib/config-resolvers/defaults.js.map +1 -1
  121. package/lib/config-resolvers/integration.js +94 -0
  122. package/lib/config-resolvers/integration.js.map +1 -0
  123. package/lib/config-resolvers/notes.js +26 -0
  124. package/lib/config-resolvers/notes.js.map +1 -0
  125. package/lib/config-resolvers/sources.js +4 -0
  126. package/lib/config-resolvers/sources.js.map +1 -1
  127. package/lib/config.js +107 -0
  128. package/lib/config.js.map +1 -1
  129. package/lib/index.js +348 -12
  130. package/lib/index.js.map +1 -1
  131. package/lib/integration/answer.js +100 -0
  132. package/lib/integration/answer.js.map +1 -0
  133. package/lib/integration/attachments.js +231 -0
  134. package/lib/integration/attachments.js.map +1 -0
  135. package/lib/integration/contract.js +53 -0
  136. package/lib/integration/contract.js.map +1 -0
  137. package/lib/integration/host-runner.js +243 -0
  138. package/lib/integration/host-runner.js.map +1 -0
  139. package/lib/integration/http.js +538 -0
  140. package/lib/integration/http.js.map +1 -0
  141. package/lib/integration/service.js +331 -0
  142. package/lib/integration/service.js.map +1 -0
  143. package/lib/integration/transcript-reader.js +202 -0
  144. package/lib/integration/transcript-reader.js.map +1 -0
  145. package/lib/integration/transcript.js +148 -0
  146. package/lib/integration/transcript.js.map +1 -0
  147. package/lib/personal-skills/index.js +2 -2
  148. package/lib/personal-skills/index.js.map +1 -1
  149. package/lib/personal-skills/paths.js +14 -8
  150. package/lib/personal-skills/paths.js.map +1 -1
  151. package/lib/personal-skills/provider.js +16 -4
  152. package/lib/personal-skills/provider.js.map +1 -1
  153. package/lib/personal-skills/service.js +240 -30
  154. package/lib/personal-skills/service.js.map +1 -1
  155. package/lib/prompt-notes.js +103 -6
  156. package/lib/prompt-notes.js.map +1 -1
  157. package/lib/provenance/document-preview.js +60 -0
  158. package/lib/provenance/document-preview.js.map +1 -0
  159. package/lib/provenance/file-preview.js +191 -19
  160. package/lib/provenance/file-preview.js.map +1 -1
  161. package/lib/qa-tools/catalog.js +18 -1
  162. package/lib/qa-tools/catalog.js.map +1 -1
  163. package/lib/qa-tools/docs-tools.js +563 -0
  164. package/lib/qa-tools/docs-tools.js.map +1 -0
  165. package/lib/qa-tools/file-delete-gate.js +60 -0
  166. package/lib/qa-tools/file-delete-gate.js.map +1 -0
  167. package/lib/qa-tools/file-delete.js +156 -0
  168. package/lib/qa-tools/file-delete.js.map +1 -0
  169. package/lib/resolve-config.js +6 -0
  170. package/lib/resolve-config.js.map +1 -1
  171. package/lib/secure-session.js +83 -3
  172. package/lib/secure-session.js.map +1 -1
  173. package/lib/shared/documents.js +22 -0
  174. package/lib/shared/documents.js.map +1 -0
  175. package/lib/shared/integration-tokens.js +23 -0
  176. package/lib/shared/integration-tokens.js.map +1 -0
  177. package/lib/typert.host.js +1320 -134
  178. package/lib/typert.remote-client.d.ts +33 -1
  179. package/lib/typert.remote-client.js +1102 -74
  180. package/lib/types/access/service.d.ts +33 -2
  181. package/lib/types/account-remotes.d.ts +30 -1
  182. package/lib/types/accounts/database.d.ts +53 -0
  183. package/lib/types/accounts/errors.d.ts +5 -1
  184. package/lib/types/accounts/service-token.d.ts +70 -0
  185. package/lib/types/accounts/store.d.ts +131 -1
  186. package/lib/types/admin/conversation-log.d.ts +12 -0
  187. package/lib/types/admin/service.d.ts +56 -1
  188. package/lib/types/admin/session-log.d.ts +21 -0
  189. package/lib/types/attachment-rules.d.ts +26 -3
  190. package/lib/types/client/QaAccountsController.d.ts +64 -5
  191. package/lib/types/client/QaSessionController.d.ts +24 -2
  192. package/lib/types/client/admin/pages/SkillFiles.d.ts +17 -0
  193. package/lib/types/client/admin/routes.d.ts +2 -0
  194. package/lib/types/client/admin/shared.d.ts +2 -0
  195. package/lib/types/client/attachments.d.ts +21 -4
  196. package/lib/types/client/base64.d.ts +13 -1
  197. package/lib/types/client/components/QaAgentsDrawer.d.ts +2 -1
  198. package/lib/types/client/components/QaFilesPanel.d.ts +16 -4
  199. package/lib/types/client/components/QaHeader.d.ts +9 -3
  200. package/lib/types/client/components/QaModal.d.ts +4 -3
  201. package/lib/types/client/components/QaWidthHandle.d.ts +48 -2
  202. package/lib/types/client/components/QaWorkspaceBrowser.d.ts +15 -0
  203. package/lib/types/client/index.d.ts +1 -1
  204. package/lib/types/client/kiosk.d.ts +34 -0
  205. package/lib/types/client/lineage.d.ts +42 -0
  206. package/lib/types/client/markdown/blocks.d.ts +14 -1
  207. package/lib/types/client/markdown/inline.d.ts +23 -7
  208. package/lib/types/client/markdown/katex-css.d.ts +11 -0
  209. package/lib/types/client/markdown/math.d.ts +23 -0
  210. package/lib/types/client/markdown/render.d.ts +2 -1
  211. package/lib/types/client/settings/sections/notes.d.ts +12 -0
  212. package/lib/types/client/settings/sections.d.ts +1 -0
  213. package/lib/types/client/settlement.d.ts +4 -1
  214. package/lib/types/client/styles.d.ts +15 -2
  215. package/lib/types/client/types.d.ts +120 -1
  216. package/lib/types/client/user-settings/IntegrationTokensPage.d.ts +21 -0
  217. package/lib/types/client/user-settings/PasswordSettingsPage.d.ts +19 -0
  218. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +11 -2
  219. package/lib/types/client/user-settings/copy.d.ts +10 -1
  220. package/lib/types/config-resolvers/integration.d.ts +47 -0
  221. package/lib/types/config-resolvers/notes.d.ts +10 -0
  222. package/lib/types/config.d.ts +10 -0
  223. package/lib/types/index.d.ts +111 -1
  224. package/lib/types/integration/answer.d.ts +65 -0
  225. package/lib/types/integration/attachments.d.ts +85 -0
  226. package/lib/types/integration/contract.d.ts +196 -0
  227. package/lib/types/integration/host-runner.d.ts +44 -0
  228. package/lib/types/integration/http.d.ts +79 -0
  229. package/lib/types/integration/service.d.ts +120 -0
  230. package/lib/types/integration/transcript-reader.d.ts +100 -0
  231. package/lib/types/integration/transcript.d.ts +59 -0
  232. package/lib/types/personal-skills/index.d.ts +2 -2
  233. package/lib/types/personal-skills/paths.d.ts +15 -3
  234. package/lib/types/personal-skills/provider.d.ts +14 -2
  235. package/lib/types/personal-skills/service.d.ts +89 -14
  236. package/lib/types/prompt-notes.d.ts +37 -0
  237. package/lib/types/provenance/document-preview.d.ts +28 -0
  238. package/lib/types/provenance/file-preview.d.ts +69 -2
  239. package/lib/types/qa-tools/catalog.d.ts +1 -1
  240. package/lib/types/qa-tools/docs-tools.d.ts +160 -0
  241. package/lib/types/qa-tools/file-delete-gate.d.ts +42 -0
  242. package/lib/types/qa-tools/file-delete.d.ts +32 -0
  243. package/lib/types/secure-session.d.ts +52 -1
  244. package/lib/types/shared/documents.d.ts +20 -0
  245. package/lib/types/shared/integration-tokens.d.ts +24 -0
  246. package/lib/types/types.d.ts +263 -3
  247. package/lib/types/ui-mode.d.ts +18 -0
  248. package/lib/ui-mode.js +22 -0
  249. package/lib/ui-mode.js.map +1 -0
  250. package/package.json +12 -10
@@ -3,6 +3,70 @@ import { useCallback, useEffect, useState } from "react";
3
3
  import { ADMIN_ROLE_LABELS, formatCount, formatStamp } from "../copy.js";
4
4
  import { Badge, FilterField, Pager, Stamp, adminErrorMessage, useAdminResource, } from "../shared.js";
5
5
  const PAGE_SIZE = 25;
6
+ /** The Host's floor; the form refuses a shorter password before the round trip. */
7
+ const MIN_PASSWORD_LENGTH = 8;
8
+ /**
9
+ * The forgotten-password queue: an account asked for a reset from the sign-in
10
+ * screen and nobody has answered it yet.
11
+ *
12
+ * It renders only while somebody is waiting. A permanently empty panel would
13
+ * teach operators to ignore it, and this one has to be noticed: answering a row
14
+ * signs every session of that account out, so the new password must be handed
15
+ * over deliberately.
16
+ */
17
+ function PasswordResetQueue(props) {
18
+ const { api, token } = props;
19
+ const [requests, setRequests] = useState([]);
20
+ const [drafts, setDrafts] = useState({});
21
+ const [busy, setBusy] = useState();
22
+ const [error, setError] = useState();
23
+ const [notice, setNotice] = useState();
24
+ const load = useCallback(async () => {
25
+ const result = await api.passwordResetRequests(token);
26
+ if (!result.ok) {
27
+ setError(adminErrorMessage(result.error));
28
+ return;
29
+ }
30
+ setError(undefined);
31
+ setRequests(result.value);
32
+ }, [api, token]);
33
+ useEffect(() => {
34
+ void load();
35
+ }, [load]);
36
+ const reset = async (userId) => {
37
+ const password = (drafts[userId] ?? "").trim();
38
+ if (password.length < MIN_PASSWORD_LENGTH) {
39
+ setNotice(undefined);
40
+ setError(`Пароль должен быть не короче ${MIN_PASSWORD_LENGTH} символов.`);
41
+ return;
42
+ }
43
+ setBusy(userId);
44
+ const result = await api.resetPassword(token, userId, password);
45
+ setBusy(undefined);
46
+ if (!result.ok) {
47
+ setNotice(undefined);
48
+ setError(adminErrorMessage(result.error));
49
+ return;
50
+ }
51
+ setError(undefined);
52
+ setNotice(`Новый пароль для ${result.value.user.email} установлен — передайте его пользователю. Заявка закрыта, его сессии завершены.`);
53
+ // The row is gone on the Host's side; the read is what proves it, and it
54
+ // also picks up a request that arrived while this one was being answered.
55
+ setDrafts((current) => ({ ...current, [userId]: "" }));
56
+ await load();
57
+ };
58
+ if (requests.length === 0)
59
+ return null;
60
+ return (_jsxs("div", { className: "dsh-qa-admin__panel", children: [_jsxs("div", { className: "dsh-qa-admin__panel-head", children: [_jsx("h2", { children: "\u0417\u0430\u044F\u0432\u043A\u0438 \u043D\u0430 \u0441\u0431\u0440\u043E\u0441 \u043F\u0430\u0440\u043E\u043B\u044F" }), _jsx(Badge, { tone: "warning", children: requests.length === 1
61
+ ? "1 заявка"
62
+ : `${String(requests.length)} заявок` })] }), _jsx("p", { className: "dsh-qa-admin__panel-note", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0432\u043E\u0439\u0442\u0438 \u0438 \u043F\u0440\u043E\u0441\u0438\u0442 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C. \u0421\u0431\u0440\u043E\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0435\u0433\u043E \u0441\u0435\u0441\u0441\u0438\u0438: \u0441\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C \u0438 \u0432\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u044E\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C." }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), notice === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__notice", role: "status", children: notice })), _jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D" }), _jsx("th", { children: "\u0417\u0430\u044F\u0432\u043E\u043A" }), _jsx("th", { children: "\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C" }), _jsx("th", {})] }) }), _jsx("tbody", { children: requests.map((request) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: request.displayName }), _jsx("small", { children: request.email }), request.disabled ? (_jsx("small", { children: _jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" }) })) : null] }), _jsxs("td", { children: [_jsx(Stamp, { value: request.lastRequestedAt }), _jsxs("small", { children: ["\u043F\u0435\u0440\u0432\u044B\u0439 \u0437\u0430\u043F\u0440\u043E\u0441: ", formatStamp(request.requestedAt)] })] }), _jsx("td", { children: formatCount(request.requestCount) }), _jsx("td", { children: _jsx("input", { type: "password", autoComplete: "new-password", minLength: MIN_PASSWORD_LENGTH, placeholder: "\u043D\u0435 \u043A\u043E\u0440\u043E\u0447\u0435 8 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432", disabled: busy === request.userId, value: drafts[request.userId] ?? "", onChange: (event) => {
63
+ const value = event.currentTarget.value;
64
+ setDrafts((current) => ({
65
+ ...current,
66
+ [request.userId]: value,
67
+ }));
68
+ } }) }), _jsx("td", { children: _jsx("button", { type: "button", disabled: busy === request.userId, onClick: () => void reset(request.userId), children: busy === request.userId ? "Сбрасываю…" : "Сбросить" }) })] }, request.userId))) })] })] }));
69
+ }
6
70
  /**
7
71
  * Users: the table an administrator triages from, and the detail page that
8
72
  * separates authorization from the QA subrole assignment — an admin may work
@@ -40,7 +104,7 @@ export function AdminUsers(props) {
40
104
  useEffect(() => {
41
105
  void load(null, false);
42
106
  }, [load]);
43
- return (_jsxs("section", { className: "dsh-qa-admin__page", "aria-label": "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438" }), _jsx("p", { children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043D\u0430\u044F \u0440\u043E\u043B\u044C \u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u0438 \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E. \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0442: \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u043E\u0432 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435." })] }) }), _jsxs("div", { className: "dsh-qa-admin__filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", children: _jsx("input", { type: "search", value: search, placeholder: "\u0418\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u0420\u043E\u043B\u044C", children: _jsxs("select", { value: role, onChange: (event) => setRole(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "admin", children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440" }), _jsx("option", { value: "reviewer", children: "\u0420\u0435\u0432\u044C\u044E\u0435\u0440" }), _jsx("option", { value: "user", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" })] }) }), _jsx(FilterField, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", children: _jsxs("select", { value: status, onChange: (event) => setStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "active", children: "\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0435" }), _jsx("option", { value: "disabled", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0435" })] }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", children: loading ? "Загружаю…" : "Никого не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0421\u0442\u0430\u0442\u0443\u0441" }), _jsx("th", { children: "\u0420\u043E\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u0438 QA" }), _jsx("th", { children: "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u0445\u043E\u0434" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: row.fullName === "" ? row.displayName : row.fullName }), _jsx("small", { children: row.email })] }), _jsx("td", { children: row.disabled ? (_jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" })) : (_jsx(Badge, { tone: "positive", children: "\u0410\u043A\u0442\u0438\u0432\u0435\u043D" })) }), _jsx("td", { children: ADMIN_ROLE_LABELS[row.role] }), _jsx("td", { children: row.access.allowedSubroles.join(", ") || "—" }), _jsx("td", { children: _jsx(Stamp, { value: row.lastLoginAt ?? undefined }) }), _jsx("td", { children: formatCount(row.conversations) }), _jsx("td", { children: formatCount(row.feedbackGiven) }), _jsx("td", { children: _jsx("button", { type: "button", onClick: () => props.onOpenUser(row.id), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.id))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
107
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "aria-label": "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438" }), _jsx("p", { children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043D\u0430\u044F \u0440\u043E\u043B\u044C \u0438 \u043F\u0440\u043E\u0444\u0438\u043B\u0438 \u0430\u0433\u0435\u043D\u0442\u0430 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E. \u0423\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043D\u0435\u0442: \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u043E\u0432 \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u043E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435." })] }) }), _jsx(PasswordResetQueue, { api: props.api, token: props.token }), _jsxs("div", { className: "dsh-qa-admin__filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", children: _jsx("input", { type: "search", value: search, placeholder: "\u0418\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u0420\u043E\u043B\u044C", children: _jsxs("select", { value: role, onChange: (event) => setRole(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "admin", children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440" }), _jsx("option", { value: "reviewer", children: "\u0420\u0435\u0432\u044C\u044E\u0435\u0440" }), _jsx("option", { value: "user", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" })] }) }), _jsx(FilterField, { label: "\u0421\u0442\u0430\u0442\u0443\u0441", children: _jsxs("select", { value: status, onChange: (event) => setStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "active", children: "\u0410\u043A\u0442\u0438\u0432\u043D\u044B\u0435" }), _jsx("option", { value: "disabled", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D\u043D\u044B\u0435" })] }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", children: loading ? "Загружаю…" : "Никого не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u0421\u0442\u0430\u0442\u0443\u0441" }), _jsx("th", { children: "\u0420\u043E\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u0438 QA" }), _jsx("th", { children: "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0439 \u0432\u0445\u043E\u0434" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("strong", { children: row.fullName === "" ? row.displayName : row.fullName }), _jsx("small", { children: row.email })] }), _jsx("td", { children: row.disabled ? (_jsx(Badge, { tone: "negative", children: "\u041E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" })) : (_jsx(Badge, { tone: "positive", children: "\u0410\u043A\u0442\u0438\u0432\u0435\u043D" })) }), _jsx("td", { children: ADMIN_ROLE_LABELS[row.role] }), _jsx("td", { children: row.access.allowedSubroles.join(", ") || "—" }), _jsx("td", { children: _jsx(Stamp, { value: row.lastLoginAt ?? undefined }) }), _jsx("td", { children: formatCount(row.conversations) }), _jsx("td", { children: formatCount(row.feedbackGiven) }), _jsx("td", { children: _jsx("button", { type: "button", onClick: () => props.onOpenUser(row.id), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.id))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
44
108
  }
45
109
  /** Authorization, assignment and the activity counters of one account. */
46
110
  export function AdminUserDetail(props) {
@@ -58,8 +122,11 @@ export function AdminUserDetail(props) {
58
122
  setError(adminErrorMessage(result.error));
59
123
  return;
60
124
  }
125
+ // The update response is the fresh detail: applying it directly both
126
+ // confirms the edit on the next render and skips a second heavy read —
127
+ // a reload here used to re-ask for everything the card has just paid for.
61
128
  setError(undefined);
62
- await resource.reload();
129
+ resource.apply(result.value);
63
130
  };
64
131
  if (resource.error !== undefined) {
65
132
  return (_jsxs("section", { className: "dsh-qa-admin__page", children: [_jsx("p", { className: "dsh-qa-admin__error", role: "alert", children: adminErrorMessage(resource.error) }), _jsx("button", { type: "button", onClick: props.onBack, children: "\u041A \u0441\u043F\u0438\u0441\u043A\u0443" })] }));
@@ -94,6 +161,10 @@ export function AdminUserDetail(props) {
94
161
  ? ""
95
162
  : ` (плюс ${formatCount(row.grantableTools)} по навыкам)`}${row.deniedTools === 0
96
163
  ? ""
97
- : ` (минус ${formatCount(row.deniedTools)} запрещённых)`}, ${formatCount(row.skills)} навыков` })] }, row.subroleId))) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", children: [_jsx("h2", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsxs("dl", { className: "dsh-qa-admin__facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { children: formatCount(detail.activity.conversations) }), _jsx("dt", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("dd", { children: formatCount(detail.activity.messages) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.positiveRatings) }), _jsx("dt", { children: "\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.negativeRatings) })] }), _jsxs("div", { className: "dsh-qa-admin__actions", children: [_jsx("button", { type: "button", onClick: () => props.onOpenConversations(detail.user.id), children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F" }), _jsx("button", { type: "button", onClick: props.onOpenAudit, children: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439" })] })] })] })] }));
164
+ : ` (минус ${formatCount(row.deniedTools)} запрещённых)`}, ${formatCount(row.skills)} навыков` })] }, row.subroleId))) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", children: [_jsx("h2", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsxs("dl", { className: "dsh-qa-admin__facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { children: formatCount(detail.activity.conversations) }), _jsx("dt", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("dd", { children: _jsx("span", { title: detail.activity.messages === null
165
+ ? "Считается на странице «Разговоры»"
166
+ : undefined, children: detail.activity.messages === null
167
+ ? "—"
168
+ : formatCount(detail.activity.messages) }) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.positiveRatings) }), _jsx("dt", { children: "\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438" }), _jsx("dd", { children: formatCount(detail.activity.negativeRatings) })] }), _jsxs("div", { className: "dsh-qa-admin__actions", children: [_jsx("button", { type: "button", onClick: () => props.onOpenConversations(detail.user.id), children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F" }), _jsx("button", { type: "button", onClick: props.onOpenAudit, children: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439" })] })] })] })] }));
98
169
  }
99
170
  //# sourceMappingURL=Users.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Users.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Users.tsx"],"names":[],"mappings":"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"}
@@ -57,7 +57,11 @@ export function parseAdminRoute(pathname, routePath) {
57
57
  case "subroles":
58
58
  return { page: "subroles" };
59
59
  case "skills":
60
- return { page: "skills" };
60
+ // The audience table and the file editor share a section name because
61
+ // they are two views of one thing; the editor is a path below it.
62
+ return rest[0] === "editor"
63
+ ? { page: "skill-files" }
64
+ : { page: "skills" };
61
65
  case "common":
62
66
  return { page: "common" };
63
67
  case "conversations":
@@ -101,6 +105,8 @@ export function adminPath(routePath, route, search = "") {
101
105
  return "/access/subroles";
102
106
  case "skills":
103
107
  return "/access/skills";
108
+ case "skill-files":
109
+ return "/skills/editor";
104
110
  case "common":
105
111
  return "/access/common";
106
112
  case "conversations":
@@ -129,6 +135,7 @@ export function adminSectionOf(route) {
129
135
  return "users";
130
136
  case "subroles":
131
137
  case "skills":
138
+ case "skill-files":
132
139
  case "common":
133
140
  return "access";
134
141
  case "conversation":
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/client/admin/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/client/admin/routes.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,10 @@ export function useAdminResource(load, deps) {
46
46
  const [data, setData] = useState();
47
47
  const [error, setError] = useState();
48
48
  const [loading, setLoading] = useState(true);
49
+ const apply = useCallback((value) => {
50
+ setData(value);
51
+ setError(undefined);
52
+ }, []);
49
53
  const reload = useCallback(async () => {
50
54
  setLoading(true);
51
55
  try {
@@ -70,7 +74,7 @@ export function useAdminResource(load, deps) {
70
74
  useEffect(() => {
71
75
  void reload();
72
76
  }, [reload]);
73
- return { data, error, loading, reload };
77
+ return { data, error, loading, reload, apply };
74
78
  }
75
79
  /** A status chip; the modifier class carries the semantic colour. */
76
80
  export function Badge(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/client/admin/shared.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/client/admin/shared.tsx"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export const QA_ADMIN_CONSOLE_STYLES = String.raw `
14
14
  .dsh-qa-admin__panel h2{margin:0;font-size:15px}
15
15
  .dsh-qa-admin__panel h3{margin:14px 0 6px;font-size:13px;color:var(--dsw-alias-label-secondary)}
16
16
  .dsh-qa-admin__panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
17
+ .dsh-qa-admin__panel-note{margin:0;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:17px}
18
+ .dsh-qa-admin__notice{margin:0;color:var(--dsh-qa-success);font-size:12px;line-height:17px}
17
19
  .dsh-qa-admin__columns{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:18px;align-items:start}
18
20
  .dsh-qa-admin__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
19
21
  .dsh-qa-admin__metric{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3)}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/admin/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGhD,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/admin/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGhD,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * remains authoritative — these checks exist so a refusal happens before a
5
5
  * round trip, not to replace the Host's own admission.
6
6
  */
7
- import { countTextLines, hasTextExtension } from "../attachment-rules.js";
7
+ import { countTextLines, fileExtensionOf, hasAcceptedExtension, } from "../attachment-rules.js";
8
8
  import { bytesToBase64 } from "./base64.js";
9
9
  import { pluralRu } from "./settings/format.js";
10
10
  /** Raster formats the host attachment path accepts. */
@@ -31,8 +31,9 @@ export function attachmentLimits(config) {
31
31
  };
32
32
  }
33
33
  /**
34
- * The file picker's `accept` value: the raster formats plus either the
35
- * configured text extensions or the browser's whole `text/*` family.
34
+ * The file picker's `accept` value: the raster formats plus either every
35
+ * configured extension and the browser's whole `text/*` family, or nothing
36
+ * when file attachments are off.
36
37
  * @param limits - attachment policy in effect.
37
38
  * @returns the accept attribute value.
38
39
  */
@@ -63,11 +64,42 @@ function readAsArrayBuffer(file) {
63
64
  function isTextMediaType(mediaType) {
64
65
  return mediaType.toLowerCase().startsWith("text/");
65
66
  }
66
- /** Whether a dropped payload may be attached as a text file at all. */
67
- export function acceptsTextFile(name, mediaType, limits) {
67
+ /**
68
+ * Whether a dropped payload may be attached as a file at all. An extension the
69
+ * operator listed is enough on its own: the list is what the deployment can
70
+ * work with, and a stand whose pipeline reads Word documents lists `docx`
71
+ * rather than hoping the browser calls it text.
72
+ */
73
+ export function acceptsFileAttachment(name, mediaType, limits) {
68
74
  if (!limits.textFiles)
69
75
  return false;
70
- return (hasTextExtension(name, limits.extensions) || isTextMediaType(mediaType));
76
+ return (hasAcceptedExtension(name, limits.extensions) || isTextMediaType(mediaType));
77
+ }
78
+ /**
79
+ * Why one non-image file is refused, in the visitor's terms, or null when it is
80
+ * accepted. The copy used to name a fixed list ("md, txt, log и другие") that
81
+ * had nothing to do with the deployment's own setting, which is how a stand
82
+ * able to read Word documents ended up looking like a text-only one.
83
+ * @param name - display file name.
84
+ * @param mediaType - MIME type the browser reported.
85
+ * @param limits - attachment policy in effect.
86
+ * @returns the refusal message, or null.
87
+ */
88
+ export function fileAttachmentRefusal(name, mediaType, limits) {
89
+ if (acceptsFileAttachment(name, mediaType, limits))
90
+ return null;
91
+ if (!limits.textFiles) {
92
+ return "Файловые вложения выключены: можно приложить только изображения.";
93
+ }
94
+ // `fileExtensionOf` reports the whole leaf when there is no dot, and a
95
+ // dotfile's leaf is its own name: both mean "no extension to match on", and
96
+ // saying "формат .noextension" about them would be nonsense.
97
+ const leaf = name.trim().toLowerCase();
98
+ const extension = fileExtensionOf(name);
99
+ if (extension === "" || extension === leaf) {
100
+ return "У файла нет расширения, а принять его можно только по расширению из списка разрешённых.";
101
+ }
102
+ return `Формат «.${extension}» не разрешён на этом стенде. Список разрешённых расширений задаёт оператор.`;
71
103
  }
72
104
  function imageDraftFromBlob(blob, name) {
73
105
  return readAsArrayBuffer(blob).then((buffer) => ({
@@ -93,11 +125,9 @@ export async function draftFromFile(file, limits) {
93
125
  }
94
126
  return imageDraftFromBlob(file, file.name);
95
127
  }
96
- if (!acceptsTextFile(file.name, file.type, limits)) {
97
- return limits.textFiles
98
- ? "Поддерживаются изображения и текстовые файлы (md, txt, log и другие)."
99
- : "Поддерживаются изображения PNG, JPEG, WebP и GIF.";
100
- }
128
+ const refusal = fileAttachmentRefusal(file.name, file.type, limits);
129
+ if (refusal !== null)
130
+ return refusal;
101
131
  if (file.size > limits.maxFileBytes) {
102
132
  return `Файл слишком большой (лимит ${formatFileSize(limits.maxFileBytes)}).`;
103
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/client/attachments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/client/attachments.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Browser-side binary-to-base64. Chunked so `String.fromCharCode` never
2
+ * Browser-side base64. Encoding is chunked so `String.fromCharCode` never
3
3
  * crosses the engine's argument limit on large attachments.
4
4
  */
5
5
  /**
@@ -13,4 +13,25 @@ export function bytesToBase64(bytes) {
13
13
  }
14
14
  return btoa(binary);
15
15
  }
16
+ /**
17
+ * Decode base64 the Host sent for a file the panel could not read as text.
18
+ *
19
+ * A malformed body is tolerated rather than thrown on: the caller is about to
20
+ * hand the bytes to a download or an image tag, and a partial file is a better
21
+ * outcome than losing the panel to an exception. `atob` still rejects input
22
+ * that is not base64 at all; the caller keeps that refusal.
23
+ *
24
+ * @param value - base64 text, with or without a data-URL prefix.
25
+ * @returns the decoded bytes.
26
+ */
27
+ export function base64ToBytes(value) {
28
+ const separator = value.indexOf(",");
29
+ const body = (separator === -1 ? value : value.slice(separator + 1)).replace(/\s+/gu, "");
30
+ const binary = atob(body);
31
+ const bytes = new Uint8Array(binary.length);
32
+ for (let index = 0; index < binary.length; index += 1) {
33
+ bytes[index] = binary.charCodeAt(index);
34
+ }
35
+ return bytes;
36
+ }
16
37
  //# sourceMappingURL=base64.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/client/base64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/client/base64.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAC1E,OAAO,EACP,EAAE,CACH,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -17,7 +17,7 @@ export function collectSubagents(byId, rootId, now = Date.now()) {
17
17
  title: summary.blank ? "Субагент" : summary.displayTitle,
18
18
  running: summary.running,
19
19
  completed: summary.completed === true,
20
- meta: relativeTime(summary.updatedAt, now),
20
+ meta: [relativeTime(summary.updatedAt, now)],
21
21
  });
22
22
  }
23
23
  return rows.sort((left, right) => left.running === right.running ? 0 : left.running ? -1 : 1);
@@ -26,15 +26,18 @@ export function collectSubagents(byId, rootId, now = Date.now()) {
26
26
  export function QaAgentsDrawer({ agents, activeId, onView, onClose, }) {
27
27
  return (_jsxs("aside", { className: "dsh-qa-agents", "aria-label": "\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B \u0447\u0430\u0442\u0430", children: [_jsxs("div", { className: "dsh-qa-agents__head", children: [_jsxs("span", { children: ["\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B (", agents.length, ")"] }), _jsx("button", { type: "button", "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u043E\u0432", title: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", onClick: onClose, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) })] }), _jsx("div", { className: "dsh-qa-agents__list", children: agents.map((agent) => {
28
28
  const active = activeId === agent.id;
29
+ const status = agent.running
30
+ ? ["выполняется"]
31
+ : agent.completed
32
+ ? ["завершён"]
33
+ : agent.meta;
29
34
  return (_jsxs("button", { type: "button", className: active
30
35
  ? "dsh-qa-agents__item dsh-qa-agents__item--active"
31
36
  : "dsh-qa-agents__item", onClick: () => onView(agent.id, agent.title), children: [_jsx("span", { className: agent.running
32
37
  ? "dsh-qa-agents__dot dsh-qa-agents__dot--running"
33
- : "dsh-qa-agents__dot", "aria-hidden": "true" }), _jsxs("span", { className: "dsh-qa-agents__text", children: [_jsx("span", { className: "dsh-qa-agents__title", children: agent.title }), _jsx("span", { className: "dsh-qa-agents__meta", children: agent.running
34
- ? "выполняется"
35
- : agent.completed
36
- ? "завершён"
37
- : agent.meta })] }), _jsx("span", { className: "dsh-qa-agents__open", children: active ? "открыт" : "смотреть" })] }, agent.id));
38
+ : "dsh-qa-agents__dot", "aria-hidden": "true" }), _jsxs("span", { className: "dsh-qa-agents__text", children: [_jsx("span", { className: "dsh-qa-agents__title", children: agent.title }), _jsx("span", { className: status.length > 1
39
+ ? "dsh-qa-agents__meta dsh-qa-agents__meta-list"
40
+ : "dsh-qa-agents__meta", children: status.map((part, index) => (_jsx("span", { children: part }, index))) })] }), _jsx("span", { className: "dsh-qa-agents__open", children: active ? "открыт" : "смотреть" })] }, agent.id));
38
41
  }) })] }));
39
42
  }
40
43
  //# sourceMappingURL=QaAgentsDrawer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QaAgentsDrawer.js","sourceRoot":"","sources":["../../../src/client/components/QaAgentsDrawer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaAgentsDrawer.js","sourceRoot":"","sources":["../../../src/client/components/QaAgentsDrawer.tsx"],"names":[],"mappings":"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"}
@@ -18,6 +18,6 @@ export const QaApproval = memo(function QaApproval(props) {
18
18
  });
19
19
  };
20
20
  return (_jsx("div", { className: "dsh-qa-approvals", "aria-label": "\u0417\u0430\u043F\u0440\u043E\u0441\u044B \u043D\u0430 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u0435", children: approvals.map((approval) => (_jsxs("section", { className: "dsh-qa-approval", "aria-live": "polite", children: [_jsxs("p", { className: "dsh-qa-approval__strip", children: [_jsx("span", { className: "dsh-qa-approval__dot", "aria-hidden": "true" }), "\u041E\u0436\u0438\u0434\u0430\u0435\u0442 \u043E\u0434\u043E\u0431\u0440\u0435\u043D\u0438\u044F"] }), _jsx("p", { className: "dsh-qa-approval__reason", children: approval.reason ??
21
- `Инструмент «${approval.toolName}» запрашивает разрешение.` }), _jsxs("p", { className: "dsh-qa-approval__tool", children: [_jsx("code", { children: approval.toolName }), approval.delegated ? " · запросил субагент" : ""] }), _jsxs("div", { className: "dsh-qa-approval__actions", children: [_jsx("button", { type: "button", className: "dsh-qa-approval__button", disabled: answering === approval.id, onClick: () => answer(approval.id, "rejected"), children: "\u041E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C" }), _jsx("button", { type: "button", className: "dsh-qa-approval__button dsh-qa-approval__button--primary", disabled: answering === approval.id, onClick: () => answer(approval.id, "allowed-once"), children: "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043E\u0434\u0438\u043D \u0440\u0430\u0437" })] })] }, approval.id))) }));
21
+ `Инструмент «${approval.toolName}» запрашивает разрешение.` }), _jsxs("p", { className: "dsh-qa-approval__tool", children: [_jsx("code", { children: approval.toolName }), approval.delegated ? (_jsx("span", { className: "dsh-qa-approval__delegated", children: "\u0437\u0430\u043F\u0440\u043E\u0441\u0438\u043B \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442" })) : null] }), _jsxs("div", { className: "dsh-qa-approval__actions", children: [_jsx("button", { type: "button", className: "dsh-qa-approval__button", disabled: answering === approval.id, onClick: () => answer(approval.id, "rejected"), children: "\u041E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u044C" }), _jsx("button", { type: "button", className: "dsh-qa-approval__button dsh-qa-approval__button--primary", disabled: answering === approval.id, onClick: () => answer(approval.id, "allowed-once"), children: "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043E\u0434\u0438\u043D \u0440\u0430\u0437" })] })] }, approval.id))) }));
22
22
  });
23
23
  //# sourceMappingURL=QaApproval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QaApproval.js","sourceRoot":"","sources":["../../../src/client/components/QaApproval.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAAsB;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,QAA4B,EAAE,EAAE;QACjE,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,kBAAkB,gBAAY,gHAAsB,YAChE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,mBAEE,SAAS,EAAC,iBAAiB,eACjB,QAAQ,aAElB,aAAG,SAAS,EAAC,wBAAwB,aACnC,eAAM,SAAS,EAAC,sBAAsB,iBAAa,MAAM,GAAG,yGAE1D,EACJ,YAAG,SAAS,EAAC,yBAAyB,YACnC,QAAQ,CAAC,MAAM;wBACd,eAAe,QAAQ,CAAC,QAAQ,2BAA2B,GAC3D,EACJ,aAAG,SAAS,EAAC,uBAAuB,aAClC,yBAAO,QAAQ,CAAC,QAAQ,GAAQ,EAC/B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAC/C,EACJ,eAAK,SAAS,EAAC,0BAA0B,aACvC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,uEAGvC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0DAA0D,EACpE,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,mHAG3C,IACL,KAjCD,QAAQ,CAAC,EAAE,CAkCR,CACX,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"QaApproval.js","sourceRoot":"","sources":["../../../src/client/components/QaApproval.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAWvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAAsB;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,QAA4B,EAAE,EAAE;QACjE,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,KAAK,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACpD,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,kBAAkB,gBAAY,gHAAsB,YAChE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,mBAEE,SAAS,EAAC,iBAAiB,eACjB,QAAQ,aAElB,aAAG,SAAS,EAAC,wBAAwB,aACnC,eAAM,SAAS,EAAC,sBAAsB,iBAAa,MAAM,GAAG,yGAE1D,EACJ,YAAG,SAAS,EAAC,yBAAyB,YACnC,QAAQ,CAAC,MAAM;wBACd,eAAe,QAAQ,CAAC,QAAQ,2BAA2B,GAC3D,EACJ,aAAG,SAAS,EAAC,uBAAuB,aAClC,yBAAO,QAAQ,CAAC,QAAQ,GAAQ,EAC/B,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,4BAA4B,kHAErC,CACR,CAAC,CAAC,CAAC,IAAI,IACN,EACJ,eAAK,SAAS,EAAC,0BAA0B,aACvC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,EACnC,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,uEAGvC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0DAA0D,EACpE,QAAQ,EAAE,SAAS,KAAK,QAAQ,CAAC,EAAE,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,mHAG3C,IACL,KArCD,QAAQ,CAAC,EAAE,CAsCR,CACX,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -13,28 +13,37 @@ function Logo({ logoUrl }) {
13
13
  */
14
14
  export function QaAuthGate(props) {
15
15
  const { snapshot, accounts } = props;
16
- const mode = snapshot.stage === "gate" ? snapshot.mode : "login";
17
- const busy = snapshot.stage === "gate" ? snapshot.busy : false;
16
+ const gate = snapshot.stage === "gate" ? snapshot : undefined;
17
+ const mode = gate?.mode ?? "login";
18
+ const busy = gate?.busy ?? false;
19
+ const notice = gate?.notice ?? null;
18
20
  const [email, setEmail] = useState("");
19
21
  const [password, setPassword] = useState("");
20
22
  const showRegister = props.allowRegistration;
23
+ // The reset card is the same card with one field: the request only needs an
24
+ // address, and asking for a password the user does not have would be absurd.
25
+ const reset = mode === "reset";
21
26
  const submit = (event) => {
22
27
  event.preventDefault();
23
28
  if (busy)
24
29
  return;
25
- const operation = mode === "register"
26
- ? accounts.register(email, password)
27
- : accounts.login(email, password);
30
+ const operation = reset
31
+ ? accounts.requestPasswordReset(email)
32
+ : mode === "register"
33
+ ? accounts.register(email, password)
34
+ : accounts.login(email, password);
28
35
  void operation;
29
36
  };
30
- return (_jsx("main", { className: "dsh-qa-surface dsh-qa-auth", "aria-label": "\u0412\u0445\u043E\u0434 \u0432 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", children: _jsxs("form", { className: "dsh-qa-auth__card", onSubmit: submit, children: [_jsxs("div", { className: "dsh-qa-auth__brand", children: [_jsx(Logo, { logoUrl: props.logoUrl }), _jsx("h1", { children: props.title })] }), showRegister ? (_jsxs("div", { className: "dsh-qa-auth__tabs", role: "tablist", "aria-label": "\u0412\u0445\u043E\u0434 \u0438\u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F", children: [_jsx("button", { type: "button", role: "tab", "aria-selected": mode === "login", className: mode === "login"
37
+ return (_jsx("main", { className: "dsh-qa-surface dsh-qa-auth", "aria-label": "\u0412\u0445\u043E\u0434 \u0432 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", children: _jsxs("form", { className: "dsh-qa-auth__card", onSubmit: submit, children: [_jsxs("div", { className: "dsh-qa-auth__brand", children: [_jsx(Logo, { logoUrl: props.logoUrl }), _jsx("h1", { children: props.title })] }), reset ? (_jsx("p", { className: "dsh-qa-auth__lead", children: "\u0423\u043A\u0430\u0436\u0438\u0442\u0435 email: \u0437\u0430\u044F\u0432\u043A\u0443 \u0443\u0432\u0438\u0434\u0438\u0442 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440 \u0438 \u0441\u0431\u0440\u043E\u0441\u0438\u0442 \u043F\u0430\u0440\u043E\u043B\u044C. \u041F\u043E\u0447\u0442\u0430 \u0441 \u0441\u0441\u044B\u043B\u043A\u043E\u0439 \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0430." })) : null, showRegister && !reset ? (_jsxs("div", { className: "dsh-qa-auth__tabs", role: "tablist", "aria-label": "\u0412\u0445\u043E\u0434 \u0438\u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F", children: [_jsx("button", { type: "button", role: "tab", "aria-selected": mode === "login", className: mode === "login"
31
38
  ? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
32
39
  : "dsh-qa-auth__tab", onClick: () => accounts.setMode("login"), children: "\u0412\u0445\u043E\u0434" }), _jsx("button", { type: "button", role: "tab", "aria-selected": mode === "register", className: mode === "register"
33
40
  ? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
34
- : "dsh-qa-auth__tab", onClick: () => accounts.setMode("register"), children: "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })] })) : null, _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { type: "email", name: "email", autoComplete: "email", required: true, disabled: busy, value: email, onChange: (event) => setEmail(event.currentTarget.value) })] }), _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("input", { type: "password", name: "password", autoComplete: mode === "register" ? "new-password" : "current-password", required: true, minLength: 8, disabled: busy, value: password, onChange: (event) => setPassword(event.currentTarget.value) })] }), snapshot.stage === "gate" && snapshot.error !== null ? (_jsx("p", { className: "dsh-qa-auth__error", role: "alert", children: snapshot.error })) : null, _jsx("button", { type: "submit", className: "dsh-qa-auth__submit", disabled: busy, children: busy
41
+ : "dsh-qa-auth__tab", onClick: () => accounts.setMode("register"), children: "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })] })) : null, _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { type: "email", name: "email", autoComplete: "email", required: true, disabled: busy, value: email, onChange: (event) => setEmail(event.currentTarget.value) })] }), reset ? null : (_jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("input", { type: "password", name: "password", autoComplete: mode === "register" ? "new-password" : "current-password", required: true, minLength: 8, disabled: busy, value: password, onChange: (event) => setPassword(event.currentTarget.value) })] })), gate !== undefined && gate.error !== null ? (_jsx("p", { className: "dsh-qa-auth__error", role: "alert", children: gate.error })) : null, notice === null ? null : (_jsx("p", { className: "dsh-qa-auth__notice", role: "status", children: notice })), _jsx("button", { type: "submit", className: "dsh-qa-auth__submit", disabled: busy, children: busy
35
42
  ? "Подождите…"
36
- : mode === "register"
37
- ? "Зарегистрироваться"
38
- : "Войти" })] }) }));
43
+ : reset
44
+ ? "Отправить заявку"
45
+ : mode === "register"
46
+ ? "Зарегистрироваться"
47
+ : "Войти" }), _jsx("button", { type: "button", className: "dsh-qa-auth__link", disabled: busy, onClick: () => accounts.setMode(reset ? "login" : "reset"), children: reset ? "Вернуться ко входу" : "Забыли пароль?" })] }) }));
39
48
  }
40
49
  //# sourceMappingURL=QaAuthGate.js.map