@yadsh/dsh-qa-surface 0.7.1 → 0.7.3
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/lib/access/service.js +3 -0
- package/lib/access/service.js.map +1 -1
- package/lib/client/QaSurface.js +4 -1
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/components/QaChangelog.js +30 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaHeader.js +2 -2
- package/lib/client/components/QaHeader.js.map +1 -1
- package/lib/client/session-sources.js +20 -1
- package/lib/client/session-sources.js.map +1 -1
- package/lib/client/styles.js +10 -7
- package/lib/client/styles.js.map +1 -1
- package/lib/client/user-settings/GeneralSettingsPage.js +6 -5
- package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -1
- package/lib/client/user-settings/SkillToolPicker.js +1 -1
- package/lib/client/user-settings/SkillToolPicker.js.map +1 -1
- package/lib/client/user-settings/StartersSettingsPage.js +10 -10
- package/lib/client/user-settings/StartersSettingsPage.js.map +1 -1
- package/lib/client.js +123 -46
- package/lib/client.js.map +1 -1
- package/lib/enforcement/tool-grants.js +40 -7
- package/lib/enforcement/tool-grants.js.map +1 -1
- package/lib/enforcement/tool-mask.js +52 -0
- package/lib/enforcement/tool-mask.js.map +1 -0
- package/lib/provenance/extractors.js +26 -1
- package/lib/provenance/extractors.js.map +1 -1
- package/lib/secure-session.js +28 -4
- package/lib/secure-session.js.map +1 -1
- package/lib/types/client/components/QaHeader.d.ts +11 -1
- package/lib/types/client/session-sources.d.ts +9 -0
- package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +5 -4
- package/lib/types/enforcement/tool-grants.d.ts +21 -3
- package/lib/types/enforcement/tool-mask.d.ts +38 -0
- package/lib/types/secure-session.d.ts +12 -0
- package/package.json +2 -2
|
@@ -49,16 +49,16 @@ export function QaStartersSettingsPage(props) {
|
|
|
49
49
|
return (_jsxs("form", { id: FORM_ID, className: "dsh-qa-settings__page", onSubmit: submit, children: [_jsx("h3", { className: "dsh-qa-settings__page-title", children: "\u0411\u044B\u0441\u0442\u0440\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("p", { className: "dsh-qa-settings__lead", children: "\u0411\u044B\u0441\u0442\u0440\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F \u2014 \u043A\u043D\u043E\u043F\u043A\u0438 \u043D\u0430\u0434 \u0441\u0442\u0440\u043E\u043A\u043E\u0439 \u0432\u0432\u043E\u0434\u0430 \u0432 \u043F\u0443\u0441\u0442\u043E\u043C \u0447\u0430\u0442\u0435. \u041D\u0430\u0436\u0430\u0442\u0438\u0435 \u0441\u0440\u0430\u0437\u0443 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0435\u0442 \u043F\u0440\u043E\u043C\u043F\u0442, \u043D\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u044F\u044F \u043F\u043E\u043B\u0435." }), _jsx(QaSettingsToggle, { checked: !hideDefaults, label: "\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0435 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438", hint: "\u0412\u043E\u043F\u0440\u043E\u0441\u044B, \u0437\u0430\u0434\u0430\u043D\u043D\u044B\u0435 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C \u0441\u0442\u0435\u043D\u0434\u0430, \u043E\u0441\u0442\u0430\u044E\u0442\u0441\u044F \u0440\u044F\u0434\u043E\u043C \u0441 \u0432\u0430\u0448\u0438\u043C\u0438 \u043A\u043D\u043E\u043F\u043A\u0430\u043C\u0438.", onChange: (visible) => {
|
|
50
50
|
setHideDefaults(!visible);
|
|
51
51
|
setSaved(false);
|
|
52
|
-
} }), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u0421\u0432\u043E\u0438\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u043D\u0435\u0442: \u0432 \u043F\u0443\u0441\u0442\u043E\u043C \u0447\u0430\u0442\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B." })) : (_jsx("div", { className: "dsh-qa-starters__list", children: rows.map((row, index) => (_jsxs("div", { className: "dsh-qa-starters__item", children: [
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
} }), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-settings__field-hint", children: "\u0421\u0432\u043E\u0438\u0445 \u043F\u043E\u0434\u0441\u043A\u0430\u0437\u043E\u043A \u043D\u0435\u0442: \u0432 \u043F\u0443\u0441\u0442\u043E\u043C \u0447\u0430\u0442\u0435 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u044E\u0442\u0441\u044F \u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B." })) : (_jsx("div", { className: "dsh-qa-starters__list", children: rows.map((row, index) => (_jsxs("div", { className: "dsh-qa-starters__item", children: [_jsx("div", { className: "dsh-qa-settings__field", children: _jsxs("label", { className: "dsh-qa-settings__field-label", children: ["\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435", _jsx("input", { value: row.label, maxLength: QA_STARTERS_MAX_LABEL, placeholder: "\u0427\u0442\u043E \u0432\u0438\u0434\u043D\u043E \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0435", onChange: (event) => {
|
|
53
|
+
const value = event.currentTarget.value;
|
|
54
|
+
setRows((current) => current.map((candidate, at) => at === index
|
|
55
|
+
? { ...candidate, label: value }
|
|
56
|
+
: candidate));
|
|
57
|
+
setSaved(false);
|
|
58
|
+
} })] }) }), _jsx("button", { type: "button", className: "dsh-qa-starters__remove", "aria-label": `Удалить «${row.label.trim() || "без названия"}»`, title: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C", onClick: () => {
|
|
59
|
+
setRows((current) => current.filter((_, at) => at !== index));
|
|
60
|
+
setSaved(false);
|
|
61
|
+
}, 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-settings__field", children: _jsxs("label", { className: "dsh-qa-settings__field-label", children: ["\u041F\u0440\u043E\u043C\u043F\u0442", _jsx("textarea", { rows: 2, value: row.prompt, maxLength: QA_STARTERS_MAX_PROMPT, placeholder: "\u0427\u0442\u043E \u0443\u0439\u0434\u0451\u0442 \u0432 \u0447\u0430\u0442 \u043F\u0440\u0438 \u043D\u0430\u0436\u0430\u0442\u0438\u0438", onChange: (event) => {
|
|
62
62
|
const value = event.currentTarget.value;
|
|
63
63
|
setRows((current) => current.map((candidate, at) => at === index
|
|
64
64
|
? { ...candidate, prompt: value }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartersSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/StartersSettingsPage.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StartersSettingsPage.js","sourceRoot":"","sources":["../../../src/client/user-settings/StartersSettingsPage.tsx"],"names":[],"mappings":"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"}
|
package/lib/client.js
CHANGED
|
@@ -11238,10 +11238,23 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11238
11238
|
this.refreshing = false;
|
|
11239
11239
|
this.refusal = "";
|
|
11240
11240
|
}
|
|
11241
|
+
/**
|
|
11242
|
+
* The Host's bundles win the turns they share with the projection, with one
|
|
11243
|
+
* exception: a bundle that collected nothing never erases a turn the
|
|
11244
|
+
* transcript accounts for. Both channels read the same durable tool results,
|
|
11245
|
+
* so a turn the projection filled and the Host reported empty means the
|
|
11246
|
+
* Host's collection missed that turn, not that the answer had no sources —
|
|
11247
|
+
* and without this guard such a turn loses the sources the reader could see
|
|
11248
|
+
* while it ran the moment the Host answers for it.
|
|
11249
|
+
*/
|
|
11241
11250
|
merge(projected) {
|
|
11242
11251
|
const merged = /* @__PURE__ */ new Map();
|
|
11243
11252
|
for (const bundle of projected) merged.set(bundle.turn, bundle);
|
|
11244
|
-
for (const bundle of this.bundles)
|
|
11253
|
+
for (const bundle of this.bundles) {
|
|
11254
|
+
const collected = merged.get(bundle.turn);
|
|
11255
|
+
if (collected !== void 0 && carriesNothing(bundle) && !carriesNothing(collected)) continue;
|
|
11256
|
+
merged.set(bundle.turn, bundle);
|
|
11257
|
+
}
|
|
11245
11258
|
return [...merged.values()].sort((left, right) => left.turn - right.turn);
|
|
11246
11259
|
}
|
|
11247
11260
|
/**
|
|
@@ -11282,6 +11295,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11282
11295
|
}
|
|
11283
11296
|
}
|
|
11284
11297
|
};
|
|
11298
|
+
/** True when a bundle holds no source at all, promoted or discovered. */
|
|
11299
|
+
function carriesNothing(bundle) {
|
|
11300
|
+
return bundle.sources.length === 0 && (bundle.discovered?.length ?? 0) === 0;
|
|
11301
|
+
}
|
|
11285
11302
|
/** Stable text for one refusal, so the same failure is not reported twice. */
|
|
11286
11303
|
function refusalKey(error) {
|
|
11287
11304
|
if (typeof error === "string") return error;
|
|
@@ -12085,6 +12102,24 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12085
12102
|
}
|
|
12086
12103
|
};
|
|
12087
12104
|
}
|
|
12105
|
+
/**
|
|
12106
|
+
* The Host's web tool opens its result with an envelope — `Fetched <url>
|
|
12107
|
+
* (HTTP <code>)`, then the untrusted-content notice — before the page itself.
|
|
12108
|
+
* Both lines are dropped here, and so is a first line that is the page's own
|
|
12109
|
+
* address: the card already prints the target URL, so a snippet drawn from
|
|
12110
|
+
* either of them would only repeat what the reader can already see.
|
|
12111
|
+
*/
|
|
12112
|
+
const WEB_FETCH_ENVELOPE = /^(?:Fetched\s+\S+\s+\(HTTP\s+\d+\)|External web content follows\..*)$/u;
|
|
12113
|
+
function fetchedSnippet(value, uri) {
|
|
12114
|
+
if (value === void 0) return void 0;
|
|
12115
|
+
const target = uri.replace(/\/+$/u, "");
|
|
12116
|
+
return snippet(value.split(/\r?\n/u).filter((line) => {
|
|
12117
|
+
const text = line.trim();
|
|
12118
|
+
if (text === "") return true;
|
|
12119
|
+
if (WEB_FETCH_ENVELOPE.test(text)) return false;
|
|
12120
|
+
return text.replace(/\/+$/u, "") !== target;
|
|
12121
|
+
}).join("\n"));
|
|
12122
|
+
}
|
|
12088
12123
|
function createWebFetchExtractor(urlOptions = {}) {
|
|
12089
12124
|
return {
|
|
12090
12125
|
id: "dsh-web-fetch",
|
|
@@ -12100,7 +12135,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12100
12135
|
if (uri === null) return [];
|
|
12101
12136
|
const explicitTitle = typeof meta?.title === "string" && meta.title.trim() !== "" ? meta.title.trim() : void 0;
|
|
12102
12137
|
const titleExplicit = explicitTitle !== void 0;
|
|
12103
|
-
const sourceSnippet =
|
|
12138
|
+
const sourceSnippet = fetchedSnippet(firstText(context.result), uri);
|
|
12104
12139
|
return [{
|
|
12105
12140
|
id: `web:${uri}`,
|
|
12106
12141
|
kind: "web",
|
|
@@ -14862,7 +14897,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14862
14897
|
]
|
|
14863
14898
|
});
|
|
14864
14899
|
}
|
|
14865
|
-
function QaHeader({ logoUrl, title, viewingSubagent, onCloseSubagent, agentPreset, roleSelector, administration, agentCount, agentsOpen, onToggleAgents, sourcesVisible, sourcesCount, sourcesComplete, sourcesOpen, onOpenSources, fileCount, filesOpen, onOpenFiles, panelLauncher, showReset, resetDisabled, onReset }) {
|
|
14900
|
+
function QaHeader({ logoUrl, title, viewingSubagent, onCloseSubagent, agentPreset, roleSelector, administration, agentCount, agentsOpen, onToggleAgents, sourcesVisible, sourcesCount, sourcesComplete, sourcesOpen, onOpenSources, fileCount, filesOpen, onOpenFiles, settings, panelLauncher, showReset, resetDisabled, onReset }) {
|
|
14866
14901
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
|
|
14867
14902
|
className: "dsh-qa-header",
|
|
14868
14903
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -14988,7 +15023,22 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14988
15023
|
onClick: administration.onOpen,
|
|
14989
15024
|
children: "Администрирование"
|
|
14990
15025
|
}),
|
|
14991
|
-
panelLauncher
|
|
15026
|
+
panelLauncher,
|
|
15027
|
+
settings === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
15028
|
+
type: "button",
|
|
15029
|
+
className: "dsh-qa-header__settings",
|
|
15030
|
+
title: settings.label,
|
|
15031
|
+
onClick: settings.onOpen,
|
|
15032
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
15033
|
+
viewBox: "0 0 16 16",
|
|
15034
|
+
"aria-hidden": "true",
|
|
15035
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
15036
|
+
cx: "8",
|
|
15037
|
+
cy: "8",
|
|
15038
|
+
r: "2.2"
|
|
15039
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M8 1.8v2M8 12.2v2M1.8 8h2M12.2 8h2M3.6 3.6l1.4 1.4M11 11l1.4 1.4M3.6 12.4 5 11M11 5l1.4-1.4" })]
|
|
15040
|
+
}), "Настройки"]
|
|
15041
|
+
})
|
|
14992
15042
|
]
|
|
14993
15043
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
14994
15044
|
className: "dsh-qa-header__tabs",
|
|
@@ -16572,8 +16622,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16572
16622
|
}
|
|
16573
16623
|
//#endregion
|
|
16574
16624
|
//#region src/client/components/QaChangelog.tsx
|
|
16575
|
-
const QA_VERSION = "0.7.
|
|
16625
|
+
const QA_VERSION = "0.7.3";
|
|
16576
16626
|
const QA_CHANGELOG = [
|
|
16627
|
+
{
|
|
16628
|
+
version: "0.7.3",
|
|
16629
|
+
date: "2026-09-16",
|
|
16630
|
+
sections: [{
|
|
16631
|
+
title: "Исправления",
|
|
16632
|
+
items: ["Инструменты, которые стенд подключает пресетом агента — работа с файлами, поиск по каталогам, интернет, делегирование экспертам-исследователям — больше не исчезают из чата. Ограничение набора собиралось только по глобальному списку инструментов, поэтому всё, что агент получает от пресета, из него выпадало: сервер отказывал в допуске с «unknown-tools», а при выборе роли проверка политики в браузере сообщала о несовпадении — чат не открывался. Теперь ограничение учитывает всё, что агент наследует, пропускает только служебные инструменты, которые он регистрирует сам (их в ограничение подставить нельзя), и из-за одного неназываемого имени сессия больше не срывается — такое имя просто не попадает в ограничение, а доступ к нему по-прежнему закрыт проверкой перед вызовом."]
|
|
16633
|
+
}]
|
|
16634
|
+
},
|
|
16635
|
+
{
|
|
16636
|
+
version: "0.7.2",
|
|
16637
|
+
date: "2026-09-16",
|
|
16638
|
+
sections: [{
|
|
16639
|
+
title: "Исправления",
|
|
16640
|
+
items: [
|
|
16641
|
+
"Чаты снова открываются: сервер отказывал в допуске, потому что набор инструментов роли называл служебный инструмент проверки активации, а такой инструмент агент регистрирует у себя сам — в ограничение его подставить нельзя. Теперь ограничение ставится только на наследуемые инструменты, служебный остаётся доступным, и выдача инструментов навыком больше не теряется молча из-за того же имени.",
|
|
16642
|
+
"Источники, появившиеся во время ответа, больше не исчезают после его завершения. Пустой ответ сервера об источниках хода больше не затирает то, что браузер прочитал из самой истории чата: список источников, видимый во время работы агента, остаётся рядом с ответом и после её окончания.",
|
|
16643
|
+
"В карточке скачанной страницы больше не повторяется её адрес: вместо служебной строки веб-инструмента «Fetched … (HTTP 200)» показывается начало текста самой страницы.",
|
|
16644
|
+
"В разделе «Быстрые сообщения» поля «Название» и «Промпт» выровнены по одной правой границе, а кнопка удаления подсказки больше не выглядит пустым полем ввода.",
|
|
16645
|
+
"Список инструментов в редакторе навыка стал компактнее и выше: длинные описания занимают две строки, а полный текст виден во всплывающей подсказке.",
|
|
16646
|
+
"Из раздела «Общие» убран пункт «Персональные интеграции и внешние системы» из списка будущих возможностей: интеграции уже доступны отдельным разделом настроек.",
|
|
16647
|
+
"Настройки пользователя больше не теряются в деплоях без списка чатов: если боковая панель с чатами скрыта (это поведение по умолчанию), кнопка «Настройки» появляется в шапке рядом с «Файлами», а при включённой панели вход остаётся прежним — по своему имени внизу списка чатов."
|
|
16648
|
+
]
|
|
16649
|
+
}]
|
|
16650
|
+
},
|
|
16577
16651
|
{
|
|
16578
16652
|
version: "0.7.1",
|
|
16579
16653
|
date: "2026-09-16",
|
|
@@ -16790,7 +16864,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16790
16864
|
className: "dsh-qa-changelog__date",
|
|
16791
16865
|
children: entry.date
|
|
16792
16866
|
}),
|
|
16793
|
-
entry.version === "0.7.
|
|
16867
|
+
entry.version === "0.7.3" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
16794
16868
|
className: "dsh-qa-changelog__current",
|
|
16795
16869
|
children: "текущая"
|
|
16796
16870
|
}) : null
|
|
@@ -18111,10 +18185,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18111
18185
|
//#region src/client/user-settings/GeneralSettingsPage.tsx
|
|
18112
18186
|
/**
|
|
18113
18187
|
* Placeholder with a purpose: the section exists so the dialog has a home for
|
|
18114
|
-
* the user-scoped preferences that follow (notifications,
|
|
18115
|
-
*
|
|
18116
|
-
*
|
|
18117
|
-
*
|
|
18188
|
+
* the user-scoped preferences that follow (notifications, privacy), and so the
|
|
18189
|
+
* thing it must not become is written down — deployment and chat policy live in
|
|
18190
|
+
* the Host settings, not here. It shows the account facts a user can act on
|
|
18191
|
+
* today and nothing invented, and it names only what is still missing: a
|
|
18192
|
+
* preference that already has its own tab does not belong on this list.
|
|
18118
18193
|
*/
|
|
18119
18194
|
function QaGeneralSettingsPage(props) {
|
|
18120
18195
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -18152,11 +18227,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18152
18227
|
title: "Скоро здесь",
|
|
18153
18228
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("ul", {
|
|
18154
18229
|
className: "dsh-qa-settings__list",
|
|
18155
|
-
children: [
|
|
18156
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "Настройки уведомлений" }),
|
|
18157
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "Персональные интеграции и внешние системы" }),
|
|
18158
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "Приватность и хранение данных" })
|
|
18159
|
-
]
|
|
18230
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "Настройки уведомлений" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: "Приватность и хранение данных" })]
|
|
18160
18231
|
})
|
|
18161
18232
|
})
|
|
18162
18233
|
]
|
|
@@ -18656,6 +18727,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18656
18727
|
}),
|
|
18657
18728
|
tool.description === "" ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
18658
18729
|
className: "dsh-qa-toolpicker__description",
|
|
18730
|
+
title: tool.description,
|
|
18659
18731
|
children: tool.description
|
|
18660
18732
|
})
|
|
18661
18733
|
]
|
|
@@ -19273,9 +19345,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19273
19345
|
className: "dsh-qa-starters__list",
|
|
19274
19346
|
children: rows.map((row, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
19275
19347
|
className: "dsh-qa-starters__item",
|
|
19276
|
-
children: [
|
|
19277
|
-
|
|
19278
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
19348
|
+
children: [
|
|
19349
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
19279
19350
|
className: "dsh-qa-settings__field",
|
|
19280
19351
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
19281
19352
|
className: "dsh-qa-settings__field-label",
|
|
@@ -19293,7 +19364,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19293
19364
|
}
|
|
19294
19365
|
})]
|
|
19295
19366
|
})
|
|
19296
|
-
}),
|
|
19367
|
+
}),
|
|
19368
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
19297
19369
|
type: "button",
|
|
19298
19370
|
className: "dsh-qa-starters__remove",
|
|
19299
19371
|
"aria-label": `Удалить «${row.label.trim() || "без названия"}»`,
|
|
@@ -19307,27 +19379,28 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
19307
19379
|
"aria-hidden": "true",
|
|
19308
19380
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m4 4 8 8m0-8-8 8" })
|
|
19309
19381
|
})
|
|
19310
|
-
})
|
|
19311
|
-
|
|
19312
|
-
|
|
19313
|
-
|
|
19314
|
-
|
|
19315
|
-
|
|
19316
|
-
|
|
19317
|
-
|
|
19318
|
-
|
|
19319
|
-
|
|
19320
|
-
|
|
19321
|
-
|
|
19322
|
-
|
|
19323
|
-
|
|
19324
|
-
|
|
19325
|
-
|
|
19326
|
-
|
|
19327
|
-
|
|
19328
|
-
|
|
19382
|
+
}),
|
|
19383
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
19384
|
+
className: "dsh-qa-settings__field",
|
|
19385
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
19386
|
+
className: "dsh-qa-settings__field-label",
|
|
19387
|
+
children: ["Промпт", /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
|
|
19388
|
+
rows: 2,
|
|
19389
|
+
value: row.prompt,
|
|
19390
|
+
maxLength: QA_STARTERS_MAX_PROMPT,
|
|
19391
|
+
placeholder: "Что уйдёт в чат при нажатии",
|
|
19392
|
+
onChange: (event) => {
|
|
19393
|
+
const value = event.currentTarget.value;
|
|
19394
|
+
setRows((current) => current.map((candidate, at) => at === index ? {
|
|
19395
|
+
...candidate,
|
|
19396
|
+
prompt: value
|
|
19397
|
+
} : candidate));
|
|
19398
|
+
setSaved(false);
|
|
19399
|
+
}
|
|
19400
|
+
})]
|
|
19401
|
+
})
|
|
19329
19402
|
})
|
|
19330
|
-
|
|
19403
|
+
]
|
|
19331
19404
|
}, index))
|
|
19332
19405
|
}),
|
|
19333
19406
|
rows.length >= 12 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
@@ -23304,6 +23377,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
23304
23377
|
filesOpen: rail.railOpen && rail.railTab === "files",
|
|
23305
23378
|
onOpenFiles: () => rail.openTab("files"),
|
|
23306
23379
|
panelLauncher: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QaPanelLauncher, { panels: props.panels }),
|
|
23380
|
+
settings: showSidebar ? void 0 : settingsEntry,
|
|
23307
23381
|
showReset: showResetButton,
|
|
23308
23382
|
resetDisabled: controller === void 0 || state.phase === "creating",
|
|
23309
23383
|
onReset: handleNewChat
|
|
@@ -23925,21 +23999,20 @@ body[data-dsh-qa-surface="active"] div:has(>[data-shell-overlay])>:not([data-she
|
|
|
23925
23999
|
.dsh-qa-settings__list{margin:0;padding-left:18px;color:var(--dsw-alias-label-secondary);font-size:13px;line-height:20px}
|
|
23926
24000
|
.dsh-qa-settings__list li{margin:2px 0}
|
|
23927
24001
|
.dsh-qa-starters__list{display:flex;flex-direction:column;gap:10px}
|
|
23928
|
-
.dsh-qa-starters__item{display:
|
|
23929
|
-
.dsh-qa-starters__item-
|
|
23930
|
-
.dsh-qa-
|
|
23931
|
-
.dsh-qa-starters__remove{
|
|
23932
|
-
.dsh-qa-starters__remove:hover{color:var(--dsh-qa-error);border-color:var(--dsh-alias-label-error)}
|
|
24002
|
+
.dsh-qa-starters__item{display:grid;grid-template-columns:minmax(0,1fr) 28px;column-gap:8px;row-gap:8px;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:10px;background:var(--dsw-alias-bg-layer-3)}
|
|
24003
|
+
.dsh-qa-starters__item>.dsh-qa-settings__field{grid-column:1}
|
|
24004
|
+
.dsh-qa-starters__remove{appearance:none;grid-column:2;grid-row:1;align-self:end;flex:none;width:28px;height:28px;margin-bottom:6px;display:flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:8px;background:0 0;color:var(--dsw-alias-label-tertiary);cursor:pointer}
|
|
24005
|
+
.dsh-qa-starters__remove:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsh-qa-error)}
|
|
23933
24006
|
.dsh-qa-starters__remove:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:1px}
|
|
23934
24007
|
.dsh-qa-starters__remove svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
|
|
23935
|
-
.dsh-qa-toolpicker__list{display:flex;flex-direction:column;gap:2px;max-height:
|
|
24008
|
+
.dsh-qa-toolpicker__list{display:flex;flex-direction:column;gap:2px;max-height:min(52vh,440px);margin:8px 0 0;padding:0;list-style:none;overflow-y:auto}
|
|
23936
24009
|
.dsh-qa-toolpicker__group{padding:8px 0 3px;color:var(--dsw-alias-label-tertiary);font-size:11px;font-weight:600;line-height:16px}
|
|
23937
24010
|
.dsh-qa-toolpicker__row{margin:0}
|
|
23938
24011
|
.dsh-qa-toolpicker__label{display:grid;grid-template-columns:16px minmax(0,auto) minmax(0,1fr);align-items:baseline;gap:9px;padding:6px 8px;border-radius:8px;cursor:pointer}
|
|
23939
24012
|
.dsh-qa-toolpicker__label:hover{background:var(--dsw-alias-interactive-bg-hover)}
|
|
23940
24013
|
.dsh-qa-toolpicker__label input{width:15px;height:15px;margin:0;accent-color:var(--dsh-qa-brand)}
|
|
23941
24014
|
.dsh-qa-toolpicker__name{color:var(--dsw-alias-label-primary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:18px}
|
|
23942
|
-
.dsh-qa-toolpicker__description{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px;min-width:0}
|
|
24015
|
+
.dsh-qa-toolpicker__description{display:-webkit-box;overflow:hidden;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px;min-width:0;-webkit-box-orient:vertical;-webkit-line-clamp:2}
|
|
23943
24016
|
.dsh-qa-toolpicker__selected{margin-right:auto;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:17px}
|
|
23944
24017
|
@media (max-width:720px){.dsh-qa-modal__panel--settings{height:min(640px,calc(100vh - 48px))}.dsh-qa-settings{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.dsh-qa-settings__nav{flex-direction:row;gap:4px;padding:8px 10px;border-right:0;border-bottom:1px solid var(--dsw-alias-border-l2);overflow-x:auto;overflow-y:hidden}.dsh-qa-settings__tab{white-space:nowrap}.dsh-qa-settings__content{padding:12px 14px 0}.dsh-qa-settings__page{padding-bottom:18px}.dsh-qa-settings__actions{margin:auto -14px -18px;padding:10px 14px}}
|
|
23945
24018
|
.dsh-qa-surface *{box-sizing:border-box}
|
|
@@ -24001,6 +24074,10 @@ body[data-dsh-qa-surface="active"] div:has(>[data-shell-overlay])>:not([data-she
|
|
|
24001
24074
|
.dsh-qa-header__files[aria-expanded="true"]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}
|
|
24002
24075
|
.dsh-qa-header__files svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
|
|
24003
24076
|
.dsh-qa-header__files:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:2px}
|
|
24077
|
+
.dsh-qa-header__settings{display:inline-flex;align-items:center;gap:6px;flex:none;padding:5px 10px;border:0;border-radius:8px;background:transparent;color:var(--dsw-alias-label-secondary);font:inherit;font-size:13px;line-height:20px;cursor:pointer}
|
|
24078
|
+
.dsh-qa-header__settings:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}
|
|
24079
|
+
.dsh-qa-header__settings svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
|
|
24080
|
+
.dsh-qa-header__settings:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:2px}
|
|
24004
24081
|
.dsh-qa-role-selector select,.dsh-qa-header__admin{height:30px;padding:4px 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font:inherit;font-size:12px;line-height:20px;cursor:pointer}
|
|
24005
24082
|
.dsh-qa-role-selector select:hover,.dsh-qa-header__admin:hover{border-color:var(--dsw-alias-label-dimmed);color:var(--dsw-alias-label-primary)}
|
|
24006
24083
|
.dsh-qa-role-selector select:focus-visible,.dsh-qa-header__admin:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:1px}
|