@anweat/dsh-browser 0.1.17 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +266 -88
  2. package/assets/skills/dsh-browser/SKILL.md +120 -0
  3. package/assets/skills/dsh-browser/references/develop.md +48 -0
  4. package/assets/skills/dsh-browser/references/observe.md +91 -0
  5. package/assets/skills/dsh-browser/references/opencli.md +25 -0
  6. package/assets/skills/dsh-browser/references/recipes.md +149 -0
  7. package/assets/skills/dsh-browser/references/userscripts.md +44 -0
  8. package/cordis.patch.yml +11 -3
  9. package/lib/actions/act.d.ts +3 -0
  10. package/lib/actions/act.js +147 -0
  11. package/lib/actions/act.js.map +1 -0
  12. package/lib/actions/automation.d.ts +3 -0
  13. package/lib/actions/automation.js +356 -0
  14. package/lib/actions/automation.js.map +1 -0
  15. package/lib/actions/crawl.d.ts +3 -0
  16. package/lib/actions/crawl.js +28 -0
  17. package/lib/actions/crawl.js.map +1 -0
  18. package/lib/actions/errors.d.ts +53 -0
  19. package/lib/actions/errors.js +178 -0
  20. package/lib/actions/errors.js.map +1 -0
  21. package/lib/actions/index-view.d.ts +42 -0
  22. package/lib/actions/index-view.js +268 -0
  23. package/lib/actions/index-view.js.map +1 -0
  24. package/lib/actions/inspect.d.ts +3 -0
  25. package/lib/actions/inspect.js +35 -0
  26. package/lib/actions/inspect.js.map +1 -0
  27. package/lib/actions/observe.d.ts +3 -0
  28. package/lib/actions/observe.js +121 -0
  29. package/lib/actions/observe.js.map +1 -0
  30. package/lib/actions/opencli.d.ts +3 -0
  31. package/lib/actions/opencli.js +51 -0
  32. package/lib/actions/opencli.js.map +1 -0
  33. package/lib/actions/registry.d.ts +35 -0
  34. package/lib/actions/registry.js +89 -0
  35. package/lib/actions/registry.js.map +1 -0
  36. package/lib/actions/run.d.ts +34 -0
  37. package/lib/actions/run.js +226 -0
  38. package/lib/actions/run.js.map +1 -0
  39. package/lib/actions/runtime.d.ts +3 -0
  40. package/lib/actions/runtime.js +33 -0
  41. package/lib/actions/runtime.js.map +1 -0
  42. package/lib/actions/schema.d.ts +31 -0
  43. package/lib/actions/schema.js +309 -0
  44. package/lib/actions/schema.js.map +1 -0
  45. package/lib/actions/script.d.ts +3 -0
  46. package/lib/actions/script.js +97 -0
  47. package/lib/actions/script.js.map +1 -0
  48. package/lib/actions/shared.d.ts +31 -0
  49. package/lib/actions/shared.js +45 -0
  50. package/lib/actions/shared.js.map +1 -0
  51. package/lib/actions/surface.d.ts +22 -0
  52. package/lib/actions/surface.js +18 -0
  53. package/lib/actions/surface.js.map +1 -0
  54. package/lib/actions/target.d.ts +3 -0
  55. package/lib/actions/target.js +66 -0
  56. package/lib/actions/target.js.map +1 -0
  57. package/lib/actions/types.d.ts +181 -0
  58. package/lib/actions/types.js +48 -0
  59. package/lib/actions/types.js.map +1 -0
  60. package/lib/activation-rules.d.ts +29 -0
  61. package/lib/activation-rules.js +33 -0
  62. package/lib/activation-rules.js.map +1 -0
  63. package/lib/approval-policy.d.ts +40 -2
  64. package/lib/approval-policy.js +184 -97
  65. package/lib/approval-policy.js.map +1 -1
  66. package/lib/automation-assets-rpc.d.ts +8 -2
  67. package/lib/automation-assets-rpc.js +68 -10
  68. package/lib/automation-assets-rpc.js.map +1 -1
  69. package/lib/automation-assets.d.ts +152 -4
  70. package/lib/automation-assets.js +255 -15
  71. package/lib/automation-assets.js.map +1 -1
  72. package/lib/automation-convert.d.ts +23 -0
  73. package/lib/automation-convert.js +110 -0
  74. package/lib/automation-convert.js.map +1 -0
  75. package/lib/automation-development.d.ts +26 -0
  76. package/lib/automation-development.js +47 -0
  77. package/lib/automation-development.js.map +1 -1
  78. package/lib/automation-execution.d.ts +57 -1
  79. package/lib/automation-execution.js +167 -11
  80. package/lib/automation-execution.js.map +1 -1
  81. package/lib/automation-journal.d.ts +92 -0
  82. package/lib/automation-journal.js +449 -0
  83. package/lib/automation-journal.js.map +1 -0
  84. package/lib/automation-v2.d.ts +138 -0
  85. package/lib/automation-v2.js +631 -0
  86. package/lib/automation-v2.js.map +1 -0
  87. package/lib/automation.d.ts +82 -5
  88. package/lib/automation.js +239 -82
  89. package/lib/automation.js.map +1 -1
  90. package/lib/browser-service.d.ts +309 -32
  91. package/lib/browser-service.js +636 -182
  92. package/lib/browser-service.js.map +1 -1
  93. package/lib/client/SettingsCard.js +95 -57
  94. package/lib/client/SettingsCard.js.map +1 -1
  95. package/lib/client/asset-editor.d.ts +55 -0
  96. package/lib/client/asset-editor.js +101 -0
  97. package/lib/client/asset-editor.js.map +1 -0
  98. package/lib/client/automation-assets-client.d.ts +99 -2
  99. package/lib/client/automation-assets-client.js +243 -10
  100. package/lib/client/automation-assets-client.js.map +1 -1
  101. package/lib/client/form.d.ts +48 -4
  102. package/lib/client/form.js +142 -29
  103. package/lib/client/form.js.map +1 -1
  104. package/lib/client/index.d.ts +25 -2
  105. package/lib/client/index.js +5 -1
  106. package/lib/client/index.js.map +1 -1
  107. package/lib/client/locales.d.ts +85 -6
  108. package/lib/client/locales.js +64 -12
  109. package/lib/client/locales.js.map +1 -1
  110. package/lib/client/prompts-form.d.ts +67 -0
  111. package/lib/client/prompts-form.js +140 -0
  112. package/lib/client/prompts-form.js.map +1 -0
  113. package/lib/client/prompts-status-client.d.ts +34 -0
  114. package/lib/client/prompts-status-client.js +53 -0
  115. package/lib/client/prompts-status-client.js.map +1 -0
  116. package/lib/client/settings-namespace.d.ts +1 -1
  117. package/lib/client/settings-namespace.js +1 -1
  118. package/lib/client/settings-namespace.js.map +1 -1
  119. package/lib/client.js +1915 -330
  120. package/lib/client.js.map +1 -1
  121. package/lib/config.d.ts +50 -1
  122. package/lib/config.js +31 -1
  123. package/lib/config.js.map +1 -1
  124. package/lib/dialogs.d.ts +37 -0
  125. package/lib/dialogs.js +73 -0
  126. package/lib/dialogs.js.map +1 -0
  127. package/lib/freedom.d.ts +23 -7
  128. package/lib/freedom.js +48 -59
  129. package/lib/freedom.js.map +1 -1
  130. package/lib/index.d.ts +5 -13
  131. package/lib/index.js +51 -30
  132. package/lib/index.js.map +1 -1
  133. package/lib/journal.d.ts +109 -0
  134. package/lib/journal.js +238 -0
  135. package/lib/journal.js.map +1 -0
  136. package/lib/locator.d.ts +82 -0
  137. package/lib/locator.js +190 -0
  138. package/lib/locator.js.map +1 -0
  139. package/lib/observe-script.d.ts +27 -0
  140. package/lib/observe-script.js +565 -0
  141. package/lib/observe-script.js.map +1 -0
  142. package/lib/observe.d.ts +179 -0
  143. package/lib/observe.js +368 -0
  144. package/lib/observe.js.map +1 -0
  145. package/lib/policy-keys.d.ts +30 -0
  146. package/lib/policy-keys.js +34 -0
  147. package/lib/policy-keys.js.map +1 -0
  148. package/lib/prompt-limits.d.ts +30 -0
  149. package/lib/prompt-limits.js +31 -0
  150. package/lib/prompt-limits.js.map +1 -0
  151. package/lib/prompts.d.ts +131 -0
  152. package/lib/prompts.js +295 -0
  153. package/lib/prompts.js.map +1 -0
  154. package/lib/skill.d.ts +100 -0
  155. package/lib/skill.js +181 -0
  156. package/lib/skill.js.map +1 -0
  157. package/lib/tool-defs.d.ts +72 -0
  158. package/lib/tool-defs.js +67 -0
  159. package/lib/tool-defs.js.map +1 -0
  160. package/lib/tools.d.ts +19 -4
  161. package/lib/tools.js +124 -922
  162. package/lib/tools.js.map +1 -1
  163. package/package.json +15 -11
  164. package/scripts/check-host-rpc.mjs +11 -4
  165. package/scripts/dump-prompts.mjs +29 -0
  166. package/scripts/measure-tool-surface.mjs +190 -0
  167. package/lib/settings-scope.d.ts +0 -56
  168. package/lib/settings-scope.js +0 -51
  169. package/lib/settings-scope.js.map +0 -1
@@ -10,6 +10,8 @@
10
10
  * @module dsh-browser/client/form
11
11
  */
12
12
  import { SettingsFormModel, settingsNumberField, settingsTextField } from '@deepseek-ai/dsh-client-ui-primitives';
13
+ import { ASSET_POLICY_BOOLEAN_KEYS, ASSET_POLICY_ENUMS, ASSET_POLICY_INTEGER_RANGES, ASSET_POLICY_KEYS, ASSET_POLICY_STRING_KEYS, USAGE_POLICY_BOUNDS } from "../policy-keys.js";
14
+ import { PROMPT_TEXT_FIELDS, canonicalPrompts, extrasText, getAt, setAt, validExtras, validPrompts, withExtras } from "./prompts-form.js";
13
15
  /** A free-text field that clears when emptied, so blanking the control resets it. */
14
16
  const textField = (field) => settingsTextField(field);
15
17
  /**
@@ -63,40 +65,47 @@ const jsonField = (field, validate) => ({
63
65
  }
64
66
  },
65
67
  });
66
- const POLICY_BOUNDS = {
67
- minDelayMs: [0, 60_000], maxConcurrency: [1, 8], burst: [1, 20], maxPagesPerRun: [1, 100],
68
- maxDepth: [0, 5], retryLimit: [0, 5], backoffBaseMs: [1, 60_000], cooldownMs: [100, 300_000],
69
- };
70
- const ASSET_POLICY_KEYS = new Set([
71
- 'enabled', 'directory', 'persistenceMode', 'activationMode', 'minSuccessfulRuns', 'minDistinctSessions',
72
- 'successWindowDays', 'minSuccessRate', 'maxCandidates', 'candidateTtlDays', 'maxSuggestionsPerDay',
73
- 'maxDrafts', 'maxActiveAssets', 'retrievalTopK', 'catalogTokenBudget',
74
- 'modelDevelopmentEnabled', 'maxModelDraftWritesPerSession',
75
- ]);
68
+ /** A JSON array of strings (Chromium launch arguments): written compactly on one line, an empty draft clears it. */
69
+ const stringArrayField = (field) => ({
70
+ field,
71
+ format: value => Array.isArray(value) && value.length ? JSON.stringify(value) : '',
72
+ parse(text) {
73
+ if (text.trim() === '')
74
+ return { kind: 'clear' };
75
+ try {
76
+ const value = JSON.parse(text);
77
+ return Array.isArray(value) && value.every(entry => typeof entry === 'string' && entry.length > 0) ? { kind: 'set', value } : undefined;
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ },
83
+ });
84
+ const ASSET_KEYS = new Set(ASSET_POLICY_KEYS);
85
+ const NON_NUMERIC_ASSET_KEYS = new Set([...ASSET_POLICY_BOOLEAN_KEYS, ...ASSET_POLICY_STRING_KEYS, ...Object.keys(ASSET_POLICY_ENUMS)]);
76
86
  function validAssetPolicy(value) {
77
- if (Object.keys(value).some(key => !ASSET_POLICY_KEYS.has(key)))
78
- return false;
79
- if (value.enabled !== undefined && typeof value.enabled !== 'boolean')
80
- return false;
81
- if (value.directory !== undefined && typeof value.directory !== 'string')
82
- return false;
83
- if (value.modelDevelopmentEnabled !== undefined && typeof value.modelDevelopmentEnabled !== 'boolean')
87
+ if (Object.keys(value).some(key => !ASSET_KEYS.has(key)))
84
88
  return false;
85
- if (value.persistenceMode !== undefined && !['off', 'manual', 'suggest', 'auto-draft'].includes(String(value.persistenceMode)))
86
- return false;
87
- if (value.activationMode !== undefined && !['manual', 'auto-tested'].includes(String(value.activationMode)))
88
- return false;
89
- const numeric = ['minSuccessfulRuns', 'minDistinctSessions', 'successWindowDays', 'minSuccessRate', 'maxCandidates', 'candidateTtlDays', 'maxSuggestionsPerDay', 'maxDrafts', 'maxActiveAssets', 'retrievalTopK', 'catalogTokenBudget', 'maxModelDraftWritesPerSession'];
90
89
  return Object.entries(value).every(([key, entry]) => {
91
- if (!numeric.includes(key))
90
+ if (ASSET_POLICY_BOOLEAN_KEYS.includes(key))
91
+ return entry === undefined || typeof entry === 'boolean';
92
+ if (ASSET_POLICY_STRING_KEYS.includes(key))
93
+ return entry === undefined || typeof entry === 'string';
94
+ const choices = ASSET_POLICY_ENUMS[key];
95
+ if (choices)
96
+ return entry === undefined || choices.includes(String(entry));
97
+ if (NON_NUMERIC_ASSET_KEYS.has(key))
92
98
  return true;
93
- return typeof entry === 'number' && Number.isFinite(entry) && entry >= 0;
99
+ if (typeof entry !== 'number' || !Number.isFinite(entry) || entry < 0)
100
+ return false;
101
+ const range = ASSET_POLICY_INTEGER_RANGES[key];
102
+ return !range || (Number.isInteger(entry) && entry >= range[0] && entry <= range[1]);
94
103
  });
95
104
  }
96
105
  function validUsagePolicy(value) {
97
- if (Object.keys(value).some(key => !(key in POLICY_BOUNDS)))
106
+ if (Object.keys(value).some(key => !(key in USAGE_POLICY_BOUNDS)))
98
107
  return false;
99
- return Object.entries(POLICY_BOUNDS).every(([key, [min, max]]) => {
108
+ return Object.entries(USAGE_POLICY_BOUNDS).every(([key, [min, max]]) => {
100
109
  const entry = value[key];
101
110
  return entry === undefined || (typeof entry === 'number' && Number.isInteger(entry) && entry >= min && entry <= max);
102
111
  });
@@ -109,9 +118,11 @@ function validUsagePolicy(value) {
109
118
  export const FIELD_SPECS = [
110
119
  booleanField('enabled'),
111
120
  enumField('automationMode', ['read-only', 'standard', 'autonomous', 'unrestricted']),
121
+ enumField('toolSurface', ['indexed', 'flat']),
112
122
  enumField('browserRuntime', ['playwright', 'patchright']),
113
123
  textField('channel'),
114
124
  rangedNumberField('cdpPort', 1, 65_535),
125
+ rangedNumberField('maxSessions', 1, 64),
115
126
  booleanField('headless'),
116
127
  booleanField('opencliEnabled'),
117
128
  booleanField('autoInstall'),
@@ -121,28 +132,113 @@ export const FIELD_SPECS = [
121
132
  textField('snapshotDir'),
122
133
  booleanField('verbose'),
123
134
  ];
124
- /** The JSON-shaped section fields the card renders as code editors. */
135
+ /** The JSON-shaped section fields: objects (policies, prompts) and the launch-argument array. */
125
136
  export const JSON_FIELD_SPECS = [
126
137
  jsonField('usagePolicy', validUsagePolicy),
127
138
  jsonField('automationAssets', validAssetPolicy),
139
+ jsonField('prompts', validPrompts),
140
+ stringArrayField('args'),
128
141
  ];
142
+ /**
143
+ * Public config fields the card has no form for, on purpose: nested records (named login states, rule packs with
144
+ * hash-pinned scripts) that are safer to edit in the profile config file. The card names each one and says so, instead
145
+ * of leaving it out without a word. `rulePacks` is not `.volatile()` in the Host schema, so no form could write it.
146
+ */
147
+ export const CONFIG_FILE_ONLY_FIELDS = ['authProfiles', 'rulePacks'];
129
148
  /** Section fields rendered as JSON code editors rather than single inputs. */
130
149
  export const JSON_FIELDS = new Set(JSON_FIELD_SPECS.map(spec => spec.field));
131
150
  /** Every field the card renders, in display order. */
132
151
  export const ALL_FIELD_SPECS = [...FIELD_SPECS, ...JSON_FIELD_SPECS];
133
152
  export class BrowserSettingsController {
153
+ scope;
134
154
  form;
135
155
  store;
156
+ /** What the person typed in the groups/actions/errorHints box, kept verbatim while it is not valid JSON yet. */
157
+ extrasRaw;
158
+ extrasInvalid = false;
136
159
  constructor(scope) {
160
+ this.scope = scope;
137
161
  this.form = new SettingsFormModel(scope, [...ALL_FIELD_SPECS]);
138
162
  this.store = this.form.bind(() => this.project());
139
163
  }
140
164
  inject() {
165
+ const actions = this.form.actions();
141
166
  return {
142
167
  hooks: { browserSettings: this.store },
143
- ...this.form.actions(),
168
+ ...actions,
169
+ // A save is refused while the groups/actions/errorHints box holds something that is not valid.
170
+ save: () => this.save(),
171
+ discard: () => { this.extrasRaw = undefined; this.extrasInvalid = false; actions.discard(); },
172
+ editPromptText: (id, text) => this.editPromptText(id, text),
173
+ setPromptSkillEnabled: (enabled) => this.setPromptSkillEnabled(enabled),
174
+ editPromptExtras: (text) => this.editPromptExtras(text),
175
+ resetPromptExtras: () => this.resetPromptExtras(),
144
176
  };
145
177
  }
178
+ async save() {
179
+ if (this.extrasInvalid)
180
+ return;
181
+ await this.form.save();
182
+ // What was typed is now the stored value, so the box shows that again. (A failed save keeps the draft and its flag.)
183
+ if (!this.form.shell().failed && this.extrasRaw !== undefined) {
184
+ this.extrasRaw = undefined;
185
+ this.refresh();
186
+ }
187
+ }
188
+ // --- the prompt text section: one staged `prompts` draft, several views of it ----------------------------------
189
+ /** The staged `prompts` value as an object (empty when none, or when its text is not JSON). */
190
+ promptsDraft() {
191
+ const text = this.form.field('prompts').text;
192
+ if (text.trim() === '')
193
+ return {};
194
+ try {
195
+ const value = JSON.parse(text);
196
+ return value && typeof value === 'object' && !Array.isArray(value) ? canonicalPrompts(value) : {};
197
+ }
198
+ catch {
199
+ return {};
200
+ }
201
+ }
202
+ stagePrompts(value) {
203
+ const next = canonicalPrompts(value);
204
+ const stored = this.scope.getSnapshot().value?.prompts;
205
+ const same = JSON.stringify(next) === JSON.stringify(stored && typeof stored === 'object' ? canonicalPrompts(stored) : {});
206
+ // Back at the stored value: stage its own text, so the form no longer counts a change.
207
+ const text = same ? ALL_FIELD_SPECS.find(spec => spec.field === 'prompts').format(stored) : Object.keys(next).length ? JSON.stringify(next, null, 2) : '';
208
+ this.form.actions().edit('prompts', text);
209
+ }
210
+ refresh() { this.form.actions().edit('prompts', this.form.field('prompts').text); }
211
+ editPromptText(id, text) {
212
+ const field = PROMPT_TEXT_FIELDS.find(entry => entry.id === id);
213
+ this.stagePrompts(setAt(this.promptsDraft(), field.path, text.trim() === '' ? undefined : text));
214
+ }
215
+ setPromptSkillEnabled(enabled) {
216
+ this.stagePrompts(setAt(this.promptsDraft(), ['skill', 'enabled'], enabled ? undefined : false));
217
+ }
218
+ editPromptExtras(text) {
219
+ this.extrasRaw = text;
220
+ this.extrasInvalid = false;
221
+ if (text.trim() === '') {
222
+ this.stagePrompts(withExtras(this.promptsDraft(), {}));
223
+ return;
224
+ }
225
+ try {
226
+ const value = JSON.parse(text);
227
+ if (value && typeof value === 'object' && !Array.isArray(value) && validExtras(value)) {
228
+ this.stagePrompts(withExtras(this.promptsDraft(), value));
229
+ return;
230
+ }
231
+ }
232
+ catch { /* reported below */ }
233
+ this.extrasInvalid = true;
234
+ this.refresh();
235
+ }
236
+ /** Back to the plugin's own text for groups, actions and error hints. */
237
+ resetPromptExtras() {
238
+ this.extrasRaw = undefined;
239
+ this.extrasInvalid = false;
240
+ this.stagePrompts(withExtras(this.promptsDraft(), {}));
241
+ }
146
242
  snapshot() { return this.store.getSnapshot(); }
147
243
  dispose() { this.form.dispose(); }
148
244
  project() {
@@ -152,7 +248,24 @@ export class BrowserSettingsController {
152
248
  const jsonFields = {};
153
249
  for (const spec of JSON_FIELD_SPECS)
154
250
  jsonFields[spec.field] = this.form.field(spec.field);
155
- return { ...this.form.shell(), fields, jsonFields };
251
+ const shell = this.form.shell();
252
+ return { ...shell, invalid: shell.invalid || this.extrasInvalid, fields, jsonFields, prompts: this.projectPrompts(jsonFields.prompts) };
253
+ }
254
+ projectPrompts(field) {
255
+ const draft = this.promptsDraft();
256
+ const texts = {};
257
+ for (const entry of PROMPT_TEXT_FIELDS) {
258
+ const value = getAt(draft, entry.path);
259
+ const text = typeof value === 'string' ? value : '';
260
+ texts[entry.id] = { text, invalid: text.length > entry.limit };
261
+ }
262
+ return {
263
+ texts,
264
+ skillEnabled: getAt(draft, ['skill', 'enabled']) !== false,
265
+ extras: { text: this.extrasRaw ?? extrasText(draft), invalid: this.extrasInvalid },
266
+ overridden: field.overridden,
267
+ invalid: field.invalid,
268
+ };
156
269
  }
157
270
  }
158
271
  //# sourceMappingURL=form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/client/form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/client/form.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
2
2
  import type { Context } from './context-types.ts';
3
3
  import { type BrowserCardState } from './form.ts';
4
+ import type { PromptTextFieldId } from './prompts-form.ts';
5
+ import { type PromptsStatusState } from './prompts-status-client.ts';
4
6
  import { SETTINGS_NAMESPACE } from './settings-namespace.ts';
5
7
  import { type AutomationAssetsState } from './automation-assets-client.ts';
6
8
  import type { AutomationAsset, AutomationAssetStatus } from '../automation-assets.ts';
@@ -16,6 +18,14 @@ export type BrowserSettingsCardProps = PropsLocale<typeof NS> & {
16
18
  resetField: (field: string) => void;
17
19
  save: () => void;
18
20
  discard: () => void;
21
+ editPromptText: (id: PromptTextFieldId, text: string) => void;
22
+ setPromptSkillEnabled: (enabled: boolean) => void;
23
+ editPromptExtras: (text: string) => void;
24
+ resetPromptExtras: () => void;
25
+ usePromptsStatus: <R>(selector: (snapshot: PromptsStatusState) => R) => R;
26
+ refreshPromptsStatus: () => void;
27
+ exportPromptDefaults: () => Promise<void>;
28
+ hidePromptDefaults: () => void;
19
29
  useAutomationAssets: <R>(selector: (snapshot: AutomationAssetsState) => R) => R;
20
30
  refreshAutomationAssets: () => void;
21
31
  selectAutomationAsset: (id?: string) => void;
@@ -23,7 +33,20 @@ export type BrowserSettingsCardProps = PropsLocale<typeof NS> & {
23
33
  summarizeAutomationCandidate: (id: string) => Promise<void>;
24
34
  dismissAutomationCandidate: (id: string) => Promise<void>;
25
35
  validateAutomationAsset: (id: string) => Promise<void>;
26
- testAutomationAsset: (id: string, url: string, inputs: Record<string, string>) => Promise<void>;
27
- setAutomationAssetStatus: (id: string, status: AutomationAssetStatus) => Promise<void>;
36
+ testAutomationAsset: (id: string, url: string, inputs: Record<string, string>, expectedRevision?: number) => Promise<void>;
37
+ setAutomationAssetStatus: (id: string, status: AutomationAssetStatus, expectedRevision?: number) => Promise<void>;
38
+ editAutomationAsset: (text: string) => void;
39
+ setAssetTestUrl: (value: string) => void;
40
+ setAssetTestInputs: (value: string) => void;
41
+ requestSelectAutomationAsset: (id?: string) => void;
42
+ requestNewAutomationAsset: (kind: AutomationAsset['kind']) => void;
43
+ requestRefreshAutomationAssets: () => void;
44
+ requestForkAutomationAsset: (id: string) => void;
45
+ requestConvertAutomationAsset: (id: string) => void;
46
+ confirmLeaveAutomationAsset: () => void;
47
+ cancelLeaveAutomationAsset: () => void;
48
+ saveEditedAutomationAsset: () => Promise<unknown>;
49
+ saveAndTestAutomationAsset: () => Promise<void>;
50
+ activateAutomationAsset: () => Promise<void>;
28
51
  };
29
52
  export declare function apply(ctx: Context): void;
@@ -1,4 +1,5 @@
1
1
  import { BrowserSettingsController } from "./form.js";
2
+ import { PromptsStatusController } from "./prompts-status-client.js";
2
3
  import { SettingsCard } from "./SettingsCard.js";
3
4
  import { en, zh } from "./locales.js";
4
5
  import { ensureStyles } from "./styles.js";
@@ -15,7 +16,9 @@ export function apply(ctx) {
15
16
  // schema, keyed by the loader entry id; the shared form service reads it.
16
17
  const controller = new BrowserSettingsController(ctx.configForms.get(SETTINGS_NAMESPACE));
17
18
  const assets = new AutomationAssetsController(ctx.connection.rpc);
19
+ const prompts = new PromptsStatusController(ctx.connection.rpc);
18
20
  ctx.effect(() => () => controller.dispose(), 'dsh-browser: settings controller');
21
+ ctx.effect(() => () => prompts.dispose(), 'dsh-browser: prompts status controller');
19
22
  ctx.effect(() => () => assets.dispose(), 'dsh-browser: automation assets controller');
20
23
  // External bundles own their keyed configuration on the bundle's detail
21
24
  // page; `plugins.item` is reserved for official host-plane plugins.
@@ -24,7 +27,8 @@ export function apply(ctx) {
24
27
  inject: () => {
25
28
  const settingsProps = controller.inject();
26
29
  const assetProps = assets.inject();
27
- return { ...settingsProps, ...assetProps, hooks: { ...settingsProps.hooks, ...assetProps.hooks } };
30
+ const promptsProps = prompts.inject();
31
+ return { ...settingsProps, ...assetProps, ...promptsProps, hooks: { ...settingsProps.hooks, ...assetProps.hooks, ...promptsProps.hooks } };
28
32
  },
29
33
  }, SettingsCard))), 'dsh-browser: settings page');
30
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAyB,MAAM,WAAW,CAAA;AAC5E,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,aAAa,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAuB7B,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;IAE3F,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,IAAI,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAA0B,kBAAkB,CAAC,CAAC,CAAA;IAClH,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;IAErF,wEAAwE;IACxE,oEAAoE;IACpE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CACtE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAC7C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE;QACrE,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,CAAC,EAAE,4BAA4B,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAyB,MAAM,WAAW,CAAA;AAE5E,OAAO,EAAE,uBAAuB,EAA2B,MAAM,4BAA4B,CAAA;AAC7F,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,aAAa,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AA8C7B,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;IAE3F,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,IAAI,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAA0B,kBAAkB,CAAC,CAAC,CAAA;IAClH,MAAM,MAAM,GAAG,IAAI,0BAA0B,CAAE,GAA+D,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9H,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAE,GAA+D,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5H,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,OAAO,CAAC,OAAO,EAAE,EAAE,wCAAwC,CAAC,CAAA;IACnF,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,2CAA2C,CAAC,CAAA;IAErF,wEAAwE;IACxE,oEAAoE;IACpE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CACtE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAC7C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjB,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;YACzC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAA;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;YACrC,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;QAC5I,CAAC;KACF,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAA;AACvD,CAAC"}
@@ -17,22 +17,28 @@ export declare const zh: {
17
17
  readonly enabledHint: "关闭后浏览器服务不可用。";
18
18
  readonly automationMode: "自动化模式";
19
19
  readonly automationModeHint: "read-only / standard / autonomous / unrestricted。";
20
+ readonly toolSurface: "工具面形态";
21
+ readonly toolSurfaceHint: "indexed(默认)只常驻 browser_index / browser_call 两个工具;flat 为每个动作注册独立工具,常驻上下文明显更大。保存后需重启 profile。";
20
22
  readonly browserRuntime: "运行时提供器";
21
23
  readonly browserRuntimeHint: "Patchright 仅支持 Chromium。";
22
24
  readonly channel: "浏览器通道";
23
25
  readonly channelHint: "chromium、chrome 或 msedge。Patchright 推荐 chrome。";
24
26
  readonly cdpPort: "CDP 调试端口";
25
27
  readonly cdpPortHint: "可选的本机远程调试端口(1–65535);留空即关闭。";
28
+ readonly maxSessions: "浏览器会话上限";
29
+ readonly maxSessionsHint: "同时持有页面的 session 数(1–64,默认 8);超出时关闭最久未使用的。所有 session 共用一个浏览器进程。";
26
30
  readonly args: "Chromium 启动参数 JSON";
27
- readonly argsHint: "可选字符串数组;仅添加你信任并理解其影响的参数。";
31
+ readonly argsHint: "可选的字符串数组,例如 [\"--disable-gpu\"];仅添加你信任并理解其影响的参数。";
32
+ readonly configFileOnly: "结构较复杂,这里不提供表单:请在 profile 配置文件中本插件的配置段里编辑。";
28
33
  readonly headless: "无头模式";
29
34
  readonly headlessHint: "Patchright 兼容性最佳配置通常是关闭无头模式。";
30
35
  readonly opencliEnabled: "启用 OpenCLI";
31
36
  readonly opencliEnabledHint: "站点 adapter 和 Chrome Browser Bridge 总开关。";
32
37
  readonly usagePolicy: "调用缓冲 JSON";
33
- readonly usagePolicyHint: "minDelayMs、maxConcurrency、burst、maxPagesPerRun、maxDepth、retryLimit、backoffBaseMs、cooldownMs。";
38
+ readonly usagePolicyHint: "并发、短时突发、爬取预算与退避;只写要改的键。";
39
+ readonly policyKeys: "可用键名:";
34
40
  readonly automationAssets: "自动化资产策略 JSON";
35
- readonly automationAssetsHint: "候选阈值、持久化模式、激活模式、数量与上下文预算。";
41
+ readonly automationAssetsHint: "候选阈值、持久化模式、激活模式、数量与上下文预算、激活所需的输入组数;只写要改的键。";
36
42
  readonly assetLibrary: "可复用自动化资产(实验性)";
37
43
  readonly assetLibraryHint: "实验功能:候选先提示是否总结;草稿真实回放后再手动激活。源码仅在点选编辑时读取。";
38
44
  readonly assetLoading: "正在读取本地自动化资产…";
@@ -55,18 +61,91 @@ export declare const zh: {
55
61
  readonly assetValidate: "静态校验";
56
62
  readonly assetTest: "真实回放";
57
63
  readonly assetTestUrl: "测试 URL(必须命中允许域名)";
58
- readonly assetTestInputs: "测试输入 JSON";
64
+ readonly assetTestInputs: "测试输入 JSON(一个对象,或 2–5 个对象组成的数组,每组在全新上下文中回放)";
59
65
  readonly assetActivate: "激活";
60
66
  readonly assetArchive: "归档";
61
67
  readonly assetSaveDraft: "保存草稿";
68
+ readonly assetSaveAndTest: "保存并测试";
69
+ readonly assetUnsaved: "有未保存的修改:测试与激活不会使用它们,直到保存。";
70
+ readonly assetLeaveTitle: "有未保存的修改,离开会丢失它们。";
71
+ readonly assetLeaveConfirm: "放弃修改并继续";
72
+ readonly assetLeaveKeep: "继续编辑";
73
+ readonly assetNoticeJson: "JSON 无效,请求未发出:";
74
+ readonly assetNoticeBackend: "后端错误:";
75
+ readonly assetNoticeValidation: "回放已执行,但业务断言未通过:";
76
+ readonly assetNoticeRefused: "已拦截:";
77
+ readonly assetRevision: "版本";
78
+ readonly assetHash: "内容哈希";
79
+ readonly assetLastTest: "最近测试";
80
+ readonly assetNoTest: "当前版本尚未通过测试,不能激活。";
81
+ readonly assetStaleTest: "最近一次测试针对旧版本";
82
+ readonly assetPassed: "通过";
83
+ readonly assetNotPassed: "未通过";
84
+ readonly assetFork: "创建修复草稿";
85
+ readonly assetDerivedFrom: "派生自";
86
+ readonly assetInputsDigest: "输入摘要";
87
+ readonly assetActivateNeedsSave: "有未保存的修改:先「保存并测试」。";
88
+ readonly assetEditorDirtyBadge: "未保存";
89
+ readonly assetConvert: "转换为 v2";
90
+ readonly assetConverted: "已由「{name}」转换为新的 v2 草稿,原资产未改动。";
91
+ readonly assetPending: "{n} 个步骤仍取第一个匹配(pendingDisambiguation):先让定位唯一再测试。";
92
+ readonly assetInputSets: "最近一次测试的输入组";
93
+ readonly assetInputSet: "第";
94
+ readonly assetInputSetUnit: "组";
95
+ readonly assetSetsRan: "已运行";
96
+ readonly assetSuspect: "PARAMETERIZATION_SUSPECT:第 {pairs} 组输入不同,输出却完全相同,输入可能没有真正影响结果;测试仍算通过,请检查占位符是否传到了页面。";
97
+ readonly assetNeedsInputSets: "该资产声明了输入:激活要求当前版本的通过测试至少覆盖 {required} 组不同输入(当前 {covered} 组)。在“测试输入 JSON”里填 {required} 到 5 个对象的数组,再测试。";
98
+ readonly prompts: "提示文本";
99
+ readonly promptsHint: "覆盖模型看到的提示和建议文本;留空即使用内置默认值;“导出默认文本”可看到全部默认值。";
100
+ readonly promptsRestart: "两个工具的描述在注册时固定,保存后需重启 profile 才生效;其余文本在下一次调用时即生效。";
101
+ readonly promptsIndexDescription: "browser_index 工具描述";
102
+ readonly promptsIndexDescriptionHint: "常驻上下文,越短越好。上限 1500 字符;需重启生效。";
103
+ readonly promptsCallDescription: "browser_call 工具描述";
104
+ readonly promptsCallDescriptionHint: "合规声明会自动追加在末尾,无法删除。上限 1500 字符;需重启生效。";
105
+ readonly promptsRootGuide: "精简指南(无 skill 时)";
106
+ readonly promptsRootGuideHint: "无 skill 时替换 browser_index 根目录里的精简指南。上限 1500 字符。";
107
+ readonly promptsRootNote: "根目录附言";
108
+ readonly promptsRootNoteHint: "追加在 browser_index 根目录末尾,有 skill 时也显示;写部署方自己的建议。上限 800 字符。";
109
+ readonly promptsSkillEnabled: "注册 dsh-browser skill";
110
+ readonly promptsSkillEnabledHint: "关闭后不注册 skill,根目录改用精简指南。";
111
+ readonly promptsSkillDescription: "skill 描述";
112
+ readonly promptsSkillDescriptionHint: "替换技能列表里的描述。上限 1000 字符。";
113
+ readonly promptsSkillBodyFile: "skill 正文文件";
114
+ readonly promptsSkillBodyFileHint: "用该 Markdown 文件(绝对路径,≤ 20000 字符)替换 SKILL.md 正文;文件缺失或不可读时回退到内置正文。";
115
+ readonly promptsSkillAppend: "skill 正文追加";
116
+ readonly promptsSkillAppendHint: "追加到 skill 正文末尾。上限 4000 字符。";
117
+ readonly promptsExtras: "分组 / 动作 / 错误提示覆盖 JSON";
118
+ readonly promptsExtrasHint: "{\"groups\":{\"act\":{\"summary\":\"…\"}},\"actions\":{\"act.click\":{\"summary\":\"…\",\"notes\":\"…\"}},\"errorHints\":{\"DEADLINE\":\"…\"}}。动作名可含子动作(automation.develop.save)和详情页(observe.read.controls)。";
119
+ readonly promptsDefaults: "默认文本(只读)";
120
+ readonly promptsExport: "导出默认文本";
121
+ readonly promptsCopy: "复制";
122
+ readonly promptsHideDefaults: "收起";
123
+ readonly promptsDefaultsHint: "一份 JSON,结构与上面的覆盖项完全一致。复制后删掉保持默认的部分,改写其余部分,再放进配置;原样放回不会改变任何输出。";
124
+ readonly promptsDefaultsFailed: "暂时读不到默认文本,请稍后再试。";
125
+ readonly promptsExtrasReset: "恢复默认";
126
+ readonly promptsReset: "恢复默认";
127
+ readonly promptsExtrasInvalid: "JSON 无效,或键名、类型、长度超出限制。";
128
+ readonly promptsTooLong: "超出长度上限。";
129
+ readonly promptsStatus: "当前生效情况";
130
+ readonly promptsL0: "L0 常驻工具估算";
131
+ readonly promptsTokens: "tokens";
132
+ readonly promptsBudget: "预算";
133
+ readonly promptsOverrides: "项覆盖生效";
134
+ readonly promptsNoOverrides: "没有覆盖,全部使用内置默认值。";
135
+ readonly promptsDiagnostics: "诊断";
136
+ readonly promptsNoDiagnostics: "无诊断。";
137
+ readonly promptsStatusUnavailable: "暂时读不到插件状态,请稍后刷新。";
138
+ readonly promptsRefresh: "刷新";
139
+ readonly promptsLoading: "读取中…";
140
+ readonly promptsLargest: "最大的目录层";
62
141
  readonly autoInstall: "缺失时自动安装 Chromium";
63
- readonly autoInstallHint: "可能触发较大下载,日常建议关闭并显式调用 browser_install。";
142
+ readonly autoInstallHint: "可能触发较大下载,日常建议关闭并显式执行 runtime.install 动作。";
64
143
  readonly storageStatePath: "全局 storageState 路径";
65
144
  readonly storageStatePathHint: "旧版兼容入口;新配置优先使用限域 AuthProfile。";
66
145
  readonly authProfiles: "AuthProfiles JSON";
67
146
  readonly authProfilesHint: "命名登录态、allowedDomains 与 persistState。";
68
147
  readonly defaultAuthProfile: "默认 AuthProfile";
69
- readonly defaultAuthProfileHint: "未显式选择登录态时使用;browser_crawl 始终匿名。";
148
+ readonly defaultAuthProfileHint: "未显式选择登录态时使用;crawl.crawl 始终匿名。";
70
149
  readonly rulePacks: "RulePacks JSON";
71
150
  readonly rulePacksHint: "域名匹配、哈希固定 init script 和有界步骤。";
72
151
  readonly executablePath: "浏览器可执行文件";