@yadsh/dsh-qa-surface 0.6.1 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +163 -7
  2. package/capability-policy.json +1 -1
  3. package/lib/access/capability-catalog.js +144 -0
  4. package/lib/access/capability-catalog.js.map +1 -0
  5. package/lib/access/model.js +379 -0
  6. package/lib/access/model.js.map +1 -0
  7. package/lib/access/role-repository.js +195 -0
  8. package/lib/access/role-repository.js.map +1 -0
  9. package/lib/access/service.js +380 -0
  10. package/lib/access/service.js.map +1 -0
  11. package/lib/access/skill-metadata.js +234 -0
  12. package/lib/access/skill-metadata.js.map +1 -0
  13. package/lib/account-remotes.js +20 -10
  14. package/lib/account-remotes.js.map +1 -1
  15. package/lib/accounts/errors.js.map +1 -1
  16. package/lib/accounts/file.js.map +1 -1
  17. package/lib/accounts/store.js +202 -3
  18. package/lib/accounts/store.js.map +1 -1
  19. package/lib/admin/conversation-log.js +256 -0
  20. package/lib/admin/conversation-log.js.map +1 -0
  21. package/lib/admin/index.js +17 -0
  22. package/lib/admin/index.js.map +1 -0
  23. package/lib/admin/metrics.js +103 -0
  24. package/lib/admin/metrics.js.map +1 -0
  25. package/lib/admin/paging.js +23 -0
  26. package/lib/admin/paging.js.map +1 -0
  27. package/lib/admin/permissions.js +50 -0
  28. package/lib/admin/permissions.js.map +1 -0
  29. package/lib/admin/quality-store.js +485 -0
  30. package/lib/admin/quality-store.js.map +1 -0
  31. package/lib/admin/queue.js +107 -0
  32. package/lib/admin/queue.js.map +1 -0
  33. package/lib/admin/redaction.js +45 -0
  34. package/lib/admin/redaction.js.map +1 -0
  35. package/lib/admin/service.js +897 -0
  36. package/lib/admin/service.js.map +1 -0
  37. package/lib/admin/session-log.js +142 -0
  38. package/lib/admin/session-log.js.map +1 -0
  39. package/lib/cli.js +9 -6
  40. package/lib/cli.js.map +1 -1
  41. package/lib/client/QaSessionController.js +28 -2
  42. package/lib/client/QaSessionController.js.map +1 -1
  43. package/lib/client/QaSurface.js +143 -5
  44. package/lib/client/QaSurface.js.map +1 -1
  45. package/lib/client/QaTranscriptAdapter.js +1 -0
  46. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  47. package/lib/client/admin/QaAdmin.js +458 -0
  48. package/lib/client/admin/QaAdmin.js.map +1 -0
  49. package/lib/client/admin/format.js +177 -0
  50. package/lib/client/admin/format.js.map +1 -0
  51. package/lib/client/admin/pages/Conversations.js +114 -0
  52. package/lib/client/admin/pages/Conversations.js.map +1 -0
  53. package/lib/client/admin/pages/Overview.js +24 -0
  54. package/lib/client/admin/pages/Overview.js.map +1 -0
  55. package/lib/client/admin/pages/Quality.js +71 -0
  56. package/lib/client/admin/pages/Quality.js.map +1 -0
  57. package/lib/client/admin/pages/Review.js +93 -0
  58. package/lib/client/admin/pages/Review.js.map +1 -0
  59. package/lib/client/admin/pages/Users.js +95 -0
  60. package/lib/client/admin/pages/Users.js.map +1 -0
  61. package/lib/client/admin/routes.js +143 -0
  62. package/lib/client/admin/routes.js.map +1 -0
  63. package/lib/client/admin/shared.js +91 -0
  64. package/lib/client/admin/shared.js.map +1 -0
  65. package/lib/client/admin/styles.js +111 -0
  66. package/lib/client/admin/styles.js.map +1 -0
  67. package/lib/client/components/QaChangelog.js +53 -0
  68. package/lib/client/components/QaChangelog.js.map +1 -1
  69. package/lib/client/components/QaHeader.js +3 -3
  70. package/lib/client/components/QaHeader.js.map +1 -1
  71. package/lib/client/components/QaMessage.js +61 -2
  72. package/lib/client/components/QaMessage.js.map +1 -1
  73. package/lib/client/create-session.js +1 -1
  74. package/lib/client/create-session.js.map +1 -1
  75. package/lib/client/index.js +48 -1
  76. package/lib/client/index.js.map +1 -1
  77. package/lib/client/role/RoleSelector.js +31 -0
  78. package/lib/client/role/RoleSelector.js.map +1 -0
  79. package/lib/client/session-sources.js +37 -1
  80. package/lib/client/session-sources.js.map +1 -1
  81. package/lib/client/settings/card.js +2 -2
  82. package/lib/client/settings/card.js.map +1 -1
  83. package/lib/client/settings/sections.js +0 -1
  84. package/lib/client/settings/sections.js.map +1 -1
  85. package/lib/client/settings-extensions/index.js +1 -0
  86. package/lib/client/settings-extensions/index.js.map +1 -1
  87. package/lib/client/settings-extensions/user-session.js +62 -0
  88. package/lib/client/settings-extensions/user-session.js.map +1 -0
  89. package/lib/client/styles.js +31 -0
  90. package/lib/client/styles.js.map +1 -1
  91. package/lib/client/types.js.map +1 -1
  92. package/lib/client.js +9993 -4848
  93. package/lib/client.js.map +1 -1
  94. package/lib/config-resolvers/defaults.js +0 -2
  95. package/lib/config-resolvers/defaults.js.map +1 -1
  96. package/lib/config.js +0 -249
  97. package/lib/config.js.map +1 -1
  98. package/lib/enforcement/skill-policy.js +172 -0
  99. package/lib/enforcement/skill-policy.js.map +1 -0
  100. package/lib/enforcement/tool-grants.js +151 -0
  101. package/lib/enforcement/tool-grants.js.map +1 -0
  102. package/lib/index.js +224 -42
  103. package/lib/index.js.map +1 -1
  104. package/lib/personal-skills/service.js +10 -3
  105. package/lib/personal-skills/service.js.map +1 -1
  106. package/lib/qa-tools/index.js +4 -0
  107. package/lib/qa-tools/index.js.map +1 -1
  108. package/lib/resolve-config.js +0 -2
  109. package/lib/resolve-config.js.map +1 -1
  110. package/lib/secure-session.js +71 -17
  111. package/lib/secure-session.js.map +1 -1
  112. package/lib/typert.host.js +2237 -202
  113. package/lib/typert.remote-client.d.ts +49 -3
  114. package/lib/typert.remote-client.js +1863 -183
  115. package/lib/types/access/capability-catalog.d.ts +37 -0
  116. package/lib/types/access/model.d.ts +60 -0
  117. package/lib/types/access/role-repository.d.ts +32 -0
  118. package/lib/types/access/service.d.ts +57 -0
  119. package/lib/types/access/skill-metadata.d.ts +53 -0
  120. package/lib/types/account-remotes.d.ts +6 -0
  121. package/lib/types/accounts/errors.d.ts +1 -1
  122. package/lib/types/accounts/file.d.ts +16 -5
  123. package/lib/types/accounts/store.d.ts +83 -3
  124. package/lib/types/admin/conversation-log.d.ts +39 -0
  125. package/lib/types/admin/index.d.ts +24 -0
  126. package/lib/types/admin/metrics.d.ts +29 -0
  127. package/lib/types/admin/paging.d.ts +33 -0
  128. package/lib/types/admin/permissions.d.ts +10 -0
  129. package/lib/types/admin/quality-store.d.ts +82 -0
  130. package/lib/types/admin/queue.d.ts +21 -0
  131. package/lib/types/admin/redaction.d.ts +29 -0
  132. package/lib/types/admin/service.d.ts +105 -0
  133. package/lib/types/admin/session-log.d.ts +53 -0
  134. package/lib/types/client/QaSessionController.d.ts +12 -1
  135. package/lib/types/client/QaSurface.d.ts +7 -1
  136. package/lib/types/client/admin/QaAdmin.d.ts +17 -0
  137. package/lib/types/client/admin/format.d.ts +43 -0
  138. package/lib/types/client/admin/pages/Conversations.d.ts +21 -0
  139. package/lib/types/client/admin/pages/Overview.d.ts +13 -0
  140. package/lib/types/client/admin/pages/Quality.d.ts +18 -0
  141. package/lib/types/client/admin/pages/Review.d.ts +15 -0
  142. package/lib/types/client/admin/pages/Users.d.ts +22 -0
  143. package/lib/types/client/admin/routes.d.ts +60 -0
  144. package/lib/types/client/admin/shared.d.ts +53 -0
  145. package/lib/types/client/admin/styles.d.ts +11 -0
  146. package/lib/types/client/components/QaHeader.d.ts +5 -1
  147. package/lib/types/client/components/QaMessage.d.ts +14 -1
  148. package/lib/types/client/create-session.d.ts +2 -0
  149. package/lib/types/client/role/RoleSelector.d.ts +14 -0
  150. package/lib/types/client/session-sources.d.ts +9 -0
  151. package/lib/types/client/settings/sections.d.ts +0 -1
  152. package/lib/types/client/settings-extensions/index.d.ts +2 -0
  153. package/lib/types/client/settings-extensions/user-session.d.ts +59 -0
  154. package/lib/types/client/types.d.ts +39 -2
  155. package/lib/types/enforcement/skill-policy.d.ts +29 -0
  156. package/lib/types/enforcement/tool-grants.d.ts +84 -0
  157. package/lib/types/index.d.ts +62 -14
  158. package/lib/types/qa-tools/index.d.ts +2 -0
  159. package/lib/types/secure-session.d.ts +10 -1
  160. package/lib/types/types.d.ts +568 -5
  161. package/package.json +2 -2
  162. package/lib/client/settings/sections/documents.js +0 -88
  163. package/lib/client/settings/sections/documents.js.map +0 -1
  164. package/lib/documents/artifacts/ids.js +0 -43
  165. package/lib/documents/artifacts/ids.js.map +0 -1
  166. package/lib/documents/artifacts/manifest.js +0 -66
  167. package/lib/documents/artifacts/manifest.js.map +0 -1
  168. package/lib/documents/artifacts/store.js +0 -169
  169. package/lib/documents/artifacts/store.js.map +0 -1
  170. package/lib/documents/capabilities.js +0 -93
  171. package/lib/documents/capabilities.js.map +0 -1
  172. package/lib/documents/config.js +0 -302
  173. package/lib/documents/config.js.map +0 -1
  174. package/lib/documents/defaults.js +0 -78
  175. package/lib/documents/defaults.js.map +0 -1
  176. package/lib/documents/errors.js +0 -101
  177. package/lib/documents/errors.js.map +0 -1
  178. package/lib/documents/index.js +0 -80
  179. package/lib/documents/index.js.map +0 -1
  180. package/lib/documents/inspect/facts.js +0 -161
  181. package/lib/documents/inspect/facts.js.map +0 -1
  182. package/lib/documents/inspect/zip.js +0 -108
  183. package/lib/documents/inspect/zip.js.map +0 -1
  184. package/lib/documents/markdown/directives.js +0 -135
  185. package/lib/documents/markdown/directives.js.map +0 -1
  186. package/lib/documents/markdown/frontmatter.js +0 -35
  187. package/lib/documents/markdown/frontmatter.js.map +0 -1
  188. package/lib/documents/markdown/normalize.js +0 -113
  189. package/lib/documents/markdown/normalize.js.map +0 -1
  190. package/lib/documents/orchestrator/assets.js +0 -243
  191. package/lib/documents/orchestrator/assets.js.map +0 -1
  192. package/lib/documents/orchestrator/convert-document.js +0 -186
  193. package/lib/documents/orchestrator/convert-document.js.map +0 -1
  194. package/lib/documents/orchestrator/create-document.js +0 -292
  195. package/lib/documents/orchestrator/create-document.js.map +0 -1
  196. package/lib/documents/orchestrator/extract-document.js +0 -162
  197. package/lib/documents/orchestrator/extract-document.js.map +0 -1
  198. package/lib/documents/orchestrator/inspect-document.js +0 -89
  199. package/lib/documents/orchestrator/inspect-document.js.map +0 -1
  200. package/lib/documents/orchestrator/runtime-deps.js +0 -59
  201. package/lib/documents/orchestrator/runtime-deps.js.map +0 -1
  202. package/lib/documents/orchestrator/scope.js +0 -132
  203. package/lib/documents/orchestrator/scope.js.map +0 -1
  204. package/lib/documents/providers/docling.js +0 -247
  205. package/lib/documents/providers/docling.js.map +0 -1
  206. package/lib/documents/providers/libreoffice.js +0 -130
  207. package/lib/documents/providers/libreoffice.js.map +0 -1
  208. package/lib/documents/providers/markitdown.js +0 -89
  209. package/lib/documents/providers/markitdown.js.map +0 -1
  210. package/lib/documents/providers/pandoc.js +0 -161
  211. package/lib/documents/providers/pandoc.js.map +0 -1
  212. package/lib/documents/providers/process.js +0 -164
  213. package/lib/documents/providers/process.js.map +0 -1
  214. package/lib/documents/providers/registry.js +0 -152
  215. package/lib/documents/providers/registry.js.map +0 -1
  216. package/lib/documents/providers/shared.js +0 -75
  217. package/lib/documents/providers/shared.js.map +0 -1
  218. package/lib/documents/runtime.js +0 -114
  219. package/lib/documents/runtime.js.map +0 -1
  220. package/lib/documents/security/file-types.js +0 -188
  221. package/lib/documents/security/file-types.js.map +0 -1
  222. package/lib/documents/security/limits.js +0 -78
  223. package/lib/documents/security/limits.js.map +0 -1
  224. package/lib/documents/security/mime.js +0 -43
  225. package/lib/documents/security/mime.js.map +0 -1
  226. package/lib/documents/security/paths.js +0 -133
  227. package/lib/documents/security/paths.js.map +0 -1
  228. package/lib/documents/templates/registry.js +0 -147
  229. package/lib/documents/templates/registry.js.map +0 -1
  230. package/lib/documents/templates/resolver.js +0 -59
  231. package/lib/documents/templates/resolver.js.map +0 -1
  232. package/lib/documents/tools/convert.js +0 -125
  233. package/lib/documents/tools/convert.js.map +0 -1
  234. package/lib/documents/tools/create.js +0 -187
  235. package/lib/documents/tools/create.js.map +0 -1
  236. package/lib/documents/tools/index.js +0 -41
  237. package/lib/documents/tools/index.js.map +0 -1
  238. package/lib/documents/tools/inspect.js +0 -135
  239. package/lib/documents/tools/inspect.js.map +0 -1
  240. package/lib/documents/tools/shared.js +0 -88
  241. package/lib/documents/tools/shared.js.map +0 -1
  242. package/lib/documents/tools/to-markdown.js +0 -125
  243. package/lib/documents/tools/to-markdown.js.map +0 -1
  244. package/lib/documents/types.js +0 -12
  245. package/lib/documents/types.js.map +0 -1
  246. package/lib/types/client/settings/sections/documents.d.ts +0 -13
  247. package/lib/types/documents/artifacts/ids.d.ts +0 -14
  248. package/lib/types/documents/artifacts/manifest.d.ts +0 -32
  249. package/lib/types/documents/artifacts/store.d.ts +0 -67
  250. package/lib/types/documents/capabilities.d.ts +0 -32
  251. package/lib/types/documents/config.d.ts +0 -27
  252. package/lib/types/documents/defaults.d.ts +0 -161
  253. package/lib/types/documents/errors.d.ts +0 -42
  254. package/lib/types/documents/index.d.ts +0 -63
  255. package/lib/types/documents/inspect/facts.d.ts +0 -43
  256. package/lib/types/documents/inspect/zip.d.ts +0 -28
  257. package/lib/types/documents/markdown/directives.d.ts +0 -39
  258. package/lib/types/documents/markdown/frontmatter.d.ts +0 -15
  259. package/lib/types/documents/markdown/normalize.d.ts +0 -30
  260. package/lib/types/documents/orchestrator/assets.d.ts +0 -55
  261. package/lib/types/documents/orchestrator/convert-document.d.ts +0 -25
  262. package/lib/types/documents/orchestrator/create-document.d.ts +0 -18
  263. package/lib/types/documents/orchestrator/extract-document.d.ts +0 -24
  264. package/lib/types/documents/orchestrator/inspect-document.d.ts +0 -12
  265. package/lib/types/documents/orchestrator/runtime-deps.d.ts +0 -43
  266. package/lib/types/documents/orchestrator/scope.d.ts +0 -52
  267. package/lib/types/documents/providers/docling.d.ts +0 -54
  268. package/lib/types/documents/providers/libreoffice.d.ts +0 -40
  269. package/lib/types/documents/providers/markitdown.d.ts +0 -28
  270. package/lib/types/documents/providers/pandoc.d.ts +0 -42
  271. package/lib/types/documents/providers/process.d.ts +0 -54
  272. package/lib/types/documents/providers/registry.d.ts +0 -68
  273. package/lib/types/documents/providers/shared.d.ts +0 -27
  274. package/lib/types/documents/runtime.d.ts +0 -59
  275. package/lib/types/documents/security/file-types.d.ts +0 -39
  276. package/lib/types/documents/security/limits.d.ts +0 -24
  277. package/lib/types/documents/security/mime.d.ts +0 -13
  278. package/lib/types/documents/security/paths.d.ts +0 -38
  279. package/lib/types/documents/templates/registry.d.ts +0 -50
  280. package/lib/types/documents/templates/resolver.d.ts +0 -30
  281. package/lib/types/documents/tools/convert.d.ts +0 -9
  282. package/lib/types/documents/tools/create.d.ts +0 -14
  283. package/lib/types/documents/tools/index.d.ts +0 -33
  284. package/lib/types/documents/tools/inspect.d.ts +0 -9
  285. package/lib/types/documents/tools/shared.d.ts +0 -77
  286. package/lib/types/documents/tools/to-markdown.d.ts +0 -12
  287. package/lib/types/documents/types.d.ts +0 -294
@@ -0,0 +1,111 @@
1
+ /**
2
+ * The administrative console's stylesheet. Colors come only from the QA
3
+ * palette tokens or the host's themed aliases, so light, dark and system themes
4
+ * stay coherent; the stylesheet test enforces that rule.
5
+ *
6
+ * Layout intent: a dense table surface for triage, a side panel for the review
7
+ * form, and no modal windows — the console is a place to work through a list,
8
+ * not a wizard.
9
+ */
10
+ export const QA_ADMIN_CONSOLE_STYLES = String.raw `
11
+ .dsh-qa-admin__nav-group{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}
12
+ .dsh-qa-admin__page{display:flex;flex-direction:column;min-width:0;gap:20px}
13
+ .dsh-qa-admin__panel{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3)}
14
+ .dsh-qa-admin__panel h2{margin:0;font-size:15px}
15
+ .dsh-qa-admin__panel h3{margin:14px 0 6px;font-size:13px;color:var(--dsw-alias-label-secondary)}
16
+ .dsh-qa-admin__panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
17
+ .dsh-qa-admin__columns{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:18px;align-items:start}
18
+ .dsh-qa-admin__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
19
+ .dsh-qa-admin__metric{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3)}
20
+ .dsh-qa-admin__metric-label{color:var(--dsw-alias-label-tertiary);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
21
+ .dsh-qa-admin__metric-value{font-size:26px;line-height:1.2}
22
+ .dsh-qa-admin__metric-hint{color:var(--dsw-alias-label-tertiary);font-size:11px}
23
+ .dsh-qa-admin__filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;padding:12px 14px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-2)}
24
+ .dsh-qa-admin__filter{display:flex;flex-direction:column;gap:4px;color:var(--dsw-alias-label-tertiary);font-size:11px}
25
+ .dsh-qa-admin__filter>input,.dsh-qa-admin__filter>select,.dsh-qa-admin__filter>textarea{min-width:170px}
26
+ .dsh-qa-admin__filter>textarea{font-family:inherit;font-size:13px;resize:vertical}
27
+ .dsh-qa-admin__table{width:100%;border-collapse:collapse;font-size:13px}
28
+ .dsh-qa-admin__table th{position:sticky;top:0;padding:9px 10px;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-tertiary);font-size:11px;text-align:left;text-transform:uppercase;letter-spacing:.05em}
29
+ .dsh-qa-admin__table td{padding:10px;border-bottom:1px solid var(--dsw-alias-border-l2);vertical-align:top}
30
+ .dsh-qa-admin__table td small{display:block;margin-top:2px;color:var(--dsw-alias-label-tertiary);font-size:11px}
31
+ .dsh-qa-admin__table tr:hover td{background:var(--dsw-alias-interactive-bg-hover)}
32
+ .dsh-qa-admin__badge{display:inline-block;white-space:nowrap;padding:1px 8px;border-radius:999px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:500;line-height:17px}
33
+ .dsh-qa-admin__badge--positive{background:var(--dsh-qa-success10);color:var(--dsh-qa-success)}
34
+ .dsh-qa-admin__badge--negative{background:var(--dsh-qa-error10);color:var(--dsh-qa-error)}
35
+ .dsh-qa-admin__badge--warning{background:var(--dsh-qa-warning10);color:var(--dsh-qa-warning-hover)}
36
+ .dsh-qa-admin__pager{display:flex;align-items:center;gap:10px;color:var(--dsw-alias-label-tertiary);font-size:12px}
37
+ .dsh-qa-admin__pager>span{margin-right:auto}
38
+ .dsh-qa-admin__stamp{color:var(--dsw-alias-label-secondary);font-size:12px}
39
+ .dsh-qa-admin__mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}
40
+ .dsh-qa-admin__alerts{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
41
+ .dsh-qa-admin__alert{padding:8px 12px;border-radius:9px;border:1px solid var(--dsw-alias-border-l2);font-size:13px}
42
+ .dsh-qa-admin__alert--critical{border-color:var(--dsh-qa-error30);background:var(--dsh-qa-error10)}
43
+ .dsh-qa-admin__alert--warning{border-color:var(--dsh-qa-warning30);background:var(--dsh-qa-warning10)}
44
+ .dsh-qa-admin__recent{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
45
+ .dsh-qa-admin__recent li{display:grid;grid-template-columns:20px minmax(0,1fr) 140px 120px;gap:8px;align-items:center;font-size:13px}
46
+ .dsh-qa-admin__recent button{text-align:left;border-color:transparent;background:transparent;padding:2px 0}
47
+ .dsh-qa-admin__recent time{color:var(--dsw-alias-label-tertiary);font-size:11px}
48
+ .dsh-qa-admin__queue{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
49
+ .dsh-qa-admin__queue-item{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--dsw-alias-border-l2);border-left-width:3px;border-radius:10px;background:var(--dsw-alias-bg-layer-3)}
50
+ .dsh-qa-admin__queue-item--high{border-left-color:var(--dsh-qa-error)}
51
+ .dsh-qa-admin__queue-item--normal{border-left-color:var(--dsh-qa-warning)}
52
+ .dsh-qa-admin__queue-item--low{border-left-color:var(--dsw-alias-border-l2)}
53
+ .dsh-qa-admin__queue-head{display:flex;align-items:center;gap:10px;color:var(--dsw-alias-label-tertiary);font-size:11px}
54
+ .dsh-qa-admin__queue-head time{margin-left:auto}
55
+ .dsh-qa-admin__queue-priority{font-weight:600;color:var(--dsw-alias-label-secondary);text-transform:uppercase;letter-spacing:.05em}
56
+ .dsh-qa-admin__queue-item>button{align-self:flex-start;padding:0;border:0;background:transparent;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:600;text-align:left}
57
+ .dsh-qa-admin__queue-owner{color:var(--dsw-alias-label-tertiary);font-size:12px}
58
+ .dsh-qa-admin__queue-issues{margin:0;color:var(--dsw-alias-label-secondary);font-size:12px}
59
+ .dsh-qa-admin__conversation{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:20px;align-items:start}
60
+ .dsh-qa-admin__transcript{display:flex;flex-direction:column;gap:14px;min-width:0}
61
+ .dsh-qa-admin__runtime{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-2)}
62
+ .dsh-qa-admin__runtime h2{margin:0;font-size:13px;color:var(--dsw-alias-label-secondary)}
63
+ .dsh-qa-admin__runtime summary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-size:12px}
64
+ .dsh-qa-admin__message{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3)}
65
+ .dsh-qa-admin__message--user{background:var(--dsw-alias-bg-layer-2)}
66
+ .dsh-qa-admin__message--highlighted{border-color:var(--dsh-qa-accent);box-shadow:0 0 0 2px var(--dsh-qa-accent-soft)}
67
+ .dsh-qa-admin__message>header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--dsw-alias-label-tertiary);font-size:11px}
68
+ .dsh-qa-admin__message>header strong{color:var(--dsw-alias-label-secondary);font-size:12px}
69
+ .dsh-qa-admin__message-text{margin:0;font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
70
+ .dsh-qa-admin__usage{color:var(--dsw-alias-label-tertiary)}
71
+ .dsh-qa-admin__comment{margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;font-style:italic}
72
+ .dsh-qa-admin__tools>button{display:inline-flex;align-items:center;gap:5px;padding:2px 0;border:0;background:transparent;color:var(--dsw-alias-label-secondary);font-size:12px}
73
+ .dsh-qa-admin__disclosure{flex:none;transition:transform .16s}
74
+ .dsh-qa-admin__disclosure--open{transform:rotate(180deg)}
75
+ .dsh-qa-admin__tools ol{display:flex;flex-direction:column;gap:8px;margin:8px 0 0;padding:0;list-style:none}
76
+ .dsh-qa-admin__tools li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-2);font-size:12px}
77
+ .dsh-qa-admin__tools pre{flex-basis:100%;margin:0;padding:8px;border-radius:6px;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:200px;overflow:auto}
78
+ .dsh-qa-admin__review{display:flex;flex-direction:column;gap:12px;position:sticky;top:0;padding:16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-2)}
79
+ .dsh-qa-admin__review h2{margin:0;font-size:15px}
80
+ .dsh-qa-admin__reviews{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
81
+ .dsh-qa-admin__reviews li{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px solid var(--dsw-alias-border-l2);border-radius:9px;font-size:12px}
82
+ .dsh-qa-admin__reviews li>div{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--dsw-alias-label-tertiary);font-size:11px}
83
+ .dsh-qa-admin__reviews p{margin:0;color:var(--dsw-alias-label-secondary)}
84
+ .dsh-qa-admin__issues{display:flex;flex-direction:column;gap:10px;margin:0;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:10px}
85
+ .dsh-qa-admin__issues legend{padding:0 6px;color:var(--dsw-alias-label-tertiary);font-size:11px}
86
+ .dsh-qa-admin__issues h4{margin:6px 0 4px;color:var(--dsw-alias-label-tertiary);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
87
+ .dsh-qa-admin__issues label{display:flex;align-items:center;gap:6px;font-size:12px}
88
+ .dsh-qa-admin__checks,.dsh-qa-admin__effective,.dsh-qa-admin__issues-list,.dsh-qa-admin__trend{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
89
+ .dsh-qa-admin__checks label{display:flex;align-items:center;gap:6px;font-size:13px}
90
+ .dsh-qa-admin__effective li{display:flex;justify-content:space-between;gap:10px;font-size:12px}
91
+ .dsh-qa-admin__effective span{color:var(--dsw-alias-label-tertiary)}
92
+ .dsh-qa-admin__issues-list li,.dsh-qa-admin__trend li{display:flex;justify-content:space-between;gap:10px;font-size:12px}
93
+ .dsh-qa-admin__trend li span:first-child{color:var(--dsw-alias-label-tertiary)}
94
+ .dsh-qa-admin__facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;margin:0;font-size:12px}
95
+ .dsh-qa-admin__facts--wide{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 20px;padding:14px 16px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px}
96
+ .dsh-qa-admin__facts--wide dd{margin-bottom:6px}
97
+ .dsh-qa-admin__facts dt{color:var(--dsw-alias-label-tertiary)}
98
+ .dsh-qa-admin__facts dd{margin:0;color:var(--dsw-alias-label-primary)}
99
+ .dsh-qa-admin__actions{display:flex;flex-wrap:wrap;gap:8px}
100
+ .dsh-qa-feedback{display:flex;flex-direction:column;gap:8px;margin-top:10px;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:10px;background:var(--dsw-alias-bg-layer-2);font-size:12px}
101
+ .dsh-qa-feedback>strong{color:var(--dsw-alias-label-secondary);font-size:12px}
102
+ .dsh-qa-feedback__reasons{display:flex;flex-wrap:wrap;gap:4px 14px}
103
+ .dsh-qa-feedback__reasons label{display:flex;align-items:center;gap:6px;color:var(--dsw-alias-label-secondary)}
104
+ .dsh-qa-feedback textarea{width:100%;padding:6px 8px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-specific-input-major);color:var(--dsw-alias-label-primary);font:inherit;font-size:12px;resize:vertical}
105
+ .dsh-qa-feedback__actions{display:flex;gap:8px}
106
+ .dsh-qa-feedback__actions button{padding:5px 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);cursor:pointer}
107
+ .dsh-qa-feedback__actions button[type="submit"]{border-color:transparent;background:var(--dsh-qa-accent);color:var(--dsh-qa-accent-contrast);font-weight:600}
108
+ @media (max-width:1100px){.dsh-qa-admin__conversation{grid-template-columns:minmax(0,1fr)}.dsh-qa-admin__columns{grid-template-columns:minmax(0,1fr)}.dsh-qa-admin__review{position:static}}
109
+ @media (max-width:760px){.dsh-qa-admin__recent li{grid-template-columns:20px minmax(0,1fr)}}
110
+ `;
111
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/client/admin/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGhD,CAAC"}
@@ -2,6 +2,59 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { QaModal } from "./QaModal.js";
3
3
  export const QA_VERSION = __DSH_QA_VERSION__;
4
4
  export const QA_CHANGELOG = [
5
+ {
6
+ version: "0.7.1",
7
+ date: "2026-09-16",
8
+ sections: [
9
+ {
10
+ title: "Исправления",
11
+ items: [
12
+ "В консоли администратора открываются все разделы, а не только «Обзор»: «Пользователи», «Саброли», «Общие возможности», «Навыки», «Разговоры», «Очередь разбора», «Обратная связь», «Аналитика» и «Аудит». Раньше переход в любой раздел закрывал консоль и возвращал в чат, а ссылка на конкретный разговор или сообщение вместо разбора открывала обычный чат. Каждый такой переход ещё и оставлял в стенде пустой чат, попадавший в счётчики разговоров; переходы внутри консоли чатов больше не создают.",
13
+ ],
14
+ },
15
+ {
16
+ title: "Прочее",
17
+ items: [
18
+ "Внутренняя доработка для плагинов стенда: карточка плагина в настройках DSH теперь может узнать, вошёл ли пользователь в QA, и работать с его подключениями от его имени — на этом подключения к рабочим сервисам показываются и в списке плагинов. Интерфейс QA это не меняет: вход, чаты и настройки работают как раньше, а без входа карточка подключений ничего не показывает.",
19
+ ],
20
+ },
21
+ ],
22
+ },
23
+ {
24
+ version: "0.7.0",
25
+ date: "2026-09-16",
26
+ sections: [
27
+ {
28
+ title: "Новое",
29
+ items: [
30
+ "В QA появился выбор саброли агента: администратор отдельно настраивает общие и ролевые инструменты и навыки, назначает доступ пользователям и видит итоговый набор возможностей. Пользователь с несколькими доступными профилями выбирает роль в шапке чата, а смена роли после начала разговора создаёт новый чат.",
31
+ "Консоль администратора живёт на странице /qa/admin: администратор открывает её кнопкой «Администрирование» в шапке, ревьюеру доступен тот же адрес. Там управление сабролями, назначения пользователей, журнал изменений и предварительный просмотр от имени роли с настоящей серверной политикой.",
32
+ "Политика применяется на сервере: запрещённые инструменты скрыты и блокируются перед выполнением, а каталог и загрузчик навыков показывают только разрешённые текущей саброли навыки.",
33
+ "У агента появился инструмент «документ по ссылке»: он забирает документ или вложение по адресу (например, файл из статьи вики) и сохраняет прочитанный текст в рабочую папку чата отдельным документом. Источник читается теми же правилами и правами, что и обычное чтение страниц, поэтому доступного агент не получает больше; неподдерживаемый формат и отказ доступа приходят с причиной, а размер сохранённого и показанного текста ограничен настройками стенда.",
34
+ "Навык сам описывает, кому он доступен и какие инструменты ему нужны: аудитория и требования живут в обычном блоке metadata файла SKILL.md, поэтому навык остаётся обычным навыком DSH вне QA-стенда. Навык без такого блока никому не выдаётся автоматически — администратор назначает его вручную.",
35
+ "Инструменты саброли разделены на «всегда доступные» и «выдаваемые навыком»: вторые не занимают список инструментов модели, пока навык не загружен, и выдаются только в пределах разрешённого роли. Загрузка инструкций и выдача инструментов — одна операция: строгий навык не активируется, если хотя бы одного инструмента не хватает, а остальные загружаются с предупреждением о том, чего не получили.",
36
+ "Инструменты выдаются и по вызову навыка моделью, и по вводу /имя-навыка: оба пути активируют один и тот же набор, а навык вне аудитории саброли отзывается до сборки шага. Несколько загруженных навыков объединяют свои инструменты.",
37
+ "На странице «Навыки» видно объявленную и фактическую аудиторию, требуемые инструменты и состояние навыка (в порядке, ограничен, заблокирован). Назначения навыка хранятся отдельно от файла: администратор может добавить роль, отозвать объявленный доступ, включить навык всем сабролям или отключить его, не изменяя SKILL.md.",
38
+ "Каждая активация навыка записывается в историю сессии — что запрошено, что выдано и что отклонено, — чтобы разбор разговора видел реальные возможности того момента.",
39
+ "В админке появился раздел «Пользователи»: видно роль доступа (администратор, ревьюер, пользователь), статус, назначенные профили QA и активность. Пользователя можно отключить и снова включить — история его разговоров при этом сохраняется, а профиль доступа настраивается отдельно от административной роли.",
40
+ "Раздел «Разговоры» показывает все чаты стенда с фильтрами по пользователю, профилю, датам, оценкам и состоянию разбора. Внутри разговора видны сообщения в том порядке, в котором они были, свёрнутые вызовы инструментов с аргументами, результатом и ошибками, а также снимок того, какие инструменты и навыки были доступны агенту в тот момент — чтобы разбор старого ответа опирался на тогдашние возможности, а не на текущие настройки. Ссылку можно дать на конкретное сообщение.",
41
+ "Под ответом ассистента можно поставить 👍 или 👎. При 👎 необязательно выбрать, что именно пошло не так, и оставить комментарий — сама оценка сохраняется сразу, анкета не блокирует её. Оценка относится к конкретному сообщению и переживает перезагрузку страницы и смену профиля.",
42
+ "Очередь разбора собирает то, что требует внимания: негативные оценки, разговоры, отправленные на разбор вручную, и сбои инструментов. Ревьюер отмечает проблемы по темам (ответ, контекст, инструменты, навыки, доступ), ставит важность, пишет заметки и указывает, куда направить исправление — в промпт, навык, инструмент, базу знаний, роль или модель. Разобранный разговор уходит из очереди, а решение «нужно вернуться» оставляет его.",
43
+ "Раздел «Аналитика» показывает долю оценённых ответов, положительную долю по профилям QA и по дням, распределение проблем по вердиктам ревьюеров и счётчик неразобранных негативных оценок. Показатели называются сигналом удовлетворённости пользователей, а не точностью ответов.",
44
+ "«Аудит» — одна лента изменений: роли доступа, отключение и включение пользователей, назначения профилей QA, правки сабролей и общих возможностей, разборы. У каждой записи видно, кто её сделал, когда и что изменилось.",
45
+ "Права проверяются на сервере для каждого действия: ревьюер видит и разбирает все разговоры, но не управляет пользователями, ролями и настройками стенда, а обычный пользователь не может открыть чужой разговор.",
46
+ "Конвейер документов переехал в отдельный плагин: он больше не входит в состав QA-поверхности, настраивается в своей карточке «Документы» и требует своего пакета на стенде. Для чатов ничего не изменилось — те же инструменты, тот же список разрешённых и та же папка документов; старые настройки документов под QA-поверхностью игнорируются, о чём сервер пишет предупреждение в лог.",
47
+ ],
48
+ },
49
+ {
50
+ title: "Исправления",
51
+ items: [
52
+ "Личный каталог навыков аккаунта создаётся автоматически вместе с каталогом самого аккаунта: и первый чат в новом каталоге, и первое открытие раздела «Навыки» оставляют на месте рабочий каталог навыков, поэтому навык можно положить файлом заранее, а в лог больше не пишется предупреждение об отсутствующем каталоге слежения при каждом старте чата.",
53
+ "Если сервер отказал в выдаче сохранённых источников чата, браузер теперь сообщает причину в консоль, а не показывает пустой список источников как у чата, в котором их действительно не было. Сообщение выводится один раз на причину, а не на каждое обновление страницы.",
54
+ ],
55
+ },
56
+ ],
57
+ },
5
58
  {
6
59
  version: "0.6.1",
7
60
  date: "2026-09-15",
@@ -1 +1 @@
1
- {"version":3,"file":"QaChangelog.js","sourceRoot":"","sources":["../../../src/client/components/QaChangelog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaChangelog.js","sourceRoot":"","sources":["../../../src/client/components/QaChangelog.tsx"],"names":[],"mappings":"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"}
@@ -18,11 +18,11 @@ function RobotBadge() {
18
18
  export function QaSubagentBanner({ onClose, }) {
19
19
  return (_jsxs("div", { className: "dsh-qa-agentview", role: "status", children: [_jsx(RobotBadge, {}), _jsx("span", { children: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u0430" }), _jsx("button", { type: "button", onClick: onClose, children: "\u2190 \u0412 \u0447\u0430\u0442" })] }));
20
20
  }
21
- export function QaHeader({ logoUrl, title, viewingSubagent, onCloseSubagent, agentPreset, agentCount, agentsOpen, onToggleAgents, sourcesVisible, sourcesCount, sourcesComplete, sourcesOpen, onOpenSources, fileCount, filesOpen, onOpenFiles, panelLauncher, showReset, resetDisabled, onReset, }) {
22
- return (_jsx("header", { className: "dsh-qa-header", children: _jsxs("div", { className: "dsh-qa-header__inner", children: [_jsxs("div", { className: "dsh-qa-header__title-row", children: [logoUrl === null ? null : (_jsx("img", { className: "dsh-qa-header__logo", src: logoUrl, alt: "" })), title === null ? null : _jsx("h1", { title: title, children: title }), viewingSubagent ? (_jsxs("span", { className: "dsh-qa-header__viewing", children: [_jsx(RobotBadge, {}), "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u0430", _jsx("button", { type: "button", className: "dsh-qa-header__back", onClick: onCloseSubagent, children: "\u2190 \u0412 \u0447\u0430\u0442" })] })) : (_jsxs("span", { className: "dsh-qa-header__mode", children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "3.25", r: "1.5" }), _jsx("circle", { cx: "4", cy: "11.75", r: "1.5" }), _jsx("circle", { cx: "12", cy: "11.75", r: "1.5" }), _jsx("path", { d: "M8 4.75v2.5m0 0H4v3m4-3h4v3" })] }), modeLabel(agentPreset)] })), _jsxs("button", { type: "button", className: "dsh-qa-header__agents", disabled: agentCount === 0, "aria-expanded": agentsOpen, onClick: onToggleAgents, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5.5", width: "10", height: "7", rx: "1.75" }), _jsx("path", { d: "M8 3v2.5M6.2 9h.01M9.8 9h.01M6.2 11h3.6" })] }), "\u0410\u0433\u0435\u043D\u0442\u044B", agentCount === 0 ? null : ` (${agentCount})`] }), sourcesVisible ? (_jsxs("button", { type: "button", className: "dsh-qa-header__sources", disabled: sourcesCount === 0 && sourcesComplete, "aria-expanded": sourcesOpen, onClick: onOpenSources, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "5.75" }), _jsx("path", { d: "M2.25 8h11.5M8 2.25c1.6 1.55 2.4 3.5 2.4 5.75S9.6 12.2 8 13.75C6.4 12.2 5.6 10.25 5.6 8S6.4 3.8 8 2.25Z" })] }), "\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438", sourcesCount === 0 && sourcesComplete
21
+ export function QaHeader({ logoUrl, title, viewingSubagent, onCloseSubagent, agentPreset, roleSelector, administration, agentCount, agentsOpen, onToggleAgents, sourcesVisible, sourcesCount, sourcesComplete, sourcesOpen, onOpenSources, fileCount, filesOpen, onOpenFiles, panelLauncher, showReset, resetDisabled, onReset, }) {
22
+ return (_jsx("header", { className: "dsh-qa-header", children: _jsxs("div", { className: "dsh-qa-header__inner", children: [_jsxs("div", { className: "dsh-qa-header__title-row", children: [logoUrl === null ? null : (_jsx("img", { className: "dsh-qa-header__logo", src: logoUrl, alt: "" })), title === null ? null : _jsx("h1", { title: title, children: title }), viewingSubagent ? (_jsxs("span", { className: "dsh-qa-header__viewing", children: [_jsx(RobotBadge, {}), "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u0430", _jsx("button", { type: "button", className: "dsh-qa-header__back", onClick: onCloseSubagent, children: "\u2190 \u0412 \u0447\u0430\u0442" })] })) : (_jsxs("span", { className: "dsh-qa-header__mode", children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "3.25", r: "1.5" }), _jsx("circle", { cx: "4", cy: "11.75", r: "1.5" }), _jsx("circle", { cx: "12", cy: "11.75", r: "1.5" }), _jsx("path", { d: "M8 4.75v2.5m0 0H4v3m4-3h4v3" })] }), modeLabel(agentPreset)] })), roleSelector, _jsxs("button", { type: "button", className: "dsh-qa-header__agents", disabled: agentCount === 0, "aria-expanded": agentsOpen, onClick: onToggleAgents, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5.5", width: "10", height: "7", rx: "1.75" }), _jsx("path", { d: "M8 3v2.5M6.2 9h.01M9.8 9h.01M6.2 11h3.6" })] }), "\u0410\u0433\u0435\u043D\u0442\u044B", agentCount === 0 ? null : ` (${agentCount})`] }), sourcesVisible ? (_jsxs("button", { type: "button", className: "dsh-qa-header__sources", disabled: sourcesCount === 0 && sourcesComplete, "aria-expanded": sourcesOpen, onClick: onOpenSources, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "5.75" }), _jsx("path", { d: "M2.25 8h11.5M8 2.25c1.6 1.55 2.4 3.5 2.4 5.75S9.6 12.2 8 13.75C6.4 12.2 5.6 10.25 5.6 8S6.4 3.8 8 2.25Z" })] }), "\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438", sourcesCount === 0 && sourcesComplete
23
23
  ? null
24
24
  : ` (${sourcesCount})`] })) : null, _jsxs("button", { type: "button", className: showReset
25
25
  ? "dsh-qa-header__files"
26
- : "dsh-qa-header__files dsh-qa-header__files--end", disabled: fileCount === 0, "aria-expanded": filesOpen, onClick: onOpenFiles, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("path", { d: "M9.25 2.5H4.75A1.25 1.25 0 0 0 3.5 3.75v8.5a1.25 1.25 0 0 0 1.25 1.25h6.5a1.25 1.25 0 0 0 1.25-1.25V5.75L9.25 2.5Z" }), _jsx("path", { d: "M9.25 2.5v3.25h3.25M6 8.5h4M6 11h2.5" })] }), "\u0424\u0430\u0439\u043B\u044B", fileCount === 0 ? null : ` (${fileCount})`] }), showReset ? (_jsx("button", { type: "button", className: "dsh-qa-header__reset", disabled: resetDisabled, onClick: onReset, children: "\u041D\u043E\u0432\u044B\u0439 \u0447\u0430\u0442" })) : null, panelLauncher] }), _jsx("div", { className: "dsh-qa-header__tabs", "aria-label": "\u0412\u0438\u0434 \u0431\u0435\u0441\u0435\u0434\u044B", children: _jsx("span", { "aria-current": "page", children: "\u0427\u0430\u0442" }) })] }) }));
26
+ : "dsh-qa-header__files dsh-qa-header__files--end", disabled: fileCount === 0, "aria-expanded": filesOpen, onClick: onOpenFiles, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("path", { d: "M9.25 2.5H4.75A1.25 1.25 0 0 0 3.5 3.75v8.5a1.25 1.25 0 0 0 1.25 1.25h6.5a1.25 1.25 0 0 0 1.25-1.25V5.75L9.25 2.5Z" }), _jsx("path", { d: "M9.25 2.5v3.25h3.25M6 8.5h4M6 11h2.5" })] }), "\u0424\u0430\u0439\u043B\u044B", fileCount === 0 ? null : ` (${fileCount})`] }), showReset ? (_jsx("button", { type: "button", className: "dsh-qa-header__reset", disabled: resetDisabled, onClick: onReset, children: "\u041D\u043E\u0432\u044B\u0439 \u0447\u0430\u0442" })) : null, administration === undefined ? null : (_jsx("button", { type: "button", className: "dsh-qa-header__admin", onClick: administration.onOpen, children: "\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435" })), panelLauncher] }), _jsx("div", { className: "dsh-qa-header__tabs", "aria-label": "\u0412\u0438\u0434 \u0431\u0435\u0441\u0435\u0434\u044B", children: _jsx("span", { "aria-current": "page", children: "\u0427\u0430\u0442" }) })] }) }));
27
27
  }
28
28
  //# sourceMappingURL=QaHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QaHeader.js","sourceRoot":"","sources":["../../../src/client/components/QaHeader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaHeader.js","sourceRoot":"","sources":["../../../src/client/components/QaHeader.tsx"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ function QaAttachedImage({ image, resolve, }) {
36
36
  }
37
37
  return (_jsx("a", { href: url, target: "_blank", rel: "noreferrer", children: _jsx("img", { className: "dsh-qa-message__image", src: url, alt: "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u043E\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435" }) }));
38
38
  }
39
+ import { FEEDBACK_REASON_LABELS } from "../admin/format.js";
39
40
  import { formatDayTime, formatSeconds } from "./format.js";
40
41
  import { Markdown } from "./Markdown.js";
41
42
  import { QaWorkGroup } from "./QaWorkGroup.js";
@@ -119,6 +120,33 @@ function sameFiles(a, b) {
119
120
  file.name === b[index].name &&
120
121
  file.bytes === b[index].bytes);
121
122
  }
123
+ const REASONS = [
124
+ "incorrect",
125
+ "instruction_not_followed",
126
+ "missing_information",
127
+ "outdated_information",
128
+ "tool_issue",
129
+ "too_verbose",
130
+ "too_short",
131
+ "other",
132
+ ];
133
+ /**
134
+ * "What went wrong?" — optional detail on a down-vote.
135
+ *
136
+ * The rating is already recorded by the time this renders, so both buttons let
137
+ * the user out immediately: an unanswered survey costs a rating, and a rating
138
+ * lost is a quality signal lost.
139
+ */
140
+ function FeedbackReasonForm(props) {
141
+ const [reasons, setReasons] = useState([]);
142
+ const [comment, setComment] = useState("");
143
+ return (_jsxs("form", { className: "dsh-qa-feedback", onSubmit: (event) => {
144
+ event.preventDefault();
145
+ props.onSubmit(reasons, comment);
146
+ }, children: [_jsx("strong", { children: "\u0427\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A?" }), _jsx("div", { className: "dsh-qa-feedback__reasons", children: REASONS.map((reason) => (_jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: reasons.includes(reason), onChange: () => setReasons((current) => current.includes(reason)
147
+ ? current.filter((value) => value !== reason)
148
+ : [...current, reason]) }), FEEDBACK_REASON_LABELS[reason]] }, reason))) }), _jsx("textarea", { value: comment, rows: 2, placeholder: "\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E)", onChange: (event) => setComment(event.currentTarget.value) }), _jsxs("div", { className: "dsh-qa-feedback__actions", children: [_jsx("button", { type: "submit", children: "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C" }), _jsx("button", { type: "button", onClick: props.onSkip, children: "\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C" })] })] }));
149
+ }
122
150
  function readRatings(stateKey) {
123
151
  if (stateKey === undefined)
124
152
  return {};
@@ -163,10 +191,12 @@ function assistantMeta(message) {
163
191
  }
164
192
  return parts;
165
193
  }
166
- export const QaMessage = memo(function QaMessage({ message, renderMarkdown, showTimestamp, stateKey, onRegenerate, resolveImage, onOpenSources, onSourceDetail, thinkingPhrases, }) {
194
+ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, showTimestamp, stateKey, onRegenerate, resolveImage, onOpenSources, onSourceDetail, thinkingPhrases, onRateFeedback, }) {
167
195
  const [copied, setCopied] = useState(false);
168
196
  const copiedTimer = useRef(undefined);
169
197
  const [rating, setRating] = useState(null);
198
+ // The negative flow asks why, once, without blocking the rating itself.
199
+ const [askingWhy, setAskingWhy] = useState(false);
170
200
  // Source-footnote registry, cached by the source-id set so the memoized
171
201
  // Markdown keeps one resolver identity across streaming frames.
172
202
  const refsCache = useRef({
@@ -216,10 +246,30 @@ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, show
216
246
  // action available for a later user gesture without surfacing noise.
217
247
  }
218
248
  };
249
+ const persist = (next, detail) => {
250
+ if (next === null || onRateFeedback === undefined)
251
+ return;
252
+ onRateFeedback({
253
+ ...(message.role === "assistant" && message.seq !== undefined
254
+ ? { messageId: message.seq }
255
+ : {}),
256
+ rating: next === "up" ? "positive" : "negative",
257
+ ...(detail?.reasons === undefined ? {} : { reasons: detail.reasons }),
258
+ ...(detail?.comment === undefined ? {} : { comment: detail.comment }),
259
+ });
260
+ };
219
261
  const toggleRating = (value) => {
220
262
  const next = rating === value ? null : value;
221
263
  setRating(next);
222
264
  writeRating(stateKey, message.id, next);
265
+ // The reason form only opens where a rating can actually be stored: an
266
+ // answer nobody persists has no reviewer to inform.
267
+ if (value === "down" && next === "down" && onRateFeedback !== undefined) {
268
+ setAskingWhy(true);
269
+ return;
270
+ }
271
+ setAskingWhy(false);
272
+ persist(next);
223
273
  };
224
274
  const persistentMeta = showTimestamp && message.timestamp !== undefined;
225
275
  const meta = message.role === "system" || message.timestamp === undefined ? null : (_jsxs("span", { className: "dsh-qa-message__meta", children: [_jsx("time", { dateTime: new Date(message.timestamp).toISOString(), children: formatDayTime(message.timestamp) }), message.role === "assistant"
@@ -231,7 +281,16 @@ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, show
231
281
  return (_jsxs("article", { className: `dsh-qa-message dsh-qa-message--${message.role}`, "data-status": message.status, "aria-label": `Сообщение: ${label}`, children: [_jsxs("div", { className: "dsh-qa-message__content", children: [message.role === "user" && message.author !== undefined ? (_jsx("span", { className: "dsh-qa-message__byline", children: message.author })) : null, message.role === "user" && message.files !== undefined ? (_jsx("div", { className: "dsh-qa-message__files", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B", children: message.files.map((file) => (_jsx(QaFileAttachment, { name: file.name, bytes: file.bytes, tone: "sent" }, file.attachmentId))) })) : null, message.role === "user" && message.images !== undefined ? (_jsx("div", { className: "dsh-qa-message__images", children: message.images.map((image) => (_jsx(QaAttachedImage, { image: image, resolve: resolveImage }, image.attachmentId))) })) : null, message.role === "assistant" && renderMarkdown ? (_jsx(Markdown, { text: message.text, sourceRefs: sourceRefs, onSourceOpen: onSourceDetail })) : (message.text), message.status === "streaming" ? (_jsx("span", { className: "dsh-qa-message__cursor", "aria-hidden": "true" })) : null] }), message.role === "user" && message.status === "pending" ? (_jsxs("span", { className: "dsh-qa-message__pending", role: "status", children: [_jsx("span", { className: "dsh-qa-message__pending-spinner", "aria-hidden": "true" }), "\u041F\u043E\u0434\u0433\u043E\u0442\u0430\u0432\u043B\u0438\u0432\u0430\u044E \u043E\u0442\u0432\u0435\u0442\u2026"] })) : null, message.role === "assistant" &&
232
282
  onOpenSources !== undefined &&
233
283
  message.sources !== undefined &&
234
- message.sources.length > 0 ? (_jsxs("button", { type: "button", className: "dsh-qa-message__sources", onClick: () => onOpenSources(message.sources ?? [], message.sourcesComplete ?? true, message.incompleteSourceOrigins), children: ["\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438 (", message.sources.length, ")"] })) : null, showActions ? (_jsxs("div", { className: "dsh-qa-message__actions", "data-persistent": persistentMeta || undefined, children: [message.role === "user" ? meta : null, _jsx("button", { type: "button", "aria-label": copied ? "Скопировано" : "Скопировать сообщение", title: copied ? "Скопировано" : "Копировать", onClick: () => void copy(), children: copied ? (_jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "m4.5 9.25 2.75 2.75 6.25-6.25" }) })) : (_jsxs("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: [_jsx("rect", { x: "6.25", y: "3.25", width: "8.5", height: "8.5", rx: "2" }), _jsx("path", { d: "M11.75 11.75v.5a2.5 2.5 0 0 1-2.5 2.5h-3.5a2.5 2.5 0 0 1-2.5-2.5v-3.5a2.5 2.5 0 0 1 2.5-2.5h.5" })] })) }), message.role === "user" ? null : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "aria-label": "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "up", "data-active": rating === "up" || undefined, onClick: () => toggleRating("up"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M5.25 8.25 8.1 2.9a1.3 1.3 0 0 1 2.4.75v3.1h3.1c.9 0 1.55.85 1.33 1.72l-1.05 4.2a1.75 1.75 0 0 1-1.7 1.33H5.25m0-5.75v5.75m0-5.75h-2v5.75h2" }) }) }), _jsx("button", { type: "button", "aria-label": "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "down", "data-active": rating === "down" || undefined, onClick: () => toggleRating("down"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M12.75 9.75 9.9 15.1a1.3 1.3 0 0 1-2.4-.75v-3.1H4.4a1.38 1.38 0 0 1-1.33-1.72l1.05-4.2A1.75 1.75 0 0 1 5.82 4h6.93m0 5.75V4m0 5.75h2V4h-2" }) }) }), onRegenerate === undefined ? null : (_jsx("button", { type: "button", "aria-label": "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", title: "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", onClick: onRegenerate, children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M14.6 9A5.6 5.6 0 1 1 12.9 5l1.7 1.7m0-3.4v3.4h-3.4" }) }) }))] })), message.role === "user" ? null : meta] })) : null] }));
284
+ message.sources.length > 0 ? (_jsxs("button", { type: "button", className: "dsh-qa-message__sources", onClick: () => onOpenSources(message.sources ?? [], message.sourcesComplete ?? true, message.incompleteSourceOrigins), children: ["\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438 (", message.sources.length, ")"] })) : null, showActions ? (_jsxs("div", { className: "dsh-qa-message__actions", "data-persistent": persistentMeta || undefined, children: [message.role === "user" ? meta : null, _jsx("button", { type: "button", "aria-label": copied ? "Скопировано" : "Скопировать сообщение", title: copied ? "Скопировано" : "Копировать", onClick: () => void copy(), children: copied ? (_jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "m4.5 9.25 2.75 2.75 6.25-6.25" }) })) : (_jsxs("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: [_jsx("rect", { x: "6.25", y: "3.25", width: "8.5", height: "8.5", rx: "2" }), _jsx("path", { d: "M11.75 11.75v.5a2.5 2.5 0 0 1-2.5 2.5h-3.5a2.5 2.5 0 0 1-2.5-2.5v-3.5a2.5 2.5 0 0 1 2.5-2.5h.5" })] })) }), message.role === "user" ? null : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "aria-label": "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "up", "data-active": rating === "up" || undefined, onClick: () => toggleRating("up"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M5.25 8.25 8.1 2.9a1.3 1.3 0 0 1 2.4.75v3.1h3.1c.9 0 1.55.85 1.33 1.72l-1.05 4.2a1.75 1.75 0 0 1-1.7 1.33H5.25m0-5.75v5.75m0-5.75h-2v5.75h2" }) }) }), _jsx("button", { type: "button", "aria-label": "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "down", "data-active": rating === "down" || undefined, onClick: () => toggleRating("down"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M12.75 9.75 9.9 15.1a1.3 1.3 0 0 1-2.4-.75v-3.1H4.4a1.38 1.38 0 0 1-1.33-1.72l1.05-4.2A1.75 1.75 0 0 1 5.82 4h6.93m0 5.75V4m0 5.75h2V4h-2" }) }) }), onRegenerate === undefined ? null : (_jsx("button", { type: "button", "aria-label": "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", title: "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", onClick: onRegenerate, children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M14.6 9A5.6 5.6 0 1 1 12.9 5l1.7 1.7m0-3.4v3.4h-3.4" }) }) }))] })), message.role === "user" ? null : meta] })) : null, askingWhy ? (_jsx(FeedbackReasonForm, { onSubmit: (reasons, comment) => {
285
+ setAskingWhy(false);
286
+ persist("down", {
287
+ ...(reasons.length === 0 ? {} : { reasons }),
288
+ ...(comment.trim() === "" ? {} : { comment: comment.trim() }),
289
+ });
290
+ }, onSkip: () => {
291
+ setAskingWhy(false);
292
+ persist("down");
293
+ } })) : null] }));
235
294
  }, (prev, next) => prev.renderMarkdown === next.renderMarkdown &&
236
295
  prev.showTimestamp === next.showTimestamp &&
237
296
  prev.stateKey === next.stateKey &&
@@ -1 +1 @@
1
- {"version":3,"file":"QaMessage.js","sourceRoot":"","sources":["../../../src/client/components/QaMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaMessage.js","sourceRoot":"","sources":["../../../src/client/components/QaMessage.tsx"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ function wireFailure(error) {
18
18
  * composed preset.
19
19
  */
20
20
  export async function createQaSession(args) {
21
- const created = await args.createSession(args.token);
21
+ const created = await args.createSession(args.token, args.subroleId, args.adminPreview);
22
22
  if (!created.ok)
23
23
  throw new Error(wireFailure(created.error));
24
24
  return created.value;
@@ -1 +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"}
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,IAKrC;IACC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACtC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,CAClB,CAAC;IACF,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"}
@@ -13,6 +13,7 @@ import { QaSettingsCard } from "./settings/card.js";
13
13
  import { QA_SETTINGS_STYLES } from "./settings/styles.js";
14
14
  import { QaSurfacePanelRegistry } from "./panels/registry.js";
15
15
  import { QaUserSettingsSectionRegistry } from "./settings-extensions/index.js";
16
+ import { QaUserSessionMirror } from "./settings-extensions/user-session.js";
16
17
  const QA_WELCOME_SLOT_ID = "welcome-notice";
17
18
  function qaWelcomeStorageKey(config) {
18
19
  return `${qaStorageNamespace(config)}:welcome-notice`;
@@ -29,6 +30,10 @@ export const inject = [
29
30
  export async function apply(ctx) {
30
31
  const panels = new QaSurfacePanelRegistry();
31
32
  const settingsSections = new QaUserSettingsSectionRegistry();
33
+ // Cards that mount outside the QA overlay (the host's plugin settings) read
34
+ // the signed-in account through this service; the overlay's own controllers
35
+ // stay the authority and attach to it below.
36
+ const userSession = new QaUserSessionMirror();
32
37
  ctx.effect(() => {
33
38
  const removeService = ctx.provide("qaSurfacePanels", panels);
34
39
  return () => {
@@ -43,16 +48,53 @@ export async function apply(ctx) {
43
48
  void removeService();
44
49
  };
45
50
  }, "dsh-qa-surface: user settings extension service");
51
+ ctx.effect(() => {
52
+ const removeService = ctx.provide("qaUserSession", userSession);
53
+ return () => {
54
+ userSession.dispose();
55
+ void removeService();
56
+ };
57
+ }, "dsh-qa-surface: user session service");
46
58
  const remote = ctx.remote;
47
59
  const disposeRemote = await remote.$mount(qaSurfaceRemote);
48
60
  await ctx.inject(["remote.qaSurface", "remote.session", "remote.agentPresets"], (remoteContext) => {
49
61
  const injectedRemote = remoteContext.remote;
62
+ // Keep source checks independent of a previously generated lib/ Remote
63
+ // declaration. The handwritten face is the same contract the generator
64
+ // validates during build.
50
65
  const policyRemote = injectedRemote.qaSurface;
51
66
  const secureSession = (token, sessionId) => policyRemote.secureSession(token, sessionId);
52
67
  const qaApi = {
53
68
  selectModel: (request) => injectedRemote.session.selectModel(request),
54
69
  selectAgentPreset: (agentId, agentPreset) => injectedRemote.agentPresets.select(agentId, agentPreset),
55
70
  };
71
+ const accessApi = {
72
+ current: (token) => policyRemote.accessCurrent(token),
73
+ session: (token, sessionId) => policyRemote.accessSession(token, sessionId),
74
+ admin: (token) => policyRemote.accessAdminSnapshot(token),
75
+ createSubrole: (token, input) => policyRemote.accessCreateSubrole(token, input),
76
+ updateSubrole: (token, id, input) => policyRemote.accessUpdateSubrole(token, id, input),
77
+ deleteSubrole: (token, id, replacementId) => policyRemote.accessDeleteSubrole(token, id, replacementId),
78
+ updateCommon: (token, input) => policyRemote.accessUpdateCommon(token, input),
79
+ updateAssignment: (token, userId, input) => policyRemote.accessUpdateAssignment(token, userId, input),
80
+ updateSkillOverride: (token, input) => policyRemote.accessUpdateSkillOverride(token, input),
81
+ skillActivations: (token, sessionId) => policyRemote.accessSkillActivations(token, sessionId),
82
+ };
83
+ const adminApi = {
84
+ overview: (token) => policyRemote.adminOverview(token),
85
+ users: (token, query, cursor, limit) => policyRemote.adminUsers(token, query, cursor, limit),
86
+ user: (token, userId) => policyRemote.adminUser(token, userId),
87
+ updateUser: (token, userId, update) => policyRemote.adminUpdateUser(token, userId, update),
88
+ conversations: (token, query, cursor, limit) => policyRemote.adminConversations(token, query, cursor, limit),
89
+ conversation: (token, conversationId) => policyRemote.adminConversation(token, conversationId),
90
+ feedback: (token, query, cursor, limit) => policyRemote.adminFeedback(token, query, cursor, limit),
91
+ rateMessage: (token, conversationId, messageId, input) => policyRemote.adminRateMessage(token, conversationId, messageId, input),
92
+ reviewQueue: (token, cursor, limit) => policyRemote.adminReviewQueue(token, cursor, limit),
93
+ queueConversation: (token, conversationId, messageId) => policyRemote.adminQueueConversation(token, conversationId, messageId),
94
+ saveReview: (token, input) => policyRemote.adminSaveReview(token, input),
95
+ metrics: (token) => policyRemote.adminMetrics(token),
96
+ audit: (token, query, cursor, limit) => policyRemote.adminAudit(token, query, cursor, limit),
97
+ };
56
98
  const sourceApi = {
57
99
  sources: (token, sessionId) => policyRemote.sources(token, sessionId),
58
100
  readSourceFile: (token, sessionId, sourcePath) => policyRemote.readSourceFile(token, sessionId, sourcePath),
@@ -100,6 +142,9 @@ export async function apply(ctx) {
100
142
  new QaChatIndex(window.localStorage, qaStorageNamespace(snapshot)).forgetChat(sessionId);
101
143
  },
102
144
  });
145
+ // Publish the account this controller tracks to the extension service, so
146
+ // a card mounted outside the overlay sees the same session the pages do.
147
+ userSession.attach(accounts);
103
148
  const route = new QaRouteController();
104
149
  // One binding for both readers: the surface projects it into the page's
105
150
  // configuration, the settings card edits the same namespace through it.
@@ -230,7 +275,9 @@ export async function apply(ctx) {
230
275
  api: qaApi,
231
276
  connection: ctx.connection.generation,
232
277
  secureSession,
233
- createSession: (token) => policyRemote.createSession(token),
278
+ createSession: (token, subroleId, adminPreview) => policyRemote.createSession(token, subroleId, adminPreview),
279
+ accessApi,
280
+ adminApi,
234
281
  sourceApi,
235
282
  skillApi,
236
283
  approvalApi,