@anweat/dsh-browser 0.2.0 → 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 (178) hide show
  1. package/README.md +274 -70
  2. package/assets/skills/dsh-browser/SKILL.md +13 -11
  3. package/assets/skills/dsh-browser/references/develop.md +8 -0
  4. package/assets/skills/dsh-browser/references/files.md +36 -0
  5. package/assets/skills/dsh-browser/references/observe.md +2 -2
  6. package/assets/skills/dsh-browser/references/policy.md +32 -0
  7. package/cordis.patch.yml +10 -3
  8. package/lib/actions/automation.js +1 -1
  9. package/lib/actions/automation.js.map +1 -1
  10. package/lib/actions/errors.js +7 -2
  11. package/lib/actions/errors.js.map +1 -1
  12. package/lib/actions/index-view.d.ts +4 -1
  13. package/lib/actions/index-view.js +16 -3
  14. package/lib/actions/index-view.js.map +1 -1
  15. package/lib/actions/inspect.js +15 -0
  16. package/lib/actions/inspect.js.map +1 -1
  17. package/lib/actions/observe.js +1 -1
  18. package/lib/actions/observe.js.map +1 -1
  19. package/lib/actions/opencli.d.ts +1 -1
  20. package/lib/actions/opencli.js +4 -4
  21. package/lib/actions/opencli.js.map +1 -1
  22. package/lib/actions/policy.d.ts +15 -0
  23. package/lib/actions/policy.js +131 -0
  24. package/lib/actions/policy.js.map +1 -0
  25. package/lib/actions/registry.d.ts +8 -0
  26. package/lib/actions/registry.js +16 -5
  27. package/lib/actions/registry.js.map +1 -1
  28. package/lib/actions/run.js +3 -3
  29. package/lib/actions/run.js.map +1 -1
  30. package/lib/actions/runtime.js +2 -2
  31. package/lib/actions/runtime.js.map +1 -1
  32. package/lib/actions/surface.d.ts +7 -0
  33. package/lib/actions/surface.js +11 -1
  34. package/lib/actions/surface.js.map +1 -1
  35. package/lib/actions/target.js +35 -3
  36. package/lib/actions/target.js.map +1 -1
  37. package/lib/actions/types.d.ts +1 -1
  38. package/lib/actions/types.js.map +1 -1
  39. package/lib/approval-policy.d.ts +20 -1
  40. package/lib/approval-policy.js +58 -1
  41. package/lib/approval-policy.js.map +1 -1
  42. package/lib/auth-profiles.d.ts +4 -1
  43. package/lib/auth-profiles.js +3 -0
  44. package/lib/auth-profiles.js.map +1 -1
  45. package/lib/automation-assets-rpc.js +26 -0
  46. package/lib/automation-assets-rpc.js.map +1 -1
  47. package/lib/browser-service.d.ts +165 -4
  48. package/lib/browser-service.js +505 -55
  49. package/lib/browser-service.js.map +1 -1
  50. package/lib/client/SettingsCard.d.ts +10 -8
  51. package/lib/client/SettingsCard.js +12 -137
  52. package/lib/client/SettingsCard.js.map +1 -1
  53. package/lib/client/auth-profiles-form.d.ts +23 -0
  54. package/lib/client/auth-profiles-form.js +64 -0
  55. package/lib/client/auth-profiles-form.js.map +1 -0
  56. package/lib/client/card-frame.d.ts +22 -0
  57. package/lib/client/card-frame.js +61 -0
  58. package/lib/client/card-frame.js.map +1 -0
  59. package/lib/client/field-rows.d.ts +59 -0
  60. package/lib/client/field-rows.js +63 -0
  61. package/lib/client/field-rows.js.map +1 -0
  62. package/lib/client/field-rules.d.ts +17 -0
  63. package/lib/client/field-rules.js +68 -0
  64. package/lib/client/field-rules.js.map +1 -0
  65. package/lib/client/form.d.ts +108 -7
  66. package/lib/client/form.js +255 -11
  67. package/lib/client/form.js.map +1 -1
  68. package/lib/client/group-access.d.ts +14 -0
  69. package/lib/client/group-access.js +97 -0
  70. package/lib/client/group-access.js.map +1 -0
  71. package/lib/client/group-advanced.d.ts +11 -0
  72. package/lib/client/group-advanced.js +32 -0
  73. package/lib/client/group-advanced.js.map +1 -0
  74. package/lib/client/group-assets.d.ts +13 -0
  75. package/lib/client/group-assets.js +50 -0
  76. package/lib/client/group-assets.js.map +1 -0
  77. package/lib/client/group-browser.d.ts +9 -0
  78. package/lib/client/group-browser.js +27 -0
  79. package/lib/client/group-browser.js.map +1 -0
  80. package/lib/client/group-common.d.ts +10 -0
  81. package/lib/client/group-common.js +21 -0
  82. package/lib/client/group-common.js.map +1 -0
  83. package/lib/client/group-context.d.ts +20 -0
  84. package/lib/client/group-context.js +76 -0
  85. package/lib/client/group-context.js.map +1 -0
  86. package/lib/client/group-downloads.d.ts +10 -0
  87. package/lib/client/group-downloads.js +33 -0
  88. package/lib/client/group-downloads.js.map +1 -0
  89. package/lib/client/group-limits.d.ts +9 -0
  90. package/lib/client/group-limits.js +57 -0
  91. package/lib/client/group-limits.js.map +1 -0
  92. package/lib/client/group-prompts.d.ts +13 -0
  93. package/lib/client/group-prompts.js +136 -0
  94. package/lib/client/group-prompts.js.map +1 -0
  95. package/lib/client/index.d.ts +21 -1
  96. package/lib/client/index.js +10 -4
  97. package/lib/client/index.js.map +1 -1
  98. package/lib/client/locales-policy.d.ts +83 -0
  99. package/lib/client/locales-policy.js +46 -0
  100. package/lib/client/locales-policy.js.map +1 -0
  101. package/lib/client/locales-prompts.d.ts +57 -0
  102. package/lib/client/locales-prompts.js +41 -0
  103. package/lib/client/locales-prompts.js.map +1 -0
  104. package/lib/client/locales-ui.d.ts +223 -0
  105. package/lib/client/locales-ui.js +157 -0
  106. package/lib/client/locales-ui.js.map +1 -0
  107. package/lib/client/locales.d.ts +359 -67
  108. package/lib/client/locales.js +68 -22
  109. package/lib/client/locales.js.map +1 -1
  110. package/lib/client/policy-fields.d.ts +31 -0
  111. package/lib/client/policy-fields.js +66 -0
  112. package/lib/client/policy-fields.js.map +1 -0
  113. package/lib/client/policy-status-client.d.ts +91 -0
  114. package/lib/client/policy-status-client.js +64 -0
  115. package/lib/client/policy-status-client.js.map +1 -0
  116. package/lib/client/prompts-form.d.ts +33 -0
  117. package/lib/client/prompts-form.js +87 -0
  118. package/lib/client/prompts-form.js.map +1 -1
  119. package/lib/client/prompts-status-client.d.ts +21 -1
  120. package/lib/client/prompts-status-client.js +36 -4
  121. package/lib/client/prompts-status-client.js.map +1 -1
  122. package/lib/client/properties-form.d.ts +90 -0
  123. package/lib/client/properties-form.js +187 -0
  124. package/lib/client/properties-form.js.map +1 -0
  125. package/lib/client/property-docs.d.ts +18 -0
  126. package/lib/client/property-docs.js +78 -0
  127. package/lib/client/property-docs.js.map +1 -0
  128. package/lib/client/size-units.d.ts +12 -0
  129. package/lib/client/size-units.js +29 -0
  130. package/lib/client/size-units.js.map +1 -0
  131. package/lib/client/styles.d.ts +47 -31
  132. package/lib/client/styles.js +59 -20
  133. package/lib/client/styles.js.map +1 -1
  134. package/lib/client/ui-kit.d.ts +173 -0
  135. package/lib/client/ui-kit.js +112 -0
  136. package/lib/client/ui-kit.js.map +1 -0
  137. package/lib/client.js +5291 -834
  138. package/lib/client.js.map +1 -1
  139. package/lib/config-rules.d.ts +40 -0
  140. package/lib/config-rules.js +103 -0
  141. package/lib/config-rules.js.map +1 -0
  142. package/lib/config.d.ts +64 -2
  143. package/lib/config.js +106 -0
  144. package/lib/config.js.map +1 -1
  145. package/lib/context-options.d.ts +85 -0
  146. package/lib/context-options.js +206 -0
  147. package/lib/context-options.js.map +1 -0
  148. package/lib/deps.d.ts +42 -5
  149. package/lib/deps.js +219 -9
  150. package/lib/deps.js.map +1 -1
  151. package/lib/downloads.d.ts +79 -0
  152. package/lib/downloads.js +189 -0
  153. package/lib/downloads.js.map +1 -0
  154. package/lib/index.d.ts +3 -2
  155. package/lib/index.js +11 -5
  156. package/lib/index.js.map +1 -1
  157. package/lib/policy-keys.d.ts +39 -0
  158. package/lib/policy-keys.js +21 -0
  159. package/lib/policy-keys.js.map +1 -1
  160. package/lib/policy-overlay.d.ts +189 -0
  161. package/lib/policy-overlay.js +649 -0
  162. package/lib/policy-overlay.js.map +1 -0
  163. package/lib/prompts-yaml.d.ts +11 -0
  164. package/lib/prompts-yaml.js +121 -0
  165. package/lib/prompts-yaml.js.map +1 -0
  166. package/lib/prompts.d.ts +2 -0
  167. package/lib/prompts.js +7 -3
  168. package/lib/prompts.js.map +1 -1
  169. package/lib/system-browser.d.ts +61 -0
  170. package/lib/system-browser.js +109 -0
  171. package/lib/system-browser.js.map +1 -0
  172. package/lib/tools.js +9 -1
  173. package/lib/tools.js.map +1 -1
  174. package/lib/usage-policy.d.ts +3 -1
  175. package/lib/usage-policy.js +2 -0
  176. package/lib/usage-policy.js.map +1 -1
  177. package/package.json +42 -38
  178. package/scripts/dump-prompts.mjs +12 -2
package/lib/config.d.ts CHANGED
@@ -9,6 +9,12 @@ import { type AutomationMode, type ToolSurface } from './freedom.ts';
9
9
  import { type UsagePolicy, type UsagePolicyInput } from './usage-policy.ts';
10
10
  import { type PromptsSource } from './prompts.ts';
11
11
  import { type AutomationAssetPolicy, type AutomationAssetPolicyInput } from './automation-assets.ts';
12
+ import { type ContextOptions, type ViewportMode } from './context-options.ts';
13
+ import { MAX_DOWNLOAD_BYTES_LIMIT } from './config-rules.ts';
14
+ export { MAX_DOWNLOAD_BYTES_LIMIT };
15
+ /** Schema keys that are not settings (see {@link MISPLACED_KEYS}); the settings card has no control for them. */
16
+ export declare const MISPLACED_CONFIG_KEYS: readonly string[];
17
+ export declare const DEFAULT_DOWNLOAD_MAX_BYTES: number;
12
18
  export declare const BROWSER_RUNTIMES: readonly ["playwright", "patchright"];
13
19
  export type BrowserRuntime = typeof BROWSER_RUNTIMES[number];
14
20
  export declare function resolveBrowserRuntime(value: unknown): BrowserRuntime;
@@ -42,7 +48,7 @@ export interface PromptsInput {
42
48
  export interface Config {
43
49
  /** Whether the browser service is active. */
44
50
  enabled: boolean;
45
- /** Browser channel: 'chromium' (bundled, self-contained) or 'msedge'. */
51
+ /** Browser channel: 'chromium' (Playwright's Chromium; a system Chrome / Edge stands in when it is not installed), 'chrome' or 'msedge' (always that browser). */
46
52
  channel: string;
47
53
  /** Browser driver/runtime implementation. Patchright is Chromium-only. */
48
54
  browserRuntime?: BrowserRuntime;
@@ -57,7 +63,7 @@ export interface Config {
57
63
  rulePacks?: Record<string, RulePackConfig>;
58
64
  /** Explicit browser executable path override (rare). */
59
65
  executablePath?: string;
60
- /** Whether the bundled OpenCLI is enabled. */
66
+ /** Whether OpenCLI (optional, installed separately) is used; with no OpenCLI installed this only affects what status reports. */
61
67
  opencliEnabled: boolean;
62
68
  /** Model-facing tool exposure and approval level. */
63
69
  automationMode: AutomationMode;
@@ -80,6 +86,35 @@ export interface Config {
80
86
  autoInstall: boolean;
81
87
  /** Directory for browser screenshots; defaults to $DSH_HOME/data/browser/snapshots. */
82
88
  snapshotDir?: string;
89
+ /**
90
+ * Whether a policy change made through the agent actions may name localhost, `.local`/`.internal` names and
91
+ * loopback or private-network IPv4 addresses as allowed domains. Off by default; cloud metadata and link-local
92
+ * addresses are refused regardless.
93
+ */
94
+ allowPrivateHosts?: boolean;
95
+ /** Directory the downloads of `target.download` and browser-triggered downloads are saved to; defaults to $DSH_HOME/data/browser/downloads. */
96
+ downloadDir?: string;
97
+ /** Largest single download in bytes; a bigger one is stopped and removed. Default 100 MiB. */
98
+ downloadMaxBytes?: number;
99
+ /**
100
+ * Viewport of every context the plugin creates: `window` (default, Playwright's own default size),
101
+ * `720p` (1280x720), `1080p` (1920x1080) or `custom` (viewportWidth x viewportHeight).
102
+ */
103
+ viewportMode?: ViewportMode;
104
+ /** Custom viewport width in CSS pixels; only read with viewportMode=custom. */
105
+ viewportWidth?: number;
106
+ /** Custom viewport height in CSS pixels; only read with viewportMode=custom. */
107
+ viewportHeight?: number;
108
+ /** User agent of every context; unset keeps the browser's own. */
109
+ userAgent?: string;
110
+ /** BCP 47 locale of every context (en-US, zh-CN); unset keeps the browser's own. */
111
+ locale?: string;
112
+ /** IANA time zone of every context (Asia/Shanghai); unset keeps the machine's. */
113
+ timezoneId?: string;
114
+ /** Proxy of every context: `http://host:port`, `socks5://host:port`. No account or password is supported. */
115
+ proxyServer?: string;
116
+ /** Comma-separated hosts that skip the proxy (`example.com,.internal.test`); needs proxyServer. */
117
+ proxyBypass?: string;
83
118
  verbose: boolean;
84
119
  /** Optional remote debugging port to expose CDP for external tools (e.g. 9222). */
85
120
  cdpPort?: number;
@@ -112,10 +147,37 @@ export interface ResolvedConfig {
112
147
  prompts: PromptsSource;
113
148
  autoInstall: boolean;
114
149
  snapshotDir: string;
150
+ downloadDir: string;
151
+ downloadMaxBytes: number;
152
+ allowPrivateHosts: boolean;
153
+ /** `$DSH_HOME/data/browser`: where the plugin keeps the policy overlay and its auth state directory. */
154
+ dataDir: string;
155
+ /** The only directory an agent-set storageStatePath may live in. */
156
+ authDir: string;
157
+ /** The managed policy overlay file (see policy-overlay.ts). */
158
+ policyOverlayFile: string;
159
+ /** Context options applied to every context the plugin creates (viewport, user agent, locale, time zone, proxy). */
160
+ contextDefaults: ContextOptions;
161
+ /** Settings that were read but have no effect, shown in `runtime.status`. */
162
+ configWarnings: string[];
115
163
  verbose: boolean;
116
164
  cdpPort?: number;
117
165
  args: string[];
118
166
  maxSessions: number;
119
167
  }
120
168
  export declare function defaultSnapshotDir(): string;
169
+ export declare function defaultBrowserDataDir(): string;
170
+ export declare function defaultDownloadDir(): string;
171
+ /**
172
+ * `downloadDir` must be an absolute path: a relative one would depend on the host process's working directory.
173
+ * A wrong value falls back to the default and is reported, never thrown: see {@link resolveConfig}.
174
+ */
175
+ export declare function resolveDownloadDir(value: unknown): {
176
+ dir: string;
177
+ warning?: string;
178
+ };
179
+ export declare function resolveDownloadMaxBytes(value: unknown): {
180
+ bytes: number;
181
+ warning?: string;
182
+ };
121
183
  export declare function resolveConfig(config: Config): ResolvedConfig;
package/lib/config.js CHANGED
@@ -10,6 +10,12 @@ import { resolveUsagePolicy } from "./usage-policy.js";
10
10
  import { PROMPT_LIMITS } from "./prompt-limits.js";
11
11
  import { promptsSource } from "./prompts.js";
12
12
  import { resolveAutomationAssetPolicy } from "./automation-assets.js";
13
+ import { VIEWPORT_LIMITS, VIEWPORT_MODES, configProblem, resolveContextDefaults } from "./context-options.js";
14
+ import { MAX_DOWNLOAD_BYTES_LIMIT, checkAbsoluteDirectory } from "./config-rules.js";
15
+ export { MAX_DOWNLOAD_BYTES_LIMIT };
16
+ /** Schema keys that are not settings (see {@link MISPLACED_KEYS}); the settings card has no control for them. */
17
+ export const MISPLACED_CONFIG_KEYS = ['viewport', 'proxy', 'contextOptions', 'download', 'downloads'];
18
+ export const DEFAULT_DOWNLOAD_MAX_BYTES = 100 * 1024 * 1024;
13
19
  export const BROWSER_RUNTIMES = ['playwright', 'patchright'];
14
20
  export function resolveBrowserRuntime(value) {
15
21
  const runtime = value ?? 'playwright';
@@ -112,15 +118,83 @@ export const Config = z.object({
112
118
  }).description('Overrides of the model-facing text. The settings card button Export default text (or `pnpm prompts:dump` in a repository checkout) prints every key with its default. Values over the length limits and unknown keys are ignored and reported by runtime.status. Tool descriptions apply after a restart; everything else applies on the next call.').volatile(),
113
119
  autoInstall: z.boolean().default(false).volatile(),
114
120
  snapshotDir: z.string().volatile(),
121
+ allowPrivateHosts: z.boolean().default(false).description('Let agent policy changes name localhost, .local/.internal names and private-network IPv4 addresses as allowed domains').volatile(),
122
+ downloadDir: z.string().description('Absolute directory downloads are saved to; defaults to $DSH_HOME/data/browser/downloads').volatile(),
123
+ downloadMaxBytes: z.number().default(DEFAULT_DOWNLOAD_MAX_BYTES).description('Largest single download in bytes (default 100 MiB); a bigger one is stopped and removed').volatile(),
124
+ viewportMode: z.string().default('window').description(`Viewport of every context: ${VIEWPORT_MODES.join(' | ')} (window = the browser default)`).volatile(),
125
+ viewportWidth: z.number().description(`Custom viewport width, ${VIEWPORT_LIMITS.minWidth}-${VIEWPORT_LIMITS.maxWidth}; only with viewportMode=custom`).volatile(),
126
+ viewportHeight: z.number().description(`Custom viewport height, ${VIEWPORT_LIMITS.minHeight}-${VIEWPORT_LIMITS.maxHeight}; only with viewportMode=custom`).volatile(),
127
+ userAgent: z.string().description('User agent of every context; unset keeps the browser\'s own').volatile(),
128
+ locale: z.string().description('BCP 47 locale such as en-US or zh-CN').volatile(),
129
+ timezoneId: z.string().description('IANA time zone such as Asia/Shanghai').volatile(),
130
+ proxyServer: z.string().description('Proxy such as http://127.0.0.1:7890 or socks5://127.0.0.1:1080; accounts and passwords are not supported').volatile(),
131
+ proxyBypass: z.string().description('Comma-separated hosts that skip the proxy; needs proxyServer').volatile(),
132
+ // The ranges of the numbers above are NOT part of the schema on purpose: schema parsing rejects a value outside a
133
+ // range with an error that stops the plugin from loading, while `resolveConfig` reports it and falls back (the
134
+ // settings card enforces the same ranges before a save).
135
+ // Not settings: these names exist so that the nested shape people expect fails loudly in `resolveConfig`
136
+ // instead of being dropped by schema parsing, which is how a nested `viewport` was once ignored without a word.
137
+ viewport: z.any(),
138
+ proxy: z.any(),
139
+ contextOptions: z.any(),
140
+ download: z.any(),
141
+ downloads: z.any(),
115
142
  verbose: z.boolean().default(false).volatile(),
116
143
  cdpPort: z.number().min(1).max(65_535).step(1).description('Optional remote debugging port to expose CDP for external tools (e.g. 9222)').volatile(),
117
144
  args: z.array(z.string()).default([]).description('Additional Chromium CLI launch arguments').volatile(),
118
145
  maxSessions: z.number().min(1).max(64).step(1).default(8).description('Sessions that may hold a browser page at once; the least-recently-used one is closed past this. One browser process is shared by all of them.').volatile(),
119
146
  });
147
+ /**
148
+ * Where each nested spelling people try belongs, for the error that replaces silently ignoring it. These names are
149
+ * in the schema only so schema parsing keeps them long enough for `resolveConfig` to refuse them; they are not settings.
150
+ */
151
+ const MISPLACED_KEYS = {
152
+ viewport: 'viewportMode (window | 720p | 1080p | custom), viewportWidth and viewportHeight',
153
+ proxy: 'proxyServer and proxyBypass (flat keys; proxy accounts are not supported)',
154
+ contextOptions: 'the flat keys viewportMode, viewportWidth, viewportHeight, userAgent, locale, timezoneId, proxyServer, proxyBypass',
155
+ download: 'downloadDir and downloadMaxBytes',
156
+ downloads: 'downloadDir and downloadMaxBytes',
157
+ };
120
158
  export function defaultSnapshotDir() {
121
159
  const home = process.env.DSH_HOME ?? path.join(os.homedir(), '.dsh');
122
160
  return path.join(home, 'data', 'browser', 'snapshots');
123
161
  }
162
+ export function defaultBrowserDataDir() {
163
+ const home = process.env.DSH_HOME ?? path.join(os.homedir(), '.dsh');
164
+ return path.join(home, 'data', 'browser');
165
+ }
166
+ export function defaultDownloadDir() {
167
+ const home = process.env.DSH_HOME ?? path.join(os.homedir(), '.dsh');
168
+ return path.join(home, 'data', 'browser', 'downloads');
169
+ }
170
+ /**
171
+ * `downloadDir` must be an absolute path: a relative one would depend on the host process's working directory.
172
+ * A wrong value falls back to the default and is reported, never thrown: see {@link resolveConfig}.
173
+ */
174
+ export function resolveDownloadDir(value) {
175
+ if (value === undefined || value === null || value === '')
176
+ return { dir: defaultDownloadDir() };
177
+ const problem = (reason) => ({ dir: defaultDownloadDir(), warning: configProblem('downloadDir', value, reason, `the default ${defaultDownloadDir()} is used`, 'give an absolute directory path, or clear the field') });
178
+ if (typeof value !== 'string')
179
+ return problem('it is not a string');
180
+ try {
181
+ checkAbsoluteDirectory(value, 'downloadDir', message => { throw new Error(message); });
182
+ }
183
+ catch (error) {
184
+ return problem(error.message);
185
+ }
186
+ if (!path.isAbsolute(value))
187
+ return problem('it is not an absolute path on this system');
188
+ return { dir: path.normalize(value) };
189
+ }
190
+ export function resolveDownloadMaxBytes(value) {
191
+ if (value === undefined || value === null)
192
+ return { bytes: DEFAULT_DOWNLOAD_MAX_BYTES };
193
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 1 || value > MAX_DOWNLOAD_BYTES_LIMIT) {
194
+ return { bytes: DEFAULT_DOWNLOAD_MAX_BYTES, warning: configProblem('downloadMaxBytes', value, `it must be an integer from 1 to ${MAX_DOWNLOAD_BYTES_LIMIT}`, `the default ${DEFAULT_DOWNLOAD_MAX_BYTES} bytes (100 MiB) is used`, 'enter a whole number of bytes, or clear the field') };
195
+ }
196
+ return { bytes: value };
197
+ }
124
198
  /**
125
199
  * The shared volatile-reference brand (`cosmokit`'s `Symbol.for` key). Detected
126
200
  * through the global symbol rather than by importing cosmokit: it is a
@@ -151,6 +225,27 @@ export function resolveConfig(config) {
151
225
  };
152
226
  const optional = (field) => plain(c[field]);
153
227
  const snapshotDir = optional('snapshotDir') ?? defaultSnapshotDir();
228
+ // Nothing below throws for the settings added in 0.2.2: a plugin that fails to load takes its settings card with it,
229
+ // so a value that cannot be used falls back to its default and is reported through `configWarnings` instead.
230
+ const warnings = [];
231
+ for (const [key, instead] of Object.entries(MISPLACED_KEYS)) {
232
+ const value = optional(key);
233
+ if (value !== undefined)
234
+ warnings.push(`config "${key}" is not a setting and was ignored; use ${instead}`);
235
+ }
236
+ const downloadDir = resolveDownloadDir(optional('downloadDir'));
237
+ const downloadMax = resolveDownloadMaxBytes(optional('downloadMaxBytes'));
238
+ warnings.push(...[downloadDir.warning, downloadMax.warning].filter((warning) => !!warning));
239
+ const context = resolveContextDefaults({
240
+ viewportMode: optional('viewportMode'),
241
+ viewportWidth: optional('viewportWidth'),
242
+ viewportHeight: optional('viewportHeight'),
243
+ userAgent: optional('userAgent'),
244
+ locale: optional('locale'),
245
+ timezoneId: optional('timezoneId'),
246
+ proxyServer: optional('proxyServer'),
247
+ proxyBypass: optional('proxyBypass'),
248
+ });
154
249
  return {
155
250
  enabled: read('enabled', true),
156
251
  channel: read('channel', 'chromium'),
@@ -166,6 +261,17 @@ export function resolveConfig(config) {
166
261
  autoInstall: read('autoInstall', false),
167
262
  maxSessions: read('maxSessions', 8),
168
263
  snapshotDir,
264
+ downloadDir: downloadDir.dir,
265
+ downloadMaxBytes: downloadMax.bytes,
266
+ allowPrivateHosts: read('allowPrivateHosts', false),
267
+ // `browserDataDir` is not a setting (the schema drops it): it is how tests and embedders that hand `resolveConfig`
268
+ // a plain object keep the overlay out of the real DSH_HOME.
269
+ ...(() => {
270
+ const dataDir = optional('browserDataDir') ?? defaultBrowserDataDir();
271
+ return { dataDir, authDir: path.join(dataDir, 'auth'), policyOverlayFile: path.join(dataDir, 'policy-overlay.json') };
272
+ })(),
273
+ contextDefaults: context.options,
274
+ configWarnings: [...warnings, ...context.warnings],
169
275
  verbose: read('verbose', false),
170
276
  authProfiles: read('authProfiles', {}),
171
277
  rulePacks: read('rulePacks', {}),
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Browser-context creation options: viewport, user agent, locale, time zone and proxy.
3
+ *
4
+ * These can only be chosen when a context is created (Playwright has no way to change a proxy or user agent
5
+ * afterwards), so there are two layers: configuration defaults that apply to every context the plugin creates,
6
+ * and per-call overrides on `target.open`. {@link effectiveContextOptions} merges the two into the one plain
7
+ * shape {@link toPlaywrightOptions} turns into `browser.newContext()` arguments, and
8
+ * {@link sameContextOptions} is what the session uses to decide between reusing its context and rebuilding it.
9
+ *
10
+ * Proxy credentials are deliberately not supported: a username or password would have to live in the
11
+ * configuration or in a tool call, and neither is a place for secrets.
12
+ * @module dsh-browser/context-options
13
+ */
14
+ export { VIEWPORT_MODES, VIEWPORT_LIMITS, checkViewport, checkUserAgent, checkLocale, checkTimezone, checkProxyServer, checkProxyBypass, type ViewportMode, } from './config-rules.ts';
15
+ /** The options a context is created with. Every field is optional; an absent field keeps Playwright's default. */
16
+ export interface ContextOptions {
17
+ viewport?: {
18
+ width: number;
19
+ height: number;
20
+ };
21
+ userAgent?: string;
22
+ locale?: string;
23
+ timezoneId?: string;
24
+ proxy?: {
25
+ server: string;
26
+ bypass?: string;
27
+ };
28
+ }
29
+ /** The configuration keys behind {@link ContextOptions}, as `resolveConfig` reads them. */
30
+ export interface ContextOptionsInput {
31
+ viewportMode?: unknown;
32
+ viewportWidth?: unknown;
33
+ viewportHeight?: unknown;
34
+ userAgent?: unknown;
35
+ locale?: unknown;
36
+ timezoneId?: unknown;
37
+ proxyServer?: unknown;
38
+ proxyBypass?: unknown;
39
+ }
40
+ /** A configuration problem that is not fatal: the value is ignored and this is shown in `runtime.status`. */
41
+ export type ConfigWarning = string;
42
+ /** A short, safe rendering of a configured value for a warning (credentials in a proxy URL are masked). */
43
+ export declare function summarizeValue(value: unknown): string;
44
+ /** The warning for a configuration key whose value was refused: which key, what was there, why, what applies instead. */
45
+ export declare function configProblem(key: string, value: unknown, reason: string, fallback: string, fix: string): ConfigWarning;
46
+ /**
47
+ * Read the context defaults from the configuration. This never throws: a value that is refused is dropped, the key
48
+ * falls back to its default (the browser's own behaviour), and the reason is returned as a warning that names the
49
+ * key, the value and how to fix it. A configuration problem must not stop the plugin from loading, because a plugin
50
+ * that does not load also takes its settings card with it.
51
+ */
52
+ export declare function resolveContextDefaults(input: ContextOptionsInput): {
53
+ options: ContextOptions;
54
+ warnings: ConfigWarning[];
55
+ };
56
+ /** The per-call options of `target.open`, as they arrive from the model. */
57
+ export interface CallContextInput {
58
+ viewport?: {
59
+ width?: unknown;
60
+ height?: unknown;
61
+ };
62
+ userAgent?: unknown;
63
+ locale?: unknown;
64
+ timezoneId?: unknown;
65
+ proxyServer?: unknown;
66
+ }
67
+ /** Validate per-call overrides. Throws {@link ActionArgError} (INVALID_ARGS) naming the argument. */
68
+ export declare function resolveCallOptions(input: CallContextInput | undefined): ContextOptions;
69
+ /**
70
+ * Configuration defaults overlaid with the per-call options. A per-call `proxyServer` replaces the configured
71
+ * proxy as a whole, bypass list included: a bypass list written for one proxy says nothing about another.
72
+ */
73
+ export declare function effectiveContextOptions(defaults: ContextOptions, call?: ContextOptions): ContextOptions;
74
+ /** Whether two option sets would create indistinguishable contexts. */
75
+ export declare function sameContextOptions(a: ContextOptions, b: ContextOptions): boolean;
76
+ /** Names of the options that differ, for the "context was rebuilt" notice. */
77
+ export declare function differingContextOptions(applied: ContextOptions, wanted: ContextOptions): string[];
78
+ /** The `newContext()` arguments for a set of options: only the fields that are set, so an unset field keeps today's behaviour. */
79
+ export declare function toPlaywrightOptions(options: ContextOptions): Record<string, unknown>;
80
+ /** Which parameter each value of an applied set comes from: this call, an earlier call of the session (carried by its context), or the defaults. */
81
+ export declare function contextSources(applied: ContextOptions, defaults: ContextOptions, call: ContextOptions): Record<string, 'call' | 'session' | 'default'>;
82
+ /** One line for the action detail: the context defaults in force, so a caller changes only what it needs. */
83
+ export declare function describeDefaultsLine(defaults: ContextOptions): string;
84
+ /** The options as the model sees them in a result: only what was actually set. */
85
+ export declare function describeContextOptions(options: ContextOptions): Record<string, unknown>;
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Browser-context creation options: viewport, user agent, locale, time zone and proxy.
3
+ *
4
+ * These can only be chosen when a context is created (Playwright has no way to change a proxy or user agent
5
+ * afterwards), so there are two layers: configuration defaults that apply to every context the plugin creates,
6
+ * and per-call overrides on `target.open`. {@link effectiveContextOptions} merges the two into the one plain
7
+ * shape {@link toPlaywrightOptions} turns into `browser.newContext()` arguments, and
8
+ * {@link sameContextOptions} is what the session uses to decide between reusing its context and rebuilding it.
9
+ *
10
+ * Proxy credentials are deliberately not supported: a username or password would have to live in the
11
+ * configuration or in a tool call, and neither is a place for secrets.
12
+ * @module dsh-browser/context-options
13
+ */
14
+ import { ActionArgError } from "./actions/types.js";
15
+ export { VIEWPORT_MODES, VIEWPORT_LIMITS, checkViewport, checkUserAgent, checkLocale, checkTimezone, checkProxyServer, checkProxyBypass, } from "./config-rules.js";
16
+ import { VIEWPORT_MODES, PRESET_VIEWPORTS, checkViewport, checkUserAgent, checkLocale, checkTimezone, checkProxyServer, checkProxyBypass, } from "./config-rules.js";
17
+ /** Thrown inside {@link resolveContextDefaults} by the shared rules; caught per key, never escapes. */
18
+ class ConfigValueError extends Error {
19
+ }
20
+ const configFail = (message) => { throw new ConfigValueError(message); };
21
+ const blank = (value) => value === undefined || value === null || value === '';
22
+ /** A short, safe rendering of a configured value for a warning (credentials in a proxy URL are masked). */
23
+ export function summarizeValue(value) {
24
+ if (typeof value === 'number' || typeof value === 'boolean')
25
+ return String(value);
26
+ const text = typeof value === 'string' ? value : JSON.stringify(value) ?? String(value);
27
+ return JSON.stringify(text.replace(/\/\/[^/@\s]*@/g, '//***@').slice(0, 60));
28
+ }
29
+ /** The warning for a configuration key whose value was refused: which key, what was there, why, what applies instead. */
30
+ export function configProblem(key, value, reason, fallback, fix) {
31
+ return `config ${key}=${summarizeValue(value)} was ignored: ${reason}; ${fallback} instead. Fix: ${fix}`;
32
+ }
33
+ /**
34
+ * Read the context defaults from the configuration. This never throws: a value that is refused is dropped, the key
35
+ * falls back to its default (the browser's own behaviour), and the reason is returned as a warning that names the
36
+ * key, the value and how to fix it. A configuration problem must not stop the plugin from loading, because a plugin
37
+ * that does not load also takes its settings card with it.
38
+ */
39
+ export function resolveContextDefaults(input) {
40
+ const warnings = [];
41
+ const options = {};
42
+ const attempt = (key, value, fallback, fix, run) => {
43
+ try {
44
+ run();
45
+ }
46
+ catch (error) {
47
+ if (!(error instanceof ConfigValueError))
48
+ throw error;
49
+ warnings.push(configProblem(key, value, error.message, fallback, fix));
50
+ }
51
+ };
52
+ let mode = 'window';
53
+ attempt('viewportMode', input.viewportMode, 'the browser\'s default window size applies', `use one of ${VIEWPORT_MODES.join(', ')}`, () => {
54
+ if (blank(input.viewportMode))
55
+ return;
56
+ if (typeof input.viewportMode !== 'string' || !VIEWPORT_MODES.includes(input.viewportMode)) {
57
+ configFail('viewportMode must be one of: ' + VIEWPORT_MODES.join(', '));
58
+ }
59
+ mode = input.viewportMode;
60
+ });
61
+ const hasSize = !blank(input.viewportWidth) || !blank(input.viewportHeight);
62
+ if (mode === 'custom') {
63
+ attempt('viewportMode', 'custom', 'the browser\'s default window size applies', 'set both viewportWidth (200-7680) and viewportHeight (200-4320), or choose window, 720p or 1080p', () => {
64
+ if (blank(input.viewportWidth) || blank(input.viewportHeight))
65
+ configFail('viewportMode=custom requires both viewportWidth and viewportHeight');
66
+ options.viewport = checkViewport(input.viewportWidth, input.viewportHeight, 'viewport', configFail);
67
+ });
68
+ }
69
+ else if (mode === '720p' || mode === '1080p') {
70
+ options.viewport = { ...PRESET_VIEWPORTS[mode] };
71
+ if (hasSize)
72
+ warnings.push(`config viewportWidth/viewportHeight are ignored: they only apply with viewportMode=custom (viewportMode is ${mode})`);
73
+ }
74
+ else if (hasSize) {
75
+ warnings.push('config viewportWidth/viewportHeight are ignored: they only apply with viewportMode=custom (viewportMode is window)');
76
+ }
77
+ const simple = [
78
+ ['userAgent', input.userAgent, value => checkUserAgent(value, 'userAgent', configFail), value => { options.userAgent = value; }, 'use up to 512 characters without line breaks, or clear it'],
79
+ ['locale', input.locale, value => checkLocale(value, 'locale', configFail), value => { options.locale = value; }, 'use a BCP 47 tag such as en-US or zh-CN, or clear it'],
80
+ ['timezoneId', input.timezoneId, value => checkTimezone(value, 'timezoneId', configFail), value => { options.timezoneId = value; }, 'use an IANA time zone such as Asia/Shanghai, or clear it'],
81
+ ];
82
+ for (const [key, value, check, apply, fix] of simple) {
83
+ if (blank(value))
84
+ continue;
85
+ attempt(key, value, 'the browser\'s own value applies', fix, () => apply(check(value)));
86
+ }
87
+ let proxyOk = false;
88
+ if (!blank(input.proxyServer)) {
89
+ attempt('proxyServer', input.proxyServer, 'no proxy is used (direct connection)', 'use http://host:port or socks5://host:port without an account or password, or clear it', () => {
90
+ options.proxy = { server: checkProxyServer(input.proxyServer, 'proxyServer', configFail) };
91
+ proxyOk = true;
92
+ });
93
+ }
94
+ if (!blank(input.proxyBypass)) {
95
+ if (proxyOk) {
96
+ attempt('proxyBypass', input.proxyBypass, 'the bypass list is not applied', 'use comma-separated hosts such as example.com,.internal.test, or clear it', () => {
97
+ options.proxy.bypass = checkProxyBypass(input.proxyBypass, 'proxyBypass', configFail);
98
+ });
99
+ }
100
+ else
101
+ warnings.push('config proxyBypass is ignored: it only applies together with a valid proxyServer');
102
+ }
103
+ return { options, warnings };
104
+ }
105
+ const callFail = (message) => { throw new ActionArgError(message); };
106
+ /** Validate per-call overrides. Throws {@link ActionArgError} (INVALID_ARGS) naming the argument. */
107
+ export function resolveCallOptions(input) {
108
+ const options = {};
109
+ if (!input)
110
+ return options;
111
+ if (input.viewport !== undefined) {
112
+ if (typeof input.viewport !== 'object' || input.viewport === null)
113
+ callFail('viewport must be an object {width, height}');
114
+ options.viewport = checkViewport(input.viewport.width, input.viewport.height, 'viewport', callFail);
115
+ }
116
+ if (input.userAgent !== undefined)
117
+ options.userAgent = checkUserAgent(input.userAgent, 'userAgent', callFail);
118
+ if (input.locale !== undefined)
119
+ options.locale = checkLocale(input.locale, 'locale', callFail);
120
+ if (input.timezoneId !== undefined)
121
+ options.timezoneId = checkTimezone(input.timezoneId, 'timezoneId', callFail);
122
+ if (input.proxyServer !== undefined)
123
+ options.proxy = { server: checkProxyServer(input.proxyServer, 'proxyServer', callFail) };
124
+ return options;
125
+ }
126
+ /**
127
+ * Configuration defaults overlaid with the per-call options. A per-call `proxyServer` replaces the configured
128
+ * proxy as a whole, bypass list included: a bypass list written for one proxy says nothing about another.
129
+ */
130
+ export function effectiveContextOptions(defaults, call = {}) {
131
+ return {
132
+ ...defaults,
133
+ ...call,
134
+ };
135
+ }
136
+ /** Whether two option sets would create indistinguishable contexts. */
137
+ export function sameContextOptions(a, b) {
138
+ return (a.viewport?.width ?? 0) === (b.viewport?.width ?? 0)
139
+ && (a.viewport?.height ?? 0) === (b.viewport?.height ?? 0)
140
+ && a.userAgent === b.userAgent
141
+ && a.locale === b.locale
142
+ && a.timezoneId === b.timezoneId
143
+ && a.proxy?.server === b.proxy?.server
144
+ && a.proxy?.bypass === b.proxy?.bypass;
145
+ }
146
+ /** Names of the options that differ, for the "context was rebuilt" notice. */
147
+ export function differingContextOptions(applied, wanted) {
148
+ const names = [];
149
+ if ((applied.viewport?.width ?? 0) !== (wanted.viewport?.width ?? 0) || (applied.viewport?.height ?? 0) !== (wanted.viewport?.height ?? 0))
150
+ names.push('viewport');
151
+ if (applied.userAgent !== wanted.userAgent)
152
+ names.push('userAgent');
153
+ if (applied.locale !== wanted.locale)
154
+ names.push('locale');
155
+ if (applied.timezoneId !== wanted.timezoneId)
156
+ names.push('timezoneId');
157
+ if (applied.proxy?.server !== wanted.proxy?.server || applied.proxy?.bypass !== wanted.proxy?.bypass)
158
+ names.push('proxyServer');
159
+ return names;
160
+ }
161
+ /** The `newContext()` arguments for a set of options: only the fields that are set, so an unset field keeps today's behaviour. */
162
+ export function toPlaywrightOptions(options) {
163
+ return {
164
+ ...options.viewport ? { viewport: { ...options.viewport } } : {},
165
+ ...options.userAgent ? { userAgent: options.userAgent } : {},
166
+ ...options.locale ? { locale: options.locale } : {},
167
+ ...options.timezoneId ? { timezoneId: options.timezoneId } : {},
168
+ ...options.proxy ? { proxy: { server: options.proxy.server, ...options.proxy.bypass ? { bypass: options.proxy.bypass } : {} } } : {},
169
+ };
170
+ }
171
+ /** Which parameter each value of an applied set comes from: this call, an earlier call of the session (carried by its context), or the defaults. */
172
+ export function contextSources(applied, defaults, call) {
173
+ const sources = {};
174
+ const decide = (key, present, inCall, same) => {
175
+ if (present)
176
+ sources[key] = inCall ? 'call' : same ? 'default' : 'session';
177
+ };
178
+ const sameAs = (a, b) => JSON.stringify(a) === JSON.stringify(b);
179
+ decide('viewport', !!applied.viewport, !!call.viewport, sameAs(applied.viewport, defaults.viewport));
180
+ decide('userAgent', !!applied.userAgent, !!call.userAgent, applied.userAgent === defaults.userAgent);
181
+ decide('locale', !!applied.locale, !!call.locale, applied.locale === defaults.locale);
182
+ decide('timezoneId', !!applied.timezoneId, !!call.timezoneId, applied.timezoneId === defaults.timezoneId);
183
+ decide('proxyServer', !!applied.proxy, !!call.proxy, applied.proxy?.server === defaults.proxy?.server && applied.proxy?.bypass === defaults.proxy?.bypass);
184
+ return sources;
185
+ }
186
+ /** One line for the action detail: the context defaults in force, so a caller changes only what it needs. */
187
+ export function describeDefaultsLine(defaults) {
188
+ const view = describeContextOptions(defaults);
189
+ const shown = (value, none) => value ?? none;
190
+ return 'Current defaults (a parameter you leave out uses them; give only the keys you change): '
191
+ + `viewport ${view.viewport ? `${view.viewport.width}x${view.viewport.height}` : 'window default'}, `
192
+ + `userAgent ${shown(view.userAgent && JSON.stringify(view.userAgent.length > 60 ? view.userAgent.slice(0, 57) + '...' : view.userAgent), "browser's own")}, `
193
+ + `locale ${shown(view.locale, "browser's own")}, timezoneId ${shown(view.timezoneId, "machine's")}, proxyServer ${shown(view.proxyServer, 'none')}. `
194
+ + 'This session\'s own context may carry earlier overrides; the result of target.open lists the full set in effect.';
195
+ }
196
+ /** The options as the model sees them in a result: only what was actually set. */
197
+ export function describeContextOptions(options) {
198
+ return {
199
+ ...options.viewport ? { viewport: { ...options.viewport } } : {},
200
+ ...options.userAgent ? { userAgent: options.userAgent } : {},
201
+ ...options.locale ? { locale: options.locale } : {},
202
+ ...options.timezoneId ? { timezoneId: options.timezoneId } : {},
203
+ ...options.proxy ? { proxyServer: options.proxy.server } : {},
204
+ };
205
+ }
206
+ //# sourceMappingURL=context-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-options.js","sourceRoot":"","sources":["../src/context-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EACL,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,GAE/H,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,GAEhI,MAAM,mBAAmB,CAAA;AA0B1B,uGAAuG;AACvG,MAAM,gBAAiB,SAAQ,KAAK;CAAG;AACvC,MAAM,UAAU,GAAS,CAAC,OAAe,EAAS,EAAE,GAAG,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;AAE5F,MAAM,KAAK,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAA;AAEhG,2GAA2G;AAC3G,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;IACvF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAC9E,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAc,EAAE,MAAc,EAAE,QAAgB,EAAE,GAAW;IACtG,OAAO,UAAU,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,iBAAiB,MAAM,KAAK,QAAQ,kBAAkB,GAAG,EAAE,CAAA;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA0B;IAC/D,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAe,EAAQ,EAAE;QACpG,IAAI,CAAC;YAAC,GAAG,EAAE,CAAA;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC;gBAAE,MAAM,KAAK,CAAA;YACrD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC,CAAA;IACD,IAAI,IAAI,GAAW,QAAQ,CAAA;IAC3B,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,4CAA4C,EAAE,cAAc,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;QACxI,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YAAE,OAAM;QACrC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAA4B,CAAC,EAAE,CAAC;YAC3G,UAAU,CAAC,+BAA+B,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,YAAsB,CAAA;IACrC,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IAC3E,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,4CAA4C,EAAE,kGAAkG,EAAE,GAAG,EAAE;YACvL,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;gBAAE,UAAU,CAAC,oEAAoE,CAAC,CAAA;YAC/I,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;QACrG,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAA;QAChD,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,8GAA8G,IAAI,GAAG,CAAC,CAAA;IACnJ,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,oHAAoH,CAAC,CAAA;IACrI,CAAC;IACD,MAAM,MAAM,GAAqF;QAC/F,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA,CAAC,CAAC,EAAE,2DAA2D,CAAC;QAC5L,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAA,CAAC,CAAC,EAAE,sDAAsD,CAAC;QACxK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,KAAK,CAAA,CAAC,CAAC,EAAE,0DAA0D,CAAC;KAC/L,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC1B,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,kCAAkC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,sCAAsC,EAAE,wFAAwF,EAAE,GAAG,EAAE;YAC/K,OAAO,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,CAAA;YAC1F,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,gCAAgC,EAAE,2EAA2E,EAAE,GAAG,EAAE;gBAC5J,OAAO,CAAC,KAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;YACxF,CAAC,CAAC,CAAA;QACJ,CAAC;;YAAM,QAAQ,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAA;IAC1G,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC;AAWD,MAAM,QAAQ,GAAS,CAAC,OAAe,EAAS,EAAE,GAAG,MAAM,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAA;AAExF,qGAAqG;AACrG,MAAM,UAAU,kBAAkB,CAAC,KAAmC;IACpE,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAA;IAC1B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAAE,QAAQ,CAAC,4CAA4C,CAAC,CAAA;QACzH,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IACrG,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC7G,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9F,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA;IAChH,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAA;IAC7H,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAwB,EAAE,OAAuB,EAAE;IACzF,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,IAAI;KACR,CAAA;AACH,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,CAAiB,EAAE,CAAiB;IACrE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;WACvD,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;WACvD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;WAC3B,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;WACrB,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;WAC7B,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM;WACnC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAA;AAC1C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,OAAuB,EAAE,MAAsB;IACrF,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClK,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1D,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC/H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,kIAAkI;AAClI,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,OAAO;QACL,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QAChE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;QAC5D,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;QACnD,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;QAC/D,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KACrI,CAAA;AACH,CAAC;AAED,oJAAoJ;AACpJ,MAAM,UAAU,cAAc,CAAC,OAAuB,EAAE,QAAwB,EAAE,IAAoB;IACpG,MAAM,OAAO,GAAmD,EAAE,CAAA;IAClE,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,OAAgB,EAAE,MAAe,EAAE,IAAa,EAAQ,EAAE;QACrF,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5E,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAClF,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAA;IACpG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrF,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAA;IACzG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC1J,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,MAAM,IAAI,GAAG,sBAAsB,CAAC,QAAQ,CAAqI,CAAA;IACjL,MAAM,KAAK,GAAG,CAAC,KAAyB,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAA;IACxE,OAAO,yFAAyF;UAC5F,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI;UACnG,aAAa,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,IAAI;UAC5J,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI;UACpJ,kHAAkH,CAAA;AACxH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,OAAO;QACL,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;QAChE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;QAC5D,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;QACnD,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;QAC/D,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAA;AACH,CAAC"}