@alpacachen/dsh-kanban 1.0.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.md +144 -0
- package/README.zh.md +144 -0
- package/cordis.patch.yml +6 -0
- package/image.png +0 -0
- package/index.js +621 -0
- package/lib/client.js +2092 -0
- package/package.json +89 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 alpacachen
|
|
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.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# dsh-kanban
|
|
4
|
+
|
|
5
|
+
**Plan with your AI. See the work move.**
|
|
6
|
+
|
|
7
|
+
A shared kanban board for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), built for both people and agents.
|
|
8
|
+
|
|
9
|
+
[简体中文](README.zh.md) · English
|
|
10
|
+
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
Turn a conversation into an actionable plan without copying tasks between your AI assistant and a project tracker. Ask the agent to break down a feature, prioritize a bug, or move finished work—the same changes appear instantly in the **Board** tab, where you can continue organizing everything by hand.
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="./image.png" alt="dsh-kanban board inside DeepSeek Harness" width="100%">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
## Why dsh-kanban?
|
|
20
|
+
|
|
21
|
+
- **Plan in conversation** — 13 `kanban_*` tools let the agent create and manage cards, lists, and labels.
|
|
22
|
+
- **Stay in control** — edit cards, drag work between lists, reorder your workflow, and filter by priority from the UI.
|
|
23
|
+
- **Keep projects separate** — every DSH workspace gets its own board and persisted data.
|
|
24
|
+
- **Feel at home in DSH** — the board follows the active language and theme, including dark mode.
|
|
25
|
+
- **Install and go** — the browser bundle is prebuilt; no frontend toolchain or native build step is required.
|
|
26
|
+
|
|
27
|
+
## Quick start
|
|
28
|
+
|
|
29
|
+
### 1. Install the plugin
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
# From GitHub
|
|
33
|
+
dsh plugin --profile web add github:alpacachen/dsh-kanban
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
You can also install the published npm package or a local checkout:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
dsh plugin --profile web add @alpacachen/dsh-kanban
|
|
40
|
+
dsh plugin --profile web add ./dsh-kanban
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Restart `dsh web` after installation so the plugin bundle is loaded. To confirm that it was added successfully:
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
dsh --profile web --dump-config
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The output should include a `dsh-kanban` layer.
|
|
50
|
+
|
|
51
|
+
### 2. Open the board
|
|
52
|
+
|
|
53
|
+
Open a workspace and select the **Board** tab next to the conversation views. A new board starts with **Todo**, **In Progress**, **Review**, and **Done**.
|
|
54
|
+
|
|
55
|
+
### 3. Plan with the agent
|
|
56
|
+
|
|
57
|
+
Try a prompt like:
|
|
58
|
+
|
|
59
|
+
> Break the authentication feature into implementation tasks, add one card per step, and mark the security review as P0.
|
|
60
|
+
|
|
61
|
+
The agent updates the board directly. You can then refine the plan in the UI, or keep working through conversation.
|
|
62
|
+
|
|
63
|
+
## What you can do
|
|
64
|
+
|
|
65
|
+
### From the Board tab
|
|
66
|
+
|
|
67
|
+
- Create, edit, delete, and drag cards between lists
|
|
68
|
+
- Add notes, labels, and P0 / P1 / P2 priorities
|
|
69
|
+
- Create, rename, reorder, and remove lists
|
|
70
|
+
- Create labels and customize their colors
|
|
71
|
+
- Filter the board by priority
|
|
72
|
+
|
|
73
|
+
### From a conversation
|
|
74
|
+
|
|
75
|
+
The plugin makes these tools available automatically in every workspace conversation:
|
|
76
|
+
|
|
77
|
+
| Area | Tools |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| Board | `kanban_get` |
|
|
80
|
+
| Cards | `kanban_add_card`, `kanban_update_card`, `kanban_delete_card`, `kanban_move_card` |
|
|
81
|
+
| Lists | `kanban_add_column`, `kanban_rename_column`, `kanban_delete_column`, `kanban_move_column` |
|
|
82
|
+
| Labels | `kanban_get_label`, `kanban_add_label`, `kanban_update_label`, `kanban_delete_label` |
|
|
83
|
+
|
|
84
|
+
A few more things you can ask:
|
|
85
|
+
|
|
86
|
+
- “Summarize what is currently in progress.”
|
|
87
|
+
- “Move ‘Fix login redirect’ to In Progress and set it to P0.”
|
|
88
|
+
- “Add a Blocked list after In Progress.”
|
|
89
|
+
- “Create a red Urgent label and apply it to the release card.”
|
|
90
|
+
|
|
91
|
+
## Data and persistence
|
|
92
|
+
|
|
93
|
+
Boards are isolated by workspace and stored through the DSH filesystem service as `kanban-board-<workspaceId>.json`. They survive browser refreshes and DSH restarts, and uninstalling the plugin does not delete existing board data.
|
|
94
|
+
|
|
95
|
+
## How it works
|
|
96
|
+
|
|
97
|
+
`dsh-kanban` uses the standard DSH bundle format:
|
|
98
|
+
|
|
99
|
+
- `index.js` registers the agent tools and the `/api/kanban` browser endpoint.
|
|
100
|
+
- Both interfaces share one data layer, so the agent and the Board tab always operate on the same board.
|
|
101
|
+
- `cordis.patch.yml` adds the plugin to the selected DSH profile.
|
|
102
|
+
- `lib/client.js` is the prebuilt web client loaded by DSH.
|
|
103
|
+
|
|
104
|
+
The client is built with React, TypeScript, Tailwind CSS, shadcn/ui, Radix UI, and dnd-kit. React itself is provided by DSH, keeping the distributed bundle smaller and avoiding duplicate runtimes.
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
Requirements: Node.js and pnpm.
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
pnpm install
|
|
112
|
+
pnpm build
|
|
113
|
+
pnpm typecheck
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
For an unminified client bundle while debugging:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
node build.mjs --no-minify
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Project layout:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
index.js # Host plugin, tools, persistence, and HTTP endpoint
|
|
126
|
+
cordis.patch.yml # DSH bundle patch
|
|
127
|
+
build.mjs # Client build script
|
|
128
|
+
src/client/ # React and TypeScript source
|
|
129
|
+
lib/client.js # Prebuilt browser bundle published with the package
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Contributing
|
|
133
|
+
|
|
134
|
+
Issues and pull requests are welcome. If you are planning a larger change, opening an issue first is a good way to align on the approach before implementation.
|
|
135
|
+
|
|
136
|
+
## Uninstall
|
|
137
|
+
|
|
138
|
+
```sh
|
|
139
|
+
dsh plugin --profile web remove @alpacachen/dsh-kanban
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
MIT
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# dsh-kanban
|
|
4
|
+
|
|
5
|
+
**和 AI 一起规划,在看板上看到进展。**
|
|
6
|
+
|
|
7
|
+
一个为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 打造、由你和 Agent 共同维护的项目看板。
|
|
8
|
+
|
|
9
|
+
简体中文 · [English](README.md)
|
|
10
|
+
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
不用再把 AI 给出的计划手动搬进项目管理工具。让 Agent 拆解功能、调整优先级或推进任务,变更会立即出现在 **「看板」**标签页;你也可以随时接手,通过拖拽和编辑继续整理工作。
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<img src="./image.png" alt="DeepSeek Harness 中的 dsh-kanban 看板界面" width="100%">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
## 为什么是 dsh-kanban?
|
|
20
|
+
|
|
21
|
+
- **在对话里完成规划**:13 个 `kanban_*` 工具让 Agent 能直接管理卡片、列表和标签。
|
|
22
|
+
- **一切仍由你掌控**:编辑卡片、跨列拖拽、调整工作流,或按优先级筛选任务。
|
|
23
|
+
- **项目之间互不干扰**:每个 DSH 工作区都有独立看板,并自动持久化数据。
|
|
24
|
+
- **自然融入 DSH**:界面跟随当前语言和主题,也支持暗色模式。
|
|
25
|
+
- **安装后即可使用**:浏览器端已预构建,不需要额外配置前端工具链,也没有原生构建步骤。
|
|
26
|
+
|
|
27
|
+
## 快速开始
|
|
28
|
+
|
|
29
|
+
### 1. 安装插件
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
# 从 GitHub 安装
|
|
33
|
+
dsh plugin --profile web add github:alpacachen/dsh-kanban
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
也可以从 npm 或本地目录安装:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
dsh plugin --profile web add @alpacachen/dsh-kanban
|
|
40
|
+
dsh plugin --profile web add ./dsh-kanban
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
安装后重启 `dsh web`,让插件 bundle 在启动时加载。可以通过下面的命令确认配置:
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
dsh --profile web --dump-config
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
如果安装成功,输出中会包含 `dsh-kanban` 配置层。
|
|
50
|
+
|
|
51
|
+
### 2. 打开看板
|
|
52
|
+
|
|
53
|
+
进入任意工作区,在会话视图旁打开**「看板」**标签页。新看板默认包含 **Todo**、**In Progress**、**Review** 和 **Done** 四个列表。
|
|
54
|
+
|
|
55
|
+
### 3. 让 Agent 开始规划
|
|
56
|
+
|
|
57
|
+
试试这样说:
|
|
58
|
+
|
|
59
|
+
> 把登录功能拆成具体的实现任务,每一步建一张卡片,并把安全审查标为 P0。
|
|
60
|
+
|
|
61
|
+
Agent 会直接更新当前看板。之后你可以在界面中继续调整,也可以留在对话里推进任务。
|
|
62
|
+
|
|
63
|
+
## 你可以做什么
|
|
64
|
+
|
|
65
|
+
### 在「看板」标签页中
|
|
66
|
+
|
|
67
|
+
- 创建、编辑、删除卡片,并将卡片拖到其他列表
|
|
68
|
+
- 为卡片补充备注、标签和 P0 / P1 / P2 优先级
|
|
69
|
+
- 创建、重命名、排序和删除列表
|
|
70
|
+
- 创建标签并自定义颜色
|
|
71
|
+
- 按优先级筛选整个看板
|
|
72
|
+
|
|
73
|
+
### 在对话中
|
|
74
|
+
|
|
75
|
+
插件会自动为工作区内的对话提供以下工具:
|
|
76
|
+
|
|
77
|
+
| 范围 | 工具 |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| 看板 | `kanban_get` |
|
|
80
|
+
| 卡片 | `kanban_add_card`、`kanban_update_card`、`kanban_delete_card`、`kanban_move_card` |
|
|
81
|
+
| 列表 | `kanban_add_column`、`kanban_rename_column`、`kanban_delete_column`、`kanban_move_column` |
|
|
82
|
+
| 标签 | `kanban_get_label`、`kanban_add_label`、`kanban_update_label`、`kanban_delete_label` |
|
|
83
|
+
|
|
84
|
+
你还可以这样使用:
|
|
85
|
+
|
|
86
|
+
- 「总结一下目前正在进行的任务。」
|
|
87
|
+
- 「把『修复登录跳转』移到进行中,并设为 P0。」
|
|
88
|
+
- 「在进行中后面新增一个阻塞列表。」
|
|
89
|
+
- 「创建一个红色的『紧急』标签,并加到发布卡片上。」
|
|
90
|
+
|
|
91
|
+
## 数据与持久化
|
|
92
|
+
|
|
93
|
+
看板按工作区隔离,并通过 DSH 文件系统服务保存为 `kanban-board-<workspaceId>.json`。刷新页面或重启 DSH 都不会丢失数据;卸载插件时,已有的看板数据也会保留。
|
|
94
|
+
|
|
95
|
+
## 工作原理
|
|
96
|
+
|
|
97
|
+
`dsh-kanban` 使用标准的 DSH bundle 格式:
|
|
98
|
+
|
|
99
|
+
- `index.js` 注册 Agent 工具和浏览器端使用的 `/api/kanban` 接口。
|
|
100
|
+
- Agent 与「看板」标签页共享同一套数据层,双方看到的始终是同一块看板。
|
|
101
|
+
- `cordis.patch.yml` 将插件加入指定的 DSH profile。
|
|
102
|
+
- `lib/client.js` 是由 DSH 直接加载的预构建 Web 客户端。
|
|
103
|
+
|
|
104
|
+
客户端使用 React、TypeScript、Tailwind CSS、shadcn/ui、Radix UI 和 dnd-kit 构建。React 由 DSH 提供,以减少发布体积并避免重复运行时。
|
|
105
|
+
|
|
106
|
+
## 本地开发
|
|
107
|
+
|
|
108
|
+
需要准备 Node.js 和 pnpm。
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
pnpm install
|
|
112
|
+
pnpm build
|
|
113
|
+
pnpm typecheck
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
调试时可以生成未压缩的客户端 bundle:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
node build.mjs --no-minify
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
项目结构:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
index.js # 宿主插件、Agent 工具、持久化与 HTTP 接口
|
|
126
|
+
cordis.patch.yml # DSH bundle 补丁
|
|
127
|
+
build.mjs # 客户端构建脚本
|
|
128
|
+
src/client/ # React 与 TypeScript 源码
|
|
129
|
+
lib/client.js # 随包发布的预构建浏览器 bundle
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 参与贡献
|
|
133
|
+
|
|
134
|
+
欢迎提交 Issue 和 Pull Request。如果准备进行较大的改动,建议先开一个 Issue 讨论目标和实现方式,避免重复工作。
|
|
135
|
+
|
|
136
|
+
## 卸载
|
|
137
|
+
|
|
138
|
+
```sh
|
|
139
|
+
dsh plugin --profile web remove @alpacachen/dsh-kanban
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 开源许可
|
|
143
|
+
|
|
144
|
+
MIT
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# dsh-kanban bundle patch:把看板插件行插入 profile 组合。
|
|
2
|
+
# 安装后该行通过包名 @alpacachen/dsh-kanban 解析(Node 从 profile 的 node_modules 找到本包)。
|
|
3
|
+
# 层顺序:@deepseek-ai/dsh-base → 本 bundle → profile 自己的 cordis.patch.yml → 用户 --patch 覆盖。
|
|
4
|
+
- insert:
|
|
5
|
+
- id: dsh-kanban
|
|
6
|
+
name: "@alpacachen/dsh-kanban"
|
package/image.png
ADDED
|
Binary file
|