@deepseek-ai/dsh-agent-preset 0.1.7-alpha.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/LICENSE +21 -0
- package/README.i18n.yaml +6 -0
- package/README.md +94 -0
- package/README.zh.md +94 -0
- package/lib/index.js +29 -0
- package/lib/types/index.d.ts +19 -0
- package/package.json +49 -0
- package/skills/cordis-composition-reference/SKILL.md +29 -0
- package/skills/cordis-composition-reference/references/packages.md +501 -0
- package/skills/cordis-plugin-development/SKILL.md +38 -0
- package/skills/cordis-plugin-development/references/host-plugin.md +60 -0
- package/skills/cordis-plugin-development/references/mcp-bundle.md +5 -0
- package/skills/cordis-plugin-development/references/ui-plugin.md +13 -0
- package/skills/cordis-plugin-development/references/verification.md +5 -0
- package/skills/cordis-plugin-development/templates/decoration/client.js +22 -0
- package/skills/cordis-plugin-development/templates/decoration/cordis.patch.yml +3 -0
- package/skills/cordis-plugin-development/templates/decoration/index.js +2 -0
- package/skills/cordis-plugin-development/templates/decoration/package.json +15 -0
- package/skills/cordis-plugin-development/templates/mcp/cordis.patch.yml +8 -0
- package/skills/cordis-plugin-development/templates/mcp/package.json +7 -0
- package/skills/editing-cordis-compositions/SKILL.md +84 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeepSeek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.i18n.yaml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
|
2
|
+
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
|
+
# after editing either side, bring the other along and re-record with:
|
|
4
|
+
# pnpm run verify-translation-pairing --write packages/preset/agent-preset/README.md
|
|
5
|
+
README.md: 99802e2592e046c0580a77b5891a5b79c1e3f1f5
|
|
6
|
+
README.zh.md: 1130b015a8f7bafcf9b675abd3ca6d654d8e2d7f
|
package/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Define an Agent’s child plugins in ordinary Cordis YAML. Declare several presets and let sessions select one. Definitions load eagerly, and edits affect subsequently created Agents."
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# @deepseek-ai/dsh-agent-preset
|
|
7
|
+
|
|
8
|
+
English | [中文](README.zh.md)
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
Define an Agent’s child plugins in ordinary Cordis YAML. Declare several presets and let sessions select one. Definitions load eagerly, and edits affect subsequently created Agents.
|
|
13
|
+
|
|
14
|
+
## Table of Contents
|
|
15
|
+
|
|
16
|
+
- [Use this package](#use-this-package)
|
|
17
|
+
- [Understand the implementation](#understand-the-implementation)
|
|
18
|
+
- [Further Exploration](#further-exploration)
|
|
19
|
+
- [Model Experience](#model-experience)
|
|
20
|
+
- [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
|
|
21
|
+
- [Dev Note](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## Use this package
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
- id: agent-preset-registry
|
|
30
|
+
name: '@deepseek-ai/dsh-agent-preset-registry'
|
|
31
|
+
config:
|
|
32
|
+
default: standard
|
|
33
|
+
- id: preset-standard
|
|
34
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
35
|
+
config:
|
|
36
|
+
id: standard
|
|
37
|
+
plugins: []
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| Field | Default | Meaning |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `id` | required | Stable preset identifier |
|
|
43
|
+
| `plugins` | required | Child plugin entry list |
|
|
44
|
+
| `name` | unset | Display name |
|
|
45
|
+
| `description` | unset | Display description |
|
|
46
|
+
| `order` | unset | Roster order |
|
|
47
|
+
|
|
48
|
+
The declaration row’s `id` addresses Loader edits; `config.id` is the preset identity saved by sessions. Child entry IDs may be omitted and assigned by Loader.
|
|
49
|
+
|
|
50
|
+
The package also ships the `skills/` directory that creator mode mounts through `skill-filesystem`: `cordis-plugin-development` (a short procedure with `references/` read on demand and copyable `templates/` bundles), `editing-cordis-compositions`, and `cordis-composition-reference`, whose `references/packages.md` is generated by `scripts/gen-plugin-packages.ts` and freshness-gated in `doc-sync`. The two procedure skills tell the agent to read inspection results first, then the package README under the `packageDir` that `Config.listConfigs` reports, then built `lib/` or checkout sources. Every shipped `SKILL.md`, rendered as a `skill` tool result, stays under the 8192-character threshold above which the standard preset's tool-result pruner trims results.
|
|
51
|
+
|
|
52
|
+
<a id="understand-the-implementation"></a>
|
|
53
|
+
## Understand the implementation
|
|
54
|
+
|
|
55
|
+
<details>
|
|
56
|
+
<summary>Implementation internals — click to expand</summary>
|
|
57
|
+
|
|
58
|
+
[index.ts](src/index.ts) registers a definition and returns its disposer to Cordis. The plugin’s group marker preserves child `!!js` expressions until their own plugins load. The [registry](../agent-preset-registry/README.md) owns revision retention and release.
|
|
59
|
+
|
|
60
|
+
</details>
|
|
61
|
+
|
|
62
|
+
<a id="further-exploration"></a>
|
|
63
|
+
## Further Exploration
|
|
64
|
+
|
|
65
|
+
- [Scope](../../core/scope/README.md) — Registration isolation.
|
|
66
|
+
- [Agent](../../core/agent/README.md) — Session runtime.
|
|
67
|
+
- [Cordis](../../../docs/cordis-primer.md) — Plugin configuration and lifecycle.
|
|
68
|
+
|
|
69
|
+
<a id="model-experience"></a>
|
|
70
|
+
## Model Experience
|
|
71
|
+
|
|
72
|
+
Indirectly, through the declared plugins, which own model-visible tools and prompts.
|
|
73
|
+
|
|
74
|
+
#### KV Cache effect
|
|
75
|
+
|
|
76
|
+
A live Agent’s composition stays stable; new Agents can use an updated definition.
|
|
77
|
+
|
|
78
|
+
## Known Limitations and Deferred Work
|
|
79
|
+
|
|
80
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
81
|
+
|
|
82
|
+
- Requires the `agentPresets` service. Duplicate preset IDs fail declaration loading. Declarations provide no directory, file-copy or file-delete operations.
|
|
83
|
+
|
|
84
|
+
<a id="dev-note"></a>
|
|
85
|
+
### Dev Note
|
|
86
|
+
|
|
87
|
+
<details>
|
|
88
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
89
|
+
|
|
90
|
+
None.
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
**Runtime invariant:** No companion is published. This plugin submits registry-owned definitions and has no independently mutable runtime state.
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "在普通 Cordis YAML 中定义 Agent 的子插件列表。可同时声明多个 preset,由会话选择。声明会提前加载,修改只影响之后创建的 Agent。"
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# @deepseek-ai/dsh-agent-preset
|
|
7
|
+
|
|
8
|
+
[English](README.md) | 中文
|
|
9
|
+
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
在普通 Cordis YAML 中定义 Agent 的子插件列表。可同时声明多个 preset,由会话选择。声明会提前加载,修改只影响之后创建的 Agent。
|
|
13
|
+
|
|
14
|
+
## 目录
|
|
15
|
+
|
|
16
|
+
- [使用此包](#use-this-package)
|
|
17
|
+
- [理解实现](#understand-the-implementation)
|
|
18
|
+
- [延伸阅读](#further-exploration)
|
|
19
|
+
- [模型体验](#model-experience)
|
|
20
|
+
- [已知限制与待办](#known-limitations-and-deferred-work)
|
|
21
|
+
- [开发备注](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## 使用此包
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
- id: agent-preset-registry
|
|
30
|
+
name: '@deepseek-ai/dsh-agent-preset-registry'
|
|
31
|
+
config:
|
|
32
|
+
default: standard
|
|
33
|
+
- id: preset-standard
|
|
34
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
35
|
+
config:
|
|
36
|
+
id: standard
|
|
37
|
+
plugins: []
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| 字段 | 默认值 | 含义 |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| `id` | 必填 | 稳定的 preset 标识符 |
|
|
43
|
+
| `plugins` | 必填 | 子插件行列表 |
|
|
44
|
+
| `name` | 未设置 | 展示名称 |
|
|
45
|
+
| `description` | 未设置 | 展示说明 |
|
|
46
|
+
| `order` | 未设置 | 列表排序 |
|
|
47
|
+
|
|
48
|
+
声明行的 `id` 是 Loader 编辑地址;`config.id` 是会话保存的 preset 标识符。子插件可省略行 ID,由 Loader 分配。
|
|
49
|
+
|
|
50
|
+
本包还随包出货创造模式通过 `skill-filesystem` 挂载的 `skills/` 目录:`cordis-plugin-development`(简短流程,配合按需读取的 `references/` 与可复制的 `templates/` 组合包)、`editing-cordis-compositions`,以及 `cordis-composition-reference`,后者的 `references/packages.md` 由 `scripts/gen-plugin-packages.ts` 生成并在 `doc-sync` 中做新鲜度门禁。两个流程 skill 让 agent 先读检查结果,再读 `Config.listConfigs` 报告的 `packageDir` 下的包 README,最后读构建后的 `lib/` 或 checkout 源码。每个出货的 `SKILL.md` 作为 `skill` 工具结果渲染后都保持在 8192 字符阈值之下,标准 preset 的工具结果修剪器超过该阈值才会裁剪。
|
|
51
|
+
|
|
52
|
+
<a id="understand-the-implementation"></a>
|
|
53
|
+
## 理解实现
|
|
54
|
+
|
|
55
|
+
<details>
|
|
56
|
+
<summary>实现细节 — 点击展开</summary>
|
|
57
|
+
|
|
58
|
+
[index.ts](src/index.ts) 注册定义并把清理函数交给 Cordis。插件的 group 标记保留子配置中的 `!!js`,直到对应子插件加载时才求值。代际持有与释放由 [注册表](../agent-preset-registry/README.zh.md) 管理。
|
|
59
|
+
|
|
60
|
+
</details>
|
|
61
|
+
|
|
62
|
+
<a id="further-exploration"></a>
|
|
63
|
+
## 延伸阅读
|
|
64
|
+
|
|
65
|
+
- [Scope](../../core/scope/README.zh.md) — 注册隔离。
|
|
66
|
+
- [Agent](../../core/agent/README.zh.md) — 会话运行时。
|
|
67
|
+
- [Cordis](../../../docs/cordis-primer.zh.md) — 插件配置与生命周期。
|
|
68
|
+
|
|
69
|
+
<a id="model-experience"></a>
|
|
70
|
+
## 模型体验
|
|
71
|
+
|
|
72
|
+
通过声明的插件间接影响模型,这些插件拥有模型可见工具和提示词。
|
|
73
|
+
|
|
74
|
+
#### KV Cache effect
|
|
75
|
+
|
|
76
|
+
同一 Agent 的组合保持稳定;新 Agent 可使用更新后的定义。
|
|
77
|
+
|
|
78
|
+
## 已知限制与待办
|
|
79
|
+
|
|
80
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
81
|
+
|
|
82
|
+
- 需要 `agentPresets` 服务。重复的 preset ID 会导致声明加载失败。声明不提供目录、文件复制或文件删除操作。
|
|
83
|
+
|
|
84
|
+
<a id="dev-note"></a>
|
|
85
|
+
### 开发备注
|
|
86
|
+
|
|
87
|
+
<details>
|
|
88
|
+
<summary>维护者工作上下文 — 点击展开</summary>
|
|
89
|
+
|
|
90
|
+
无。
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
**运行时不变量:** 不发布 companion;本插件仅提交由注册表管理的定义,没有可独立偏离的运行时状态。
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Service } from "@deepseek-ai/cordis";
|
|
2
|
+
import { EntryGroup } from "@deepseek-ai/cordis-plugin-loader";
|
|
3
|
+
import z from "@deepseek-ai/schemastery";
|
|
4
|
+
//#region lib/types/index.js
|
|
5
|
+
/** A declarative preset row in an ordinary Cordis composition. */
|
|
6
|
+
/** Registers child plugin configuration without owning Agents using older revisions. */
|
|
7
|
+
var AgentPreset = class {
|
|
8
|
+
ctx;
|
|
9
|
+
config;
|
|
10
|
+
static inject = ["agentPresets"];
|
|
11
|
+
/** Preserve child expressions until their own plugins activate. */
|
|
12
|
+
static [EntryGroup.key] = true;
|
|
13
|
+
static Config = z.object({
|
|
14
|
+
id: z.string().required(),
|
|
15
|
+
name: z.string(),
|
|
16
|
+
description: z.string(),
|
|
17
|
+
order: z.number(),
|
|
18
|
+
plugins: z.array(z.any()).required()
|
|
19
|
+
});
|
|
20
|
+
constructor(ctx, config) {
|
|
21
|
+
this.ctx = ctx;
|
|
22
|
+
this.config = config;
|
|
23
|
+
}
|
|
24
|
+
async *[Service.init]() {
|
|
25
|
+
yield await this.ctx.agentPresets.register(this.config);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { AgentPreset as default };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** A declarative preset row in an ordinary Cordis composition. */
|
|
2
|
+
import { Context, Service } from '@deepseek-ai/cordis';
|
|
3
|
+
import { EntryGroup } from '@deepseek-ai/cordis-plugin-loader';
|
|
4
|
+
import z from '@deepseek-ai/schemastery';
|
|
5
|
+
import type { PresetDefinition } from '@deepseek-ai/dsh-agent-preset-registry';
|
|
6
|
+
/** Definition submitted to the preset registry. */
|
|
7
|
+
export type Config = PresetDefinition;
|
|
8
|
+
/** Registers child plugin configuration without owning Agents using older revisions. */
|
|
9
|
+
export default class AgentPreset {
|
|
10
|
+
private readonly ctx;
|
|
11
|
+
private readonly config;
|
|
12
|
+
static inject: string[];
|
|
13
|
+
/** Preserve child expressions until their own plugins activate. */
|
|
14
|
+
static readonly [EntryGroup.key] = true;
|
|
15
|
+
static Config: z<Config>;
|
|
16
|
+
constructor(ctx: Context, config: Config);
|
|
17
|
+
[Service.init](): AsyncGenerator<() => Promise<void>, void, unknown>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@deepseek-ai/dsh-agent-preset",
|
|
3
|
+
"description": "Declare an Agent capability composition in Cordis YAML",
|
|
4
|
+
"version": "0.1.7-alpha.1",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
|
|
11
|
+
"directory": "packages/preset/agent-preset"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"types": "lib/types/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./lib/types/index.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./src/*": "./src/*",
|
|
22
|
+
"./package.json": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"lib/index.js",
|
|
26
|
+
"skills",
|
|
27
|
+
"lib/types/**/*.d.ts"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.4",
|
|
32
|
+
"@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-alpha.1",
|
|
33
|
+
"@deepseek-ai/cordis": "^4.0.3"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@deepseek-ai/schemastery": "^3.18.3"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/js-yaml": "^4.0.9",
|
|
40
|
+
"js-yaml": "^4.2.0",
|
|
41
|
+
"@deepseek-ai/cordis-plugin-loader": "^1.0.4",
|
|
42
|
+
"@deepseek-ai/cordis-plugin-include": "^1.0.8",
|
|
43
|
+
"@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-alpha.1",
|
|
44
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.7-alpha.1",
|
|
45
|
+
"@deepseek-ai/cordis": "^4.0.3",
|
|
46
|
+
"@deepseek-ai/schemastery": "^3.18.3",
|
|
47
|
+
"@deepseek-ai/dsh-skill": "^0.1.7-alpha.1"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cordis-composition-reference
|
|
3
|
+
description: Use when writing or reading a Cordis bundle patch or agent preset for this harness and you need the Loader YAML dialect (insert, override by id, group, disabled, isolate, !!js) or the list of installable Harness plugin packages and what each provides.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cordis composition reference
|
|
7
|
+
|
|
8
|
+
Reference material for bundle patches and preset plugin lists. Procedures live in `cordis-plugin-development` and `editing-cordis-compositions`.
|
|
9
|
+
|
|
10
|
+
## Loader patch dialect
|
|
11
|
+
|
|
12
|
+
A profile composes an ordered list of patch layers over the bundle entry lists. Each patch is a mapping:
|
|
13
|
+
|
|
14
|
+
- `insert: [rows]` appends rows; with an `id` naming an existing `group: true` row, the rows are appended inside that group's `config` list.
|
|
15
|
+
- A patch with an `id` and no `insert` targets the existing row with that id. Supplied fields replace the row's fields; `config` is replaced wholesale, never deep-merged, so restate every field the row needs. A truthy `name` asserts the existing plugin name rather than renaming it.
|
|
16
|
+
- Non-insert patches without a nonempty `id`, and targets that match no row, are warned about and skipped.
|
|
17
|
+
|
|
18
|
+
A row has `id`, `name` (the plugin package specifier; inserted relative paths are anchored beside their patch file), optional `config`, and optional `disabled`, `inject`, `intercept`, and `isolate`.
|
|
19
|
+
|
|
20
|
+
- `group: true` with `name: cordis:group` makes `config` a nested entry list and allows patches to insert into it by id. `cordis:include` loads a literal YAML or JSON entry list from `config.path`.
|
|
21
|
+
- `disabled` accepts a boolean, null, or a `!!js` expression evaluated against the Loader context at every mount decision. A disabled row omits required `config` unless `group: true` forces activation.
|
|
22
|
+
- `!!js` scalars are Loader expressions, never `!js`. Inside `config` they are evaluated after the row's declared injections activate, against that plugin's context (`ctx.<service>`), so `!!js dshHomePath('sessions')` and `!!js "!ctx.get('profileContext')"` are valid. Other row metadata stays literal.
|
|
23
|
+
- `isolate` maps service names to `true` or a realm label; a preset plugin that provides a service isolates the provider and all consumers together. Scope controls contributions and event visibility; `isolate` controls service instances.
|
|
24
|
+
|
|
25
|
+
`plugin_manager` `list_plugins` reports each row's `enabled` flag and `fiberPhase`; `set_plugin` and `set_bundle` answer `overridden` when a higher-priority layer wins.
|
|
26
|
+
|
|
27
|
+
## Installable plugin packages
|
|
28
|
+
|
|
29
|
+
`references/packages.md` lists every workspace package that exports a Cordis plugin, grouped by package group, with whether its row takes `config`. Search it with `grep -n <keyword>` rather than reading it whole. Plugins outside this list come from installed bundles; `plugin_manager` `list_bundles` names them.
|
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
# Loadable Harness plugin packages
|
|
2
|
+
|
|
3
|
+
This file is GENERATED from workspace manifests (`scripts/gen-plugin-packages.ts`) and verified fresh by `pnpm run verify-plugin-packages` (part of `doc-sync`); do not edit it by hand.
|
|
4
|
+
|
|
5
|
+
Every package below exports a Cordis plugin that a bundle patch can name in a Loader row. `Config` marks packages whose row accepts a `config` mapping; query `Config.listConfigs` through `cordis_inspect_query` (filter by `name`, then query the `entry` id) for the mounted schema. Packages under `experimental` are pre-stable.
|
|
6
|
+
|
|
7
|
+
## acp
|
|
8
|
+
|
|
9
|
+
| Package | Config | Description |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `@deepseek-ai/dsh-acp` | yes | Automation-only Agent Client Protocol server for driving DeepSeek Harness agents over JSON-RPC stdio |
|
|
12
|
+
|
|
13
|
+
## api
|
|
14
|
+
|
|
15
|
+
| Package | Config | Description |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `@deepseek-ai/dsh-api-account-controller` | no | Expose safe account operations over authenticated Remote |
|
|
18
|
+
| `@deepseek-ai/dsh-api-gateway` | yes | Typert Remote Host dispatcher and Client API endpoint |
|
|
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-remotes` | no | Remote BFF assembly for application-selected Host capabilities |
|
|
21
|
+
| `@deepseek-ai/dsh-api-session-controller` | yes | Session Remote commands, cold reads, and live control transport |
|
|
22
|
+
| `@deepseek-ai/dsh-api-settings-controller` | yes | Remote owner for the configuration surfaces over the settings-domain seams |
|
|
23
|
+
| `@deepseek-ai/dsh-api-terminal-controller` | yes | Session-owned interactive terminals with shell discovery, screen recovery and typed Remote control |
|
|
24
|
+
| `@deepseek-ai/dsh-api-workspace-controller` | yes | Workspace Remote commands and reconnect-safe state transport |
|
|
25
|
+
| `@deepseek-ai/dsh-api-workspace-files` | yes | Workspace file service and Client resource provider: bounded reads, directory listing, and live metadata over the workspaceFiles Remote namespace |
|
|
26
|
+
|
|
27
|
+
## attachment
|
|
28
|
+
|
|
29
|
+
| Package | Config | Description |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `@deepseek-ai/dsh-attachment-local` | yes | Private content-addressed DSH_HOME attachment storage |
|
|
32
|
+
|
|
33
|
+
## boot
|
|
34
|
+
|
|
35
|
+
| Package | Config | Description |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `@deepseek-ai/dsh-config-editor` | no | Persist plugin configuration through profile patches and Loader reconciliation |
|
|
38
|
+
| `@deepseek-ai/dsh-hmr` | yes | Coordinated module and profile configuration hot reload |
|
|
39
|
+
| `@deepseek-ai/dsh-plugin-manager` | yes | Current-profile plugin and bundle management shared by dsh CLI, Web and agent tools |
|
|
40
|
+
|
|
41
|
+
## browser-use
|
|
42
|
+
|
|
43
|
+
| Package | Config | Description |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| `@deepseek-ai/dsh-browser-use` | no | Exclusive named browser-use provider registration |
|
|
46
|
+
|
|
47
|
+
## bundle
|
|
48
|
+
|
|
49
|
+
| Package | Config | Description |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `@deepseek-ai/dsh-acp-app` | no | The dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-base |
|
|
52
|
+
| `@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
|
+
| `@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, web-surface prompt, bash runtime variables, URL line) |
|
|
55
|
+
|
|
56
|
+
## client
|
|
57
|
+
|
|
58
|
+
| Package | Config | Description |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `@deepseek-ai/dsh-client-connection` | yes | Authenticated RPC transport and generation lifecycle |
|
|
61
|
+
| `@deepseek-ai/dsh-client-file-upload` | no | Agent-scoped browser file upload, streaming intake, and staged receipt service |
|
|
62
|
+
| `@deepseek-ai/dsh-client-hmr` | yes | Web client graph synchronization and rebuilt-bundle reload transport |
|
|
63
|
+
| `@deepseek-ai/dsh-client-locale` | no | Locale plugin: Host-backed preference, extensible language catalog, browser fallback, and typed built-in dictionaries |
|
|
64
|
+
| `@deepseek-ai/dsh-client-modules` | no | Client module system, dual-face: node half composes the __DSH_BOOT__ entry graph (incremental dsh.client scan, bundle route, index tap, webPlugins service); browser half is the lazy-CJS module table the vendored cordis Loader consumes as its internal seam |
|
|
65
|
+
| `@deepseek-ai/dsh-client-resources` | no | Unified client resource model: protocol-registered providers turn URL addresses into live values, consumed through the useResource global standard hook |
|
|
66
|
+
| `@deepseek-ai/dsh-client-ui-agent-preset` | no | Agent-preset surfaces: the default for later sessions, this session's seat, and the composition editor |
|
|
67
|
+
| `@deepseek-ai/dsh-client-ui-approval` | no | Approval composer takeover over the scoped Remote Event waterfall |
|
|
68
|
+
| `@deepseek-ai/dsh-client-ui-attachment` | no | Dynamic attachment presentation plugin for conversation input, message-image, and trajectory image slots |
|
|
69
|
+
| `@deepseek-ai/dsh-client-ui-brand-official` | no | Official DeepSeek Harness brand occupants for the Web client's sidebar slots |
|
|
70
|
+
| `@deepseek-ai/dsh-client-ui-chat` | no | Chat Conversation target, node definitions, renderers, and details surface |
|
|
71
|
+
| `@deepseek-ai/dsh-client-ui-commands` | no | Client command surface: global directory cache, '/' source, three command UI kinds, popupSelect registry |
|
|
72
|
+
| `@deepseek-ai/dsh-client-ui-conversation` | no | Target-neutral Conversation assembly, shell, composer, queue, and view navigation |
|
|
73
|
+
| `@deepseek-ai/dsh-client-ui-deliverables` | no | Changed-files card with per-file comparison tabs, delivery cards, and clickable final-response file references for Web |
|
|
74
|
+
| `@deepseek-ai/dsh-client-ui-directory-picker-browse` | no | In-app directory browsing surface: the workspace directory-flow owner rendering the host's listing and creation primitives |
|
|
75
|
+
| `@deepseek-ai/dsh-client-ui-directory-picker-native` | no | Native directory-picker surface: the renderless workspace directory-flow occupant driving the local Desktop or Host OS chooser |
|
|
76
|
+
| `@deepseek-ai/dsh-client-ui-goal` | no | Session goal surface: GoalBar docked above the composer, read from the goal session projection |
|
|
77
|
+
| `@deepseek-ai/dsh-client-ui-input-trigger` | no | Input trigger pipeline: '/' and '@' detection, candidate menu, pick routing to registered sources |
|
|
78
|
+
| `@deepseek-ai/dsh-client-ui-jobs` | no | Session-header background-job list with on-demand streaming record panels |
|
|
79
|
+
| `@deepseek-ai/dsh-client-ui-layout` | no | Shell plugin: three-column AppFrame with drag handles, ctx.layout viewing-state service (navigation + panels) |
|
|
80
|
+
| `@deepseek-ai/dsh-client-ui-message-feedback` | no | The Web feedback surface: per-message Like/Dislike in the assistant-message action strip and the feedback dialog behind both ratings and /feedback, backed by the messageFeedback and sessionFeedback Host Remotes |
|
|
81
|
+
| `@deepseek-ai/dsh-client-ui-model-selection` | no | Model selection over the shared model catalog, Session projection, and session.selectModel |
|
|
82
|
+
| `@deepseek-ai/dsh-client-ui-open-in-app` | no | Web "Open In..." controls: the Session-header split button opening the workspace directory in an installed application, and the document preview's default-application controls for one file |
|
|
83
|
+
| `@deepseek-ai/dsh-client-ui-permission-presets` | no | Permission surfaces: a new-session default in General settings and a current-session /permission popup over the permissions projection |
|
|
84
|
+
| `@deepseek-ai/dsh-client-ui-plan` | no | Plan mode controls, persistent transcript plan cards, and sidebar Markdown previews |
|
|
85
|
+
| `@deepseek-ai/dsh-client-ui-plugin-manager` | no | Plugin management for the dsh web client: the sidebar Plugins panel installs, enables, disables, retries, and composes installed plugin packages |
|
|
86
|
+
| `@deepseek-ai/dsh-client-ui-reference` | no | Unified Web @file and @session reference source |
|
|
87
|
+
| `@deepseek-ai/dsh-client-ui-renderer` | no | Browser UI renderer: React slot bindings, ctx.uiRenderer, and the assembled application root |
|
|
88
|
+
| `@deepseek-ai/dsh-client-ui-schedule` | no | Read-only active Schedule catalog in the Web Session header |
|
|
89
|
+
| `@deepseek-ai/dsh-client-ui-session` | no | Session Controller adapter for React and session-scoped slots |
|
|
90
|
+
| `@deepseek-ai/dsh-client-ui-settings` | no | Settings domain base plugin: shared configuration forms and the canonical settings slot-type contract |
|
|
91
|
+
| `@deepseek-ai/dsh-client-ui-settings-account` | yes | Manage DeepSeek login and open Platform billing pages |
|
|
92
|
+
| `@deepseek-ai/dsh-client-ui-settings-agent-loop` | no | Settings page of the agent loop on the dsh web client's Plugins page: the parallel tool-call cap of the agent-loop namespace |
|
|
93
|
+
| `@deepseek-ai/dsh-client-ui-settings-general` | no | Settings ownerless-copy and product onboarding plugin: the General section, shell trigger/header chrome content, settings dictionaries, and the versioned welcome notice |
|
|
94
|
+
| `@deepseek-ai/dsh-client-ui-settings-models` | yes | Models settings and shared product-onboarding dialogs over existing settings and credential joins |
|
|
95
|
+
| `@deepseek-ai/dsh-client-ui-settings-plugin-inventory` | no | Read-only Cordis Loader inventory tab in Web Plugins settings |
|
|
96
|
+
| `@deepseek-ai/dsh-client-ui-settings-plugins` | no | Built-in plugins settings section for the dsh web client: the Settings navigation entry and the tab chrome feature-owned tabs register into |
|
|
97
|
+
| `@deepseek-ai/dsh-client-ui-settings-shell` | no | Settings page of the shell executor on the dsh web client's Plugins page: the command timeout and the per-stream output cap of the shell namespace |
|
|
98
|
+
| `@deepseek-ai/dsh-client-ui-settings-subagent` | no | Settings page of Subagent delegation on the dsh web client's Plugins page: recursion depth, parallel capacity, and the models agents may choose for subagents |
|
|
99
|
+
| `@deepseek-ai/dsh-client-ui-settings-web-search` | no | Settings page of the DeepSeek web-search provider on the dsh web client's Plugins page: its API key, endpoint, and per-request search budget |
|
|
100
|
+
| `@deepseek-ai/dsh-client-ui-sidebar` | no | Sidebar plugin: session multi-level tree, search, grouping, state dots |
|
|
101
|
+
| `@deepseek-ai/dsh-client-ui-sidebar-browser` | no | Sandboxed Web browser tabs for the right Sidebar |
|
|
102
|
+
| `@deepseek-ai/dsh-client-ui-sidebar-documentpreview` | yes | Extensible Sidebar previews for Office documents, spreadsheets, Markdown, code, images, PDF, HTML, and plain text |
|
|
103
|
+
| `@deepseek-ai/dsh-client-ui-sidebar-files` | no | Workspace file tree tab type for the right Sidebar: lazy directory listing over the workspaceFiles Remote namespace, opening files into the Sidebar |
|
|
104
|
+
| `@deepseek-ai/dsh-client-ui-sidebar-right` | no | Right Sidebar: the docking surface's session-bound state, its panel and header expand control, and the navigation service over it |
|
|
105
|
+
| `@deepseek-ai/dsh-client-ui-sidebar-terminal` | no | Interactive shell tabs for the right Sidebar |
|
|
106
|
+
| `@deepseek-ai/dsh-client-ui-skill` | no | Web skill references and the dedicated skill tool row |
|
|
107
|
+
| `@deepseek-ai/dsh-client-ui-subagent` | no | Subagent conversation catalog, continuation routing UI, and '@' reference source |
|
|
108
|
+
| `@deepseek-ai/dsh-client-ui-theme` | yes | Theme plugin: Host bootstrap for the pre-plugin palette; DOM-free ThemeRuntime for light/dark/system state; --dsw-* token styles and Appearance settings row |
|
|
109
|
+
| `@deepseek-ai/dsh-client-ui-tool` | no | Client Tool call-tree renderer and keyed per-tool presentation slot |
|
|
110
|
+
| `@deepseek-ai/dsh-client-ui-trajectory` | no | Trajectory event ledger with an interactive timing overview: pure-consumer plugin registering into the conversation ViewMap (no service) |
|
|
111
|
+
| `@deepseek-ai/dsh-client-ui-user-questions` | no | Web ask_user_question composer takeover and plan-review presentation UI |
|
|
112
|
+
| `@deepseek-ai/dsh-client-ui-workflow-run` | no | Durable workflow-run Conversation Node and nested member disclosure for dsh web |
|
|
113
|
+
| `@deepseek-ai/dsh-client-ui-workspace` | no | Workspace picker plugin: one WorkspacePicker registered into the sidebar and empty-state workspace slots |
|
|
114
|
+
|
|
115
|
+
## compaction
|
|
116
|
+
|
|
117
|
+
| Package | Config | Description |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| `@deepseek-ai/dsh-command-compact` | no | Human-facing slash command for explicit session compaction |
|
|
120
|
+
| `@deepseek-ai/dsh-compaction-basic` | yes | Token-meter-driven compaction policy and LLM summarization backend for the DeepSeek Harness |
|
|
121
|
+
| `@deepseek-ai/dsh-compaction-image-offload` | no | Durable image offload for image-capable routes: replace over-budget request images with placeholders and retry |
|
|
122
|
+
| `@deepseek-ai/dsh-compaction-tool-result-pruner` | yes | Replay-safe model-free head/middle/tail pruning for tool-result surface nodes |
|
|
123
|
+
|
|
124
|
+
## computer-use
|
|
125
|
+
|
|
126
|
+
| Package | Config | Description |
|
|
127
|
+
|---|---|---|
|
|
128
|
+
| `@deepseek-ai/dsh-computer-use` | no | Exclusive named computer-use provider registration |
|
|
129
|
+
|
|
130
|
+
## context
|
|
131
|
+
|
|
132
|
+
| Package | Config | Description |
|
|
133
|
+
|---|---|---|
|
|
134
|
+
| `@deepseek-ai/dsh-agent-instructions` | yes | Workspace context loader for AGENTS.md/CLAUDE.md instruction files |
|
|
135
|
+
| `@deepseek-ai/dsh-file-reference-local` | yes | Local-filesystem ctx.fileReferences provider with bounded fuzzy indexes |
|
|
136
|
+
| `@deepseek-ai/dsh-session-reference` | yes | Cross-session snapshot references and durable untrusted model context (ctx.sessionReferenceResolver) |
|
|
137
|
+
| `@deepseek-ai/dsh-time-context` | yes | Opt-in durable per-step context with the current time and elapsed time |
|
|
138
|
+
| `@deepseek-ai/dsh-tmux-context` | yes | Opt-in durable per-step context with this agent's tmux pane and window location |
|
|
139
|
+
|
|
140
|
+
## core
|
|
141
|
+
|
|
142
|
+
| Package | Config | Description |
|
|
143
|
+
|---|---|---|
|
|
144
|
+
| `@deepseek-ai/dsh-agent` | no | Agent interface, registry, initiator scope, and event vocabulary for the DeepSeek Harness |
|
|
145
|
+
| `@deepseek-ai/dsh-agent-default-model` | yes | Default model selection shared by Agent entry points |
|
|
146
|
+
| `@deepseek-ai/dsh-agent-loop` | yes | The concrete agent loop plugin for the DeepSeek Harness |
|
|
147
|
+
| `@deepseek-ai/dsh-agent-tool-presentation` | yes | Agent-plane presentation selector: composes one agent's tools as PTC mode, native, or both |
|
|
148
|
+
| `@deepseek-ai/dsh-session` | no | Event-sourced session store for the DeepSeek Harness |
|
|
149
|
+
| `@deepseek-ai/dsh-system-prompt` | yes | System prompt assembly registry for the DeepSeek Harness |
|
|
150
|
+
| `@deepseek-ai/dsh-tools` | yes | Tool registry and execution pipeline for the DeepSeek Harness |
|
|
151
|
+
|
|
152
|
+
## credentials
|
|
153
|
+
|
|
154
|
+
| Package | Config | Description |
|
|
155
|
+
|---|---|---|
|
|
156
|
+
| `@deepseek-ai/dsh-authorization` | no | Authorization seam (ctx.authorization): plugin-owned flows that obtain a credential through a conversation with the human |
|
|
157
|
+
| `@deepseek-ai/dsh-credentials-local` | yes | File-backed credentials provider ($DSH_HOME/.env under the live process environment) for the DeepSeek Harness |
|
|
158
|
+
| `@deepseek-ai/dsh-deepseek-account-platform` | yes | Authorize DeepSeek accounts through browser PKCE |
|
|
159
|
+
|
|
160
|
+
## deliverables
|
|
161
|
+
|
|
162
|
+
| Package | Config | Description |
|
|
163
|
+
|---|---|---|
|
|
164
|
+
| `@deepseek-ai/dsh-tool-present` | yes | Explicit workspace file delivery declarations for the DeepSeek Harness |
|
|
165
|
+
| `@deepseek-ai/dsh-workspace-changes` | yes | Per-turn workspace file changes recorded from git working-tree snapshots and whole-file captures, with per-file comparisons, for the DeepSeek Harness |
|
|
166
|
+
|
|
167
|
+
## document
|
|
168
|
+
|
|
169
|
+
| Package | Config | Description |
|
|
170
|
+
|---|---|---|
|
|
171
|
+
| `@deepseek-ai/dsh-office-to-pdf` | yes | Shared Office-to-PDF conversion with bounded queues and caching |
|
|
172
|
+
|
|
173
|
+
## experimental
|
|
174
|
+
|
|
175
|
+
| Package | Config | Description |
|
|
176
|
+
|---|---|---|
|
|
177
|
+
| `@deepseek-ai/dsh-experimental-agent-team` | yes | Implicit-root Agent Teams roster, durable peer mailbox, and shared task DAG |
|
|
178
|
+
| `@deepseek-ai/dsh-experimental-api-speech-to-text` | yes | Authenticated experimental speech transcription for browser clients |
|
|
179
|
+
| `@deepseek-ai/dsh-experimental-auto-review` | no | Per-tool LLM authorization review for the DeepSeek Harness Auto permission preset |
|
|
180
|
+
| `@deepseek-ai/dsh-experimental-browser-use-chrome-devtools-mcp` | yes | Experimental per-Session Chromium browser tools through chrome-devtools-mcp |
|
|
181
|
+
| `@deepseek-ai/dsh-experimental-browser-use-playwright-mcp` | yes | Experimental per-Session Chromium browser tools through @playwright/mcp |
|
|
182
|
+
| `@deepseek-ai/dsh-experimental-browser-use-stagehand-native` | yes | Experimental Stagehand browser tools with separately configured native models |
|
|
183
|
+
| `@deepseek-ai/dsh-experimental-client-ui-agent-team` | no | Web Agent Teams roster, task board, and teammate navigation |
|
|
184
|
+
| `@deepseek-ai/dsh-experimental-client-ui-voice-input` | no | Record speech and insert editable text into the conversation draft |
|
|
185
|
+
| `@deepseek-ai/dsh-experimental-computer-use-cua-driver-mcp` | yes | Experimental computer use through an installed Cua Driver MCP executable |
|
|
186
|
+
| `@deepseek-ai/dsh-experimental-computer-use-cua-driver-native` | no | Experimental computer-use provider embedding the Cua Driver native npm SDK |
|
|
187
|
+
| `@deepseek-ai/dsh-experimental-inspector` | yes | Experimental cross-realm CDP hub for Host debugging and Client Runtime inspection |
|
|
188
|
+
| `@deepseek-ai/dsh-experimental-ptc-runtime-python` | yes | CPython subprocess implementation of the DeepSeek Harness PTC execution seam |
|
|
189
|
+
| `@deepseek-ai/dsh-experimental-speech-to-text` | yes | Experimental speech recognition with independently selectable providers |
|
|
190
|
+
| `@deepseek-ai/dsh-experimental-speech-to-text-sensevoice` | yes | Local SenseVoice ONNX transcription with a managed sherpa-onnx process |
|
|
191
|
+
| `@deepseek-ai/dsh-experimental-tool-agent-team` | yes | Scoped model-facing Agent Teams tools over ctx.agentTeams |
|
|
192
|
+
|
|
193
|
+
## extensions
|
|
194
|
+
|
|
195
|
+
| Package | Config | Description |
|
|
196
|
+
|---|---|---|
|
|
197
|
+
| `@deepseek-ai/dsh-client-ui-cordis` | no | Cordis dynamic-plugin definition card: the keyed cordis_define tool row with its run/stop switch |
|
|
198
|
+
| `@deepseek-ai/dsh-cordis-client-runner` | no | Browser half of dynamic dual-half plugin packages: event subscription, closure evaluation, guard facade, and loader entries |
|
|
199
|
+
| `@deepseek-ai/dsh-cordis-host-runner` | yes | Dynamic package definition registry, host-half sandbox lifecycle, and invoke handler table for model-mounted dual-half packages |
|
|
200
|
+
| `@deepseek-ai/dsh-tool-cordis` | no | Read-only runtime API inspection for Harness plugin development |
|
|
201
|
+
|
|
202
|
+
## feedback
|
|
203
|
+
|
|
204
|
+
| Package | Config | Description |
|
|
205
|
+
|---|---|---|
|
|
206
|
+
| `@deepseek-ai/dsh-command-feedback` | no | Log-only session feedback: the record event, the sessionFeedback Host Remote, and the human-facing slash command |
|
|
207
|
+
| `@deepseek-ai/dsh-message-feedback` | yes | Canonical Session-log ratings and notes for finalized assistant messages |
|
|
208
|
+
|
|
209
|
+
## fs
|
|
210
|
+
|
|
211
|
+
| Package | Config | Description |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| `@deepseek-ai/dsh-fs-local` | yes | Local-filesystem implementation of the DeepSeek Harness filesystem seam (ctx.fs) |
|
|
214
|
+
| `@deepseek-ai/dsh-fs-observation-policy` | no | File-context policy plugin for the DeepSeek Harness — observed-state, read-before-edit, and version-guarded write/edit added over the ctx.fs provider seam through the fs/* event gate (no service API) |
|
|
215
|
+
| `@deepseek-ai/dsh-fs-sandbox` | yes | Sandbox-enforcing implementation of the DeepSeek Harness filesystem seam: fences write/edit by the per-call sandbox mode (read-only denies mutation, workspace-write contains it to the workspace + temp roots) while reads pass through |
|
|
216
|
+
| `@deepseek-ai/dsh-tool-fs` | yes | Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs) |
|
|
217
|
+
| `@deepseek-ai/dsh-tool-fs-search` | yes | Model-facing filesystem discovery tools (glob, grep) backed by the packaged ripgrep binary (@vscode/ripgrep) |
|
|
218
|
+
| `@deepseek-ai/dsh-tool-str-replace-editor` | yes | Model-facing view, create, literal replace, and line insert tool over the Harness filesystem service |
|
|
219
|
+
|
|
220
|
+
## goal
|
|
221
|
+
|
|
222
|
+
| Package | Config | Description |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| `@deepseek-ai/dsh-command-goal` | no | Human-facing slash command for persisted same-session goals |
|
|
225
|
+
| `@deepseek-ai/dsh-goal` | yes | Event-sourced same-session goal state and lifecycle service for the DeepSeek Harness |
|
|
226
|
+
| `@deepseek-ai/dsh-goal-round-driver` | no | Race-fenced same-session goal-round driver |
|
|
227
|
+
| `@deepseek-ai/dsh-tool-goal` | yes | Model-facing same-session goal tools with execution-time authority checks |
|
|
228
|
+
|
|
229
|
+
## guard
|
|
230
|
+
|
|
231
|
+
| Package | Config | Description |
|
|
232
|
+
|---|---|---|
|
|
233
|
+
| `@deepseek-ai/dsh-repeat-tool-reminder` | yes | Repeat-tool-call guard plugin: advisory reminders when an agent loops on identical tool calls |
|
|
234
|
+
| `@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 |
|
|
235
|
+
|
|
236
|
+
## hooks
|
|
237
|
+
|
|
238
|
+
| Package | Config | Description |
|
|
239
|
+
|---|---|---|
|
|
240
|
+
| `@deepseek-ai/dsh-hooks-claude-code` | yes | Bridge plugin: run a Claude Code hooks.json / settings hook config on the DeepSeek Harness interception seams |
|
|
241
|
+
| `@deepseek-ai/dsh-hooks-codex` | yes | Bridge plugin: run a Codex hooks.json hook config on the DeepSeek Harness interception seams |
|
|
242
|
+
|
|
243
|
+
## host
|
|
244
|
+
|
|
245
|
+
| Package | Config | Description |
|
|
246
|
+
|---|---|---|
|
|
247
|
+
| `@deepseek-ai/dsh-host-directory-picker-auto` | no | Adaptive chooser of the directory-picker seam: resolves the host situation at boot and mounts the native or browse backend for the DeepSeek Harness web GUI host |
|
|
248
|
+
| `@deepseek-ai/dsh-host-directory-picker-browse` | yes | In-app browsing backend of the directory-picker seam (listing/creation primitives over the host filesystem) |
|
|
249
|
+
| `@deepseek-ai/dsh-host-directory-picker-native` | no | Native-OS-chooser backend of the directory-picker seam for the DeepSeek Harness web GUI host |
|
|
250
|
+
| `@deepseek-ai/dsh-host-frontend-static` | yes | SPA dist server for the Web shell: owns the webserver fallback seat, serving explicit index entries and static assets with traversal rejection and 404 misses |
|
|
251
|
+
| `@deepseek-ai/dsh-host-open-in-app` | yes | Host half of open-in-app: resolved application catalog, icons, and the launch endpoint as three webServer routes |
|
|
252
|
+
| `@deepseek-ai/dsh-host-plugin-inventory` | no | Read-only Remote projection of current Cordis Loader plugin state |
|
|
253
|
+
| `@deepseek-ai/dsh-host-product-telemetry-otel` | yes | Explicit product usage events exported through OpenTelemetry HTTP logs |
|
|
254
|
+
| `@deepseek-ai/dsh-host-webserver` | yes | Web route-registration plugin: HTTP and upgrade routes, index transform taps, and static dist fallback; knows no harness concepts |
|
|
255
|
+
|
|
256
|
+
## interaction
|
|
257
|
+
|
|
258
|
+
| Package | Config | Description |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| `@deepseek-ai/dsh-commands` | no | Plugin-owned human command registry for DeepSeek Harness UIs |
|
|
261
|
+
| `@deepseek-ai/dsh-permission-presets` | yes | User-facing permission presets (ctx.permissionPresets) for the DeepSeek Harness: one product-level Permissions select bundling the sandbox-mode and approval-policy knobs, written through to their own session events |
|
|
262
|
+
| `@deepseek-ai/dsh-tool-ask-user` | no | Model-facing ask_user_question tool over the ctx.userQuestions seam |
|
|
263
|
+
| `@deepseek-ai/dsh-user-approval` | yes | User-approval seam (ctx.approval) for the DeepSeek Harness: one-shot permission decisions dispatched to composed answerers over the approval/request waterfall, fail-closed by default |
|
|
264
|
+
| `@deepseek-ai/dsh-user-questions` | no | Abstract user-questions seam (ctx.userQuestions) for asking the human during agent runs |
|
|
265
|
+
|
|
266
|
+
## jobs
|
|
267
|
+
|
|
268
|
+
| Package | Config | Description |
|
|
269
|
+
|---|---|---|
|
|
270
|
+
| `@deepseek-ai/dsh-jobs-local` | yes | Process-local implementation of the DeepSeek Harness background job registry seam |
|
|
271
|
+
| `@deepseek-ai/dsh-tool-jobs` | yes | Model-facing background job control tools (job_output, job_list, job_kill) over the ctx.jobs registry |
|
|
272
|
+
|
|
273
|
+
## llm
|
|
274
|
+
|
|
275
|
+
| Package | Config | Description |
|
|
276
|
+
|---|---|---|
|
|
277
|
+
| `@deepseek-ai/dsh-deepseek-llm-api-extensions` | no | Additive request-field registry for the official DeepSeek LLM API adapter |
|
|
278
|
+
| `@deepseek-ai/dsh-llm` | no | Provider-neutral LLM service interface for the DeepSeek Harness |
|
|
279
|
+
| `@deepseek-ai/dsh-llm-deepseek` | yes | DeepSeek Messages adapter |
|
|
280
|
+
| `@deepseek-ai/dsh-llm-pi-ai` | yes | pi-ai-backed DeepSeek adapter for the DeepSeek Harness LLM seam (design-verification twin of dsh-llm-deepseek) |
|
|
281
|
+
| `@deepseek-ai/dsh-llm-retry` | yes | Provider-routed LLM request retry policy for the DeepSeek Harness |
|
|
282
|
+
| `@deepseek-ai/dsh-plugin-package-inventory-deepseek` | yes | Active Loader-backed plugin package inventory for official DeepSeek LLM API requests |
|
|
283
|
+
| `@deepseek-ai/dsh-token-meter` | yes | Replay-aware token measurement service (ctx.tokenMeter) for the DeepSeek Harness |
|
|
284
|
+
|
|
285
|
+
## lsp
|
|
286
|
+
|
|
287
|
+
| Package | Config | Description |
|
|
288
|
+
|---|---|---|
|
|
289
|
+
| `@deepseek-ai/dsh-lsp` | no | Abstract LSP capability seam (ctx.lsp) for the DeepSeek Harness — language-server provider registry keyed by branded id and extension mapping, order-independent per-query selection, normalized definition/references/implementation/hover requests and results, and the LspError taxonomy |
|
|
290
|
+
| `@deepseek-ai/dsh-lsp-stdio` | yes | Generic stdio language-server provider for the DeepSeek Harness LSP capability seam (ctx.lsp) — spawns configured servers, translates JSON-RPC, and serves transient-open goToDefinition/findReferences/goToImplementation/hover queries in the host filesystem namespace |
|
|
291
|
+
| `@deepseek-ai/dsh-tool-lsp` | yes | Model-facing lsp tool over the DeepSeek Harness LSP capability seam (ctx.lsp) — one read-only tool with goToDefinition/findReferences/goToImplementation/hover operations, one-based UTF-16 cursor coordinates, bounded location rendering, and hover normalization |
|
|
292
|
+
|
|
293
|
+
## mcp
|
|
294
|
+
|
|
295
|
+
| Package | Config | Description |
|
|
296
|
+
|---|---|---|
|
|
297
|
+
| `@deepseek-ai/dsh-mcp-client` | yes | MCP client bridge: connects to MCP servers and registers their tools on ctx.tools |
|
|
298
|
+
| `@deepseek-ai/dsh-mcp-resources` | no | Scoped MCP resource discovery and reading through shared model tools |
|
|
299
|
+
|
|
300
|
+
## plan
|
|
301
|
+
|
|
302
|
+
| Package | Config | Description |
|
|
303
|
+
|---|---|---|
|
|
304
|
+
| `@deepseek-ai/dsh-plan-mode` | yes | Logged per-agent plan mode with deployment guidance, a direct slash command, and a user-reviewed exit |
|
|
305
|
+
|
|
306
|
+
## preset
|
|
307
|
+
|
|
308
|
+
| Package | Config | Description |
|
|
309
|
+
|---|---|---|
|
|
310
|
+
| `@deepseek-ai/dsh-agent-preset` | yes | Declare an Agent capability composition in Cordis YAML |
|
|
311
|
+
| `@deepseek-ai/dsh-agent-preset-registry` | yes | Declarative Agent preset registry and profile-backed editing |
|
|
312
|
+
| `@deepseek-ai/dsh-persona` | yes | Composition-authored deployment persona section for the DeepSeek Harness |
|
|
313
|
+
|
|
314
|
+
## ptc-runtime
|
|
315
|
+
|
|
316
|
+
| Package | Config | Description |
|
|
317
|
+
|---|---|---|
|
|
318
|
+
| `@deepseek-ai/dsh-ptc-runtime-node` | yes | Sandboxed Node process implementation of the DeepSeek Harness PTC execution capability |
|
|
319
|
+
|
|
320
|
+
## runtime-diagnostics
|
|
321
|
+
|
|
322
|
+
| Package | Config | Description |
|
|
323
|
+
|---|---|---|
|
|
324
|
+
| `@deepseek-ai/dsh-invariants` | yes | Registry service for package-owned DeepSeek Harness runtime invariants |
|
|
325
|
+
|
|
326
|
+
## sandbox
|
|
327
|
+
|
|
328
|
+
| Package | Config | Description |
|
|
329
|
+
|---|---|---|
|
|
330
|
+
| `@deepseek-ai/dsh-sandbox-local` | yes | Local process-sandbox backends for the DeepSeek Harness sandbox seam: bwrap, the npm-distributed landlock-run launcher, macOS Seatbelt, or the Windows ACL restricted-token runner — functionally probed, fail-closed |
|
|
331
|
+
| `@deepseek-ai/dsh-sandbox-policy` | yes | Per-call sandbox policy resolver and current model context: deployment fallbacks plus each session's mode and workspace root, shared by every enforcing capability family |
|
|
332
|
+
|
|
333
|
+
## schedule
|
|
334
|
+
|
|
335
|
+
| Package | Config | Description |
|
|
336
|
+
|---|---|---|
|
|
337
|
+
| `@deepseek-ai/dsh-schedule` | no | Agent-scoped durable after, at, and fixed-rate reminders over the session event log |
|
|
338
|
+
|
|
339
|
+
## sdk
|
|
340
|
+
|
|
341
|
+
| Package | Config | Description |
|
|
342
|
+
|---|---|---|
|
|
343
|
+
| `@deepseek-ai/dsh-sdk-jsonrpc-server` | yes | Stdio JSON-RPC server plugin for out-of-process DeepSeek Harness SDK clients |
|
|
344
|
+
|
|
345
|
+
## session
|
|
346
|
+
|
|
347
|
+
| Package | Config | Description |
|
|
348
|
+
|---|---|---|
|
|
349
|
+
| `@deepseek-ai/dsh-session-checkpoint-policy` | no | Semantic session durability checkpoints before model requests and tool side effects |
|
|
350
|
+
| `@deepseek-ai/dsh-session-log-deepseek` | yes | Incremental lossless session-log request extension for the official DeepSeek LLM API |
|
|
351
|
+
| `@deepseek-ai/dsh-session-persistence-jsonl` | yes | JSONL durable session persistence backend for the DeepSeek Harness |
|
|
352
|
+
| `@deepseek-ai/dsh-session-projection` | no | Session-projection seam: the merge-extensible projection type table, the provider contract, and the ctx.sessionProjections registry serving whole current values of log-derived per-session state |
|
|
353
|
+
| `@deepseek-ai/dsh-session-projection-cache` | yes | Persisted projection cache (ctx.sessionProjectionCache): durable per-session checkpoint records on the session_projcache storage domain (per-record layout), throttled write-behind, and the cached listing read |
|
|
354
|
+
| `@deepseek-ai/dsh-session-stats` | no | Whole-log conversation counts and wall times projection (sessionStats) for the DeepSeek Harness |
|
|
355
|
+
| `@deepseek-ai/dsh-session-telemetry-otel` | yes | OpenTelemetry backend for the DeepSeek Harness telemetry seam: hands captured session records to the OTel JS SDK's log pipeline |
|
|
356
|
+
| `@deepseek-ai/dsh-session-title` | yes | Log-backed session title service and provider registry for the DeepSeek Harness |
|
|
357
|
+
| `@deepseek-ai/dsh-session-title-all-prompts-llm` | yes | All-user-messages LLM provider plugin for DeepSeek Harness session titles |
|
|
358
|
+
| `@deepseek-ai/dsh-session-title-first-prompt-llm` | yes | First-message LLM provider plugin for DeepSeek Harness session titles |
|
|
359
|
+
| `@deepseek-ai/dsh-session-turn-outline` | no | Whole-log turn outline projection (turnOutline) for the DeepSeek Harness |
|
|
360
|
+
|
|
361
|
+
## session-query
|
|
362
|
+
|
|
363
|
+
| Package | Config | Description |
|
|
364
|
+
|---|---|---|
|
|
365
|
+
| `@deepseek-ai/dsh-session-log-export` | yes | Web Session-log export command and shared download dialog |
|
|
366
|
+
| `@deepseek-ai/dsh-session-query-sqlite` | yes | Concrete ctx.sessionQuery backend with SQLite FTS5 search |
|
|
367
|
+
| `@deepseek-ai/dsh-tool-session-query` | yes | Workspace-authorized model-facing session history search, trace, and event read tools |
|
|
368
|
+
|
|
369
|
+
## settings
|
|
370
|
+
|
|
371
|
+
| Package | Config | Description |
|
|
372
|
+
|---|---|---|
|
|
373
|
+
| `@deepseek-ai/dsh-settings` | no | Abstract user-settings seam (ctx.settings) for the DeepSeek Harness |
|
|
374
|
+
|
|
375
|
+
## shell
|
|
376
|
+
|
|
377
|
+
| Package | Config | Description |
|
|
378
|
+
|---|---|---|
|
|
379
|
+
| `@deepseek-ai/dsh-bash-local` | yes | Local-subprocess implementation of the DeepSeek Harness bash executor seam |
|
|
380
|
+
| `@deepseek-ai/dsh-bash-sandbox` | yes | Sandbox-consuming implementation of the DeepSeek Harness bash executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts) |
|
|
381
|
+
| `@deepseek-ai/dsh-pwsh-local` | yes | Local PowerShell implementation of the DeepSeek Harness bash executor seam |
|
|
382
|
+
| `@deepseek-ai/dsh-pwsh-sandbox` | yes | Sandbox-consuming implementation of the DeepSeek Harness PowerShell executor seam (confines every command via ctx.sandbox, reports denial/enforcement result facts) |
|
|
383
|
+
| `@deepseek-ai/dsh-shell-env` | yes | Tool-independent managed DSH_* shell environment registry |
|
|
384
|
+
| `@deepseek-ai/dsh-tool-bash` | yes | Model-facing bash tool with optional generic background-job and sandbox-escalation support |
|
|
385
|
+
| `@deepseek-ai/dsh-tool-bash-persistent` | yes | Model-facing owner-scoped persistent Bash tool backed by the Harness PTY service |
|
|
386
|
+
| `@deepseek-ai/dsh-tool-pwsh` | yes | Model-facing pwsh tool over the bash executor seam |
|
|
387
|
+
| `@deepseek-ai/dsh-tool-pwsh-persistent` | yes | Model-facing owner-scoped persistent PowerShell tool backed by the Harness PTY service |
|
|
388
|
+
|
|
389
|
+
## skill
|
|
390
|
+
|
|
391
|
+
| Package | Config | Description |
|
|
392
|
+
|---|---|---|
|
|
393
|
+
| `@deepseek-ai/dsh-skill` | yes | Agent skill provider registry for the DeepSeek Harness |
|
|
394
|
+
| `@deepseek-ai/dsh-skill-badge` | no | Bundled dsh badge skill provider for DeepSeek Harness |
|
|
395
|
+
| `@deepseek-ai/dsh-skill-filesystem` | yes | Local filesystem skill provider for the DeepSeek Harness |
|
|
396
|
+
| `@deepseek-ai/dsh-skill-office` | yes | Bundled Word, PowerPoint, and Excel workflows and structural checks |
|
|
397
|
+
| `@deepseek-ai/dsh-tool-skill` | yes | Model-facing skill loading tool for the DeepSeek Harness |
|
|
398
|
+
| `@deepseek-ai/dsh-tool-workspace-dependencies` | yes | The load_workspace_dependencies tool: absolute paths into a bundled Python, Node.js, and pnpm payload |
|
|
399
|
+
|
|
400
|
+
## spill
|
|
401
|
+
|
|
402
|
+
| Package | Config | Description |
|
|
403
|
+
|---|---|---|
|
|
404
|
+
| `@deepseek-ai/dsh-spill-local` | yes | Local-filesystem implementation of the DeepSeek Harness spill storage seam (private session-scoped files) |
|
|
405
|
+
| `@deepseek-ai/dsh-spill-policy` | yes | Tool-result spill policy for the DeepSeek Harness — replaces oversized plain-text tool results with a retained preview plus a spill-file path (no service API) |
|
|
406
|
+
|
|
407
|
+
## ssh
|
|
408
|
+
|
|
409
|
+
| Package | Config | Description |
|
|
410
|
+
|---|---|---|
|
|
411
|
+
| `@deepseek-ai/dsh-fs-ssh` | no | Filesystem provider over the shared POSIX SSH helper |
|
|
412
|
+
| `@deepseek-ai/dsh-sandbox-ssh` | no | Remote POSIX sandbox argv provider over the shared SSH helper |
|
|
413
|
+
| `@deepseek-ai/dsh-ssh` | yes | Shared OpenSSH connection and versioned POSIX remote helper |
|
|
414
|
+
| `@deepseek-ai/dsh-subprocess-ssh` | no | Subprocess and terminal provider over the shared POSIX SSH helper |
|
|
415
|
+
|
|
416
|
+
## storage
|
|
417
|
+
|
|
418
|
+
| Package | Config | Description |
|
|
419
|
+
|---|---|---|
|
|
420
|
+
| `@deepseek-ai/dsh-storage` | no | Storage hub (ctx.storage): named backend registry plus mounted data-form facilities for the DeepSeek Harness |
|
|
421
|
+
| `@deepseek-ai/dsh-storage-domain` | yes | Domain data form (ctx.storage.domain): schema-validated, event-emitting KV domains over storage backends for the DeepSeek Harness |
|
|
422
|
+
| `@deepseek-ai/dsh-storage-json` | yes | JSON file KV storage backend for the DeepSeek Harness storage hub |
|
|
423
|
+
| `@deepseek-ai/dsh-storage-sqlite` | yes | SQLite storage backend (kv facet) for the DeepSeek Harness storage hub |
|
|
424
|
+
|
|
425
|
+
## subagent
|
|
426
|
+
|
|
427
|
+
| Package | Config | Description |
|
|
428
|
+
|---|---|---|
|
|
429
|
+
| `@deepseek-ai/dsh-subagent` | yes | Abstract subagent seam (ctx.subagents): named-provider registry for delegating to child agents |
|
|
430
|
+
| `@deepseek-ai/dsh-subagent-acp` | yes | Out-of-process ACP subagent backend: drives a child agent in a spawned subprocess over the Agent Client Protocol |
|
|
431
|
+
| `@deepseek-ai/dsh-subagent-claude-code` | yes | One-shot Claude Code subagent provider over the official Agent SDK |
|
|
432
|
+
| `@deepseek-ai/dsh-subagent-codex` | yes | One-shot Codex subagent provider over the official app-server protocol |
|
|
433
|
+
| `@deepseek-ai/dsh-subagent-dsh-sdk` | yes | Out-of-process SDK subagent backend: drives a child DeepSeek Harness runtime subprocess over stdio JSON-RPC through the TypeScript SDK client |
|
|
434
|
+
| `@deepseek-ai/dsh-subagent-fork-in-process` | yes | In-process fork subagent backend: runs a child agent seeded with a prefix of the parent's log |
|
|
435
|
+
| `@deepseek-ai/dsh-subagent-spawn-in-process` | yes | In-process spawn subagent backend: runs a fresh child agent on ctx.agents |
|
|
436
|
+
| `@deepseek-ai/dsh-tool-subagent` | yes | Model-facing subagent delegation tool over the ctx.subagents seam |
|
|
437
|
+
| `@deepseek-ai/dsh-tool-subagent-control` | no | Globally named send_message, interrupt_agent, and list_agents tools over ctx.subagents continuations |
|
|
438
|
+
|
|
439
|
+
## subprocess
|
|
440
|
+
|
|
441
|
+
| Package | Config | Description |
|
|
442
|
+
|---|---|---|
|
|
443
|
+
| `@deepseek-ai/dsh-subprocess-local` | no | Local-subprocess implementation of the DeepSeek Harness subprocess seam |
|
|
444
|
+
|
|
445
|
+
## terminal
|
|
446
|
+
|
|
447
|
+
| Package | Config | Description |
|
|
448
|
+
|---|---|---|
|
|
449
|
+
| `@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 |
|
|
450
|
+
| `@deepseek-ai/dsh-terminal-bash` | yes | Persistent shell PTY backend over the DeepSeek Harness subprocess terminal primitive |
|
|
451
|
+
| `@deepseek-ai/dsh-tool-terminal` | yes | Six model-facing persistent PTY tools with owner isolation and generic background-job integration |
|
|
452
|
+
|
|
453
|
+
## test-support
|
|
454
|
+
|
|
455
|
+
| Package | Config | Description |
|
|
456
|
+
|---|---|---|
|
|
457
|
+
| `@deepseek-ai/dsh-llm-replay` | yes | Replay LLM plugin: short-circuits llm/stream with model chunks reconstructed from a recorded session JSONL (keyless snapshot tests) |
|
|
458
|
+
|
|
459
|
+
## todo
|
|
460
|
+
|
|
461
|
+
| Package | Config | Description |
|
|
462
|
+
|---|---|---|
|
|
463
|
+
| `@deepseek-ai/dsh-tool-todo` | yes | Model-facing todo_write tool over the DeepSeek Harness event-sourced session log |
|
|
464
|
+
|
|
465
|
+
## typert
|
|
466
|
+
|
|
467
|
+
| Package | Config | Description |
|
|
468
|
+
|---|---|---|
|
|
469
|
+
| `@deepseek-ai/dsh-typert-loader` | yes | Loader integration for generated Typert package contributions |
|
|
470
|
+
|
|
471
|
+
## web
|
|
472
|
+
|
|
473
|
+
| Package | Config | Description |
|
|
474
|
+
|---|---|---|
|
|
475
|
+
| `@deepseek-ai/dsh-tool-web` | yes | Model-facing web tools (web_search, web_fetch) over the DeepSeek Harness web capability seam (ctx.web) |
|
|
476
|
+
| `@deepseek-ai/dsh-web` | yes | Abstract web access capability seam (ctx.web) for the DeepSeek Harness — search/fetch provider registry, registration-order-independent selection, request/result vocabulary, and the WebError taxonomy |
|
|
477
|
+
| `@deepseek-ai/dsh-web-fetch-http` | yes | Anonymous public HTTP(S) fetch provider for the DeepSeek Harness web capability seam (ctx.web) |
|
|
478
|
+
| `@deepseek-ai/dsh-web-search-deepseek` | yes | DeepSeek-backed search provider (native web_search via the Anthropic-compatible API) for the DeepSeek Harness web capability seam (ctx.web) |
|
|
479
|
+
| `@deepseek-ai/dsh-web-search-exa` | yes | Exa-backed search provider for the DeepSeek Harness web capability seam (ctx.web) |
|
|
480
|
+
| `@deepseek-ai/dsh-web-search-perplexity` | yes | Perplexity-backed search provider for the DeepSeek Harness web capability seam (ctx.web) |
|
|
481
|
+
|
|
482
|
+
## webhook
|
|
483
|
+
|
|
484
|
+
| Package | Config | Description |
|
|
485
|
+
|---|---|---|
|
|
486
|
+
| `@deepseek-ai/dsh-webhook` | no | Fire-and-forget webhook rule runtime that creates Workspace-backed DeepSeek Harness Sessions |
|
|
487
|
+
| `@deepseek-ai/dsh-webhook-github` | yes | Signed GitHub HTTP webhook adapter for the DeepSeek Harness webhook runtime |
|
|
488
|
+
|
|
489
|
+
## workflow
|
|
490
|
+
|
|
491
|
+
| Package | Config | Description |
|
|
492
|
+
|---|---|---|
|
|
493
|
+
| `@deepseek-ai/dsh-tool-ralph` | yes | Model-facing fresh-agent Ralph loop over the workflow and subagent seams |
|
|
494
|
+
| `@deepseek-ai/dsh-tool-workflow` | yes | Model-facing workflow tool: run a JavaScript orchestration script over ctx.workflowEngine |
|
|
495
|
+
| `@deepseek-ai/dsh-workflow-ptc` | yes | Workflow orchestration in the shared sandboxed Node PTC runtime |
|
|
496
|
+
|
|
497
|
+
## workspace
|
|
498
|
+
|
|
499
|
+
| Package | Config | Description |
|
|
500
|
+
|---|---|---|
|
|
501
|
+
| `@deepseek-ai/dsh-workspace` | no | Workspace entity registry (ctx.workspaceRegistry): durable workspace records with validated session attachment over the domain data form for the DeepSeek Harness |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cordis-plugin-development
|
|
3
|
+
description: Use when authoring, installing, configuring, or debugging persistent plugins and MCP connections in the current Harness profile, and for any visual object, decoration, or widget request that names no other destination, which means an installed UI plugin rendered in the Harness Web UI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Persistent Harness plugins
|
|
7
|
+
|
|
8
|
+
Use ordinary workspace files to author a bundle, then `plugin_manager` with `action: install_bundle` and the absolute package directory as `target` to install it in the current profile. Changes affect every session in that profile and survive restart. Load `editing-cordis-compositions` for agent preset changes.
|
|
9
|
+
|
|
10
|
+
## Deliver a working plugin first
|
|
11
|
+
|
|
12
|
+
1. Resolve the requested result and destination. An unspecified visual destination is the current Harness Web UI; a standalone image or HTML file does not complete such a request. Choose reasonable visual details and implement a small first version; install it before visual refinement.
|
|
13
|
+
2. Discover only the APIs needed for that version: `cordis_inspect_list`, then targeted `cordis_inspect_query` calls. For UI, query Client `Slots.listSubTree` and the selected slot's registration options and props. Once the chosen slot and registration API are known, write the plugin.
|
|
14
|
+
3. Read the matching template under `templates/` with the file-read tool and write its copies into one workspace directory, or write the installable package, patch, and required Host/Client files there yourself. Check JavaScript syntax and the manifest, then install it. Before that first installation, do not create preview HTML, mock shells, design variants, screenshot scripts, or rasterizer tooling. Use the installed plugin itself as the first preview.
|
|
15
|
+
4. Read the installation result. After `application: applied`, exercise the capability or inspect the live Client registration. Use the connected page for visual verification when browser control is available. State any verification limitation explicitly; installation and slot registration alone do not establish what the user can see.
|
|
16
|
+
5. Fix observed defects in the same plugin. When the requested result works, finish with its location and verification status. Do not continue speculative visual variants, optional features, or a new mock preview. Close any task list you created.
|
|
17
|
+
|
|
18
|
+
## Knowledge sources, in order
|
|
19
|
+
|
|
20
|
+
1. Inspection: `cordis_inspect_query` answers exact Service methods and Event modes (`Service`, `Event`), a mounted plugin's Config JSON Schema (`Config.listConfigs`: filter the paged directory by `name`, then query the `entry` id), the Tools this Agent can call (`Tool`), and live Client Slots and theme tokens (`Slots`, `Theme`).
|
|
21
|
+
2. Package documentation: `Config.listConfigs` with `name` set to the package finds its entries; querying one `entry` returns its `packageDir`, the resolved package directory. Read `<packageDir>/README.md`. Bundled packages resolve from the dsh installation and profile-installed bundles from the profile, so never guess the path from `$DSH_PROFILE_DIR`.
|
|
22
|
+
3. Source: installed packages ship built `lib/index.js` and `lib/types/**/*.d.ts` with JSDoc under that same `packageDir`, not `src/`; a source checkout of DSH has `packages/<group>/<name>/src`. Read them when inspection and the README leave a question open, and start source-level diagnosis from a concrete installation or runtime failure.
|
|
23
|
+
|
|
24
|
+
`DSH_PROFILE` (profile name) and `DSH_PROFILE_DIR` (its directory, whose `node_modules` holds only profile-installed bundles) are set in every shell call of a profile-launched Harness and absent when the Harness was booted without a profile. Bash reads them as `$DSH_PROFILE`; PowerShell, which the Windows preset uses, reads them as `$env:DSH_PROFILE`. With `dsh` on the PATH, `dsh --profile "$DSH_PROFILE" --dump-config` prints the composed profile.
|
|
25
|
+
|
|
26
|
+
## Read next
|
|
27
|
+
|
|
28
|
+
The files below live in this skill's base directory, which the `skill` tool reported, and the table is the complete list: do not enumerate that directory. In every deployment, including a source checkout, read these files with the file-read tool, write copies into the workspace with the file-write tool, and verify a copy by reading it back. In Desktop the directory sits inside `app.asar`, which only the Host process's own file reads can open; shell commands (`ls`, `cat`, `cp`, `cmp`), the glob and search tools (they run a native ripgrep process), `node`, and pnpm all fail on it. Never install or syntax-check a template in place; copy its contents into the workspace first.
|
|
29
|
+
|
|
30
|
+
| Task | File |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Bundle manifest, display metadata and icon, install and enable semantics, Host plugin export forms, Config | `references/host-plugin.md` |
|
|
33
|
+
| A UI plugin rendered in the Web page: Client manifest, module loader, slot registration | `references/ui-plugin.md` |
|
|
34
|
+
| Connecting an MCP server through a configuration-only bundle | `references/mcp-bundle.md` |
|
|
35
|
+
| Verification limits when no browser control is available | `references/verification.md` |
|
|
36
|
+
| UI plugin starting point, four files | `templates/decoration/package.json`, `templates/decoration/cordis.patch.yml`, `templates/decoration/index.js`, `templates/decoration/client.js` |
|
|
37
|
+
| MCP bundle starting point, two files | `templates/mcp/package.json`, `templates/mcp/cordis.patch.yml` |
|
|
38
|
+
| Loader patch dialect and the list of installable plugin packages | the `cordis-composition-reference` skill |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Bundles and Host plugins
|
|
2
|
+
|
|
3
|
+
A bundle is a package whose `package.json` declares `dsh.bundle.patch`; the YAML patch inserts plugin entries. Give the package and rows unique names; use the Loader's existing YAML syntax, including `!!js` where expressions are needed. Read an existing patch before editing it: a matching override replaces the complete `config`.
|
|
4
|
+
|
|
5
|
+
## Manifest
|
|
6
|
+
|
|
7
|
+
A Host-only bundle needs no dependencies, install scripts, or build tool:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"name": "@local/my-plugin",
|
|
12
|
+
"version": "1.0.0",
|
|
13
|
+
"private": true,
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": { ".": "./index.js" },
|
|
16
|
+
"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`cordis.patch.yml`:
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
- insert:
|
|
24
|
+
- id: my-plugin
|
|
25
|
+
name: '@local/my-plugin'
|
|
26
|
+
config: {}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Display metadata and icon
|
|
30
|
+
|
|
31
|
+
Plugin Manager cards, bundle details, component rows, and the Settings plugin inventory read display text and an icon from the manifest without activating the plugin. Put the title and description in `locale/en.json` (other languages such as `locale/zh.json` use the same fields), and declare the icon as a top-level `icon` in `package.json`:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{ "meta": { "title": "My Decoration", "description": "Draws a badge under the composer." } }
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"icon": "./icon.svg",
|
|
40
|
+
"exports": { "./package.json": "./package.json", "./locale/*.json": "./locale/*.json" },
|
|
41
|
+
"files": ["locale/*.json", "icon.svg"]
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`icon` is a path relative to the manifest directory; SVG, PNG, JPEG, and WebP up to 256 KiB are accepted, while absolute paths, URLs, paths outside the directory, and symlinks leaving it are rejected. Missing fields fall back to `package.json` `name` and `description` and to the panel's default artwork; malformed metadata produces a diagnostic and keeps the valid text.
|
|
46
|
+
|
|
47
|
+
## Host plugin export forms
|
|
48
|
+
|
|
49
|
+
`index.js` exports one of these forms; do not mix them:
|
|
50
|
+
|
|
51
|
+
- `export function apply(ctx, config) {}` with optional `export const inject = ['tools']` and `export const Config`.
|
|
52
|
+
- A service class as the default export.
|
|
53
|
+
|
|
54
|
+
Register every resource inside `apply` with `ctx.effect` or `ctx.on` and return its cleanup. A plugin that declares `Config` validates the row's `config` at activation; query `Config.listConfigs` for an installed plugin's schema before writing its `config`, and follow `$defs` references in the returned document.
|
|
55
|
+
|
|
56
|
+
## Install, enable, and observe
|
|
57
|
+
|
|
58
|
+
`plugin_manager` `install_bundle` performs package installation and bundle selection; do not reproduce those steps with shell commands. Only pass `approvedBuilds` after the user explicitly approves the reported pending build scripts. Preserve returned failures and pending states; report success only after observing the requested capability.
|
|
59
|
+
|
|
60
|
+
`list_plugins` and `list_bundles` return exact identifiers for existing installations. `set_plugin` and `set_bundle` toggle them; `remove_bundle` removes a bundle. Inspect saved-state and activation outcomes separately: `failed` requires diagnosis, `overridden` means a higher-priority layer wins, and `restart-required` means the change is not live. Installing a new bundle can activate through HMR; replacing an installed package requires restart to load a fresh JavaScript module generation. Do not infer updated browser code from an unchanged slot id.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Connect an MCP server
|
|
2
|
+
|
|
3
|
+
Read `templates/mcp/` with the file-read tool and write its files into your bundle directory. A configuration-only bundle's manifest needs a unique name, version, and `dsh.bundle.patch`, but no Host/Client entry files. Its patch, `templates/mcp/cordis.patch.yml`, inserts the already installed `@deepseek-ai/dsh-mcp-client` with `serverName`, `transport: streamable-http`, `url`, and `failOnStartupError: true`.
|
|
4
|
+
|
|
5
|
+
Replace the endpoint, install the bundle through `plugin_manager`, then call `mcp__demo__ping` or another newly available `mcp__<serverName>__<tool>` tool to verify the connection. For stdio, use `transport: stdio`, `command`, and optional `args`, `env`, and `cwd`; `Config.listConfigs` on the installed row returns the complete client schema. Ambient credentials are scrubbed; reference existing credentials with Loader `!!js` rather than copying secrets into conversation text. Repair the same bundle on failure instead of creating duplicates.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# UI plugins in the Web page
|
|
2
|
+
|
|
3
|
+
Read `templates/decoration/` with the file-read tool and write its files into your bundle directory: its `package.json` adds a `dsh.client` section (`platform`, `immediately`, `inject`) and a `./client` export beside the bundle patch.
|
|
4
|
+
|
|
5
|
+
`index.js` exports `export function apply() {}`; the patch inserts one row named after the package. For a simple drawing, prefer a slot with allocated space, such as `conversation.composer.dock` when available. Keep the first version within that slot's flow; do not plan a motion path around host controls. Use `shell.overlay` only when the request needs an overlay and its placement is known.
|
|
6
|
+
|
|
7
|
+
## Client module
|
|
8
|
+
|
|
9
|
+
The browser artifact registers a lazy factory whose id equals the package name. React comes from the browser module table; no duplicate React installation, CDN script, or UMD search is needed. For compiled sources, use the deployment's Client build tooling to emit this format; declare non-baseline runtime imports in `dsh.client.external`.
|
|
10
|
+
|
|
11
|
+
`templates/decoration/client.js` registers a lazy factory into `conversation.composer.dock` through `ctx.slots.inject` and `ctx.slots.register`; follow the selected slot's props and options from `Slots.listSubTree` when you change the slot.
|
|
12
|
+
|
|
13
|
+
Keep factories free of side effects. Register styles, timers, listeners and other resources inside `apply` with `ctx.effect`/`ctx.on` and return their cleanup functions. Component-local styles can render as React elements so unmounting removes them. Verify disposal for resources you add. Inherit the host theme for containers and controls; artwork may use its own colors. Route visible UI text through the Client locale service. Do not replace the app root or append a second application to `document.body`. Do not read another plugin's DOM, stylesheet, or component source to estimate placement; choose a slot that already allocates space.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Verify in the available environment
|
|
2
|
+
|
|
3
|
+
Prefer the authenticated page already connected to Harness. Do not launch a separate browser from shell commands, change `HOME`, inspect personal browser profiles, search for authentication tokens, or alter keychains to obtain a screenshot. For a visual-only request without browser control, limit verification to JavaScript syntax, manifest validation, and the live Client slot, then report that visual verification remains unavailable. Before or after installation, do not search for rasterizers, invoke Quick Look, extract SVG into preview files, emulate React/DOM, or implement a custom renderer to compensate for missing browser control. A screenshot of a mock page is not verification of the running plugin.
|
|
4
|
+
|
|
5
|
+
For any test subprocess or temporary resource, use a unique owned directory, bound execution, and await cleanup. A failed optional preview must not turn into environment repair or block installation.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({
|
|
2
|
+
id: '@local/my-decoration',
|
|
3
|
+
factory(require) {
|
|
4
|
+
const React = require('react');
|
|
5
|
+
const h = React.createElement;
|
|
6
|
+
function Decoration() {
|
|
7
|
+
return h('svg', {
|
|
8
|
+
viewBox: '0 0 64 64', width: 48, height: 48,
|
|
9
|
+
'aria-hidden': true,
|
|
10
|
+
style: { display: 'block', pointerEvents: 'none' },
|
|
11
|
+
}, h('circle', { cx: 32, cy: 32, r: 24, fill: '#247bbf' }));
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
inject: ['slots'],
|
|
15
|
+
apply(ctx) {
|
|
16
|
+
ctx.slots.inject('conversation.composer.dock', () => ctx.slots.register({
|
|
17
|
+
name: 'conversation.composer.dock', id: 'my-decoration', order: 5,
|
|
18
|
+
}, Decoration));
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@local/my-decoration",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": { ".": "./index.js", "./client": "./client.js" },
|
|
7
|
+
"dsh": {
|
|
8
|
+
"bundle": { "patch": "./cordis.patch.yml" },
|
|
9
|
+
"client": {
|
|
10
|
+
"platform": "web",
|
|
11
|
+
"immediately": true,
|
|
12
|
+
"inject": ["@deepseek-ai/dsh-client-ui-conversation"]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: editing-cordis-compositions
|
|
3
|
+
description: Use when creating, changing, or validating an agent preset or other Cordis composition for this harness, including deciding host versus preset placement and checking that an authored preset mounts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Editing Cordis compositions
|
|
7
|
+
|
|
8
|
+
Agent presets are ordinary `@deepseek-ai/dsh-agent-preset` declarations carried by bundle patches. Nothing edits a declaration in place: a preset is created or changed by installing a bundle whose patch declares or overrides it. This file states the declaration format; when it leaves a question open, read the `@deepseek-ai/dsh-agent-preset` README and `lib/types` declarations under the `packageDir` that `cordis_inspect_query` `Config.listConfigs` returns when queried with a `preset-<id>` row's `entry` id, or `packages/preset/agent-preset/src` in a source checkout.
|
|
9
|
+
|
|
10
|
+
## Where declarations live
|
|
11
|
+
|
|
12
|
+
The shipped Web presets are `presets/<id>.patch.yml` files of the `@deepseek-ai/dsh-web-app` bundle, ids `standard`, `ptc`, `minimal` and `cordis`. Installed, the bundle resolves from the dsh installation, not the profile; querying `Config.listConfigs` with the `entry` id of any `preset-<id>` row it declares returns that `packageDir`. In a source checkout of DSH it is `packages/bundle/web-app/`. Read one file with the file-read tool when you need a template; `minimal.patch.yml` is the shortest. In Desktop the bundle sits inside `app.asar`, which shell commands cannot open. Load `cordis-composition-reference` for the patch dialect and the list of plugin packages a preset can mount.
|
|
13
|
+
|
|
14
|
+
A declaration row has these `config` fields: `id` (required, lowercase letters, digits and hyphens), `plugins` (required Cordis entry list), and optional `name`, `description` and `order` (roster position). The Loader row `id` is `preset-<id>` by convention.
|
|
15
|
+
|
|
16
|
+
## Create a preset
|
|
17
|
+
|
|
18
|
+
Write a bundle directory in the workspace with exactly two files, then install it.
|
|
19
|
+
|
|
20
|
+
`review-preset/package.json`:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"name": "@local/dsh-review-preset",
|
|
25
|
+
"version": "1.0.0",
|
|
26
|
+
"private": true,
|
|
27
|
+
"type": "module",
|
|
28
|
+
"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`review-preset/cordis.patch.yml`:
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
- insert:
|
|
36
|
+
- id: preset-review
|
|
37
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
38
|
+
config:
|
|
39
|
+
id: review
|
|
40
|
+
name: Review
|
|
41
|
+
description: Reviews changes with the shell only.
|
|
42
|
+
order: 10
|
|
43
|
+
plugins:
|
|
44
|
+
- id: persona
|
|
45
|
+
name: '@deepseek-ai/dsh-persona'
|
|
46
|
+
config:
|
|
47
|
+
prefix: You review software changes.
|
|
48
|
+
- id: tool-bash
|
|
49
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Install with `plugin_manager`, `action: install_bundle`, `target` set to the absolute bundle directory. It runs package installation and bundle selection itself; do not reproduce those steps with shell commands.
|
|
53
|
+
|
|
54
|
+
## Change a shipped preset
|
|
55
|
+
|
|
56
|
+
Override the declaration by its Loader row id instead of inserting. The override replaces the complete `config`, so restate `id`, `plugins` and every other field the shipped file carries:
|
|
57
|
+
|
|
58
|
+
```yaml
|
|
59
|
+
- id: preset-standard
|
|
60
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
61
|
+
config:
|
|
62
|
+
id: standard
|
|
63
|
+
order: 1
|
|
64
|
+
plugins:
|
|
65
|
+
# the shipped list with your changes
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Migrate a legacy preset
|
|
69
|
+
|
|
70
|
+
Before declaration rows, a user preset was a directory `$DSH_HOME/.agent-presets/<id>/` holding `preset.yml` (display `name`, `description`, `order`) and `agent.cordis.yml` (the plugin entry list). Nothing reads that directory any more. To migrate one, create a bundle as above whose declaration takes `id` from the directory name, `name`, `description`, and `order` from `preset.yml`, and `plugins` from `agent.cordis.yml` verbatim; check each plugin name against `cordis-composition-reference` because packages renamed since the preset was written fail at activation. Install it, verify the row, then delete the legacy directory.
|
|
71
|
+
|
|
72
|
+
## Verify
|
|
73
|
+
|
|
74
|
+
`plugin_manager` `list_bundles` lists the installed bundle; `list_plugins` shows the `preset-<id>` row with its activation state. A declaration whose activation fails stays on the roster with its diagnostic and cannot compose a session until the bundle is fixed and reinstalled. Existing sessions and their children keep the plugin revision they started with; validate changed behavior in a new session. Installing a bundle executes plugin code in the Host process, so it requires Full access or approval.
|
|
75
|
+
|
|
76
|
+
## Choose plugin placement
|
|
77
|
+
|
|
78
|
+
Host plugins supply shared services: tools and prompt registries, the Agent loop, sessions, persistence, settings, sandbox policy, model routes, and subagent backends. Preset plugins contribute scoped tools, persona, prompt sections, and policies to those registries. Preset revisions are eagerly activated once and shared by their selecting Agents.
|
|
79
|
+
|
|
80
|
+
A preset plugin that supplies a service must isolate the provider and all its consumers in the same realm. A service consumed by Host plugins belongs in the Host configuration. Scope controls contributions and event visibility; `isolate` controls service instances. Use ordinary Cordis groups for nested plugin lists. Keep `!!js` expressions only in plugin configuration or `disabled`; the Loader evaluates them when activating the child plugin. Resolve assets from installed packages rather than a preset directory.
|
|
81
|
+
|
|
82
|
+
## Extend the Host
|
|
83
|
+
|
|
84
|
+
For new plugin code or profile-wide capabilities, load `cordis-plugin-development`, author a workspace bundle, and install it with `plugin_manager`. Inspect available APIs through `cordis_inspect_list` and `cordis_inspect_query`, including a mounted plugin's Config schema through the Host `Config` provider; those tools do not invoke Remote methods. Verify the installed capability before reporting completion.
|