@yadsh/dsh-qa-surface 0.8.0 → 0.10.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 (242) hide show
  1. package/README.md +142 -4
  2. package/compatibility.json +5 -0
  3. package/lib/access/capability-catalog.js +32 -3
  4. package/lib/access/capability-catalog.js.map +1 -1
  5. package/lib/access/service.js +45 -17
  6. package/lib/access/service.js.map +1 -1
  7. package/lib/accounts/errors.js.map +1 -1
  8. package/lib/accounts/store.js +14 -0
  9. package/lib/accounts/store.js.map +1 -1
  10. package/lib/admin/permissions.js +4 -0
  11. package/lib/admin/permissions.js.map +1 -1
  12. package/lib/admin/quality-store.js +71 -0
  13. package/lib/admin/quality-store.js.map +1 -1
  14. package/lib/admin/service.js +113 -8
  15. package/lib/admin/service.js.map +1 -1
  16. package/lib/admin/session-log.js +66 -5
  17. package/lib/admin/session-log.js.map +1 -1
  18. package/lib/client/QaSessionController.js +371 -37
  19. package/lib/client/QaSessionController.js.map +1 -1
  20. package/lib/client/QaSurface.js +48 -8
  21. package/lib/client/QaSurface.js.map +1 -1
  22. package/lib/client/QaSurfaceGuard.js +12 -5
  23. package/lib/client/QaSurfaceGuard.js.map +1 -1
  24. package/lib/client/QaTranscriptAdapter.js +36 -0
  25. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  26. package/lib/client/admin/QaAdmin.js +14 -2
  27. package/lib/client/admin/QaAdmin.js.map +1 -1
  28. package/lib/client/admin/pages/Conversations.js +33 -7
  29. package/lib/client/admin/pages/Conversations.js.map +1 -1
  30. package/lib/client/admin/pages/Users.js +9 -2
  31. package/lib/client/admin/pages/Users.js.map +1 -1
  32. package/lib/client/admin/shared.js +14 -1
  33. package/lib/client/admin/shared.js.map +1 -1
  34. package/lib/client/admin/styles.js +2 -0
  35. package/lib/client/admin/styles.js.map +1 -1
  36. package/lib/client/audit/QaAuditDialog.js +74 -0
  37. package/lib/client/audit/QaAuditDialog.js.map +1 -0
  38. package/lib/client/audit/QaAuditRowBadge.js +17 -0
  39. package/lib/client/audit/QaAuditRowBadge.js.map +1 -0
  40. package/lib/client/audit/controller.js +39 -0
  41. package/lib/client/audit/controller.js.map +1 -0
  42. package/lib/client/audit/types.js +36 -0
  43. package/lib/client/audit/types.js.map +1 -0
  44. package/lib/client/audit/use-chat-audits.js +139 -0
  45. package/lib/client/audit/use-chat-audits.js.map +1 -0
  46. package/lib/client/base64.js +22 -1
  47. package/lib/client/base64.js.map +1 -1
  48. package/lib/client/components/QaAgentsDrawer.js +9 -6
  49. package/lib/client/components/QaAgentsDrawer.js.map +1 -1
  50. package/lib/client/components/QaApproval.js +1 -1
  51. package/lib/client/components/QaApproval.js.map +1 -1
  52. package/lib/client/components/QaChangelog.js +72 -0
  53. package/lib/client/components/QaChangelog.js.map +1 -1
  54. package/lib/client/components/QaComposer.js +63 -3
  55. package/lib/client/components/QaComposer.js.map +1 -1
  56. package/lib/client/components/QaFilesPanel.js +17 -11
  57. package/lib/client/components/QaFilesPanel.js.map +1 -1
  58. package/lib/client/components/QaHeader.js +3 -11
  59. package/lib/client/components/QaHeader.js.map +1 -1
  60. package/lib/client/components/QaMessage.js +16 -0
  61. package/lib/client/components/QaMessage.js.map +1 -1
  62. package/lib/client/components/QaModal.js.map +1 -1
  63. package/lib/client/components/QaQuestions.js +5 -5
  64. package/lib/client/components/QaQuestions.js.map +1 -1
  65. package/lib/client/components/QaSidebar.js +22 -3
  66. package/lib/client/components/QaSidebar.js.map +1 -1
  67. package/lib/client/components/QaWidthHandle.js +111 -5
  68. package/lib/client/components/QaWidthHandle.js.map +1 -1
  69. package/lib/client/components/QaWorkspaceBrowser.js +231 -0
  70. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -0
  71. package/lib/client/index.js +127 -51
  72. package/lib/client/index.js.map +1 -1
  73. package/lib/client/kiosk.js +51 -0
  74. package/lib/client/kiosk.js.map +1 -0
  75. package/lib/client/markdown/blocks.js +122 -7
  76. package/lib/client/markdown/blocks.js.map +1 -1
  77. package/lib/client/markdown/inline.js +108 -12
  78. package/lib/client/markdown/inline.js.map +1 -1
  79. package/lib/client/markdown/katex-css.js +12 -0
  80. package/lib/client/markdown/katex-css.js.map +1 -0
  81. package/lib/client/markdown/math.js +84 -0
  82. package/lib/client/markdown/math.js.map +1 -0
  83. package/lib/client/markdown/render.js +74 -5
  84. package/lib/client/markdown/render.js.map +1 -1
  85. package/lib/client/project-session-state.js +15 -2
  86. package/lib/client/project-session-state.js.map +1 -1
  87. package/lib/client/prompt-content.js +26 -0
  88. package/lib/client/prompt-content.js.map +1 -1
  89. package/lib/client/settings/card.js +2 -2
  90. package/lib/client/settings/card.js.map +1 -1
  91. package/lib/client/settings/sections/lockdown.js +1 -6
  92. package/lib/client/settings/sections/lockdown.js.map +1 -1
  93. package/lib/client/settings/sections/notes.js +46 -0
  94. package/lib/client/settings/sections/notes.js.map +1 -0
  95. package/lib/client/settings/sections/slash.js +57 -0
  96. package/lib/client/settings/sections/slash.js.map +1 -0
  97. package/lib/client/settings/sections/sources.js +4 -1
  98. package/lib/client/settings/sections/sources.js.map +1 -1
  99. package/lib/client/settings/sections/status.js +9 -1
  100. package/lib/client/settings/sections/status.js.map +1 -1
  101. package/lib/client/settings/sections.js +2 -0
  102. package/lib/client/settings/sections.js.map +1 -1
  103. package/lib/client/settlement.js +1 -1
  104. package/lib/client/settlement.js.map +1 -1
  105. package/lib/client/slash/SlashPalette.js +48 -0
  106. package/lib/client/slash/SlashPalette.js.map +1 -0
  107. package/lib/client/slash/copy.js +54 -0
  108. package/lib/client/slash/copy.js.map +1 -0
  109. package/lib/client/slash/slash-router.js +49 -0
  110. package/lib/client/slash/slash-router.js.map +1 -0
  111. package/lib/client/slash/useSlashNavigation.js +95 -0
  112. package/lib/client/slash/useSlashNavigation.js.map +1 -0
  113. package/lib/client/source-preview.js +3 -0
  114. package/lib/client/source-preview.js.map +1 -1
  115. package/lib/client/styles.js +145 -16
  116. package/lib/client/styles.js.map +1 -1
  117. package/lib/client/types.js +11 -0
  118. package/lib/client/types.js.map +1 -1
  119. package/lib/client.js +33548 -1876
  120. package/lib/client.js.map +1 -1
  121. package/lib/config-resolvers/basics.js +11 -2
  122. package/lib/config-resolvers/basics.js.map +1 -1
  123. package/lib/config-resolvers/defaults.js +32 -0
  124. package/lib/config-resolvers/defaults.js.map +1 -1
  125. package/lib/config-resolvers/lockdown.js +8 -2
  126. package/lib/config-resolvers/lockdown.js.map +1 -1
  127. package/lib/config-resolvers/notes.js +24 -0
  128. package/lib/config-resolvers/notes.js.map +1 -0
  129. package/lib/config-resolvers/slash-commands.js +60 -0
  130. package/lib/config-resolvers/slash-commands.js.map +1 -0
  131. package/lib/config-resolvers/sources.js +4 -0
  132. package/lib/config-resolvers/sources.js.map +1 -1
  133. package/lib/config.js +96 -2
  134. package/lib/config.js.map +1 -1
  135. package/lib/index.js +309 -11
  136. package/lib/index.js.map +1 -1
  137. package/lib/personal-skills/service.js +16 -3
  138. package/lib/personal-skills/service.js.map +1 -1
  139. package/lib/prompt-notes.js +45 -6
  140. package/lib/prompt-notes.js.map +1 -1
  141. package/lib/provenance/document-preview.js +51 -0
  142. package/lib/provenance/document-preview.js.map +1 -0
  143. package/lib/provenance/file-preview.js +191 -19
  144. package/lib/provenance/file-preview.js.map +1 -1
  145. package/lib/provenance/host-store.js +18 -1
  146. package/lib/provenance/host-store.js.map +1 -1
  147. package/lib/qa-tools/catalog.js +7 -1
  148. package/lib/qa-tools/catalog.js.map +1 -1
  149. package/lib/qa-tools/file-delete-gate.js +60 -0
  150. package/lib/qa-tools/file-delete-gate.js.map +1 -0
  151. package/lib/qa-tools/file-delete.js +156 -0
  152. package/lib/qa-tools/file-delete.js.map +1 -0
  153. package/lib/questions.js +90 -43
  154. package/lib/questions.js.map +1 -1
  155. package/lib/resolve-config.js +7 -0
  156. package/lib/resolve-config.js.map +1 -1
  157. package/lib/secure-session.js +24 -0
  158. package/lib/secure-session.js.map +1 -1
  159. package/lib/shared/documents.js +22 -0
  160. package/lib/shared/documents.js.map +1 -0
  161. package/lib/slash/catalog.js +77 -0
  162. package/lib/slash/catalog.js.map +1 -0
  163. package/lib/slash/matcher.js +100 -0
  164. package/lib/slash/matcher.js.map +1 -0
  165. package/lib/slash/parser.js +79 -0
  166. package/lib/slash/parser.js.map +1 -0
  167. package/lib/slash/policy.js +72 -0
  168. package/lib/slash/policy.js.map +1 -0
  169. package/lib/slash/remotes.js +272 -0
  170. package/lib/slash/remotes.js.map +1 -0
  171. package/lib/typert.host.js +544 -56
  172. package/lib/typert.remote-client.d.ts +13 -1
  173. package/lib/typert.remote-client.js +435 -53
  174. package/lib/types/access/capability-catalog.d.ts +28 -1
  175. package/lib/types/access/service.d.ts +33 -4
  176. package/lib/types/accounts/errors.d.ts +7 -1
  177. package/lib/types/accounts/store.d.ts +12 -0
  178. package/lib/types/admin/quality-store.d.ts +18 -0
  179. package/lib/types/admin/service.d.ts +34 -2
  180. package/lib/types/admin/session-log.d.ts +65 -1
  181. package/lib/types/client/QaSessionController.d.ts +84 -2
  182. package/lib/types/client/QaSurface.d.ts +14 -1
  183. package/lib/types/client/admin/pages/Conversations.d.ts +4 -0
  184. package/lib/types/client/admin/shared.d.ts +2 -0
  185. package/lib/types/client/audit/QaAuditDialog.d.ts +21 -0
  186. package/lib/types/client/audit/QaAuditRowBadge.d.ts +18 -0
  187. package/lib/types/client/audit/controller.d.ts +27 -0
  188. package/lib/types/client/audit/types.d.ts +72 -0
  189. package/lib/types/client/audit/use-chat-audits.d.ts +20 -0
  190. package/lib/types/client/base64.d.ts +13 -1
  191. package/lib/types/client/components/QaAgentsDrawer.d.ts +2 -1
  192. package/lib/types/client/components/QaComposer.d.ts +12 -2
  193. package/lib/types/client/components/QaFilesPanel.d.ts +16 -4
  194. package/lib/types/client/components/QaHeader.d.ts +9 -3
  195. package/lib/types/client/components/QaModal.d.ts +4 -3
  196. package/lib/types/client/components/QaQuestions.d.ts +7 -0
  197. package/lib/types/client/components/QaSidebar.d.ts +8 -0
  198. package/lib/types/client/components/QaWidthHandle.d.ts +48 -2
  199. package/lib/types/client/components/QaWorkspaceBrowser.d.ts +15 -0
  200. package/lib/types/client/index.d.ts +1 -1
  201. package/lib/types/client/kiosk.d.ts +34 -0
  202. package/lib/types/client/markdown/blocks.d.ts +14 -1
  203. package/lib/types/client/markdown/inline.d.ts +23 -7
  204. package/lib/types/client/markdown/katex-css.d.ts +11 -0
  205. package/lib/types/client/markdown/math.d.ts +23 -0
  206. package/lib/types/client/markdown/render.d.ts +2 -1
  207. package/lib/types/client/project-session-state.d.ts +3 -1
  208. package/lib/types/client/prompt-content.d.ts +9 -1
  209. package/lib/types/client/settings/sections/notes.d.ts +10 -0
  210. package/lib/types/client/settings/sections/slash.d.ts +16 -0
  211. package/lib/types/client/settings/sections.d.ts +2 -0
  212. package/lib/types/client/settlement.d.ts +4 -1
  213. package/lib/types/client/slash/SlashPalette.d.ts +24 -0
  214. package/lib/types/client/slash/copy.d.ts +30 -0
  215. package/lib/types/client/slash/slash-router.d.ts +67 -0
  216. package/lib/types/client/slash/useSlashNavigation.d.ts +47 -0
  217. package/lib/types/client/styles.d.ts +22 -0
  218. package/lib/types/client/types.d.ts +65 -1
  219. package/lib/types/config-resolvers/notes.d.ts +10 -0
  220. package/lib/types/config-resolvers/slash-commands.d.ts +20 -0
  221. package/lib/types/index.d.ts +116 -1
  222. package/lib/types/personal-skills/service.d.ts +5 -0
  223. package/lib/types/prompt-notes.d.ts +9 -0
  224. package/lib/types/provenance/document-preview.d.ts +24 -0
  225. package/lib/types/provenance/file-preview.d.ts +69 -2
  226. package/lib/types/provenance/host-store.d.ts +13 -0
  227. package/lib/types/qa-tools/catalog.d.ts +1 -1
  228. package/lib/types/qa-tools/file-delete-gate.d.ts +42 -0
  229. package/lib/types/qa-tools/file-delete.d.ts +32 -0
  230. package/lib/types/questions.d.ts +8 -0
  231. package/lib/types/shared/documents.d.ts +20 -0
  232. package/lib/types/slash/catalog.d.ts +56 -0
  233. package/lib/types/slash/matcher.d.ts +51 -0
  234. package/lib/types/slash/parser.d.ts +46 -0
  235. package/lib/types/slash/policy.d.ts +40 -0
  236. package/lib/types/slash/remotes.d.ts +35 -0
  237. package/lib/types/types.d.ts +293 -6
  238. package/lib/types/ui-mode.d.ts +18 -0
  239. package/lib/ui-mode.js +22 -0
  240. package/lib/ui-mode.js.map +1 -0
  241. package/package.json +15 -9
  242. package/scripts/attach-workspace-sessions.mjs +472 -0
@@ -0,0 +1,231 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { formatFileSize } from "../attachments.js";
4
+ import { base64ToBytes } from "../base64.js";
5
+ import { isConvertibleDocument } from "../../shared/documents.js";
6
+ import { sourcePreviewFailureCopy } from "../source-preview.js";
7
+ import { Markdown } from "./Markdown.js";
8
+ import { QaModal } from "./QaModal.js";
9
+ /** Name of one entry: the last path segment, root spelled as the directory. */
10
+ function entryName(path) {
11
+ const parts = path.split("/");
12
+ return parts[parts.length - 1] ?? path;
13
+ }
14
+ /** Path join for the panel's own navigation, never leaving the chat root. */
15
+ function joinPath(directory, name) {
16
+ return directory === "" ? name : `${directory}/${name}`;
17
+ }
18
+ /** The breadcrumb of one directory: root label plus one crumb per segment. */
19
+ function crumbsOf(path) {
20
+ const crumbs = [
21
+ { label: "Рабочий каталог", path: "" },
22
+ ];
23
+ let current = "";
24
+ for (const segment of path.split("/")) {
25
+ if (segment === "")
26
+ continue;
27
+ current = joinPath(current, segment);
28
+ crumbs.push({ label: segment, path: current });
29
+ }
30
+ return crumbs;
31
+ }
32
+ /** Hand one file to the browser's download machinery. */
33
+ function downloadFile(file) {
34
+ const bytes = file.base64 === undefined
35
+ ? new TextEncoder().encode(file.text ?? "")
36
+ : base64ToBytes(file.base64);
37
+ const url = URL.createObjectURL(new Blob([bytes], { type: file.mime }));
38
+ const anchor = document.createElement("a");
39
+ anchor.href = url;
40
+ anchor.download = entryName(file.path);
41
+ anchor.rel = "noreferrer";
42
+ document.body.append(anchor);
43
+ anchor.click();
44
+ anchor.remove();
45
+ URL.revokeObjectURL(url);
46
+ }
47
+ /** One row of the listing: a directory to descend into or a file to open. */
48
+ function EntryRow({ entry, directory, onOpenFile, onOpenDirectory, }) {
49
+ const path = joinPath(directory, entry.name);
50
+ return (_jsx("li", { className: "dsh-qa-ws__row", children: _jsxs("button", { type: "button", className: "dsh-qa-ws__entry", "data-kind": entry.type, onClick: () => entry.type === "directory" ? onOpenDirectory(path) : onOpenFile(path), children: [_jsx("span", { className: "dsh-qa-ws__icon", "aria-hidden": "true", children: _jsx("svg", { viewBox: "0 0 14 14", children: entry.type === "directory" ? (_jsx("path", { d: "M1.75 3.5h4l1 1.25h4.5v5.75h-9.5z" })) : (_jsx("path", { d: "M3.25 1.75h5l2.5 2.5v8h-7.5zM8.25 1.75v2.5h2.5" })) }) }), _jsx("span", { className: "dsh-qa-ws__name", children: entry.name }), entry.size === null ? null : (_jsx("span", { className: "dsh-qa-ws__size", children: formatFileSize(entry.size) }))] }) }));
51
+ }
52
+ /**
53
+ * Object URL for a PDF body, revoked when the payload changes or the panel
54
+ * closes. A blob URL is what lets the browser's own viewer draw the document
55
+ * without the bytes ever leaving the page.
56
+ */
57
+ function usePdfUrl(payload) {
58
+ const [url, setUrl] = useState(null);
59
+ useEffect(() => {
60
+ if (payload === undefined) {
61
+ setUrl(null);
62
+ return;
63
+ }
64
+ const objectUrl = URL.createObjectURL(new Blob([base64ToBytes(payload)], {
65
+ type: "application/pdf",
66
+ }));
67
+ setUrl(objectUrl);
68
+ return () => URL.revokeObjectURL(objectUrl);
69
+ }, [payload]);
70
+ return url;
71
+ }
72
+ /**
73
+ * The opened file's content, shared by the rail and the expanded dialog: an
74
+ * image inline, a PDF through the browser's viewer, Markdown or plain text, and
75
+ * anything else as an honest handle rather than a guess in the wrong alphabet.
76
+ */
77
+ function FileBody({ file, raw, converted, converting, conversionFailure, }) {
78
+ const nativePdf = file.mime === "application/pdf" && !file.truncated
79
+ ? file.base64
80
+ : undefined;
81
+ const pdf = usePdfUrl(converted?.base64 ?? nativePdf);
82
+ if (file.mime.startsWith("image/") && file.base64 !== undefined) {
83
+ return (_jsx("img", { className: "dsh-qa-ws__image", alt: entryName(file.path), src: `data:${file.mime};base64,${file.base64}` }));
84
+ }
85
+ if (pdf !== null) {
86
+ return (_jsx("iframe", { className: "dsh-qa-ws__pdf", title: entryName(file.path), src: pdf }));
87
+ }
88
+ if (converting) {
89
+ return _jsx("p", { className: "dsh-qa-ws__status", children: "\u0413\u043E\u0442\u043E\u0432\u043B\u044E \u043F\u0440\u0435\u0434\u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u2026" });
90
+ }
91
+ if (file.text === undefined) {
92
+ return (_jsx("p", { className: "dsh-qa-ws__status", children: isConvertibleDocument(file.mime)
93
+ ? conversionFailure
94
+ : file.truncated
95
+ ? "Файл больше предела предпросмотра — показана только его часть."
96
+ : "Файл не читается как текст — его можно скачать целиком." }));
97
+ }
98
+ if (file.markdown && file.renderableMarkdown && !raw) {
99
+ return _jsx(Markdown, { text: file.text });
100
+ }
101
+ return _jsx("pre", { className: "dsh-qa-ws__text", children: file.text });
102
+ }
103
+ /** The opened file in the rail: chrome, the read/write toggles, and the body. */
104
+ function FilePreview({ file, status, raw, converted, converting, conversionFailure, onToggleRaw, onBack, onExpand, }) {
105
+ if (status !== "ready" || file === undefined) {
106
+ return (_jsxs("div", { className: "dsh-qa-ws__preview", children: [_jsx("button", { type: "button", className: "dsh-qa-ws__back", onClick: onBack, children: "\u2190 \u041A \u0444\u0430\u0439\u043B\u0430\u043C" }), _jsx("p", { className: "dsh-qa-ws__status", children: status === "loading" ? "Открываю файл…" : "Файл недоступен." })] }));
107
+ }
108
+ return (_jsxs("div", { className: "dsh-qa-ws__preview", children: [_jsxs("div", { className: "dsh-qa-ws__preview-head", children: [_jsx("button", { type: "button", className: "dsh-qa-ws__back", onClick: onBack, children: "\u2190 \u041A \u0444\u0430\u0439\u043B\u0430\u043C" }), _jsx("span", { className: "dsh-qa-ws__preview-name", title: file.path, children: entryName(file.path) }), _jsx("button", { type: "button", className: "dsh-qa-ws__expand", "aria-label": "\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u0444\u0430\u0439\u043B", title: "\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C", onClick: onExpand, children: _jsx("svg", { viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "M5.5 2.25H2.25v3.25m6.25-3.25h3.25v3.25m0 3.25v3.25H8.5m-6.25-3.25v3.25h3.25" }) }) }), _jsx("button", { type: "button", className: "dsh-qa-ws__download", onClick: () => downloadFile(file), children: "\u0421\u043A\u0430\u0447\u0430\u0442\u044C" })] }), _jsxs("p", { className: "dsh-qa-ws__meta", children: [formatFileSize(file.size), file.truncated ? " · показана только часть файла" : ""] }), file.markdown && file.renderableMarkdown ? (_jsx("button", { type: "button", className: "dsh-qa-ws__toggle", "aria-pressed": raw, onClick: onToggleRaw, children: raw ? "Показать разметкой" : "Показать исходником" })) : null, _jsx(FileBody, { file: file, raw: raw, converted: converted, converting: converting, conversionFailure: conversionFailure })] }));
109
+ }
110
+ /**
111
+ * The chat's own workspace, browsable from the files rail.
112
+ *
113
+ * One directory at a time: the Host lists a directory, the panel descends into
114
+ * its children and never travels by path, so a link in a listing cannot walk
115
+ * the visitor out of the chat's tree. Opening a file reads exactly that file —
116
+ * text inline, anything else as a downloadable handle.
117
+ */
118
+ export function QaWorkspaceBrowser({ sessionId, api, }) {
119
+ const [directory, setDirectory] = useState("");
120
+ const [entries, setEntries] = useState([]);
121
+ const [truncated, setTruncated] = useState(false);
122
+ const [listStatus, setListStatus] = useState("loading");
123
+ const [listFailure, setListFailure] = useState("");
124
+ const [file, setFile] = useState(undefined);
125
+ const [fileStatus, setFileStatus] = useState("loading");
126
+ const [opened, setOpened] = useState(null);
127
+ const [converted, setConverted] = useState(undefined);
128
+ const [converting, setConverting] = useState(false);
129
+ const [conversionFailure, setConversionFailure] = useState("");
130
+ const [raw, setRaw] = useState(false);
131
+ const [expanded, setExpanded] = useState(false);
132
+ const generation = useRef(0);
133
+ useEffect(() => {
134
+ const current = generation.current + 1;
135
+ generation.current = current;
136
+ setListStatus("loading");
137
+ api.listWorkspaceFiles(sessionId, directory).then((result) => {
138
+ if (generation.current !== current)
139
+ return;
140
+ if (!result.ok) {
141
+ setListFailure(sourcePreviewFailureCopy(result.error));
142
+ setListStatus("refused");
143
+ return;
144
+ }
145
+ setEntries(result.value.entries);
146
+ setTruncated(result.value.truncated);
147
+ setListStatus("ready");
148
+ }, (failure) => {
149
+ if (generation.current !== current)
150
+ return;
151
+ setListFailure(sourcePreviewFailureCopy(failure));
152
+ setListStatus("refused");
153
+ });
154
+ }, [api, directory, sessionId]);
155
+ /**
156
+ * Ask the Host for a renderable copy when the bytes themselves are not
157
+ * drawable — a Word document arrives as the PDF the document pipeline made of
158
+ * it. The panel keeps the file's own bytes either way, so download never
159
+ * depends on the conversion succeeding.
160
+ */
161
+ const convert = useCallback((path) => {
162
+ setConverted(undefined);
163
+ setConversionFailure("");
164
+ setConverting(true);
165
+ api.previewWorkspaceDocument(sessionId, path).then((result) => {
166
+ setOpened((current) => {
167
+ if (current !== path)
168
+ return current;
169
+ setConverting(false);
170
+ if (result.ok) {
171
+ setConverted(result.value);
172
+ }
173
+ else {
174
+ setConversionFailure(sourcePreviewFailureCopy(result.error));
175
+ }
176
+ return current;
177
+ });
178
+ }, (failure) => {
179
+ setOpened((current) => {
180
+ if (current !== path)
181
+ return current;
182
+ setConverting(false);
183
+ setConversionFailure(sourcePreviewFailureCopy(failure));
184
+ return current;
185
+ });
186
+ });
187
+ }, [api, sessionId]);
188
+ const openFile = useCallback((path) => {
189
+ setOpened(path);
190
+ setFile(undefined);
191
+ setFileStatus("loading");
192
+ setConverted(undefined);
193
+ setConversionFailure("");
194
+ setConverting(false);
195
+ setRaw(false);
196
+ setExpanded(false);
197
+ api.readWorkspaceFile(sessionId, path).then((result) => {
198
+ setOpened((current) => {
199
+ if (current !== path)
200
+ return current;
201
+ if (result.ok) {
202
+ setFile(result.value);
203
+ setFileStatus("ready");
204
+ if (isConvertibleDocument(result.value.mime))
205
+ convert(path);
206
+ }
207
+ else {
208
+ setFileStatus("refused");
209
+ }
210
+ return current;
211
+ });
212
+ }, () => {
213
+ setOpened((current) => {
214
+ if (current === path)
215
+ setFileStatus("refused");
216
+ return current;
217
+ });
218
+ });
219
+ }, [api, convert, sessionId]);
220
+ if (opened !== null) {
221
+ const closeFile = () => {
222
+ setOpened(null);
223
+ setFile(undefined);
224
+ setExpanded(false);
225
+ };
226
+ return (_jsxs("div", { className: "dsh-qa-ws", children: [_jsx(FilePreview, { file: file, status: fileStatus, raw: raw, converted: converted, converting: converting, conversionFailure: conversionFailure, onToggleRaw: () => setRaw((value) => !value), onBack: closeFile, onExpand: () => setExpanded(true) }), _jsx(QaModal, { open: expanded && file !== undefined, size: "document", title: file === undefined ? "" : entryName(file.path), closeLabel: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0444\u0430\u0439\u043B", onClose: () => setExpanded(false), children: _jsxs("div", { className: "dsh-qa-ws__expanded", children: [_jsxs("p", { className: "dsh-qa-ws__meta", children: [formatFileSize(file?.size ?? 0), file?.truncated === true ? " · показана только часть файла" : ""] }), file === undefined ? null : (_jsx(FileBody, { file: file, raw: raw, converted: converted, converting: converting, conversionFailure: conversionFailure }))] }) })] }));
227
+ }
228
+ const crumbs = crumbsOf(directory);
229
+ return (_jsxs("div", { className: "dsh-qa-ws", children: [_jsx("nav", { className: "dsh-qa-ws__crumbs", "aria-label": "\u041F\u0443\u0442\u044C \u0432 \u0440\u0430\u0431\u043E\u0447\u0435\u043C \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u0435", children: crumbs.map((crumb, index) => (_jsxs("span", { children: [index > 0 ? _jsx("span", { "aria-hidden": "true", children: "/" }) : null, _jsx("button", { type: "button", className: "dsh-qa-ws__crumb", "aria-current": index === crumbs.length - 1 ? "true" : undefined, onClick: () => setDirectory(crumb.path), children: crumb.label })] }, crumb.path))) }), listStatus === "loading" ? (_jsx("p", { className: "dsh-qa-ws__status", children: "\u0427\u0438\u0442\u0430\u044E \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u2026" })) : listStatus === "refused" ? (_jsx("p", { className: "dsh-qa-ws__status", children: listFailure })) : entries.length === 0 ? (_jsx("p", { className: "dsh-qa-ws__status", children: "\u041A\u0430\u0442\u0430\u043B\u043E\u0433 \u043F\u0443\u0441\u0442." })) : (_jsx("ul", { className: "dsh-qa-ws__list", children: entries.map((entry) => (_jsx(EntryRow, { entry: entry, directory: directory, onOpenFile: openFile, onOpenDirectory: setDirectory }, `${entry.type}:${entry.name}`))) })), truncated ? (_jsx("p", { className: "dsh-qa-ws__status", children: "\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u043D\u0435 \u0432\u0441\u0435 \u0444\u0430\u0439\u043B\u044B \u043A\u0430\u0442\u0430\u043B\u043E\u0433\u0430." })) : null] }));
230
+ }
231
+ //# sourceMappingURL=QaWorkspaceBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QaWorkspaceBrowser.js","sourceRoot":"","sources":["../../../src/client/components/QaWorkspaceBrowser.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAAY;IAC/C,OAAO,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,8EAA8E;AAC9E,SAAS,QAAQ,CACf,IAAY;IAEZ,MAAM,MAAM,GAAsC;QAChD,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE;KACvC,CAAC;IACF,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,KAAK,EAAE;YAAE,SAAS;QAC7B,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,SAAS,YAAY,CAAC,IAAqB;IACzC,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,KAAK,SAAS;QACvB,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3C,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAC7B,IAAI,IAAI,CAAC,CAAC,KAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CACnD,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,EAChB,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,GAMhB;IACC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CACL,aAAI,SAAS,EAAC,gBAAgB,YAC5B,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,kBAAkB,eACjB,KAAK,CAAC,IAAI,EACrB,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAGvE,eAAM,SAAS,EAAC,iBAAiB,iBAAa,MAAM,YAClD,cAAK,OAAO,EAAC,WAAW,YACrB,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAC5B,eAAM,CAAC,EAAC,mCAAmC,GAAG,CAC/C,CAAC,CAAC,CAAC,CACF,eAAM,CAAC,EAAC,gDAAgD,GAAG,CAC5D,GACG,GACD,EACP,eAAM,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,IAAI,GAAQ,EACpD,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,eAAM,SAAS,EAAC,iBAAiB,YAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAQ,CACtE,IACM,GACN,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,OAA2B;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CACnC,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAa,CAAC,EAAE;YAC7C,IAAI,EAAE,iBAAiB;SACxB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,GAAG,EACH,SAAS,EACT,UAAU,EACV,iBAAiB,GAQlB;IACC,MAAM,SAAS,GACb,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS;QAChD,CAAC,CAAC,IAAI,CAAC,MAAM;QACb,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,CACL,cACE,SAAS,EAAC,kBAAkB,EAC5B,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,GAAG,EAAE,QAAQ,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,GAC9C,CACH,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,CACL,iBACE,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,GAAG,EAAE,GAAG,GACR,CACH,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,YAAG,SAAS,EAAC,mBAAmB,0IAA0B,CAAC;IACpE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CACL,YAAG,SAAS,EAAC,mBAAmB,YAC7B,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/B,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,IAAI,CAAC,SAAS;oBACd,CAAC,CAAC,gEAAgE;oBAClE,CAAC,CAAC,yDAAyD,GAC7D,CACL,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC;QACrD,OAAO,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,CAAC;IACvC,CAAC;IACD,OAAO,cAAK,SAAS,EAAC,iBAAiB,YAAE,IAAI,CAAC,IAAI,GAAO,CAAC;AAC5D,CAAC;AAED,iFAAiF;AACjF,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,MAAM,EACN,GAAG,EACH,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,MAAM,EACN,QAAQ,GAWT;IACC,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,MAAM,mEAExD,EACT,YAAG,SAAS,EAAC,mBAAmB,YAC7B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,GAC3D,IACA,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,yBAAyB,aACtC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,MAAM,mEAExD,EACT,eAAM,SAAS,EAAC,yBAAyB,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,YACvD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAChB,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mBAAmB,gBAClB,uFAAiB,EAC5B,KAAK,EAAC,8DAAY,EAClB,OAAO,EAAE,QAAQ,YAEjB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,8EAA8E,GAAG,GACrF,GACC,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,2DAG1B,IACL,EACN,aAAG,SAAS,EAAC,iBAAiB,aAC3B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,IACrD,EACH,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC1C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mBAAmB,kBACf,GAAG,EACjB,OAAO,EAAE,WAAW,YAEnB,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,GAC5C,CACV,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,QAAQ,IACP,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACpC,IACE,CACP,CAAC;AACJ,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,SAAS,EACT,GAAG,GACqB;IACxB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA8B,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAC1C,SAAS,CACV,CAAC;IACF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAA8B,SAAS,CAAC,CAAC;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAC1C,SAAS,CACV,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CACxC,SAAS,CACV,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;QACvC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAC/C,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO;YAC3C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,cAAc,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvD,aAAa,CAAC,SAAS,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YACD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,EACD,CAAC,OAAgB,EAAE,EAAE;YACnB,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO;gBAAE,OAAO;YAC3C,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;YAClD,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhC;;;;;OAKG;IACH,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAAY,EAAE,EAAE;QACf,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,GAAG,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAChD,CAAC,MAAM,EAAE,EAAE;YACT,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC;gBACrC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,oBAAoB,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,EACD,CAAC,OAAgB,EAAE,EAAE;YACnB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC;gBACrC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,oBAAoB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,EACD,CAAC,GAAG,EAAE,SAAS,CAAC,CACjB,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,IAAY,EAAE,EAAE;QACf,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,aAAa,CAAC,SAAS,CAAC,CAAC;QACzB,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACzB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CACzC,CAAC,MAAM,EAAE,EAAE;YACT,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC;gBACrC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtB,aAAa,CAAC,OAAO,CAAC,CAAC;oBACvB,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,EACD,GAAG,EAAE;YACH,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;gBACpB,IAAI,OAAO,KAAK,IAAI;oBAAE,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC/C,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,EACD,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAC1B,CAAC;IAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAC5C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GACjC,EACF,KAAC,OAAO,IACN,IAAI,EAAE,QAAQ,IAAI,IAAI,KAAK,SAAS,EACpC,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACrD,UAAU,EAAC,qEAAc,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,YAEjC,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAG,SAAS,EAAC,iBAAiB,aAC3B,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,EAC/B,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,IAC/D,EACH,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,KAAC,QAAQ,IACP,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACpC,CACH,IACG,GACE,IACN,CACP,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,mBAAmB,gBAAY,6HAAyB,YACpE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,2BACG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,8BAAkB,MAAM,kBAAS,CAAC,CAAC,CAAC,IAAI,EACrD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,kBAAkB,kBACd,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAEtC,KAAK,CAAC,KAAK,GACL,KATA,KAAK,CAAC,IAAI,CAUd,CACR,CAAC,GACE,EACL,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,YAAG,SAAS,EAAC,mBAAmB,gGAAmB,CACpD,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7B,YAAG,SAAS,EAAC,mBAAmB,YAAE,WAAW,GAAK,CACnD,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACzB,YAAG,SAAS,EAAC,mBAAmB,qFAAkB,CACnD,CAAC,CAAC,CAAC,CACF,aAAI,SAAS,EAAC,iBAAiB,YAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,KAAC,QAAQ,IAEP,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,QAAQ,EACpB,eAAe,EAAE,YAAY,IAJxB,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAKlC,CACH,CAAC,GACC,CACN,EACA,SAAS,CAAC,CAAC,CAAC,CACX,YAAG,SAAS,EAAC,mBAAmB,kLAAoC,CACrE,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -7,7 +7,10 @@ import { QaChatIndex } from "./chat-index.js";
7
7
  import { isDelegatedSession } from "./lineage.js";
8
8
  import { QaSurfaceGuard } from "./QaSurfaceGuard.js";
9
9
  import { QaWelcomeNoticeStep } from "./components/QaWelcomeNotice.js";
10
- import { QA_SURFACE_STYLES } from "./styles.js";
10
+ import { QA_OVERLAY_STYLES, QA_ROOT_STYLES } from "./styles.js";
11
+ import { qaKioskBasePath, qaKioskMode } from "./kiosk.js";
12
+ import { QaAuditController } from "./audit/controller.js";
13
+ import { createQaAuditApi } from "./audit/types.js";
11
14
  import { QA_SURFACE_SETTINGS_NAMESPACE } from "../shared/settings.js";
12
15
  import { qaStorageNamespace } from "../shared/session-key.js";
13
16
  import { QaSettingsCard } from "./settings/card.js";
@@ -16,6 +19,15 @@ import { QaSurfacePanelRegistry } from "./panels/registry.js";
16
19
  import { QaUserSettingsSectionRegistry } from "./settings-extensions/index.js";
17
20
  import { QaUserSessionMirror } from "./settings-extensions/user-session.js";
18
21
  const QA_WELCOME_SLOT_ID = "welcome-notice";
22
+ /**
23
+ * Priority of the kiosk root registration. 'root' is a single slot whose
24
+ * lowest-priority entry renders, so this must sit below the ui-layout
25
+ * fail-safe occupant's priority (1000 in the kiosk branch) — the surface
26
+ * shadows the static error screen the moment it registers, and if this
27
+ * registration never happens, the error screen is what the user sees instead
28
+ * of a native shell.
29
+ */
30
+ const QA_ROOT_OWNER_PRIORITY = -1000;
19
31
  function qaWelcomeStorageKey(config) {
20
32
  return `${qaStorageNamespace(config)}:welcome-notice`;
21
33
  }
@@ -27,14 +39,24 @@ export const inject = [
27
39
  "settingsScope",
28
40
  "remote",
29
41
  ];
30
- /** Register the route-aware, full-frame QA entry in the additive overlay slot. */
42
+ /** Register the route-aware, full-frame QA entry: root owner in the kiosk, additive overlay slot otherwise. */
31
43
  export async function apply(ctx) {
44
+ // The presentation is a property of the deployment, published once in the
45
+ // document prelude: kiosk = the surface owns the 'root' slot, overlay = the
46
+ // surface covers the native shell from 'shell.overlay'. Read once here —
47
+ // the prelude runs before any application script, so the answer is final
48
+ // for this page load.
49
+ const kiosk = qaKioskMode();
32
50
  const panels = new QaSurfacePanelRegistry();
33
51
  const settingsSections = new QaUserSettingsSectionRegistry();
34
52
  // Cards that mount outside the QA overlay (the host's plugin settings) read
35
53
  // the signed-in account through this service; the overlay's own controllers
36
54
  // stay the authority and attach to it below.
37
55
  const userSession = new QaUserSessionMirror();
56
+ // The audit provider is an optional peer: its namespace is attached when the
57
+ // audit plugin's client bundle is present and detached when it goes away.
58
+ const audit = new QaAuditController();
59
+ ctx.effect(() => () => audit.dispose(), "dsh-qa-surface: audit controller");
38
60
  ctx.effect(() => {
39
61
  const removeService = ctx.provide("qaSurfacePanels", panels);
40
62
  return () => {
@@ -60,6 +82,13 @@ export async function apply(ctx) {
60
82
  const disposeRemote = await remote.$mount(qaSurfaceRemote);
61
83
  await ctx.inject(["remote.qaSurface", "remote.session", "remote.agentPresets"], (remoteContext) => {
62
84
  const injectedRemote = remoteContext.remote;
85
+ // Absent audit plugin => this callback never runs => no badge, no
86
+ // dialog, and nothing else about the surface changes (SPEC §48).
87
+ remoteContext.inject(["remote.sessionAudit"], (auditContext) => {
88
+ const mounted = auditContext.remote;
89
+ audit.attach(createQaAuditApi(mounted.sessionAudit));
90
+ return () => audit.detach();
91
+ });
63
92
  // Keep source checks independent of a previously generated lib/ Remote
64
93
  // declaration. The handwritten face is the same contract the generator
65
94
  // validates during build.
@@ -88,6 +117,7 @@ export async function apply(ctx) {
88
117
  updateUser: (token, userId, update) => policyRemote.adminUpdateUser(token, userId, update),
89
118
  conversations: (token, query, cursor, limit) => policyRemote.adminConversations(token, query, cursor, limit),
90
119
  conversation: (token, conversationId) => policyRemote.adminConversation(token, conversationId),
120
+ deleteConversation: (token, conversationId) => policyRemote.adminDeleteConversation(token, conversationId),
91
121
  feedback: (token, query, cursor, limit) => policyRemote.adminFeedback(token, query, cursor, limit),
92
122
  rateMessage: (token, conversationId, messageId, input) => policyRemote.adminRateMessage(token, conversationId, messageId, input),
93
123
  reviewQueue: (token, cursor, limit) => policyRemote.adminReviewQueue(token, cursor, limit),
@@ -99,6 +129,9 @@ export async function apply(ctx) {
99
129
  const sourceApi = {
100
130
  sources: (token, sessionId) => policyRemote.sources(token, sessionId),
101
131
  readSourceFile: (token, sessionId, sourcePath) => policyRemote.readSourceFile(token, sessionId, sourcePath),
132
+ listWorkspaceFiles: (token, sessionId, path) => policyRemote.listWorkspaceFiles(token, sessionId, path),
133
+ readWorkspaceFile: (token, sessionId, path) => policyRemote.readWorkspaceFile(token, sessionId, path),
134
+ previewWorkspaceDocument: (token, sessionId, path) => policyRemote.previewWorkspaceDocument(token, sessionId, path),
102
135
  };
103
136
  const questionApi = {
104
137
  pendingQuestions: (token, sessionId) => policyRemote.pendingQuestions(token, sessionId),
@@ -121,6 +154,10 @@ export async function apply(ctx) {
121
154
  pendingApprovals: (token, sessionId) => policyRemote.pendingApprovals(token, sessionId),
122
155
  answerApproval: (token, sessionId, requestId, decision) => policyRemote.answerApproval(token, sessionId, requestId, decision),
123
156
  };
157
+ const slashApi = {
158
+ catalog: (token, sessionId) => policyRemote.slashCatalog(token, sessionId),
159
+ execute: (token, sessionId, line, attachments) => policyRemote.slashExecute(token, sessionId, line, attachments),
160
+ };
124
161
  // The account gate rides its own remote; a stale token simply answers
125
162
  // "not authenticated" and the browser shows the login card.
126
163
  const accounts = new QaAccountsController({
@@ -189,7 +226,17 @@ export async function apply(ctx) {
189
226
  }, "dsh-qa-surface: settings-card");
190
227
  const syncRoute = () => {
191
228
  const snapshot = config.getSnapshot();
192
- route.configure(snapshot.config, snapshot.status === "ready" || snapshot.status === "unavailable");
229
+ // Kiosk: the harness route policy serves the application under the
230
+ // base path it published in the prelude, so the route the page
231
+ // matches is that path — the plugin config row is the overlay
232
+ // composition's setting and would diverge from the server policy.
233
+ const effective = kiosk
234
+ ? {
235
+ ...snapshot.config,
236
+ route: { path: qaKioskBasePath(), matchChildren: true },
237
+ }
238
+ : snapshot.config;
239
+ route.configure(effective, snapshot.status === "ready" || snapshot.status === "unavailable");
193
240
  };
194
241
  syncRoute();
195
242
  const unsubscribeConfig = config.subscribe(syncRoute);
@@ -254,7 +301,9 @@ export async function apply(ctx) {
254
301
  ctx.effect(() => {
255
302
  const style = document.createElement("style");
256
303
  style.dataset.dshQaSurface = "styles";
257
- style.textContent = QA_SURFACE_STYLES;
304
+ // The kiosk sheet carries no host-hiding rules: nothing native mounts
305
+ // beneath the surface in that composition, so there is nothing to hide.
306
+ style.textContent = kiosk ? QA_ROOT_STYLES : QA_OVERLAY_STYLES;
258
307
  document.head.append(style);
259
308
  return () => style.remove();
260
309
  }, "dsh-qa-surface: styles");
@@ -264,53 +313,80 @@ export async function apply(ctx) {
264
313
  config.dispose();
265
314
  route.dispose();
266
315
  }, "dsh-qa-surface: controllers");
267
- ctx.slots.inject("shell.overlay", () => ctx.slots.register({
268
- name: "shell.overlay",
269
- id: "dsh-qa-surface",
270
- order: -10_000,
271
- children: {
272
- "qa.surface.panel": { kind: "keyed", scope: "root" },
273
- },
274
- inject: () => {
275
- try {
276
- return {
277
- route,
278
- config,
279
- // The host dsh-session merge types ctx.sessions as SessionStore in
280
- // this program; the client assembly provides the ISessions face.
281
- sessions: ctx.sessions,
282
- conversation: ctx.uiConversation,
283
- api: qaApi,
284
- connection: ctx.connection.generation,
285
- secureSession,
286
- createSession: (token, subroleId, adminPreview) => policyRemote.createSession(token, subroleId, adminPreview),
287
- accessApi,
288
- adminApi,
289
- sourceApi,
290
- skillApi,
291
- approvalApi,
292
- questionApi,
293
- accounts,
294
- panels,
295
- settingsSections,
296
- // The upload service is optional on the page: a deployment that
297
- // does not serve it keeps images, and a staged file refuses the
298
- // send with a message instead of losing the draft. Read through
299
- // the untyped service lookup on purpose — the QA bundle does not
300
- // link the upload package.
301
- fileUpload: () => ctx.get("fileUpload"),
302
- };
303
- }
304
- catch {
305
- // The face reads host services lazily (cordis service
306
- // visibility), so assembly can fail here. Hand the guard an
307
- // empty face: it renders the fullscreen failure card instead
308
- // of the entry crashing, which would retire the overlay and
309
- // uncover the host shell beneath it.
310
- return {};
311
- }
312
- },
313
- }, QaSurfaceGuard));
316
+ // The face both presentations hand to the guard. Read host services
317
+ // lazily (cordis service visibility), so assembly can fail here — the
318
+ // guard then renders the failure card instead of the entry crashing.
319
+ const qaFace = () => {
320
+ try {
321
+ return {
322
+ route,
323
+ config,
324
+ // The host dsh-session merge types ctx.sessions as SessionStore in
325
+ // this program; the client assembly provides the ISessions face.
326
+ sessions: ctx.sessions,
327
+ conversation: ctx.uiConversation,
328
+ api: qaApi,
329
+ connection: ctx.connection.generation,
330
+ secureSession,
331
+ createSession: (token, subroleId, adminPreview) => policyRemote.createSession(token, subroleId, adminPreview),
332
+ accessApi,
333
+ adminApi,
334
+ sourceApi,
335
+ skillApi,
336
+ approvalApi,
337
+ questionApi,
338
+ slashApi,
339
+ accounts,
340
+ panels,
341
+ settingsSections,
342
+ audit,
343
+ // The upload service is optional on the page: a deployment that
344
+ // does not serve it keeps images, and a staged file refuses the
345
+ // send with a message instead of losing the draft. Read through
346
+ // the untyped service lookup on purpose — the QA bundle does not
347
+ // link the upload package.
348
+ fileUpload: () => ctx.get("fileUpload"),
349
+ };
350
+ }
351
+ catch {
352
+ return {};
353
+ }
354
+ };
355
+ if (kiosk) {
356
+ // The kiosk composition: the surface IS the application. Registering
357
+ // into 'root' (the runtime's single root slot) shadows the host's
358
+ // fail-safe occupant — a static error screen the ui-layout kiosk
359
+ // branch holds at a higher priority exactly for the case where this
360
+ // registration never happens. The panel seat is declared here so the
361
+ // extension panels keep resolving under the root owner.
362
+ //
363
+ // The call MUST stay attached to ctx.slots: the register
364
+ // implementation is a prototype function reading this.ctx (bound by
365
+ // the cordis service proxy at property-access time), so extracting
366
+ // it into a variable lands in a fiber-less context and throws. This
367
+ // program's type contract does not know the root's children seat
368
+ // (that is the host program's knowledge), hence the argument casts —
369
+ // they widen the arguments, never detach the receiver.
370
+ ctx.slots.register({
371
+ name: "root",
372
+ priority: QA_ROOT_OWNER_PRIORITY,
373
+ children: {
374
+ "qa.surface.panel": { kind: "keyed", scope: "root" },
375
+ },
376
+ inject: qaFace,
377
+ }, QaSurfaceGuard);
378
+ }
379
+ else {
380
+ ctx.slots.inject("shell.overlay", () => ctx.slots.register({
381
+ name: "shell.overlay",
382
+ id: "dsh-qa-surface",
383
+ order: -10_000,
384
+ children: {
385
+ "qa.surface.panel": { kind: "keyed", scope: "root" },
386
+ },
387
+ inject: qaFace,
388
+ }, QaSurfaceGuard));
389
+ }
314
390
  });
315
391
  return disposeRemote;
316
392
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The QA kiosk presentation mode, as the client half of the plugin sees it.
3
+ *
4
+ * The harness publishes the deployment's UI mode into every served document
5
+ * ahead of the first application script (the index prelude injected for
6
+ * `DSH_UI_MODE=qa`): `window.DSH_UI_MODE` and, alongside it, the QA base path
7
+ * the server-side route policy serves the application under. The mode — not
8
+ * `location.pathname` — is what the client branches on: the route policy owns
9
+ * which paths carry a document at all, and a client that keyed off the
10
+ * pathname would re-introduce exactly the paths the policy closed.
11
+ *
12
+ * A document without the globals (a host without the kiosk patches, a plugin
13
+ * bundle served into an overlay deployment) reads as the overlay
14
+ * presentation: the `shell.overlay` registration this plugin has always
15
+ * used. That keeps one plugin build compatible with both compositions.
16
+ */
17
+ /** Window global the harness prelude publishes for `DSH_UI_MODE=qa`. */
18
+ const UI_MODE_GLOBAL = "DSH_UI_MODE";
19
+ /** Window global naming the QA surface's base path in kiosk mode. */
20
+ const QA_BASE_PATH_GLOBAL = "DSH_QA_BASE_PATH";
21
+ /** The QA base path when the prelude published none. */
22
+ const DEFAULT_QA_BASE_PATH = "/qa";
23
+ /**
24
+ * Whether one URL pathname lives on a surface: the surface path itself or any
25
+ * child of it. A plain prefix check would also match `/qadmin` or `/qa-test`.
26
+ */
27
+ export function matchesSurface(pathname, surface) {
28
+ return pathname === surface || pathname.startsWith(`${surface}/`);
29
+ }
30
+ /**
31
+ * Whether this browser was served by a QA kiosk deployment.
32
+ * @param target - the global object; overridable for tests.
33
+ */
34
+ export function qaKioskMode(target = window) {
35
+ return target[UI_MODE_GLOBAL] === "qa";
36
+ }
37
+ /**
38
+ * The QA surface's base path of a kiosk deployment, normalized: single
39
+ * leading slash, no trailing slash. A malformed value falls back to the
40
+ * default rather than disabling the mode.
41
+ * @param target - the global object; overridable for tests.
42
+ */
43
+ export function qaKioskBasePath(target = window) {
44
+ const raw = target[QA_BASE_PATH_GLOBAL];
45
+ const value = typeof raw === "string" ? raw.trim() : "";
46
+ if (value === "" || !value.startsWith("/") || value.endsWith("/")) {
47
+ return DEFAULT_QA_BASE_PATH;
48
+ }
49
+ return value;
50
+ }
51
+ //# sourceMappingURL=kiosk.js.map