@yadsh/dsh-qa-surface 0.2.0 → 0.4.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 (325) hide show
  1. package/README.md +236 -20
  2. package/compatibility.json +11 -3
  3. package/lib/account-remotes.js +100 -0
  4. package/lib/account-remotes.js.map +1 -0
  5. package/lib/accounts/credentials.js +27 -0
  6. package/lib/accounts/credentials.js.map +1 -0
  7. package/lib/accounts/errors.js +9 -0
  8. package/lib/accounts/errors.js.map +1 -0
  9. package/lib/accounts/file.js +101 -0
  10. package/lib/accounts/file.js.map +1 -0
  11. package/lib/accounts/index.js +2 -0
  12. package/lib/accounts/index.js.map +1 -0
  13. package/lib/accounts/store.js +461 -0
  14. package/lib/accounts/store.js.map +1 -0
  15. package/lib/accounts/token.js +61 -0
  16. package/lib/accounts/token.js.map +1 -0
  17. package/lib/attachment-rules.js +111 -0
  18. package/lib/attachment-rules.js.map +1 -0
  19. package/lib/attestation.js.map +1 -1
  20. package/lib/cli.js +256 -0
  21. package/lib/cli.js.map +1 -0
  22. package/lib/client/QaAccountsController.js +359 -0
  23. package/lib/client/QaAccountsController.js.map +1 -0
  24. package/lib/client/QaSessionController.js +238 -180
  25. package/lib/client/QaSessionController.js.map +1 -1
  26. package/lib/client/QaSurface.js +281 -105
  27. package/lib/client/QaSurface.js.map +1 -1
  28. package/lib/client/QaTranscriptAdapter.js +95 -244
  29. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  30. package/lib/client/attachments.js +150 -0
  31. package/lib/client/attachments.js.map +1 -0
  32. package/lib/client/attestation.js +7 -1
  33. package/lib/client/attestation.js.map +1 -1
  34. package/lib/client/base64.js +16 -0
  35. package/lib/client/base64.js.map +1 -0
  36. package/lib/client/chat-files.js +48 -0
  37. package/lib/client/chat-files.js.map +1 -0
  38. package/lib/client/components/Markdown.js +54 -13
  39. package/lib/client/components/Markdown.js.map +1 -1
  40. package/lib/client/components/QaAuthGate.js +40 -0
  41. package/lib/client/components/QaAuthGate.js.map +1 -0
  42. package/lib/client/components/QaChangelog.js +131 -0
  43. package/lib/client/components/QaChangelog.js.map +1 -0
  44. package/lib/client/components/QaComposer.js +56 -74
  45. package/lib/client/components/QaComposer.js.map +1 -1
  46. package/lib/client/components/QaFileAttachment.js +19 -0
  47. package/lib/client/components/QaFileAttachment.js.map +1 -0
  48. package/lib/client/components/QaFilesPanel.js +45 -0
  49. package/lib/client/components/QaFilesPanel.js.map +1 -0
  50. package/lib/client/components/QaHeader.js +34 -0
  51. package/lib/client/components/QaHeader.js.map +1 -0
  52. package/lib/client/components/QaMessage.js +61 -18
  53. package/lib/client/components/QaMessage.js.map +1 -1
  54. package/lib/client/components/QaModal.js +31 -0
  55. package/lib/client/components/QaModal.js.map +1 -0
  56. package/lib/client/components/QaProfile.js +64 -0
  57. package/lib/client/components/QaProfile.js.map +1 -0
  58. package/lib/client/components/QaRightRail.js +15 -0
  59. package/lib/client/components/QaRightRail.js.map +1 -0
  60. package/lib/client/components/QaSidebar.js +68 -20
  61. package/lib/client/components/QaSidebar.js.map +1 -1
  62. package/lib/client/components/QaSourcesPanel.js +127 -0
  63. package/lib/client/components/QaSourcesPanel.js.map +1 -0
  64. package/lib/client/components/QaTurnRail.js +296 -0
  65. package/lib/client/components/QaTurnRail.js.map +1 -0
  66. package/lib/client/components/QaWelcomeNotice.js +125 -0
  67. package/lib/client/components/QaWelcomeNotice.js.map +1 -0
  68. package/lib/client/components/QaWidthHandle.js +147 -0
  69. package/lib/client/components/QaWidthHandle.js.map +1 -0
  70. package/lib/client/components/QaWorkGroup.js +19 -20
  71. package/lib/client/components/QaWorkGroup.js.map +1 -1
  72. package/lib/client/components/source-refs.js +78 -0
  73. package/lib/client/components/source-refs.js.map +1 -0
  74. package/lib/client/components/surface-utils.js +28 -0
  75. package/lib/client/components/surface-utils.js.map +1 -0
  76. package/lib/client/components/thinking-phrases.js +24 -0
  77. package/lib/client/components/thinking-phrases.js.map +1 -0
  78. package/lib/client/create-session.js +26 -0
  79. package/lib/client/create-session.js.map +1 -0
  80. package/lib/client/failure-copy.js +63 -0
  81. package/lib/client/failure-copy.js.map +1 -0
  82. package/lib/client/index.js +135 -16
  83. package/lib/client/index.js.map +1 -1
  84. package/lib/client/project-session-state.js +78 -0
  85. package/lib/client/project-session-state.js.map +1 -0
  86. package/lib/client/prompt-content.js +54 -0
  87. package/lib/client/prompt-content.js.map +1 -0
  88. package/lib/client/session-admission.js +38 -0
  89. package/lib/client/session-admission.js.map +1 -0
  90. package/lib/client/session-assets.js +52 -0
  91. package/lib/client/session-assets.js.map +1 -0
  92. package/lib/client/session-sources.js +61 -0
  93. package/lib/client/session-sources.js.map +1 -0
  94. package/lib/client/settings/card.js +143 -0
  95. package/lib/client/settings/card.js.map +1 -0
  96. package/lib/client/settings/fields.js +145 -0
  97. package/lib/client/settings/fields.js.map +1 -0
  98. package/lib/client/settings/format.js +255 -0
  99. package/lib/client/settings/format.js.map +1 -0
  100. package/lib/client/settings/sections/access.js +25 -0
  101. package/lib/client/settings/sections/access.js.map +1 -0
  102. package/lib/client/settings/sections/accounts.js +47 -0
  103. package/lib/client/settings/sections/accounts.js.map +1 -0
  104. package/lib/client/settings/sections/attachments.js +46 -0
  105. package/lib/client/settings/sections/attachments.js.map +1 -0
  106. package/lib/client/settings/sections/branding.js +28 -0
  107. package/lib/client/settings/sections/branding.js.map +1 -0
  108. package/lib/client/settings/sections/common.js +20 -0
  109. package/lib/client/settings/sections/common.js.map +1 -0
  110. package/lib/client/settings/sections/embedding.js +19 -0
  111. package/lib/client/settings/sections/embedding.js.map +1 -0
  112. package/lib/client/settings/sections/interface.js +60 -0
  113. package/lib/client/settings/sections/interface.js.map +1 -0
  114. package/lib/client/settings/sections/lockdown.js +82 -0
  115. package/lib/client/settings/sections/lockdown.js.map +1 -0
  116. package/lib/client/settings/sections/session.js +53 -0
  117. package/lib/client/settings/sections/session.js.map +1 -0
  118. package/lib/client/settings/sections/sources.js +72 -0
  119. package/lib/client/settings/sections/sources.js.map +1 -0
  120. package/lib/client/settings/sections/status.js +37 -0
  121. package/lib/client/settings/sections/status.js.map +1 -0
  122. package/lib/client/settings/sections.js +23 -0
  123. package/lib/client/settings/sections.js.map +1 -0
  124. package/lib/client/settings/styles.js +57 -0
  125. package/lib/client/settings/styles.js.map +1 -0
  126. package/lib/client/settlement.js +24 -0
  127. package/lib/client/settlement.js.map +1 -0
  128. package/lib/client/stream-publisher.js +47 -0
  129. package/lib/client/stream-publisher.js.map +1 -0
  130. package/lib/client/styles.js +225 -17
  131. package/lib/client/styles.js.map +1 -1
  132. package/lib/client/tool-presentation.js +102 -0
  133. package/lib/client/tool-presentation.js.map +1 -0
  134. package/lib/client/turn-sources.js +98 -0
  135. package/lib/client/turn-sources.js.map +1 -0
  136. package/lib/client/types.js +2 -0
  137. package/lib/client/types.js.map +1 -1
  138. package/lib/client/use-right-rail.js +96 -0
  139. package/lib/client/use-right-rail.js.map +1 -0
  140. package/lib/client/use-session-ui-state.js +75 -0
  141. package/lib/client/use-session-ui-state.js.map +1 -0
  142. package/lib/client/use-transcript-view.js +44 -0
  143. package/lib/client/use-transcript-view.js.map +1 -0
  144. package/lib/client.js +9052 -1345
  145. package/lib/client.js.map +1 -1
  146. package/lib/config-resolvers/accounts.js +60 -0
  147. package/lib/config-resolvers/accounts.js.map +1 -0
  148. package/lib/config-resolvers/attachments.js +28 -0
  149. package/lib/config-resolvers/attachments.js.map +1 -0
  150. package/lib/config-resolvers/basics.js +59 -0
  151. package/lib/config-resolvers/basics.js.map +1 -0
  152. package/lib/config-resolvers/defaults.js +132 -0
  153. package/lib/config-resolvers/defaults.js.map +1 -0
  154. package/lib/config-resolvers/lockdown.js +79 -0
  155. package/lib/config-resolvers/lockdown.js.map +1 -0
  156. package/lib/config-resolvers/session.js +42 -0
  157. package/lib/config-resolvers/session.js.map +1 -0
  158. package/lib/config-resolvers/shared.js +42 -0
  159. package/lib/config-resolvers/shared.js.map +1 -0
  160. package/lib/config-resolvers/sources.js +81 -0
  161. package/lib/config-resolvers/sources.js.map +1 -0
  162. package/lib/config-resolvers/ui.js +20 -0
  163. package/lib/config-resolvers/ui.js.map +1 -0
  164. package/lib/config.js +279 -102
  165. package/lib/config.js.map +1 -1
  166. package/lib/entry-redirect.js +45 -0
  167. package/lib/entry-redirect.js.map +1 -0
  168. package/lib/host-route.js +25 -1
  169. package/lib/host-route.js.map +1 -1
  170. package/lib/index.js +258 -23
  171. package/lib/index.js.map +1 -1
  172. package/lib/launch-token.js +42 -0
  173. package/lib/launch-token.js.map +1 -0
  174. package/lib/profile.js +214 -0
  175. package/lib/profile.js.map +1 -0
  176. package/lib/prompt-notes.js +231 -0
  177. package/lib/prompt-notes.js.map +1 -0
  178. package/lib/provenance/collector.js +40 -0
  179. package/lib/provenance/collector.js.map +1 -0
  180. package/lib/provenance/connectors.js +147 -0
  181. package/lib/provenance/connectors.js.map +1 -0
  182. package/lib/provenance/dedupe.js +89 -0
  183. package/lib/provenance/dedupe.js.map +1 -0
  184. package/lib/provenance/extractors.js +340 -0
  185. package/lib/provenance/extractors.js.map +1 -0
  186. package/lib/provenance/file-preview.js +39 -0
  187. package/lib/provenance/file-preview.js.map +1 -0
  188. package/lib/provenance/host-store.js +387 -0
  189. package/lib/provenance/host-store.js.map +1 -0
  190. package/lib/provenance/index.js +9 -0
  191. package/lib/provenance/index.js.map +1 -0
  192. package/lib/provenance/normalize.js +128 -0
  193. package/lib/provenance/normalize.js.map +1 -0
  194. package/lib/provenance/reported.js +53 -0
  195. package/lib/provenance/reported.js.map +1 -0
  196. package/lib/provenance/types.js +2 -0
  197. package/lib/provenance/types.js.map +1 -0
  198. package/lib/resolve-config.js +35 -249
  199. package/lib/resolve-config.js.map +1 -1
  200. package/lib/secure-session.js +122 -14
  201. package/lib/secure-session.js.map +1 -1
  202. package/lib/shared/session-key.js +18 -0
  203. package/lib/shared/session-key.js.map +1 -0
  204. package/lib/shared/settings.js +10 -0
  205. package/lib/shared/settings.js.map +1 -0
  206. package/lib/thinking-phrases.js +68 -0
  207. package/lib/thinking-phrases.js.map +1 -0
  208. package/lib/typert.host.js +749 -11
  209. package/lib/typert.remote-client.d.ts +23 -3
  210. package/lib/typert.remote-client.js +593 -6
  211. package/lib/types/account-remotes.d.ts +42 -0
  212. package/lib/types/accounts/credentials.d.ts +14 -0
  213. package/lib/types/accounts/errors.d.ts +11 -0
  214. package/lib/types/accounts/file.d.ts +82 -0
  215. package/lib/types/accounts/index.d.ts +2 -0
  216. package/lib/types/accounts/store.d.ts +144 -0
  217. package/lib/types/accounts/token.d.ts +31 -0
  218. package/lib/types/attachment-rules.d.ts +44 -0
  219. package/lib/types/attestation.d.ts +1 -1
  220. package/lib/types/cli.d.ts +9 -0
  221. package/lib/types/client/QaAccountsController.d.ts +102 -0
  222. package/lib/types/client/QaConfigController.d.ts +1 -1
  223. package/lib/types/client/QaSessionController.d.ts +61 -22
  224. package/lib/types/client/QaSurface.d.ts +14 -3
  225. package/lib/types/client/QaTranscriptAdapter.d.ts +5 -10
  226. package/lib/types/client/attachments.d.ts +54 -0
  227. package/lib/types/client/base64.d.ts +10 -0
  228. package/lib/types/client/chat-files.d.ts +30 -0
  229. package/lib/types/client/components/Markdown.d.ts +11 -1
  230. package/lib/types/client/components/QaAgentsDrawer.d.ts +1 -1
  231. package/lib/types/client/components/QaAuthGate.d.ts +15 -0
  232. package/lib/types/client/components/QaChangelog.d.ts +21 -0
  233. package/lib/types/client/components/QaComposer.d.ts +8 -4
  234. package/lib/types/client/components/QaFileAttachment.d.ts +14 -0
  235. package/lib/types/client/components/QaFilesPanel.d.ts +15 -0
  236. package/lib/types/client/components/QaHeader.d.ts +41 -0
  237. package/lib/types/client/components/QaMessage.d.ts +12 -3
  238. package/lib/types/client/components/QaModal.d.ts +26 -0
  239. package/lib/types/client/components/QaProfile.d.ts +25 -0
  240. package/lib/types/client/components/QaRightRail.d.ts +23 -0
  241. package/lib/types/client/components/QaSidebar.d.ts +44 -2
  242. package/lib/types/client/components/QaSourcesPanel.d.ts +23 -0
  243. package/lib/types/client/components/QaTurnRail.d.ts +65 -0
  244. package/lib/types/client/components/QaWelcomeNotice.d.ts +27 -0
  245. package/lib/types/client/components/QaWidthHandle.d.ts +43 -0
  246. package/lib/types/client/components/QaWorkGroup.d.ts +5 -3
  247. package/lib/types/client/components/source-refs.d.ts +16 -0
  248. package/lib/types/client/components/surface-utils.d.ts +11 -0
  249. package/lib/types/client/components/thinking-phrases.d.ts +9 -0
  250. package/lib/types/client/create-session.d.ts +13 -0
  251. package/lib/types/client/failure-copy.d.ts +19 -0
  252. package/lib/types/client/index.d.ts +1 -0
  253. package/lib/types/client/project-session-state.d.ts +30 -0
  254. package/lib/types/client/prompt-content.d.ts +30 -0
  255. package/lib/types/client/session-admission.d.ts +23 -0
  256. package/lib/types/client/session-assets.d.ts +20 -0
  257. package/lib/types/client/session-sources.d.ts +28 -0
  258. package/lib/types/client/settings/card.d.ts +23 -0
  259. package/lib/types/client/settings/fields.d.ts +139 -0
  260. package/lib/types/client/settings/format.d.ts +108 -0
  261. package/lib/types/client/settings/sections/access.d.ts +9 -0
  262. package/lib/types/client/settings/sections/accounts.d.ts +9 -0
  263. package/lib/types/client/settings/sections/attachments.d.ts +15 -0
  264. package/lib/types/client/settings/sections/branding.d.ts +8 -0
  265. package/lib/types/client/settings/sections/common.d.ts +28 -0
  266. package/lib/types/client/settings/sections/embedding.d.ts +8 -0
  267. package/lib/types/client/settings/sections/interface.d.ts +9 -0
  268. package/lib/types/client/settings/sections/lockdown.d.ts +9 -0
  269. package/lib/types/client/settings/sections/session.d.ts +9 -0
  270. package/lib/types/client/settings/sections/sources.d.ts +9 -0
  271. package/lib/types/client/settings/sections/status.d.ts +22 -0
  272. package/lib/types/client/settings/sections.d.ts +25 -0
  273. package/lib/types/client/settings/styles.d.ts +8 -0
  274. package/lib/types/client/settlement.d.ts +6 -0
  275. package/lib/types/client/stream-publisher.d.ts +28 -0
  276. package/lib/types/client/tool-presentation.d.ts +6 -0
  277. package/lib/types/client/turn-sources.d.ts +14 -0
  278. package/lib/types/client/types.d.ts +101 -9
  279. package/lib/types/client/use-right-rail.d.ts +56 -0
  280. package/lib/types/client/use-session-ui-state.d.ts +41 -0
  281. package/lib/types/client/use-transcript-view.d.ts +20 -0
  282. package/lib/types/config-resolvers/accounts.d.ts +15 -0
  283. package/lib/types/config-resolvers/attachments.d.ts +6 -0
  284. package/lib/types/config-resolvers/basics.d.ts +8 -0
  285. package/lib/types/config-resolvers/defaults.d.ts +4 -0
  286. package/lib/types/config-resolvers/lockdown.d.ts +10 -0
  287. package/lib/types/config-resolvers/session.d.ts +6 -0
  288. package/lib/types/config-resolvers/shared.d.ts +16 -0
  289. package/lib/types/config-resolvers/sources.d.ts +6 -0
  290. package/lib/types/config-resolvers/ui.d.ts +6 -0
  291. package/lib/types/entry-redirect.d.ts +20 -0
  292. package/lib/types/host-route.d.ts +14 -1
  293. package/lib/types/index.d.ts +54 -3
  294. package/lib/types/launch-token.d.ts +21 -0
  295. package/lib/types/profile.d.ts +76 -0
  296. package/lib/types/prompt-notes.d.ts +110 -0
  297. package/lib/types/provenance/collector.d.ts +26 -0
  298. package/lib/types/provenance/connectors.d.ts +11 -0
  299. package/lib/types/provenance/dedupe.d.ts +6 -0
  300. package/lib/types/provenance/extractors.d.ts +14 -0
  301. package/lib/types/provenance/file-preview.d.ts +10 -0
  302. package/lib/types/provenance/host-store.d.ts +54 -0
  303. package/lib/types/provenance/index.d.ts +10 -0
  304. package/lib/types/provenance/normalize.d.ts +13 -0
  305. package/lib/types/provenance/reported.d.ts +5 -0
  306. package/lib/types/provenance/types.d.ts +78 -0
  307. package/lib/types/resolve-config.d.ts +8 -3
  308. package/lib/types/secure-session.d.ts +36 -2
  309. package/lib/types/shared/session-key.d.ts +23 -0
  310. package/lib/types/shared/settings.d.ts +10 -0
  311. package/lib/types/thinking-phrases.d.ts +17 -0
  312. package/lib/types/types.d.ts +290 -16
  313. package/lib/types/user-workspace.d.ts +38 -0
  314. package/lib/user-workspace.js +231 -0
  315. package/lib/user-workspace.js.map +1 -0
  316. package/package.json +71 -47
  317. package/CHANGELOG.md +0 -93
  318. package/SPEC-dsh-qa-surface.md +0 -2425
  319. package/docs/ARCHITECTURE.md +0 -66
  320. package/docs/COMPATIBILITY.md +0 -14
  321. package/docs/CONFIGURATION.md +0 -112
  322. package/docs/EMBEDDING.md +0 -13
  323. package/lib/client/components/QaSourcesDrawer.js +0 -46
  324. package/lib/client/components/QaSourcesDrawer.js.map +0 -1
  325. package/lib/types/client/components/QaSourcesDrawer.d.ts +0 -8
@@ -0,0 +1,147 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from "react";
3
+ /**
4
+ * Space kept outside the content: 88px per side leaves room for the handle,
5
+ * its inset, and a safe zone that remains draggable in both directions. It is
6
+ * the whole ceiling too: like DSH, the page bounds the width, so a wide column
7
+ * lets the transcript fill it.
8
+ */
9
+ export const QA_CONTENT_EDGE_BUDGET = 176;
10
+ const QA_ADAPTIVE_MIN_WIDTH = 680;
11
+ const QA_ADAPTIVE_MAX_WIDTH = 920;
12
+ export function readQaContentWidth(storage, key) {
13
+ try {
14
+ const raw = storage.getItem(key);
15
+ if (raw === null)
16
+ return null;
17
+ const value = Number(raw);
18
+ return Number.isFinite(value) && value > 0 ? value : null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ export function writeQaContentWidth(storage, key, width) {
25
+ try {
26
+ storage.setItem(key, `${width}`);
27
+ }
28
+ catch {
29
+ // Denied durable storage only costs persistence across reloads.
30
+ }
31
+ }
32
+ /**
33
+ * Resolve the centered content width for the currently available column. The
34
+ * operator sets only the floor; the column is the ceiling, so the content may
35
+ * grow until its handles reach the edge budget and a wider window keeps
36
+ * widening it. A column too narrow even for the floor wins over the floor —
37
+ * there is nothing else to give up.
38
+ */
39
+ export function resolveQaContentWidth(columnWidth, preference, minContentWidth) {
40
+ const available = Math.max(0, columnWidth - QA_CONTENT_EDGE_BUDGET);
41
+ const minimum = Math.min(minContentWidth, available);
42
+ const adaptive = Math.max(QA_ADAPTIVE_MIN_WIDTH, Math.min(columnWidth * 0.64, QA_ADAPTIVE_MAX_WIDTH));
43
+ const requested = preference ?? Math.max(adaptive, minimum);
44
+ return Math.min(Math.max(requested, minimum), available);
45
+ }
46
+ /** Pointer-captured, rAF-throttled symmetric content-width handle. */
47
+ export function QaWidthHandle(props) {
48
+ const [dragging, setDragging] = useState(false);
49
+ const base = useRef(0);
50
+ const origin = useRef(0);
51
+ const latest = useRef(0);
52
+ const frame = useRef(null);
53
+ const callbacks = useRef(props);
54
+ callbacks.current = props;
55
+ const outwardWidth = () => {
56
+ const delta = latest.current - origin.current;
57
+ const outward = callbacks.current.side === "right" ? delta : -delta;
58
+ return base.current + outward * 2;
59
+ };
60
+ const cancelFrame = useCallback(() => {
61
+ if (frame.current === null)
62
+ return;
63
+ cancelAnimationFrame(frame.current);
64
+ frame.current = null;
65
+ }, []);
66
+ useEffect(() => cancelFrame, [cancelFrame]);
67
+ const onPointerDown = useCallback((event) => {
68
+ event.preventDefault();
69
+ event.currentTarget.setPointerCapture(event.pointerId);
70
+ origin.current = event.clientX;
71
+ latest.current = event.clientX;
72
+ base.current = callbacks.current.onStart();
73
+ setDragging(true);
74
+ }, []);
75
+ const onPointerMove = useCallback((event) => {
76
+ const box = event.currentTarget.getBoundingClientRect();
77
+ event.currentTarget.style.setProperty("--dsh-qa-width-handle-pointer-y", `${event.clientY - box.top}px`);
78
+ if (!event.currentTarget.hasPointerCapture(event.pointerId))
79
+ return;
80
+ latest.current = event.clientX;
81
+ frame.current ??= requestAnimationFrame(() => {
82
+ frame.current = null;
83
+ callbacks.current.onDrag(outwardWidth());
84
+ });
85
+ }, []);
86
+ const onPointerUp = useCallback((event) => {
87
+ if (!event.currentTarget.hasPointerCapture(event.pointerId))
88
+ return;
89
+ event.currentTarget.releasePointerCapture(event.pointerId);
90
+ cancelFrame();
91
+ latest.current = event.clientX;
92
+ if (latest.current !== origin.current) {
93
+ callbacks.current.onCommit(outwardWidth());
94
+ }
95
+ setDragging(false);
96
+ callbacks.current.onEnd();
97
+ }, [cancelFrame]);
98
+ const onPointerCancel = useCallback(() => {
99
+ cancelFrame();
100
+ setDragging(false);
101
+ callbacks.current.onEnd();
102
+ }, [cancelFrame]);
103
+ return (_jsx("div", { className: "dsh-qa-width-handle", "data-side": props.side, "data-width-handle": props.side, "data-dragging": dragging || undefined, onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: onPointerUp, onPointerCancel: onPointerCancel, onLostPointerCapture: onPointerCancel }));
104
+ }
105
+ export function useQaContentWidth({ active, root, storage, storageKey, minContentWidth, }) {
106
+ const publish = useCallback(() => {
107
+ const element = root.current;
108
+ if (element === null)
109
+ return;
110
+ const preference = readQaContentWidth(storage, storageKey);
111
+ const width = resolveQaContentWidth(element.offsetWidth, preference, minContentWidth);
112
+ element.style.setProperty("--dsh-qa-content-width", `${width}px`);
113
+ }, [minContentWidth, root, storage, storageKey]);
114
+ useLayoutEffect(() => {
115
+ if (!active)
116
+ return;
117
+ const element = root.current;
118
+ if (element === null)
119
+ return;
120
+ publish();
121
+ const observer = new ResizeObserver(publish);
122
+ observer.observe(element);
123
+ return () => observer.disconnect();
124
+ }, [active, publish, root]);
125
+ const onStart = useCallback(() => {
126
+ const element = root.current;
127
+ if (element === null)
128
+ return minContentWidth;
129
+ return resolveQaContentWidth(element.offsetWidth, readQaContentWidth(storage, storageKey), minContentWidth);
130
+ }, [minContentWidth, root, storage, storageKey]);
131
+ const onDrag = useCallback((requestedWidth) => {
132
+ const element = root.current;
133
+ if (element === null)
134
+ return;
135
+ const width = resolveQaContentWidth(element.offsetWidth, requestedWidth, minContentWidth);
136
+ element.style.setProperty("--dsh-qa-content-width", `${width}px`);
137
+ }, [minContentWidth, root]);
138
+ const onCommit = useCallback((requestedWidth) => {
139
+ const element = root.current;
140
+ if (element === null)
141
+ return;
142
+ const width = resolveQaContentWidth(element.offsetWidth, requestedWidth, minContentWidth);
143
+ writeQaContentWidth(storage, storageKey, width);
144
+ }, [minContentWidth, root, storage, storageKey]);
145
+ return { onStart, onDrag, onCommit, onEnd: publish };
146
+ }
147
+ //# sourceMappingURL=QaWidthHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QaWidthHandle.js","sourceRoot":"","sources":["../../../src/client/components/QaWidthHandle.tsx"],"names":[],"mappings":"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"}
@@ -2,14 +2,7 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
2
2
  import { memo, useEffect, useRef, useState } from "react";
3
3
  import { formatWorkDuration } from "./format.js";
4
4
  import { Markdown } from "./Markdown.js";
5
- export const THINKING_PHRASES = Object.freeze([
6
- "Скребу по сусекам…",
7
- "Кумекаю…",
8
- "Навожу резкость…",
9
- "Собираю мысли в кучку…",
10
- "Раскладываю по полочкам…",
11
- "Сверяю приметы…",
12
- ]);
5
+ import { thinkingPhrase } from "./thinking-phrases.js";
13
6
  function Chevron({ open }) {
14
7
  return (_jsx("svg", { className: "dsh-qa-work__chevron", "data-open": open || undefined, viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "m5.25 3.5 3.5 3.5-3.5 3.5" }) }));
15
8
  }
@@ -97,17 +90,19 @@ const QaTextWorkItem = memo(function QaTextWorkItem({ item, renderMarkdown, }) {
97
90
  return (_jsxs("section", { className: "dsh-qa-work-item dsh-qa-work-item--text", "data-state": item.status, "aria-label": item.kind === "reasoning" ? "Рассуждение" : "Ход работы", children: [_jsxs("div", { className: "dsh-qa-work-item__text-head", children: [_jsx("span", { className: "dsh-qa-work-item__icon", children: _jsx(ThinkIcon, {}) }), _jsx("span", { className: "dsh-qa-work-item__label", children: item.kind === "reasoning" ? "Размышление" : "Ход работы" })] }), _jsx("div", { className: "dsh-qa-work-item__text", children: renderMarkdown ? _jsx(Markdown, { text: item.text }) : item.text })] }));
98
91
  }, (prev, next) => prev.renderMarkdown === next.renderMarkdown &&
99
92
  sameWorkItem(prev.item, next.item));
100
- export const QaWorkGroup = memo(function QaWorkGroup({ status, startedAt, endedAt, items, renderMarkdown, }) {
93
+ export const QaWorkGroup = memo(function QaWorkGroup({ status, startedAt, endedAt, items, renderMarkdown, thinkingPhrases, }) {
101
94
  const [open, setOpen] = useState(status === "running");
102
95
  const [now, setNow] = useState(() => Date.now());
103
96
  const previousStatus = useRef(status);
104
97
  useEffect(() => {
105
- if (previousStatus.current === "running" && status === "complete") {
98
+ if (previousStatus.current === "running" &&
99
+ (status === "complete" || status === "error")) {
106
100
  setOpen(false);
107
101
  }
108
- else if (previousStatus.current === "complete" &&
109
- status === "running") {
110
- setOpen(true);
102
+ else if (previousStatus.current === "complete" ||
103
+ previousStatus.current === "error") {
104
+ if (status === "running")
105
+ setOpen(true);
111
106
  }
112
107
  previousStatus.current = status;
113
108
  }, [status]);
@@ -118,18 +113,22 @@ export const QaWorkGroup = memo(function QaWorkGroup({ status, startedAt, endedA
118
113
  const timer = setInterval(() => setNow(Date.now()), 1_000);
119
114
  return () => clearInterval(timer);
120
115
  }, [startedAt, status]);
121
- const duration = startedAt === undefined
122
- ? null
123
- : formatWorkDuration((endedAt ?? now) - startedAt);
116
+ const elapsed = (endedAt ?? now) - (startedAt ?? now);
117
+ const duration = startedAt === undefined ? null : formatWorkDuration(elapsed);
124
118
  const label = status === "running"
125
- ? `${THINKING_PHRASES[Math.floor(Math.max(0, (endedAt ?? now) - (startedAt ?? now)) / 4_000) % THINKING_PHRASES.length]}${duration === null ? "" : ` (${duration})`}`
126
- : duration === null
127
- ? "Ход работы"
128
- : `Готово за ${duration}`;
119
+ ? `${thinkingPhrase(elapsed, thinkingPhrases)}${duration === null ? "" : ` (${duration})`}`
120
+ : status === "error"
121
+ ? duration === null
122
+ ? "Ход прерван"
123
+ : `Прервано за ${duration}`
124
+ : duration === null
125
+ ? "Ход работы"
126
+ : `Готово за ${duration}`;
129
127
  return (_jsxs("section", { className: "dsh-qa-work", "data-state": status, children: [_jsxs("button", { type: "button", className: "dsh-qa-work__toggle", "aria-expanded": open, onClick: () => setOpen((value) => !value), children: [status === "running" ? (_jsx("span", { className: "dsh-qa-work__spinner", "aria-hidden": "true" })) : null, _jsx("span", { children: label }), _jsx(Chevron, { open: open })] }), open ? (_jsx("div", { className: "dsh-qa-work__body", children: items.map((item) => item.kind === "tool" ? (_jsx(QaToolWorkItem, { item: item }, item.id)) : (_jsx(QaTextWorkItem, { item: item, renderMarkdown: renderMarkdown }, item.id))) })) : null] }));
130
128
  }, (prev, next) => prev.status === next.status &&
131
129
  prev.startedAt === next.startedAt &&
132
130
  prev.endedAt === next.endedAt &&
133
131
  prev.renderMarkdown === next.renderMarkdown &&
132
+ prev.thinkingPhrases === next.thinkingPhrases &&
134
133
  sameWorkItems(prev.items, next.items));
135
134
  //# sourceMappingURL=QaWorkGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QaWorkGroup.js","sourceRoot":"","sources":["../../../src/client/components/QaWorkGroup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaWorkGroup.js","sourceRoot":"","sources":["../../../src/client/components/QaWorkGroup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /** http(s) URLs only, case-folded authority, hash and trailing slash gone. */
2
+ function normalizeUrl(value) {
3
+ try {
4
+ const url = new URL(value);
5
+ if (url.protocol !== "http:" && url.protocol !== "https:")
6
+ return undefined;
7
+ url.hash = "";
8
+ if (url.pathname.length > 1) {
9
+ url.pathname = url.pathname.replace(/\/+$/u, "");
10
+ }
11
+ return `${url.protocol}//${url.host.toLowerCase()}${url.pathname}${url.search}`;
12
+ }
13
+ catch {
14
+ return undefined;
15
+ }
16
+ }
17
+ /** Separators normalized for comparison, not for display. */
18
+ function normalizePath(value) {
19
+ return value.trim().replace(/\\/gu, "/").replace(/\/+$/u, "").toLowerCase();
20
+ }
21
+ function basename(value) {
22
+ const slash = value.lastIndexOf("/");
23
+ return slash < 0 ? value : value.slice(slash + 1);
24
+ }
25
+ /** Display name for a file-backed source: the file name alone, case kept. */
26
+ export function sourceFileName(source) {
27
+ const normalized = (source.path ?? source.uri ?? source.title)
28
+ .trim()
29
+ .replace(/\\/gu, "/");
30
+ const slash = normalized.lastIndexOf("/");
31
+ const name = slash < 0 ? normalized : normalized.slice(slash + 1);
32
+ return name === "" ? source.title : name;
33
+ }
34
+ const NO_REFS = {
35
+ signature: "",
36
+ resolveUrl: () => undefined,
37
+ resolvePath: () => undefined,
38
+ };
39
+ export function buildSourceRefs(sources) {
40
+ if (sources.length === 0)
41
+ return NO_REFS;
42
+ const byUrl = new Map();
43
+ const paths = [];
44
+ for (const source of sources) {
45
+ if (source.uri !== undefined) {
46
+ const key = normalizeUrl(source.uri);
47
+ if (key !== undefined)
48
+ byUrl.set(key, source);
49
+ }
50
+ if (source.path !== undefined) {
51
+ paths.push({ normalized: normalizePath(source.path), source });
52
+ }
53
+ }
54
+ return {
55
+ signature: sources.map((source) => source.id).join("|"),
56
+ resolveUrl(url) {
57
+ const key = normalizeUrl(url);
58
+ return key === undefined ? undefined : byUrl.get(key);
59
+ },
60
+ resolvePath(token) {
61
+ const normalized = normalizePath(token);
62
+ if (normalized === "")
63
+ return undefined;
64
+ const exact = paths.find((path) => path.normalized === normalized);
65
+ if (exact !== undefined)
66
+ return exact.source;
67
+ if (!normalized.includes("/")) {
68
+ // A bare file name is ambiguous the moment two sources share it.
69
+ const named = paths.filter((path) => basename(path.normalized) === normalized);
70
+ return named.length === 1 ? named[0]?.source : undefined;
71
+ }
72
+ // A partial directory path must stay unambiguous the same way.
73
+ const suffix = paths.filter((path) => path.normalized.endsWith(`/${normalized}`));
74
+ return suffix.length === 1 ? suffix[0]?.source : undefined;
75
+ },
76
+ };
77
+ }
78
+ //# sourceMappingURL=source-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-refs.js","sourceRoot":"","sources":["../../../src/client/components/source-refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Small pure projections of the session state shared by surface regions: the
3
+ * composer's status line and the conversation title. Keeping them out of
4
+ * QaSurface leaves that file pure composition.
5
+ */
6
+ /** The composer's status line, or null when nothing is due. */
7
+ export function statusText(state, runningPhrase) {
8
+ if (state.phase === "creating")
9
+ return "Подключаюсь…";
10
+ if (state.phase === "reconnecting")
11
+ return "Связь потерялась. Подключаюсь снова…";
12
+ if (state.phase === "running")
13
+ return runningPhrase;
14
+ return null;
15
+ }
16
+ /** The conversation title derived from the first user prompt, clipped. */
17
+ export function titleFromMessages(state) {
18
+ const firstUser = state.messages.find((message) => message.role === "user");
19
+ if (firstUser === undefined)
20
+ return null;
21
+ const title = firstUser.text.replace(/\s+/gu, " ").trim();
22
+ if (title === "")
23
+ return null;
24
+ if (title.length <= 52)
25
+ return title;
26
+ return `${title.slice(0, 51).trimEnd()}…`;
27
+ }
28
+ //# sourceMappingURL=surface-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface-utils.js","sourceRoot":"","sources":["../../../src/client/components/surface-utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CACxB,KAAqB,EACrB,aAA4B;IAE5B,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,cAAc,CAAC;IACtD,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc;QAChC,OAAO,sCAAsC,CAAC;IAChD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,aAAa,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC5E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { useEffect, useState } from "react";
2
+ import { DEFAULT_THINKING_PHRASES, thinkingPhrase, } from "../../thinking-phrases.js";
3
+ export { DEFAULT_THINKING_PHRASES, thinkingPhrase };
4
+ /** Re-render cadence; a phrase only changes on an interval edge. */
5
+ const CLOCK_TICK_MS = 1_000;
6
+ /**
7
+ * Phrase for a turn that started at `startedAt`. Every reader that passes the
8
+ * same start time and phrase list lands on the same phrase, so the composer
9
+ * hint and the work list never disagree.
10
+ */
11
+ export function useThinkingPhrase(running, startedAt, phrases = DEFAULT_THINKING_PHRASES) {
12
+ const [now, setNow] = useState(() => Date.now());
13
+ useEffect(() => {
14
+ if (!running)
15
+ return;
16
+ setNow(Date.now());
17
+ const timer = setInterval(() => setNow(Date.now()), CLOCK_TICK_MS);
18
+ return () => clearInterval(timer);
19
+ }, [running]);
20
+ if (!running)
21
+ return null;
22
+ return thinkingPhrase(now - (startedAt ?? now), phrases);
23
+ }
24
+ //# sourceMappingURL=thinking-phrases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinking-phrases.js","sourceRoot":"","sources":["../../../src/client/components/thinking-phrases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,CAAC;AAEpD,oEAAoE;AACpE,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,SAA6B,EAC7B,OAAO,GAAsB,wBAAwB;IAErD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,cAAc,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,26 @@
1
+ /** The wire failure's code plus its message — preset composition reasons (a
2
+ * broken loader entry, a missing tool) ride the message and never anywhere
3
+ * else, so collapsing to the code costs the operator the whole diagnosis. */
4
+ function wireFailure(error) {
5
+ const code = typeof error === "object" && error !== null && "code" in error
6
+ ? String(error.code ?? "")
7
+ : "";
8
+ const message = typeof error === "object" && error !== null && "message" in error
9
+ ? String(error.message ?? "")
10
+ : "";
11
+ return message === "" ? code : `${code}: ${message}`;
12
+ }
13
+ /**
14
+ * Ask the QA Host boundary to create a fully composed session. The browser
15
+ * supplies only its account token and cannot select cwd, workspace, owner,
16
+ * preset, model, or permission policy. The resulting session
17
+ * is addressed only here — no prompt can run before the caller attests the
18
+ * composed preset.
19
+ */
20
+ export async function createQaSession(args) {
21
+ const created = await args.createSession(args.token);
22
+ if (!created.ok)
23
+ throw new Error(wireFailure(created.error));
24
+ return created.value;
25
+ }
26
+ //# sourceMappingURL=create-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../src/client/create-session.ts"],"names":[],"mappings":"AAEA;;6EAE6E;AAC7E,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;QAC5D,CAAC,CAAC,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK;QAC/D,CAAC,CAAC,MAAM,CAAE,KAA+B,CAAC,OAAO,IAAI,EAAE,CAAC;QACxD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAGrC;IACC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * QA-facing copy for provider failures, keyed by the stable failure code the
3
+ * host records on retry and turn-end events. Raw provider messages never
4
+ * reach these rows — they can carry stack traces and local paths — so every
5
+ * text here derives from the code alone.
6
+ */
7
+ /** Short cause label used inside the retry row copy. */
8
+ function failureCause(code) {
9
+ switch (code) {
10
+ case "TRANSPORT":
11
+ return "обрыв связи";
12
+ case "STREAM_CLOSED":
13
+ return "поток оборвался";
14
+ case "TIMEOUT":
15
+ return "таймаут провайдера";
16
+ case "RATE_LIMIT":
17
+ return "лимит запросов";
18
+ case "SERVER":
19
+ return "ошибка провайдера";
20
+ case "EMPTY_RESPONSE":
21
+ return "пустой ответ";
22
+ case undefined:
23
+ return "сбой";
24
+ default:
25
+ return `сбой (${code})`;
26
+ }
27
+ }
28
+ /** Terminal turn-failure row shown after the work group. */
29
+ export function turnErrorCopy(code) {
30
+ switch (code) {
31
+ case "TRANSPORT":
32
+ case "STREAM_CLOSED":
33
+ case "TIMEOUT":
34
+ return "Обрыв связи с провайдером. Ответ не сохранился — отправь запрос ещё раз.";
35
+ case "RATE_LIMIT":
36
+ return "Провайдер ограничил частоту запросов — попытки исчерпаны. Попробуй ещё раз через минуту.";
37
+ case "QUOTA":
38
+ return "Квота провайдера исчерпана — сообщи оператору стенда.";
39
+ case "AUTH":
40
+ return "Провайдер отклонил доступ (ключ или права) — сообщи оператору стенда.";
41
+ case "SERVER":
42
+ return "Провайдер вернул ошибку сервера — попытки исчерпаны. Попробуй ещё раз позже.";
43
+ default:
44
+ return "Помощнику не удалось завершить ответ.";
45
+ }
46
+ }
47
+ /** Work-group row for one host-scheduled model-request retry. */
48
+ export function retryWorkCopy(node) {
49
+ const attempt = node.mode === "normal" && typeof node.maxRetries === "number"
50
+ ? `${node.retry} из ${node.maxRetries}`
51
+ : `${node.retry} (без лимита)`;
52
+ switch (node.retryState) {
53
+ case "scheduled": {
54
+ const seconds = Math.max(1, Math.round(node.delayMs / 1_000));
55
+ return `Сбой запроса к провайдеру (${failureCause(node.failureCode)}) — повторная попытка ${attempt} через ${seconds} с`;
56
+ }
57
+ case "started":
58
+ return `Сбой запроса к провайдеру (${failureCause(node.failureCode)}) — повторная попытка ${attempt} выполняется`;
59
+ case "cancelled":
60
+ return `Повторная попытка ${attempt} отменена (ход прерван)`;
61
+ }
62
+ }
63
+ //# sourceMappingURL=failure-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-copy.js","sourceRoot":"","sources":["../../src/client/failure-copy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wDAAwD;AACxD,SAAS,YAAY,CAAC,IAAwB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,OAAO,aAAa,CAAC;QACvB,KAAK,eAAe;YAClB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC;QAC9B,KAAK,YAAY;YACf,OAAO,gBAAgB,CAAC;QAC1B,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC;QAC7B,KAAK,gBAAgB;YACnB,OAAO,cAAc,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,IAAI,GAAG,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,eAAe,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,0EAA0E,CAAC;QACpF,KAAK,YAAY;YACf,OAAO,0FAA0F,CAAC;QACpG,KAAK,OAAO;YACV,OAAO,uDAAuD,CAAC;QACjE,KAAK,MAAM;YACT,OAAO,uEAAuE,CAAC;QACjF,KAAK,QAAQ;YACX,OAAO,8EAA8E,CAAC;QACxF;YACE,OAAO,uCAAuC,CAAC;IACnD,CAAC;AACH,CAAC;AAWD,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QAC3D,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,UAAU,EAAE;QACvC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,eAAe,CAAC;IACnC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,WAAW,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO,8BAA8B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,OAAO,UAAU,OAAO,IAAI,CAAC;QAC3H,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,8BAA8B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,OAAO,cAAc,CAAC;QACpH,KAAK,WAAW;YACd,OAAO,qBAAqB,OAAO,yBAAyB,CAAC;IACjE,CAAC;AACH,CAAC"}