@anweat/dsh-browser 0.2.1 → 0.2.2

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 +267 -69
  2. package/assets/skills/dsh-browser/SKILL.md +13 -11
  3. package/assets/skills/dsh-browser/references/files.md +36 -0
  4. package/assets/skills/dsh-browser/references/observe.md +2 -2
  5. package/assets/skills/dsh-browser/references/policy.md +32 -0
  6. package/cordis.patch.yml +10 -3
  7. package/lib/actions/errors.js +7 -2
  8. package/lib/actions/errors.js.map +1 -1
  9. package/lib/actions/index-view.d.ts +4 -1
  10. package/lib/actions/index-view.js +16 -3
  11. package/lib/actions/index-view.js.map +1 -1
  12. package/lib/actions/inspect.js +15 -0
  13. package/lib/actions/inspect.js.map +1 -1
  14. package/lib/actions/observe.js +1 -1
  15. package/lib/actions/observe.js.map +1 -1
  16. package/lib/actions/opencli.d.ts +1 -1
  17. package/lib/actions/opencli.js +4 -4
  18. package/lib/actions/opencli.js.map +1 -1
  19. package/lib/actions/policy.d.ts +15 -0
  20. package/lib/actions/policy.js +131 -0
  21. package/lib/actions/policy.js.map +1 -0
  22. package/lib/actions/registry.js +6 -5
  23. package/lib/actions/registry.js.map +1 -1
  24. package/lib/actions/runtime.js +2 -2
  25. package/lib/actions/runtime.js.map +1 -1
  26. package/lib/actions/target.js +35 -3
  27. package/lib/actions/target.js.map +1 -1
  28. package/lib/actions/types.d.ts +1 -1
  29. package/lib/actions/types.js.map +1 -1
  30. package/lib/approval-policy.d.ts +10 -1
  31. package/lib/approval-policy.js +42 -1
  32. package/lib/approval-policy.js.map +1 -1
  33. package/lib/auth-profiles.d.ts +4 -1
  34. package/lib/auth-profiles.js +3 -0
  35. package/lib/auth-profiles.js.map +1 -1
  36. package/lib/automation-assets-rpc.js +26 -0
  37. package/lib/automation-assets-rpc.js.map +1 -1
  38. package/lib/browser-service.d.ts +165 -4
  39. package/lib/browser-service.js +505 -55
  40. package/lib/browser-service.js.map +1 -1
  41. package/lib/client/SettingsCard.d.ts +10 -8
  42. package/lib/client/SettingsCard.js +12 -137
  43. package/lib/client/SettingsCard.js.map +1 -1
  44. package/lib/client/auth-profiles-form.d.ts +23 -0
  45. package/lib/client/auth-profiles-form.js +64 -0
  46. package/lib/client/auth-profiles-form.js.map +1 -0
  47. package/lib/client/card-frame.d.ts +22 -0
  48. package/lib/client/card-frame.js +61 -0
  49. package/lib/client/card-frame.js.map +1 -0
  50. package/lib/client/field-rows.d.ts +59 -0
  51. package/lib/client/field-rows.js +63 -0
  52. package/lib/client/field-rows.js.map +1 -0
  53. package/lib/client/field-rules.d.ts +17 -0
  54. package/lib/client/field-rules.js +68 -0
  55. package/lib/client/field-rules.js.map +1 -0
  56. package/lib/client/form.d.ts +108 -7
  57. package/lib/client/form.js +255 -11
  58. package/lib/client/form.js.map +1 -1
  59. package/lib/client/group-access.d.ts +14 -0
  60. package/lib/client/group-access.js +97 -0
  61. package/lib/client/group-access.js.map +1 -0
  62. package/lib/client/group-advanced.d.ts +11 -0
  63. package/lib/client/group-advanced.js +32 -0
  64. package/lib/client/group-advanced.js.map +1 -0
  65. package/lib/client/group-assets.d.ts +13 -0
  66. package/lib/client/group-assets.js +50 -0
  67. package/lib/client/group-assets.js.map +1 -0
  68. package/lib/client/group-browser.d.ts +9 -0
  69. package/lib/client/group-browser.js +27 -0
  70. package/lib/client/group-browser.js.map +1 -0
  71. package/lib/client/group-common.d.ts +10 -0
  72. package/lib/client/group-common.js +21 -0
  73. package/lib/client/group-common.js.map +1 -0
  74. package/lib/client/group-context.d.ts +20 -0
  75. package/lib/client/group-context.js +76 -0
  76. package/lib/client/group-context.js.map +1 -0
  77. package/lib/client/group-downloads.d.ts +10 -0
  78. package/lib/client/group-downloads.js +33 -0
  79. package/lib/client/group-downloads.js.map +1 -0
  80. package/lib/client/group-limits.d.ts +9 -0
  81. package/lib/client/group-limits.js +57 -0
  82. package/lib/client/group-limits.js.map +1 -0
  83. package/lib/client/group-prompts.d.ts +13 -0
  84. package/lib/client/group-prompts.js +136 -0
  85. package/lib/client/group-prompts.js.map +1 -0
  86. package/lib/client/index.d.ts +21 -1
  87. package/lib/client/index.js +10 -4
  88. package/lib/client/index.js.map +1 -1
  89. package/lib/client/locales-policy.d.ts +83 -0
  90. package/lib/client/locales-policy.js +46 -0
  91. package/lib/client/locales-policy.js.map +1 -0
  92. package/lib/client/locales-prompts.d.ts +57 -0
  93. package/lib/client/locales-prompts.js +41 -0
  94. package/lib/client/locales-prompts.js.map +1 -0
  95. package/lib/client/locales-ui.d.ts +223 -0
  96. package/lib/client/locales-ui.js +157 -0
  97. package/lib/client/locales-ui.js.map +1 -0
  98. package/lib/client/locales.d.ts +359 -67
  99. package/lib/client/locales.js +68 -22
  100. package/lib/client/locales.js.map +1 -1
  101. package/lib/client/policy-fields.d.ts +31 -0
  102. package/lib/client/policy-fields.js +66 -0
  103. package/lib/client/policy-fields.js.map +1 -0
  104. package/lib/client/policy-status-client.d.ts +91 -0
  105. package/lib/client/policy-status-client.js +64 -0
  106. package/lib/client/policy-status-client.js.map +1 -0
  107. package/lib/client/prompts-form.d.ts +33 -0
  108. package/lib/client/prompts-form.js +87 -0
  109. package/lib/client/prompts-form.js.map +1 -1
  110. package/lib/client/prompts-status-client.d.ts +21 -1
  111. package/lib/client/prompts-status-client.js +36 -4
  112. package/lib/client/prompts-status-client.js.map +1 -1
  113. package/lib/client/properties-form.d.ts +90 -0
  114. package/lib/client/properties-form.js +187 -0
  115. package/lib/client/properties-form.js.map +1 -0
  116. package/lib/client/property-docs.d.ts +18 -0
  117. package/lib/client/property-docs.js +78 -0
  118. package/lib/client/property-docs.js.map +1 -0
  119. package/lib/client/size-units.d.ts +12 -0
  120. package/lib/client/size-units.js +29 -0
  121. package/lib/client/size-units.js.map +1 -0
  122. package/lib/client/styles.d.ts +47 -31
  123. package/lib/client/styles.js +59 -20
  124. package/lib/client/styles.js.map +1 -1
  125. package/lib/client/ui-kit.d.ts +173 -0
  126. package/lib/client/ui-kit.js +112 -0
  127. package/lib/client/ui-kit.js.map +1 -0
  128. package/lib/client.js +5291 -834
  129. package/lib/client.js.map +1 -1
  130. package/lib/config-rules.d.ts +40 -0
  131. package/lib/config-rules.js +103 -0
  132. package/lib/config-rules.js.map +1 -0
  133. package/lib/config.d.ts +64 -2
  134. package/lib/config.js +106 -0
  135. package/lib/config.js.map +1 -1
  136. package/lib/context-options.d.ts +85 -0
  137. package/lib/context-options.js +206 -0
  138. package/lib/context-options.js.map +1 -0
  139. package/lib/deps.d.ts +42 -5
  140. package/lib/deps.js +219 -9
  141. package/lib/deps.js.map +1 -1
  142. package/lib/downloads.d.ts +79 -0
  143. package/lib/downloads.js +189 -0
  144. package/lib/downloads.js.map +1 -0
  145. package/lib/index.d.ts +3 -2
  146. package/lib/index.js +7 -3
  147. package/lib/index.js.map +1 -1
  148. package/lib/policy-keys.d.ts +39 -0
  149. package/lib/policy-keys.js +21 -0
  150. package/lib/policy-keys.js.map +1 -1
  151. package/lib/policy-overlay.d.ts +189 -0
  152. package/lib/policy-overlay.js +649 -0
  153. package/lib/policy-overlay.js.map +1 -0
  154. package/lib/prompts-yaml.d.ts +11 -0
  155. package/lib/prompts-yaml.js +121 -0
  156. package/lib/prompts-yaml.js.map +1 -0
  157. package/lib/prompts.d.ts +2 -0
  158. package/lib/prompts.js +7 -3
  159. package/lib/prompts.js.map +1 -1
  160. package/lib/system-browser.d.ts +61 -0
  161. package/lib/system-browser.js +109 -0
  162. package/lib/system-browser.js.map +1 -0
  163. package/lib/tools.js +9 -1
  164. package/lib/tools.js.map +1 -1
  165. package/lib/usage-policy.d.ts +3 -1
  166. package/lib/usage-policy.js +2 -0
  167. package/lib/usage-policy.js.map +1 -1
  168. package/package.json +42 -38
  169. package/scripts/dump-prompts.mjs +12 -2
@@ -11,8 +11,11 @@
11
11
  */
12
12
  import type { SnapshotStore } from '@deepseek-ai/dsh-client-store';
13
13
  import type { SettingsFieldSpec, SettingsFormScope, SettingsFieldState, SettingsFormShell } from '@deepseek-ai/dsh-client-ui-primitives';
14
- import { type PromptTextFieldId } from './prompts-form.ts';
15
- export type SectionField = 'enabled' | 'automationMode' | 'toolSurface' | 'browserRuntime' | 'channel' | 'headless' | 'opencliEnabled' | 'autoInstall' | 'storageStatePath' | 'defaultAuthProfile' | 'executablePath' | 'snapshotDir' | 'verbose' | 'cdpPort' | 'maxSessions';
14
+ import { type LineIssue } from './properties-form.ts';
15
+ import { type PolicyFieldName } from './policy-fields.ts';
16
+ import { type AuthProfileEntry } from './auth-profiles-form.ts';
17
+ import { type PromptDefaults, type PromptExtraEntry, type PromptExtraKind, type PromptExtraValue, type PromptTextFieldId } from './prompts-form.ts';
18
+ export type SectionField = 'enabled' | 'automationMode' | 'toolSurface' | 'browserRuntime' | 'channel' | 'headless' | 'opencliEnabled' | 'autoInstall' | 'storageStatePath' | 'defaultAuthProfile' | 'executablePath' | 'snapshotDir' | 'verbose' | 'cdpPort' | 'maxSessions' | 'downloadDir' | 'downloadMaxBytes' | 'allowPrivateHosts' | 'viewportMode' | 'viewportWidth' | 'viewportHeight' | 'userAgent' | 'locale' | 'timezoneId' | 'proxyServer' | 'proxyBypass';
16
19
  /** Retained name for callers that predate the section/JSON split. */
17
20
  export type SettingField = SectionField;
18
21
  /** One control's state, as the shared form model reports it. */
@@ -24,11 +27,37 @@ export interface BrowserCardState extends SettingsFormShell {
24
27
  jsonFields: Record<string, CardFieldState>;
25
28
  /** The "prompt text" section: views of the one staged `prompts` draft. */
26
29
  prompts: PromptsCardState;
30
+ /** The "default parameters" editor: one properties text over the plugin-wide default fields. */
31
+ properties: PropertiesCardState;
32
+ /** The policy objects as one control per key: the text shown, whether it differs from the default, and why a typed text is refused. */
33
+ policies: Record<PolicyFieldName, Record<string, PolicyKeyState>>;
34
+ /** Problems that involve several fields (a custom viewport needs both sizes), by the field that is missing something. They block the save. */
35
+ problems: Record<string, string>;
36
+ /** The configuration fields a save would write (staged and different from what is stored), in field order. */
37
+ changes: string[];
38
+ }
39
+ export interface PolicyKeyState {
40
+ text: string;
41
+ overridden: boolean;
42
+ problem?: 'invalidNumber' | 'invalidChoice' | 'invalidRange';
43
+ }
44
+ export interface PropertiesCardState {
45
+ /** What the editor shows: what was typed (kept verbatim while it has problems), else the text printed from the fields. */
46
+ text: string;
47
+ /** Line-level problems of the text. Errors block the save. */
48
+ issues: LineIssue[];
49
+ /** The keys that carry an override right now, in display order. */
50
+ overridden: {
51
+ key: string;
52
+ value: string;
53
+ }[];
54
+ invalid: boolean;
27
55
  }
28
56
  export interface PromptsCardState {
29
57
  texts: Record<PromptTextFieldId, {
30
58
  text: string;
31
- invalid: boolean;
59
+ invalid: boolean; /** The stored override is exactly the default text, so it changes nothing. */
60
+ sameAsDefault: boolean;
32
61
  }>;
33
62
  skillEnabled: boolean;
34
63
  /** The JSON box for groups, actions and errorHints. */
@@ -36,6 +65,8 @@ export interface PromptsCardState {
36
65
  text: string;
37
66
  invalid: boolean;
38
67
  };
68
+ /** The overridden group, action and error-hint entries of the staged draft, for the list. */
69
+ entries: PromptExtraEntry[];
39
70
  /** Whether saving would leave a `prompts` entry in the user layer. */
40
71
  overridden: boolean;
41
72
  /** Whether the whole `prompts` draft is one the plugin would refuse to take. */
@@ -54,42 +85,112 @@ export declare const JSON_FIELD_SPECS: readonly SettingsFieldSpec[];
54
85
  * hash-pinned scripts) that are safer to edit in the profile config file. The card names each one and says so, instead
55
86
  * of leaving it out without a word. `rulePacks` is not `.volatile()` in the Host schema, so no form could write it.
56
87
  */
57
- export declare const CONFIG_FILE_ONLY_FIELDS: readonly ["authProfiles", "rulePacks"];
88
+ export declare const CONFIG_FILE_ONLY_FIELDS: readonly ["rulePacks"];
58
89
  /** Section fields rendered as JSON code editors rather than single inputs. */
59
90
  export declare const JSON_FIELDS: ReadonlySet<string>;
60
91
  /** Every field the card renders, in display order. */
61
92
  export declare const ALL_FIELD_SPECS: readonly SettingsFieldSpec[];
62
93
  export declare class BrowserSettingsController {
63
94
  private readonly scope;
95
+ private readonly promptDefaults;
64
96
  private readonly form;
65
97
  private readonly store;
66
98
  /** What the person typed in the groups/actions/errorHints box, kept verbatim while it is not valid JSON yet. */
67
99
  private extrasRaw;
68
100
  private extrasInvalid;
69
- constructor(scope: SettingsFormScope<Record<string, unknown>>);
101
+ /** The properties text as typed; undefined shows the text printed from the staged fields. */
102
+ private propsRaw;
103
+ private propsIssues;
104
+ /** The language of the comments printed in the advanced text; the card sets it from its own language. */
105
+ private docsLang;
106
+ /** What was typed in each prompt control while it differs from what is staged (a text equal to the default stages nothing). */
107
+ private readonly promptRaw;
108
+ /** What was typed in a policy key's control while it is not a value the key accepts. */
109
+ private readonly policyRaw;
110
+ /** `promptDefaults` reads the plugin's own prompt texts once they are loaded; until then nothing is "equal to default". */
111
+ constructor(scope: SettingsFormScope<Record<string, unknown>>, promptDefaults?: () => PromptDefaults | undefined);
70
112
  inject(): {
113
+ edit: (field: string, text: string) => void;
114
+ resetField: (field: string) => void;
71
115
  save: () => Promise<void>;
72
116
  discard: () => void;
117
+ editProperties: (text: string) => void;
118
+ setPropertyLanguage: (lang: string) => void;
119
+ resetProperty: (key: string) => void;
73
120
  editPromptText: (id: PromptTextFieldId, text: string) => void;
74
121
  setPromptSkillEnabled: (enabled: boolean) => void;
75
122
  editPromptExtras: (text: string) => void;
123
+ editPolicyKey: (field: PolicyFieldName, key: string, text: string) => void;
124
+ saveAuthProfile: (id: string, entry: AuthProfileEntry) => void;
125
+ removeAuthProfile: (id: string) => void;
76
126
  resetPromptExtras: () => void;
77
- edit: (field: string, text: string) => void;
78
- resetField: (field: string) => void;
127
+ setPromptExtra: (kind: PromptExtraKind, key: string, value: PromptExtraValue | undefined) => void;
79
128
  hooks: {
80
129
  browserSettings: SnapshotStore<BrowserCardState>;
81
130
  };
82
131
  };
132
+ /** Forget the advanced text as typed, so it is printed again from the fields (their edits are already staged). */
133
+ private dropTypedProperties;
134
+ /** Rules that span fields, read from the texts the fields hold now (the deployed sizes count when a control does not set them). */
135
+ private crossProblems;
136
+ /** The fields a save would write: the text differs from the stored one, or a reset leaves the stored override. */
137
+ private changedFields;
83
138
  private save;
139
+ private spec;
140
+ /** The text of a field as the plugin has it now (stored, deployed, or default), ignoring anything staged. */
141
+ private storedText;
142
+ private isStored;
143
+ /** Print the text from the fields as they are (staged edits included). */
144
+ private printProperties;
145
+ /**
146
+ * Stage the fields to match a properties text: a key with a value is edited to it, a key without one (commented,
147
+ * deleted, blank) goes back to the default. The staged result is the same per-field `set` / `unset` the one-control
148
+ * form produced, so the saved configuration has the same flat keys and nothing else.
149
+ */
150
+ editProperties(text: string): void;
151
+ /** Print the comments of the advanced text in this language (`zh`, anything else is English). Text the person typed is not touched. */
152
+ setPropertyLanguage(lang: string): void;
153
+ /** Comment out one key's line: that parameter goes back to the default. */
154
+ resetProperty(key: string): void;
155
+ private projectProperties;
84
156
  /** The staged `prompts` value as an object (empty when none, or when its text is not JSON). */
85
157
  private promptsDraft;
86
158
  private stagePrompts;
87
159
  private refresh;
160
+ private clearPromptRaw;
161
+ /**
162
+ * A prompt text: blank, or exactly the plugin's default text, is NO override. Saving the default as an override
163
+ * would freeze today's wording and hide every later improvement, so the box keeps what was typed (an author may
164
+ * have copied the default to edit it) while nothing is staged for it.
165
+ */
88
166
  editPromptText(id: PromptTextFieldId, text: string): void;
89
167
  setPromptSkillEnabled(enabled: boolean): void;
90
168
  editPromptExtras(text: string): void;
169
+ /**
170
+ * One entry of the groups / actions / errorHints lists, from the entry dialog. An entry equal to the plugin's own
171
+ * text is no override (see editPromptText), so it leaves the list instead of freezing today's wording.
172
+ */
173
+ setPromptExtra(kind: PromptExtraKind, key: string, value: PromptExtraValue | undefined): void;
91
174
  /** Back to the plugin's own text for groups, actions and error hints. */
92
175
  resetPromptExtras(): void;
176
+ private clearPolicyRaw;
177
+ private policyHasRaw;
178
+ /** The staged policy object (empty when its text is not a JSON object yet). */
179
+ private policyDraft;
180
+ /** `value` without the keys that equal their default (and without anything the policy does not know), keys in the card's order. */
181
+ private minimalPolicy;
182
+ /**
183
+ * One key of a policy object, from its own control. A text the key does not accept is kept as typed (and blocks the
184
+ * save); an empty text, or the default itself, removes the key so the object holds only what differs.
185
+ */
186
+ editPolicyKey(field: PolicyFieldName, key: string, text: string): void;
187
+ private projectPolicies;
188
+ /** Stage a whole `authProfiles` map; the stored map itself is staged back when they are equal, so the form is clean again. */
189
+ private stageProfiles;
190
+ /** Add or replace one profile. A profile's state-file path is kept as given: the card never rewrites a path it did not create. */
191
+ saveAuthProfile(id: string, entry: AuthProfileEntry): void;
192
+ /** Remove one profile from the baseline configuration. */
193
+ removeAuthProfile(id: string): void;
93
194
  snapshot(): BrowserCardState;
94
195
  dispose(): void;
95
196
  private project;
@@ -11,9 +11,22 @@
11
11
  */
12
12
  import { SettingsFormModel, settingsNumberField, settingsTextField } from '@deepseek-ai/dsh-client-ui-primitives';
13
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";
14
+ import { crossFieldProblems, fieldProblem } from "./field-rules.js";
15
+ import { PROPERTY_FIELDS, checkProperties, commentOutProperty, parseProperties, serializeProperties, } from "./properties-form.js";
16
+ import { propertyDocs } from "./property-docs.js";
17
+ import { POLICY_SPECS, defaultOf, parsePolicyText, valueText } from "./policy-fields.js";
18
+ import { parseProfiles, validAuthProfiles } from "./auth-profiles-form.js";
19
+ import { PROMPT_TEXT_FIELDS, extraEntries, withExtraEntry, canonicalPrompts, pruneDefaultExtras, extrasText, getAt, setAt, validExtras, validPrompts, withExtras } from "./prompts-form.js";
15
20
  /** A free-text field that clears when emptied, so blanking the control resets it. */
16
21
  const textField = (field) => settingsTextField(field);
22
+ /**
23
+ * A free-text field with a value rule (`field-rules.ts`, the rules the server applies): text the rule refuses is
24
+ * invalid, which blocks the save, instead of being written and dropped at the next start.
25
+ */
26
+ const checkedTextField = (field) => {
27
+ const base = settingsTextField(field);
28
+ return { field, format: base.format, parse: text => text.trim() !== '' && fieldProblem(field, text) !== undefined ? undefined : base.parse(text) };
29
+ };
17
30
  /**
18
31
  * A boolean field. The card renders a checkbox, so the conversion is explicit
19
32
  * rather than relying on the shared model's text round-trip.
@@ -130,6 +143,17 @@ export const FIELD_SPECS = [
130
143
  textField('defaultAuthProfile'),
131
144
  textField('executablePath'),
132
145
  textField('snapshotDir'),
146
+ checkedTextField('downloadDir'),
147
+ booleanField('allowPrivateHosts'),
148
+ rangedNumberField('downloadMaxBytes', 1, 10 * 1024 * 1024 * 1024),
149
+ enumField('viewportMode', ['window', '720p', '1080p', 'custom']),
150
+ rangedNumberField('viewportWidth', 200, 7680),
151
+ rangedNumberField('viewportHeight', 200, 4320),
152
+ checkedTextField('userAgent'),
153
+ checkedTextField('locale'),
154
+ checkedTextField('timezoneId'),
155
+ checkedTextField('proxyServer'),
156
+ checkedTextField('proxyBypass'),
133
157
  booleanField('verbose'),
134
158
  ];
135
159
  /** The JSON-shaped section fields: objects (policies, prompts) and the launch-argument array. */
@@ -137,6 +161,7 @@ export const JSON_FIELD_SPECS = [
137
161
  jsonField('usagePolicy', validUsagePolicy),
138
162
  jsonField('automationAssets', validAssetPolicy),
139
163
  jsonField('prompts', validPrompts),
164
+ jsonField('authProfiles', validAuthProfiles),
140
165
  stringArrayField('args'),
141
166
  ];
142
167
  /**
@@ -144,20 +169,32 @@ export const JSON_FIELD_SPECS = [
144
169
  * hash-pinned scripts) that are safer to edit in the profile config file. The card names each one and says so, instead
145
170
  * of leaving it out without a word. `rulePacks` is not `.volatile()` in the Host schema, so no form could write it.
146
171
  */
147
- export const CONFIG_FILE_ONLY_FIELDS = ['authProfiles', 'rulePacks'];
172
+ export const CONFIG_FILE_ONLY_FIELDS = ['rulePacks'];
148
173
  /** Section fields rendered as JSON code editors rather than single inputs. */
149
174
  export const JSON_FIELDS = new Set(JSON_FIELD_SPECS.map(spec => spec.field));
150
175
  /** Every field the card renders, in display order. */
151
176
  export const ALL_FIELD_SPECS = [...FIELD_SPECS, ...JSON_FIELD_SPECS];
152
177
  export class BrowserSettingsController {
153
178
  scope;
179
+ promptDefaults;
154
180
  form;
155
181
  store;
156
182
  /** What the person typed in the groups/actions/errorHints box, kept verbatim while it is not valid JSON yet. */
157
183
  extrasRaw;
158
184
  extrasInvalid = false;
159
- constructor(scope) {
185
+ /** The properties text as typed; undefined shows the text printed from the staged fields. */
186
+ propsRaw;
187
+ propsIssues = [];
188
+ /** The language of the comments printed in the advanced text; the card sets it from its own language. */
189
+ docsLang = 'en';
190
+ /** What was typed in each prompt control while it differs from what is staged (a text equal to the default stages nothing). */
191
+ promptRaw = {};
192
+ /** What was typed in a policy key's control while it is not a value the key accepts. */
193
+ policyRaw = { usagePolicy: {}, automationAssets: {} };
194
+ /** `promptDefaults` reads the plugin's own prompt texts once they are loaded; until then nothing is "equal to default". */
195
+ constructor(scope, promptDefaults = () => undefined) {
160
196
  this.scope = scope;
197
+ this.promptDefaults = promptDefaults;
161
198
  this.form = new SettingsFormModel(scope, [...ALL_FIELD_SPECS]);
162
199
  this.store = this.form.bind(() => this.project());
163
200
  }
@@ -166,25 +203,109 @@ export class BrowserSettingsController {
166
203
  return {
167
204
  hooks: { browserSettings: this.store },
168
205
  ...actions,
206
+ // A control edit replaces whatever was typed in the advanced text: the text is a view of the fields, printed again.
207
+ edit: (field, text) => { this.dropTypedProperties(); if (field in this.policyRaw)
208
+ this.policyRaw[field] = {}; actions.edit(field, text); },
209
+ resetField: (field) => { this.dropTypedProperties(); actions.resetField(field); },
169
210
  // A save is refused while the groups/actions/errorHints box holds something that is not valid.
170
211
  save: () => this.save(),
171
- discard: () => { this.extrasRaw = undefined; this.extrasInvalid = false; actions.discard(); },
212
+ discard: () => { this.clearPolicyRaw(); this.extrasRaw = undefined; this.extrasInvalid = false; this.propsRaw = undefined; this.propsIssues = []; this.clearPromptRaw(); actions.discard(); },
213
+ editProperties: (text) => this.editProperties(text),
214
+ setPropertyLanguage: (lang) => this.setPropertyLanguage(lang),
215
+ resetProperty: (key) => this.resetProperty(key),
172
216
  editPromptText: (id, text) => this.editPromptText(id, text),
173
217
  setPromptSkillEnabled: (enabled) => this.setPromptSkillEnabled(enabled),
174
218
  editPromptExtras: (text) => this.editPromptExtras(text),
219
+ editPolicyKey: (field, key, text) => this.editPolicyKey(field, key, text),
220
+ saveAuthProfile: (id, entry) => this.saveAuthProfile(id, entry),
221
+ removeAuthProfile: (id) => this.removeAuthProfile(id),
175
222
  resetPromptExtras: () => this.resetPromptExtras(),
223
+ setPromptExtra: (kind, key, value) => this.setPromptExtra(kind, key, value),
176
224
  };
177
225
  }
226
+ /** Forget the advanced text as typed, so it is printed again from the fields (their edits are already staged). */
227
+ dropTypedProperties() { this.propsRaw = undefined; this.propsIssues = []; }
228
+ /** Rules that span fields, read from the texts the fields hold now (the deployed sizes count when a control does not set them). */
229
+ crossProblems() {
230
+ const text = (key) => this.form.field(key).text;
231
+ return crossFieldProblems({ viewportMode: text('viewportMode'), viewportWidth: text('viewportWidth'), viewportHeight: text('viewportHeight') });
232
+ }
233
+ /** The fields a save would write: the text differs from the stored one, or a reset leaves the stored override. */
234
+ changedFields() {
235
+ const value = this.scope.getSnapshot().value;
236
+ return ALL_FIELD_SPECS.filter(spec => {
237
+ const state = this.form.field(spec.field);
238
+ return state.text !== spec.format(value?.[spec.field]) || (!state.overridden && this.isStored(spec.field));
239
+ }).map(spec => spec.field);
240
+ }
178
241
  async save() {
179
- if (this.extrasInvalid)
242
+ if (this.extrasInvalid || this.policyHasRaw() || this.propsIssues.some(issue => issue.level === 'error') || Object.keys(this.crossProblems()).length)
180
243
  return;
181
244
  await this.form.save();
182
245
  // 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) {
246
+ if (!this.form.shell().failed && (this.extrasRaw !== undefined || this.propsRaw !== undefined || Object.keys(this.promptRaw).length)) {
184
247
  this.extrasRaw = undefined;
248
+ this.propsRaw = undefined;
249
+ this.propsIssues = [];
250
+ this.clearPromptRaw();
185
251
  this.refresh();
186
252
  }
187
253
  }
254
+ // --- the default parameters editor: one text over the plugin-wide default fields ------------------------------
255
+ spec(key) { return ALL_FIELD_SPECS.find(spec => spec.field === key); }
256
+ /** The text of a field as the plugin has it now (stored, deployed, or default), ignoring anything staged. */
257
+ storedText(key) { return this.spec(key).format(this.scope.getSnapshot().value?.[key]); }
258
+ isStored(key) {
259
+ const user = this.scope.getSnapshot().user;
260
+ return user !== undefined && user !== null && Object.hasOwn(user, key);
261
+ }
262
+ /** Print the text from the fields as they are (staged edits included). */
263
+ printProperties() {
264
+ return serializeProperties(PROPERTY_FIELDS.map(field => {
265
+ const state = this.form.field(field.key);
266
+ return { key: field.key, text: state.text, overridden: state.overridden };
267
+ }), propertyDocs(this.docsLang));
268
+ }
269
+ /**
270
+ * Stage the fields to match a properties text: a key with a value is edited to it, a key without one (commented,
271
+ * deleted, blank) goes back to the default. The staged result is the same per-field `set` / `unset` the one-control
272
+ * form produced, so the saved configuration has the same flat keys and nothing else.
273
+ */
274
+ editProperties(text) {
275
+ this.propsRaw = text;
276
+ const parsed = parseProperties(text);
277
+ this.propsIssues = checkProperties(parsed, key => this.form.field(key).text);
278
+ const actions = this.form.actions();
279
+ for (const field of PROPERTY_FIELDS) {
280
+ const entry = parsed.values.get(field.key);
281
+ if (entry)
282
+ actions.edit(field.key, entry.value);
283
+ else if (this.isStored(field.key))
284
+ actions.resetField(field.key);
285
+ else
286
+ actions.edit(field.key, this.storedText(field.key));
287
+ }
288
+ }
289
+ /** Print the comments of the advanced text in this language (`zh`, anything else is English). Text the person typed is not touched. */
290
+ setPropertyLanguage(lang) {
291
+ const next = lang === 'zh' ? 'zh' : 'en';
292
+ if (next === this.docsLang)
293
+ return;
294
+ this.docsLang = next;
295
+ this.refresh();
296
+ }
297
+ /** Comment out one key's line: that parameter goes back to the default. */
298
+ resetProperty(key) {
299
+ const current = this.propsRaw ?? this.printProperties();
300
+ const base = this.scope.getSnapshot().base?.[key];
301
+ this.editProperties(commentOutProperty(current, key, this.spec(key).format(base) || (PROPERTY_FIELDS.find(field => field.key === key)?.defaultText ?? '')));
302
+ }
303
+ projectProperties() {
304
+ const text = this.propsRaw ?? this.printProperties();
305
+ const parsed = parseProperties(text);
306
+ const overridden = PROPERTY_FIELDS.filter(field => parsed.values.has(field.key)).map((field) => ({ key: field.key, value: parsed.values.get(field.key).value }));
307
+ return { text, issues: this.propsIssues, overridden, invalid: this.propsIssues.some(issue => issue.level === 'error') };
308
+ }
188
309
  // --- the prompt text section: one staged `prompts` draft, several views of it ----------------------------------
189
310
  /** The staged `prompts` value as an object (empty when none, or when its text is not JSON). */
190
311
  promptsDraft() {
@@ -208,9 +329,22 @@ export class BrowserSettingsController {
208
329
  this.form.actions().edit('prompts', text);
209
330
  }
210
331
  refresh() { this.form.actions().edit('prompts', this.form.field('prompts').text); }
332
+ clearPromptRaw() { for (const key of Object.keys(this.promptRaw))
333
+ delete this.promptRaw[key]; }
334
+ /**
335
+ * A prompt text: blank, or exactly the plugin's default text, is NO override. Saving the default as an override
336
+ * would freeze today's wording and hide every later improvement, so the box keeps what was typed (an author may
337
+ * have copied the default to edit it) while nothing is staged for it.
338
+ */
211
339
  editPromptText(id, text) {
212
340
  const field = PROMPT_TEXT_FIELDS.find(entry => entry.id === id);
213
- this.stagePrompts(setAt(this.promptsDraft(), field.path, text.trim() === '' ? undefined : text));
341
+ const base = this.promptDefaults()?.texts[id];
342
+ const none = text.trim() === '' || (base !== undefined && text === base);
343
+ if (text === '' || !none)
344
+ delete this.promptRaw[id];
345
+ else
346
+ this.promptRaw[id] = text;
347
+ this.stagePrompts(setAt(this.promptsDraft(), field.path, none ? undefined : text));
214
348
  }
215
349
  setPromptSkillEnabled(enabled) {
216
350
  this.stagePrompts(setAt(this.promptsDraft(), ['skill', 'enabled'], enabled ? undefined : false));
@@ -225,7 +359,10 @@ export class BrowserSettingsController {
225
359
  try {
226
360
  const value = JSON.parse(text);
227
361
  if (value && typeof value === 'object' && !Array.isArray(value) && validExtras(value)) {
228
- this.stagePrompts(withExtras(this.promptsDraft(), value));
362
+ // Entries equal to the plugin's own text are not overrides (see editPromptText).
363
+ const defaults = this.promptDefaults()?.extras;
364
+ const effective = defaults ? pruneDefaultExtras(value, defaults) : value;
365
+ this.stagePrompts(withExtras(this.promptsDraft(), effective));
229
366
  return;
230
367
  }
231
368
  }
@@ -233,12 +370,114 @@ export class BrowserSettingsController {
233
370
  this.extrasInvalid = true;
234
371
  this.refresh();
235
372
  }
373
+ /**
374
+ * One entry of the groups / actions / errorHints lists, from the entry dialog. An entry equal to the plugin's own
375
+ * text is no override (see editPromptText), so it leaves the list instead of freezing today's wording.
376
+ */
377
+ setPromptExtra(kind, key, value) {
378
+ this.extrasRaw = undefined;
379
+ this.extrasInvalid = false;
380
+ const next = withExtraEntry(this.promptsDraft(), kind, key, value);
381
+ const defaults = this.promptDefaults()?.extras;
382
+ const extras = Object.fromEntries(['groups', 'actions', 'errorHints'].filter(name => next[name] !== undefined).map(name => [name, next[name]]));
383
+ const effective = defaults ? pruneDefaultExtras(extras, defaults) : extras;
384
+ this.stagePrompts(withExtras(next, effective));
385
+ }
236
386
  /** Back to the plugin's own text for groups, actions and error hints. */
237
387
  resetPromptExtras() {
238
388
  this.extrasRaw = undefined;
239
389
  this.extrasInvalid = false;
240
390
  this.stagePrompts(withExtras(this.promptsDraft(), {}));
241
391
  }
392
+ // --- the policy objects, one control per key ---------------------------------------------------------------------
393
+ clearPolicyRaw() { this.policyRaw.usagePolicy = {}; this.policyRaw.automationAssets = {}; }
394
+ policyHasRaw() { return Object.values(this.policyRaw).some(entries => Object.keys(entries).length > 0); }
395
+ /** The staged policy object (empty when its text is not a JSON object yet). */
396
+ policyDraft(field) {
397
+ const text = this.form.field(field).text;
398
+ if (text.trim() === '')
399
+ return {};
400
+ try {
401
+ const value = JSON.parse(text);
402
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
403
+ }
404
+ catch {
405
+ return {};
406
+ }
407
+ }
408
+ /** `value` without the keys that equal their default (and without anything the policy does not know), keys in the card's order. */
409
+ minimalPolicy(field, value) {
410
+ const out = {};
411
+ for (const spec of POLICY_SPECS[field]) {
412
+ const entry = value[spec.key];
413
+ if (entry !== undefined && entry !== defaultOf(field, spec.key))
414
+ out[spec.key] = entry;
415
+ }
416
+ return out;
417
+ }
418
+ /**
419
+ * One key of a policy object, from its own control. A text the key does not accept is kept as typed (and blocks the
420
+ * save); an empty text, or the default itself, removes the key so the object holds only what differs.
421
+ */
422
+ editPolicyKey(field, key, text) {
423
+ const spec = POLICY_SPECS[field].find(entry => entry.key === key);
424
+ if (!spec)
425
+ return;
426
+ const parsed = parsePolicyText(field, spec, text);
427
+ if (!parsed.ok) {
428
+ this.policyRaw[field][key] = text;
429
+ this.form.actions().edit(field, this.form.field(field).text);
430
+ return;
431
+ }
432
+ delete this.policyRaw[field][key];
433
+ const next = { ...this.policyDraft(field) };
434
+ if (parsed.value === undefined)
435
+ delete next[key];
436
+ else
437
+ next[key] = parsed.value;
438
+ const minimal = this.minimalPolicy(field, next);
439
+ const spec2 = ALL_FIELD_SPECS.find(entry => entry.field === field);
440
+ const stored = this.scope.getSnapshot().value?.[field];
441
+ const same = JSON.stringify(this.minimalPolicy(field, stored && typeof stored === 'object' ? stored : {})) === JSON.stringify(minimal);
442
+ this.form.actions().edit(field, same ? spec2.format(stored) : JSON.stringify(minimal, null, 2));
443
+ }
444
+ projectPolicies() {
445
+ const out = { usagePolicy: {}, automationAssets: {} };
446
+ for (const field of Object.keys(POLICY_SPECS)) {
447
+ const draft = this.policyDraft(field);
448
+ for (const spec of POLICY_SPECS[field]) {
449
+ const raw = this.policyRaw[field][spec.key];
450
+ const value = draft[spec.key] ?? defaultOf(field, spec.key);
451
+ const parsed = raw === undefined ? undefined : parsePolicyText(field, spec, raw);
452
+ out[field][spec.key] = {
453
+ text: raw ?? valueText(value),
454
+ overridden: draft[spec.key] !== undefined && draft[spec.key] !== defaultOf(field, spec.key),
455
+ ...parsed && !parsed.ok ? { problem: parsed.problem } : {},
456
+ };
457
+ }
458
+ }
459
+ return out;
460
+ }
461
+ // --- login profiles: the list's dialog stages one edit of the `authProfiles` map ------------------------------
462
+ /** Stage a whole `authProfiles` map; the stored map itself is staged back when they are equal, so the form is clean again. */
463
+ stageProfiles(next) {
464
+ const spec = ALL_FIELD_SPECS.find(entry => entry.field === 'authProfiles');
465
+ const stored = this.scope.getSnapshot().value?.authProfiles;
466
+ const canonical = (map) => JSON.stringify(Object.keys(map).sort().map(id => [id, map[id].storageStatePath, [...map[id].allowedDomains], map[id].persistState]));
467
+ const same = canonical(next) === canonical(parseProfiles(spec.format(stored)));
468
+ this.form.actions().edit('authProfiles', same ? spec.format(stored) : JSON.stringify(next, null, 2));
469
+ }
470
+ /** Add or replace one profile. A profile's state-file path is kept as given: the card never rewrites a path it did not create. */
471
+ saveAuthProfile(id, entry) {
472
+ const current = parseProfiles(this.form.field('authProfiles').text);
473
+ this.stageProfiles({ ...current, [id]: { storageStatePath: entry.storageStatePath, allowedDomains: [...entry.allowedDomains], persistState: entry.persistState } });
474
+ }
475
+ /** Remove one profile from the baseline configuration. */
476
+ removeAuthProfile(id) {
477
+ const current = parseProfiles(this.form.field('authProfiles').text);
478
+ delete current[id];
479
+ this.stageProfiles(current);
480
+ }
242
481
  snapshot() { return this.store.getSnapshot(); }
243
482
  dispose() { this.form.dispose(); }
244
483
  project() {
@@ -249,20 +488,25 @@ export class BrowserSettingsController {
249
488
  for (const spec of JSON_FIELD_SPECS)
250
489
  jsonFields[spec.field] = this.form.field(spec.field);
251
490
  const shell = this.form.shell();
252
- return { ...shell, invalid: shell.invalid || this.extrasInvalid, fields, jsonFields, prompts: this.projectPrompts(jsonFields.prompts) };
491
+ const properties = this.projectProperties();
492
+ const problems = this.crossProblems();
493
+ return { ...shell, invalid: shell.invalid || this.extrasInvalid || this.policyHasRaw() || properties.invalid || Object.keys(problems).length > 0, problems, policies: this.projectPolicies(), fields, jsonFields, prompts: this.projectPrompts(jsonFields.prompts), properties, changes: this.changedFields() };
253
494
  }
254
495
  projectPrompts(field) {
255
496
  const draft = this.promptsDraft();
256
497
  const texts = {};
257
498
  for (const entry of PROMPT_TEXT_FIELDS) {
258
499
  const value = getAt(draft, entry.path);
259
- const text = typeof value === 'string' ? value : '';
260
- texts[entry.id] = { text, invalid: text.length > entry.limit };
500
+ const stored = typeof value === 'string' ? value : '';
501
+ const text = this.promptRaw[entry.id] ?? stored;
502
+ const base = this.promptDefaults()?.texts[entry.id];
503
+ texts[entry.id] = { text, invalid: text.length > entry.limit, sameAsDefault: stored !== '' && stored === base };
261
504
  }
262
505
  return {
263
506
  texts,
264
507
  skillEnabled: getAt(draft, ['skill', 'enabled']) !== false,
265
508
  extras: { text: this.extrasRaw ?? extrasText(draft), invalid: this.extrasInvalid },
509
+ entries: extraEntries(draft),
266
510
  overridden: field.overridden,
267
511
  invalid: field.invalid,
268
512
  };
@@ -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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"}