@anweat/dsh-browser 0.2.1 → 0.2.3

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 (172) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.en.md +153 -0
  3. package/README.md +99 -568
  4. package/assets/skills/dsh-browser/SKILL.md +13 -11
  5. package/assets/skills/dsh-browser/references/files.md +36 -0
  6. package/assets/skills/dsh-browser/references/observe.md +2 -2
  7. package/assets/skills/dsh-browser/references/policy.md +32 -0
  8. package/cordis.patch.yml +10 -3
  9. package/lib/actions/errors.js +7 -2
  10. package/lib/actions/errors.js.map +1 -1
  11. package/lib/actions/index-view.d.ts +4 -1
  12. package/lib/actions/index-view.js +16 -3
  13. package/lib/actions/index-view.js.map +1 -1
  14. package/lib/actions/inspect.js +15 -0
  15. package/lib/actions/inspect.js.map +1 -1
  16. package/lib/actions/observe.js +1 -1
  17. package/lib/actions/observe.js.map +1 -1
  18. package/lib/actions/opencli.d.ts +1 -1
  19. package/lib/actions/opencli.js +4 -4
  20. package/lib/actions/opencli.js.map +1 -1
  21. package/lib/actions/policy.d.ts +15 -0
  22. package/lib/actions/policy.js +131 -0
  23. package/lib/actions/policy.js.map +1 -0
  24. package/lib/actions/registry.js +6 -5
  25. package/lib/actions/registry.js.map +1 -1
  26. package/lib/actions/runtime.js +2 -2
  27. package/lib/actions/runtime.js.map +1 -1
  28. package/lib/actions/target.js +35 -3
  29. package/lib/actions/target.js.map +1 -1
  30. package/lib/actions/types.d.ts +1 -1
  31. package/lib/actions/types.js.map +1 -1
  32. package/lib/approval-policy.d.ts +10 -1
  33. package/lib/approval-policy.js +42 -1
  34. package/lib/approval-policy.js.map +1 -1
  35. package/lib/auth-profiles.d.ts +4 -1
  36. package/lib/auth-profiles.js +3 -0
  37. package/lib/auth-profiles.js.map +1 -1
  38. package/lib/automation-assets-rpc.js +60 -4
  39. package/lib/automation-assets-rpc.js.map +1 -1
  40. package/lib/browser-service.d.ts +165 -4
  41. package/lib/browser-service.js +505 -55
  42. package/lib/browser-service.js.map +1 -1
  43. package/lib/client/SettingsCard.d.ts +10 -8
  44. package/lib/client/SettingsCard.js +12 -137
  45. package/lib/client/SettingsCard.js.map +1 -1
  46. package/lib/client/auth-profiles-form.d.ts +23 -0
  47. package/lib/client/auth-profiles-form.js +64 -0
  48. package/lib/client/auth-profiles-form.js.map +1 -0
  49. package/lib/client/card-frame.d.ts +22 -0
  50. package/lib/client/card-frame.js +61 -0
  51. package/lib/client/card-frame.js.map +1 -0
  52. package/lib/client/field-rows.d.ts +59 -0
  53. package/lib/client/field-rows.js +63 -0
  54. package/lib/client/field-rows.js.map +1 -0
  55. package/lib/client/field-rules.d.ts +17 -0
  56. package/lib/client/field-rules.js +68 -0
  57. package/lib/client/field-rules.js.map +1 -0
  58. package/lib/client/form.d.ts +108 -7
  59. package/lib/client/form.js +255 -11
  60. package/lib/client/form.js.map +1 -1
  61. package/lib/client/group-access.d.ts +14 -0
  62. package/lib/client/group-access.js +97 -0
  63. package/lib/client/group-access.js.map +1 -0
  64. package/lib/client/group-advanced.d.ts +11 -0
  65. package/lib/client/group-advanced.js +32 -0
  66. package/lib/client/group-advanced.js.map +1 -0
  67. package/lib/client/group-assets.d.ts +13 -0
  68. package/lib/client/group-assets.js +50 -0
  69. package/lib/client/group-assets.js.map +1 -0
  70. package/lib/client/group-browser.d.ts +9 -0
  71. package/lib/client/group-browser.js +27 -0
  72. package/lib/client/group-browser.js.map +1 -0
  73. package/lib/client/group-common.d.ts +10 -0
  74. package/lib/client/group-common.js +21 -0
  75. package/lib/client/group-common.js.map +1 -0
  76. package/lib/client/group-context.d.ts +20 -0
  77. package/lib/client/group-context.js +76 -0
  78. package/lib/client/group-context.js.map +1 -0
  79. package/lib/client/group-downloads.d.ts +10 -0
  80. package/lib/client/group-downloads.js +33 -0
  81. package/lib/client/group-downloads.js.map +1 -0
  82. package/lib/client/group-limits.d.ts +9 -0
  83. package/lib/client/group-limits.js +57 -0
  84. package/lib/client/group-limits.js.map +1 -0
  85. package/lib/client/group-prompts.d.ts +13 -0
  86. package/lib/client/group-prompts.js +136 -0
  87. package/lib/client/group-prompts.js.map +1 -0
  88. package/lib/client/index.d.ts +21 -1
  89. package/lib/client/index.js +10 -4
  90. package/lib/client/index.js.map +1 -1
  91. package/lib/client/locales-policy.d.ts +83 -0
  92. package/lib/client/locales-policy.js +46 -0
  93. package/lib/client/locales-policy.js.map +1 -0
  94. package/lib/client/locales-prompts.d.ts +57 -0
  95. package/lib/client/locales-prompts.js +41 -0
  96. package/lib/client/locales-prompts.js.map +1 -0
  97. package/lib/client/locales-ui.d.ts +223 -0
  98. package/lib/client/locales-ui.js +157 -0
  99. package/lib/client/locales-ui.js.map +1 -0
  100. package/lib/client/locales.d.ts +359 -67
  101. package/lib/client/locales.js +68 -22
  102. package/lib/client/locales.js.map +1 -1
  103. package/lib/client/policy-fields.d.ts +31 -0
  104. package/lib/client/policy-fields.js +66 -0
  105. package/lib/client/policy-fields.js.map +1 -0
  106. package/lib/client/policy-status-client.d.ts +91 -0
  107. package/lib/client/policy-status-client.js +64 -0
  108. package/lib/client/policy-status-client.js.map +1 -0
  109. package/lib/client/prompts-form.d.ts +33 -0
  110. package/lib/client/prompts-form.js +87 -0
  111. package/lib/client/prompts-form.js.map +1 -1
  112. package/lib/client/prompts-status-client.d.ts +21 -1
  113. package/lib/client/prompts-status-client.js +36 -4
  114. package/lib/client/prompts-status-client.js.map +1 -1
  115. package/lib/client/properties-form.d.ts +90 -0
  116. package/lib/client/properties-form.js +187 -0
  117. package/lib/client/properties-form.js.map +1 -0
  118. package/lib/client/property-docs.d.ts +18 -0
  119. package/lib/client/property-docs.js +78 -0
  120. package/lib/client/property-docs.js.map +1 -0
  121. package/lib/client/size-units.d.ts +12 -0
  122. package/lib/client/size-units.js +29 -0
  123. package/lib/client/size-units.js.map +1 -0
  124. package/lib/client/styles.d.ts +47 -31
  125. package/lib/client/styles.js +59 -20
  126. package/lib/client/styles.js.map +1 -1
  127. package/lib/client/ui-kit.d.ts +173 -0
  128. package/lib/client/ui-kit.js +112 -0
  129. package/lib/client/ui-kit.js.map +1 -0
  130. package/lib/client.js +5291 -834
  131. package/lib/client.js.map +1 -1
  132. package/lib/config-rules.d.ts +40 -0
  133. package/lib/config-rules.js +103 -0
  134. package/lib/config-rules.js.map +1 -0
  135. package/lib/config.d.ts +64 -2
  136. package/lib/config.js +106 -0
  137. package/lib/config.js.map +1 -1
  138. package/lib/context-options.d.ts +85 -0
  139. package/lib/context-options.js +206 -0
  140. package/lib/context-options.js.map +1 -0
  141. package/lib/deps.d.ts +42 -5
  142. package/lib/deps.js +219 -9
  143. package/lib/deps.js.map +1 -1
  144. package/lib/downloads.d.ts +79 -0
  145. package/lib/downloads.js +189 -0
  146. package/lib/downloads.js.map +1 -0
  147. package/lib/index.d.ts +3 -2
  148. package/lib/index.js +7 -3
  149. package/lib/index.js.map +1 -1
  150. package/lib/policy-keys.d.ts +39 -0
  151. package/lib/policy-keys.js +21 -0
  152. package/lib/policy-keys.js.map +1 -1
  153. package/lib/policy-overlay.d.ts +189 -0
  154. package/lib/policy-overlay.js +649 -0
  155. package/lib/policy-overlay.js.map +1 -0
  156. package/lib/prompts-yaml.d.ts +11 -0
  157. package/lib/prompts-yaml.js +121 -0
  158. package/lib/prompts-yaml.js.map +1 -0
  159. package/lib/prompts.d.ts +2 -0
  160. package/lib/prompts.js +7 -3
  161. package/lib/prompts.js.map +1 -1
  162. package/lib/system-browser.d.ts +61 -0
  163. package/lib/system-browser.js +109 -0
  164. package/lib/system-browser.js.map +1 -0
  165. package/lib/tools.js +9 -1
  166. package/lib/tools.js.map +1 -1
  167. package/lib/usage-policy.d.ts +3 -1
  168. package/lib/usage-policy.js +2 -0
  169. package/lib/usage-policy.js.map +1 -1
  170. package/package.json +47 -40
  171. package/scripts/check-docs-links.mjs +115 -0
  172. package/scripts/dump-prompts.mjs +13 -3
@@ -0,0 +1,14 @@
1
+ /**
2
+ * "Sign-in and permissions": which login profiles exist and where they may be used, which one is the default, whether an
3
+ * agent may put private-network names in them, and what agents have changed on top (the policy overlay).
4
+ *
5
+ * The profile list is a list: a row per profile, a dialog to edit one or add one. The dialog stages its result like any
6
+ * other control, and the page's Save writes it. The overlay's audit trail is behind "View change log" instead of being
7
+ * spread over the page.
8
+ * @module dsh-browser/client/group-access
9
+ */
10
+ import { type Card } from './field-rows.tsx';
11
+ export declare const ACCESS_FIELDS: readonly ["defaultAuthProfile", "allowPrivateHosts", "storageStatePath"];
12
+ export declare function AccessGroup({ card }: {
13
+ card: Card;
14
+ }): import("react").JSX.Element;
@@ -0,0 +1,97 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * "Sign-in and permissions": which login profiles exist and where they may be used, which one is the default, whether an
4
+ * agent may put private-network names in them, and what agents have changed on top (the policy overlay).
5
+ *
6
+ * The profile list is a list: a row per profile, a dialog to edit one or add one. The dialog stages its result like any
7
+ * other control, and the page's Save writes it. The overlay's audit trail is behind "View change log" instead of being
8
+ * spread over the page.
9
+ * @module dsh-browser/client/group-access
10
+ */
11
+ import { useEffect, useState } from 'react';
12
+ import { domainProblem, idProblem, isPrivateName, parseProfiles, profilePathFor } from "./auth-profiles-form.js";
13
+ import { controlId, fill, rowLabels, SwitchRow, TextRow, useField, useOverriddenCount } from "./field-rows.js";
14
+ import { styles as css } from "./styles.js";
15
+ import { Badge, Btn, Chips, Dialog, Fold, Group, Item, Row, Select, SubHead, TextInput, Toggle } from "./ui-kit.js";
16
+ export const ACCESS_FIELDS = ['defaultAuthProfile', 'allowPrivateHosts', 'storageStatePath'];
17
+ /** The staged profiles, and what the running plugin reports about them (the overlay's origin, the login-state directory). */
18
+ function useProfiles(card) {
19
+ const staged = card.useBrowserSettings(snapshot => snapshot.jsonFields.authProfiles?.text ?? '');
20
+ const disabled = card.useBrowserSettings(snapshot => !snapshot.writable);
21
+ const policy = card.usePolicyStatus(snapshot => snapshot);
22
+ const profiles = parseProfiles(staged);
23
+ return { profiles, ids: Object.keys(profiles).sort(), disabled, report: policy.report, policy };
24
+ }
25
+ function ProfileDialog(props) {
26
+ const { card, entry } = props;
27
+ const { t } = card;
28
+ const editing = props.id !== undefined;
29
+ const [id, setId] = useState(props.id ?? '');
30
+ const [domains, setDomains] = useState(entry?.allowedDomains ?? []);
31
+ const [persist, setPersist] = useState(entry?.persistState ?? false);
32
+ const [confirmRemove, setConfirmRemove] = useState(false);
33
+ const idRefused = editing ? undefined : id === '' ? undefined : idProblem(id, props.existing);
34
+ const path = entry?.storageStatePath ?? (props.authDir && id ? profilePathFor(props.authDir, id) : undefined);
35
+ const complete = (editing || (id !== '' && !idRefused)) && domains.length > 0 && path !== undefined;
36
+ const save = () => {
37
+ if (!complete || path === undefined)
38
+ return;
39
+ card.saveAuthProfile(editing ? props.id : id, { storageStatePath: path, allowedDomains: domains, persistState: persist });
40
+ props.onClose();
41
+ };
42
+ const privateDomains = domains.filter(isPrivateName);
43
+ return _jsxs(Dialog, { open: true, title: editing ? t('authEdit') : t('authNew'), closeLabel: t('close'), onClose: props.onClose, footer: _jsxs(_Fragment, { children: [editing ? (confirmRemove
44
+ ? _jsx(Btn, { danger: true, disabled: props.disabled, onClick: () => { card.removeAuthProfile(props.id); props.onClose(); }, data: "auth-remove-confirm", children: t('authRemoveConfirm') })
45
+ : _jsx(Btn, { danger: true, disabled: props.disabled, onClick: () => setConfirmRemove(true), data: "auth-remove", children: t('authRemove') })) : null, _jsx(Btn, { onClick: props.onClose, data: "auth-cancel", children: t('cancel') }), _jsx(Btn, { primary: true, disabled: !complete || props.disabled, onClick: save, data: "auth-save", children: t('done') })] }), children: [confirmRemove ? _jsx("p", { className: css.rowHint, role: "note", children: t('authRemoveNote') }) : null, _jsx(Row, { id: "dsb-auth-id", label: t('authId'), hint: t('authIdHint'), invalid: !!idRefused, problem: idRefused ? t(idRefused) : undefined, labels: rowLabels(t), wide: true, children: editing ? _jsx("code", { children: props.id }) : _jsx(TextInput, { id: "dsb-auth-id", value: id, invalid: !!idRefused, disabled: props.disabled, placeholder: "work-portal", code: true, onChange: setId }) }), _jsxs(Row, { id: "dsb-auth-domains", label: t('authDomains'), hint: t('authDomainsHint'), invalid: domains.length === 0, problem: t('authDomainsEmpty'), labels: rowLabels(t), wide: true, children: [_jsx(Chips, { id: "dsb-auth-domains", values: domains, disabled: props.disabled, placeholder: "example.com", addLabel: t('authDomains'), removeLabel: t('remove'), onChange: setDomains, check: value => { const refused = domainProblem(value); return refused ? t(refused) : undefined; } }), privateDomains.length ? _jsx("p", { className: css.rowHint, role: "note", children: t('authDomainPrivate') }) : null] }), _jsx(Row, { label: t('authPersist'), hint: t('authPersistHint'), help: t('authPersistHelp'), labels: rowLabels(t), inline: true, children: _jsx(Toggle, { label: t('authPersist'), checked: persist, disabled: props.disabled, onChange: setPersist }) }), _jsxs(Row, { label: t('authPath'), hint: t('authPathHint'), labels: rowLabels(t), wide: true, children: [_jsx("code", { "data-dsb-auth-path": true, className: "dsb-preview", children: path ?? t('authPathUnknown') }), _jsx("p", { className: css.rowHint, children: t('authPathRule') })] })] });
46
+ }
47
+ /** The login profiles: a row each, an edit dialog, and an add button. */
48
+ function ProfileList({ card }) {
49
+ const { t } = card;
50
+ const { profiles, ids, disabled, report, policy } = useProfiles(card);
51
+ const [dialog, setDialog] = useState();
52
+ const effective = new Map((report?.authProfiles ?? []).map(profile => [profile.id, profile]));
53
+ const overlayOnly = (report?.authProfiles ?? []).filter(profile => profile.origin === 'overlay-created' && !(profile.id in profiles));
54
+ const origin = (value) => value === 'overlay-changed' ? t('authOriginChanged') : value === 'overlay-created' ? t('authOriginCreated') : '';
55
+ const row = (id, entry, overlayCreated = false) => {
56
+ const live = effective.get(id);
57
+ const domains = live && live.origin !== 'baseline' ? live.allowedDomains : entry.allowedDomains;
58
+ const persistState = live && live.origin !== 'baseline' ? live.persistState : entry.persistState;
59
+ return _jsx(Item, { data: id, title: _jsx("code", { children: id }), badges: _jsxs(_Fragment, { children: [_jsx(Badge, { tone: "neutral", children: fill(t('authDomainsCount'), { n: domains.length }) }), _jsx(Badge, { tone: persistState ? 'info' : 'outline', children: persistState ? t('authPersistOn') : t('authPersistOff') }), live && live.origin !== 'baseline' ? _jsx(Badge, { tone: "warning", children: origin(live.origin) }) : null] }), meta: overlayCreated ? t('authOverlayOnly') : domains.join(', ') || '—', actions: _jsxs(_Fragment, { children: [live && live.origin !== 'baseline' ? _jsx("button", { type: "button", className: css.link, disabled: policy.busy, onClick: () => void card.clearPolicyOverlay('authProfile', id), children: t('authRevert') }) : null, overlayCreated ? null : _jsx(Btn, { disabled: disabled, onClick: () => setDialog({ id }), data: "auth-edit", children: t('edit') })] }) }, id);
60
+ };
61
+ return _jsxs(Row, { field: "authProfiles", label: t('authProfiles'), hint: t('authProfilesHint'), help: t('authProfilesHelp'), labels: rowLabels(t), wide: true, children: [_jsxs("div", { className: css.list, "data-dsb-profiles": true, children: [ids.length === 0 && overlayOnly.length === 0 ? _jsx("p", { className: css.empty, children: t('authProfilesEmpty') }) : null, ids.map(id => row(id, profiles[id])), overlayOnly.map(profile => row(profile.id, { storageStatePath: profile.storageStatePath ?? '', allowedDomains: profile.allowedDomains, persistState: profile.persistState }, true))] }), _jsx("div", { children: _jsx(Btn, { disabled: disabled, onClick: () => setDialog({}), data: "auth-add", children: t('authAdd') }) }), dialog ? _jsx(ProfileDialog, { card: card, id: dialog.id, entry: dialog.id ? profiles[dialog.id] : undefined, existing: ids, authDir: report?.authDir, disabled: disabled, onClose: () => setDialog(undefined) }, dialog.id ?? '\u0000new') : null] });
62
+ }
63
+ /** The default profile, picked from the list above (a stored name that is not in it is shown as missing). */
64
+ function DefaultProfileRow({ card }) {
65
+ const { t } = card;
66
+ const { ids } = useProfiles(card);
67
+ const field = useField(card, 'defaultAuthProfile');
68
+ const id = controlId('defaultAuthProfile');
69
+ const current = field.state.text;
70
+ const missing = current !== '' && !ids.includes(current);
71
+ return _jsx(Row, { field: "defaultAuthProfile", id: id, label: t('defaultAuthProfile'), hint: t('defaultAuthProfileHint'), overridden: field.state.overridden, invalid: field.state.invalid || missing, problem: missing ? `${current} ${t('defaultAuthProfileMissing')}` : t('invalid'), disabled: field.disabled, labels: rowLabels(t), onReset: field.reset, children: _jsx(Select, { id: id, value: current === '' ? '__none__' : current, muted: !field.state.overridden, invalid: missing, disabled: field.disabled, options: [{ value: '__none__', label: t('defaultAuthProfileNone') }, ...ids.map(entry => ({ value: entry, label: entry }))], onChange: value => field.edit(value === '__none__' ? '' : value) }) });
72
+ }
73
+ /** What agents changed on top of this page's settings: a status line, the change log in a dialog, and the way back to the baseline. */
74
+ function OverlayRows({ card }) {
75
+ const { t } = card;
76
+ const state = card.usePolicyStatus(snapshot => snapshot);
77
+ const saving = card.useBrowserSettings(snapshot => snapshot.saving);
78
+ const { refreshPolicyStatus } = card;
79
+ useEffect(() => { if (!saving)
80
+ refreshPolicyStatus(); }, [saving, refreshPolicyStatus]);
81
+ const [open, setOpen] = useState(false);
82
+ const report = state.report;
83
+ const origin = (value) => t({ baseline: 'policyOriginBaseline', 'overlay-changed': 'policyOriginChanged', 'overlay-created': 'policyOriginCreated' }[value]);
84
+ const direction = (value) => t({ tighten: 'policyTightened', loosen: 'policyLoosened', none: 'policyUnchanged' }[value]);
85
+ const usage = report ? Object.entries(report.usagePolicy).filter(([, entry]) => entry.overridden) : [];
86
+ return _jsxs("div", { "data-dsb-policy": true, children: [_jsxs(Row, { label: t('policyOverlay'), hint: t('policyOverlayHint'), help: t('policyOverlayHelp'), labels: rowLabels(t), wide: true, children: [_jsxs("div", { className: css.item, "data-dsb-policy-status": true, children: [_jsxs("div", { className: css.itemMain, children: [_jsx("div", { className: css.itemTitle, "data-dsh-browser-policy-revision": true, children: state.loading && !report ? t('promptsLoading') : state.failed ? t('policyUnavailable') : report?.overlayActive ? _jsx(Badge, { tone: "warning", children: fill(t('policyOverlayActive'), { n: report.revision }) }) : _jsx("span", { className: css.muted, children: t('policyOverlayIdle') }) }), report?.warning ? _jsx("div", { className: "dsb-bad", role: "alert", "data-dsh-browser-policy-warning": true, children: report.warning }) : null] }), _jsxs("div", { className: css.itemActions, children: [_jsx(Btn, { onClick: () => setOpen(true), data: "policy-audit", children: t('policyAuditOpen') }), _jsx(Btn, { disabled: state.busy || !report || (!report.overlayActive && !report.warning), onClick: () => void card.clearPolicyOverlay('all'), data: "policy-clear", children: t('policyClearAll') })] })] }), state.error ? _jsx("p", { className: "dsb-bad", role: "alert", children: state.error }) : null] }), _jsx(Dialog, { open: open, wide: true, title: t('policyAuditTitle'), closeLabel: t('close'), onClose: () => setOpen(false), footer: _jsx(Btn, { primary: true, onClick: () => setOpen(false), children: t('close') }), children: report ? _jsxs(_Fragment, { children: [_jsxs("p", { className: css.rowHint, "data-dsh-browser-policy-meta": true, children: [t('policyRevision'), " ", report.revision, report.updatedAt ? ` · ${new Date(report.updatedAt).toLocaleString()}` : '', " \u00B7 ", report.overlayActive ? t('policyActive') : t('policyInactive'), " \u00B7 ", t('policyAuthDirLabel'), ": ", _jsx("code", { children: report.authDir })] }), report.warning ? _jsx("p", { className: "dsb-bad", role: "alert", children: report.warning }) : null, _jsx(SubHead, { children: t('policyProfiles') }), report.authProfiles.length
87
+ ? _jsx("div", { className: css.list, "data-dsh-browser-policy-profiles": true, children: report.authProfiles.map(profile => _jsx(Item, { data: profile.id, title: _jsx("code", { children: profile.id }), badges: _jsx(Badge, { tone: profile.origin === 'baseline' ? 'outline' : 'warning', children: origin(profile.origin) }), meta: `${profile.allowedDomains.join(', ')} · persistState=${String(profile.persistState)}` }, profile.id)) })
88
+ : _jsx("p", { className: css.empty, children: t('policyNoProfiles') }), report.removedByOverlay.length ? _jsxs("p", { className: css.rowHint, "data-dsh-browser-policy-removed": true, children: [t('policyRemovedLabel'), ": ", report.removedByOverlay.join(', ')] }) : null, usage.length ? _jsxs(_Fragment, { children: [_jsx(SubHead, { children: t('policyUsageEffective') }), _jsx("div", { className: css.list, "data-dsh-browser-policy-usage": true, children: usage.map(([key, entry]) => _jsx(Item, { title: _jsxs("code", { children: [key, " = ", entry.value] }), meta: `${t('policyBaselineWas')} ${entry.baseline}` }, key)) })] }) : null, _jsx(SubHead, { children: t('policyAudit') }), report.audit.length
89
+ ? _jsx("div", { className: css.list, "data-dsh-browser-policy-audit": true, children: [...report.audit].reverse().map(entry => _jsx(Item, { title: _jsxs(_Fragment, { children: ["r", entry.revision, " \u00B7 ", entry.action, " ", _jsx(Badge, { tone: entry.direction === 'loosen' ? 'warning' : entry.direction === 'tighten' ? 'success' : 'outline', children: direction(entry.direction) })] }), meta: _jsxs(_Fragment, { children: [new Date(entry.at).toLocaleString(), " \u00B7 ", entry.source, entry.session ? ` ${entry.session}` : '', " \u00B7 ", entry.reason, entry.changes.length ? ` — ${entry.changes.join('; ')}` : ''] }) }, entry.revision)) })
90
+ : _jsx("p", { className: css.empty, children: t('policyNoAudit') }), _jsx("p", { className: css.rowHint, children: t('policyUnrestrictedNote') })] }) : _jsx("p", { className: css.empty, children: state.failed ? t('policyUnavailable') : t('promptsLoading') }) })] });
91
+ }
92
+ export function AccessGroup({ card }) {
93
+ const { t } = card;
94
+ const count = useOverriddenCount(card, [...ACCESS_FIELDS, 'authProfiles']);
95
+ return _jsxs(Group, { id: "access", title: t('groupAccess'), summary: t('groupAccessSub'), badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(ProfileList, { card: card }), _jsx(DefaultProfileRow, { card: card }), _jsx(SwitchRow, { card: card, name: "allowPrivateHosts", risk: t('riskNote') }), _jsx(OverlayRows, { card: card }), _jsx(Fold, { id: "access-legacy", title: t('browserAdvanced'), children: _jsx(TextRow, { card: card, name: "storageStatePath", code: true }) })] });
96
+ }
97
+ //# sourceMappingURL=group-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-access.js","sourceRoot":"","sources":["../../src/client/group-access.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * "Advanced: text mode": the default parameters as one commented `key = value` text, for people who prefer to read and
3
+ * edit them that way. It is a view of the controls above, not a second place the settings live: editing the text stages
4
+ * the same fields, and editing a control prints the text again. Every key has a comment in front of it (what it is for,
5
+ * the allowed values, the default, the risk); comment lines are ignored when the text is read.
6
+ * @module dsh-browser/client/group-advanced
7
+ */
8
+ import { type Card } from './field-rows.tsx';
9
+ export declare function AdvancedGroup({ card }: {
10
+ card: Card;
11
+ }): import("react").JSX.Element;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Advanced: text mode": the default parameters as one commented `key = value` text, for people who prefer to read and
4
+ * edit them that way. It is a view of the controls above, not a second place the settings live: editing the text stages
5
+ * the same fields, and editing a control prints the text again. Every key has a comment in front of it (what it is for,
6
+ * the allowed values, the default, the risk); comment lines are ignored when the text is read.
7
+ * @module dsh-browser/client/group-advanced
8
+ */
9
+ import { useEffect, useState } from 'react';
10
+ import { CONFIG_FILE_ONLY_FIELDS } from "./form.js";
11
+ import { rowLabels } from "./field-rows.js";
12
+ import { styles as css } from "./styles.js";
13
+ import { Btn, Group, Row } from "./ui-kit.js";
14
+ /** A public field the card has no form for, on purpose: its name, what it is for, and where to edit it. */
15
+ function ConfigFileNote({ card, name }) {
16
+ const { t } = card;
17
+ return _jsxs("div", { className: css.field, "data-dsh-browser-config-note": name, children: [_jsx("div", { className: css.fieldHead, children: _jsx("span", { className: css.label, children: t(name) }) }), _jsxs("p", { className: css.hint, children: [t(`${name}Hint`), " ", t('configFileOnly')] })] });
18
+ }
19
+ export function AdvancedGroup({ card }) {
20
+ const { t } = card;
21
+ const view = card.useBrowserSettings(snapshot => snapshot.properties);
22
+ const disabled = card.useBrowserSettings(snapshot => !snapshot.writable);
23
+ const [copied, setCopied] = useState(false);
24
+ const lang = t('lang');
25
+ const { setPropertyLanguage } = card;
26
+ useEffect(() => { setPropertyLanguage(lang); }, [lang, setPropertyLanguage]);
27
+ const errors = view.issues.filter(issue => issue.level === 'error');
28
+ const warnings = view.issues.filter(issue => issue.level === 'warning');
29
+ const id = 'plugin-config-dsh-browser-properties';
30
+ return _jsx(Group, { id: "advanced", title: t('groupAdvanced'), summary: t('groupAdvancedSub'), children: _jsxs("div", { className: css.stack, "data-dsh-browser-properties": true, children: [_jsxs(Row, { id: id, label: t('propertiesEditor'), hint: t('advancedHint'), labels: rowLabels(t), wide: true, children: [_jsx("textarea", { id: id, className: `${css.input} ${css.textarea} ${css.code} ${errors.length ? css.invalidInput : ''}`, rows: 26, spellCheck: false, "data-dsb-mirror": true, disabled: disabled, "aria-invalid": errors.length > 0 || undefined, value: view.text, onChange: event => { setCopied(false); card.editProperties(event.currentTarget.value); } }), errors.length ? _jsx("ul", { className: css.failed, role: "alert", "data-dsh-browser-properties-errors": true, children: errors.map((issue, index) => _jsx("li", { children: issue.message }, index)) }) : null, warnings.length ? _jsx("ul", { className: css.hint, "data-dsh-browser-properties-warnings": true, children: warnings.map((issue, index) => _jsx("li", { children: issue.message }, index)) }) : null, _jsx("p", { className: css.hint, children: t('propertiesFormat') }), _jsx("div", { children: _jsx(Btn, { onClick: () => { void navigator.clipboard?.writeText(view.text).then(() => setCopied(true)).catch(() => undefined); }, data: "properties-copy", children: copied ? t('advancedCopied') : t('advancedCopy') }) })] }), _jsx("p", { className: css.notice, role: "note", children: t('advancedNote') }), CONFIG_FILE_ONLY_FIELDS.map(name => _jsx(ConfigFileNote, { card: card, name: name }, name))] }) });
31
+ }
32
+ //# sourceMappingURL=group-advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-advanced.js","sourceRoot":"","sources":["../../src/client/group-advanced.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * "Automation assets": reusable recipes and userscripts. The group is a list (a suggestion row per candidate the plugin
3
+ * wants summarized, a row per asset) and ONE editor dialog; it does not lay the editor out beside the list any more.
4
+ *
5
+ * The editing logic is unchanged and lives in `automation-assets-client.ts`: every way out of unsaved edits (closing the
6
+ * dialog, creating, forking, converting, refreshing) goes through a request/confirm pair, which this dialog shows as a
7
+ * confirmation inside itself. Closing the dialog is a request to select nothing.
8
+ * @module dsh-browser/client/group-assets
9
+ */
10
+ import { type Card } from './field-rows.tsx';
11
+ export declare function AssetsGroup({ card }: {
12
+ card: Card;
13
+ }): import("react").JSX.Element;
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Automation assets": reusable recipes and userscripts. The group is a list (a suggestion row per candidate the plugin
4
+ * wants summarized, a row per asset) and ONE editor dialog; it does not lay the editor out beside the list any more.
5
+ *
6
+ * The editing logic is unchanged and lives in `automation-assets-client.ts`: every way out of unsaved edits (closing the
7
+ * dialog, creating, forking, converting, refreshing) goes through a request/confirm pair, which this dialog shows as a
8
+ * confirmation inside itself. Closing the dialog is a request to select nothing.
9
+ * @module dsh-browser/client/group-assets
10
+ */
11
+ import { useEffect } from 'react';
12
+ import { inputSetShortfall } from "../activation-rules.js";
13
+ import { credentialView, identicalOutputPairs, inputSetLines, isDirty, shortHash } from "./asset-editor.js";
14
+ import { fill } from "./field-rows.js";
15
+ import { styles as css } from "./styles.js";
16
+ import { Badge, Btn, Dialog, Group, Item } from "./ui-kit.js";
17
+ const STATUS_TONE = { active: 'success', draft: 'info', archived: 'outline' };
18
+ export function AssetsGroup({ card }) {
19
+ const { t } = card;
20
+ const state = card.useAutomationAssets(snapshot => snapshot);
21
+ const { editor, selected } = state;
22
+ const dirty = isDirty(editor.text, editor.baseline);
23
+ const credentials = credentialView(selected);
24
+ const draft = selected?.status === 'draft';
25
+ // Leaving the page with edits in the textarea would lose them silently.
26
+ useEffect(() => {
27
+ if (!dirty)
28
+ return undefined;
29
+ const guard = (event) => { event.preventDefault(); event.returnValue = ''; };
30
+ window.addEventListener('beforeunload', guard);
31
+ return () => window.removeEventListener('beforeunload', guard);
32
+ }, [dirty]);
33
+ const candidates = state.snapshot?.candidates.filter(candidate => candidate.suggestedAt && !candidate.dismissedAt) ?? [];
34
+ const assets = state.snapshot?.assets ?? [];
35
+ const noticeLabel = (kind) => t({ json: 'assetNoticeJson', backend: 'assetNoticeBackend', validation: 'assetNoticeValidation', refused: 'assetNoticeRefused' }[kind]);
36
+ // Unsaved edits, or a brand-new draft that was never saved: the button saves what is on screen, then tests exactly that revision.
37
+ const saveFirst = dirty || !selected;
38
+ const latest = credentials.latest;
39
+ const sets = latest?.revision === selected?.revision ? inputSetLines(latest) : [];
40
+ const suspect = latest && sets.length ? identicalOutputPairs(latest) : [];
41
+ const required = state.snapshot?.policy.minInputSetsForActivation ?? 1;
42
+ // A passed test that is too narrow: activation would be refused, and this says why before the click.
43
+ const shortfall = selected && draft && credentials.vouches ? inputSetShortfall(selected, credentials.current, required) : undefined;
44
+ const shortfallText = shortfall ? fill(t('assetNeedsInputSets'), { required: shortfall.required, covered: shortfall.covered }) : '';
45
+ const convertible = !!selected && selected.kind === 'recipe' && (selected.schemaVersion ?? 1) === 1;
46
+ const editing = !!selected || editor.text !== '';
47
+ const open = (id) => card.requestSelectAutomationAsset(id);
48
+ return _jsxs(Group, { id: "assets", title: t('groupAssets'), summary: t('groupAssetsSub'), badges: assets.length ? _jsx(Badge, { tone: "neutral", children: assets.length }) : null, children: [_jsxs("div", { className: css.stack, "data-dsh-browser-assets": true, children: [_jsx("p", { className: css.rowHint, children: t('assetLibraryHint') }), state.loading ? _jsx("p", { className: css.notice, children: t('assetLoading') }) : null, state.failed ? _jsx("p", { className: css.failed, role: "alert", children: state.error || t('assetFailed') }) : null, candidates.length ? _jsx("div", { className: css.list, "data-dsb-asset-candidates": true, children: candidates.map(candidate => _jsx(Item, { data: candidate.id, title: candidate.title, meta: `${candidate.domain} · ${candidate.successfulRuns} ${t('assetRuns')} · ${candidate.distinctSessions} ${t('assetSessions')}`, badges: _jsx(Badge, { tone: "info", children: t('assetSuggestions') }), actions: _jsxs(_Fragment, { children: [_jsx(Btn, { disabled: state.busy, onClick: () => card.dismissAutomationCandidate(candidate.id), children: t('assetDismiss') }), _jsx(Btn, { primary: true, disabled: state.busy, onClick: () => card.summarizeAutomationCandidate(candidate.id), children: t('assetSummarize') })] }) }, candidate.id)) }) : null, _jsxs("div", { className: css.assetToolbar, children: [_jsxs("div", { children: [_jsx("strong", { children: t('assetScripts') }), _jsx("p", { className: css.hint, children: t('assetScriptsHint') })] }), _jsxs("div", { className: css.actions, children: [_jsx(Btn, { onClick: () => card.requestNewAutomationAsset('recipe'), data: "asset-new-recipe", children: t('assetNewRecipe') }), _jsx(Btn, { onClick: () => card.requestNewAutomationAsset('userscript'), data: "asset-new-script", children: t('assetNewScript') }), _jsx(Btn, { onClick: card.requestRefreshAutomationAssets, data: "asset-refresh", children: t('assetRefresh') })] })] }), _jsx("div", { className: css.list, "data-dsb-asset-list": true, children: assets.length ? assets.map(asset => _jsx(Item, { data: asset.id, title: _jsx("button", { type: "button", className: css.link, onClick: () => open(asset.id), children: asset.name }), badges: _jsxs(_Fragment, { children: [_jsx(Badge, { tone: "neutral", children: asset.kind }), _jsx(Badge, { tone: STATUS_TONE[asset.status] ?? 'outline', children: asset.status })] }), meta: `r${asset.revision} · ${asset.testStatus}`, actions: _jsx(Btn, { onClick: () => open(asset.id), data: "asset-open", children: t('edit') }) }, asset.id)) : _jsx("p", { className: css.empty, children: t('assetEmpty') }) })] }), _jsxs(Dialog, { open: editing, wide: true, title: selected?.name ?? t('assetNewTitle'), closeLabel: t('close'), onClose: () => card.requestSelectAutomationAsset(undefined), footer: _jsx(Btn, { onClick: () => card.requestSelectAutomationAsset(undefined), data: "asset-close", children: t('close') }), children: [editor.confirm ? _jsxs("div", { className: css.failed, role: "alertdialog", "aria-label": t('assetLeaveTitle'), "data-dsh-browser-leave": true, children: [_jsx("p", { children: t('assetLeaveTitle') }), _jsxs("div", { className: css.actions, children: [_jsx(Btn, { onClick: card.cancelLeaveAutomationAsset, children: t('assetLeaveKeep') }), _jsx(Btn, { primary: true, onClick: card.confirmLeaveAutomationAsset, children: t('assetLeaveConfirm') })] })] }) : null, _jsxs("div", { className: css.assetEditor, children: [_jsxs("label", { className: css.label, htmlFor: "dsh-browser-asset-editor", children: [t('assetEditor'), dirty ? _jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { "data-dsh-browser-dirty": true, children: t('assetEditorDirtyBadge') })] }) : null] }), selected ? _jsxs("div", { className: css.hint, "data-dsh-browser-version": true, children: [_jsxs("p", { children: [t('assetRevision'), " r", selected.revision, " \u00B7 ", t('assetHash'), " ", _jsx("code", { children: shortHash(selected.contentHash) }), " \u00B7 ", selected.status, selected.sourceAssetId ? _jsxs(_Fragment, { children: [" \u00B7 ", t('assetDerivedFrom'), " ", selected.sourceAssetId.slice(0, 8), " r", selected.sourceRevision] }) : null] }), credentials.latest ? _jsxs("p", { "data-dsh-browser-credential": true, children: [t('assetLastTest'), ": r", credentials.latest.revision, " \u00B7 ", _jsx("code", { children: shortHash(credentials.latest.contentHash) }), " \u00B7 ", credentials.latest.passed ? t('assetPassed') : t('assetNotPassed'), " (", credentials.latest.executionStatus, "/", credentials.latest.validationStatus, ", ", credentials.latest.evidenceLevel, credentials.latest.legacy ? ', legacy' : '', ") \u00B7 ", new Date(credentials.latest.testedAt).toLocaleString(), " \u00B7 ", t('assetInputsDigest'), " ", credentials.latest.inputsDigest, credentials.latest.revision !== selected.revision ? _jsxs(_Fragment, { children: [" \u00B7 ", t('assetStaleTest')] }) : null] }) : null, selected.status === 'draft' && !credentials.vouches ? _jsx("p", { children: t('assetNoTest') }) : null, sets.length ? _jsxs("div", { "data-dsh-browser-sets": true, children: [_jsxs("p", { children: [t('assetInputSets'), latest?.plannedSets && latest.plannedSets > sets.length ? ` (${t('assetSetsRan')} ${sets.length}/${latest.plannedSets})` : ''] }), _jsx("ul", { children: sets.map(line => _jsxs("li", { "data-dsh-browser-set": line.set, children: [t('assetInputSet'), " ", line.set, " ", t('assetInputSetUnit'), " \u00B7 ", line.passed ? t('assetPassed') : t('assetNotPassed'), " (", line.status, ") \u00B7 ", t('assetInputsDigest'), " ", _jsx("code", { children: line.inputsDigest })] }, line.set)) })] }) : null, suspect.length ? _jsx("p", { className: css.failed, role: "note", "data-dsh-browser-suspect": true, children: fill(t('assetSuspect'), { pairs: suspect.map(pair => pair.join('/')).join('; ') }) }) : null, selected.pendingDisambiguation?.length ? _jsx("p", { "data-dsh-browser-pending": true, children: fill(t('assetPending'), { n: selected.pendingDisambiguation.length }) }) : null] }) : null, editor.converted ? _jsxs("div", { className: css.notice, role: "status", "data-dsh-browser-converted": true, children: [_jsx("p", { children: fill(t('assetConverted'), { name: editor.converted.sourceName }) }), _jsx("ul", { children: editor.converted.notes.map((note, index) => _jsx("li", { children: note }, index)) })] }) : null, _jsx("textarea", { id: "dsh-browser-asset-editor", "aria-label": t('assetEditor'), className: `${css.input} ${css.textarea} ${css.code} ${editor.notice?.kind === 'json' ? css.invalidInput : ''}`, rows: 18, value: editor.text, spellCheck: false, disabled: state.busy, placeholder: t('assetEditorHint'), onChange: event => card.editAutomationAsset(event.currentTarget.value) }), editor.notice ? _jsxs("p", { className: css.failed, role: "alert", "data-dsh-browser-notice": editor.notice.kind, children: [noticeLabel(editor.notice.kind), editor.notice.message, editor.notice.code ? ` [${editor.notice.code}]` : ''] }) : _jsx("p", { className: css.hint, children: dirty ? t('assetUnsaved') : t('assetSourceBoundary') }), draft || !selected ? _jsxs("div", { className: css.assetTestForm, children: [_jsx("input", { className: css.input, value: editor.testUrl, "aria-label": t('assetTestUrl'), placeholder: t('assetTestUrl'), onChange: event => card.setAssetTestUrl(event.currentTarget.value) }), _jsx("textarea", { className: `${css.input} ${css.textarea} ${css.code}`, rows: 3, value: editor.testInputs, spellCheck: false, "aria-label": t('assetTestInputs'), onChange: event => card.setAssetTestInputs(event.currentTarget.value) })] }) : null, shortfall ? _jsx("p", { className: css.hint, role: "note", "data-dsh-browser-activation-hint": true, children: shortfallText }) : null, _jsxs("div", { className: css.actions, children: [selected ? _jsx(Btn, { disabled: state.busy || dirty, onClick: () => card.validateAutomationAsset(selected.id), children: t('assetValidate') }) : null, draft || !selected ? _jsx(Btn, { disabled: state.busy || !editor.testUrl.trim() || !editor.text, onClick: () => void card.saveAndTestAutomationAsset(), children: saveFirst ? t('assetSaveAndTest') : t('assetTest') }) : null, draft ? _jsxs(Btn, { disabled: state.busy || dirty || !credentials.vouches || !!shortfall, title: dirty ? t('assetActivateNeedsSave') : shortfallText || undefined, onClick: () => void card.activateAutomationAsset(), children: [t('assetActivate'), " r", selected.revision] }) : null, convertible ? _jsx(Btn, { disabled: state.busy, onClick: () => card.requestConvertAutomationAsset(selected.id), children: t('assetConvert') }) : null, selected && selected.status !== 'draft' ? _jsx(Btn, { disabled: state.busy, onClick: () => card.requestForkAutomationAsset(selected.id), children: t('assetFork') }) : null, selected && selected.status !== 'archived' ? _jsx(Btn, { disabled: state.busy, onClick: () => card.setAutomationAssetStatus(selected.id, 'archived'), children: t('assetArchive') }) : null, _jsx(Btn, { primary: true, disabled: state.busy || !editor.text || selected?.status === 'active', onClick: () => void card.saveEditedAutomationAsset(), children: t('assetSaveDraft') })] })] })] })] });
49
+ }
50
+ //# sourceMappingURL=group-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-assets.js","sourceRoot":"","sources":["../../src/client/group-assets.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * "Browser": which engine runs and how. Four everyday choices up front; the rest folded under "Advanced".
3
+ * @module dsh-browser/client/group-browser
4
+ */
5
+ import { type Card } from './field-rows.tsx';
6
+ export declare const BROWSER_FIELDS: readonly ["browserRuntime", "channel", "headless", "autoInstall", "executablePath", "cdpPort", "maxSessions", "args", "snapshotDir", "verbose"];
7
+ export declare function BrowserGroup({ card }: {
8
+ card: Card;
9
+ }): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Browser": which engine runs and how. Four everyday choices up front; the rest folded under "Advanced".
4
+ * @module dsh-browser/client/group-browser
5
+ */
6
+ import { controlId, fill, NumberRow, SelectRow, SwitchRow, TextRow, rowLabels, useField, useOverriddenCount } from "./field-rows.js";
7
+ import { Badge, Chips, Fold, Group, Row } from "./ui-kit.js";
8
+ export const BROWSER_FIELDS = ['browserRuntime', 'channel', 'headless', 'autoInstall', 'executablePath', 'cdpPort', 'maxSessions', 'args', 'snapshotDir', 'verbose'];
9
+ /** The Chromium launch arguments as chips; the staged text is a JSON array (or empty). */
10
+ function ArgsRow({ card }) {
11
+ const { t } = card;
12
+ const field = useField(card, 'args');
13
+ let values = [];
14
+ try {
15
+ const parsed = field.state.text.trim() === '' ? [] : JSON.parse(field.state.text);
16
+ if (Array.isArray(parsed))
17
+ values = parsed.filter((entry) => typeof entry === 'string');
18
+ }
19
+ catch { /* shown as invalid by the row */ }
20
+ return _jsx(Row, { field: "args", id: controlId('args'), label: t('args'), hint: t('argsHint'), help: t('argsHelp'), overridden: field.state.overridden, invalid: field.state.invalid, problem: t('invalid'), disabled: field.disabled, labels: rowLabels(t), onReset: field.reset, children: _jsx(Chips, { id: controlId('args'), values: values, disabled: field.disabled, placeholder: t('argsPlaceholder'), addLabel: t('args'), removeLabel: t('remove'), onChange: next => field.edit(next.length ? JSON.stringify(next) : '') }) });
21
+ }
22
+ export function BrowserGroup({ card }) {
23
+ const { t } = card;
24
+ const count = useOverriddenCount(card, BROWSER_FIELDS);
25
+ return _jsxs(Group, { id: "browser", title: t('groupBrowser'), summary: t('groupBrowserSub'), badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(SelectRow, { card: card, name: "browserRuntime", options: [{ value: 'playwright', label: 'playwright' }, { value: 'patchright', label: 'patchright' }] }), _jsx(SelectRow, { card: card, name: "channel", options: [{ value: 'chromium', label: 'chromium' }, { value: 'chrome', label: 'chrome' }, { value: 'msedge', label: 'msedge' }] }), _jsx(SwitchRow, { card: card, name: "headless" }), _jsx(SwitchRow, { card: card, name: "autoInstall" }), _jsxs(Fold, { id: "browser-advanced", title: t('browserAdvanced'), hint: t('browserAdvancedHint'), children: [_jsx(TextRow, { card: card, name: "executablePath", code: true }), _jsx(NumberRow, { card: card, name: "cdpPort" }), _jsx(NumberRow, { card: card, name: "maxSessions" }), _jsx(ArgsRow, { card: card }), _jsx(TextRow, { card: card, name: "snapshotDir", code: true }), _jsx(SwitchRow, { card: card, name: "verbose" })] })] });
26
+ }
27
+ //# sourceMappingURL=group-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-browser.js","sourceRoot":"","sources":["../../src/client/group-browser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * "Common": the four settings nearly everyone touches. Open by default; every other group starts closed.
3
+ * @module dsh-browser/client/group-common
4
+ */
5
+ import { type Card } from './field-rows.tsx';
6
+ /** The names of the common group's fields, in order. */
7
+ export declare const COMMON_FIELDS: readonly ["enabled", "automationMode", "toolSurface", "opencliEnabled"];
8
+ export declare function CommonGroup({ card }: {
9
+ card: Card;
10
+ }): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Common": the four settings nearly everyone touches. Open by default; every other group starts closed.
4
+ * @module dsh-browser/client/group-common
5
+ */
6
+ import { fill, SelectRow, SwitchRow, useOverriddenCount } from "./field-rows.js";
7
+ import { Badge, Group } from "./ui-kit.js";
8
+ /** The names of the common group's fields, in order. */
9
+ export const COMMON_FIELDS = ['enabled', 'automationMode', 'toolSurface', 'opencliEnabled'];
10
+ const MODE_LINES = { 'read-only': 'modeReadOnlyLine', standard: 'modeStandardLine', autonomous: 'modeAutonomousLine', unrestricted: 'modeUnrestrictedLine' };
11
+ export function CommonGroup({ card }) {
12
+ const { t } = card;
13
+ const count = useOverriddenCount(card, COMMON_FIELDS);
14
+ return _jsxs(Group, { id: "common", title: t('groupCommon'), summary: t('groupCommonSub'), defaultOpen: true, badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(SwitchRow, { card: card, name: "enabled" }), _jsx(SelectRow, { card: card, name: "automationMode", hint: text => t(MODE_LINES[text] ?? 'automationModeHint'), options: [
15
+ { value: 'read-only', label: t('modeReadOnly') },
16
+ { value: 'standard', label: t('modeStandard') },
17
+ { value: 'autonomous', label: t('modeAutonomous') },
18
+ { value: 'unrestricted', label: t('modeUnrestricted') },
19
+ ] }), _jsx(SelectRow, { card: card, name: "toolSurface", options: [{ value: 'indexed', label: t('surfaceIndexed') }, { value: 'flat', label: t('surfaceFlat') }] }), _jsx(SwitchRow, { card: card, name: "opencliEnabled" })] });
20
+ }
21
+ //# sourceMappingURL=group-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-common.js","sourceRoot":"","sources":["../../src/client/group-common.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAa,MAAM,iBAAkB,CAAA;AAC5F,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAc,CAAA;AAE3C,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,CAAU,CAAA;AAEpG,MAAM,UAAU,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,sBAAsB,EAAW,CAAA;AAErK,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAkB;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAA;IAClB,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IACrD,OAAO,MAAC,KAAK,IAAC,EAAE,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,WAAW,QAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,IAAI,EAAC,MAAM,YAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAS,CAAC,CAAC,CAAC,IAAI,aACvL,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,SAAS,GAAG,EACxC,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,gBAAgB,EAC1C,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAA+B,CAAC,IAAI,oBAAoB,CAAC,EACpF,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE;oBAChD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE;oBAC/C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE;oBACnD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE;iBACxD,GAAI,EACP,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,aAAa,EAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,GAAI,EACrJ,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,gBAAgB,GAAG,IACzC,CAAA;AACV,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * "Page environment": what every new browser context starts from (viewport, user agent, language, time zone, proxy).
3
+ * The agent copies these for a task and changes only what the task needs, so they are plain defaults here.
4
+ *
5
+ * Conditional rows (the custom size, the proxy address) exist only while they apply; the settings are still in the
6
+ * configuration when hidden, which is what lets the render test count every public field exactly once.
7
+ * @module dsh-browser/client/group-context
8
+ */
9
+ import { type Card } from './field-rows.tsx';
10
+ export declare const CONTEXT_FIELDS: readonly ["viewportMode", "viewportWidth", "viewportHeight", "userAgent", "locale", "timezoneId", "proxyServer", "proxyBypass"];
11
+ /** Common user agents; the browser's own is the empty one. Version numbers are examples: a site that checks them needs the custom entry. */
12
+ export declare const USER_AGENT_PRESETS: {
13
+ readonly chromeMac: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36";
14
+ readonly chromeWin: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36";
15
+ readonly iphone: "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1";
16
+ };
17
+ export declare const LOCALE_SUGGESTIONS: readonly ["en-US", "en-GB", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "de-DE", "fr-FR", "es-ES", "pt-BR", "ru-RU"];
18
+ export declare function ContextGroup({ card }: {
19
+ card: Card;
20
+ }): import("react").JSX.Element;
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * "Page environment": what every new browser context starts from (viewport, user agent, language, time zone, proxy).
4
+ * The agent copies these for a task and changes only what the task needs, so they are plain defaults here.
5
+ *
6
+ * Conditional rows (the custom size, the proxy address) exist only while they apply; the settings are still in the
7
+ * configuration when hidden, which is what lets the render test count every public field exactly once.
8
+ * @module dsh-browser/client/group-context
9
+ */
10
+ import { useState } from 'react';
11
+ import { controlId, fill, NumberRow, rowLabels, SelectRow, TextRow, useField, useOverriddenCount } from "./field-rows.js";
12
+ import { Badge, Chips, Group, Row, Select, TextInput, Toggle } from "./ui-kit.js";
13
+ export const CONTEXT_FIELDS = ['viewportMode', 'viewportWidth', 'viewportHeight', 'userAgent', 'locale', 'timezoneId', 'proxyServer', 'proxyBypass'];
14
+ /** Common user agents; the browser's own is the empty one. Version numbers are examples: a site that checks them needs the custom entry. */
15
+ export const USER_AGENT_PRESETS = {
16
+ chromeMac: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
17
+ chromeWin: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
18
+ iphone: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1',
19
+ };
20
+ export const LOCALE_SUGGESTIONS = ['en-US', 'en-GB', 'zh-CN', 'zh-TW', 'ja-JP', 'ko-KR', 'de-DE', 'fr-FR', 'es-ES', 'pt-BR', 'ru-RU'];
21
+ const TIMEZONE_FALLBACK = ['UTC', 'Asia/Shanghai', 'Asia/Tokyo', 'Asia/Singapore', 'Europe/London', 'Europe/Berlin', 'America/New_York', 'America/Los_Angeles'];
22
+ const CUSTOM = '__custom__';
23
+ function timeZones() {
24
+ try {
25
+ const list = Intl.supportedValuesOf?.('timeZone');
26
+ if (list && list.length)
27
+ return list;
28
+ }
29
+ catch { /* use the short list */ }
30
+ return TIMEZONE_FALLBACK;
31
+ }
32
+ /** A preset drop-down over the user agent, with a free input when none of the presets is wanted. */
33
+ function UserAgentRow({ card }) {
34
+ const { t } = card;
35
+ const field = useField(card, 'userAgent');
36
+ const [forceCustom, setForceCustom] = useState(false);
37
+ const presets = [['', t('uaDefault')], [USER_AGENT_PRESETS.chromeMac, t('uaChromeMac')], [USER_AGENT_PRESETS.chromeWin, t('uaChromeWin')], [USER_AGENT_PRESETS.iphone, t('uaIphone')]];
38
+ const text = field.state.text;
39
+ const known = presets.some(([value]) => value === text);
40
+ const custom = forceCustom || !known;
41
+ const selected = custom ? CUSTOM : text;
42
+ const id = controlId('userAgent');
43
+ return _jsxs(Row, { field: "userAgent", id: id, label: t('userAgent'), hint: t('userAgentHint'), help: t('userAgentHelp'), overridden: field.state.overridden, invalid: field.state.invalid, problem: t('invalid'), disabled: field.disabled, labels: rowLabels(t), onReset: () => { setForceCustom(false); field.reset(); }, children: [_jsx(Select, { id: id, value: selected, muted: !field.state.overridden, invalid: field.state.invalid, disabled: field.disabled, options: [...presets.map(([value, label]) => ({ value: value || '__default__', label })), { value: CUSTOM, label: t('uaCustom') }], onChange: value => {
44
+ if (value === CUSTOM) {
45
+ setForceCustom(true);
46
+ return;
47
+ }
48
+ setForceCustom(false);
49
+ field.edit(value === '__default__' ? '' : value);
50
+ } }), custom ? _jsx(TextInput, { ariaLabel: t('userAgent'), value: text, placeholder: t('uaCustomPlaceholder'), disabled: field.disabled, invalid: field.state.invalid, code: true, onChange: field.edit }) : null] });
51
+ }
52
+ /** The proxy switch decides whether the address and bypass rows exist; turning it off clears both settings. */
53
+ function ProxyRows({ card }) {
54
+ const { t } = card;
55
+ const server = useField(card, 'proxyServer');
56
+ const bypass = useField(card, 'proxyBypass');
57
+ const [enabledByHand, setEnabledByHand] = useState(false);
58
+ const on = enabledByHand || server.state.text !== '';
59
+ const hosts = bypass.state.text.split(',').map(entry => entry.trim()).filter(Boolean);
60
+ return _jsxs(_Fragment, { children: [_jsx(Row, { label: t('proxyEnabled'), hint: t('proxyEnabledHint'), help: t('proxyEnabledHelp'), labels: rowLabels(t), inline: true, children: _jsx(Toggle, { label: t('proxyEnabled'), checked: on, disabled: server.disabled, onChange: next => {
61
+ setEnabledByHand(next);
62
+ if (!next) {
63
+ server.edit('');
64
+ bypass.edit('');
65
+ }
66
+ } }) }), on ? _jsxs(_Fragment, { children: [_jsx(TextRow, { card: card, name: "proxyServer", placeholder: "http://127.0.0.1:7890", code: true }), _jsx(Row, { field: "proxyBypass", id: controlId('proxyBypass'), label: t('proxyBypass'), hint: t('proxyBypassHint'), help: t('proxyBypassHelp'), overridden: bypass.state.overridden, invalid: bypass.state.invalid, problem: t('invalid'), disabled: bypass.disabled, labels: rowLabels(t), onReset: bypass.reset, children: _jsx(Chips, { id: controlId('proxyBypass'), values: hosts, disabled: bypass.disabled, placeholder: t('proxyBypassPlaceholder'), addLabel: t('proxyBypass'), removeLabel: t('remove'), onChange: next => bypass.edit(next.join(',')) }) })] }) : null] });
67
+ }
68
+ export function ContextGroup({ card }) {
69
+ const { t } = card;
70
+ const count = useOverriddenCount(card, CONTEXT_FIELDS);
71
+ const mode = card.useBrowserSettings(snapshot => snapshot.fields.viewportMode.text);
72
+ return _jsxs(Group, { id: "context", title: t('groupContext'), summary: t('groupContextSub'), badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(SelectRow, { card: card, name: "viewportMode", options: [
73
+ { value: 'window', label: t('viewportWindow') }, { value: '720p', label: t('viewport720') }, { value: '1080p', label: t('viewport1080') }, { value: 'custom', label: t('viewportCustom') },
74
+ ] }), mode === 'custom' ? _jsxs(_Fragment, { children: [_jsx(NumberRow, { card: card, name: "viewportWidth", unit: "px", placeholder: "1280" }), _jsx(NumberRow, { card: card, name: "viewportHeight", unit: "px", placeholder: "720" })] }) : null, _jsx(UserAgentRow, { card: card }), _jsx(TextRow, { card: card, name: "locale", listId: "dsb-locales", placeholder: "en-US" }), _jsx("datalist", { id: "dsb-locales", children: LOCALE_SUGGESTIONS.map(value => _jsx("option", { value: value }, value)) }), _jsx(TextRow, { card: card, name: "timezoneId", listId: "dsb-timezones", placeholder: "Asia/Shanghai" }), _jsx("datalist", { id: "dsb-timezones", children: timeZones().map(value => _jsx("option", { value: value }, value)) }), _jsx(ProxyRows, { card: card })] });
75
+ }
76
+ //# sourceMappingURL=group-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-context.js","sourceRoot":"","sources":["../../src/client/group-context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * "Downloads": where files land and how large one may be. The size is stored in bytes; the control shows the largest
3
+ * unit that divides it exactly, so 104857600 reads as "100 MiB".
4
+ * @module dsh-browser/client/group-downloads
5
+ */
6
+ import { type Card } from './field-rows.tsx';
7
+ export declare const DOWNLOAD_FIELDS: readonly ["downloadDir", "downloadMaxBytes"];
8
+ export declare function DownloadsGroup({ card }: {
9
+ card: Card;
10
+ }): import("react").JSX.Element;