@deepseek-ai/dsh-agent-preset 0.2.1-alpha.1 → 0.2.1-alpha.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.
package/locale/en.json
ADDED
package/locale/zh.json
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-agent-preset",
|
|
3
3
|
"description": "Declare an Agent capability composition in Cordis YAML",
|
|
4
|
-
"version": "0.2.1-alpha.
|
|
4
|
+
"version": "0.2.1-alpha.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -19,32 +19,34 @@
|
|
|
19
19
|
"default": "./lib/index.js"
|
|
20
20
|
},
|
|
21
21
|
"./src/*": "./src/*",
|
|
22
|
-
"./package.json": "./package.json"
|
|
22
|
+
"./package.json": "./package.json",
|
|
23
|
+
"./locale/*.json": "./locale/*.json"
|
|
23
24
|
},
|
|
24
25
|
"files": [
|
|
26
|
+
"locale/*.json",
|
|
25
27
|
"lib/index.js",
|
|
26
28
|
"skills",
|
|
27
29
|
"lib/types/**/*.d.ts"
|
|
28
30
|
],
|
|
29
31
|
"license": "MIT",
|
|
30
32
|
"peerDependencies": {
|
|
31
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.
|
|
32
|
-
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.
|
|
33
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.
|
|
33
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
34
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
|
|
35
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.3"
|
|
34
36
|
},
|
|
35
37
|
"dependencies": {
|
|
36
|
-
"@deepseek-ai/schemastery": "~3.18.5-alpha.
|
|
38
|
+
"@deepseek-ai/schemastery": "~3.18.5-alpha.2"
|
|
37
39
|
},
|
|
38
40
|
"devDependencies": {
|
|
41
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
42
|
+
"@deepseek-ai/cordis-plugin-include": "~1.0.10-alpha.2",
|
|
43
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
|
|
44
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.3",
|
|
45
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-alpha.3",
|
|
46
|
+
"@deepseek-ai/dsh-skill": "0.2.1-alpha.3",
|
|
47
|
+
"@deepseek-ai/dsh-skill-filesystem": "0.2.1-alpha.3",
|
|
48
|
+
"@deepseek-ai/schemastery": "~3.18.5-alpha.2",
|
|
39
49
|
"@types/js-yaml": "^4.0.9",
|
|
40
|
-
"js-yaml": "^4.2
|
|
41
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.1",
|
|
42
|
-
"@deepseek-ai/cordis-plugin-include": "~1.0.10-alpha.1",
|
|
43
|
-
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
|
|
44
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.1",
|
|
45
|
-
"@deepseek-ai/dsh-compaction-tool-result-pruner": "0.2.1-alpha.1",
|
|
46
|
-
"@deepseek-ai/dsh-skill-filesystem": "0.2.1-alpha.1",
|
|
47
|
-
"@deepseek-ai/schemastery": "~3.18.5-alpha.1",
|
|
48
|
-
"@deepseek-ai/dsh-skill": "0.2.1-alpha.1"
|
|
50
|
+
"js-yaml": "^4.3.2"
|
|
49
51
|
}
|
|
50
52
|
}
|
|
@@ -17,6 +17,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
17
17
|
| `@deepseek-ai/dsh-api-account-controller` | no | Expose safe account operations over authenticated Remote |
|
|
18
18
|
| `@deepseek-ai/dsh-api-gateway` | yes | Typert Remote Host dispatcher and Client API endpoint |
|
|
19
19
|
| `@deepseek-ai/dsh-api-job-controller` | yes | Job Remote observation stream and the reference-counted client job-output service |
|
|
20
|
+
| `@deepseek-ai/dsh-api-remote-access` | no | Method-level Remote access control for non-owner Peers and the per-Peer access snapshot |
|
|
20
21
|
| `@deepseek-ai/dsh-api-remotes` | no | Remote BFF assembly for application-selected Host capabilities |
|
|
21
22
|
| `@deepseek-ai/dsh-api-session-controller` | yes | Session Remote commands, cold reads, and live control transport |
|
|
22
23
|
| `@deepseek-ai/dsh-api-settings-controller` | yes | Remote owner for the configuration surfaces over the settings-domain seams |
|
|
@@ -51,7 +52,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
51
52
|
| `@deepseek-ai/dsh-acp-app` | no | The dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-base |
|
|
52
53
|
| `@deepseek-ai/dsh-headless` | yes | The dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layer |
|
|
53
54
|
| `@deepseek-ai/dsh-sdk-app` | yes | The dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-base |
|
|
54
|
-
| `@deepseek-ai/dsh-web-app` | yes | The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving,
|
|
55
|
+
| `@deepseek-ai/dsh-web-app` | yes | The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, bash runtime variables, URL line) |
|
|
55
56
|
|
|
56
57
|
## client
|
|
57
58
|
|
|
@@ -88,6 +89,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
88
89
|
| `@deepseek-ai/dsh-client-ui-reference` | no | Unified Web @file and @session reference source |
|
|
89
90
|
| `@deepseek-ai/dsh-client-ui-renderer` | no | Browser UI renderer: React slot bindings, ctx.uiRenderer, and the assembled application root |
|
|
90
91
|
| `@deepseek-ai/dsh-client-ui-schedule` | no | Host task management page and Session reminder catalog |
|
|
92
|
+
| `@deepseek-ai/dsh-client-ui-secret-mask` | no | Web display masking for recognized credentials in sent user text |
|
|
91
93
|
| `@deepseek-ai/dsh-client-ui-session` | no | Session Controller adapter for React and session-scoped slots |
|
|
92
94
|
| `@deepseek-ai/dsh-client-ui-settings` | no | Settings domain base plugin: shared configuration forms and the canonical settings slot-type contract |
|
|
93
95
|
| `@deepseek-ai/dsh-client-ui-settings-account` | yes | Manage DeepSeek login and open Platform billing pages |
|
|
@@ -137,6 +139,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
137
139
|
|---|---|---|
|
|
138
140
|
| `@deepseek-ai/dsh-agent-instructions` | yes | Workspace context loader for AGENTS.md/CLAUDE.md instruction files |
|
|
139
141
|
| `@deepseek-ai/dsh-file-reference-local` | yes | Local-filesystem ctx.fileReferences provider with bounded fuzzy indexes |
|
|
142
|
+
| `@deepseek-ai/dsh-harness-dev-context` | no | Model context naming the DeepSeek Harness checkout and Web GUI URL without letting either change the system prompt |
|
|
140
143
|
| `@deepseek-ai/dsh-session-reference` | yes | Cross-session snapshot references and durable untrusted model context (ctx.sessionReferenceResolver) |
|
|
141
144
|
| `@deepseek-ai/dsh-time-context` | yes | Durable per-step context with the current time and elapsed time |
|
|
142
145
|
| `@deepseek-ai/dsh-tmux-context` | yes | Opt-in durable per-step context with this agent's tmux pane and window location |
|
|
@@ -148,7 +151,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
148
151
|
| `@deepseek-ai/dsh-agent` | no | Agent interface, registry, initiator scope, and event vocabulary for the DeepSeek Harness |
|
|
149
152
|
| `@deepseek-ai/dsh-agent-default-model` | yes | Default model selection shared by Agent entry points |
|
|
150
153
|
| `@deepseek-ai/dsh-agent-loop` | yes | The concrete agent loop plugin for the DeepSeek Harness |
|
|
151
|
-
| `@deepseek-ai/dsh-agent-tool-presentation` | yes | Agent-plane presentation selector: composes one agent's tools as PTC mode
|
|
154
|
+
| `@deepseek-ai/dsh-agent-tool-presentation` | yes | Agent-plane presentation selector: composes one agent's tools as PTC mode or native tool calls |
|
|
152
155
|
| `@deepseek-ai/dsh-session` | no | Event-sourced session store for the DeepSeek Harness |
|
|
153
156
|
| `@deepseek-ai/dsh-system-prompt` | yes | System prompt assembly registry for the DeepSeek Harness |
|
|
154
157
|
| `@deepseek-ai/dsh-tools` | yes | Tool registry and execution pipeline for the DeepSeek Harness |
|
|
@@ -178,7 +181,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
178
181
|
|
|
179
182
|
| Package | Config | Description |
|
|
180
183
|
|---|---|---|
|
|
181
|
-
| `@deepseek-ai/dsh-experimental-agent-team` | yes | Implicit-root Agent Teams roster,
|
|
184
|
+
| `@deepseek-ai/dsh-experimental-agent-team` | yes | Implicit-root Agent Teams roster, direct peer messaging, and shared task DAG |
|
|
182
185
|
| `@deepseek-ai/dsh-experimental-api-speech-to-text` | yes | Authenticated experimental speech transcription for browser clients |
|
|
183
186
|
| `@deepseek-ai/dsh-experimental-auto-review` | no | Per-tool LLM authorization review for the DeepSeek Harness Auto permission preset |
|
|
184
187
|
| `@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp` | yes | Experimental per-Session Chromium browser tools through chrome-devtools-mcp |
|
|
@@ -187,15 +190,29 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
187
190
|
| `@deepseek-ai/dsh-experimental-claude-code-mods` | yes | Experimental bridge: load Claude Code mods (hooks modules) and run their hook chains on DeepSeek Harness extension points |
|
|
188
191
|
| `@deepseek-ai/dsh-experimental-client-ui-agent-team` | no | Web Agent Teams roster, task board, and teammate navigation |
|
|
189
192
|
| `@deepseek-ai/dsh-experimental-client-ui-claude-code-mods` | no | Web band above the prompt for Claude Code mods: draws each session's mod tree and sends button presses back to the bridge |
|
|
193
|
+
| `@deepseek-ai/dsh-experimental-client-ui-cot-translation` | yes | Optional machine translation of expanded reasoning, preserving original Session text |
|
|
190
194
|
| `@deepseek-ai/dsh-experimental-client-ui-voice-input` | no | Record speech and insert editable text into the conversation draft |
|
|
191
195
|
| `@deepseek-ai/dsh-experimental-computer-use-cua-driver-mcp` | yes | Experimental computer use through an installed Cua Driver MCP executable |
|
|
192
196
|
| `@deepseek-ai/dsh-experimental-computer-use-cua-driver-native` | no | Experimental computer-use provider embedding the Cua Driver native npm SDK |
|
|
197
|
+
| `@deepseek-ai/dsh-experimental-cua-macos` | yes | macOS native provider for shared Computer Use application and window objects |
|
|
193
198
|
| `@deepseek-ai/dsh-experimental-inspector` | yes | Experimental cross-realm CDP hub for Host debugging and Client Runtime inspection |
|
|
194
199
|
| `@deepseek-ai/dsh-experimental-ptc-runtime-python` | yes | CPython subprocess implementation of the DeepSeek Harness PTC execution seam |
|
|
195
200
|
| `@deepseek-ai/dsh-experimental-session-inspector` | no | Experimental virtualized Session log and live Chat group/node inspectors |
|
|
196
201
|
| `@deepseek-ai/dsh-experimental-speech-to-text` | yes | Experimental speech recognition with independently selectable providers |
|
|
197
202
|
| `@deepseek-ai/dsh-experimental-speech-to-text-sensevoice` | yes | Local SenseVoice ONNX transcription with a managed sherpa-onnx process |
|
|
198
203
|
| `@deepseek-ai/dsh-experimental-tool-agent-team` | yes | Scoped model-facing Agent Teams tools over ctx.agentTeams |
|
|
204
|
+
| `@deepseek-ai/dsh-experimental-tool-worktree` | no | Model tool that creates and enters a new Git worktree |
|
|
205
|
+
| `@deepseek-ai/dsh-experimental-translator` | yes | Machine translation with reusable Session results |
|
|
206
|
+
| `@deepseek-ai/dsh-experimental-worktree` | yes | Creates a named Git worktree and changes the calling Session working directory |
|
|
207
|
+
| `@deepseek-ai/dsh-hooks-claude-code` | yes | Bridge plugin: run a Claude Code hooks.json / settings hook config on the DeepSeek Harness interception seams |
|
|
208
|
+
| `@deepseek-ai/dsh-hooks-codex` | yes | Bridge plugin: run a Codex hooks.json hook config on the DeepSeek Harness interception seams |
|
|
209
|
+
| `@deepseek-ai/dsh-session-title-all-prompts-llm` | yes | All-user-messages LLM provider plugin for DeepSeek Harness session titles |
|
|
210
|
+
| `@deepseek-ai/dsh-skill-badge` | no | Bundled dsh badge skill provider for DeepSeek Harness |
|
|
211
|
+
| `@deepseek-ai/dsh-tool-ralph` | yes | Model-facing fresh-agent Ralph loop over the workflow and subagent seams |
|
|
212
|
+
| `@deepseek-ai/dsh-tool-session-query` | yes | Workspace-authorized model-facing session history search, trace, and event read tools |
|
|
213
|
+
| `@deepseek-ai/dsh-tool-terminal` | yes | Six model-facing persistent PTY tools with owner isolation and generic background-job integration |
|
|
214
|
+
| `@deepseek-ai/dsh-webhook` | no | Fire-and-forget webhook rule runtime that creates Workspace-backed DeepSeek Harness Sessions |
|
|
215
|
+
| `@deepseek-ai/dsh-webhook-github` | yes | Signed GitHub HTTP webhook adapter for the DeepSeek Harness webhook runtime |
|
|
199
216
|
|
|
200
217
|
## extensions
|
|
201
218
|
|
|
@@ -240,13 +257,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
240
257
|
| `@deepseek-ai/dsh-repeat-tool-reminder` | yes | Repeat-tool-call guard plugin: advisory reminders when an agent loops on identical tool calls |
|
|
241
258
|
| `@deepseek-ai/dsh-tool-call-timeout-policy` | no | Tool-call timeout policy: a tools/execute wrapper that arms a per-tool deadline on exec.signal and returns TOOL_TIMEOUT when it wins |
|
|
242
259
|
|
|
243
|
-
## hooks
|
|
244
|
-
|
|
245
|
-
| Package | Config | Description |
|
|
246
|
-
|---|---|---|
|
|
247
|
-
| `@deepseek-ai/dsh-hooks-claude-code` | yes | Bridge plugin: run a Claude Code hooks.json / settings hook config on the DeepSeek Harness interception seams |
|
|
248
|
-
| `@deepseek-ai/dsh-hooks-codex` | yes | Bridge plugin: run a Codex hooks.json hook config on the DeepSeek Harness interception seams |
|
|
249
|
-
|
|
250
260
|
## host
|
|
251
261
|
|
|
252
262
|
| Package | Config | Description |
|
|
@@ -323,7 +333,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
323
333
|
|
|
324
334
|
| Package | Config | Description |
|
|
325
335
|
|---|---|---|
|
|
326
|
-
| `@deepseek-ai/dsh-ptc-runtime-node` | yes |
|
|
336
|
+
| `@deepseek-ai/dsh-ptc-runtime-node` | yes | Node PTC execution with per-call sandboxed processes or in-memory REPL state |
|
|
327
337
|
|
|
328
338
|
## sandbox
|
|
329
339
|
|
|
@@ -357,9 +367,10 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
357
367
|
| `@deepseek-ai/dsh-session-stats` | no | Whole-log conversation counts and wall times projection (sessionStats) for the DeepSeek Harness |
|
|
358
368
|
| `@deepseek-ai/dsh-session-telemetry-otel` | yes | Feedback-authorized Session logs over byte-bounded OpenTelemetry HTTP requests |
|
|
359
369
|
| `@deepseek-ai/dsh-session-title` | yes | Log-backed session title service and provider registry for the DeepSeek Harness |
|
|
360
|
-
| `@deepseek-ai/dsh-session-title-all-prompts-llm` | yes | All-user-messages LLM provider plugin for DeepSeek Harness session titles |
|
|
361
370
|
| `@deepseek-ai/dsh-session-title-first-prompt-llm` | yes | First-message LLM provider plugin for DeepSeek Harness session titles |
|
|
362
371
|
| `@deepseek-ai/dsh-session-turn-outline` | no | Whole-log turn outline projection (turnOutline) for the DeepSeek Harness |
|
|
372
|
+
| `@deepseek-ai/dsh-tool-working-directory` | no | Read and change the active Session working directory |
|
|
373
|
+
| `@deepseek-ai/dsh-working-directory` | yes | Session working directories with durable changes and model context |
|
|
363
374
|
|
|
364
375
|
## session-query
|
|
365
376
|
|
|
@@ -367,7 +378,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
367
378
|
|---|---|---|
|
|
368
379
|
| `@deepseek-ai/dsh-session-log-export` | yes | Web Session-log export command and shared download dialog |
|
|
369
380
|
| `@deepseek-ai/dsh-session-query-sqlite` | yes | Concrete ctx.sessionQuery backend with SQLite FTS5 search |
|
|
370
|
-
| `@deepseek-ai/dsh-tool-session-query` | yes | Workspace-authorized model-facing session history search, trace, and event read tools |
|
|
371
381
|
|
|
372
382
|
## settings
|
|
373
383
|
|
|
@@ -394,7 +404,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
394
404
|
| Package | Config | Description |
|
|
395
405
|
|---|---|---|
|
|
396
406
|
| `@deepseek-ai/dsh-skill` | yes | Agent skill provider registry for the DeepSeek Harness |
|
|
397
|
-
| `@deepseek-ai/dsh-skill-badge` | no | Bundled dsh badge skill provider for DeepSeek Harness |
|
|
398
407
|
| `@deepseek-ai/dsh-skill-filesystem` | yes | Local filesystem skill provider for the DeepSeek Harness |
|
|
399
408
|
| `@deepseek-ai/dsh-skill-office` | yes | Bundled Word, PowerPoint, and Excel workflows and structural checks |
|
|
400
409
|
| `@deepseek-ai/dsh-tool-skill` | yes | Model-facing skill loading tool for the DeepSeek Harness |
|
|
@@ -457,7 +466,6 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
457
466
|
|---|---|---|
|
|
458
467
|
| `@deepseek-ai/dsh-terminal` | no | Persistent PTY session seam for the DeepSeek Harness — owner-scoped ids, backend registry, interactive sends, reads, signals, and awaited cleanup |
|
|
459
468
|
| `@deepseek-ai/dsh-terminal-bash` | yes | Persistent shell PTY backend over the DeepSeek Harness subprocess terminal primitive |
|
|
460
|
-
| `@deepseek-ai/dsh-tool-terminal` | yes | Six model-facing persistent PTY tools with owner isolation and generic background-job integration |
|
|
461
469
|
|
|
462
470
|
## test-support
|
|
463
471
|
|
|
@@ -488,18 +496,10 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
|
|
488
496
|
| `@deepseek-ai/dsh-web-search-exa` | yes | Exa-backed search provider for the DeepSeek Harness web capability seam (ctx.web) |
|
|
489
497
|
| `@deepseek-ai/dsh-web-search-perplexity` | yes | Perplexity-backed search provider for the DeepSeek Harness web capability seam (ctx.web) |
|
|
490
498
|
|
|
491
|
-
## webhook
|
|
492
|
-
|
|
493
|
-
| Package | Config | Description |
|
|
494
|
-
|---|---|---|
|
|
495
|
-
| `@deepseek-ai/dsh-webhook` | no | Fire-and-forget webhook rule runtime that creates Workspace-backed DeepSeek Harness Sessions |
|
|
496
|
-
| `@deepseek-ai/dsh-webhook-github` | yes | Signed GitHub HTTP webhook adapter for the DeepSeek Harness webhook runtime |
|
|
497
|
-
|
|
498
499
|
## workflow
|
|
499
500
|
|
|
500
501
|
| Package | Config | Description |
|
|
501
502
|
|---|---|---|
|
|
502
|
-
| `@deepseek-ai/dsh-tool-ralph` | yes | Model-facing fresh-agent Ralph loop over the workflow and subagent seams |
|
|
503
503
|
| `@deepseek-ai/dsh-tool-workflow` | yes | Model-facing workflow tool: run a JavaScript orchestration script over ctx.workflowEngine |
|
|
504
504
|
| `@deepseek-ai/dsh-workflow-ptc` | yes | Workflow orchestration in the shared sandboxed Node PTC runtime |
|
|
505
505
|
|
|
@@ -18,7 +18,7 @@ These rules follow from Harness mechanisms. Confirm every Service method, Event
|
|
|
18
18
|
- Add prompt text with `ctx.systemPrompt.section()`. Add per-agent context with `agent.inject()`; it is logged as `agent/inbox/spliced` at call time and enters the next admitted step. `agent/request` listeners cannot change request messages.
|
|
19
19
|
- Register per-agent behavior on `agent.ctx`, obtained in an `agent/created` listener, so it is removed when that agent is disposed. Wrap it in one `agent.ctx.effect()` and also keep that disposer, keyed by agent, in your plugin's own effect; unloading the plugin does not dispose `agent.ctx` registrations by itself.
|
|
20
20
|
- Put optional services in `inject` or `ctx.inject([...], ...)` so the plugin stays inactive in profiles without them instead of throwing.
|
|
21
|
-
- Do not append session events with a new `type`. Readers accept an unknown stored event only when its envelope carries `ignorable: true`, and live `Session.append()` cannot set that marker, so the Session would refuse to reopen. Derive state from existing events, or keep plugin-owned data in a storage service found through inspection.
|
|
21
|
+
- Do not append session events with a new `type`. Readers accept an unknown stored event only when its envelope carries `ignorable: true`, and live `Session.append()` cannot set that marker, so the Session would refuse to reopen. `appendPluginRecord()` writes ignorable `plugin:` records, but it is reserved for DSH's experimental packages because a Session format migration keeps those records only on a best-effort basis. Derive state from existing events, or keep plugin-owned data in a storage service found through inspection.
|
|
22
22
|
- Put tunable values in the plugin's `Config` so users change them in `cordis.patch.yml`; the user's patch layer survives upgrades.
|
|
23
23
|
|
|
24
24
|
## Performance
|