dsh-mcp-panel 0.3.0 → 0.4.0
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 +18 -0
- package/README.es.md +48 -109
- package/README.hi.md +48 -109
- package/README.md +90 -79
- package/README.pt.md +48 -109
- package/README.zh.md +96 -86
- package/cordis.patch.yml +17 -4
- package/lib/client.js +1350 -48
- package/lib/client.js.map +1 -1
- package/lib/index.js +1191 -46
- package/lib/schemas-BhI7GrM5.js +4091 -0
- package/lib/typert.host.js +193 -4099
- package/lib/types/aggregate.d.ts +18 -1
- package/lib/types/aggregate.d.ts.map +1 -1
- package/lib/types/client/McpPanelTab.d.ts +12 -6
- package/lib/types/client/McpPanelTab.d.ts.map +1 -1
- package/lib/types/client/ServerEditor.d.ts +25 -0
- package/lib/types/client/ServerEditor.d.ts.map +1 -0
- package/lib/types/client/TrialConsole.d.ts +20 -0
- package/lib/types/client/TrialConsole.d.ts.map +1 -0
- package/lib/types/client/index.d.ts +7 -5
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +157 -1
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/present.d.ts +6 -0
- package/lib/types/client/present.d.ts.map +1 -1
- package/lib/types/client/remote.d.ts +175 -2
- package/lib/types/client/remote.d.ts.map +1 -1
- package/lib/types/command.d.ts +32 -3
- package/lib/types/command.d.ts.map +1 -1
- package/lib/types/config.d.ts +41 -1
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/diagnostics.d.ts +55 -0
- package/lib/types/diagnostics.d.ts.map +1 -0
- package/lib/types/index.d.ts +32 -15
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/patch.d.ts +176 -0
- package/lib/types/patch.d.ts.map +1 -0
- package/lib/types/service.d.ts +73 -8
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/trial.d.ts +72 -0
- package/lib/types/trial.d.ts.map +1 -0
- package/lib/types/typert.host.d.ts +164 -0
- package/lib/types/typert.host.d.ts.map +1 -1
- package/lib/types/upstream.d.ts +44 -15
- package/lib/types/upstream.d.ts.map +1 -1
- package/lib/types/wire.d.ts +507 -10
- package/lib/types/wire.d.ts.map +1 -1
- package/lib/types/write.d.ts +30 -0
- package/lib/types/write.d.ts.map +1 -0
- package/package.json +44 -2
- package/src/aggregate.ts +79 -2
- package/src/client/McpPanelTab.tsx +138 -17
- package/src/client/ServerEditor.tsx +290 -0
- package/src/client/TrialConsole.tsx +145 -0
- package/src/client/index.ts +45 -18
- package/src/client/locales.ts +169 -5
- package/src/client/present.ts +9 -0
- package/src/client/remote.ts +17 -2
- package/src/client/styles.ts +201 -0
- package/src/command.ts +139 -18
- package/src/config.ts +88 -2
- package/src/diagnostics.ts +126 -0
- package/src/index.ts +49 -16
- package/src/patch.ts +493 -0
- package/src/probe.ts +1 -1
- package/src/service.ts +254 -9
- package/src/trial.ts +192 -0
- package/src/upstream.ts +45 -15
- package/src/wire.ts +292 -10
- package/src/write.ts +97 -0
package/README.zh.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-mcp-panel
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**官方 DeepSeek Harness MCP client 的 MCP 管理控制台 —— 在设置页可视化增删改 MCP 服务器、试用工具调用,配以诚实的连接状态、健康诊断与安全可逆的 profile 写入。**
|
|
4
4
|
|
|
5
5
|
[English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
|
|
6
6
|
|
|
@@ -11,52 +11,82 @@
|
|
|
11
11
|
[](https://github.com/topics/dsh-plugin)
|
|
12
12
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## 架构:官方 client 负责桥接,本插件是完整体验层
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
[`@deepseek-ai/dsh-mcp-client`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/mcp/mcp-client) 是**唯一的桥接层**:每个 MCP server 一个插件实例,以手写 `cordis.yml` 行的形式配置,负责连接传输、同步工具并注册 `mcp__<server>__<tool>` 工具名。本插件从不取代它 —— 而是构建其上的**体验层**:
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
```
|
|
19
|
+
┌────────────────────────────────────────────┐
|
|
20
|
+
profile │ cordis.yml / cordis.patch.yml │
|
|
21
|
+
组合(每个 │ - id: mcp-github │
|
|
22
|
+
server 一行, │ name: '@deepseek-ai/dsh-mcp-client' │
|
|
23
|
+
手写) │ config: { serverName, transport, … } │
|
|
24
|
+
│ - id: mcp-panel │
|
|
25
|
+
│ name: dsh-mcp-panel ◄── 本插件 │
|
|
26
|
+
└───────────────┬────────────────────────────┘
|
|
27
|
+
│
|
|
28
|
+
┌───────────────────────────┴───────────────────────────┐
|
|
29
|
+
│ │
|
|
30
|
+
┌────▼──────────────┐ ┌───────────────────────────┐ │
|
|
31
|
+
│ @deepseek-ai/dsh- │ │ dsh-mcp-panel(控制台) │ │
|
|
32
|
+
│ mcp-client │ │ │ │
|
|
33
|
+
│ • 传输连接 │ │ • /mcp 命令 │ │
|
|
34
|
+
│ • 工具同步 │ │ • 设置 → 插件 → MCP 页: │ │
|
|
35
|
+
│ • mcp__* 工具 │◄──────►│ CRUD、工具试用台 │ │
|
|
36
|
+
│ • mcp/status seam │ 状态 │ • 健康诊断、探测、能力一览 │ │
|
|
37
|
+
└───────────────────┘ └───────────────────────────┘ │
|
|
38
|
+
```
|
|
21
39
|
|
|
22
|
-
|
|
40
|
+
控制台通过官方 client 已落地的 `mcp/status` 可观测 seam(事件 + `mcpStatus` 查询服务)、工具注册表与 loader **读取**事实;**写入**只发生在 profile 的 patch 层 —— 只追加、走审批、自动备份。传输、OAuth 与协议完全不动。
|
|
23
41
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
42
|
+
## 控制台 vs. 手写 cordis.yml
|
|
43
|
+
|
|
44
|
+
| | 手写 cordis.yml | dsh-mcp-panel 控制台 |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| 添加服务器 | 改 YAML,注意缩进与引号 | 表单 → patch 片段 → **一键复制**或**写入**(审批 + 自动备份) |
|
|
47
|
+
| 修改服务器 | 改 YAML,重启/热重载 | 表单预填当前行;未改动的密钥在 host 侧保留原值 |
|
|
48
|
+
| 删除服务器 | 删掉该行 | 追加 `set disabled: true` 操作(patch 词汇表没有 remove)——可随时重新启用 |
|
|
49
|
+
| 查看状态 | 翻日志 | 徽章 + 重连次数 + 最近错误,来自 `mcp/status` seam 实时数据 |
|
|
50
|
+
| 试用工具 | 让模型调用 | 试用台 → 官方 `ctx.tools.execute()` 管线(权限与审批全程生效) |
|
|
51
|
+
| 排查故障 | grep 日志 | `/mcp <server> health` 派生自愈建议 |
|
|
52
|
+
| 误操作 | 手动回滚 | 每次写入只追加、留时间戳备份 |
|
|
34
53
|
|
|
35
|
-
|
|
54
|
+
控制台的输出就是 `cordis.patch.yml` 的词汇表 —— 你手写的那几行,由它生成、预览并安全落地。
|
|
55
|
+
|
|
56
|
+
## 功能一览
|
|
57
|
+
|
|
58
|
+
| 界面 | 功能 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| **`/mcp` 命令** | 每 server 一行:transport、目标、工具数、连接状态(来自上游 seam;未观测时如实显示 `unknown`)、最近错误、重连计数——模型可读、会话日志可重建、五种输出语言 |
|
|
61
|
+
| **`/mcp <server> tools`** | 模型可见的 `mcp__*` 工具名与描述 |
|
|
62
|
+
| **`/mcp <server> health`** | 派生自愈建议(ENOENT → 依赖缺失、ECONNREFUSED、超时、401/403/404、DNS、限流、重连耗尽…);退出码 / stderr 尾部如实标注"待官方支持" |
|
|
63
|
+
| **`/mcp <server> call <tool> [json]`** | 经**官方工具管线**试用调用——pre-execute 权限策略、审批(经命令所属 agent 路由)、guard、post-execute 全部生效 |
|
|
64
|
+
| **`/mcp <server> disable\|enable`** | 精确的 `set` patch 行(同旧版) |
|
|
65
|
+
| **设置 → 插件 → MCP 页** | 状态卡片(徽章、诊断、探测),加以下三块控制台 |
|
|
66
|
+
| **Server CRUD** | 增删改表单 → `insert`/`set`/`set disabled` 片段 → 剪贴板复制或审批写入,自动备份(`cordis.patch.yml.bak-<ts>`,保留最新 `backupCount` 份) |
|
|
67
|
+
| **工具试用台** | 选 server → 选 `mcp__*` 工具 → JSON 填参 → 规范 JSON 结果 + render 内容;按 `trialMaxResultChars` 截断;仅面板可见、永不进入模型上下文 |
|
|
68
|
+
| **能力一览** | Resources / Prompts 可用性(特征探测);目前二者均如实标注"待官方支持"(官方 client 仅桥接工具) |
|
|
69
|
+
| **探测** | 一键 / 被动 Streamable HTTP 连通性探测(结果仅面板可见) |
|
|
70
|
+
|
|
71
|
+
## 快速开始
|
|
36
72
|
|
|
37
73
|
```sh
|
|
38
|
-
# git
|
|
39
|
-
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.
|
|
40
|
-
# npm
|
|
41
|
-
dsh plugin --profile web add dsh-mcp-panel@0.
|
|
74
|
+
# git 渠道(由包的 prepare 脚本构建)
|
|
75
|
+
dsh plugin --profile web add github:PerryLink/dsh-mcp-panel#v0.4.0
|
|
76
|
+
# npm 渠道(已发布 tarball,无需构建审批)
|
|
77
|
+
dsh plugin --profile web add dsh-mcp-panel@0.4.0
|
|
42
78
|
```
|
|
43
79
|
|
|
44
|
-
|
|
80
|
+
随后重启(或让 web 面板热重载 `cordis.patch.yml`),打开 **设置 → 插件 → MCP**,或运行:
|
|
45
81
|
|
|
46
82
|
```text
|
|
47
83
|
/mcp
|
|
48
84
|
/mcp everything tools
|
|
49
|
-
/mcp everything
|
|
85
|
+
/mcp everything health
|
|
86
|
+
/mcp everything call echo '{"message": "hi"}'
|
|
50
87
|
```
|
|
51
88
|
|
|
52
|
-
|
|
53
|
-
MCP servers (1):
|
|
54
|
-
- everything [mcp-everything] stdio node …/server-everything/dist/index.js
|
|
55
|
-
| 13 tools | enabled | status: unknown (source: derived) | reconnects: — | last error: —
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
手动安装:把 `dsh-mcp-panel` 放进 profile 的 `node_modules`(或共享的
|
|
59
|
-
`$DSH_HOME/profiles/node_modules` 回退目录),并在 `cordis.patch.yml` 添加:
|
|
89
|
+
手动安装:把 `dsh-mcp-panel` 放进 profile 的 `node_modules`(或共享的 `$DSH_HOME/profiles/node_modules` 回退目录),并在 `cordis.patch.yml` 加一行:
|
|
60
90
|
|
|
61
91
|
```yaml
|
|
62
92
|
- insert:
|
|
@@ -64,78 +94,58 @@ MCP servers (1):
|
|
|
64
94
|
name: dsh-mcp-panel
|
|
65
95
|
config:
|
|
66
96
|
probeEnabled: true
|
|
67
|
-
probeTimeoutMs: 10000
|
|
68
97
|
```
|
|
69
98
|
|
|
70
99
|
### 卸载
|
|
71
100
|
|
|
72
|
-
1. 从 `cordis.patch.yml` 移除 `mcp-panel` 行(web
|
|
73
|
-
2. 从 profile 的 `node_modules
|
|
101
|
+
1. 从 `cordis.patch.yml` 移除 `mcp-panel` 行(web 面板热重载;其他面板重启生效)。
|
|
102
|
+
2. 从 profile 的 `node_modules`(或共享 `profiles/node_modules` 回退目录)删除本包。
|
|
74
103
|
3. 用 `dsh web --dump-config` 确认没有残留的 `mcp-panel` 行。
|
|
75
104
|
|
|
76
105
|
## 诚实契约
|
|
77
106
|
|
|
78
|
-
-
|
|
79
|
-
- **不伪造状态。**
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
107
|
+
- **桥接层仍是桥接层。** 不改传输、OAuth、协议;每个 server 一行 mcp-client,与你手写完全一致。
|
|
108
|
+
- **不伪造状态。** 无上游观测时连接字段显示 `unknown` / `—`,并标注 `statusSource: 'derived'`;退出码与 stderr 尾部绝不臆造。
|
|
109
|
+
- **展示全程脱敏。** URL 查询凭据、userinfo 密码、header 值、Bearer token、JWT 在渲染前一律打码;配置的 `headers` 从不进入任何快照;env/header 的**值**绝不出 host(编辑器只见 key)。
|
|
110
|
+
- **写入只追加、走审批、先备份。** 控制台从不改写 `cordis.patch.yml`:只追加生成的操作。存在审批服务且调用方会话的 agent 处于开启轮次时,写入走 `ctx.approval`(仅 `allowed-once` 放行);否则以界面显式确认为审批通道。`writeEnabled: false` 是硬性总开关。
|
|
111
|
+
- **零提示词注入。** 本插件不注册任何提示词段落;对模型可见的文本只有两个工具/命令描述,沿用官方 client 的 Minimal 风格。
|
|
83
112
|
|
|
84
113
|
## 配置
|
|
85
114
|
|
|
86
|
-
|
|
|
115
|
+
| 键 | 默认值 | 说明 |
|
|
87
116
|
|---|---|---|
|
|
88
|
-
| `probeEnabled` | `true` |
|
|
89
|
-
| `probeTimeoutMs` | `10000` |
|
|
90
|
-
| `maxProbes` | `10` |
|
|
91
|
-
| `refreshIntervalMs` | `0` |
|
|
92
|
-
| `outputLanguage` | `en` | `/mcp`
|
|
93
|
-
| `passiveProbeEnabled` | `false` |
|
|
94
|
-
| `passiveProbeIntervalMs` | `60000` |
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- 行不见了?运行 `dsh web --dump-config`,检查 `mcp-panel` insert 是否生效且 id 唯一。
|
|
106
|
-
- 面板显示 `status: unknown (source: derived)`——在上游 seam 落地前属预期;见 [docs/upstream-proposal.md](docs/upstream-proposal.md)。
|
|
107
|
-
- 面板数据不更新?把 `mcp-panel` 配置行的 `refreshIntervalMs` 设为正值(如 `5000`)自动轮询。
|
|
108
|
-
- 启动日志出现 FAILED 的 `mcp-panel` fiber——确认包能从 profile 解析(裸 `name: dsh-mcp-panel` 经 profile 的 `node_modules` 或共享回退目录解析)。
|
|
109
|
-
- 回滚:移除该行(见「卸载」)。
|
|
110
|
-
|
|
111
|
-
## 安全
|
|
112
|
-
|
|
113
|
-
发现安全问题?请在 GitHub 提 issue,但**不要**粘贴密钥、key 或 token——先脱敏。本插件仅在内存中持有你所配置 MCP 服务器的凭据用于探测请求;它们从不进入日志或快照。
|
|
114
|
-
|
|
115
|
-
## 工作原理
|
|
116
|
-
|
|
117
|
-
- **Host 半部**——`mcpPanel` Typert Remote 服务从三个只读来源组装快照:Loader 行(`@deepseek-ai/dsh-mcp-client` 条目)、按 `mcp__<server>__` 名字空间分组的 `ctx.tools.schemas()`、以及上游 `mcp/status` 观测。手写的 `./typert` 清单把 `mcpPanel/status` 注册进网关;`zod` 被打包进产物,host bundle 自包含。
|
|
118
|
-
- **浏览器半部**——`dsh.client` bundle(由 `/plugins/dsh-mcp-panel/client.js` 提供)通过 `ctx.remote.$mount` 挂载同一描述符,并注册只读的 `settings.plugins.tab` 条目(`id: mcp`)。presenter 是纯函数;样式带作用域且使用主题 token。
|
|
119
|
-
- **`/mcp` 命令**走标准命令注册表——每一行都落入 `command/run` + `command/done` 会话事件。
|
|
117
|
+
| `probeEnabled` | `true` | 注册 `mcp_probe` 后台任务工具(结果仅面板可见) |
|
|
118
|
+
| `probeTimeoutMs` | `10000` | 单次探测超时(ms) |
|
|
119
|
+
| `maxProbes` | `10` | 面板展示的探测记录数 |
|
|
120
|
+
| `refreshIntervalMs` | `0` | 建议的面板刷新间隔(ms);`0` = 按需 |
|
|
121
|
+
| `outputLanguage` | `en` | `/mcp` 输出语言:`en\|zh\|es\|pt\|hi` |
|
|
122
|
+
| `passiveProbeEnabled` | `false` | 周期性探测 streamable-http 服务器 |
|
|
123
|
+
| `passiveProbeIntervalMs` | `60000` | 被动探测间隔(ms) |
|
|
124
|
+
| `trialEnabled` | `true` | 工具试用台(设置页 + `/mcp call`) |
|
|
125
|
+
| `trialTimeoutMs` | `120000` | 每次试用调用的面板侧截止时间 |
|
|
126
|
+
| `trialMaxResultChars` | `60000` | 试用结果载荷上限(字符) |
|
|
127
|
+
| `writeEnabled` | `true` | 总开关:`false` 拒绝一切 profile 写入(仍可复制片段) |
|
|
128
|
+
| `backupCount` | `5` | 每次写入保留的 `cordis.patch.yml` 备份数 |
|
|
129
|
+
|
|
130
|
+
## Resources 与 Prompts
|
|
131
|
+
|
|
132
|
+
官方 client 明确记载"Tools 是当前唯一桥接的 MCP 能力"——Resources 与 Prompts 处于 deferred 状态。控制台特征探测了上游提案中的 catalog seam,一旦落地即可只读展示列表;在此之前,能力一览中二者均标注**待官方支持**(详见 deepseek-harness `docs/upstream-proposal.md` 的补充提案)。
|
|
120
133
|
|
|
121
134
|
## 开发
|
|
122
135
|
|
|
123
136
|
```sh
|
|
124
|
-
pnpm
|
|
125
|
-
pnpm run typecheck # 本地门禁:经 tsconfig paths 解析 harness checkout 的最新类型面
|
|
126
|
-
pnpm run typecheck:ci # npm 门禁:解析已发布的 0.1.0-rc.6 类型面(CI 实际执行)
|
|
127
|
-
pnpm test # 109 个测试:脱敏极端用例、分组、聚合容错、命令输出(五语言)、探测门控、客户端接线、presenter(徽标/汇总/过滤)
|
|
128
|
-
pnpm run build # tsc 声明 → lib/types;tsdown → lib/index.js + lib/typert.host.js + lib/client.js
|
|
129
|
-
pnpm run verify:self-contained
|
|
130
|
-
pnpm run verify:artifacts
|
|
131
|
-
pnpm pack
|
|
137
|
+
pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pnpm run verify:self-contained && pnpm run verify:artifacts && pnpm pack
|
|
132
138
|
```
|
|
133
139
|
|
|
134
|
-
|
|
140
|
+
- `src/patch.ts` — 校验、保留语义合并、YAML 片段渲染(纯函数)。
|
|
141
|
+
- `src/write.ts` — 备份 + 追加 + 保留策略(唯一写文件模块)。
|
|
142
|
+
- `src/trial.ts` — 经 `ctx.tools.execute()` 的官方管线试用调用。
|
|
143
|
+
- `src/diagnostics.ts` — 错误模式 → 建议映射(纯函数)。
|
|
144
|
+
- `src/client/` — 设置页控制台(服务器编辑器、试用台、诊断)。
|
|
145
|
+
- `scripts/verify-headless.mjs` 启动真实 web profile 并打印 `/mcp` 实际输出。
|
|
135
146
|
|
|
136
|
-
|
|
137
|
-
`node --import tsx/esm scripts/verify-headless.mjs` 在进程内启动完整 web profile(临时端口),打印真实的 `/mcp`、`/mcp <server> tools`、`/mcp <server> disable` 输出。
|
|
147
|
+
发布:`node scripts/release.mjs <x.y.z>` 跑全量门禁、提交并本地打 `v<x.y.z>` 标签(绝不推送)。
|
|
138
148
|
|
|
139
|
-
##
|
|
149
|
+
## 许可证
|
|
140
150
|
|
|
141
|
-
|
|
151
|
+
Apache-2.0 —— 见 [LICENSE](LICENSE)。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# dsh-mcp-panel bundle patch: mount the
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
1
|
+
# dsh-mcp-panel bundle patch: mount the MCP management console. `name` is the
|
|
2
|
+
# package name, resolved through the profile's node_modules. An id-targeted
|
|
3
|
+
# override replaces the whole config row — restate every key when overriding.
|
|
4
|
+
# The console writes the PROFILE patch layer (cordis.patch.yml) only through
|
|
5
|
+
# its approval-gated, backup-first, append-only CRUD actions.
|
|
5
6
|
- insert:
|
|
6
7
|
- id: mcp-panel
|
|
7
8
|
name: dsh-mcp-panel
|
|
@@ -21,3 +22,15 @@
|
|
|
21
22
|
# passiveProbeEnabled: false
|
|
22
23
|
# Passive probe interval in milliseconds.
|
|
23
24
|
# passiveProbeIntervalMs: 60000
|
|
25
|
+
# Tool trial console (settings tab + /mcp call) through the official
|
|
26
|
+
# tool pipeline. Set false to disable trial calls entirely.
|
|
27
|
+
# trialEnabled: true
|
|
28
|
+
# Panel-side deadline for one trial tool call in milliseconds.
|
|
29
|
+
# trialTimeoutMs: 120000
|
|
30
|
+
# Cap on the trial result payload in characters.
|
|
31
|
+
# trialMaxResultChars: 60000
|
|
32
|
+
# Kill switch for profile-patch writes: false rejects every write
|
|
33
|
+
# (fragments stay copyable).
|
|
34
|
+
# writeEnabled: true
|
|
35
|
+
# Number of cordis.patch.yml backups retained per write.
|
|
36
|
+
# backupCount: 5
|