@anweat/dsh-browser 0.1.7 → 0.1.9
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 +356 -245
- package/cordis.patch.yml +26 -16
- package/lib/approval-policy.js +34 -0
- package/lib/approval-policy.js.map +1 -1
- package/lib/auth-profiles.js +10 -1
- package/lib/auth-profiles.js.map +1 -1
- package/lib/automation-assets-rpc.d.ts +5 -0
- package/lib/automation-assets-rpc.js +63 -0
- package/lib/automation-assets-rpc.js.map +1 -0
- package/lib/automation-assets.d.ts +139 -0
- package/lib/automation-assets.js +372 -0
- package/lib/automation-assets.js.map +1 -0
- package/lib/automation-development.d.ts +13 -0
- package/lib/automation-development.js +37 -0
- package/lib/automation-development.js.map +1 -0
- package/lib/automation-execution.d.ts +14 -0
- package/lib/automation-execution.js +55 -0
- package/lib/automation-execution.js.map +1 -0
- package/lib/browser-service.d.ts +73 -25
- package/lib/browser-service.js +286 -74
- package/lib/browser-service.js.map +1 -1
- package/lib/client/SettingsCard.d.ts +2 -0
- package/lib/client/SettingsCard.js +69 -0
- package/lib/client/SettingsCard.js.map +1 -0
- package/lib/client/automation-assets-client.d.ts +38 -0
- package/lib/client/automation-assets-client.js +83 -0
- package/lib/client/automation-assets-client.js.map +1 -0
- package/lib/client/context-types.d.ts +8 -0
- package/lib/client/context-types.js +2 -0
- package/lib/client/context-types.js.map +1 -0
- package/lib/client/form.d.ts +62 -0
- package/lib/client/form.js +224 -0
- package/lib/client/form.js.map +1 -0
- package/lib/client/index.d.ts +27 -0
- package/lib/client/index.js +28 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client/locales.d.ts +86 -0
- package/lib/client/locales.js +65 -0
- package/lib/client/locales.js.map +1 -0
- package/lib/client/settings-namespace.d.ts +2 -0
- package/lib/client/settings-namespace.js +3 -0
- package/lib/client/settings-namespace.js.map +1 -0
- package/lib/client/styles.d.ts +48 -0
- package/lib/client/styles.js +28 -0
- package/lib/client/styles.js.map +1 -0
- package/lib/client.js +1282 -0
- package/lib/client.js.map +1 -0
- package/lib/config.d.ts +14 -0
- package/lib/config.js +43 -0
- package/lib/config.js.map +1 -1
- package/lib/deps.d.ts +7 -1
- package/lib/deps.js +22 -6
- package/lib/deps.js.map +1 -1
- package/lib/freedom.d.ts +4 -1
- package/lib/freedom.js +14 -0
- package/lib/freedom.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +20 -3
- package/lib/index.js.map +1 -1
- package/lib/opencli-catalog.d.ts +21 -0
- package/lib/opencli-catalog.js +49 -0
- package/lib/opencli-catalog.js.map +1 -0
- package/lib/scripts.d.ts +1 -1
- package/lib/scripts.js +30 -29
- package/lib/scripts.js.map +1 -1
- package/lib/tools.d.ts +2 -1
- package/lib/tools.js +222 -11
- package/lib/tools.js.map +1 -1
- package/lib/usage-policy.d.ts +49 -0
- package/lib/usage-policy.js +171 -0
- package/lib/usage-policy.js.map +1 -0
- package/package.json +133 -78
- package/scripts/check-client-bundle.mjs +15 -0
- package/scripts/clean-lib.mjs +3 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const textField = (field) => ({
|
|
2
|
+
field,
|
|
3
|
+
format: value => typeof value === 'string' ? value : '',
|
|
4
|
+
parse(text) { return text.trim() === '' ? { kind: 'clear' } : { kind: 'set', value: text.trim() }; },
|
|
5
|
+
});
|
|
6
|
+
const booleanField = (field) => ({
|
|
7
|
+
field,
|
|
8
|
+
format: value => value === true ? 'true' : 'false',
|
|
9
|
+
parse: text => text === 'true' || text === 'false' ? { kind: 'set', value: text === 'true' } : undefined,
|
|
10
|
+
});
|
|
11
|
+
const enumField = (field, values) => ({
|
|
12
|
+
field,
|
|
13
|
+
format: value => typeof value === 'string' ? value : values[0] ?? '',
|
|
14
|
+
parse: text => values.includes(text) ? { kind: 'set', value: text } : undefined,
|
|
15
|
+
});
|
|
16
|
+
const jsonField = (field, validate) => ({
|
|
17
|
+
field,
|
|
18
|
+
format: value => value && typeof value === 'object' && !Array.isArray(value) ? JSON.stringify(value, null, 2) : '',
|
|
19
|
+
parse(text) {
|
|
20
|
+
if (text.trim() === '')
|
|
21
|
+
return { kind: 'clear' };
|
|
22
|
+
try {
|
|
23
|
+
const value = JSON.parse(text);
|
|
24
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
25
|
+
return undefined;
|
|
26
|
+
const record = value;
|
|
27
|
+
return validate && !validate(record) ? undefined : { kind: 'set', value: record };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const POLICY_BOUNDS = {
|
|
35
|
+
minDelayMs: [0, 60_000], maxConcurrency: [1, 8], burst: [1, 20], maxPagesPerRun: [1, 100],
|
|
36
|
+
maxDepth: [0, 5], retryLimit: [0, 5], backoffBaseMs: [1, 60_000], cooldownMs: [100, 300_000],
|
|
37
|
+
};
|
|
38
|
+
const ASSET_POLICY_KEYS = new Set([
|
|
39
|
+
'enabled', 'directory', 'persistenceMode', 'activationMode', 'minSuccessfulRuns', 'minDistinctSessions',
|
|
40
|
+
'successWindowDays', 'minSuccessRate', 'maxCandidates', 'candidateTtlDays', 'maxSuggestionsPerDay',
|
|
41
|
+
'maxDrafts', 'maxActiveAssets', 'retrievalTopK', 'catalogTokenBudget',
|
|
42
|
+
'modelDevelopmentEnabled', 'maxModelDraftWritesPerSession',
|
|
43
|
+
]);
|
|
44
|
+
function validAssetPolicy(value) {
|
|
45
|
+
if (Object.keys(value).some(key => !ASSET_POLICY_KEYS.has(key)))
|
|
46
|
+
return false;
|
|
47
|
+
if (value.enabled !== undefined && typeof value.enabled !== 'boolean')
|
|
48
|
+
return false;
|
|
49
|
+
if (value.directory !== undefined && typeof value.directory !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
if (value.modelDevelopmentEnabled !== undefined && typeof value.modelDevelopmentEnabled !== 'boolean')
|
|
52
|
+
return false;
|
|
53
|
+
if (value.persistenceMode !== undefined && !['off', 'manual', 'suggest', 'auto-draft'].includes(String(value.persistenceMode)))
|
|
54
|
+
return false;
|
|
55
|
+
if (value.activationMode !== undefined && !['manual', 'auto-tested'].includes(String(value.activationMode)))
|
|
56
|
+
return false;
|
|
57
|
+
return Object.entries(value).every(([key, entry]) => {
|
|
58
|
+
if (!['minSuccessfulRuns', 'minDistinctSessions', 'successWindowDays', 'minSuccessRate', 'maxCandidates', 'candidateTtlDays', 'maxSuggestionsPerDay', 'maxDrafts', 'maxActiveAssets', 'retrievalTopK', 'catalogTokenBudget', 'maxModelDraftWritesPerSession'].includes(key))
|
|
59
|
+
return true;
|
|
60
|
+
return typeof entry === 'number' && Number.isFinite(entry) && entry >= 0;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function validUsagePolicy(value) {
|
|
64
|
+
if (Object.keys(value).some(key => !(key in POLICY_BOUNDS)))
|
|
65
|
+
return false;
|
|
66
|
+
return Object.entries(POLICY_BOUNDS).every(([key, [min, max]]) => {
|
|
67
|
+
const entry = value[key];
|
|
68
|
+
return entry === undefined || (typeof entry === 'number' && Number.isInteger(entry) && entry >= min && entry <= max);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export const FIELD_SPECS = [
|
|
72
|
+
booleanField('enabled'),
|
|
73
|
+
enumField('automationMode', ['read-only', 'standard', 'autonomous', 'unrestricted']),
|
|
74
|
+
enumField('browserRuntime', ['playwright', 'patchright']),
|
|
75
|
+
textField('channel'),
|
|
76
|
+
booleanField('headless'),
|
|
77
|
+
booleanField('opencliEnabled'),
|
|
78
|
+
jsonField('usagePolicy', validUsagePolicy),
|
|
79
|
+
jsonField('automationAssets', validAssetPolicy),
|
|
80
|
+
booleanField('autoInstall'),
|
|
81
|
+
textField('storageStatePath'),
|
|
82
|
+
jsonField('authProfiles'),
|
|
83
|
+
textField('defaultAuthProfile'),
|
|
84
|
+
jsonField('rulePacks'),
|
|
85
|
+
textField('executablePath'),
|
|
86
|
+
textField('snapshotDir'),
|
|
87
|
+
booleanField('verbose'),
|
|
88
|
+
];
|
|
89
|
+
const SPEC_BY_FIELD = new Map(FIELD_SPECS.map(spec => [spec.field, spec]));
|
|
90
|
+
function stable(value) {
|
|
91
|
+
if (Array.isArray(value))
|
|
92
|
+
return `[${value.map(stable).join(',')}]`;
|
|
93
|
+
if (value && typeof value === 'object') {
|
|
94
|
+
return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, entry]) => `${JSON.stringify(key)}:${stable(entry)}`).join(',')}}`;
|
|
95
|
+
}
|
|
96
|
+
return JSON.stringify(value);
|
|
97
|
+
}
|
|
98
|
+
function same(left, right) { return stable(left) === stable(right); }
|
|
99
|
+
function createLocalStore(initial) {
|
|
100
|
+
let snapshot = initial;
|
|
101
|
+
const listeners = new Set();
|
|
102
|
+
return {
|
|
103
|
+
getSnapshot: () => snapshot,
|
|
104
|
+
subscribe(listener) { listeners.add(listener); return () => { listeners.delete(listener); }; },
|
|
105
|
+
set(next) { snapshot = next; for (const listener of listeners)
|
|
106
|
+
listener(); },
|
|
107
|
+
update(updater) { const draft = structuredClone(snapshot); updater(draft); snapshot = draft; for (const listener of listeners)
|
|
108
|
+
listener(); },
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export class BrowserSettingsController {
|
|
112
|
+
scope;
|
|
113
|
+
staged = new Map();
|
|
114
|
+
store;
|
|
115
|
+
unsubscribe;
|
|
116
|
+
saving = false;
|
|
117
|
+
failed = false;
|
|
118
|
+
constructor(scope) {
|
|
119
|
+
this.scope = scope;
|
|
120
|
+
this.store = createLocalStore(this.project());
|
|
121
|
+
this.unsubscribe = scope.subscribe(() => { this.publish(); });
|
|
122
|
+
}
|
|
123
|
+
inject() {
|
|
124
|
+
return {
|
|
125
|
+
hooks: { browserSettings: this.store },
|
|
126
|
+
edit: (field, text) => { this.edit(field, text); },
|
|
127
|
+
resetField: (field) => { this.resetField(field); },
|
|
128
|
+
save: () => { void this.save(); },
|
|
129
|
+
discard: () => { this.discard(); },
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
snapshot() { return this.store.getSnapshot(); }
|
|
133
|
+
edit(field, text) {
|
|
134
|
+
this.staged.set(field, { text, clear: false });
|
|
135
|
+
this.failed = false;
|
|
136
|
+
this.publish();
|
|
137
|
+
}
|
|
138
|
+
resetField(field) {
|
|
139
|
+
const spec = this.spec(field);
|
|
140
|
+
this.staged.set(field, { text: spec.format(this.baseValue(field)), clear: true });
|
|
141
|
+
this.failed = false;
|
|
142
|
+
this.publish();
|
|
143
|
+
}
|
|
144
|
+
discard() { this.staged.clear(); this.failed = false; this.publish(); }
|
|
145
|
+
async save() {
|
|
146
|
+
const plan = this.plan();
|
|
147
|
+
if (this.saving || plan.some(item => item.write === undefined) || plan.length === 0)
|
|
148
|
+
return;
|
|
149
|
+
this.saving = true;
|
|
150
|
+
this.failed = false;
|
|
151
|
+
this.publish();
|
|
152
|
+
let landed = true;
|
|
153
|
+
try {
|
|
154
|
+
for (const item of plan) {
|
|
155
|
+
if (!item.write) {
|
|
156
|
+
landed = false;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
if (item.write.kind === 'clear') {
|
|
160
|
+
await this.scope.unset(item.field);
|
|
161
|
+
landed = !this.stored(item.field) && landed;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
await this.scope.set(item.field, item.write.value);
|
|
165
|
+
landed = same(this.userLayer()?.[item.field], item.write.value) && landed;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
landed = false;
|
|
171
|
+
}
|
|
172
|
+
if (landed)
|
|
173
|
+
this.staged.clear();
|
|
174
|
+
this.saving = false;
|
|
175
|
+
this.failed = !landed;
|
|
176
|
+
this.publish();
|
|
177
|
+
}
|
|
178
|
+
dispose() { this.unsubscribe(); }
|
|
179
|
+
project() {
|
|
180
|
+
const fields = {};
|
|
181
|
+
for (const spec of FIELD_SPECS)
|
|
182
|
+
fields[spec.field] = this.field(spec.field);
|
|
183
|
+
const plan = this.plan();
|
|
184
|
+
return {
|
|
185
|
+
available: this.scope.getSnapshot().status === 'ready', writable: this.scope.getSnapshot().writable,
|
|
186
|
+
dirty: plan.length > 0, invalid: plan.some(item => item.write === undefined), saving: this.saving, failed: this.failed, fields,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
field(field) {
|
|
190
|
+
const spec = this.spec(field);
|
|
191
|
+
const draft = this.staged.get(field);
|
|
192
|
+
if (!draft)
|
|
193
|
+
return { text: spec.format(this.sectionValue(field)), overridden: this.stored(field), invalid: false };
|
|
194
|
+
const write = draft.clear ? { kind: 'clear' } : spec.parse(draft.text);
|
|
195
|
+
return { text: draft.text, overridden: write?.kind === 'set', invalid: write === undefined };
|
|
196
|
+
}
|
|
197
|
+
plan() {
|
|
198
|
+
const writes = [];
|
|
199
|
+
for (const [field, draft] of this.staged) {
|
|
200
|
+
const spec = this.spec(field);
|
|
201
|
+
if (draft.clear) {
|
|
202
|
+
if (this.stored(field))
|
|
203
|
+
writes.push({ field, write: { kind: 'clear' } });
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (draft.text === spec.format(this.sectionValue(field)))
|
|
207
|
+
continue;
|
|
208
|
+
writes.push({ field, write: spec.parse(draft.text) });
|
|
209
|
+
}
|
|
210
|
+
return writes;
|
|
211
|
+
}
|
|
212
|
+
spec(field) {
|
|
213
|
+
const spec = SPEC_BY_FIELD.get(field);
|
|
214
|
+
if (!spec)
|
|
215
|
+
throw new Error(`unknown browser settings field: ${field}`);
|
|
216
|
+
return spec;
|
|
217
|
+
}
|
|
218
|
+
sectionValue(field) { return this.scope.getSnapshot().value?.[field]; }
|
|
219
|
+
baseValue(field) { return this.scope.getSnapshot().base?.[field]; }
|
|
220
|
+
userLayer() { return this.scope.getSnapshot().user; }
|
|
221
|
+
stored(field) { const user = this.userLayer(); return user !== undefined && Object.hasOwn(user, field); }
|
|
222
|
+
publish() { this.store.set(this.project()); }
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/client/form.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
+
import type { Context } from './context-types.ts';
|
|
3
|
+
import { type BrowserCardState, type SettingField } from './form.ts';
|
|
4
|
+
import { SETTINGS_NAMESPACE } from './settings-namespace.ts';
|
|
5
|
+
import { type AutomationAssetsState } from './automation-assets-client.ts';
|
|
6
|
+
import type { AutomationAsset, AutomationAssetStatus } from '../automation-assets.ts';
|
|
7
|
+
export declare const name = "dsh-browser-client";
|
|
8
|
+
export declare const inject: string[];
|
|
9
|
+
export declare const NS = "dsh-browser.card";
|
|
10
|
+
export { SETTINGS_NAMESPACE };
|
|
11
|
+
export type BrowserSettingsCardProps = PropsLocale<typeof NS> & {
|
|
12
|
+
useBrowserSettings: <R>(selector: (snapshot: BrowserCardState) => R) => R;
|
|
13
|
+
edit: (field: SettingField, text: string) => void;
|
|
14
|
+
resetField: (field: SettingField) => void;
|
|
15
|
+
save: () => void;
|
|
16
|
+
discard: () => void;
|
|
17
|
+
useAutomationAssets: <R>(selector: (snapshot: AutomationAssetsState) => R) => R;
|
|
18
|
+
refreshAutomationAssets: () => void;
|
|
19
|
+
selectAutomationAsset: (id?: string) => void;
|
|
20
|
+
saveAutomationAsset: (asset: Partial<AutomationAsset> & Pick<AutomationAsset, 'kind' | 'name'>) => Promise<void>;
|
|
21
|
+
summarizeAutomationCandidate: (id: string) => Promise<void>;
|
|
22
|
+
dismissAutomationCandidate: (id: string) => Promise<void>;
|
|
23
|
+
validateAutomationAsset: (id: string) => Promise<void>;
|
|
24
|
+
testAutomationAsset: (id: string, url: string, inputs: Record<string, string>) => Promise<void>;
|
|
25
|
+
setAutomationAssetStatus: (id: string, status: AutomationAssetStatus) => Promise<void>;
|
|
26
|
+
};
|
|
27
|
+
export declare function apply(ctx: Context): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BrowserSettingsController } from "./form.js";
|
|
2
|
+
import { SettingsCard } from "./SettingsCard.js";
|
|
3
|
+
import { en, zh } from "./locales.js";
|
|
4
|
+
import { ensureStyles } from "./styles.js";
|
|
5
|
+
import { SETTINGS_NAMESPACE } from "./settings-namespace.js";
|
|
6
|
+
import { AutomationAssetsController } from "./automation-assets-client.js";
|
|
7
|
+
export const name = 'dsh-browser-client';
|
|
8
|
+
export const inject = ['slots', 'locale', 'connection', 'settingsScope'];
|
|
9
|
+
export const NS = 'dsh-browser.card';
|
|
10
|
+
export { SETTINGS_NAMESPACE };
|
|
11
|
+
export function apply(ctx) {
|
|
12
|
+
ensureStyles();
|
|
13
|
+
ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'dsh-browser: settings dictionaries');
|
|
14
|
+
const scope = ctx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE });
|
|
15
|
+
const controller = new BrowserSettingsController(scope);
|
|
16
|
+
const assets = new AutomationAssetsController(ctx.connection.rpc);
|
|
17
|
+
ctx.effect(() => () => controller.dispose(), 'dsh-browser: settings controller');
|
|
18
|
+
ctx.effect(() => () => assets.dispose(), 'dsh-browser: automation assets controller');
|
|
19
|
+
ctx.slots.inject('settings.plugin.item', () => ctx.slots.register({
|
|
20
|
+
name: 'settings.plugin.item', key: SETTINGS_NAMESPACE, locale: NS,
|
|
21
|
+
inject: () => {
|
|
22
|
+
const settingsProps = controller.inject();
|
|
23
|
+
const assetProps = assets.inject();
|
|
24
|
+
return { ...settingsProps, ...assetProps, hooks: { ...settingsProps.hooks, ...assetProps.hooks } };
|
|
25
|
+
},
|
|
26
|
+
}, SettingsCard));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAA4C,MAAM,WAAW,CAAA;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAA8B,MAAM,+BAA+B,CAAA;AAItG,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAmB7B,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,YAAY,EAAE,CAAA;IACd,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAA;IAC3F,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAA2C,CAAA;IACjH,MAAM,UAAU,GAAG,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAE,GAA+D,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9H,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,kCAAkC,CAAC,CAAA;IAChF,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,2CAA2C,CAAC,CAAA;IACrF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE;QACjE,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;YACzC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;YAClC,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAA;QACpG,CAAC;KACF,EAAE,YAAY,CAAC,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export declare const zh: {
|
|
2
|
+
readonly title: "浏览器自动化";
|
|
3
|
+
readonly description: "运行时、工具自由度、OpenCLI 与防止过度调用的缓冲策略。";
|
|
4
|
+
readonly expand: "展开设置";
|
|
5
|
+
readonly collapse: "收起设置";
|
|
6
|
+
readonly unsaved: "未保存";
|
|
7
|
+
readonly readOnly: "当前配置只读。";
|
|
8
|
+
readonly freedom: "自动化自由度";
|
|
9
|
+
readonly freedomHint: "无审批模式只跳过人工确认,不会绕过调用缓冲和参数校验。";
|
|
10
|
+
readonly runtime: "浏览器运行时";
|
|
11
|
+
readonly runtimeHint: "默认 Playwright;遇到兼容性检测时可显式切换 Patchright。";
|
|
12
|
+
readonly usage: "使用策略缓冲";
|
|
13
|
+
readonly usageHint: "限制并发、短时突发、爬取预算,并对 429/503 等响应退避。";
|
|
14
|
+
readonly advanced: "登录态与高级设置";
|
|
15
|
+
readonly advancedHint: "状态文件不要提交到仓库;AuthProfile 必须配置 allowedDomains。";
|
|
16
|
+
readonly enabled: "启用浏览器服务";
|
|
17
|
+
readonly enabledHint: "关闭后浏览器服务不可用。";
|
|
18
|
+
readonly automationMode: "自动化模式";
|
|
19
|
+
readonly automationModeHint: "read-only / standard / autonomous / unrestricted。";
|
|
20
|
+
readonly browserRuntime: "运行时提供器";
|
|
21
|
+
readonly browserRuntimeHint: "Patchright 仅支持 Chromium。";
|
|
22
|
+
readonly channel: "浏览器通道";
|
|
23
|
+
readonly channelHint: "chromium、chrome 或 msedge。Patchright 推荐 chrome。";
|
|
24
|
+
readonly headless: "无头模式";
|
|
25
|
+
readonly headlessHint: "Patchright 兼容性最佳配置通常是关闭无头模式。";
|
|
26
|
+
readonly opencliEnabled: "启用 OpenCLI";
|
|
27
|
+
readonly opencliEnabledHint: "站点 adapter 和 Chrome Browser Bridge 总开关。";
|
|
28
|
+
readonly usagePolicy: "调用缓冲 JSON";
|
|
29
|
+
readonly usagePolicyHint: "minDelayMs、maxConcurrency、burst、maxPagesPerRun、maxDepth、retryLimit、backoffBaseMs、cooldownMs。";
|
|
30
|
+
readonly automationAssets: "自动化资产策略 JSON";
|
|
31
|
+
readonly automationAssetsHint: "候选阈值、持久化模式、激活模式、数量与上下文预算。";
|
|
32
|
+
readonly assetLibrary: "可复用自动化资产(实验性)";
|
|
33
|
+
readonly assetLibraryHint: "实验功能:候选先提示是否总结;草稿真实回放后再手动激活。源码仅在点选编辑时读取。";
|
|
34
|
+
readonly assetLoading: "正在读取本地自动化资产…";
|
|
35
|
+
readonly assetFailed: "自动化资产读取失败。";
|
|
36
|
+
readonly assetSuggestions: "建议总结";
|
|
37
|
+
readonly assetRuns: "次成功";
|
|
38
|
+
readonly assetSessions: "个会话";
|
|
39
|
+
readonly assetDismiss: "暂不总结";
|
|
40
|
+
readonly assetSummarize: "总结为草稿";
|
|
41
|
+
readonly assetScripts: "脚本与 recipe";
|
|
42
|
+
readonly assetScriptsHint: "模型只能检索已激活资产的有界摘要。";
|
|
43
|
+
readonly assetNewRecipe: "新建 recipe";
|
|
44
|
+
readonly assetNewScript: "新建油猴脚本";
|
|
45
|
+
readonly assetRefresh: "刷新";
|
|
46
|
+
readonly assetEmpty: "还没有资产。";
|
|
47
|
+
readonly assetEditor: "资产编辑器(JSON)";
|
|
48
|
+
readonly assetEditorHint: "选择资产或新建草稿。";
|
|
49
|
+
readonly assetInvalid: "JSON、测试 URL 或输入无效。";
|
|
50
|
+
readonly assetSourceBoundary: "不要保存 cookie、token、密码、完整页面内容或聊天记录。";
|
|
51
|
+
readonly assetValidate: "静态校验";
|
|
52
|
+
readonly assetTest: "真实回放";
|
|
53
|
+
readonly assetTestUrl: "测试 URL(必须命中允许域名)";
|
|
54
|
+
readonly assetTestInputs: "测试输入 JSON";
|
|
55
|
+
readonly assetActivate: "激活";
|
|
56
|
+
readonly assetArchive: "归档";
|
|
57
|
+
readonly assetSaveDraft: "保存草稿";
|
|
58
|
+
readonly autoInstall: "缺失时自动安装 Chromium";
|
|
59
|
+
readonly autoInstallHint: "可能触发较大下载,日常建议关闭并显式调用 browser_install。";
|
|
60
|
+
readonly storageStatePath: "全局 storageState 路径";
|
|
61
|
+
readonly storageStatePathHint: "旧版兼容入口;新配置优先使用限域 AuthProfile。";
|
|
62
|
+
readonly authProfiles: "AuthProfiles JSON";
|
|
63
|
+
readonly authProfilesHint: "命名登录态、allowedDomains 与 persistState。";
|
|
64
|
+
readonly defaultAuthProfile: "默认 AuthProfile";
|
|
65
|
+
readonly defaultAuthProfileHint: "未显式选择登录态时使用;browser_crawl 始终匿名。";
|
|
66
|
+
readonly rulePacks: "RulePacks JSON";
|
|
67
|
+
readonly rulePacksHint: "域名匹配、哈希固定 init script 和有界步骤。";
|
|
68
|
+
readonly executablePath: "浏览器可执行文件";
|
|
69
|
+
readonly executablePathHint: "少数自定义部署才需要覆盖。";
|
|
70
|
+
readonly snapshotDir: "快照目录";
|
|
71
|
+
readonly snapshotDirHint: "留空使用 DSH_HOME 下的默认目录。";
|
|
72
|
+
readonly verbose: "详细日志";
|
|
73
|
+
readonly verboseHint: "输出启动和诊断信息。";
|
|
74
|
+
readonly reset: "恢复部署值";
|
|
75
|
+
readonly invalid: "值无效,请检查格式或范围。";
|
|
76
|
+
readonly invalidJson: "JSON 或数值范围无效。";
|
|
77
|
+
readonly restart: "保存后完整重启 profile,运行时和工具目录才会重新注册。";
|
|
78
|
+
readonly saved: "配置已同步。";
|
|
79
|
+
readonly pending: "有待保存的修改。";
|
|
80
|
+
readonly invalidSave: "存在无效字段。";
|
|
81
|
+
readonly saveFailed: "保存失败,草稿已保留。";
|
|
82
|
+
readonly saving: "保存中…";
|
|
83
|
+
readonly save: "保存";
|
|
84
|
+
readonly discard: "放弃修改";
|
|
85
|
+
};
|
|
86
|
+
export declare const en: Record<keyof typeof zh, string>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export const zh = {
|
|
2
|
+
title: '浏览器自动化', description: '运行时、工具自由度、OpenCLI 与防止过度调用的缓冲策略。',
|
|
3
|
+
expand: '展开设置', collapse: '收起设置', unsaved: '未保存', readOnly: '当前配置只读。',
|
|
4
|
+
freedom: '自动化自由度', freedomHint: '无审批模式只跳过人工确认,不会绕过调用缓冲和参数校验。',
|
|
5
|
+
runtime: '浏览器运行时', runtimeHint: '默认 Playwright;遇到兼容性检测时可显式切换 Patchright。',
|
|
6
|
+
usage: '使用策略缓冲', usageHint: '限制并发、短时突发、爬取预算,并对 429/503 等响应退避。',
|
|
7
|
+
advanced: '登录态与高级设置', advancedHint: '状态文件不要提交到仓库;AuthProfile 必须配置 allowedDomains。',
|
|
8
|
+
enabled: '启用浏览器服务', enabledHint: '关闭后浏览器服务不可用。',
|
|
9
|
+
automationMode: '自动化模式', automationModeHint: 'read-only / standard / autonomous / unrestricted。',
|
|
10
|
+
browserRuntime: '运行时提供器', browserRuntimeHint: 'Patchright 仅支持 Chromium。',
|
|
11
|
+
channel: '浏览器通道', channelHint: 'chromium、chrome 或 msedge。Patchright 推荐 chrome。',
|
|
12
|
+
headless: '无头模式', headlessHint: 'Patchright 兼容性最佳配置通常是关闭无头模式。',
|
|
13
|
+
opencliEnabled: '启用 OpenCLI', opencliEnabledHint: '站点 adapter 和 Chrome Browser Bridge 总开关。',
|
|
14
|
+
usagePolicy: '调用缓冲 JSON', usagePolicyHint: 'minDelayMs、maxConcurrency、burst、maxPagesPerRun、maxDepth、retryLimit、backoffBaseMs、cooldownMs。',
|
|
15
|
+
automationAssets: '自动化资产策略 JSON', automationAssetsHint: '候选阈值、持久化模式、激活模式、数量与上下文预算。',
|
|
16
|
+
assetLibrary: '可复用自动化资产(实验性)', assetLibraryHint: '实验功能:候选先提示是否总结;草稿真实回放后再手动激活。源码仅在点选编辑时读取。',
|
|
17
|
+
assetLoading: '正在读取本地自动化资产…', assetFailed: '自动化资产读取失败。', assetSuggestions: '建议总结', assetRuns: '次成功', assetSessions: '个会话', assetDismiss: '暂不总结', assetSummarize: '总结为草稿',
|
|
18
|
+
assetScripts: '脚本与 recipe', assetScriptsHint: '模型只能检索已激活资产的有界摘要。', assetNewRecipe: '新建 recipe', assetNewScript: '新建油猴脚本', assetRefresh: '刷新', assetEmpty: '还没有资产。',
|
|
19
|
+
assetEditor: '资产编辑器(JSON)', assetEditorHint: '选择资产或新建草稿。', assetInvalid: 'JSON、测试 URL 或输入无效。', assetSourceBoundary: '不要保存 cookie、token、密码、完整页面内容或聊天记录。', assetValidate: '静态校验', assetTest: '真实回放', assetTestUrl: '测试 URL(必须命中允许域名)', assetTestInputs: '测试输入 JSON', assetActivate: '激活', assetArchive: '归档', assetSaveDraft: '保存草稿',
|
|
20
|
+
autoInstall: '缺失时自动安装 Chromium', autoInstallHint: '可能触发较大下载,日常建议关闭并显式调用 browser_install。',
|
|
21
|
+
storageStatePath: '全局 storageState 路径', storageStatePathHint: '旧版兼容入口;新配置优先使用限域 AuthProfile。',
|
|
22
|
+
authProfiles: 'AuthProfiles JSON', authProfilesHint: '命名登录态、allowedDomains 与 persistState。',
|
|
23
|
+
defaultAuthProfile: '默认 AuthProfile', defaultAuthProfileHint: '未显式选择登录态时使用;browser_crawl 始终匿名。',
|
|
24
|
+
rulePacks: 'RulePacks JSON', rulePacksHint: '域名匹配、哈希固定 init script 和有界步骤。',
|
|
25
|
+
executablePath: '浏览器可执行文件', executablePathHint: '少数自定义部署才需要覆盖。',
|
|
26
|
+
snapshotDir: '快照目录', snapshotDirHint: '留空使用 DSH_HOME 下的默认目录。',
|
|
27
|
+
verbose: '详细日志', verboseHint: '输出启动和诊断信息。',
|
|
28
|
+
reset: '恢复部署值', invalid: '值无效,请检查格式或范围。', invalidJson: 'JSON 或数值范围无效。',
|
|
29
|
+
restart: '保存后完整重启 profile,运行时和工具目录才会重新注册。',
|
|
30
|
+
saved: '配置已同步。', pending: '有待保存的修改。', invalidSave: '存在无效字段。', saveFailed: '保存失败,草稿已保留。', saving: '保存中…',
|
|
31
|
+
save: '保存', discard: '放弃修改',
|
|
32
|
+
};
|
|
33
|
+
export const en = {
|
|
34
|
+
title: 'Browser automation', description: 'Runtime, tool freedom, OpenCLI, and overuse buffering policy.',
|
|
35
|
+
expand: 'Expand settings', collapse: 'Collapse settings', unsaved: 'Unsaved', readOnly: 'Configuration is read-only.',
|
|
36
|
+
freedom: 'Automation freedom', freedomHint: 'No-approval skips human confirmation only; buffering and validation remain active.',
|
|
37
|
+
runtime: 'Browser runtime', runtimeHint: 'Playwright by default; explicitly select Patchright for compatibility-sensitive sites.',
|
|
38
|
+
usage: 'Usage buffer', usageHint: 'Bounds concurrency, bursts and crawl budgets, with backoff for 429/503 responses.',
|
|
39
|
+
advanced: 'Auth and advanced settings', advancedHint: 'Never commit state files; AuthProfiles must declare allowedDomains.',
|
|
40
|
+
enabled: 'Enable browser service', enabledHint: 'Disabling makes the browser service unavailable.',
|
|
41
|
+
automationMode: 'Automation mode', automationModeHint: 'read-only / standard / autonomous / unrestricted.',
|
|
42
|
+
browserRuntime: 'Runtime provider', browserRuntimeHint: 'Patchright is Chromium-only.',
|
|
43
|
+
channel: 'Browser channel', channelHint: 'chromium, chrome, or msedge. Patchright recommends chrome.',
|
|
44
|
+
headless: 'Headless mode', headlessHint: 'Patchright compatibility is usually strongest in headed mode.',
|
|
45
|
+
opencliEnabled: 'Enable OpenCLI', opencliEnabledHint: 'Master switch for site adapters and the Chrome Browser Bridge.',
|
|
46
|
+
usagePolicy: 'Usage buffer JSON', usagePolicyHint: 'minDelayMs, maxConcurrency, burst, maxPagesPerRun, maxDepth, retryLimit, backoffBaseMs, cooldownMs.',
|
|
47
|
+
automationAssets: 'Automation asset policy JSON', automationAssetsHint: 'Candidate thresholds, persistence, activation, count, and context budgets.',
|
|
48
|
+
assetLibrary: 'Reusable automation assets (Experimental)', assetLibraryHint: 'Experimental: candidates ask before summarization; drafts require runtime replay before manual activation. Source loads only when selected.',
|
|
49
|
+
assetLoading: 'Loading local automation assets…', assetFailed: 'Failed to load automation assets.', assetSuggestions: 'Summarization suggestions', assetRuns: 'successful runs', assetSessions: 'sessions', assetDismiss: 'Not now', assetSummarize: 'Summarize to draft',
|
|
50
|
+
assetScripts: 'Scripts and recipes', assetScriptsHint: 'The model can retrieve only bounded summaries of active assets.', assetNewRecipe: 'New recipe', assetNewScript: 'New userscript', assetRefresh: 'Refresh', assetEmpty: 'No assets yet.',
|
|
51
|
+
assetEditor: 'Asset editor (JSON)', assetEditorHint: 'Select an asset or create a draft.', assetInvalid: 'Invalid JSON, test URL, or inputs.', assetSourceBoundary: 'Do not store cookies, tokens, passwords, full page content, or conversation transcripts.', assetValidate: 'Static validate', assetTest: 'Runtime replay', assetTestUrl: 'Test URL (must match an allowed domain)', assetTestInputs: 'Test inputs JSON', assetActivate: 'Activate', assetArchive: 'Archive', assetSaveDraft: 'Save draft',
|
|
52
|
+
autoInstall: 'Auto-install Chromium when missing', autoInstallHint: 'May download a large binary; explicit browser_install is safer for daily use.',
|
|
53
|
+
storageStatePath: 'Global storageState path', storageStatePathHint: 'Legacy fallback; prefer domain-scoped AuthProfiles.',
|
|
54
|
+
authProfiles: 'AuthProfiles JSON', authProfilesHint: 'Named states with allowedDomains and persistState.',
|
|
55
|
+
defaultAuthProfile: 'Default AuthProfile', defaultAuthProfileHint: 'Used when no profile is selected; browser_crawl is always anonymous.',
|
|
56
|
+
rulePacks: 'RulePacks JSON', rulePacksHint: 'Domain match, hash-pinned init scripts, and bounded steps.',
|
|
57
|
+
executablePath: 'Browser executable', executablePathHint: 'Override only for custom deployments.',
|
|
58
|
+
snapshotDir: 'Snapshot directory', snapshotDirHint: 'Leave empty for the DSH_HOME default.',
|
|
59
|
+
verbose: 'Verbose logs', verboseHint: 'Emit startup and diagnostic details.',
|
|
60
|
+
reset: 'Restore deployed', invalid: 'Invalid value. Check format and bounds.', invalidJson: 'Invalid JSON or numeric bounds.',
|
|
61
|
+
restart: 'Fully restart the profile after saving so runtime and tool catalogs are re-registered.',
|
|
62
|
+
saved: 'Configuration is synchronized.', pending: 'Changes are ready to save.', invalidSave: 'Some fields are invalid.', saveFailed: 'Save failed; the draft was retained.', saving: 'Saving…',
|
|
63
|
+
save: 'Save', discard: 'Discard',
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=locales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locales.js","sourceRoot":"","sources":["../../src/client/locales.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-namespace.js","sourceRoot":"","sources":["../../src/client/settings-namespace.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare const styles: {
|
|
2
|
+
readonly card: "dsb-card";
|
|
3
|
+
readonly open: "dsb-open";
|
|
4
|
+
readonly header: "dsb-header";
|
|
5
|
+
readonly head: "dsb-head";
|
|
6
|
+
readonly titleRow: "dsb-title-row";
|
|
7
|
+
readonly name: "dsb-name";
|
|
8
|
+
readonly description: "dsb-description";
|
|
9
|
+
readonly badge: "dsb-badge";
|
|
10
|
+
readonly chevron: "dsb-chevron";
|
|
11
|
+
readonly chevronOpen: "dsb-chevron-open";
|
|
12
|
+
readonly body: "dsb-body";
|
|
13
|
+
readonly notice: "dsb-notice";
|
|
14
|
+
readonly section: "dsb-section";
|
|
15
|
+
readonly sectionHead: "dsb-section-head";
|
|
16
|
+
readonly grid: "dsb-grid";
|
|
17
|
+
readonly field: "dsb-field";
|
|
18
|
+
readonly invalid: "dsb-invalid";
|
|
19
|
+
readonly fieldHead: "dsb-field-head";
|
|
20
|
+
readonly label: "dsb-label";
|
|
21
|
+
readonly hint: "dsb-hint";
|
|
22
|
+
readonly input: "dsb-input";
|
|
23
|
+
readonly textarea: "dsb-textarea";
|
|
24
|
+
readonly code: "dsb-code";
|
|
25
|
+
readonly reset: "dsb-reset";
|
|
26
|
+
readonly toggle: "dsb-toggle";
|
|
27
|
+
readonly toggleLabel: "dsb-toggle-label";
|
|
28
|
+
readonly check: "dsb-check";
|
|
29
|
+
readonly advanced: "dsb-advanced";
|
|
30
|
+
readonly footer: "dsb-footer";
|
|
31
|
+
readonly status: "dsb-status";
|
|
32
|
+
readonly failed: "dsb-failed";
|
|
33
|
+
readonly actions: "dsb-actions";
|
|
34
|
+
readonly primary: "dsb-primary";
|
|
35
|
+
readonly secondary: "dsb-secondary";
|
|
36
|
+
readonly assetGroup: "dsb-asset-group";
|
|
37
|
+
readonly assetRow: "dsb-asset-row";
|
|
38
|
+
readonly assetToolbar: "dsb-asset-toolbar";
|
|
39
|
+
readonly assetLayout: "dsb-asset-layout";
|
|
40
|
+
readonly assetList: "dsb-asset-list";
|
|
41
|
+
readonly assetItem: "dsb-asset-item";
|
|
42
|
+
readonly assetSelected: "dsb-asset-selected";
|
|
43
|
+
readonly assetTest: "dsb-asset-test";
|
|
44
|
+
readonly assetTestForm: "dsb-asset-test-form";
|
|
45
|
+
readonly assetEditor: "dsb-asset-editor";
|
|
46
|
+
readonly invalidInput: "dsb-invalid-input";
|
|
47
|
+
};
|
|
48
|
+
export declare function ensureStyles(): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const styles = {
|
|
2
|
+
card: 'dsb-card', open: 'dsb-open', header: 'dsb-header', head: 'dsb-head', titleRow: 'dsb-title-row', name: 'dsb-name', description: 'dsb-description', badge: 'dsb-badge',
|
|
3
|
+
chevron: 'dsb-chevron', chevronOpen: 'dsb-chevron-open', body: 'dsb-body', notice: 'dsb-notice', section: 'dsb-section', sectionHead: 'dsb-section-head', grid: 'dsb-grid',
|
|
4
|
+
field: 'dsb-field', invalid: 'dsb-invalid', fieldHead: 'dsb-field-head', label: 'dsb-label', hint: 'dsb-hint', input: 'dsb-input', textarea: 'dsb-textarea', code: 'dsb-code', reset: 'dsb-reset',
|
|
5
|
+
toggle: 'dsb-toggle', toggleLabel: 'dsb-toggle-label', check: 'dsb-check', advanced: 'dsb-advanced', footer: 'dsb-footer', status: 'dsb-status', failed: 'dsb-failed', actions: 'dsb-actions', primary: 'dsb-primary', secondary: 'dsb-secondary',
|
|
6
|
+
assetGroup: 'dsb-asset-group', assetRow: 'dsb-asset-row', assetToolbar: 'dsb-asset-toolbar', assetLayout: 'dsb-asset-layout', assetList: 'dsb-asset-list', assetItem: 'dsb-asset-item', assetSelected: 'dsb-asset-selected', assetTest: 'dsb-asset-test', assetTestForm: 'dsb-asset-test-form', assetEditor: 'dsb-asset-editor', invalidInput: 'dsb-invalid-input',
|
|
7
|
+
};
|
|
8
|
+
export function ensureStyles() {
|
|
9
|
+
if (document.getElementById('dsh-browser-settings-styles'))
|
|
10
|
+
return;
|
|
11
|
+
const style = document.createElement('style');
|
|
12
|
+
style.id = 'dsh-browser-settings-styles';
|
|
13
|
+
style.textContent = `
|
|
14
|
+
.dsb-card{list-style:none;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:var(--dsw-alias-bg-layer-3);transition:border-color .16s,background .16s}.dsb-card:hover{border-color:var(--dsw-alias-label-dimmed)}.dsb-open{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}
|
|
15
|
+
.dsb-header{width:100%;appearance:none;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:12px}.dsb-header:focus-visible,.dsb-input:focus-visible,.dsb-reset:focus-visible,.dsb-primary:focus-visible,.dsb-secondary:focus-visible,.dsb-check:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}
|
|
16
|
+
.dsb-head{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.dsb-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dsb-name{font-size:15px;font-weight:600;color:var(--dsw-alias-label-primary)}.dsb-description,.dsb-hint,.dsb-section-head p{font-size:12px;line-height:1.5;color:var(--dsw-alias-label-tertiary);margin:0}.dsb-badge{font-size:11px;padding:2px 7px;border-radius:9px;color:var(--dsw-alias-brand-primary);background:color-mix(in srgb,var(--dsw-alias-brand-primary) 12%,transparent)}
|
|
17
|
+
.dsb-chevron{flex:none;color:var(--dsw-alias-label-tertiary);transition:transform .16s}.dsb-chevron-open{transform:rotate(180deg)}.dsb-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding:4px 0 8px}.dsb-notice{margin:12px 0 0;padding:9px 11px;border-radius:8px;font-size:12px;line-height:1.5;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-3)}
|
|
18
|
+
.dsb-section{padding:18px 0}.dsb-section+.dsb-section{border-top:1px solid var(--dsw-alias-border-l2)}.dsb-section-head{margin-bottom:14px}.dsb-section-head h3{margin:0;font-size:14px;color:var(--dsw-alias-label-primary)}.dsb-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px 16px}.dsb-field{display:flex;min-width:0;flex-direction:column;gap:6px}.dsb-field-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.dsb-label{font-size:13px;font-weight:500;color:var(--dsw-alias-label-primary)}
|
|
19
|
+
.dsb-input{box-sizing:border-box;width:100%;min-width:0;height:34px;padding:0 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);font:inherit;font-size:13px;color:var(--dsw-alias-label-primary)}.dsb-input:focus-visible{outline:none;border-color:var(--dsw-alias-brand-primary)}.dsb-input:disabled{opacity:.55}.dsb-invalid .dsb-input{border-color:var(--dsw-alias-label-error)}.dsb-textarea{height:auto;padding:9px 10px;resize:vertical;line-height:1.45}.dsb-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.dsb-reset{appearance:none;border:0;background:none;padding:0;color:var(--dsw-alias-brand-primary);font:inherit;font-size:11px;cursor:pointer}
|
|
20
|
+
.dsb-toggle{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-top:2px}.dsb-toggle-label{display:flex;align-items:flex-start;gap:9px;cursor:pointer}.dsb-check{width:16px;height:16px;flex:none;margin:2px 0 0;accent-color:var(--dsw-alias-brand-primary)}.dsb-advanced{padding:16px 0;border-top:1px solid var(--dsw-alias-border-l2)}.dsb-advanced>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary)}
|
|
21
|
+
.dsb-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0 4px;border-top:1px solid var(--dsw-alias-border-l2)}.dsb-status,.dsb-failed{margin:0;font-size:12px}.dsb-status{color:var(--dsw-alias-label-tertiary)}.dsb-failed{color:var(--dsw-alias-label-error)}.dsb-actions{display:flex;gap:8px}.dsb-primary,.dsb-secondary{appearance:none;border-radius:8px;padding:6px 14px;font:inherit;font-size:13px;cursor:pointer}.dsb-primary{border:1px solid transparent;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}.dsb-secondary{border:1px solid var(--dsw-alias-border-l2);background:transparent;color:var(--dsw-alias-label-primary)}.dsb-primary:disabled,.dsb-secondary:disabled,.dsb-reset:disabled{opacity:.4;cursor:default}
|
|
22
|
+
.dsb-asset-group{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.dsb-asset-group h4{margin:0;font-size:13px}.dsb-asset-row,.dsb-asset-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;border:1px solid var(--dsw-alias-border-l2);border-radius:9px}.dsb-asset-row p,.dsb-asset-toolbar p{margin:3px 0 0;font-size:11px;color:var(--dsw-alias-label-tertiary)}.dsb-asset-toolbar{margin-bottom:10px;border:0;padding:0}.dsb-asset-layout{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(0,1.3fr);gap:12px}.dsb-asset-list{display:flex;flex-direction:column;gap:6px;max-height:500px;overflow:auto}.dsb-asset-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 10px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);text-align:left;cursor:pointer}.dsb-asset-item span:first-child{display:flex;min-width:0;flex-direction:column;gap:3px}.dsb-asset-item small,.dsb-asset-test{font-size:10px;color:var(--dsw-alias-label-tertiary)}.dsb-asset-selected{border-color:var(--dsw-alias-brand-primary);background:color-mix(in srgb,var(--dsw-alias-brand-primary) 8%,var(--dsw-alias-bg-layer-3))}.dsb-asset-editor{display:flex;min-width:0;flex-direction:column;gap:8px}.dsb-asset-editor .dsb-actions{justify-content:flex-end;flex-wrap:wrap}.dsb-invalid-input{border-color:var(--dsw-alias-label-error)}
|
|
23
|
+
.dsb-asset-test-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.dsb-asset-test-form .dsb-textarea{min-height:64px}
|
|
24
|
+
@media(max-width:720px){.dsb-grid,.dsb-asset-layout{grid-template-columns:minmax(0,1fr)}.dsb-footer,.dsb-asset-row,.dsb-asset-toolbar{align-items:stretch;flex-direction:column}.dsb-actions{justify-content:flex-end}}@media(max-width:420px){.dsb-body{margin:0 12px}.dsb-actions{display:grid;grid-template-columns:1fr 1fr}.dsb-primary,.dsb-secondary{width:100%}}
|
|
25
|
+
`;
|
|
26
|
+
document.head.append(style);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW;IAC3K,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU;IAC1K,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;IACjM,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe;IACjP,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB;CAC1V,CAAA;AAEV,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,CAAC,cAAc,CAAC,6BAA6B,CAAC;QAAE,OAAM;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC7C,KAAK,CAAC,EAAE,GAAG,6BAA6B,CAAA;IACxC,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;CAYrB,CAAA;IACC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
|