@yadsh/dsh-qa-surface 0.1.1 → 0.3.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.
- package/CHANGELOG.md +151 -0
- package/README.md +239 -16
- package/SPEC-dsh-qa-surface.md +600 -96
- package/capability-policy.json +5 -0
- package/compatibility.json +18 -4
- package/cordis.patch.yml +11 -0
- package/docs/ARCHITECTURE.md +50 -8
- package/docs/COMPATIBILITY.md +5 -4
- package/docs/CONFIGURATION.md +184 -3
- package/docs/SOURCES-MIGRATION.md +28 -0
- package/docs/SOURCES-PROVENANCE-AUDIT.md +88 -0
- package/docs/SPEC-dsh-qa-surface-accounts.md +219 -0
- package/docs/SPEC-dsh-qa-surface-sources-provenance.md +1692 -0
- package/lib/accounts/index.js +2 -0
- package/lib/accounts/index.js.map +1 -0
- package/lib/accounts/store.js +478 -0
- package/lib/accounts/store.js.map +1 -0
- package/lib/attestation.js +10 -0
- package/lib/attestation.js.map +1 -0
- package/lib/cli.js +143 -0
- package/lib/cli.js.map +1 -0
- package/lib/client/QaAccountsController.js +329 -0
- package/lib/client/QaAccountsController.js.map +1 -0
- package/lib/client/QaConfigController.js +111 -4
- package/lib/client/QaConfigController.js.map +1 -1
- package/lib/client/QaSessionController.js +621 -163
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +303 -24
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +324 -49
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/attestation.js +66 -0
- package/lib/client/attestation.js.map +1 -0
- package/lib/client/chat-index.js +86 -0
- package/lib/client/chat-index.js.map +1 -0
- package/lib/client/components/Markdown.js +124 -13
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaAgentsDrawer.js +40 -0
- package/lib/client/components/QaAgentsDrawer.js.map +1 -0
- package/lib/client/components/QaAuthGate.js +40 -0
- package/lib/client/components/QaAuthGate.js.map +1 -0
- package/lib/client/components/QaChangelog.js +112 -0
- package/lib/client/components/QaChangelog.js.map +1 -0
- package/lib/client/components/QaComposer.js +132 -15
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaMessage.js +214 -10
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaSidebar.js +167 -0
- package/lib/client/components/QaSidebar.js.map +1 -0
- package/lib/client/components/QaSourcesDrawer.js +127 -0
- package/lib/client/components/QaSourcesDrawer.js.map +1 -0
- package/lib/client/components/QaTurnRail.js +281 -0
- package/lib/client/components/QaTurnRail.js.map +1 -0
- package/lib/client/components/QaWelcomeNotice.js +125 -0
- package/lib/client/components/QaWelcomeNotice.js.map +1 -0
- package/lib/client/components/QaWidthHandle.js +142 -0
- package/lib/client/components/QaWidthHandle.js.map +1 -0
- package/lib/client/components/QaWorkGroup.js +135 -0
- package/lib/client/components/QaWorkGroup.js.map +1 -0
- package/lib/client/components/VariantSwitcher.js +29 -0
- package/lib/client/components/VariantSwitcher.js.map +1 -0
- package/lib/client/components/format.js +48 -0
- package/lib/client/components/format.js.map +1 -0
- package/lib/client/components/source-refs.js +78 -0
- package/lib/client/components/source-refs.js.map +1 -0
- package/lib/client/create-session.js +51 -0
- package/lib/client/create-session.js.map +1 -0
- package/lib/client/index.js +166 -35
- package/lib/client/index.js.map +1 -1
- package/lib/client/project-session-state.js +78 -0
- package/lib/client/project-session-state.js.map +1 -0
- package/lib/client/session-admission.js +38 -0
- package/lib/client/session-admission.js.map +1 -0
- package/lib/client/session-assets.js +52 -0
- package/lib/client/session-assets.js.map +1 -0
- package/lib/client/session-sources.js +61 -0
- package/lib/client/session-sources.js.map +1 -0
- package/lib/client/settlement.js +24 -0
- package/lib/client/settlement.js.map +1 -0
- package/lib/client/styles.js +450 -43
- package/lib/client/styles.js.map +1 -1
- package/lib/client/tool-presentation.js +102 -0
- package/lib/client/tool-presentation.js.map +1 -0
- package/lib/client/turn-sources.js +98 -0
- package/lib/client/turn-sources.js.map +1 -0
- package/lib/client/types.js +15 -0
- package/lib/client/types.js.map +1 -0
- package/lib/client/use-session-ui-state.js +68 -0
- package/lib/client/use-session-ui-state.js.map +1 -0
- package/lib/client/use-transcript-view.js +44 -0
- package/lib/client/use-transcript-view.js.map +1 -0
- package/lib/client/wait-for.js +49 -0
- package/lib/client/wait-for.js.map +1 -0
- package/lib/client.js +12551 -918
- package/lib/client.js.map +1 -1
- package/lib/config.js +226 -58
- package/lib/config.js.map +1 -1
- package/lib/entry-redirect.js +44 -0
- package/lib/entry-redirect.js.map +1 -0
- package/lib/host-route.js +25 -1
- package/lib/host-route.js.map +1 -1
- package/lib/index.js +354 -72
- package/lib/index.js.map +1 -1
- package/lib/launch-token.js +42 -0
- package/lib/launch-token.js.map +1 -0
- package/lib/lockdown-policy.js +20 -0
- package/lib/lockdown-policy.js.map +1 -0
- package/lib/provenance/collector.js +40 -0
- package/lib/provenance/collector.js.map +1 -0
- package/lib/provenance/connectors.js +147 -0
- package/lib/provenance/connectors.js.map +1 -0
- package/lib/provenance/dedupe.js +89 -0
- package/lib/provenance/dedupe.js.map +1 -0
- package/lib/provenance/extractors.js +340 -0
- package/lib/provenance/extractors.js.map +1 -0
- package/lib/provenance/file-preview.js +39 -0
- package/lib/provenance/file-preview.js.map +1 -0
- package/lib/provenance/host-store.js +387 -0
- package/lib/provenance/host-store.js.map +1 -0
- package/lib/provenance/index.js +9 -0
- package/lib/provenance/index.js.map +1 -0
- package/lib/provenance/normalize.js +128 -0
- package/lib/provenance/normalize.js.map +1 -0
- package/lib/provenance/reported.js +53 -0
- package/lib/provenance/reported.js.map +1 -0
- package/lib/provenance/types.js +2 -0
- package/lib/provenance/types.js.map +1 -0
- package/lib/resolve-config.js +283 -10
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +212 -0
- package/lib/secure-session.js.map +1 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +784 -0
- package/lib/typert.remote-client.d.ts +40 -0
- package/lib/typert.remote-client.js +597 -0
- package/lib/types/accounts/index.d.ts +2 -0
- package/lib/types/accounts/store.d.ts +121 -0
- package/lib/types/attestation.d.ts +17 -0
- package/lib/types/cli.d.ts +9 -0
- package/lib/types/client/QaAccountsController.d.ts +95 -0
- package/lib/types/client/QaConfigController.d.ts +35 -3
- package/lib/types/client/QaSessionController.d.ts +146 -20
- package/lib/types/client/QaSurface.d.ts +11 -5
- package/lib/types/client/QaTranscriptAdapter.d.ts +13 -3
- package/lib/types/client/attestation.d.ts +25 -0
- package/lib/types/client/chat-index.d.ts +28 -0
- package/lib/types/client/components/Markdown.d.ts +17 -3
- package/lib/types/client/components/QaAgentsDrawer.d.ts +25 -0
- package/lib/types/client/components/QaAuthGate.d.ts +15 -0
- package/lib/types/client/components/QaChangelog.d.ts +21 -0
- package/lib/types/client/components/QaComposer.d.ts +12 -2
- package/lib/types/client/components/QaMessage.d.ts +22 -2
- package/lib/types/client/components/QaSidebar.d.ts +69 -0
- package/lib/types/client/components/QaSourcesDrawer.d.ts +20 -0
- package/lib/types/client/components/QaTurnRail.d.ts +59 -0
- package/lib/types/client/components/QaWelcomeNotice.d.ts +27 -0
- package/lib/types/client/components/QaWidthHandle.d.ts +36 -0
- package/lib/types/client/components/QaWorkGroup.d.ts +19 -0
- package/lib/types/client/components/VariantSwitcher.d.ts +19 -0
- package/lib/types/client/components/format.d.ts +9 -0
- package/lib/types/client/components/source-refs.d.ts +16 -0
- package/lib/types/client/create-session.d.ts +16 -0
- package/lib/types/client/index.d.ts +2 -5
- package/lib/types/client/project-session-state.d.ts +30 -0
- package/lib/types/client/session-admission.d.ts +23 -0
- package/lib/types/client/session-assets.d.ts +20 -0
- package/lib/types/client/session-sources.d.ts +28 -0
- package/lib/types/client/settlement.d.ts +6 -0
- package/lib/types/client/tool-presentation.d.ts +6 -0
- package/lib/types/client/turn-sources.d.ts +14 -0
- package/lib/types/client/types.d.ts +93 -0
- package/lib/types/client/use-session-ui-state.d.ts +35 -0
- package/lib/types/client/use-transcript-view.d.ts +20 -0
- package/lib/types/client/wait-for.d.ts +11 -0
- package/lib/types/entry-redirect.d.ts +20 -0
- package/lib/types/host-route.d.ts +14 -1
- package/lib/types/index.d.ts +67 -7
- package/lib/types/launch-token.d.ts +21 -0
- package/lib/types/lockdown-policy.d.ts +18 -0
- package/lib/types/provenance/collector.d.ts +26 -0
- package/lib/types/provenance/connectors.d.ts +11 -0
- package/lib/types/provenance/dedupe.d.ts +6 -0
- package/lib/types/provenance/extractors.d.ts +14 -0
- package/lib/types/provenance/file-preview.d.ts +10 -0
- package/lib/types/provenance/host-store.d.ts +54 -0
- package/lib/types/provenance/index.d.ts +10 -0
- package/lib/types/provenance/normalize.d.ts +13 -0
- package/lib/types/provenance/reported.d.ts +5 -0
- package/lib/types/provenance/types.d.ts +78 -0
- package/lib/types/secure-session.d.ts +31 -0
- package/lib/types/types.d.ts +304 -1
- package/package.json +70 -27
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Fragment } from "react";
|
|
2
|
+
import { memo, Fragment } from "react";
|
|
3
|
+
import { SourceIcon } from "./QaSourcesDrawer.js";
|
|
4
|
+
import { sourceFileName } from "./source-refs.js";
|
|
3
5
|
const INLINE = /(\[[^\]]+\]\([^\s)]+\)|`[^`]+`|\*\*[^*]+\*\*|\*[^*]+\*)/gu;
|
|
6
|
+
const TABLE_SEPARATOR = /^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-{2,}:?\s*)*\|?\s*$/u;
|
|
7
|
+
const ORDERED_LIST = /^\d{1,3}[.)]\s+/u;
|
|
8
|
+
const HORIZONTAL_RULE = /^\s*(?:-{3,}|\*{3,}|_{3,})\s*$/u;
|
|
9
|
+
const BLOCK_START = /^(#{1,3})\s+|```|^[-*]\s+|^\d{1,3}[.)]\s+|^>\s|(?:^\s*(?:-{3,}|\*{3,}|_{3,})\s*$)/u;
|
|
4
10
|
function safeHref(value) {
|
|
5
11
|
try {
|
|
6
|
-
const url = new URL(value
|
|
12
|
+
const url = new URL(value);
|
|
7
13
|
return ["http:", "https:", "mailto:"].includes(url.protocol)
|
|
8
14
|
? value
|
|
9
15
|
: undefined;
|
|
@@ -12,7 +18,21 @@ function safeHref(value) {
|
|
|
12
18
|
return undefined;
|
|
13
19
|
}
|
|
14
20
|
}
|
|
15
|
-
|
|
21
|
+
/**
|
|
22
|
+
* One inline source footnote: a pill over the matched link or path with a
|
|
23
|
+
* hover/focus preview card (title, target, snippet). A URL-backed source is
|
|
24
|
+
* an anchor that opens right away; a path-backed one is a button whose click
|
|
25
|
+
* the owner routes to the sources drawer.
|
|
26
|
+
*/
|
|
27
|
+
function SourceChip({ source, label, href, onOpen, }) {
|
|
28
|
+
const target = source.path ?? source.uri ?? source.title;
|
|
29
|
+
const face = (_jsxs(_Fragment, { children: [_jsx("span", { className: "dsh-qa-srcref__icon", "data-kind": source.kind, children: _jsx(SourceIcon, { kind: source.kind }) }), _jsx("span", { className: "dsh-qa-srcref__label", children: label }), _jsxs("span", { className: "dsh-qa-srcref__card", "aria-hidden": "true", children: [_jsxs("span", { className: "dsh-qa-srcref__card-title", children: [_jsx("span", { className: "dsh-qa-srcref__icon", "data-kind": source.kind, children: _jsx(SourceIcon, { kind: source.kind }) }), source.title || label] }), _jsx("span", { className: "dsh-qa-srcref__card-target", children: target }), source.snippet === undefined ? null : (_jsx("span", { className: "dsh-qa-srcref__card-snippet", children: source.snippet }))] })] }));
|
|
30
|
+
if (href !== undefined) {
|
|
31
|
+
return (_jsx("a", { className: "dsh-qa-srcref", "data-kind": source.kind, href: href, target: "_blank", rel: "noopener noreferrer", children: face }));
|
|
32
|
+
}
|
|
33
|
+
return (_jsx("button", { type: "button", className: "dsh-qa-srcref", "data-kind": source.kind, onClick: onOpen === undefined ? undefined : () => onOpen(source), children: face }));
|
|
34
|
+
}
|
|
35
|
+
function inline(text, keyPrefix, sources = {}) {
|
|
16
36
|
const nodes = [];
|
|
17
37
|
let offset = 0;
|
|
18
38
|
for (const match of text.matchAll(INLINE)) {
|
|
@@ -24,10 +44,29 @@ function inline(text, keyPrefix) {
|
|
|
24
44
|
if (token.startsWith("[")) {
|
|
25
45
|
const parts = /^\[([^\]]+)\]\(([^\s)]+)\)$/u.exec(token);
|
|
26
46
|
const href = parts?.[2] === undefined ? undefined : safeHref(parts[2]);
|
|
27
|
-
|
|
47
|
+
if (href === undefined) {
|
|
48
|
+
nodes.push(token);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const source = sources.refs?.resolveUrl(href);
|
|
52
|
+
nodes.push(source === undefined ? (_jsx("a", { href: href, target: "_blank", rel: "noreferrer", children: parts?.[1] }, key)) : (_jsx(SourceChip, { source: source, label: parts?.[1] || source.title, href: href }, key)));
|
|
53
|
+
}
|
|
28
54
|
}
|
|
29
55
|
else if (token.startsWith("`")) {
|
|
30
|
-
|
|
56
|
+
const value = token.slice(1, -1);
|
|
57
|
+
const source = sources.refs?.resolvePath(value);
|
|
58
|
+
if (source === undefined) {
|
|
59
|
+
nodes.push(_jsx("code", { children: value }, key));
|
|
60
|
+
}
|
|
61
|
+
else if (source.path === undefined) {
|
|
62
|
+
nodes.push(_jsx(SourceChip, { source: source, label: source.title || value, href: safeHref(source.uri ?? "") }, key));
|
|
63
|
+
}
|
|
64
|
+
else if (sources.onSourceOpen === undefined) {
|
|
65
|
+
nodes.push(_jsx("code", { children: value }, key));
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
nodes.push(_jsx(SourceChip, { source: source, label: sourceFileName(source), onOpen: sources.onSourceOpen }, key));
|
|
69
|
+
}
|
|
31
70
|
}
|
|
32
71
|
else if (token.startsWith("**")) {
|
|
33
72
|
nodes.push(_jsx("strong", { children: token.slice(2, -2) }, key));
|
|
@@ -41,8 +80,58 @@ function inline(text, keyPrefix) {
|
|
|
41
80
|
nodes.push(text.slice(offset));
|
|
42
81
|
return nodes;
|
|
43
82
|
}
|
|
44
|
-
/**
|
|
45
|
-
|
|
83
|
+
/** Split one GFM table row into trimmed cells, honoring escaped pipes. */
|
|
84
|
+
function splitTableRow(line) {
|
|
85
|
+
let row = line.trim();
|
|
86
|
+
if (row.startsWith("|"))
|
|
87
|
+
row = row.slice(1);
|
|
88
|
+
if (row.endsWith("|") && !row.endsWith("\\|"))
|
|
89
|
+
row = row.slice(0, -1);
|
|
90
|
+
return row
|
|
91
|
+
.split(/(?<!\\)\|/u)
|
|
92
|
+
.map((cell) => cell.trim().replace(/\\\|/gu, "|"));
|
|
93
|
+
}
|
|
94
|
+
function isTableStart(lines, index) {
|
|
95
|
+
const header = lines[index] ?? "";
|
|
96
|
+
if (!header.includes("|"))
|
|
97
|
+
return false;
|
|
98
|
+
return TABLE_SEPARATOR.test(lines[index + 1] ?? "");
|
|
99
|
+
}
|
|
100
|
+
function renderTable(lines, index, sources) {
|
|
101
|
+
const header = splitTableRow(lines[index] ?? "");
|
|
102
|
+
const aligns = splitTableRow(lines[index + 1] ?? "").map((cell) => {
|
|
103
|
+
const left = cell.startsWith(":");
|
|
104
|
+
const right = cell.endsWith(":");
|
|
105
|
+
if (left && right)
|
|
106
|
+
return "center";
|
|
107
|
+
return right ? "right" : "left";
|
|
108
|
+
});
|
|
109
|
+
let cursor = index + 2;
|
|
110
|
+
const rows = [];
|
|
111
|
+
while (cursor < lines.length &&
|
|
112
|
+
(lines[cursor] ?? "").trim() !== "" &&
|
|
113
|
+
(lines[cursor] ?? "").includes("|") &&
|
|
114
|
+
!/^(#{1,3})\s+|```|^[-*]\s+|^\d{1,3}[.)]\s+|^>\s/u.test(lines[cursor] ?? "")) {
|
|
115
|
+
rows.push(splitTableRow(lines[cursor] ?? ""));
|
|
116
|
+
cursor += 1;
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
node: (_jsx("div", { className: "dsh-qa-md-table", children: _jsxs("table", { children: [_jsx("thead", { children: _jsx("tr", { children: header.map((cell, cellIndex) => (_jsx("th", { style: { textAlign: aligns[cellIndex] ?? "left" }, children: inline(cell, `th:${index}:${cellIndex}`, sources) }, `h:${cellIndex}`))) }) }), _jsx("tbody", { children: rows.map((row, rowIndex) => (_jsx("tr", { children: header.map((_, cellIndex) => (_jsx("td", { style: { textAlign: aligns[cellIndex] ?? "left" }, children: inline(row[cellIndex] ?? "", `td:${rowIndex}:${cellIndex}`, sources) }, `d:${rowIndex}:${cellIndex}`))) }, `r:${rowIndex}`))) })] }) }, `table:${index}`)),
|
|
120
|
+
next: cursor,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Deliberately small, HTML-free Markdown renderer for assistant-visible text.
|
|
125
|
+
* Memoized on the text value: stream updates re-render only the message whose
|
|
126
|
+
* text actually changed, so committed history is never re-parsed.
|
|
127
|
+
*/
|
|
128
|
+
export const Markdown = memo(function Markdown({ text, sourceRefs, onSourceOpen, }) {
|
|
129
|
+
const sources = sourceRefs === undefined
|
|
130
|
+
? {}
|
|
131
|
+
: {
|
|
132
|
+
refs: sourceRefs,
|
|
133
|
+
...(onSourceOpen === undefined ? {} : { onSourceOpen }),
|
|
134
|
+
};
|
|
46
135
|
const lines = text.replace(/\r\n?/gu, "\n").split("\n");
|
|
47
136
|
const blocks = [];
|
|
48
137
|
for (let index = 0; index < lines.length;) {
|
|
@@ -60,9 +149,20 @@ export function Markdown({ text }) {
|
|
|
60
149
|
blocks.push(_jsx("pre", { children: _jsx("code", { "data-language": language || undefined, children: code.join("\n") }) }, `code:${index}`));
|
|
61
150
|
continue;
|
|
62
151
|
}
|
|
152
|
+
if (isTableStart(lines, index)) {
|
|
153
|
+
const table = renderTable(lines, index, sources);
|
|
154
|
+
blocks.push(table.node);
|
|
155
|
+
index = table.next;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (HORIZONTAL_RULE.test(line)) {
|
|
159
|
+
blocks.push(_jsx("hr", {}, `hr:${index}`));
|
|
160
|
+
index += 1;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
63
163
|
const heading = /^(#{1,3})\s+(.+)$/u.exec(line);
|
|
64
164
|
if (heading !== null) {
|
|
65
|
-
const content = inline(heading[2] ?? "", `heading:${index}
|
|
165
|
+
const content = inline(heading[2] ?? "", `heading:${index}`, sources);
|
|
66
166
|
const key = `heading:${index}`;
|
|
67
167
|
blocks.push(heading[1]?.length === 1 ? (_jsx("h2", { children: content }, key)) : heading[1]?.length === 2 ? (_jsx("h3", { children: content }, key)) : (_jsx("h4", { children: content }, key)));
|
|
68
168
|
index += 1;
|
|
@@ -72,14 +172,24 @@ export function Markdown({ text }) {
|
|
|
72
172
|
const items = [];
|
|
73
173
|
while (index < lines.length && /^[-*]\s+/u.test(lines[index] ?? "")) {
|
|
74
174
|
const content = (lines[index] ?? "").replace(/^[-*]\s+/u, "");
|
|
75
|
-
items.push(_jsx("li", { children: inline(content, `item:${index}
|
|
175
|
+
items.push(_jsx("li", { children: inline(content, `item:${index}`, sources) }, `item:${index}`));
|
|
76
176
|
index += 1;
|
|
77
177
|
}
|
|
78
178
|
blocks.push(_jsx("ul", { children: items }, `list:${index}`));
|
|
79
179
|
continue;
|
|
80
180
|
}
|
|
181
|
+
if (ORDERED_LIST.test(line)) {
|
|
182
|
+
const items = [];
|
|
183
|
+
while (index < lines.length && ORDERED_LIST.test(lines[index] ?? "")) {
|
|
184
|
+
const content = (lines[index] ?? "").replace(ORDERED_LIST, "");
|
|
185
|
+
items.push(_jsx("li", { children: inline(content, `oitem:${index}`, sources) }, `oitem:${index}`));
|
|
186
|
+
index += 1;
|
|
187
|
+
}
|
|
188
|
+
blocks.push(_jsx("ol", { children: items }, `olist:${index}`));
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
81
191
|
if (line.startsWith("> ")) {
|
|
82
|
-
blocks.push(_jsx("blockquote", { children: inline(line.slice(2), `quote:${index}
|
|
192
|
+
blocks.push(_jsx("blockquote", { children: inline(line.slice(2), `quote:${index}`, sources) }, `quote:${index}`));
|
|
83
193
|
index += 1;
|
|
84
194
|
continue;
|
|
85
195
|
}
|
|
@@ -91,12 +201,13 @@ export function Markdown({ text }) {
|
|
|
91
201
|
index += 1;
|
|
92
202
|
while (index < lines.length &&
|
|
93
203
|
(lines[index] ?? "").trim() !== "" &&
|
|
94
|
-
|
|
204
|
+
!BLOCK_START.test(lines[index] ?? "") &&
|
|
205
|
+
!isTableStart(lines, index)) {
|
|
95
206
|
paragraph.push(lines[index] ?? "");
|
|
96
207
|
index += 1;
|
|
97
208
|
}
|
|
98
|
-
blocks.push(_jsx("p", { children: paragraph.map((part, partIndex) => (_jsxs(Fragment, { children: [partIndex === 0 ? null : _jsx("br", {}), inline(part, `paragraph:${index}:${partIndex}
|
|
209
|
+
blocks.push(_jsx("p", { children: paragraph.map((part, partIndex) => (_jsxs(Fragment, { children: [partIndex === 0 ? null : _jsx("br", {}), inline(part, `paragraph:${index}:${partIndex}`, sources)] }, `line:${partIndex}`))) }, `paragraph:${index}`));
|
|
99
210
|
}
|
|
100
211
|
return _jsx(_Fragment, { children: blocks });
|
|
101
|
-
}
|
|
212
|
+
});
|
|
102
213
|
//# sourceMappingURL=Markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../src/client/components/Markdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,GAAG,2DAA2D,CAAC;AAE3E,SAAS,QAAQ,CAAC,KAAa;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC1D,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,SAAiB;IAC7C,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,GAAG,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CACR,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CACnB,KAAK,CACN,CAAC,CAAC,CAAC,CACF,YAAa,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,YACtD,KAAK,EAAE,CAAC,CAAC,CAAC,IADL,GAAG,CAEP,CACL,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,yBAAiB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAxB,GAAG,CAA6B,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,2BAAmB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAxB,GAAG,CAA+B,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,uBAAe,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAxB,GAAG,CAA2B,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAA6B;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC;YACX,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9B,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM;gBAAE,KAAK,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,wBACE,gCAAqB,QAAQ,IAAI,SAAS,YAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,IAD5D,QAAQ,KAAK,EAAE,CAEnB,CACP,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,WAAW,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACzB,uBAAe,OAAO,IAAb,GAAG,CAAgB,CAC7B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7B,uBAAe,OAAO,IAAb,GAAG,CAAgB,CAC7B,CAAC,CAAC,CAAC,CACF,uBAAe,OAAO,IAAb,GAAG,CAAgB,CAC7B,CACF,CAAC;YACF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAgB,EAAE,CAAC;YAC9B,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,IAAI,CACR,uBAA2B,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,EAAE,CAAC,IAAlD,QAAQ,KAAK,EAAE,CAAyC,CAClE,CAAC;gBACF,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uBAA2B,KAAK,IAAvB,QAAQ,KAAK,EAAE,CAAc,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CACT,+BACG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,EAAE,CAAC,IADzB,SAAS,KAAK,EAAE,CAEpB,CACd,CAAC;YACF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,IAAI,CAAC,CAAC;QACX,OACE,KAAK,GAAG,KAAK,CAAC,MAAM;YACpB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAClC,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAC5D,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QACD,MAAM,CAAC,IAAI,CACT,sBACG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAClC,MAAC,QAAQ,eACN,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAM,EAC/B,MAAM,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,SAAS,EAAE,CAAC,KAFnC,QAAQ,SAAS,EAAE,CAGvB,CACZ,CAAC,IANI,aAAa,KAAK,EAAE,CAOxB,CACL,CAAC;IACJ,CAAC;IACD,OAAO,4BAAG,MAAM,GAAI,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../src/client/components/Markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { relativeTime } from "./format.js";
|
|
3
|
+
/**
|
|
4
|
+
* Direct subagent children of the open chat, running first. Reads the host
|
|
5
|
+
* session list's lineage (parentId + origin), so no extra subscription beyond
|
|
6
|
+
* the list the surface already follows.
|
|
7
|
+
*/
|
|
8
|
+
export function collectSubagents(byId, rootId, now = Date.now()) {
|
|
9
|
+
if (rootId === null)
|
|
10
|
+
return [];
|
|
11
|
+
const rows = [];
|
|
12
|
+
for (const summary of Object.values(byId)) {
|
|
13
|
+
if (summary.parentId !== rootId || summary.origin !== "subagent")
|
|
14
|
+
continue;
|
|
15
|
+
rows.push({
|
|
16
|
+
id: summary.id,
|
|
17
|
+
title: summary.blank ? "Субагент" : summary.displayTitle,
|
|
18
|
+
running: summary.running,
|
|
19
|
+
completed: summary.completed === true,
|
|
20
|
+
meta: relativeTime(summary.updatedAt, now),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return rows.sort((left, right) => left.running === right.running ? 0 : left.running ? -1 : 1);
|
|
24
|
+
}
|
|
25
|
+
/** Right-hand panel listing the chat's subagents. */
|
|
26
|
+
export function QaAgentsDrawer({ agents, activeId, onView, onClose, }) {
|
|
27
|
+
return (_jsxs("aside", { className: "dsh-qa-agents", "aria-label": "\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B \u0447\u0430\u0442\u0430", children: [_jsxs("div", { className: "dsh-qa-agents__head", children: [_jsxs("span", { children: ["\u0421\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u044B (", agents.length, ")"] }), _jsx("button", { type: "button", "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u043F\u0438\u0441\u043E\u043A \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u043E\u0432", title: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C", onClick: onClose, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) })] }), _jsx("div", { className: "dsh-qa-agents__list", children: agents.map((agent) => {
|
|
28
|
+
const active = activeId === agent.id;
|
|
29
|
+
return (_jsxs("button", { type: "button", className: active
|
|
30
|
+
? "dsh-qa-agents__item dsh-qa-agents__item--active"
|
|
31
|
+
: "dsh-qa-agents__item", onClick: () => onView(agent.id, agent.title), children: [_jsx("span", { className: agent.running
|
|
32
|
+
? "dsh-qa-agents__dot dsh-qa-agents__dot--running"
|
|
33
|
+
: "dsh-qa-agents__dot", "aria-hidden": "true" }), _jsxs("span", { className: "dsh-qa-agents__text", children: [_jsx("span", { className: "dsh-qa-agents__title", children: agent.title }), _jsx("span", { className: "dsh-qa-agents__meta", children: agent.running
|
|
34
|
+
? "выполняется"
|
|
35
|
+
: agent.completed
|
|
36
|
+
? "завершён"
|
|
37
|
+
: agent.meta })] }), _jsx("span", { className: "dsh-qa-agents__open", children: active ? "открыт" : "смотреть" })] }, agent.id));
|
|
38
|
+
}) })] }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=QaAgentsDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaAgentsDrawer.js","sourceRoot":"","sources":["../../../src/client/components/QaAgentsDrawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
function Logo({ logoUrl }) {
|
|
4
|
+
if (logoUrl !== null) {
|
|
5
|
+
return _jsx("img", { className: "dsh-qa-auth__logo", src: logoUrl, alt: "" });
|
|
6
|
+
}
|
|
7
|
+
return (_jsxs("svg", { className: "dsh-qa-auth__logo", viewBox: "0 0 20 20", "aria-hidden": "true", children: [_jsx("path", { d: "M10 2.75a6.4 6.4 0 0 0-4.9 10.52c.2.24.28.5.24.79l-.2 1.44 1.9-.7c.24-.09.5-.06.74.05A6.4 6.4 0 1 0 10 2.75Z" }), _jsx("path", { d: "M7.4 8.1h5.2M7.4 11h3.2" })] }));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The full-frame login/registration card shown instead of the chat while the
|
|
11
|
+
* deployment has accounts enabled and the browser holds no valid identity.
|
|
12
|
+
* Errors are the Host's coarse codes rendered as audience-safe copy.
|
|
13
|
+
*/
|
|
14
|
+
export function QaAuthGate(props) {
|
|
15
|
+
const { snapshot, accounts } = props;
|
|
16
|
+
const mode = snapshot.stage === "gate" ? snapshot.mode : "login";
|
|
17
|
+
const busy = snapshot.stage === "gate" ? snapshot.busy : false;
|
|
18
|
+
const [email, setEmail] = useState("");
|
|
19
|
+
const [password, setPassword] = useState("");
|
|
20
|
+
const showRegister = props.allowRegistration;
|
|
21
|
+
const submit = (event) => {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
if (busy)
|
|
24
|
+
return;
|
|
25
|
+
const operation = mode === "register"
|
|
26
|
+
? accounts.register(email, password)
|
|
27
|
+
: accounts.login(email, password);
|
|
28
|
+
void operation;
|
|
29
|
+
};
|
|
30
|
+
return (_jsx("main", { className: "dsh-qa-surface dsh-qa-auth", "aria-label": "\u0412\u0445\u043E\u0434 \u0432 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A", children: _jsxs("form", { className: "dsh-qa-auth__card", onSubmit: submit, children: [_jsxs("div", { className: "dsh-qa-auth__brand", children: [_jsx(Logo, { logoUrl: props.logoUrl }), _jsx("h1", { children: props.title })] }), showRegister ? (_jsxs("div", { className: "dsh-qa-auth__tabs", role: "tablist", "aria-label": "\u0412\u0445\u043E\u0434 \u0438\u043B\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F", children: [_jsx("button", { type: "button", role: "tab", "aria-selected": mode === "login", className: mode === "login"
|
|
31
|
+
? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
|
|
32
|
+
: "dsh-qa-auth__tab", onClick: () => accounts.setMode("login"), children: "\u0412\u0445\u043E\u0434" }), _jsx("button", { type: "button", role: "tab", "aria-selected": mode === "register", className: mode === "register"
|
|
33
|
+
? "dsh-qa-auth__tab dsh-qa-auth__tab--active"
|
|
34
|
+
: "dsh-qa-auth__tab", onClick: () => accounts.setMode("register"), children: "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })] })) : null, _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { type: "email", name: "email", autoComplete: "email", required: true, disabled: busy, value: email, onChange: (event) => setEmail(event.currentTarget.value) })] }), _jsxs("label", { className: "dsh-qa-auth__field", children: [_jsx("span", { children: "\u041F\u0430\u0440\u043E\u043B\u044C" }), _jsx("input", { type: "password", name: "password", autoComplete: mode === "register" ? "new-password" : "current-password", required: true, minLength: 8, disabled: busy, value: password, onChange: (event) => setPassword(event.currentTarget.value) })] }), snapshot.stage === "gate" && snapshot.error !== null ? (_jsx("p", { className: "dsh-qa-auth__error", role: "alert", children: snapshot.error })) : null, _jsx("button", { type: "submit", className: "dsh-qa-auth__submit", disabled: busy, children: busy
|
|
35
|
+
? "Подождите…"
|
|
36
|
+
: mode === "register"
|
|
37
|
+
? "Зарегистрироваться"
|
|
38
|
+
: "Войти" })] }) }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=QaAuthGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaAuthGate.js","sourceRoot":"","sources":["../../../src/client/components/QaAuthGate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
export const QA_VERSION = __DSH_QA_VERSION__;
|
|
4
|
+
export const QA_CHANGELOG = [
|
|
5
|
+
{
|
|
6
|
+
version: "0.3.0",
|
|
7
|
+
date: "2026-09-12",
|
|
8
|
+
sections: [
|
|
9
|
+
{
|
|
10
|
+
title: "Новое",
|
|
11
|
+
items: [
|
|
12
|
+
"Аккаунты QA: вход и регистрация, персональная история чатов, выход из аккаунта и управление пользователями через CLI.",
|
|
13
|
+
"Администратор видит только свои чаты по умолчанию. Общую историю пользователей можно явно включить настройкой accounts.showOtherUsersChats.",
|
|
14
|
+
"Предупреждение при входе в тестовый QA-интерфейс с пояснением о работе с данными.",
|
|
15
|
+
"Навигация по ответу стала нагляднее: шкала хода работы, сноски на источники и подробности выполненных инструментов.",
|
|
16
|
+
"История версий теперь доступна прямо из нижней части сайдбара.",
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
title: "Исправления",
|
|
21
|
+
items: [
|
|
22
|
+
"Поиск по чатам учитывает владельца, получил кнопку очистки и больше не ломает ширину строк; роли администратора отображаются отдельно.",
|
|
23
|
+
"Убраны декоративные точки-разделители из списка чатов, сообщений и карточек источников.",
|
|
24
|
+
"Переключение между чатами больше не переносит вложения и другое состояние предыдущей сессии; устранены гонки асинхронной загрузки.",
|
|
25
|
+
"Изменения аккаунтов, сделанные через CLI, подхватываются без перезапуска, а запись хранилища стала безопаснее для параллельных процессов.",
|
|
26
|
+
"Ошибки создания сессии, остановленные и завершившиеся ошибкой инструменты теперь показываются пользователю корректно.",
|
|
27
|
+
"Клиент и упакованный плагин обновлены для интерфейсов DSH 0.1.5-rc.2.",
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
version: "0.2.0",
|
|
34
|
+
date: "2026-09-10",
|
|
35
|
+
sections: [
|
|
36
|
+
{
|
|
37
|
+
title: "Новое",
|
|
38
|
+
items: [
|
|
39
|
+
"Вложения-картинки: перетащите файл в чат, вставьте из буфера или выберите через кнопку — превью можно убрать до отправки.",
|
|
40
|
+
"Субагенты-эксперты: панель со списком, живой просмотр их работы только для чтения и свёрнутые уведомления о завершении.",
|
|
41
|
+
"Карточки источников с полным просмотром вывода, кликабельными ссылками и кнопкой открытия.",
|
|
42
|
+
"Перегенерация ответа с переключением вариантов, как в ChatGPT.",
|
|
43
|
+
"Оценки ответов с метаданными на-hover: длительность, время до первого токена, токенов в секунду.",
|
|
44
|
+
"История чатов: поиск, сворачивание сайдбара, сортировка по обновлению, черновики-чаты без создания сессии до первого вопроса.",
|
|
45
|
+
"Закрепление чата за каталогом/workspace с понятным отказом, когда workspace недоступен.",
|
|
46
|
+
"Плашка с дисклеймером об использовании данных под полем ввода.",
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: "Исправления",
|
|
51
|
+
items: [
|
|
52
|
+
"В опубликованный пакет снова вошли модули host- и remote-энтрипоинтов, которые терялись при упаковке.",
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
version: "0.1.1",
|
|
59
|
+
date: "2026-09-06",
|
|
60
|
+
sections: [
|
|
61
|
+
{
|
|
62
|
+
title: "Исправления",
|
|
63
|
+
items: [
|
|
64
|
+
"Отдельный браузерный интерфейс QA поверх нативных сессий DeepSeek Harness.",
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
version: "0.1.0",
|
|
71
|
+
date: "2026-09-05",
|
|
72
|
+
sections: [
|
|
73
|
+
{
|
|
74
|
+
title: "Новое",
|
|
75
|
+
items: [
|
|
76
|
+
"Полноэкранный чат /qa на нативных сессиях DSH: потоковый ответ, Stop, Новый чат, безопасный Markdown, адаптивный интерфейс.",
|
|
77
|
+
"Группировка рассуждений и вызовов инструментов в сворачиваемый блок «Работал над ответом».",
|
|
78
|
+
"История чатов в сайдбаре с поиском по этому браузеру, переключением и удалением чата из индекса.",
|
|
79
|
+
"Русскоязычный интерфейс, вращающиеся фразы-«мысли» и чипсы быстрых вопросов на пустом чате.",
|
|
80
|
+
"Безопасность: аттестация политики хоста, закреплённый read-only профиль, белый список инструментов и защита от повторного выполнения.",
|
|
81
|
+
"Рендер GFM-таблиц, нумерованных списков и разделителей в ответах.",
|
|
82
|
+
"Работа по сети: деплой-оверлей для LAN и запасной путь получения конфигурации.",
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
/**
|
|
89
|
+
* The version/changelog dialog opened from the sidebar footer. Rendering is
|
|
90
|
+
* a no-op while closed; Escape and a backdrop click close it.
|
|
91
|
+
*/
|
|
92
|
+
export function QaChangelogModal(props) {
|
|
93
|
+
const closeButton = useRef(null);
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
if (!props.open)
|
|
96
|
+
return;
|
|
97
|
+
closeButton.current?.focus();
|
|
98
|
+
const onKey = (event) => {
|
|
99
|
+
if (event.key === "Escape")
|
|
100
|
+
props.onClose();
|
|
101
|
+
};
|
|
102
|
+
window.addEventListener("keydown", onKey);
|
|
103
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
104
|
+
}, [props.open, props.onClose]);
|
|
105
|
+
if (!props.open)
|
|
106
|
+
return null;
|
|
107
|
+
return (_jsx("div", { className: "dsh-qa-changelog", role: "dialog", "aria-modal": "true", "aria-label": "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0432\u0435\u0440\u0441\u0438\u0439", onClick: (event) => {
|
|
108
|
+
if (event.target === event.currentTarget)
|
|
109
|
+
props.onClose();
|
|
110
|
+
}, children: _jsxs("div", { className: "dsh-qa-changelog__panel", children: [_jsxs("header", { className: "dsh-qa-changelog__head", children: [_jsx("h2", { className: "dsh-qa-changelog__title", children: "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u0432\u0435\u0440\u0441\u0438\u0439" }), _jsx("button", { ref: closeButton, type: "button", className: "dsh-qa-changelog__close", "aria-label": "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0432\u0435\u0440\u0441\u0438\u0439", onClick: props.onClose, children: _jsx("svg", { viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "m3.5 3.5 7 7m0-7-7 7" }) }) })] }), _jsx("div", { className: "dsh-qa-changelog__body", children: QA_CHANGELOG.map((entry) => (_jsxs("section", { className: "dsh-qa-changelog__entry", children: [_jsxs("h3", { className: "dsh-qa-changelog__version", children: ["\u0412\u0435\u0440\u0441\u0438\u044F ", entry.version, _jsx("span", { className: "dsh-qa-changelog__date", children: entry.date }), entry.version === QA_VERSION ? (_jsx("span", { className: "dsh-qa-changelog__current", children: "\u0442\u0435\u043A\u0443\u0449\u0430\u044F" })) : null] }), entry.sections.map((section) => (_jsxs("div", { className: "dsh-qa-changelog__section", children: [_jsx("h4", { className: "dsh-qa-changelog__section-title", children: section.title }), _jsx("ul", { className: "dsh-qa-changelog__list", children: section.items.map((item) => (_jsx("li", { children: item }, item))) })] }, section.title)))] }, entry.version))) })] }) }));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=QaChangelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaChangelog.js","sourceRoot":"","sources":["../../../src/client/components/QaChangelog.tsx"],"names":[],"mappings":"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"}
|