@yadsh/dsh-qa-surface 0.15.7 → 0.17.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 (348) hide show
  1. package/README.md +27 -2
  2. package/lib/access/capability-catalog.js +11 -4
  3. package/lib/access/capability-catalog.js.map +1 -1
  4. package/lib/access/service.js +46 -5
  5. package/lib/access/service.js.map +1 -1
  6. package/lib/account-remotes.js +9 -0
  7. package/lib/account-remotes.js.map +1 -1
  8. package/lib/accounts/database.js +34 -3
  9. package/lib/accounts/database.js.map +1 -1
  10. package/lib/accounts/store.js +22 -2
  11. package/lib/accounts/store.js.map +1 -1
  12. package/lib/admin/service.js +4 -2
  13. package/lib/admin/service.js.map +1 -1
  14. package/lib/admin/session-log.js +3 -0
  15. package/lib/admin/session-log.js.map +1 -1
  16. package/lib/agent-scope.js +9 -0
  17. package/lib/agent-scope.js.map +1 -0
  18. package/lib/chat-sharing/native-fence.js +120 -0
  19. package/lib/chat-sharing/native-fence.js.map +1 -0
  20. package/lib/chat-sharing/resources.js +57 -0
  21. package/lib/chat-sharing/resources.js.map +1 -0
  22. package/lib/chat-sharing/store.js +199 -0
  23. package/lib/chat-sharing/store.js.map +1 -0
  24. package/lib/chat-sharing/transport.js +329 -0
  25. package/lib/chat-sharing/transport.js.map +1 -0
  26. package/lib/chat-sharing/turn-guard.js +154 -0
  27. package/lib/chat-sharing/turn-guard.js.map +1 -0
  28. package/lib/chat-sharing/types.js +2 -0
  29. package/lib/chat-sharing/types.js.map +1 -0
  30. package/lib/chat-sharing/uploads.js +55 -0
  31. package/lib/chat-sharing/uploads.js.map +1 -0
  32. package/lib/client/QaAccountsController.js +47 -2
  33. package/lib/client/QaAccountsController.js.map +1 -1
  34. package/lib/client/QaConfigController.js +7 -12
  35. package/lib/client/QaConfigController.js.map +1 -1
  36. package/lib/client/QaSessionController.js +195 -19
  37. package/lib/client/QaSessionController.js.map +1 -1
  38. package/lib/client/QaSurface.js +156 -14
  39. package/lib/client/QaSurface.js.map +1 -1
  40. package/lib/client/QaSurfaceGuard.js +6 -1
  41. package/lib/client/QaSurfaceGuard.js.map +1 -1
  42. package/lib/client/QaTranscriptAdapter.js +28 -5
  43. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  44. package/lib/client/account-conversation.js +33 -0
  45. package/lib/client/account-conversation.js.map +1 -0
  46. package/lib/client/account-sessions.js +106 -0
  47. package/lib/client/account-sessions.js.map +1 -0
  48. package/lib/client/account-upload.js +30 -0
  49. package/lib/client/account-upload.js.map +1 -0
  50. package/lib/client/answer-review.js +89 -0
  51. package/lib/client/answer-review.js.map +1 -0
  52. package/lib/client/chat-artifacts.js +18 -3
  53. package/lib/client/chat-artifacts.js.map +1 -1
  54. package/lib/client/chat-sharing-api.js +2 -0
  55. package/lib/client/chat-sharing-api.js.map +1 -0
  56. package/lib/client/components/QaAnswerReviewStatus.js +45 -0
  57. package/lib/client/components/QaAnswerReviewStatus.js.map +1 -0
  58. package/lib/client/components/QaChangelog.js +92 -3
  59. package/lib/client/components/QaChangelog.js.map +1 -1
  60. package/lib/client/components/QaChatActions.js +52 -0
  61. package/lib/client/components/QaChatActions.js.map +1 -0
  62. package/lib/client/components/QaChatSharing.js +95 -0
  63. package/lib/client/components/QaChatSharing.js.map +1 -0
  64. package/lib/client/components/QaComposer.js +8 -4
  65. package/lib/client/components/QaComposer.js.map +1 -1
  66. package/lib/client/components/QaFileAttachment.js +12 -3
  67. package/lib/client/components/QaFileAttachment.js.map +1 -1
  68. package/lib/client/components/QaFilesPanel.js +11 -4
  69. package/lib/client/components/QaFilesPanel.js.map +1 -1
  70. package/lib/client/components/QaHeader.js +3 -3
  71. package/lib/client/components/QaHeader.js.map +1 -1
  72. package/lib/client/components/QaMarkdownPreview.js +86 -0
  73. package/lib/client/components/QaMarkdownPreview.js.map +1 -0
  74. package/lib/client/components/QaMessage.js +41 -10
  75. package/lib/client/components/QaMessage.js.map +1 -1
  76. package/lib/client/components/QaModal.js +17 -0
  77. package/lib/client/components/QaModal.js.map +1 -1
  78. package/lib/client/components/QaRightRail.js +6 -4
  79. package/lib/client/components/QaRightRail.js.map +1 -1
  80. package/lib/client/components/QaRightRailResize.js +129 -0
  81. package/lib/client/components/QaRightRailResize.js.map +1 -0
  82. package/lib/client/components/QaSidebar.js +11 -2
  83. package/lib/client/components/QaSidebar.js.map +1 -1
  84. package/lib/client/components/QaSourceFilters.js +22 -0
  85. package/lib/client/components/QaSourceFilters.js.map +1 -0
  86. package/lib/client/components/QaSourcesPanel.js +66 -14
  87. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  88. package/lib/client/components/QaSpreadsheetPreview.js +56 -0
  89. package/lib/client/components/QaSpreadsheetPreview.js.map +1 -0
  90. package/lib/client/components/QaWelcomeNotice.js +2 -2
  91. package/lib/client/components/QaWelcomeNotice.js.map +1 -1
  92. package/lib/client/components/QaWorkspaceBrowser.js +46 -12
  93. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -1
  94. package/lib/client/components/QaZoomImage.js +56 -0
  95. package/lib/client/components/QaZoomImage.js.map +1 -0
  96. package/lib/client/components/source-refs.js +57 -24
  97. package/lib/client/components/source-refs.js.map +1 -1
  98. package/lib/client/index.js +76 -8
  99. package/lib/client/index.js.map +1 -1
  100. package/lib/client/lineage.js +4 -3
  101. package/lib/client/lineage.js.map +1 -1
  102. package/lib/client/markdown/SourceImage.js +52 -0
  103. package/lib/client/markdown/SourceImage.js.map +1 -0
  104. package/lib/client/markdown/blocks.js +150 -115
  105. package/lib/client/markdown/blocks.js.map +1 -1
  106. package/lib/client/markdown/katex-css.js +1 -1
  107. package/lib/client/markdown/render.js +26 -9
  108. package/lib/client/markdown/render.js.map +1 -1
  109. package/lib/client/markdown/source-chip.js +6 -2
  110. package/lib/client/markdown/source-chip.js.map +1 -1
  111. package/lib/client/notifications/notification-dispatcher.js +50 -11
  112. package/lib/client/notifications/notification-dispatcher.js.map +1 -1
  113. package/lib/client/notifications/use-turn-notifications.js +107 -18
  114. package/lib/client/notifications/use-turn-notifications.js.map +1 -1
  115. package/lib/client/project-session-state.js +28 -13
  116. package/lib/client/project-session-state.js.map +1 -1
  117. package/lib/client/session-admission.js +9 -1
  118. package/lib/client/session-admission.js.map +1 -1
  119. package/lib/client/session-sources.js +44 -3
  120. package/lib/client/session-sources.js.map +1 -1
  121. package/lib/client/settings/sections/sources.js +1 -1
  122. package/lib/client/settings/sections/sources.js.map +1 -1
  123. package/lib/client/settings/styles.js +18 -28
  124. package/lib/client/settings/styles.js.map +1 -1
  125. package/lib/client/slash/useSlashNavigation.js +8 -5
  126. package/lib/client/slash/useSlashNavigation.js.map +1 -1
  127. package/lib/client/source-filters-styles.js +11 -0
  128. package/lib/client/source-filters-styles.js.map +1 -0
  129. package/lib/client/source-preview.js +1 -1
  130. package/lib/client/source-preview.js.map +1 -1
  131. package/lib/client/styles.js +62 -4
  132. package/lib/client/styles.js.map +1 -1
  133. package/lib/client/turn-sources.js +2 -1
  134. package/lib/client/turn-sources.js.map +1 -1
  135. package/lib/client/types.js.map +1 -1
  136. package/lib/client/use-right-rail.js +1 -1
  137. package/lib/client/use-right-rail.js.map +1 -1
  138. package/lib/client/user-settings/IntegrationTokensPage.js +30 -6
  139. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -1
  140. package/lib/client/workspace-download.js +42 -2
  141. package/lib/client/workspace-download.js.map +1 -1
  142. package/lib/client.js +6481 -2234
  143. package/lib/client.js.map +1 -1
  144. package/lib/config-resolvers/defaults.js +4 -3
  145. package/lib/config-resolvers/defaults.js.map +1 -1
  146. package/lib/config-resolvers/sources.js +2 -0
  147. package/lib/config-resolvers/sources.js.map +1 -1
  148. package/lib/config.js +3 -0
  149. package/lib/config.js.map +1 -1
  150. package/lib/enforcement/skill-policy.js +29 -4
  151. package/lib/enforcement/skill-policy.js.map +1 -1
  152. package/lib/enforcement/skill-resource-paths.js +32 -0
  153. package/lib/enforcement/skill-resource-paths.js.map +1 -0
  154. package/lib/enforcement/structured-result.js +38 -0
  155. package/lib/enforcement/structured-result.js.map +1 -0
  156. package/lib/enforcement/tool-grants.js +3 -1
  157. package/lib/enforcement/tool-grants.js.map +1 -1
  158. package/lib/index.js +447 -17
  159. package/lib/index.js.map +1 -1
  160. package/lib/integration/host-runner.js +1 -0
  161. package/lib/integration/host-runner.js.map +1 -1
  162. package/lib/integration/question-policy.js +126 -0
  163. package/lib/integration/question-policy.js.map +1 -0
  164. package/lib/integration/service.js +2 -0
  165. package/lib/integration/service.js.map +1 -1
  166. package/lib/llm-identity.js +27 -0
  167. package/lib/llm-identity.js.map +1 -0
  168. package/lib/markdown-frontmatter.js +47 -0
  169. package/lib/markdown-frontmatter.js.map +1 -0
  170. package/lib/markdown-images.js +33 -0
  171. package/lib/markdown-images.js.map +1 -0
  172. package/lib/prompt-notes.js +19 -2
  173. package/lib/prompt-notes.js.map +1 -1
  174. package/lib/provenance/collector.js +15 -1
  175. package/lib/provenance/collector.js.map +1 -1
  176. package/lib/provenance/connectors.js +57 -27
  177. package/lib/provenance/connectors.js.map +1 -1
  178. package/lib/provenance/dedupe.js +25 -1
  179. package/lib/provenance/dedupe.js.map +1 -1
  180. package/lib/provenance/document-preview.js +31 -3
  181. package/lib/provenance/document-preview.js.map +1 -1
  182. package/lib/provenance/extractors.js +88 -4
  183. package/lib/provenance/extractors.js.map +1 -1
  184. package/lib/provenance/file-download.js +56 -0
  185. package/lib/provenance/file-download.js.map +1 -0
  186. package/lib/provenance/file-preview.js +20 -2
  187. package/lib/provenance/file-preview.js.map +1 -1
  188. package/lib/provenance/host-store.js +59 -10
  189. package/lib/provenance/host-store.js.map +1 -1
  190. package/lib/provenance/integration-extractor.js +62 -0
  191. package/lib/provenance/integration-extractor.js.map +1 -0
  192. package/lib/provenance/snapshot-store.js +2 -0
  193. package/lib/provenance/snapshot-store.js.map +1 -1
  194. package/lib/provenance/source-content.js +103 -0
  195. package/lib/provenance/source-content.js.map +1 -0
  196. package/lib/provenance/source-image.js +57 -0
  197. package/lib/provenance/source-image.js.map +1 -0
  198. package/lib/provenance/spreadsheet-preview.js +52 -0
  199. package/lib/provenance/spreadsheet-preview.js.map +1 -0
  200. package/lib/qa-tools/docs-tools.js +14 -0
  201. package/lib/qa-tools/docs-tools.js.map +1 -1
  202. package/lib/questions.js +6 -1
  203. package/lib/questions.js.map +1 -1
  204. package/lib/secure-session.js +9 -3
  205. package/lib/secure-session.js.map +1 -1
  206. package/lib/session-fork-host.js +157 -0
  207. package/lib/session-fork-host.js.map +1 -0
  208. package/lib/session-fork.js +34 -0
  209. package/lib/session-fork.js.map +1 -0
  210. package/lib/session-ownership.js +5 -1
  211. package/lib/session-ownership.js.map +1 -1
  212. package/lib/shared/documents.js +12 -0
  213. package/lib/shared/documents.js.map +1 -1
  214. package/lib/shared/session-lineage.js +6 -0
  215. package/lib/shared/session-lineage.js.map +1 -0
  216. package/lib/slash/draft-target.js +21 -0
  217. package/lib/slash/draft-target.js.map +1 -0
  218. package/lib/slash/remotes.js +39 -4
  219. package/lib/slash/remotes.js.map +1 -1
  220. package/lib/typert.host.js +1869 -163
  221. package/lib/typert.remote-client.d.ts +56 -5
  222. package/lib/typert.remote-client.js +1678 -154
  223. package/lib/types/access/capability-catalog.d.ts +1 -1
  224. package/lib/types/access/service.d.ts +7 -0
  225. package/lib/types/access.js +2 -0
  226. package/lib/types/access.js.map +1 -0
  227. package/lib/types/account-remotes.d.ts +3 -0
  228. package/lib/types/accounts/database.d.ts +5 -0
  229. package/lib/types/accounts/store.d.ts +7 -2
  230. package/lib/types/accounts.js +2 -0
  231. package/lib/types/accounts.js.map +1 -0
  232. package/lib/types/admin/session-log.d.ts +2 -0
  233. package/lib/types/admin.js +2 -0
  234. package/lib/types/admin.js.map +1 -0
  235. package/lib/types/agent-scope.d.ts +4 -0
  236. package/lib/types/answer-review.js +2 -0
  237. package/lib/types/answer-review.js.map +1 -0
  238. package/lib/types/capability.js +2 -0
  239. package/lib/types/capability.js.map +1 -0
  240. package/lib/types/chat-sharing/native-fence.d.ts +11 -0
  241. package/lib/types/chat-sharing/resources.d.ts +5 -0
  242. package/lib/types/chat-sharing/store.d.ts +29 -0
  243. package/lib/types/chat-sharing/transport.d.ts +32 -0
  244. package/lib/types/chat-sharing/turn-guard.d.ts +21 -0
  245. package/lib/types/chat-sharing/types.d.ts +25 -0
  246. package/lib/types/chat-sharing/uploads.d.ts +5 -0
  247. package/lib/types/client/QaAccountsController.d.ts +4 -0
  248. package/lib/types/client/QaConfigController.d.ts +3 -2
  249. package/lib/types/client/QaSessionController.d.ts +17 -3
  250. package/lib/types/client/QaSurface.d.ts +6 -1
  251. package/lib/types/client/account-conversation.d.ts +6 -0
  252. package/lib/types/client/account-sessions.d.ts +7 -0
  253. package/lib/types/client/account-upload.d.ts +15 -0
  254. package/lib/types/client/answer-review.d.ts +16 -0
  255. package/lib/types/client/chat-sharing-api.d.ts +35 -0
  256. package/lib/types/client/components/QaAnswerReviewStatus.d.ts +8 -0
  257. package/lib/types/client/components/QaChatActions.d.ts +7 -0
  258. package/lib/types/client/components/QaChatSharing.d.ts +12 -0
  259. package/lib/types/client/components/QaComposer.d.ts +2 -0
  260. package/lib/types/client/components/QaFileAttachment.d.ts +3 -2
  261. package/lib/types/client/components/QaFilesPanel.d.ts +4 -1
  262. package/lib/types/client/components/QaMarkdownPreview.d.ts +13 -0
  263. package/lib/types/client/components/QaMessage.d.ts +5 -2
  264. package/lib/types/client/components/QaModal.d.ts +9 -0
  265. package/lib/types/client/components/QaRightRail.d.ts +3 -2
  266. package/lib/types/client/components/QaRightRailResize.d.ts +9 -0
  267. package/lib/types/client/components/QaSidebar.d.ts +2 -0
  268. package/lib/types/client/components/QaSourceFilters.d.ts +12 -0
  269. package/lib/types/client/components/QaSpreadsheetPreview.d.ts +8 -0
  270. package/lib/types/client/components/QaWelcomeNotice.d.ts +1 -1
  271. package/lib/types/client/components/QaWorkspaceBrowser.d.ts +8 -1
  272. package/lib/types/client/components/QaZoomImage.d.ts +38 -0
  273. package/lib/types/client/components/source-refs.d.ts +1 -0
  274. package/lib/types/client/lineage.d.ts +2 -2
  275. package/lib/types/client/markdown/SourceImage.d.ts +7 -0
  276. package/lib/types/client/markdown/blocks.d.ts +8 -1
  277. package/lib/types/client/markdown/render.d.ts +5 -1
  278. package/lib/types/client/markdown/source-chip.d.ts +1 -0
  279. package/lib/types/client/notifications/notification-dispatcher.d.ts +10 -6
  280. package/lib/types/client/notifications/use-turn-notifications.d.ts +4 -0
  281. package/lib/types/client/project-session-state.d.ts +1 -0
  282. package/lib/types/client/session-admission.d.ts +2 -0
  283. package/lib/types/client/session-sources.d.ts +1 -0
  284. package/lib/types/client/settings/styles.d.ts +2 -5
  285. package/lib/types/client/source-filters-styles.d.ts +2 -0
  286. package/lib/types/client/turn-sources.d.ts +1 -1
  287. package/lib/types/client/types.d.ts +18 -5
  288. package/lib/types/client/workspace-download.d.ts +9 -1
  289. package/lib/types/config.js +2 -0
  290. package/lib/types/config.js.map +1 -0
  291. package/lib/types/documents.js +2 -0
  292. package/lib/types/documents.js.map +1 -0
  293. package/lib/types/enforcement/skill-resource-paths.d.ts +5 -0
  294. package/lib/types/enforcement/structured-result.d.ts +11 -0
  295. package/lib/types/expert-memory.js +2 -0
  296. package/lib/types/expert-memory.js.map +1 -0
  297. package/lib/types/index.d.ts +42 -3
  298. package/lib/types/integration/contract.d.ts +1 -0
  299. package/lib/types/integration/question-policy.d.ts +20 -0
  300. package/lib/types/integration/service.d.ts +1 -0
  301. package/lib/types/llm-identity.d.ts +20 -0
  302. package/lib/types/markdown-frontmatter.d.ts +10 -0
  303. package/lib/types/markdown-images.d.ts +3 -0
  304. package/lib/types/policy.js +2 -0
  305. package/lib/types/policy.js.map +1 -0
  306. package/lib/types/prompt-notes.d.ts +3 -1
  307. package/lib/types/provenance/connectors.d.ts +4 -1
  308. package/lib/types/provenance/document-preview.d.ts +5 -2
  309. package/lib/types/provenance/extractors.d.ts +2 -0
  310. package/lib/types/provenance/file-download.d.ts +10 -0
  311. package/lib/types/provenance/file-preview.d.ts +2 -1
  312. package/lib/types/provenance/host-store.d.ts +2 -0
  313. package/lib/types/provenance/integration-extractor.d.ts +5 -0
  314. package/lib/types/provenance/source-content.d.ts +19 -0
  315. package/lib/types/provenance/source-image.d.ts +4 -0
  316. package/lib/types/provenance/spreadsheet-preview.d.ts +5 -0
  317. package/lib/types/provenance/types.d.ts +5 -0
  318. package/lib/types/qa-tools/docs-tools.d.ts +2 -0
  319. package/lib/types/quality.js +7 -0
  320. package/lib/types/quality.js.map +1 -0
  321. package/lib/types/questions.d.ts +2 -1
  322. package/lib/types/session-fork-host.d.ts +27 -0
  323. package/lib/types/session-fork.d.ts +7 -0
  324. package/lib/types/session.js +2 -0
  325. package/lib/types/session.js.map +1 -0
  326. package/lib/types/shared/documents.d.ts +2 -0
  327. package/lib/types/shared/session-lineage.d.ts +7 -0
  328. package/lib/types/skills.js +2 -0
  329. package/lib/types/skills.js.map +1 -0
  330. package/lib/types/slash/draft-target.d.ts +7 -0
  331. package/lib/types/slash/remotes.d.ts +7 -0
  332. package/lib/types/slash.js +2 -0
  333. package/lib/types/slash.js.map +1 -0
  334. package/lib/types/types/access.d.ts +43 -0
  335. package/lib/types/types/accounts.d.ts +177 -0
  336. package/lib/types/types/admin.d.ts +286 -0
  337. package/lib/types/types/answer-review.d.ts +11 -0
  338. package/lib/types/types/capability.d.ts +230 -0
  339. package/lib/types/types/config.d.ts +597 -0
  340. package/lib/types/types/documents.d.ts +34 -0
  341. package/lib/types/types/expert-memory.d.ts +35 -0
  342. package/lib/types/types/policy.d.ts +54 -0
  343. package/lib/types/types/quality.d.ts +100 -0
  344. package/lib/types/types/session.d.ts +397 -0
  345. package/lib/types/types/skills.d.ts +143 -0
  346. package/lib/types/types/slash.d.ts +159 -0
  347. package/lib/types/types.d.ts +14 -2180
  348. package/package.json +8 -7
@@ -6,7 +6,7 @@ import { CopyHint } from "../components/copy-hint.js";
6
6
  import { QaSettingsActions, QaSettingsButton, QaSettingsField, QaSettingsNotice, QaSettingsSection, } from "./fields.js";
7
7
  /** Scope names as the person choosing them reads them. */
8
8
  const SCOPE_LABELS = {
9
- ask: "Задавать вопросы",
9
+ ask: "Отправлять запросы ассистенту",
10
10
  "sessions:read": "Читать историю чатов",
11
11
  };
12
12
  /** The lifetimes a token is usually asked for; the Host bounds the real range. */
@@ -50,10 +50,29 @@ export function QaIntegrationTokensPage(props) {
50
50
  const [days, setDays] = useState(TTL_CHOICES[1] ?? 90);
51
51
  const [scopes, setScopes] = useState(QA_SERVICE_TOKEN_DEFAULT_SCOPES);
52
52
  const [busy, setBusy] = useState(false);
53
+ const [allowClarifications, setAllowClarifications] = useState(true);
53
54
  const [issued, setIssued] = useState(null);
54
55
  const { copied, impossible: copyImpossible, refused: copyRefused, copy: copySecret, } = useCopyAction(issued?.token ?? "");
55
56
  const [pendingRevoke, setPendingRevoke] = useState(null);
56
57
  const [revoking, setRevoking] = useState(null);
58
+ const [updating, setUpdating] = useState(null);
59
+ const changeClarifications = async (tokenId, allowed) => {
60
+ const update = props.api.setClarifications;
61
+ if (update === undefined)
62
+ return;
63
+ setUpdating(tokenId);
64
+ try {
65
+ const result = await update(tokenId, allowed);
66
+ if (!result.ok) {
67
+ setError(result.error);
68
+ return;
69
+ }
70
+ await reload();
71
+ }
72
+ finally {
73
+ setUpdating(null);
74
+ }
75
+ };
57
76
  useEffect(() => {
58
77
  let live = true;
59
78
  void props.api.list().then((result) => {
@@ -91,6 +110,7 @@ export function QaIntegrationTokensPage(props) {
91
110
  .create({
92
111
  label: label.trim(),
93
112
  scopes: [...scopes],
113
+ allowClarifications,
94
114
  ttlDays: days,
95
115
  })
96
116
  .then(async (result) => {
@@ -125,18 +145,22 @@ export function QaIntegrationTokensPage(props) {
125
145
  });
126
146
  };
127
147
  const now = Date.now();
128
- return (_jsxs("div", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-tokens-title", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B" }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-tokens-lead", children: "\u0422\u043E\u043A\u0435\u043D \u2014 \u044D\u0442\u043E \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B: \u043E\u043D\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0412\u044B\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u0442\u043E\u043A\u0435\u043D \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043E\u0442\u0437\u044B\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0430 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430. \u0422\u043E\u043A\u0435\u043D \u043F\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043C\u0435\u043D\u0443 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0430\u0440\u043E\u043B\u044F, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u0442\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E." }), issued === null ? null : (_jsxs(QaSettingsSection, { testId: "qa-settings-tokens-issued", title: "\u0422\u043E\u043A\u0435\u043D \u0441\u043E\u0437\u0434\u0430\u043D", children: [_jsx(QaSettingsNotice, { tone: "warn", testId: "qa-settings-tokens-issued-notice", children: "\u0421\u043A\u043E\u043F\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0435\u0433\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435\u043B\u044C\u0437\u044F: \u043D\u0430 \u0441\u0442\u0435\u043D\u0434\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442\u043F\u0435\u0447\u0430\u0442\u043E\u043A." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-secret", label: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0442\u043E\u043A\u0435\u043D\u0430", hint: "\u041F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u043A\u0430\u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A Authorization: Bearer \u2026", children: _jsx("input", { className: "dsh-qa-settings__code", value: issued.token, readOnly: true, onFocus: (event) => event.currentTarget.select() }) }), _jsxs(QaSettingsActions, { children: [copyImpossible ? (_jsx(CopyHint, { testId: "qa-settings-tokens-copy-hint" })) : (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-copy", label: copied ? "Скопировано" : "Скопировать", onClick: copySecret }), copyRefused ? (_jsx(CopyHint, { testId: "qa-settings-tokens-copy-hint" })) : null] })), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-ack", tone: "primary", label: "\u042F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043B \u0442\u043E\u043A\u0435\u043D", onClick: () => setIssued(null) })] })] })), _jsx(QaSettingsSection, { testId: "qa-settings-tokens-new", title: "\u041D\u043E\u0432\u044B\u0439 \u0442\u043E\u043A\u0435\u043D", children: props.api.canCreate ? (_jsxs("form", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens-create-form", onSubmit: submit, children: [_jsx(QaSettingsField, { testId: "qa-settings-tokens-label", label: "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", hint: "\u041F\u043E \u043D\u0435\u043C\u0443 \u0432\u044B \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u0432 \u0441\u043F\u0438\u0441\u043A\u0435: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u00AB\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A\u00BB.", children: _jsx("input", { value: label, maxLength: QA_SERVICE_TOKEN_LABEL_MAX, placeholder: "\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A", onChange: (event) => setLabel(event.currentTarget.value) }) }), QA_SERVICE_TOKEN_SCOPES.map((scope) => (_jsx("div", { className: "dsh-qa-settings__toggle-row", "data-testid": "qa-settings-tokens-scope", children: _jsxs("label", { className: "dsh-qa-settings__toggle", children: [_jsx("input", { type: "checkbox", "data-testid": "qa-settings-tokens-scope-input", checked: scopes.includes(scope), onChange: (event) => toggleScope(scope, event.currentTarget.checked) }), _jsx("span", { className: "dsh-qa-settings__toggle-label", "data-testid": "qa-settings-tokens-scope-label", children: SCOPE_LABELS[scope] })] }) }, scope))), _jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-scopes-hint", children: "\u041F\u0440\u0430\u0432\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0442 \u0442\u043E\u043A\u0435\u043D, \u043D\u043E \u043D\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u044E\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438: \u0442\u043E\u043A\u0435\u043D \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-ttl", label: "\u0421\u0440\u043E\u043A, \u0434\u043D\u0435\u0439", hint: `От ${String(QA_SERVICE_TOKEN_TTL_DAYS_MIN)} до ${String(QA_SERVICE_TOKEN_TTL_DAYS_MAX)}; по умолчанию — срок вашей сессии.`, children: _jsx("select", { value: days, onChange: (event) => setDays(Number(event.currentTarget.value)), children: TTL_CHOICES.map((choice) => (_jsx("option", { value: choice, children: choice }, choice))) }) }), _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { testId: "qa-settings-tokens-create", type: "submit", tone: "primary", disabled: busy, label: busy ? "Создание…" : "Создать токен" }) })] })) : (_jsx(QaSettingsNotice, { tone: "info", testId: "qa-settings-tokens-api-off", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 API \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u043E\u043A\u0430 \u043D\u0435 \u0434\u043B\u044F \u0447\u0435\u0433\u043E. \u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u043D\u0435\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043D\u0438\u0436\u0435 \u2014 \u0438\u0445 \u043C\u043E\u0436\u043D\u043E \u043E\u0442\u043E\u0437\u0432\u0430\u0442\u044C." })) }), _jsxs(QaSettingsSection, { testId: "qa-settings-tokens-list", title: "\u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B", children: [error === null ? null : (_jsx(QaSettingsNotice, { tone: "error", testId: "qa-settings-tokens-error", children: error })), loading ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-loading", children: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026" })) : tokens.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-empty", children: "\u0423 \u0432\u0430\u0441 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432." })) : (_jsx("ul", { className: "dsh-qa-settings__rows", "data-testid": "qa-settings-tokens-rows", children: tokens.map((token) => {
148
+ return (_jsxs("div", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens", children: [_jsx("h3", { className: "dsh-qa-settings__page-title", "data-testid": "qa-settings-tokens-title", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B" }), _jsx("p", { className: "dsh-qa-settings__lead", "data-testid": "qa-settings-tokens-lead", children: "\u0422\u043E\u043A\u0435\u043D \u2014 \u044D\u0442\u043E \u043A\u043B\u044E\u0447 \u0434\u043B\u044F \u0434\u0440\u0443\u0433\u043E\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B: \u043E\u043D\u0430 \u0437\u0430\u0434\u0430\u0451\u0442 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438, \u043D\u0435 \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0412\u044B\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439 \u0442\u043E\u043A\u0435\u043D \u043A\u0430\u0436\u0434\u043E\u0439 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u043E\u0442\u0437\u044B\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E, \u043A\u043E\u0433\u0434\u0430 \u043E\u043D\u0430 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043D\u0443\u0436\u043D\u0430. \u0422\u043E\u043A\u0435\u043D \u043F\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043C\u0435\u043D\u0443 \u0432\u0430\u0448\u0435\u0433\u043E \u043F\u0430\u0440\u043E\u043B\u044F, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u043E\u0442\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E." }), issued === null ? null : (_jsxs(QaSettingsSection, { testId: "qa-settings-tokens-issued", title: "\u0422\u043E\u043A\u0435\u043D \u0441\u043E\u0437\u0434\u0430\u043D", children: [_jsx(QaSettingsNotice, { tone: "warn", testId: "qa-settings-tokens-issued-notice", children: "\u0421\u043A\u043E\u043F\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438. \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0435\u0433\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043D\u0435\u043B\u044C\u0437\u044F: \u043D\u0430 \u0441\u0442\u0435\u043D\u0434\u0435 \u0445\u0440\u0430\u043D\u0438\u0442\u0441\u044F \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0442\u043F\u0435\u0447\u0430\u0442\u043E\u043A." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-secret", label: "\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0442\u043E\u043A\u0435\u043D\u0430", hint: "\u041F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043E \u043A\u0430\u043A \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A Authorization: Bearer \u2026", children: _jsx("input", { className: "dsh-qa-settings__code", value: issued.token, readOnly: true, onFocus: (event) => event.currentTarget.select() }) }), _jsxs(QaSettingsActions, { children: [copyImpossible ? (_jsx(CopyHint, { testId: "qa-settings-tokens-copy-hint" })) : (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-copy", label: copied ? "Скопировано" : "Скопировать", onClick: copySecret }), copyRefused ? (_jsx(CopyHint, { testId: "qa-settings-tokens-copy-hint" })) : null] })), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-ack", tone: "primary", label: "\u042F \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043B \u0442\u043E\u043A\u0435\u043D", onClick: () => setIssued(null) })] })] })), _jsx(QaSettingsSection, { testId: "qa-settings-tokens-new", title: "\u041D\u043E\u0432\u044B\u0439 \u0442\u043E\u043A\u0435\u043D", children: props.api.canCreate ? (_jsxs("form", { className: "dsh-qa-settings__page", "data-testid": "qa-settings-tokens-create-form", onSubmit: submit, children: [_jsx(QaSettingsField, { testId: "qa-settings-tokens-label", label: "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", hint: "\u041F\u043E \u043D\u0435\u043C\u0443 \u0432\u044B \u043E\u0442\u043B\u0438\u0447\u0438\u0442\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u0432 \u0441\u043F\u0438\u0441\u043A\u0435: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, \u00AB\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A\u00BB.", children: _jsx("input", { value: label, maxLength: QA_SERVICE_TOKEN_LABEL_MAX, placeholder: "\u043C\u043E\u0441\u0442 \u0437\u0430\u044F\u0432\u043E\u043A", onChange: (event) => setLabel(event.currentTarget.value) }) }), QA_SERVICE_TOKEN_SCOPES.map((scope) => (_jsx("div", { className: "dsh-qa-settings__toggle-row", "data-testid": "qa-settings-tokens-scope", children: _jsxs("label", { className: "dsh-qa-settings__toggle", children: [_jsx("input", { type: "checkbox", "data-testid": "qa-settings-tokens-scope-input", checked: scopes.includes(scope), onChange: (event) => toggleScope(scope, event.currentTarget.checked) }), _jsx("span", { className: "dsh-qa-settings__toggle-label", "data-testid": "qa-settings-tokens-scope-label", children: SCOPE_LABELS[scope] })] }) }, scope))), _jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-scopes-hint", children: "\u041F\u0440\u0430\u0432\u0430 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u044E\u0442 \u0442\u043E\u043A\u0435\u043D, \u043D\u043E \u043D\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u044E\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043D\u043E\u0439 \u0437\u0430\u043F\u0438\u0441\u0438: \u0442\u043E\u043A\u0435\u043D \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u043E\u043B\u044C\u0448\u0435 \u0442\u043E\u0433\u043E, \u0447\u0442\u043E \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\u044B. \u00AB\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441\u044B \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0443\u00BB \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u043E\u0442\u0432\u0435\u0442\u044B \u0447\u0435\u0440\u0435\u0437 API. \u042D\u0442\u043E \u043F\u0440\u0430\u0432\u043E \u043D\u0435 \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u0443\u0442\u043E\u0447\u043D\u044F\u044E\u0449\u0438\u043C\u0438 \u0432\u043E\u043F\u0440\u043E\u0441\u0430\u043C\u0438 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430. \u0411\u0435\u0437 \u043D\u0435\u0433\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u044B \u043D\u0430 \u043E\u0442\u0432\u0435\u0442 \u0432\u0435\u0440\u043D\u0443\u0442 HTTP 403." }), _jsx(QaSettingsField, { testId: "qa-settings-tokens-ttl", label: "\u0421\u0440\u043E\u043A, \u0434\u043D\u0435\u0439", hint: `От ${String(QA_SERVICE_TOKEN_TTL_DAYS_MIN)} до ${String(QA_SERVICE_TOKEN_TTL_DAYS_MAX)}; по умолчанию — срок вашей сессии.`, children: _jsx("select", { value: days, onChange: (event) => setDays(Number(event.currentTarget.value)), children: TTL_CHOICES.map((choice) => (_jsx("option", { value: choice, children: choice }, choice))) }) }), _jsxs("label", { className: "dsh-qa-settings__toggle", "data-testid": "qa-settings-tokens-clarifications", children: [_jsx("input", { type: "checkbox", checked: allowClarifications, onChange: (event) => setAllowClarifications(event.currentTarget.checked) }), _jsx("span", { className: "dsh-qa-settings__toggle-label", children: "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044C \u0443\u0442\u043E\u0447\u043D\u044F\u044E\u0449\u0438\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B" })] }), _jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-clarifications-hint", children: "\u0412\u044B\u043A\u043B\u044E\u0447\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442 \u043E\u0442\u0432\u0435\u0447\u0430\u043B \u043F\u043E \u0438\u043C\u0435\u044E\u0449\u0438\u043C\u0441\u044F \u0434\u0430\u043D\u043D\u044B\u043C \u0438 \u043E\u0442\u043C\u0435\u0447\u0430\u043B \u043D\u0435\u0434\u043E\u0441\u0442\u0430\u044E\u0449\u0443\u044E \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044E, \u043D\u0435 \u043E\u0436\u0438\u0434\u0430\u044F \u0432\u0430\u0448\u0438\u0445 \u043E\u0442\u0432\u0435\u0442\u043E\u0432. \u041F\u0440\u0430\u0432\u043E \u043D\u0430 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0443 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u0447\u0435\u0440\u0435\u0437 API \u0441\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442\u0441\u044F. \u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u044B." }), _jsx(QaSettingsActions, { children: _jsx(QaSettingsButton, { testId: "qa-settings-tokens-create", type: "submit", tone: "primary", disabled: busy, label: busy ? "Создание…" : "Создать токен" }) })] })) : (_jsx(QaSettingsNotice, { tone: "info", testId: "qa-settings-tokens-api-off", children: "\u0418\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 API \u0432\u044B\u043A\u043B\u044E\u0447\u0435\u043D \u043D\u0430 \u044D\u0442\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0435, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u043E\u043A\u0435\u043D\u044B \u043F\u043E\u043A\u0430 \u043D\u0435 \u0434\u043B\u044F \u0447\u0435\u0433\u043E. \u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0440\u0430\u043D\u0435\u0435 \u0442\u043E\u043A\u0435\u043D\u044B \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0432 \u0441\u043F\u0438\u0441\u043A\u0435 \u043D\u0438\u0436\u0435 \u2014 \u0438\u0445 \u043C\u043E\u0436\u043D\u043E \u043E\u0442\u043E\u0437\u0432\u0430\u0442\u044C." })) }), _jsxs(QaSettingsSection, { testId: "qa-settings-tokens-list", title: "\u0412\u044B\u0434\u0430\u043D\u043D\u044B\u0435 \u0442\u043E\u043A\u0435\u043D\u044B", children: [error === null ? null : (_jsx(QaSettingsNotice, { tone: "error", testId: "qa-settings-tokens-error", children: error })), loading ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-loading", children: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026" })) : tokens.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", "data-testid": "qa-settings-tokens-empty", children: "\u0423 \u0432\u0430\u0441 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442 \u0438\u043D\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432." })) : (_jsx("ul", { className: "dsh-qa-settings__rows", "data-testid": "qa-settings-tokens-rows", children: tokens.map((token) => {
129
149
  const state = tokenState(token, now);
130
150
  const confirming = pendingRevoke === token.id;
131
- return (_jsx("li", { className: "dsh-qa-settings__row", "data-testid": "qa-settings-tokens-row", children: _jsxs("div", { className: "dsh-qa-settings__row-button", "data-testid": "qa-settings-tokens-row-body", children: [_jsx("span", { className: "dsh-qa-settings__row-title", "data-testid": "qa-settings-tokens-row-title", children: token.label }), _jsx("span", { className: "dsh-qa-settings__row-description", "data-testid": "qa-settings-tokens-row-scopes", children: scopeLabels(token.scopes) }), _jsxs("span", { className: "dsh-qa-settings__row-meta", "data-testid": "qa-settings-tokens-row-meta", children: ["\u0441\u043E\u0437\u0434\u0430\u043D ", day(token.createdAt), " \u00B7 \u0434\u043E ", day(token.expiresAt), " ", "\u00B7 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0439: ", token.useCount, token.lastUsedAt === null
151
+ return (_jsx("li", { className: "dsh-qa-settings__row", "data-testid": "qa-settings-tokens-row", children: _jsxs("div", { className: "dsh-qa-settings__row-button", "data-testid": "qa-settings-tokens-row-body", children: [_jsx("span", { className: "dsh-qa-settings__row-title", "data-testid": "qa-settings-tokens-row-title", children: token.label }), _jsxs("span", { className: "dsh-qa-settings__row-description", "data-testid": "qa-settings-tokens-row-scopes", children: [scopeLabels(token.scopes), " \u00B7", " ", token.allowClarifications === false
152
+ ? "без уточняющих вопросов"
153
+ : "уточнения разрешены"] }), _jsxs("span", { className: "dsh-qa-settings__row-meta", "data-testid": "qa-settings-tokens-row-meta", children: ["\u0441\u043E\u0437\u0434\u0430\u043D ", day(token.createdAt), " \u00B7 \u0434\u043E ", day(token.expiresAt), " ", "\u00B7 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0439: ", token.useCount, token.lastUsedAt === null
132
154
  ? ""
133
155
  : ` · последний раз ${day(token.lastUsedAt)}`] }), state === "active" ? null : (_jsx("span", { className: state === "revoked"
134
156
  ? "dsh-qa-settings__row-meta"
135
157
  : "dsh-qa-settings__row-warning", "data-testid": "qa-settings-tokens-row-state", children: state === "revoked"
136
158
  ? "отозван"
137
- : "истёк — интеграция больше не может им пользоваться" })), state === "active" ? (_jsx(QaSettingsActions, { children: confirming ? (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-cancel", label: "\u041E\u0442\u043C\u0435\u043D\u0430", onClick: () => setPendingRevoke(null) }), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-confirm", tone: "danger", disabled: revoking === token.id, label: revoking === token.id
138
- ? "Отзываем…"
139
- : "Отозвать окончательно", onClick: () => revoke(token.id) })] })) : (_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke", tone: "danger", label: "\u041E\u0442\u043E\u0437\u0432\u0430\u0442\u044C", title: `Отозвать токен «${token.label}»`, onClick: () => setPendingRevoke(token.id) })) })) : null] }) }, token.id));
159
+ : "истёк — интеграция больше не может им пользоваться" })), state === "active" ? (_jsxs(QaSettingsActions, { children: [props.api.setClarifications === undefined ? null : (_jsxs("label", { className: "dsh-qa-settings__toggle", "data-testid": "qa-settings-tokens-row-clarifications", children: [_jsx("input", { type: "checkbox", checked: token.allowClarifications !== false, disabled: updating === token.id, onChange: (event) => {
160
+ void changeClarifications(token.id, event.currentTarget.checked);
161
+ } }), _jsx("span", { className: "dsh-qa-settings__toggle-label", children: "\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044C \u0443\u0442\u043E\u0447\u043D\u044F\u044E\u0449\u0438\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B" })] })), confirming ? (_jsxs(_Fragment, { children: [_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-cancel", label: "\u041E\u0442\u043C\u0435\u043D\u0430", onClick: () => setPendingRevoke(null) }), _jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke-confirm", tone: "danger", disabled: revoking === token.id, label: revoking === token.id
162
+ ? "Отзываем…"
163
+ : "Отозвать окончательно", onClick: () => revoke(token.id) })] })) : (_jsx(QaSettingsButton, { testId: "qa-settings-tokens-revoke", tone: "danger", label: "\u041E\u0442\u043E\u0437\u0432\u0430\u0442\u044C", title: `Отозвать токен «${token.label}»`, onClick: () => setPendingRevoke(token.id) }))] })) : null] }) }, token.id));
140
164
  }) }))] })] }));
141
165
  }
142
166
  //# sourceMappingURL=IntegrationTokensPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationTokensPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/IntegrationTokensPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntegrationTokensPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/IntegrationTokensPage.tsx"],"names":[],"mappings":"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"}
@@ -16,17 +16,57 @@ export function fileNameOf(path) {
16
16
  }
17
17
  /** Save one workspace file under its own name. */
18
18
  export function downloadWorkspaceFile(file) {
19
+ if (file.truncated) {
20
+ throw new Error("Файл прочитан частично. Скачивание требует полного файла.");
21
+ }
19
22
  const bytes = file.base64 === undefined
20
23
  ? new TextEncoder().encode(file.text ?? "")
21
24
  : base64ToBytes(file.base64);
22
- const url = URL.createObjectURL(new Blob([bytes], { type: file.mime }));
25
+ saveBlob(new Blob([bytes], { type: file.mime }), file.path);
26
+ }
27
+ function saveBlob(blob, path) {
28
+ const url = URL.createObjectURL(blob);
23
29
  const anchor = document.createElement("a");
24
30
  anchor.href = url;
25
- anchor.download = fileNameOf(file.path);
31
+ anchor.download = fileNameOf(path);
26
32
  anchor.rel = "noreferrer";
27
33
  document.body.append(anchor);
28
34
  anchor.click();
29
35
  anchor.remove();
30
36
  URL.revokeObjectURL(url);
31
37
  }
38
+ /** Read one immutable file version in full; a refusal never saves partial bytes. */
39
+ export async function downloadWorkspacePath(path, read) {
40
+ const chunks = [];
41
+ let offset = 0;
42
+ let version = null;
43
+ let size;
44
+ while (true) {
45
+ const result = await read(offset, version);
46
+ if (!result.ok)
47
+ throw new Error("Не удалось скачать файл целиком.");
48
+ const chunk = result.value;
49
+ if (chunk.offset !== offset ||
50
+ !Number.isSafeInteger(chunk.size) ||
51
+ chunk.size < 0 ||
52
+ chunk.size > 256 * 1024 * 1024 ||
53
+ (size !== undefined && chunk.size !== size) ||
54
+ (version !== null && chunk.version !== version))
55
+ throw new Error("Файл изменился во время скачивания.");
56
+ size = chunk.size;
57
+ version = chunk.version;
58
+ const bytes = base64ToBytes(chunk.base64);
59
+ if (offset + bytes.length > size || (!chunk.done && bytes.length === 0)) {
60
+ throw new Error("Файл прочитан не полностью.");
61
+ }
62
+ chunks.push(bytes);
63
+ offset += bytes.length;
64
+ if (chunk.done) {
65
+ if (offset !== size)
66
+ throw new Error("Файл прочитан не полностью.");
67
+ saveBlob(new Blob(chunks, { type: "application/octet-stream" }), path);
68
+ return;
69
+ }
70
+ }
71
+ }
32
72
  //# sourceMappingURL=workspace-download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-download.js","sourceRoot":"","sources":["../../src/client/workspace-download.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;GASG;AAEH,uEAAuE;AACvE,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;IAC1E,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/C,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,qBAAqB,CAAC,IAAqB;IACzD,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,KAAK,SAAS;QACvB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3C,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAC7B,IAAI,IAAI,CAAC,CAAC,KAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CACnD,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"workspace-download.js","sourceRoot":"","sources":["../../src/client/workspace-download.ts"],"names":[],"mappings":"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"}