@anweat/dsh-browser 0.1.15-alpha.1 → 0.1.15

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/README.md CHANGED
@@ -10,34 +10,43 @@
10
10
 
11
11
  | 插件发布通道 | DSH 基线 | 兼容承诺 |
12
12
  |---|---|---|
13
- | npm `latest`(`0.1.12`) | `dsh-v0.1.1-rc.2` 至 `dsh-v0.1.2-rc.1` | 已验证维护基线 |
14
- | npm `next` 候选(`0.1.13-alpha.1`) | `dsh-v0.1.5-alpha.1` | 精确依赖与真实 profile 验收目标 |
13
+ | `0.1.12` 及更早的维护版本 | `dsh-v0.1.1-rc.2` 至 `dsh-v0.1.2-rc.1` | 旧基线;不与新插件混装 |
14
+ | `0.1.15` | `dsh-v0.1.7-rc.2` | 精确锁定此宿主版本;组合安装、真实 Web profile 与设置持久化已验证 |
15
15
 
16
- `0.1.13-alpha.1` 使用 DSH 新客户端分包:状态存储来自
16
+ `0.1.15` 使用 DSH 新客户端分包:状态存储来自
17
17
  `dsh-client-store`,设置契约来自 `dsh-client-ui-settings`,客户端 Context
18
- 来自 Cordis。该候选不会覆盖 npm `latest`。
18
+ 来自 Cordis。npm 上 `0.1.15-alpha.2` 仍声明旧版 DSH peer,不能与本版混用。
19
+
20
+ 启动期设置解析对宿主版本自适应:旧宿主仍提供 `settings.register(ns, schema, opts)`
21
+ 时沿用 live scope;`dsh-v0.1.7-rc.2` 起移除了该方法,设置页改由 Loader 条目的
22
+ `Config` schema 直接派生,插件改为读取宿主注入的条目配置。
23
+
24
+ 浏览器设置卡片则只适配 `dsh-v0.1.7-rc.2`:`SettingsScope`/`ctx.settingsScope`
25
+ (≤ `dsh-v0.1.5-alpha.1`)与 `ConfigForm`/`ctx.configForms`(`dsh-v0.1.7-rc.2`+)
26
+ 是互斥的客户端契约,没有一份源码能同时编译两者,因此 `devDependencies` 锁定
27
+ `0.1.7-rc.2`。Host 半边的自适应是优雅降级,不是受支持目标。
19
28
 
20
29
  ## 安装
21
30
 
22
31
  ```bash
23
- dsh plugin --profile web add @anweat/dsh-browser
32
+ dsh plugin --profile web add @anweat/dsh-browser@0.1.15
24
33
  # 或本地目录 / tarball:
25
34
  dsh plugin --profile web add ./dsh-browser
26
35
  # 重启(web profile 关闭了 HMR):
27
36
  dsh --profile web
28
37
  ```
29
38
 
30
- > npm `latest` 延续现有维护基线;本开发分支精确适配 `dsh-v0.1.5-alpha.1`。
39
+ > 本版精确适配 `dsh-v0.1.7-rc.2`,不承诺兼容其他 DSH 版本。
31
40
  > 若你的 harness 是包含未发布提交的本地源码 checkout,版本号可能有出入——用
32
41
  > `dsh plugin --profile web add ./<path>` 并在 profile 的 `pnpm-workspace.yaml`
33
42
  > 里对齐版本后重装即可。
34
43
 
35
44
  ## 从旧版本升级
36
45
 
37
- Web Search Pro 与浏览器插件应同步升级;`dsh-web-search-pro >= 0.1.8` 需要 `@anweat/dsh-browser >= 0.1.8`。面向 `dsh-v0.1.5-alpha.1` 联调时,使用 browser 与 Web Search Pro 的 npm `next` 候选并完整重启 profile。0.1.11 移除了对旧版 `dsh-settings` 的运行时 `settingsNamespace` 导入;0.1.10 修复工具描述被 DSH 误解析为 prompt 变量。
46
+ Web Search Pro 与浏览器插件应同步升级;面向 `dsh-v0.1.7-rc.2` 不要混用仍声明旧 peer 的 Browser `0.1.15-alpha.2`。
38
47
 
39
48
  ```bash
40
- dsh plugin --profile web add @anweat/dsh-browser@next dsh-web-search-pro@next
49
+ dsh plugin --profile web add @anweat/dsh-browser@0.1.15 dsh-web-search-pro@0.1.15
41
50
  ```
42
51
 
43
52
  升级后完整停止并重启 Web profile,再调用 `browser_status`、`browser_opencli_status` 和 `web_backend_status`;仅刷新网页不会重新加载插件服务或 Web Search Pro 配置面板。尤其不要只升级 Web Search Pro:新的工具目录、Patchright 运行时和调用缓冲都来自浏览器插件。
@@ -346,6 +355,8 @@ opencli doctor
346
355
 
347
356
  健康状态应同时包含 daemon running、extension connected 和一个 connected Chrome profile。仅安装 npm 包不等于 Browser Bridge 可用;Chrome 扩展断开时,OpenCLI 社区搜索会明确失败,而普通 Playwright 浏览器工具不受影响。
348
357
 
358
+ 在 DSH Desktop(Electron)中,插件会从 `PATH` 查找真正的 Node.js 可执行文件来运行内置 OpenCLI 和浏览器运行时 CLI。若 `browser_opencli_status` 报告找不到 Node.js,可在启动 DSH Desktop 的环境中设置 `DSH_BROWSER_NODE` 为 `node.exe` 的绝对路径,然后重启 Desktop。
359
+
349
360
  插件内先调用 `browser_opencli_status`,不要只看 `browser_status.opencliEnabled`。后者表示配置开关,
350
361
  前者才是真实连接。通用调用以 argv 数组传入,不经过 shell,也不会自行拼接引号:
351
362
 
package/cordis.patch.yml CHANGED
@@ -5,22 +5,9 @@
5
5
  #
6
6
  # Login state: prefer named `authProfiles` with explicit `allowedDomains` (see
7
7
  # README). `storageStatePath` remains as a legacy global fallback.
8
+ # DSH 0.1.7-rc.2 persists editable config in a separate top-level profile row;
9
+ # placing config inside insert can make settings writes appear successful but
10
+ # disappear on restart. Config schema defaults supply the initial values.
8
11
  - insert:
9
12
  - id: browser
10
13
  name: '@anweat/dsh-browser'
11
- config:
12
- automationMode: standard
13
- browserRuntime: playwright
14
- channel: chromium
15
- headless: true
16
- opencliEnabled: true
17
- usagePolicy:
18
- minDelayMs: 750
19
- maxConcurrency: 2
20
- burst: 3
21
- maxPagesPerRun: 20
22
- maxDepth: 2
23
- retryLimit: 2
24
- backoffBaseMs: 1000
25
- cooldownMs: 30000
26
- verbose: false
@@ -1,15 +1,17 @@
1
1
  /** Loopback-only Host RPC for the automation asset review UI. */
2
2
  import { executeAutomationAsset } from "./automation-execution.js";
3
- const CHANNEL = '/api';
3
+ /**
4
+ * This plugin's own logical RPC channel.
5
+ *
6
+ * NOT the shared `/api`: `intercept('/api', …)` does not share that channel, it
7
+ * REPLACES its fallback — the interceptor's `matches` gate becomes the only
8
+ * route resolution, so every other plugin's endpoint (`settings/describe`,
9
+ * `session/list`, …) starts returning 404 and the whole Web UI loses its API.
10
+ * A plugin that owns its endpoints registers a private channel instead.
11
+ */
12
+ const CHANNEL = '/dsh-browser-assets';
4
13
  const PREFIX = 'dsh-browser-assets';
5
14
  const ENDPOINTS = ['snapshot', 'get', 'save', 'summarize', 'dismiss', 'validate', 'test', 'status'];
6
- function failure(rpcId, message) {
7
- return Response.json({
8
- type: 'server-response',
9
- rpcId,
10
- result: { ok: false, error: { code: 'gateway/bad-request', message, details: {} } },
11
- });
12
- }
13
15
  function record(payload) {
14
16
  if (!payload || typeof payload !== 'object' || Array.isArray(payload))
15
17
  throw new Error('request payload must be an object');
@@ -24,13 +26,24 @@ function stringField(payload, name) {
24
26
  return value;
25
27
  }
26
28
  export function registerAutomationAssetRpc(ctx, store, service) {
27
- ctx.inject(['connection'], (connectionCtx) => {
28
- const connection = connectionCtx.connection;
29
+ ctx.inject(['connection', 'webServer'], (connectionCtx) => {
30
+ // Register the channel with the Host transport rather than hand-rolling the
31
+ // client-request/server-response envelope on an exact Fetch route. The
32
+ // transport owns envelope decoding, the admission/authentication fence, the
33
+ // cancellation signal, and the Peer scope the handler receives — none of
34
+ // which a manual route can reconstruct.
35
+ // The dedicated registrar mounts its Web route through the Context that
36
+ // reads it. The root Context owns webServer; the plugin effect owns cleanup.
37
+ const connection = connectionCtx.root.connection;
29
38
  const handler = async (endpoint, rawPayload) => {
30
39
  try {
40
+ // The transport hands the handler the endpoint relative to the channel,
41
+ // so a request to `/dsh-browser-assets/snapshot` arrives as `snapshot`.
42
+ // Accept a prefixed form too, so either address style keeps working.
43
+ const leaf = endpoint.startsWith(PREFIX + '/') ? endpoint.slice(PREFIX.length + 1) : endpoint;
31
44
  const payload = record(rawPayload);
32
45
  let value;
33
- switch (endpoint) {
46
+ switch (leaf) {
34
47
  case 'snapshot':
35
48
  value = store.snapshot();
36
49
  break;
@@ -66,39 +79,7 @@ export function registerAutomationAssetRpc(ctx, store, service) {
66
79
  return { ok: false, error: { code: 'bad-request', message: String(error instanceof Error ? error.message : error).slice(0, 500), details: {} } };
67
80
  }
68
81
  };
69
- for (const endpoint of ENDPOINTS) {
70
- const method = `${PREFIX}/${endpoint}`;
71
- connectionCtx.effect(() => connection.fetch.register({
72
- path: `${CHANNEL}/${method}`,
73
- methods: ['POST'],
74
- requestBody: 'buffered',
75
- fetch: async (request) => {
76
- let body;
77
- try {
78
- body = await request.json();
79
- }
80
- catch {
81
- return new Response('body is not JSON', { status: 400 });
82
- }
83
- const rpcId = typeof body === 'object' && body !== null
84
- && typeof body.rpcId === 'string'
85
- ? body.rpcId
86
- : 'invalid-request';
87
- if (typeof body !== 'object' || body === null
88
- || body.type !== 'client-request'
89
- || body.method !== method) {
90
- return failure(rpcId, 'invalid RPC request');
91
- }
92
- try {
93
- const result = await handler(endpoint, body.payload, request.signal);
94
- return Response.json({ type: 'server-response', rpcId, result });
95
- }
96
- catch (error) {
97
- return failure(rpcId, String(error instanceof Error ? error.message : error).slice(0, 500));
98
- }
99
- },
100
- }), `dsh-browser: ${method} RPC route`);
101
- }
82
+ connectionCtx.effect(() => connection.rpc.handle(CHANNEL, handler), 'dsh-browser: automation asset RPC channel');
102
83
  });
103
84
  }
104
85
  //# sourceMappingURL=automation-assets-rpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation-assets-rpc.js","sourceRoot":"","sources":["../src/automation-assets-rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation-assets-rpc.js","sourceRoot":"","sources":["../src/automation-assets-rpc.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,16 @@
1
+ /**
2
+ * The browser settings card, as the Plugins page renders it.
3
+ *
4
+ * The page owns the card frame — its title button, disclosure, and artwork come
5
+ * from the slot registration — so this component renders only what goes inside:
6
+ * the one-liner for `view: 'summary'`, and the form body for `view: 'page'`.
7
+ * Drawing our own frame here produced a doubled card and an inner header button
8
+ * that swallowed the platform's clicks.
9
+ *
10
+ * The form chrome is the shared `SettingsForm`/`SettingsValueField` pair from
11
+ * `@deepseek-ai/dsh-client-ui-primitives`, the same components every official
12
+ * settings page uses, so the card matches them without restating their markup.
13
+ * @module dsh-browser/client/SettingsCard
14
+ */
1
15
  import type { BrowserSettingsCardProps } from './index.ts';
2
- export declare function SettingsCard(props: BrowserSettingsCardProps): import("react").JSX.Element | null;
16
+ export declare function SettingsCard(props: BrowserSettingsCardProps): import("react").JSX.Element;
@@ -1,22 +1,59 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The browser settings card, as the Plugins page renders it.
4
+ *
5
+ * The page owns the card frame — its title button, disclosure, and artwork come
6
+ * from the slot registration — so this component renders only what goes inside:
7
+ * the one-liner for `view: 'summary'`, and the form body for `view: 'page'`.
8
+ * Drawing our own frame here produced a doubled card and an inner header button
9
+ * that swallowed the platform's clicks.
10
+ *
11
+ * The form chrome is the shared `SettingsForm`/`SettingsValueField` pair from
12
+ * `@deepseek-ai/dsh-client-ui-primitives`, the same components every official
13
+ * settings page uses, so the card matches them without restating their markup.
14
+ * @module dsh-browser/client/SettingsCard
15
+ */
2
16
  import { useEffect, useState } from 'react';
17
+ import { SettingsForm, SettingsValueField } from '@deepseek-ai/dsh-client-ui-primitives';
18
+ import { FIELD_SPECS, JSON_FIELD_SPECS, JSON_FIELDS } from "./form.js";
3
19
  import { styles as css } from "./styles.js";
4
- function FieldShell(props) {
5
- const id = `dsh-browser-${props.field}`;
6
- return _jsxs("div", { className: `${css.field} ${props.state.invalid ? css.invalid : ''}`, children: [_jsxs("div", { className: css.fieldHead, children: [_jsx("label", { className: css.label, htmlFor: id, children: props.label }), props.state.overridden ? _jsx("button", { type: "button", className: css.reset, disabled: props.disabled, onClick: () => props.onReset(props.field), children: props.resetLabel }) : null] }), props.children, _jsx("p", { className: css.hint, children: props.hint })] });
20
+ /** The copy the shared form frame renders, from this page's dictionary. */
21
+ function formLabels(t) {
22
+ return {
23
+ unavailable: t('unavailable'),
24
+ readOnly: t('readOnly'),
25
+ saveFailed: t('saveFailed'),
26
+ save: t('save'),
27
+ saving: t('saving'),
28
+ };
29
+ }
30
+ const SECTION_LAYOUT = [
31
+ { title: 'freedom', hint: 'freedomHint', fields: ['enabled', 'automationMode', 'opencliEnabled'] },
32
+ { title: 'runtime', hint: 'runtimeHint', fields: ['browserRuntime', 'channel', 'headless', 'autoInstall', 'executablePath', 'cdpPort'] },
33
+ { title: 'advanced', hint: 'advancedHint', fields: ['storageStatePath', 'defaultAuthProfile', 'snapshotDir', 'verbose'] },
34
+ ];
35
+ /** The section field a spec names, when it is one of the single-input fields. */
36
+ function sectionField(field) {
37
+ return FIELD_SPECS.some(spec => spec.field === field) ? field : undefined;
7
38
  }
8
39
  export function SettingsCard(props) {
9
40
  const { t } = props;
10
41
  const state = props.useBrowserSettings(snapshot => snapshot);
11
- const [open, setOpen] = useState(false);
12
- if (!state.available)
13
- return null;
14
- const disabled = !state.writable || state.saving;
15
- const text = (field, label, hint) => _jsx(FieldShell, { field: field, state: state.fields[field], label: t(label), hint: state.fields[field].invalid ? t('invalid') : t(hint), disabled: disabled, resetLabel: t('reset'), onReset: props.resetField, children: _jsx("input", { id: `dsh-browser-${field}`, className: css.input, value: state.fields[field].text, disabled: disabled, "aria-invalid": state.fields[field].invalid || undefined, onChange: event => props.edit(field, event.currentTarget.value) }) });
16
- const select = (field, label, hint, options) => _jsx(FieldShell, { field: field, state: state.fields[field], label: t(label), hint: state.fields[field].invalid ? t('invalid') : t(hint), disabled: disabled, resetLabel: t('reset'), onReset: props.resetField, children: _jsx("select", { id: `dsh-browser-${field}`, className: css.input, value: state.fields[field].text, disabled: disabled, onChange: event => props.edit(field, event.currentTarget.value), children: options.map(option => _jsx("option", { value: option, children: option }, option)) }) });
17
- const json = (field, label, hint, rows = 7) => _jsx(FieldShell, { field: field, state: state.fields[field], label: t(label), hint: state.fields[field].invalid ? t('invalidJson') : t(hint), disabled: disabled, resetLabel: t('reset'), onReset: props.resetField, children: _jsx("textarea", { id: `dsh-browser-${field}`, className: `${css.input} ${css.textarea} ${css.code}`, rows: rows, value: state.fields[field].text, disabled: disabled, spellCheck: false, "aria-invalid": state.fields[field].invalid || undefined, onChange: event => props.edit(field, event.currentTarget.value) }) });
18
- const toggle = (field, label, hint) => _jsxs("div", { className: css.toggle, children: [_jsxs("label", { className: css.toggleLabel, children: [_jsx("input", { className: css.check, type: "checkbox", checked: state.fields[field].text === 'true', disabled: disabled, onChange: event => props.edit(field, String(event.currentTarget.checked)) }), _jsxs("span", { children: [_jsx("span", { className: css.label, children: t(label) }), _jsx("p", { className: css.hint, children: t(hint) })] })] }), state.fields[field].overridden ? _jsx("button", { type: "button", className: css.reset, disabled: disabled, onClick: () => props.resetField(field), children: t('reset') }) : null] });
19
- return _jsxs("div", { className: `${css.card} ${open ? css.open : ''}`, "data-dsh-browser-settings": true, children: [_jsxs("button", { type: "button", className: css.header, "aria-expanded": open, "aria-label": `${t(open ? 'collapse' : 'expand')}: ${t('title')}`, onClick: () => setOpen(!open), children: [_jsxs("span", { className: css.head, children: [_jsxs("span", { className: css.titleRow, children: [_jsx("span", { className: css.name, children: t('title') }), state.dirty ? _jsx("span", { className: css.badge, children: t('unsaved') }) : null] }), _jsx("span", { className: css.description, children: t('description') })] }), _jsx("svg", { className: `${css.chevron} ${open ? css.chevronOpen : ''}`, viewBox: "0 0 14 14", width: "14", height: "14", "aria-hidden": "true", children: _jsx("path", { d: "M3.5 5.5 7 9l3.5-3.5", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }) })] }), open ? _jsxs("div", { className: css.body, children: [!state.writable ? _jsx("p", { className: css.notice, role: "status", children: t('readOnly') }) : null, _jsxs("section", { className: css.section, children: [_jsxs("div", { className: css.sectionHead, children: [_jsx("h3", { children: t('freedom') }), _jsx("p", { children: t('freedomHint') })] }), _jsxs("div", { className: css.grid, children: [toggle('enabled', 'enabled', 'enabledHint'), select('automationMode', 'automationMode', 'automationModeHint', ['read-only', 'standard', 'autonomous', 'unrestricted']), toggle('opencliEnabled', 'opencliEnabled', 'opencliEnabledHint')] })] }), _jsxs("section", { className: css.section, children: [_jsxs("div", { className: css.sectionHead, children: [_jsx("h3", { children: t('runtime') }), _jsx("p", { children: t('runtimeHint') })] }), _jsxs("div", { className: css.grid, children: [select('browserRuntime', 'browserRuntime', 'browserRuntimeHint', ['playwright', 'patchright']), text('channel', 'channel', 'channelHint'), toggle('headless', 'headless', 'headlessHint'), toggle('autoInstall', 'autoInstall', 'autoInstallHint'), text('executablePath', 'executablePath', 'executablePathHint'), text('cdpPort', 'cdpPort', 'cdpPortHint'), json('args', 'args', 'argsHint', 5)] })] }), _jsxs("section", { className: css.section, children: [_jsxs("div", { className: css.sectionHead, children: [_jsx("h3", { children: t('usage') }), _jsx("p", { children: t('usageHint') })] }), _jsxs("div", { className: css.grid, children: [json('usagePolicy', 'usagePolicy', 'usagePolicyHint', 10), json('automationAssets', 'automationAssets', 'automationAssetsHint', 14)] }), _jsx("p", { className: css.notice, role: "note", children: t('restart') })] }), _jsx(AutomationAssetsPanel, { ...props }), _jsxs("details", { className: css.advanced, children: [_jsx("summary", { children: t('advanced') }), _jsx("p", { className: css.hint, children: t('advancedHint') }), _jsxs("div", { className: css.grid, children: [text('storageStatePath', 'storageStatePath', 'storageStatePathHint'), text('defaultAuthProfile', 'defaultAuthProfile', 'defaultAuthProfileHint'), json('authProfiles', 'authProfiles', 'authProfilesHint'), json('rulePacks', 'rulePacks', 'rulePacksHint'), text('snapshotDir', 'snapshotDir', 'snapshotDirHint'), toggle('verbose', 'verbose', 'verboseHint')] })] }), _jsxs("div", { className: css.footer, children: [_jsx("p", { className: state.failed ? css.failed : css.status, role: "status", "aria-live": "polite", children: t(state.failed ? 'saveFailed' : state.invalid ? 'invalidSave' : state.dirty ? 'pending' : 'saved') }), _jsxs("div", { className: css.actions, children: [_jsx("button", { type: "button", className: css.secondary, disabled: !state.dirty || state.saving, onClick: props.discard, children: t('discard') }), _jsx("button", { type: "button", className: css.primary, disabled: !state.dirty || state.invalid || state.saving || !state.writable, onClick: props.save, children: t(state.saving ? 'saving' : 'save') })] })] })] }) : null] });
42
+ // The one-liner the Plugins list shows. Without it the list falls back to the
43
+ // package's npm description, which reads like a styling bug and is not one.
44
+ if (props.view === 'summary')
45
+ return _jsx(_Fragment, { children: t('description') });
46
+ const disabled = !state.writable;
47
+ // Single-input fields live in `state.fields`; the JSON-shaped ones are read
48
+ // from the model directly, because the card renders them as code editors
49
+ // rather than one-line inputs.
50
+ const numeric = new Set(['cdpPort']);
51
+ const field = (spec) => {
52
+ const known = sectionField(spec.field);
53
+ const fieldState = known ? state.fields[known] : state.jsonFields[spec.field];
54
+ return _jsx(SettingsValueField, { id: `plugin-config-dsh-browser-${spec.field}`, label: t(spec.field), hint: t(`${spec.field}Hint`), overriddenLabel: t('overridden'), resetLabel: t('reset'), invalidLabel: t(JSON_FIELDS.has(spec.field) ? 'invalidJson' : 'invalidNumber'), numeric: numeric.has(spec.field), disabled: disabled, ...fieldState, onEdit: text => props.edit(spec.field, text), onReset: () => props.resetField(spec.field) }, spec.field);
55
+ };
56
+ return _jsxs(SettingsForm, { labels: formLabels(t), state: state, onSave: props.save, onDiscard: props.discard, children: [SECTION_LAYOUT.map(section => _jsxs("section", { className: css.section, children: [_jsxs("div", { className: css.sectionHead, children: [_jsx("h3", { children: t(section.title) }), _jsx("p", { children: t(section.hint) })] }), _jsx("div", { className: css.grid, children: section.fields.map(name => field(FIELD_SPECS.find(spec => spec.field === name))) })] }, section.title)), _jsxs("section", { className: css.section, children: [_jsxs("div", { className: css.sectionHead, children: [_jsx("h3", { children: t('usage') }), _jsx("p", { children: t('usageHint') })] }), _jsx("div", { className: css.grid, children: JSON_FIELD_SPECS.map(spec => field(spec)) }), _jsx("p", { className: css.notice, role: "note", children: t('restart') })] }), _jsx(AutomationAssetsPanel, { ...props })] });
20
57
  }
21
58
  function AutomationAssetsPanel(props) {
22
59
  const { t } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsCard.js","sourceRoot":"","sources":["../../src/client/SettingsCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsCard.js","sourceRoot":"","sources":["../../src/client/SettingsCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAGxF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAA0C,MAAM,WAAW,CAAA;AAE9G,OAAO,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,aAAa,CAAA;AAW3C,2EAA2E;AAC3E,SAAS,UAAU,CAAC,CAAa;IAC/B,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC;QAC7B,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;KACpB,CAAA;AACH,CAAC;AAED,MAAM,cAAc,GAAoF;IACtG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE;IAClG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE;IACxI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE;CAC1H,CAAA;AAED,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAqB,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA+B;IAC1D,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC5D,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,4BAAG,CAAC,CAAC,aAAa,CAAC,GAAI,CAAA;IAC5D,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAA;IAEhC,4EAA4E;IAC5E,yEAAyE;IACzE,+BAA+B;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,CAAC,IAAuB,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7E,OAAO,KAAC,kBAAkB,IAExB,EAAE,EAAE,6BAA6B,IAAI,CAAC,KAAK,EAAE,EAC7C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAiB,CAAC,EAChC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,MAAkB,CAAC,EACxC,eAAe,EAAE,CAAC,CAAC,YAAY,CAAC,EAChC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,EACtB,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,EAC9E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAChC,QAAQ,EAAE,QAAQ,KACd,UAAU,EACd,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAXtC,IAAI,CAAC,KAAK,CAYf,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,MAAC,YAAY,IAClB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,KAAK,CAAC,IAAI,EAClB,SAAS,EAAE,KAAK,CAAC,OAAO,aAEvB,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,mBAA6B,SAAS,EAAE,GAAG,CAAC,OAAO,aAChF,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAAE,uBAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAM,EAAA,sBAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAK,IAAM,EAC1F,cAAK,SAAS,EAAE,GAAG,CAAC,IAAI,YACrB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAE,CAAC,CAAC,GAC9E,KAJqC,OAAO,CAAC,KAAK,CAKhD,CAAC,EACX,mBAAS,SAAS,EAAE,GAAG,CAAC,OAAO,aAC7B,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAAE,uBAAK,CAAC,CAAC,OAAO,CAAC,GAAM,EAAA,sBAAI,CAAC,CAAC,WAAW,CAAC,GAAK,IAAM,EACnF,cAAK,SAAS,EAAE,GAAG,CAAC,IAAI,YACrB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GACtC,EACN,YAAG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,MAAM,YAAE,CAAC,CAAC,SAAS,CAAC,GAAK,IAChD,EACV,KAAC,qBAAqB,OAAK,KAAK,GAAI,IACvB,CAAA;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA+B;IAC5D,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,CAAA;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAElH,MAAM,QAAQ,GAAG,CAAC,IAA6B,EAAE,EAAE;QACjD,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;QACtC,MAAM,KAAK,GAAsE,IAAI,KAAK,QAAQ;YAChG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE;YAChK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,mJAAmJ,EAAE,CAAA;QACzP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAChE,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAsE,CAAA;YACpG,IAAI,QAAQ,EAAE,EAAE;gBAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAA;YACxC,MAAM,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC9D,CAAC;QAAC,MAAM,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACjC,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAA2B,CAAA;YAC/D,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC5F,CAAC;QAAC,MAAM,CAAC;YAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAAC,CAAC;IACjC,CAAC,CAAA;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACxH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAA;IAE3C,OAAO,mBAAS,SAAS,EAAE,GAAG,CAAC,OAAO,8CACpC,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAAE,uBAAK,CAAC,CAAC,cAAc,CAAC,GAAM,EAAA,sBAAI,CAAC,CAAC,kBAAkB,CAAC,GAAK,IAAM,EAChG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAG,SAAS,EAAE,GAAG,CAAC,MAAM,YAAG,CAAC,CAAC,cAAc,CAAC,GAAK,CAAC,CAAC,CAAC,IAAI,EACxE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAG,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAC,OAAO,YAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,aAAa,CAAC,GAAK,CAAC,CAAC,CAAC,IAAI,EAClG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,SAAS,EAAE,GAAG,CAAC,UAAU,aAAE,uBAAK,CAAC,CAAC,kBAAkB,CAAC,GAAM,EAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,mBAA4B,SAAS,EAAE,GAAG,CAAC,QAAQ,aACnK,0BAAK,2BAAS,SAAS,CAAC,KAAK,GAAU,EAAA,wBAAI,SAAS,CAAC,MAAM,cAAK,SAAS,CAAC,cAAc,OAAG,CAAC,CAAC,WAAW,CAAC,cAAK,SAAS,CAAC,gBAAgB,OAAG,CAAC,CAAC,eAAe,CAAC,IAAK,IAAM,EACxK,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC,YAAG,CAAC,CAAC,cAAc,CAAC,GAAU,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,CAAC,YAAG,CAAC,CAAC,gBAAgB,CAAC,GAAU,IAAM,KAFzO,SAAS,CAAC,EAAE,CAGlI,CAAC,IAAO,CAAC,CAAC,CAAC,IAAI,EACzB,eAAK,SAAS,EAAE,GAAG,CAAC,YAAY,aAAE,0BAAK,2BAAS,CAAC,CAAC,cAAc,CAAC,GAAU,EAAA,YAAG,SAAS,EAAE,GAAG,CAAC,IAAI,YAAG,CAAC,CAAC,kBAAkB,CAAC,GAAK,IAAM,EAAA,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aAAE,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAG,CAAC,CAAC,gBAAgB,CAAC,GAAU,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAG,CAAC,CAAC,gBAAgB,CAAC,GAAU,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,uBAAuB,YAAG,CAAC,CAAC,cAAc,CAAC,GAAU,IAAM,IAAM,EACvgB,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAC7B,cAAK,SAAS,EAAE,GAAG,CAAC,SAAS,YAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAQ,IAAI,EAAC,QAAQ,EAAgB,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,QAAQ,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,aAAE,2BAAM,2BAAS,KAAK,CAAC,IAAI,GAAU,EAAA,4BAAQ,KAAK,CAAC,IAAI,cAAK,KAAK,CAAC,MAAM,eAAM,KAAK,CAAC,QAAQ,IAAS,IAAO,EAAA,eAAM,SAAS,EAAE,GAAG,CAAC,SAAS,YAAG,KAAK,CAAC,UAAU,GAAQ,KAAxT,KAAK,CAAC,EAAE,CAAyT,CAAC,CAAC,CAAC,CAAC,YAAG,SAAS,EAAE,GAAG,CAAC,IAAI,YAAG,CAAC,CAAC,YAAY,CAAC,GAAK,GAAO,EACxd,eAAK,SAAS,EAAE,GAAG,CAAC,WAAW,aAC7B,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAC,0BAA0B,YAAE,CAAC,CAAC,aAAa,CAAC,GAAS,EAC1F,mBAAU,EAAE,EAAC,0BAA0B,EAAC,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,GAAI,EACvS,YAAG,SAAS,EAAE,GAAG,CAAC,IAAI,YAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAK,EACtF,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,eAAK,SAAS,EAAE,GAAG,CAAC,aAAa,aAAE,gBAAO,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAI,EAAA,mBAAU,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,gBAAc,CAAC,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAI,IAAM,CAAC,CAAC,CAAC,IAAI,EAC1a,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aACxB,QAAQ,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAG,CAAC,CAAC,eAAe,CAAC,GAAU,CAAC,CAAC,CAAC,IAAI,EAChL,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,YAAG,CAAC,CAAC,WAAW,CAAC,GAAU,CAAC,CAAC,CAAC,IAAI,EACvL,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAG,CAAC,CAAC,eAAe,CAAC,GAAU,CAAC,CAAC,CAAC,IAAI,EACnP,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,YAAG,CAAC,CAAC,cAAc,CAAC,GAAU,CAAC,CAAC,CAAC,IAAI,EAC/N,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,YAAG,CAAC,CAAC,gBAAgB,CAAC,GAAU,IACrK,IACF,IACF,IACE,CAAA;AACZ,CAAC"}
@@ -10,6 +10,8 @@ function localStore(initial) {
10
10
  listener(); },
11
11
  };
12
12
  }
13
+ /** This plugin's private RPC channel, matching the Host half. */
14
+ const CHANNEL = '/dsh-browser-assets';
13
15
  export class AutomationAssetsController {
14
16
  rpc;
15
17
  store = localStore({ loading: true, busy: false, failed: false });
@@ -69,7 +71,10 @@ export class AutomationAssetsController {
69
71
  }
70
72
  }
71
73
  async call(endpoint, payload) {
72
- const result = await this.rpc.call('/api', `dsh-browser-assets/${endpoint}`, payload);
74
+ // The plugin's own logical channel: the shared `/api` channel is reserved
75
+ // for host-composed endpoints, and intercepting it there replaced the whole
76
+ // channel's fallback (see automation-assets-rpc.ts).
77
+ const result = await this.rpc.call(CHANNEL, endpoint, payload);
73
78
  if (!result.ok)
74
79
  throw new Error(result.error.message);
75
80
  return result.value;
@@ -1 +1 @@
1
- {"version":3,"file":"automation-assets-client.js","sourceRoot":"","sources":["../../src/client/automation-assets-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation-assets-client.js","sourceRoot":"","sources":["../../src/client/automation-assets-client.ts"],"names":[],"mappings":"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"}
@@ -1,63 +1,53 @@
1
+ /**
2
+ * The browser settings card's form model.
3
+ *
4
+ * Staging, the revision fence, and the snapshot store are owned by the shared
5
+ * `SettingsFormModel` from `@deepseek-ai/dsh-client-ui-primitives` — the same
6
+ * model every official settings page uses — so this module only declares which
7
+ * fields the card edits and how each one converts between stored value and
8
+ * draft text. A save is one `mutate(ops, revision)`; `set`/`unset` per field no
9
+ * longer exist on this Host line.
10
+ * @module dsh-browser/client/form
11
+ */
1
12
  import type { SnapshotStore } from '@deepseek-ai/dsh-client-store';
2
- import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
3
- export type SettingField = 'enabled' | 'automationMode' | 'browserRuntime' | 'channel' | 'headless' | 'opencliEnabled' | 'usagePolicy' | 'automationAssets' | 'autoInstall' | 'storageStatePath' | 'authProfiles' | 'defaultAuthProfile' | 'rulePacks' | 'executablePath' | 'snapshotDir' | 'verbose' | 'cdpPort' | 'args';
4
- export interface CardFieldState {
5
- text: string;
6
- overridden: boolean;
7
- invalid: boolean;
13
+ import type { SettingsFieldSpec, SettingsFormScope, SettingsFieldState, SettingsFormShell } from '@deepseek-ai/dsh-client-ui-primitives';
14
+ export type SectionField = 'enabled' | 'automationMode' | 'browserRuntime' | 'channel' | 'headless' | 'opencliEnabled' | 'autoInstall' | 'storageStatePath' | 'defaultAuthProfile' | 'executablePath' | 'snapshotDir' | 'verbose' | 'cdpPort';
15
+ /** Retained name for callers that predate the section/JSON split. */
16
+ export type SettingField = SectionField;
17
+ /** One control's state, as the shared form model reports it. */
18
+ export type CardFieldState = SettingsFieldState;
19
+ export interface BrowserCardState extends SettingsFormShell {
20
+ /** Single-input controls. */
21
+ fields: Record<SectionField, CardFieldState>;
22
+ /** JSON code-editor controls, kept apart so `fields` stays exhaustively keyed. */
23
+ jsonFields: Record<string, CardFieldState>;
8
24
  }
9
- export interface BrowserCardState {
10
- available: boolean;
11
- writable: boolean;
12
- dirty: boolean;
13
- invalid: boolean;
14
- saving: boolean;
15
- failed: boolean;
16
- fields: Record<SettingField, CardFieldState>;
17
- }
18
- type FieldWrite = {
19
- kind: 'set';
20
- value: unknown;
21
- } | {
22
- kind: 'clear';
23
- };
24
- export interface FieldSpec {
25
- field: SettingField;
26
- format(value: unknown): string;
27
- parse(text: string): FieldWrite | undefined;
28
- }
29
- export declare const FIELD_SPECS: readonly FieldSpec[];
25
+ /**
26
+ * The single-input section fields the card edits, in display order. Every entry
27
+ * must also be `.volatile()` in the Host Config schema: `volatileForm` drops
28
+ * unmarked fields, and the Host would refuse a write to one.
29
+ */
30
+ export declare const FIELD_SPECS: readonly SettingsFieldSpec[];
31
+ /** The JSON-shaped section fields the card renders as code editors. */
32
+ export declare const JSON_FIELD_SPECS: readonly SettingsFieldSpec[];
33
+ /** Section fields rendered as JSON code editors rather than single inputs. */
34
+ export declare const JSON_FIELDS: ReadonlySet<string>;
35
+ /** Every field the card renders, in display order. */
36
+ export declare const ALL_FIELD_SPECS: readonly SettingsFieldSpec[];
30
37
  export declare class BrowserSettingsController {
31
- private readonly scope;
32
- private readonly staged;
38
+ private readonly form;
33
39
  private readonly store;
34
- private readonly unsubscribe;
35
- private saving;
36
- private failed;
37
- constructor(scope: SettingsScope<Record<string, unknown>>);
40
+ constructor(scope: SettingsFormScope<Record<string, unknown>>);
38
41
  inject(): {
42
+ edit: (field: string, text: string) => void;
43
+ resetField: (field: string) => void;
44
+ save: () => void;
45
+ discard: () => void;
39
46
  hooks: {
40
47
  browserSettings: SnapshotStore<BrowserCardState>;
41
48
  };
42
- edit: (field: SettingField, text: string) => void;
43
- resetField: (field: SettingField) => void;
44
- save: () => void;
45
- discard: () => void;
46
49
  };
47
50
  snapshot(): BrowserCardState;
48
- edit(field: SettingField, text: string): void;
49
- resetField(field: SettingField): void;
50
- discard(): void;
51
- save(): Promise<void>;
52
51
  dispose(): void;
53
52
  private project;
54
- private field;
55
- private plan;
56
- private spec;
57
- private sectionValue;
58
- private baseValue;
59
- private userLayer;
60
- private stored;
61
- private publish;
62
53
  }
63
- export {};