@yadsh/dsh-prompt-firewall 0.1.1 → 0.1.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.
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useRef, useState, useSyncExternalStore, } from 'react';
2
+ import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';
3
3
  import promptFirewallRemote from '@yadsh/dsh-prompt-firewall/remote';
4
+ import { bindSettingsExternalStore } from './settings-store.js';
4
5
  import { styles } from './styles.js';
5
6
  const SETTINGS_NAMESPACE = 'prompt-firewall';
6
7
  const REFRESH_INTERVAL_MS = 3_000;
@@ -15,16 +16,18 @@ function displayError(error) {
15
16
  return error;
16
17
  return 'Could not load Prompt Inspector data.';
17
18
  }
18
- function Shield() {
19
- return (_jsx("span", { className: "pf-shield", "aria-hidden": "true", children: _jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", children: [_jsx("path", { d: "M12 3 19 6v5c0 4.8-2.8 8.2-7 10-4.2-1.8-7-5.2-7-10V6l7-3Z" }), _jsx("path", { d: "m9 12 2 2 4-4" })] }) }));
19
+ function ChevronDown() {
20
+ return (_jsx("svg", { className: "dsh-plugin-card__chevron", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "m3.5 5.25 3.5 3.5 3.5-3.5", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" }) }));
20
21
  }
21
22
  function Toggle(props) {
22
23
  return (_jsxs("label", { className: "pf-toggle-row", children: [_jsxs("span", { className: "pf-toggle-copy", children: [_jsx("strong", { children: props.label }), _jsx("span", { children: props.hint })] }), _jsx("input", { className: "pf-toggle", type: "checkbox", checked: props.checked, disabled: props.disabled, onChange: event => { props.onChange(event.currentTarget.checked); } })] }));
23
24
  }
24
25
  function PromptFirewallCard({ scope, inspect, setSectionPolicy }) {
25
- const settings = useSyncExternalStore(scope.subscribe, scope.getSnapshot, scope.getSnapshot);
26
+ const settingsStore = useMemo(() => bindSettingsExternalStore(scope), [scope]);
27
+ const settings = useSyncExternalStore(settingsStore.subscribe, settingsStore.getSnapshot, settingsStore.getSnapshot);
26
28
  const config = settings.value;
27
29
  const writable = settings.status === 'ready' && settings.writable;
30
+ const [open, setOpen] = useState(false);
28
31
  const [inspector, setInspector] = useState(null);
29
32
  const [error, setError] = useState(null);
30
33
  const [refreshing, setRefreshing] = useState(false);
@@ -113,7 +116,9 @@ function PromptFirewallCard({ scope, inspect, setSectionPolicy }) {
113
116
  const effectiveMode = inspector?.config.mode ?? config?.mode ?? 'blocklist';
114
117
  const configuredMode = config?.mode
115
118
  ?? (config?.preset === 'strict' ? 'allowlist' : config?.preset === 'audit-only' ? 'audit' : 'blocklist');
116
- return (_jsxs("article", { className: "pf-card", children: [_jsxs("header", { className: "pf-head", children: [_jsxs("div", { className: "pf-title", children: [_jsx(Shield, {}), _jsxs("div", { children: [_jsx("h2", { children: "Prompt Firewall" }), _jsx("p", { children: "Prompt hygiene, section policy, and request-level observability." })] })] }), _jsxs("span", { className: `pf-badge${enabled ? '' : ' off'}`, children: [_jsx("i", { className: "pf-dot" }), enabled ? 'Enabled' : 'Disabled'] })] }), _jsxs("div", { className: "pf-body", children: [settings.status === 'unavailable' && _jsx("div", { className: "pf-error", children: "Settings are unavailable for this connection." }), error !== null && _jsx("div", { className: "pf-error", children: error }), _jsxs("section", { className: "pf-section", children: [_jsxs("div", { className: "pf-section-title", children: [_jsx("h3", { children: "Policy" }), _jsx("span", { className: "pf-muted", children: "Changes apply live" })] }), _jsxs("div", { className: "pf-grid", children: [_jsx(Toggle, { checked: enabled, disabled: !writable, label: "Firewall enabled", hint: "Keep auditing available when policy is off.", onChange: value => { setPath(['enabled'], value); } }), _jsx(Toggle, { checked: config?.protectCoreSections ?? true, disabled: !writable, label: "Protect core sections", hint: "Prevents ordinary rules from removing Harness internals.", onChange: value => { setPath(['protectCoreSections'], value); } }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Mode" }), _jsxs("select", { className: "pf-control", value: configuredMode, disabled: !writable, onChange: event => { setPath(['mode'], event.currentTarget.value); }, children: [_jsx("option", { value: "off", children: "Off" }), _jsx("option", { value: "audit", children: "Audit only" }), _jsx("option", { value: "blocklist", children: "Blocklist" }), _jsx("option", { value: "allowlist", children: "Allowlist" })] })] }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Preset" }), _jsxs("select", { className: "pf-control", value: config?.preset ?? '', disabled: !writable, onChange: event => {
119
+ if (settings.status === 'unavailable')
120
+ return null;
121
+ return (_jsxs("li", { className: `dsh-plugin-card${open ? ' dsh-plugin-card--open' : ''}`, children: [_jsxs("button", { type: "button", className: "dsh-plugin-card__header", "aria-expanded": open, "aria-label": `${open ? 'Hide' : 'Show'} settings: Prompt Firewall`, onClick: () => { setOpen(!open); }, children: [_jsxs("span", { className: "dsh-plugin-card__head-text", children: [_jsx("span", { className: "dsh-plugin-card__name", children: "Prompt Firewall" }), _jsx("span", { className: "dsh-plugin-card__description", children: "Prompt hygiene, section policy, and request-level observability." })] }), _jsx("span", { className: "dsh-plugin-card__badge", children: enabled ? 'Enabled' : 'Disabled' }), _jsx(ChevronDown, {})] }), open ? _jsxs("div", { className: "dsh-plugin-card__body pf-body", children: [error !== null && _jsx("div", { className: "pf-error", children: error }), _jsxs("section", { className: "pf-section", children: [_jsxs("div", { className: "pf-section-title", children: [_jsx("h3", { children: "Policy" }), _jsx("span", { className: "pf-muted", children: "Changes apply live" })] }), _jsxs("div", { className: "pf-grid", children: [_jsx(Toggle, { checked: enabled, disabled: !writable, label: "Firewall enabled", hint: "Keep auditing available when policy is off.", onChange: value => { setPath(['enabled'], value); } }), _jsx(Toggle, { checked: config?.protectCoreSections ?? true, disabled: !writable, label: "Protect core sections", hint: "Prevents ordinary rules from removing Harness internals.", onChange: value => { setPath(['protectCoreSections'], value); } }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Mode" }), _jsxs("select", { className: "pf-control", value: configuredMode, disabled: !writable, onChange: event => { setPath(['mode'], event.currentTarget.value); }, children: [_jsx("option", { value: "off", children: "Off" }), _jsx("option", { value: "audit", children: "Audit only" }), _jsx("option", { value: "blocklist", children: "Blocklist" }), _jsx("option", { value: "allowlist", children: "Allowlist" })] })] }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Preset" }), _jsxs("select", { className: "pf-control", value: config?.preset ?? '', disabled: !writable, onChange: event => {
117
122
  const value = event.currentTarget.value;
118
123
  if (value === '')
119
124
  void scope.unset('preset');
@@ -124,32 +129,41 @@ function PromptFirewallCard({ scope, inspect, setSectionPolicy }) {
124
129
  setRuleAction(action);
125
130
  if (action === 'protect')
126
131
  setRuleKind('exact');
127
- }, children: [_jsx("option", { value: "block", children: "Block" }), _jsx("option", { value: "allow", children: "Allow" }), _jsx("option", { value: "protect", children: "Protect" })] }), _jsx("button", { className: "pf-btn primary", type: "submit", disabled: !writable || rule.trim().length === 0, children: "Add rule" })] }), _jsxs("div", { className: "pf-rules", children: [explicitRules.length === 0 && _jsx("div", { className: "pf-empty", children: "No explicit rules yet." }), explicitRules.map(item => _jsxs("div", { className: "pf-rule", children: [_jsx("code", { title: item.value, children: item.value }), _jsx("span", { className: "pf-pill pf-kind", children: item.kind }), _jsx("span", { className: `pf-pill ${item.action}`, children: item.action }), _jsx("button", { className: "pf-btn link danger", disabled: !writable, onClick: () => { setPath([item.field], list(config, item.field).filter(value => value !== item.value)); }, children: "Remove" })] }, `${item.field}:${item.value}`))] })] }), _jsxs("details", { className: "pf-advanced", children: [_jsx("summary", { children: "Audit & metrics" }), _jsxs("div", { className: "pf-advanced-content pf-grid", children: [_jsx(Toggle, { checked: config?.audit?.enabled ?? true, disabled: !writable, label: "Audit history", hint: "Keep recent assemblies in Host memory.", onChange: value => { setPath(['audit', 'enabled'], value); } }), _jsx(Toggle, { checked: config?.audit?.includePreview ?? false, disabled: !writable, label: "Section preview", hint: "Expose only the configured prefix in Inspector.", onChange: value => { setPath(['audit', 'includePreview'], value); } }), _jsx(Toggle, { checked: config?.audit?.logBlocked ?? true, disabled: !writable, label: "Log blocked sections", hint: "Names and sizes only unless preview is enabled.", onChange: value => { setPath(['audit', 'logBlocked'], value); } }), _jsx(Toggle, { checked: config?.audit?.logAllowed ?? false, disabled: !writable, label: "Log allowed sections", hint: "Useful for initial policy discovery.", onChange: value => { setPath(['audit', 'logAllowed'], value); } }), _jsx(Toggle, { checked: config?.audit?.highlightNewSections ?? true, disabled: !writable, label: "Highlight new plugin sections", hint: "Informational only; never blocks automatically.", onChange: value => { setPath(['audit', 'highlightNewSections'], value); } }), _jsx(Toggle, { checked: config?.metrics?.enabled ?? true, disabled: !writable, label: "Aggregate metrics", hint: "No arbitrary section-name labels.", onChange: value => { setPath(['metrics', 'enabled'], value); } }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Preview characters" }), _jsx("input", { className: "pf-control", type: "number", min: "0", step: "1", value: config?.audit?.previewChars ?? 160, disabled: !writable, onChange: event => { setPath(['audit', 'previewChars'], Number(event.currentTarget.value)); } })] }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "History size" }), _jsx("input", { className: "pf-control", type: "number", min: "0", step: "1", value: config?.audit?.historySize ?? 100, disabled: !writable, onChange: event => { setPath(['audit', 'historySize'], Number(event.currentTarget.value)); } })] })] })] }), _jsxs("section", { className: "pf-section", children: [_jsxs("div", { className: "pf-section-title", children: [_jsx("h3", { children: "Prompt Inspector" }), _jsx("span", { className: "pf-muted", children: "Updates every 3 seconds" })] }), _jsx("div", { className: "pf-table-wrap", children: last === null ? _jsx("div", { className: "pf-empty", children: "No audited prompt assembly yet." }) : _jsxs("table", { className: "pf-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Section" }), _jsx("th", { children: "Size" }), _jsx("th", { children: "Decision" }), _jsx("th", { children: "Reason" }), _jsx("th", { children: "Policy" })] }) }), _jsx("tbody", { children: last.sections.map((section, index) => _jsxs("tr", { children: [_jsxs("td", { children: [_jsxs("div", { className: "pf-section-name", children: [_jsx("span", { children: section.name }), section.isNew && _jsx("span", { className: "pf-new", children: "NEW" }), section.suspicious && _jsx("span", { className: "pf-warn", children: "POSSIBLE ANNOUNCEMENT" })] }), section.preview !== undefined && _jsx("div", { className: "pf-preview", children: section.preview })] }), _jsxs("td", { children: ["~", section.estimatedTokens, " t", _jsx("br", {}), _jsxs("span", { className: "pf-muted", children: [section.chars, " chars"] })] }), _jsx("td", { children: _jsx("span", { className: `pf-pill ${section.decision === 'blocked' ? 'block' : section.decision === 'protected' ? 'protect' : 'allow'}`, children: section.decision }) }), _jsx("td", { children: section.reason }), _jsx("td", { children: _jsxs("div", { className: "pf-actions", children: [_jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'allow'); }, children: "Allow" }), _jsx("button", { className: "pf-btn link danger", disabled: !writable, onClick: () => { void setPolicy(section.name, 'block'); }, children: "Block" }), _jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'protect'); }, children: "Protect" }), _jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'clear'); }, children: "Clear" })] }) })] }, `${section.name}:${index}`)) })] }) }), _jsx("p", { className: "pf-footer-note", children: "Token counts are estimates. Prompt Firewall is a hygiene and observability layer, not a security boundary." })] })] })] }));
132
+ }, children: [_jsx("option", { value: "block", children: "Block" }), _jsx("option", { value: "allow", children: "Allow" }), _jsx("option", { value: "protect", children: "Protect" })] }), _jsx("button", { className: "pf-btn primary", type: "submit", disabled: !writable || rule.trim().length === 0, children: "Add rule" })] }), _jsxs("div", { className: "pf-rules", children: [explicitRules.length === 0 && _jsx("div", { className: "pf-empty", children: "No explicit rules yet." }), explicitRules.map(item => _jsxs("div", { className: "pf-rule", children: [_jsx("code", { title: item.value, children: item.value }), _jsx("span", { className: "pf-pill pf-kind", children: item.kind }), _jsx("span", { className: `pf-pill ${item.action}`, children: item.action }), _jsx("button", { className: "pf-btn link danger", disabled: !writable, onClick: () => { setPath([item.field], list(config, item.field).filter(value => value !== item.value)); }, children: "Remove" })] }, `${item.field}:${item.value}`))] })] }), _jsxs("details", { className: "pf-advanced", children: [_jsx("summary", { children: "Audit & metrics" }), _jsxs("div", { className: "pf-advanced-content pf-grid", children: [_jsx(Toggle, { checked: config?.audit?.enabled ?? true, disabled: !writable, label: "Audit history", hint: "Keep recent assemblies in Host memory.", onChange: value => { setPath(['audit', 'enabled'], value); } }), _jsx(Toggle, { checked: config?.audit?.includePreview ?? false, disabled: !writable, label: "Section preview", hint: "Expose only the configured prefix in Inspector.", onChange: value => { setPath(['audit', 'includePreview'], value); } }), _jsx(Toggle, { checked: config?.audit?.logBlocked ?? true, disabled: !writable, label: "Log blocked sections", hint: "Names and sizes only unless preview is enabled.", onChange: value => { setPath(['audit', 'logBlocked'], value); } }), _jsx(Toggle, { checked: config?.audit?.logAllowed ?? false, disabled: !writable, label: "Log allowed sections", hint: "Useful for initial policy discovery.", onChange: value => { setPath(['audit', 'logAllowed'], value); } }), _jsx(Toggle, { checked: config?.audit?.highlightNewSections ?? true, disabled: !writable, label: "Highlight new plugin sections", hint: "Informational only; never blocks automatically.", onChange: value => { setPath(['audit', 'highlightNewSections'], value); } }), _jsx(Toggle, { checked: config?.metrics?.enabled ?? true, disabled: !writable, label: "Aggregate metrics", hint: "No arbitrary section-name labels.", onChange: value => { setPath(['metrics', 'enabled'], value); } }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "Preview characters" }), _jsx("input", { className: "pf-control", type: "number", min: "0", step: "1", value: config?.audit?.previewChars ?? 160, disabled: !writable, onChange: event => { setPath(['audit', 'previewChars'], Number(event.currentTarget.value)); } })] }), _jsxs("label", { className: "pf-field", children: [_jsx("span", { children: "History size" }), _jsx("input", { className: "pf-control", type: "number", min: "0", step: "1", value: config?.audit?.historySize ?? 100, disabled: !writable, onChange: event => { setPath(['audit', 'historySize'], Number(event.currentTarget.value)); } })] })] })] }), _jsxs("section", { className: "pf-section", children: [_jsxs("div", { className: "pf-section-title", children: [_jsx("h3", { children: "Prompt Inspector" }), _jsx("span", { className: "pf-muted", children: "Updates every 3 seconds" })] }), _jsx("div", { className: "pf-table-wrap", children: last === null ? _jsx("div", { className: "pf-empty", children: "No audited prompt assembly yet." }) : _jsxs("table", { className: "pf-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Section" }), _jsx("th", { children: "Size" }), _jsx("th", { children: "Decision" }), _jsx("th", { children: "Reason" }), _jsx("th", { children: "Policy" })] }) }), _jsx("tbody", { children: last.sections.map((section, index) => _jsxs("tr", { children: [_jsxs("td", { children: [_jsxs("div", { className: "pf-section-name", children: [_jsx("span", { children: section.name }), section.isNew && _jsx("span", { className: "pf-new", children: "NEW" }), section.suspicious && _jsx("span", { className: "pf-warn", children: "POSSIBLE ANNOUNCEMENT" })] }), section.preview !== undefined && _jsx("div", { className: "pf-preview", children: section.preview })] }), _jsxs("td", { children: ["~", section.estimatedTokens, " t", _jsx("br", {}), _jsxs("span", { className: "pf-muted", children: [section.chars, " chars"] })] }), _jsx("td", { children: _jsx("span", { className: `pf-pill ${section.decision === 'blocked' ? 'block' : section.decision === 'protected' ? 'protect' : 'allow'}`, children: section.decision }) }), _jsx("td", { children: section.reason }), _jsx("td", { children: _jsxs("div", { className: "pf-actions", children: [_jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'allow'); }, children: "Allow" }), _jsx("button", { className: "pf-btn link danger", disabled: !writable, onClick: () => { void setPolicy(section.name, 'block'); }, children: "Block" }), _jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'protect'); }, children: "Protect" }), _jsx("button", { className: "pf-btn link", disabled: !writable, onClick: () => { void setPolicy(section.name, 'clear'); }, children: "Clear" })] }) })] }, `${section.name}:${index}`)) })] }) }), _jsx("p", { className: "pf-footer-note", children: "Token counts are estimates. Prompt Firewall is a hygiene and observability layer, not a security boundary." })] })] }) : null] }));
128
133
  }
129
134
  export const inject = ['slots', 'settingsScope', 'remote'];
130
135
  /** Mount the generated Remote contribution and register the native Settings card. */
131
136
  export async function apply(ctx) {
132
137
  const remote = ctx.remote;
133
138
  const disposeRemote = await remote.$mount(promptFirewallRemote);
134
- const scope = ctx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE });
135
- const face = {
136
- scope,
137
- inspect: () => remote.promptFirewall.inspect(),
138
- setSectionPolicy: (section, policy, revision) => (remote.promptFirewall.setSectionPolicy(section, policy, revision)),
139
- };
140
- const style = document.createElement('style');
141
- style.dataset.plugin = 'dsh-prompt-firewall';
142
- style.textContent = styles;
143
- document.head.appendChild(style);
144
- const disposeSlot = ctx.slots.inject('settings.plugin.item', () => ctx.slots.register({
145
- name: 'settings.plugin.item',
146
- key: SETTINGS_NAMESPACE,
147
- inject: () => face,
148
- }, PromptFirewallCard));
149
- return async () => {
150
- disposeSlot();
151
- style.remove();
139
+ try {
140
+ await ctx.inject(['remote.promptFirewall'], (remoteCtx) => {
141
+ const injectedRemote = remoteCtx.remote;
142
+ const scope = remoteCtx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE });
143
+ const face = {
144
+ scope,
145
+ inspect: () => injectedRemote.promptFirewall.inspect(),
146
+ setSectionPolicy: (section, policy, revision) => (injectedRemote.promptFirewall.setSectionPolicy(section, policy, revision)),
147
+ };
148
+ const style = document.createElement('style');
149
+ style.dataset.plugin = 'dsh-prompt-firewall';
150
+ style.textContent = styles;
151
+ document.head.appendChild(style);
152
+ const disposeSlot = remoteCtx.slots.inject('settings.plugin.item', () => remoteCtx.slots.register({
153
+ name: 'settings.plugin.item',
154
+ key: SETTINGS_NAMESPACE,
155
+ inject: () => face,
156
+ }, PromptFirewallCard));
157
+ return () => {
158
+ disposeSlot();
159
+ style.remove();
160
+ };
161
+ });
162
+ }
163
+ catch (cause) {
152
164
  await disposeRemote();
153
- };
165
+ throw cause;
166
+ }
167
+ return disposeRemote;
154
168
  }
155
169
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * React invokes external-store callbacks as plain functions. SettingsScope's
3
+ * methods depend on their receiver, so forward calls through stable wrappers.
4
+ */
5
+ export function bindSettingsExternalStore(scope) {
6
+ return {
7
+ subscribe: listener => scope.subscribe(listener),
8
+ getSnapshot: () => scope.getSnapshot(),
9
+ };
10
+ }
11
+ //# sourceMappingURL=settings-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-store.js","sourceRoot":"","sources":["../../src/client/settings-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAY,KAGpD;IAIC,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QAChD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;KACvC,CAAA;AACH,CAAC"}
@@ -1,7 +1,29 @@
1
1
  export const styles = `
2
- .pf-card{border:1px solid var(--border,#2a2f3a);border-radius:14px;background:var(--card,#151821);color:var(--foreground,#eef1f6);overflow:hidden;box-shadow:0 10px 32px rgba(0,0,0,.12)}
3
- .pf-card *{box-sizing:border-box}.pf-head{display:flex;justify-content:space-between;gap:20px;padding:20px 22px;border-bottom:1px solid var(--border,#2a2f3a);background:linear-gradient(135deg,rgba(75,114,255,.10),transparent 55%)}
4
- .pf-title{display:flex;gap:13px;align-items:flex-start}.pf-shield{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:rgba(75,114,255,.15);color:#7c9cff;flex:0 0 auto}.pf-shield svg{width:22px;height:22px}.pf-title h2{font-size:17px;line-height:1.25;margin:1px 0 5px}.pf-title p,.pf-muted{color:var(--muted-foreground,#9da5b4);font-size:12px;margin:0;line-height:1.5}.pf-badge{display:inline-flex;align-items:center;gap:6px;height:25px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:rgba(45,190,125,.13);color:#51d69b}.pf-badge.off{background:rgba(148,154,166,.13);color:#aeb4c1}.pf-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.pf-body{padding:20px 22px;display:grid;gap:18px}.pf-section{display:grid;gap:12px}.pf-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.pf-section-title h3{font-size:13px;margin:0}.pf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.pf-field{display:grid;gap:6px}.pf-field>span{font-size:11px;color:var(--muted-foreground,#9da5b4);font-weight:600}.pf-control{width:100%;height:36px;border:1px solid var(--border,#343946);border-radius:8px;background:var(--background,#10131a);color:inherit;padding:0 10px;font:inherit;font-size:12px;outline:none}.pf-control:focus{border-color:#6687ff;box-shadow:0 0 0 3px rgba(75,114,255,.12)}.pf-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border,#2a2f3a);border-radius:9px}.pf-toggle-copy{display:grid;gap:2px}.pf-toggle-copy strong{font-size:12px}.pf-toggle-copy span{font-size:10px;color:var(--muted-foreground,#9da5b4)}.pf-toggle{appearance:none;width:34px;height:19px;border-radius:999px;background:#4a505c;position:relative;cursor:pointer;transition:.18s;flex:none}.pf-toggle:after{content:'';position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:white;transition:.18s}.pf-toggle:checked{background:#5578f5}.pf-toggle:checked:after{transform:translateX(15px)}.pf-toggle:disabled,.pf-control:disabled,.pf-btn:disabled{cursor:not-allowed;opacity:.45}.pf-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pf-stat{padding:12px;border-radius:9px;background:var(--muted,#1c202a);border:1px solid var(--border,#292e39)}.pf-stat b{display:block;font-size:17px;margin-bottom:3px}.pf-stat span{font-size:10px;color:var(--muted-foreground,#9da5b4)}.pf-editor{display:grid;grid-template-columns:1.2fr .8fr .8fr auto;gap:8px}.pf-btn{height:34px;border:1px solid var(--border,#343946);border-radius:8px;background:var(--muted,#20242e);color:inherit;padding:0 12px;font:inherit;font-size:11px;font-weight:650;cursor:pointer;white-space:nowrap}.pf-btn:hover:not(:disabled){border-color:#677080;background:#272c38}.pf-btn.primary{border-color:#5578f5;background:#5578f5;color:white}.pf-btn.danger{color:#ff8791}.pf-btn.link{height:27px;padding:0 8px;background:transparent}.pf-rules{display:grid;gap:6px}.pf-rule{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px auto;gap:9px;align-items:center;padding:7px 9px;border:1px solid var(--border,#292e39);border-radius:8px;font-size:11px}.pf-rule code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cbd5ff}.pf-pill{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground,#9da5b4)}.pf-pill.block{color:#ff8791}.pf-pill.allow{color:#62dba2}.pf-pill.protect{color:#7ca1ff}.pf-advanced{border:1px solid var(--border,#292e39);border-radius:10px;padding:0 12px}.pf-advanced summary{cursor:pointer;padding:11px 0;font-size:12px;font-weight:650}.pf-advanced-content{padding:2px 0 13px;display:grid;gap:10px}.pf-table-wrap{overflow:auto;border:1px solid var(--border,#292e39);border-radius:10px}.pf-table{width:100%;border-collapse:collapse;font-size:11px;min-width:720px}.pf-table th{text-align:left;color:var(--muted-foreground,#9da5b4);font-weight:600;background:var(--muted,#1c202a);padding:8px 10px}.pf-table td{padding:9px 10px;border-top:1px solid var(--border,#292e39);vertical-align:top}.pf-section-name{display:flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pf-new,.pf-warn{font-family:inherit;font-size:8px;font-weight:800;border-radius:4px;padding:2px 4px;background:rgba(85,120,245,.16);color:#88a5ff}.pf-warn{background:rgba(255,177,75,.14);color:#ffbe68}.pf-actions{display:flex;gap:4px}.pf-preview{margin-top:5px;max-width:360px;white-space:pre-wrap;color:var(--muted-foreground,#9da5b4);font-size:10px;line-height:1.4}.pf-empty{padding:22px;text-align:center;color:var(--muted-foreground,#9da5b4);font-size:12px}.pf-error{padding:9px 11px;border-radius:8px;background:rgba(235,76,88,.12);color:#ff9098;font-size:11px}.pf-footer-note{font-size:10px;color:var(--muted-foreground,#9da5b4)}
5
- @media(max-width:720px){.pf-head,.pf-body{padding-left:15px;padding-right:15px}.pf-grid{grid-template-columns:1fr}.pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-editor{grid-template-columns:1fr 1fr}.pf-editor input{grid-column:1/-1}.pf-rule{grid-template-columns:minmax(0,1fr) 58px auto}.pf-rule .pf-kind{display:none}}
2
+ .dsh-plugin-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}
3
+ .dsh-plugin-card:hover{border-color:var(--dsw-alias-label-dimmed)}
4
+ .dsh-plugin-card--open{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}
5
+ .dsh-plugin-card__header{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}
6
+ .dsh-plugin-card__header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}
7
+ .dsh-plugin-card__head-text{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}
8
+ .dsh-plugin-card__name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}
9
+ .dsh-plugin-card__description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}
10
+ .dsh-plugin-card__badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}
11
+ .dsh-plugin-card__chevron{width:14px;height:14px;color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}
12
+ .dsh-plugin-card--open .dsh-plugin-card__chevron{transform:rotate(180deg)}
13
+ .dsh-plugin-card__body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}
14
+ .pf-body,.pf-body *{box-sizing:border-box}
15
+ .pf-body{padding-top:16px;display:grid;gap:18px;color:var(--dsw-alias-label-primary)}
16
+ .pf-section{display:grid;gap:12px}.pf-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.pf-section-title h3{font-size:13px;margin:0}.pf-muted{color:var(--dsw-alias-label-tertiary);font-size:12px;margin:0;line-height:1.5}
17
+ .pf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.pf-field{display:grid;gap:6px}.pf-field>span{font-size:11px;color:var(--dsw-alias-label-secondary);font-weight:600}
18
+ .pf-control{width:100%;height:36px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);padding:0 10px;font:inherit;font-size:12px;outline:none}.pf-control:focus-visible{border-color:var(--dsw-alias-brand-primary);outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-1px}
19
+ .pf-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:9px}.pf-toggle-copy{display:grid;gap:2px}.pf-toggle-copy strong{font-size:12px;font-weight:500}.pf-toggle-copy span{font-size:10px;color:var(--dsw-alias-label-tertiary)}
20
+ .pf-toggle{appearance:none;width:34px;height:19px;border-radius:999px;background:var(--dsw-alias-label-dimmed);position:relative;cursor:pointer;transition:.18s;flex:none}.pf-toggle:after{content:'';position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:var(--dsw-alias-bg-layer-3);transition:.18s}.pf-toggle:checked{background:var(--dsw-alias-brand-primary)}.pf-toggle:checked:after{transform:translateX(15px)}
21
+ .pf-toggle:disabled,.pf-control:disabled,.pf-btn:disabled{cursor:default;opacity:.45}
22
+ .pf-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pf-stat{padding:12px;border-radius:9px;background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2)}.pf-stat b{display:block;font-size:17px;margin-bottom:3px}.pf-stat span{font-size:10px;color:var(--dsw-alias-label-tertiary)}
23
+ .pf-editor{display:grid;grid-template-columns:1.2fr .8fr .8fr auto;gap:8px}.pf-btn{height:34px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);padding:0 12px;font:inherit;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.pf-btn:hover:not(:disabled){border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.pf-btn.primary{border-color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-brand-primary);color:var(--dsw-alias-bg-layer-3)}.pf-btn.danger{color:var(--dsw-alias-label-error)}.pf-btn.link{height:27px;padding:0 8px;background:transparent}
24
+ .pf-rules{display:grid;gap:6px}.pf-rule{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px auto;gap:9px;align-items:center;padding:7px 9px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;font-size:11px}.pf-rule code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary)}.pf-pill{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--dsw-alias-label-tertiary)}.pf-pill.block{color:var(--dsw-alias-label-error)}.pf-pill.allow{color:var(--dsw-alias-state-business-primary)}.pf-pill.protect{color:var(--dsw-alias-brand-primary)}
25
+ .pf-advanced{border:1px solid var(--dsw-alias-border-l2);border-radius:10px;padding:0 12px}.pf-advanced summary{cursor:pointer;padding:11px 0;font-size:12px;font-weight:600}.pf-advanced-content{padding:2px 0 13px;display:grid;gap:10px}
26
+ .pf-table-wrap{overflow:auto;border:1px solid var(--dsw-alias-border-l2);border-radius:10px}.pf-table{width:100%;border-collapse:collapse;font-size:11px;min-width:720px}.pf-table th{text-align:left;color:var(--dsw-alias-label-tertiary);font-weight:600;background:var(--dsw-alias-bg-module-platform);padding:8px 10px}.pf-table td{padding:9px 10px;border-top:1px solid var(--dsw-alias-border-l2);vertical-align:top}.pf-section-name{display:flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pf-new,.pf-warn{font-family:inherit;font-size:8px;font-weight:800;border-radius:4px;padding:2px 4px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-brand-primary)}.pf-warn{color:var(--dsw-alias-label-secondary)}.pf-actions{display:flex;gap:4px}.pf-preview{margin-top:5px;max-width:360px;white-space:pre-wrap;color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:1.4}.pf-empty{padding:22px;text-align:center;color:var(--dsw-alias-label-tertiary);font-size:12px}.pf-error{padding:9px 11px;border-radius:8px;background:var(--dsw-alias-bg-error);color:var(--dsw-alias-label-error);font-size:11px}.pf-footer-note{font-size:10px;color:var(--dsw-alias-label-tertiary)}
27
+ @media(max-width:720px){.pf-grid{grid-template-columns:1fr}.pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-editor{grid-template-columns:1fr 1fr}.pf-editor input{grid-column:1/-1}.pf-rule{grid-template-columns:minmax(0,1fr) 58px auto}.pf-rule .pf-kind{display:none}}
6
28
  `;
7
29
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAW;;;;;CAK7B,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B7B,CAAA"}
package/lib/client.js CHANGED
@@ -5124,7 +5124,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5124
5124
  },
5125
5125
  sourceLocation: {
5126
5126
  "file": "packages/dsh-prompt-firewall/src/index.ts",
5127
- "line": 120,
5127
+ "line": 140,
5128
5128
  "column": 3
5129
5129
  }
5130
5130
  }, {
@@ -5173,18 +5173,52 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5173
5173
  },
5174
5174
  sourceLocation: {
5175
5175
  "file": "packages/dsh-prompt-firewall/src/index.ts",
5176
- "line": 134,
5176
+ "line": 154,
5177
5177
  "column": 9
5178
5178
  }
5179
5179
  }]
5180
5180
  };
5181
5181
  //#endregion
5182
+ //#region src/client/settings-store.ts
5183
+ /**
5184
+ * React invokes external-store callbacks as plain functions. SettingsScope's
5185
+ * methods depend on their receiver, so forward calls through stable wrappers.
5186
+ */
5187
+ function bindSettingsExternalStore(scope) {
5188
+ return {
5189
+ subscribe: (listener) => scope.subscribe(listener),
5190
+ getSnapshot: () => scope.getSnapshot()
5191
+ };
5192
+ }
5193
+ //#endregion
5182
5194
  //#region src/client/styles.ts
5183
5195
  const styles = `
5184
- .pf-card{border:1px solid var(--border,#2a2f3a);border-radius:14px;background:var(--card,#151821);color:var(--foreground,#eef1f6);overflow:hidden;box-shadow:0 10px 32px rgba(0,0,0,.12)}
5185
- .pf-card *{box-sizing:border-box}.pf-head{display:flex;justify-content:space-between;gap:20px;padding:20px 22px;border-bottom:1px solid var(--border,#2a2f3a);background:linear-gradient(135deg,rgba(75,114,255,.10),transparent 55%)}
5186
- .pf-title{display:flex;gap:13px;align-items:flex-start}.pf-shield{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:rgba(75,114,255,.15);color:#7c9cff;flex:0 0 auto}.pf-shield svg{width:22px;height:22px}.pf-title h2{font-size:17px;line-height:1.25;margin:1px 0 5px}.pf-title p,.pf-muted{color:var(--muted-foreground,#9da5b4);font-size:12px;margin:0;line-height:1.5}.pf-badge{display:inline-flex;align-items:center;gap:6px;height:25px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:rgba(45,190,125,.13);color:#51d69b}.pf-badge.off{background:rgba(148,154,166,.13);color:#aeb4c1}.pf-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.pf-body{padding:20px 22px;display:grid;gap:18px}.pf-section{display:grid;gap:12px}.pf-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.pf-section-title h3{font-size:13px;margin:0}.pf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.pf-field{display:grid;gap:6px}.pf-field>span{font-size:11px;color:var(--muted-foreground,#9da5b4);font-weight:600}.pf-control{width:100%;height:36px;border:1px solid var(--border,#343946);border-radius:8px;background:var(--background,#10131a);color:inherit;padding:0 10px;font:inherit;font-size:12px;outline:none}.pf-control:focus{border-color:#6687ff;box-shadow:0 0 0 3px rgba(75,114,255,.12)}.pf-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border,#2a2f3a);border-radius:9px}.pf-toggle-copy{display:grid;gap:2px}.pf-toggle-copy strong{font-size:12px}.pf-toggle-copy span{font-size:10px;color:var(--muted-foreground,#9da5b4)}.pf-toggle{appearance:none;width:34px;height:19px;border-radius:999px;background:#4a505c;position:relative;cursor:pointer;transition:.18s;flex:none}.pf-toggle:after{content:'';position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:white;transition:.18s}.pf-toggle:checked{background:#5578f5}.pf-toggle:checked:after{transform:translateX(15px)}.pf-toggle:disabled,.pf-control:disabled,.pf-btn:disabled{cursor:not-allowed;opacity:.45}.pf-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pf-stat{padding:12px;border-radius:9px;background:var(--muted,#1c202a);border:1px solid var(--border,#292e39)}.pf-stat b{display:block;font-size:17px;margin-bottom:3px}.pf-stat span{font-size:10px;color:var(--muted-foreground,#9da5b4)}.pf-editor{display:grid;grid-template-columns:1.2fr .8fr .8fr auto;gap:8px}.pf-btn{height:34px;border:1px solid var(--border,#343946);border-radius:8px;background:var(--muted,#20242e);color:inherit;padding:0 12px;font:inherit;font-size:11px;font-weight:650;cursor:pointer;white-space:nowrap}.pf-btn:hover:not(:disabled){border-color:#677080;background:#272c38}.pf-btn.primary{border-color:#5578f5;background:#5578f5;color:white}.pf-btn.danger{color:#ff8791}.pf-btn.link{height:27px;padding:0 8px;background:transparent}.pf-rules{display:grid;gap:6px}.pf-rule{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px auto;gap:9px;align-items:center;padding:7px 9px;border:1px solid var(--border,#292e39);border-radius:8px;font-size:11px}.pf-rule code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cbd5ff}.pf-pill{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground,#9da5b4)}.pf-pill.block{color:#ff8791}.pf-pill.allow{color:#62dba2}.pf-pill.protect{color:#7ca1ff}.pf-advanced{border:1px solid var(--border,#292e39);border-radius:10px;padding:0 12px}.pf-advanced summary{cursor:pointer;padding:11px 0;font-size:12px;font-weight:650}.pf-advanced-content{padding:2px 0 13px;display:grid;gap:10px}.pf-table-wrap{overflow:auto;border:1px solid var(--border,#292e39);border-radius:10px}.pf-table{width:100%;border-collapse:collapse;font-size:11px;min-width:720px}.pf-table th{text-align:left;color:var(--muted-foreground,#9da5b4);font-weight:600;background:var(--muted,#1c202a);padding:8px 10px}.pf-table td{padding:9px 10px;border-top:1px solid var(--border,#292e39);vertical-align:top}.pf-section-name{display:flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pf-new,.pf-warn{font-family:inherit;font-size:8px;font-weight:800;border-radius:4px;padding:2px 4px;background:rgba(85,120,245,.16);color:#88a5ff}.pf-warn{background:rgba(255,177,75,.14);color:#ffbe68}.pf-actions{display:flex;gap:4px}.pf-preview{margin-top:5px;max-width:360px;white-space:pre-wrap;color:var(--muted-foreground,#9da5b4);font-size:10px;line-height:1.4}.pf-empty{padding:22px;text-align:center;color:var(--muted-foreground,#9da5b4);font-size:12px}.pf-error{padding:9px 11px;border-radius:8px;background:rgba(235,76,88,.12);color:#ff9098;font-size:11px}.pf-footer-note{font-size:10px;color:var(--muted-foreground,#9da5b4)}
5187
- @media(max-width:720px){.pf-head,.pf-body{padding-left:15px;padding-right:15px}.pf-grid{grid-template-columns:1fr}.pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-editor{grid-template-columns:1fr 1fr}.pf-editor input{grid-column:1/-1}.pf-rule{grid-template-columns:minmax(0,1fr) 58px auto}.pf-rule .pf-kind{display:none}}
5196
+ .dsh-plugin-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}
5197
+ .dsh-plugin-card:hover{border-color:var(--dsw-alias-label-dimmed)}
5198
+ .dsh-plugin-card--open{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}
5199
+ .dsh-plugin-card__header{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}
5200
+ .dsh-plugin-card__header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}
5201
+ .dsh-plugin-card__head-text{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}
5202
+ .dsh-plugin-card__name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}
5203
+ .dsh-plugin-card__description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}
5204
+ .dsh-plugin-card__badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}
5205
+ .dsh-plugin-card__chevron{width:14px;height:14px;color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}
5206
+ .dsh-plugin-card--open .dsh-plugin-card__chevron{transform:rotate(180deg)}
5207
+ .dsh-plugin-card__body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}
5208
+ .pf-body,.pf-body *{box-sizing:border-box}
5209
+ .pf-body{padding-top:16px;display:grid;gap:18px;color:var(--dsw-alias-label-primary)}
5210
+ .pf-section{display:grid;gap:12px}.pf-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.pf-section-title h3{font-size:13px;margin:0}.pf-muted{color:var(--dsw-alias-label-tertiary);font-size:12px;margin:0;line-height:1.5}
5211
+ .pf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.pf-field{display:grid;gap:6px}.pf-field>span{font-size:11px;color:var(--dsw-alias-label-secondary);font-weight:600}
5212
+ .pf-control{width:100%;height:36px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);padding:0 10px;font:inherit;font-size:12px;outline:none}.pf-control:focus-visible{border-color:var(--dsw-alias-brand-primary);outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-1px}
5213
+ .pf-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);border-radius:9px}.pf-toggle-copy{display:grid;gap:2px}.pf-toggle-copy strong{font-size:12px;font-weight:500}.pf-toggle-copy span{font-size:10px;color:var(--dsw-alias-label-tertiary)}
5214
+ .pf-toggle{appearance:none;width:34px;height:19px;border-radius:999px;background:var(--dsw-alias-label-dimmed);position:relative;cursor:pointer;transition:.18s;flex:none}.pf-toggle:after{content:'';position:absolute;top:3px;left:3px;width:13px;height:13px;border-radius:50%;background:var(--dsw-alias-bg-layer-3);transition:.18s}.pf-toggle:checked{background:var(--dsw-alias-brand-primary)}.pf-toggle:checked:after{transform:translateX(15px)}
5215
+ .pf-toggle:disabled,.pf-control:disabled,.pf-btn:disabled{cursor:default;opacity:.45}
5216
+ .pf-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pf-stat{padding:12px;border-radius:9px;background:var(--dsw-alias-bg-module-platform);border:1px solid var(--dsw-alias-border-l2)}.pf-stat b{display:block;font-size:17px;margin-bottom:3px}.pf-stat span{font-size:10px;color:var(--dsw-alias-label-tertiary)}
5217
+ .pf-editor{display:grid;grid-template-columns:1.2fr .8fr .8fr auto;gap:8px}.pf-btn{height:34px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);padding:0 12px;font:inherit;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.pf-btn:hover:not(:disabled){border-color:var(--dsw-alias-label-dimmed);background:var(--dsw-alias-interactive-bg-hover)}.pf-btn.primary{border-color:var(--dsw-alias-brand-primary);background:var(--dsw-alias-brand-primary);color:var(--dsw-alias-bg-layer-3)}.pf-btn.danger{color:var(--dsw-alias-label-error)}.pf-btn.link{height:27px;padding:0 8px;background:transparent}
5218
+ .pf-rules{display:grid;gap:6px}.pf-rule{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px auto;gap:9px;align-items:center;padding:7px 9px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;font-size:11px}.pf-rule code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary)}.pf-pill{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--dsw-alias-label-tertiary)}.pf-pill.block{color:var(--dsw-alias-label-error)}.pf-pill.allow{color:var(--dsw-alias-state-business-primary)}.pf-pill.protect{color:var(--dsw-alias-brand-primary)}
5219
+ .pf-advanced{border:1px solid var(--dsw-alias-border-l2);border-radius:10px;padding:0 12px}.pf-advanced summary{cursor:pointer;padding:11px 0;font-size:12px;font-weight:600}.pf-advanced-content{padding:2px 0 13px;display:grid;gap:10px}
5220
+ .pf-table-wrap{overflow:auto;border:1px solid var(--dsw-alias-border-l2);border-radius:10px}.pf-table{width:100%;border-collapse:collapse;font-size:11px;min-width:720px}.pf-table th{text-align:left;color:var(--dsw-alias-label-tertiary);font-weight:600;background:var(--dsw-alias-bg-module-platform);padding:8px 10px}.pf-table td{padding:9px 10px;border-top:1px solid var(--dsw-alias-border-l2);vertical-align:top}.pf-section-name{display:flex;align-items:center;gap:6px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.pf-new,.pf-warn{font-family:inherit;font-size:8px;font-weight:800;border-radius:4px;padding:2px 4px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-brand-primary)}.pf-warn{color:var(--dsw-alias-label-secondary)}.pf-actions{display:flex;gap:4px}.pf-preview{margin-top:5px;max-width:360px;white-space:pre-wrap;color:var(--dsw-alias-label-tertiary);font-size:10px;line-height:1.4}.pf-empty{padding:22px;text-align:center;color:var(--dsw-alias-label-tertiary);font-size:12px}.pf-error{padding:9px 11px;border-radius:8px;background:var(--dsw-alias-bg-error);color:var(--dsw-alias-label-error);font-size:11px}.pf-footer-note{font-size:10px;color:var(--dsw-alias-label-tertiary)}
5221
+ @media(max-width:720px){.pf-grid{grid-template-columns:1fr}.pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-editor{grid-template-columns:1fr 1fr}.pf-editor input{grid-column:1/-1}.pf-rule{grid-template-columns:minmax(0,1fr) 58px auto}.pf-rule .pf-kind{display:none}}
5188
5222
  `;
5189
5223
  //#endregion
5190
5224
  //#region src/client/index.tsx
@@ -5199,16 +5233,17 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5199
5233
  if (typeof error === "string") return error;
5200
5234
  return "Could not load Prompt Inspector data.";
5201
5235
  }
5202
- function Shield() {
5203
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5204
- className: "pf-shield",
5236
+ function ChevronDown() {
5237
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
5238
+ className: "dsh-plugin-card__chevron",
5239
+ viewBox: "0 0 14 14",
5240
+ fill: "none",
5205
5241
  "aria-hidden": "true",
5206
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
5207
- viewBox: "0 0 24 24",
5208
- fill: "none",
5242
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
5243
+ d: "m3.5 5.25 3.5 3.5 3.5-3.5",
5209
5244
  stroke: "currentColor",
5210
- strokeWidth: "1.8",
5211
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M12 3 19 6v5c0 4.8-2.8 8.2-7 10-4.2-1.8-7-5.2-7-10V6l7-3Z" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m9 12 2 2 4-4" })]
5245
+ strokeLinecap: "round",
5246
+ strokeLinejoin: "round"
5212
5247
  })
5213
5248
  });
5214
5249
  }
@@ -5230,9 +5265,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5230
5265
  });
5231
5266
  }
5232
5267
  function PromptFirewallCard({ scope, inspect, setSectionPolicy }) {
5233
- const settings = (0, react.useSyncExternalStore)(scope.subscribe, scope.getSnapshot, scope.getSnapshot);
5268
+ const settingsStore = (0, react.useMemo)(() => bindSettingsExternalStore(scope), [scope]);
5269
+ const settings = (0, react.useSyncExternalStore)(settingsStore.subscribe, settingsStore.getSnapshot, settingsStore.getSnapshot);
5234
5270
  const config = settings.value;
5235
5271
  const writable = settings.status === "ready" && settings.writable;
5272
+ const [open, setOpen] = (0, react.useState)(false);
5236
5273
  const [inspector, setInspector] = (0, react.useState)(null);
5237
5274
  const [error, setError] = (0, react.useState)(null);
5238
5275
  const [refreshing, setRefreshing] = (0, react.useState)(false);
@@ -5346,24 +5383,37 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5346
5383
  const last = inspector?.last ?? null;
5347
5384
  const effectiveMode = inspector?.config.mode ?? config?.mode ?? "blocklist";
5348
5385
  const configuredMode = config?.mode ?? (config?.preset === "strict" ? "allowlist" : config?.preset === "audit-only" ? "audit" : "blocklist");
5349
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
5350
- className: "pf-card",
5351
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
5352
- className: "pf-head",
5353
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5354
- className: "pf-title",
5355
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Shield, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", { children: "Prompt Firewall" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", { children: "Prompt hygiene, section policy, and request-level observability." })] })]
5356
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5357
- className: `pf-badge${enabled ? "" : " off"}`,
5358
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", { className: "pf-dot" }), enabled ? "Enabled" : "Disabled"]
5359
- })]
5360
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5361
- className: "pf-body",
5386
+ if (settings.status === "unavailable") return null;
5387
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
5388
+ className: `dsh-plugin-card${open ? " dsh-plugin-card--open" : ""}`,
5389
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
5390
+ type: "button",
5391
+ className: "dsh-plugin-card__header",
5392
+ "aria-expanded": open,
5393
+ "aria-label": `${open ? "Hide" : "Show"} settings: Prompt Firewall`,
5394
+ onClick: () => {
5395
+ setOpen(!open);
5396
+ },
5362
5397
  children: [
5363
- settings.status === "unavailable" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5364
- className: "pf-error",
5365
- children: "Settings are unavailable for this connection."
5398
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
5399
+ className: "dsh-plugin-card__head-text",
5400
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5401
+ className: "dsh-plugin-card__name",
5402
+ children: "Prompt Firewall"
5403
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5404
+ className: "dsh-plugin-card__description",
5405
+ children: "Prompt hygiene, section policy, and request-level observability."
5406
+ })]
5407
+ }),
5408
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5409
+ className: "dsh-plugin-card__badge",
5410
+ children: enabled ? "Enabled" : "Disabled"
5366
5411
  }),
5412
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronDown, {})
5413
+ ]
5414
+ }), open ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5415
+ className: "dsh-plugin-card__body pf-body",
5416
+ children: [
5367
5417
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5368
5418
  className: "pf-error",
5369
5419
  children: error
@@ -5815,7 +5865,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5815
5865
  ]
5816
5866
  })
5817
5867
  ]
5818
- })]
5868
+ }) : null]
5819
5869
  });
5820
5870
  }
5821
5871
  const inject = [
@@ -5825,27 +5875,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5825
5875
  ];
5826
5876
  /** Mount the generated Remote contribution and register the native Settings card. */
5827
5877
  async function apply(ctx) {
5828
- const remote = ctx.remote;
5829
- const disposeRemote = await remote.$mount(TYPERT_REMOTE);
5830
- const face = {
5831
- scope: ctx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE }),
5832
- inspect: () => remote.promptFirewall.inspect(),
5833
- setSectionPolicy: (section, policy, revision) => remote.promptFirewall.setSectionPolicy(section, policy, revision)
5834
- };
5835
- const style = document.createElement("style");
5836
- style.dataset.plugin = "dsh-prompt-firewall";
5837
- style.textContent = styles;
5838
- document.head.appendChild(style);
5839
- const disposeSlot = ctx.slots.inject("settings.plugin.item", () => ctx.slots.register({
5840
- name: "settings.plugin.item",
5841
- key: SETTINGS_NAMESPACE,
5842
- inject: () => face
5843
- }, PromptFirewallCard));
5844
- return async () => {
5845
- disposeSlot();
5846
- style.remove();
5878
+ const disposeRemote = await ctx.remote.$mount(TYPERT_REMOTE);
5879
+ try {
5880
+ await ctx.inject(["remote.promptFirewall"], (remoteCtx) => {
5881
+ const injectedRemote = remoteCtx.remote;
5882
+ const face = {
5883
+ scope: remoteCtx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE }),
5884
+ inspect: () => injectedRemote.promptFirewall.inspect(),
5885
+ setSectionPolicy: (section, policy, revision) => injectedRemote.promptFirewall.setSectionPolicy(section, policy, revision)
5886
+ };
5887
+ const style = document.createElement("style");
5888
+ style.dataset.plugin = "dsh-prompt-firewall";
5889
+ style.textContent = styles;
5890
+ document.head.appendChild(style);
5891
+ const disposeSlot = remoteCtx.slots.inject("settings.plugin.item", () => remoteCtx.slots.register({
5892
+ name: "settings.plugin.item",
5893
+ key: SETTINGS_NAMESPACE,
5894
+ inject: () => face
5895
+ }, PromptFirewallCard));
5896
+ return () => {
5897
+ disposeSlot();
5898
+ style.remove();
5899
+ };
5900
+ });
5901
+ } catch (cause) {
5847
5902
  await disposeRemote();
5848
- };
5903
+ throw cause;
5904
+ }
5905
+ return disposeRemote;
5849
5906
  }
5850
5907
  //#endregion
5851
5908
  exports.apply = apply;