dsh-perm-gate 4.0.0 → 4.1.0-beta.1
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.
- package/CHANGELOG.md +0 -15
- package/INSTALL.ja.md +9 -15
- package/INSTALL.ko.md +10 -16
- package/INSTALL.md +9 -17
- package/INSTALL.zh.md +8 -13
- package/README.md +1 -1
- package/dsh.plugin.json +2 -2
- package/lib/client.js +38 -2
- package/lib/client.js.map +1 -1
- package/lib/config.d.ts +3 -0
- package/lib/config.js +37 -1
- package/lib/index.js +45 -92
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,21 +5,6 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [3.0.0] - 2026-09-14
|
|
9
|
-
|
|
10
|
-
### Changed
|
|
11
|
-
|
|
12
|
-
- **This branch is the DSH 0.1.5 line: version series `3.x`, `engines.dsh`
|
|
13
|
-
`>=0.1.5-rc.1 <0.2.0-0`, npm dist-tag `dsh-0.1.5`.** It is a **packaging delta only** —
|
|
14
|
-
the code is `main`'s, aligned to `main@42dabae`; the major bump is the fence, so a `^2.x`
|
|
15
|
-
install never resolves `3.x` and vice versa.
|
|
16
|
-
- `dsh.plugin.json` now carries the same version and range as `package.json` (it still said
|
|
17
|
-
`2.6.0` / `>=0.1.2-alpha.1`), and the README version reference follows.
|
|
18
|
-
- **`3.x` is not on npm yet.** No `3.x` version and no `dsh-0.1.5` dist-tag have been
|
|
19
|
-
published, so `dsh-perm-gate@dsh-0.1.5` does not resolve; until the release is cut, a
|
|
20
|
-
`0.1.5-rc.x` host installs this branch directly
|
|
21
|
-
(`github:drscrewdriver/dsh-perm-gate#sync/0.1.5-from-main`) or takes `@latest`.
|
|
22
|
-
|
|
23
8
|
## [2.6.0] - 2026-09-17
|
|
24
9
|
|
|
25
10
|
### Added
|
package/INSTALL.ja.md
CHANGED
|
@@ -12,31 +12,30 @@
|
|
|
12
12
|
- [日本語 changelog](./CHANGELOG.ja.md)
|
|
13
13
|
- [한국어 changelog](./CHANGELOG.ko.md)
|
|
14
14
|
|
|
15
|
-
`dsh-perm-gate` バージョン **
|
|
15
|
+
`dsh-perm-gate` バージョン **2.4.1**。判定チェーン、ルールファイル形式、自动审查
|
|
16
16
|
ティアについては [日本語 README](./README.ja.md) を参照してください。
|
|
17
17
|
|
|
18
18
|
## 必要条件
|
|
19
19
|
|
|
20
20
|
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) がインストール済みであること。
|
|
21
|
-
- Node.js **>=
|
|
21
|
+
- Node.js **>= 20**(`package.json` の `engines` を参照)。
|
|
22
22
|
- `dsh` CLI が `PATH` に存在すること。
|
|
23
23
|
- インストール先の profile。ブラウザ側は `web` profile 向けにのみビルドされます
|
|
24
24
|
(`package.json` の `dsh.client.platform = "web"`)。
|
|
25
25
|
|
|
26
|
-
## DSH
|
|
26
|
+
## DSH のバージョンに合う tag を選ぶ
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
単一ビルドが DSH 両ラインをカバーするため、どちらの tag を選んでも動作するコードが
|
|
29
|
+
インストールされます —— tag を残しておくのは、あなたがピン留めするバージョンが
|
|
30
|
+
各ラインで意味を持つようにするためです。
|
|
31
31
|
|
|
32
32
|
| DSH のバージョン | インストール方法 |
|
|
33
33
|
|-----------------|-----------------|
|
|
34
|
-
| `0.1.2-alpha.1`
|
|
35
|
-
| `0.1.5-rc.1` 以上 | `dsh plugin --profile web add github:drscrewdriver/dsh-perm-gate#sync/0.1.5-from-main`(3.x ライン;npm の dist-tag は未公開 —— `@latest` は同じコードの 2.x パッケージングをインストールします) |
|
|
34
|
+
| `0.1.2-alpha.1` 以上(`0.1.5-rc.2` を含む) | `dsh plugin --profile web add dsh-perm-gate`(tag `latest`) |
|
|
36
35
|
| `0.1.1-rc.2` まで | `dsh plugin --profile web add dsh-perm-gate@legacy` |
|
|
37
36
|
|
|
38
|
-
DSH は `engines.dsh` を強制しないため、tag
|
|
39
|
-
|
|
37
|
+
DSH は `engines.dsh` を強制しないため、tag が選択メカニズムであり、互換性ゲート
|
|
38
|
+
そのものではありません。単一ビルドが両ラインをカバーする理由と tag の公開方法については、
|
|
40
39
|
[RELEASING.md](./RELEASING.md) を参照してください。
|
|
41
40
|
|
|
42
41
|
## 公式 CLI でインストール
|
|
@@ -73,11 +72,6 @@ profile の `cordis.yml` にプラグインを追加します:
|
|
|
73
72
|
defaultAction: ask # allow | ask | deny
|
|
74
73
|
```
|
|
75
74
|
|
|
76
|
-
ルール本体は `dsh-perm-gate-rules` settings 名前空間に保存され、変更のたびにゲートが
|
|
77
|
-
その場で再コンパイルされます。上記の YAML ファイルは任意です。名前空間が未設定の間
|
|
78
|
-
だけ読み込まれ、プラグインが最初にルールを書き込む際(許可リストの承認、または設定
|
|
79
|
-
UI での編集)にファイルのルールが自動的に取り込まれます。
|
|
80
|
-
|
|
81
75
|
まずは [examples/permissions.example.yaml](./examples/permissions.example.yaml)
|
|
82
76
|
から始め、profile を再読込してください。
|
|
83
77
|
|
package/INSTALL.ko.md
CHANGED
|
@@ -12,32 +12,31 @@
|
|
|
12
12
|
- [日本語 changelog](./CHANGELOG.ja.md)
|
|
13
13
|
- [한국어 changelog](./CHANGELOG.ko.md)
|
|
14
14
|
|
|
15
|
-
`dsh-perm-gate` 버전 **
|
|
15
|
+
`dsh-perm-gate` 버전 **2.4.1**. 결정 체인, 규칙 파일 형식, 自动审查 티어는
|
|
16
16
|
[한국어 README](./README.ko.md)를 참고하세요.
|
|
17
17
|
|
|
18
18
|
## 요구 사항
|
|
19
19
|
|
|
20
20
|
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)가 설치되어 있어야 합니다.
|
|
21
|
-
- Node.js **>=
|
|
21
|
+
- Node.js **>= 20** (`package.json`의 `engines` 참고).
|
|
22
22
|
- `dsh` CLI가 `PATH`에 있어야 합니다.
|
|
23
23
|
- 설치할 profile. 브라우저 절반은 `web` profile용으로만 빌드됩니다
|
|
24
24
|
(`package.json`의 `dsh.client.platform = "web"`).
|
|
25
25
|
|
|
26
|
-
## DSH 버전에 맞는
|
|
26
|
+
## DSH 버전에 맞는 tag 선택
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
단일 빌드는 두 DSH 라인을 모두 커버하므로, 어느 tag를 골라도 작동하는 코드가
|
|
29
|
+
설치됩니다 —— tag를 유지하는 이유는 당신이 고정하는 버전이 각 라인에서 의미 있게
|
|
30
|
+
유지되도록 하기 위함입니다.
|
|
31
31
|
|
|
32
32
|
| DSH 버전 | 설치 방법 |
|
|
33
33
|
|----------|-----------|
|
|
34
|
-
| `0.1.2-alpha.1`
|
|
35
|
-
| `0.1.5-rc.1` 이상 | `dsh plugin --profile web add github:drscrewdriver/dsh-perm-gate#sync/0.1.5-from-main` (3.x 라인; npm dist-tag 미게시 —— `@latest`는 동일 코드의 2.x 패키징을 설치) |
|
|
34
|
+
| `0.1.2-alpha.1` 이상 (`0.1.5-rc.2` 포함) | `dsh plugin --profile web add dsh-perm-gate` (tag `latest`) |
|
|
36
35
|
| `0.1.1-rc.2` 이하 | `dsh plugin --profile web add dsh-perm-gate@legacy` |
|
|
37
36
|
|
|
38
|
-
DSH는 `engines.dsh`를 강제하지 않으므로, tag
|
|
39
|
-
|
|
40
|
-
참고하세요.
|
|
37
|
+
DSH는 `engines.dsh`를 강제하지 않으므로, tag는 선택 메커니즘이지 호환성 게이트가
|
|
38
|
+
아닙니다. 단일 아티팩트가 두 라인을 커버하는 이유와 tag가 게시되는 방식에 대해서는
|
|
39
|
+
[RELEASING.md](./RELEASING.md)를 참고하세요.
|
|
41
40
|
|
|
42
41
|
## 공식 CLI로 설치
|
|
43
42
|
|
|
@@ -74,11 +73,6 @@ profile의 `cordis.yml`에 플러그인을 추가합니다:
|
|
|
74
73
|
defaultAction: ask # allow | ask | deny
|
|
75
74
|
```
|
|
76
75
|
|
|
77
|
-
규칙 본체는 `dsh-perm-gate-rules` settings 네임스페이스에 저장되며, 변경 시마다
|
|
78
|
-
게이트가 그 자리에서 다시 컴파일됩니다. 위의 YAML 파일은 선택 사항입니다.
|
|
79
|
-
네임스페이스가 설정되지 않은 동안에만 읽히며, 플러그인이 처음으로 규칙을 쓸 때(허용
|
|
80
|
-
목록 승인 또는 설정 UI에서의 편집) 파일의 규칙이 자동으로 흡수됩니다.
|
|
81
|
-
|
|
82
76
|
[examples/permissions.example.yaml](./examples/permissions.example.yaml)에서 시작한 뒤
|
|
83
77
|
profile을 다시 불러오세요.
|
|
84
78
|
|
package/INSTALL.md
CHANGED
|
@@ -12,32 +12,30 @@
|
|
|
12
12
|
- [日本語 changelog](./CHANGELOG.ja.md)
|
|
13
13
|
- [한국어 changelog](./CHANGELOG.ko.md)
|
|
14
14
|
|
|
15
|
-
`dsh-perm-gate` version **
|
|
15
|
+
`dsh-perm-gate` version **2.4.1**. Continue with the [README](./README.md) for the
|
|
16
16
|
decision chain, the rules file format and the 自动审查 tier.
|
|
17
17
|
|
|
18
18
|
## Requirements
|
|
19
19
|
|
|
20
20
|
- An existing [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) installation.
|
|
21
|
-
- Node.js **>=
|
|
21
|
+
- Node.js **>= 20** (see `engines` in `package.json`).
|
|
22
22
|
- The `dsh` CLI on your `PATH`.
|
|
23
23
|
- A profile to install into — the browser half only ships for the `web` profile
|
|
24
24
|
(`dsh.client.platform = "web"` in `package.json`).
|
|
25
25
|
|
|
26
|
-
## Pick the
|
|
26
|
+
## Pick the tag for your DSH version
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
points at the same tree).
|
|
28
|
+
One build serves both DSH lines, so either tag installs working code — the tag
|
|
29
|
+
exists so a version you pin stays meaningful per line.
|
|
31
30
|
|
|
32
31
|
| Your DSH | Install |
|
|
33
32
|
|----------|---------|
|
|
34
|
-
| `0.1.2-alpha.1`
|
|
35
|
-
| `0.1.5-rc.1` or newer | `dsh plugin --profile web add github:drscrewdriver/dsh-perm-gate#sync/0.1.5-from-main` (the 3.x line; no npm dist-tag yet — `@latest` installs the same code with 2.x packaging) |
|
|
33
|
+
| `0.1.2-alpha.1` or newer (incl. `0.1.5-rc.2`) | `dsh plugin --profile web add dsh-perm-gate` (tag `latest`) |
|
|
36
34
|
| up to `0.1.1-rc.2` | `dsh plugin --profile web add dsh-perm-gate@legacy` |
|
|
37
35
|
|
|
38
|
-
DSH does not enforce `engines.dsh`, so tags
|
|
39
|
-
|
|
40
|
-
lines and tags are
|
|
36
|
+
DSH does not enforce `engines.dsh`, so the tags are the selection mechanism rather
|
|
37
|
+
than a compatibility gate. See [RELEASING.md](./RELEASING.md) for why one artifact
|
|
38
|
+
covers both lines and how the tags are published.
|
|
41
39
|
|
|
42
40
|
## Install with the official CLI
|
|
43
41
|
|
|
@@ -75,12 +73,6 @@ Add the plugin to your profile's `cordis.yml`:
|
|
|
75
73
|
gatePresets: [permissive] # tiers where the gate is active at all (default)
|
|
76
74
|
```
|
|
77
75
|
|
|
78
|
-
Rules are stored in the `dsh-perm-gate-rules` settings namespace, and every
|
|
79
|
-
change recompiles the gate in place. The YAML file above is optional: it is only
|
|
80
|
-
read while the namespace is untouched, and the first rules write from the plugin
|
|
81
|
-
(an allowlist approval, or an edit in the settings UI) absorbs the file's rules
|
|
82
|
-
automatically.
|
|
83
|
-
|
|
84
76
|
Start from [examples/permissions.example.yaml](./examples/permissions.example.yaml),
|
|
85
77
|
then reload the profile.
|
|
86
78
|
|
package/INSTALL.zh.md
CHANGED
|
@@ -12,30 +12,29 @@
|
|
|
12
12
|
- [日本語 changelog](./CHANGELOG.ja.md)
|
|
13
13
|
- [한국어 changelog](./CHANGELOG.ko.md)
|
|
14
14
|
|
|
15
|
-
`dsh-perm-gate` 版本 **
|
|
15
|
+
`dsh-perm-gate` 版本 **2.4.1**。裁决链、规则文件格式与自动审查档位请见
|
|
16
16
|
[中文 README](./README.zh.md)。
|
|
17
17
|
|
|
18
18
|
## 前置条件
|
|
19
19
|
|
|
20
20
|
- 已安装 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)。
|
|
21
|
-
- Node.js **>=
|
|
21
|
+
- Node.js **>= 20**(见 `package.json` 的 `engines`)。
|
|
22
22
|
- `dsh` CLI 已在 `PATH` 中。
|
|
23
23
|
- 需要一个目标 profile —— 浏览器端只为 `web` profile 构建(`package.json`
|
|
24
24
|
里 `dsh.client.platform = "web"`)。
|
|
25
25
|
|
|
26
|
-
## 按你的 DSH
|
|
26
|
+
## 按你的 DSH 版本选择 tag
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
单一构建同时覆盖两条 DSH 线,所以任一 tag 安装的代码都能工作 —— 保留 tag
|
|
29
|
+
是为了让你锁定的版本在每条线上都有意义。
|
|
30
30
|
|
|
31
31
|
| 你的 DSH | 安装方式 |
|
|
32
32
|
|----------|----------|
|
|
33
|
-
| `0.1.2-alpha.1`
|
|
34
|
-
| `0.1.5-rc.1` 或更高 | `dsh plugin --profile web add github:drscrewdriver/dsh-perm-gate#sync/0.1.5-from-main`(3.x 线;npm 尚无对应 dist-tag —— `@latest` 安装的是相同代码的 2.x 打包) |
|
|
33
|
+
| `0.1.2-alpha.1` 或更高(含 `0.1.5-rc.2`) | `dsh plugin --profile web add dsh-perm-gate`(tag `latest`) |
|
|
35
34
|
| 不高于 `0.1.1-rc.2` | `dsh plugin --profile web add dsh-perm-gate@legacy` |
|
|
36
35
|
|
|
37
|
-
DSH 不强制 `engines.dsh`,因此 tag
|
|
38
|
-
|
|
36
|
+
DSH 不强制 `engines.dsh`,因此 tag 是选择机制而非兼容性关卡。
|
|
37
|
+
详见 [RELEASING.md](./RELEASING.md) 了解为何单一制品覆盖两条线以及 tag 的发布方式。
|
|
39
38
|
|
|
40
39
|
## 用官方 CLI 安装
|
|
41
40
|
|
|
@@ -71,10 +70,6 @@ dsh plugin --profile web add .
|
|
|
71
70
|
defaultAction: ask # allow | ask | deny
|
|
72
71
|
```
|
|
73
72
|
|
|
74
|
-
规则本体存储在 `dsh-perm-gate-rules` settings 命名空间中,每次变更都会就地重编译
|
|
75
|
-
闸门。上面的 YAML 文件是可选的:只有命名空间未被配置时才会读取它,插件发起的首次
|
|
76
|
-
规则写入(白名单批准或设置界面编辑)会自动收编文件中的规则。
|
|
77
|
-
|
|
78
73
|
可从 [examples/permissions.example.yaml](./examples/permissions.example.yaml) 起步,
|
|
79
74
|
然后重载 profile。
|
|
80
75
|
|
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
> **private** method of the user-approval service on both, so it is read behind a
|
|
43
43
|
> `typeof` probe and degrades to “policy unknown” when absent or throwing.
|
|
44
44
|
|
|
45
|
-
Version **
|
|
45
|
+
Version **2.6.0** — see the [Changelog](./CHANGELOG.md).
|
|
46
46
|
|
|
47
47
|
A single, self-sufficient, deterministic-first, fail-closed permission gate for DeepSeek Harness.
|
|
48
48
|
|
package/dsh.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-perm-gate",
|
|
3
3
|
"name": "dsh-perm-gate",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.6.0",
|
|
5
5
|
"description": {
|
|
6
6
|
"en": "Deterministic-first, fail-closed permission gate for DeepSeek Harness 0.1.2+: a P0 hard-deny -> P1 precise session grant -> P2 static allow/deny rule chain -> P3 optional LLM classifier -> P4 ask pipeline over the tools/pre-execute waterfall, with a standalone CLI dry-run evaluator and an auditable decision log. It only vetoes with deny/ask and always delegates otherwise, and unknown or malformed rules fail loud instead of silently standing the gate down.",
|
|
7
7
|
"zh": "面向 DeepSeek Harness 0.1.2+ 的确定性优先、失败即拒的权限闸门:在 tools/pre-execute 瀑布上串起 P0 硬拒绝 → P1 精确会话授权 → P2 静态 allow/deny 规则链 → P3 可选 LLM 语义分类 → P4 ask,并附带独立 CLI 干跑评估器与可审计的决策日志。只以 deny/ask 否决、其余一律放行,规则未知或非法时直接报错,绝不静默失效。"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"engines": {
|
|
16
|
-
"dsh": ">=0.1.
|
|
16
|
+
"dsh": ">=0.1.2-alpha.1"
|
|
17
17
|
},
|
|
18
18
|
"components": {
|
|
19
19
|
"host": "lib/index.js",
|
package/lib/client.js
CHANGED
|
@@ -89,6 +89,8 @@ window.__ModuleLoader__.load({
|
|
|
89
89
|
"card.llmPresetHost": "DSH 模型组(选择后自动切换为会话模式)",
|
|
90
90
|
"card.networkEnabled": "网络拦截(networkEnabled)",
|
|
91
91
|
"card.networkEnabledHint": "开启后启动本地代理拦截子进程出站连接,按规则放行/阻断。关闭则零行为变更。",
|
|
92
|
+
"card.watch": "规则热重载(watch)",
|
|
93
|
+
"card.watchHint": "开启后自动监听规则文件变更并即时生效,无需手动 reload。",
|
|
92
94
|
"card.networkRebindNote": "切换后立即生效(自动重绑,无需重载插件)。",
|
|
93
95
|
"card.networkInjectEnv": "注入代理环境变量(networkInjectEnv)",
|
|
94
96
|
"card.networkInjectEnvHint": "开启后为子进程写入 HTTP(S)_PROXY / ALL_PROXY(并清空 NO_PROXY)。关闭则只启动监听、不改变任何进程环境。",
|
|
@@ -239,6 +241,8 @@ window.__ModuleLoader__.load({
|
|
|
239
241
|
"card.llmPresetHost": "DSH model groups (selecting one switches to the session receiver)",
|
|
240
242
|
"card.networkEnabled": "Network interception (networkEnabled)",
|
|
241
243
|
"card.networkEnabledHint": "When on, starts a local proxy that intercepts outbound subprocess connections and applies allow/deny rules. Off = zero behavior change.",
|
|
244
|
+
"card.watch": "Rule hot-reload (watch)",
|
|
245
|
+
"card.watchHint": "When on, automatically watches rule files for changes and applies them instantly without manual reload.",
|
|
242
246
|
"card.networkRebindNote": "Takes effect immediately — the proxy rebinds automatically, no plugin reload needed.",
|
|
243
247
|
"card.networkInjectEnv": "Inject proxy environment (networkInjectEnv)",
|
|
244
248
|
"card.networkInjectEnvHint": "Writes HTTP(S)_PROXY / ALL_PROXY for subprocesses (and clears NO_PROXY). Off = the listener runs but no process environment is changed.",
|
|
@@ -1929,7 +1933,7 @@ window.__ModuleLoader__.load({
|
|
|
1929
1933
|
})
|
|
1930
1934
|
]
|
|
1931
1935
|
}),
|
|
1932
|
-
|
|
1936
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
1933
1937
|
style: sectionStyle,
|
|
1934
1938
|
children: [
|
|
1935
1939
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
@@ -1960,7 +1964,39 @@ window.__ModuleLoader__.load({
|
|
|
1960
1964
|
})]
|
|
1961
1965
|
})
|
|
1962
1966
|
]
|
|
1963
|
-
})
|
|
1967
|
+
}),
|
|
1968
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
1969
|
+
style: sectionStyle,
|
|
1970
|
+
children: [
|
|
1971
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1972
|
+
style: labelStyle,
|
|
1973
|
+
children: t("card.watch")
|
|
1974
|
+
}),
|
|
1975
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1976
|
+
style: hintStyle,
|
|
1977
|
+
children: t("card.watchHint")
|
|
1978
|
+
}),
|
|
1979
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1980
|
+
style: {
|
|
1981
|
+
display: "flex",
|
|
1982
|
+
alignItems: "center",
|
|
1983
|
+
gap: "8px",
|
|
1984
|
+
marginTop: "6px"
|
|
1985
|
+
},
|
|
1986
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
1987
|
+
type: "checkbox",
|
|
1988
|
+
checked: value.watch !== false,
|
|
1989
|
+
disabled: readonly,
|
|
1990
|
+
onChange: (event) => {
|
|
1991
|
+
scope.set("watch", event.currentTarget.checked);
|
|
1992
|
+
}
|
|
1993
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1994
|
+
style: { fontSize: "13px" },
|
|
1995
|
+
children: value.watch !== false ? "ON" : "OFF"
|
|
1996
|
+
})]
|
|
1997
|
+
})
|
|
1998
|
+
]
|
|
1999
|
+
}),
|
|
1964
2000
|
!snapshot.writable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1965
2001
|
style: {
|
|
1966
2002
|
margin: "8px 0 0",
|