@william2000/dsh-nova-ui-task-board 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -0
- package/cordis.patch.yml +13 -0
- package/lib/client.js +5641 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +4873 -0
- package/lib/types/client/NovaTaskBoardSettingsCard.d.ts +17 -0
- package/lib/types/client/PlaceholderBoard.d.ts +9 -0
- package/lib/types/client/apply-guard.d.ts +25 -0
- package/lib/types/client/board/ConfirmDialog.d.ts +12 -0
- package/lib/types/client/board/ConfirmTaskDialog.d.ts +8 -0
- package/lib/types/client/board/ConvertTaskModal.d.ts +17 -0
- package/lib/types/client/board/NewTaskModal.d.ts +6 -0
- package/lib/types/client/board/RequirementSplitModal.d.ts +14 -0
- package/lib/types/client/board/SplitConfirmDialog.d.ts +9 -0
- package/lib/types/client/board/TagEditor.d.ts +6 -0
- package/lib/types/client/board/TaskBoard.d.ts +9 -0
- package/lib/types/client/board/TaskCard.d.ts +52 -0
- package/lib/types/client/board/TaskDetail.d.ts +7 -0
- package/lib/types/client/board/status-key.d.ts +8 -0
- package/lib/types/client/board-controller.d.ts +274 -0
- package/lib/types/client/board-mount.d.ts +10 -0
- package/lib/types/client/chat-integration.d.ts +99 -0
- package/lib/types/client/drag-utils.d.ts +78 -0
- package/lib/types/client/filter.d.ts +42 -0
- package/lib/types/client/grouping.d.ts +54 -0
- package/lib/types/client/host-api.d.ts +62 -0
- package/lib/types/client/index.d.ts +46 -0
- package/lib/types/client/legacy-store.d.ts +28 -0
- package/lib/types/client/locales.d.ts +202 -0
- package/lib/types/client/schedule-presets.d.ts +20 -0
- package/lib/types/client/sidebar-entry-core.d.ts +54 -0
- package/lib/types/client/sidebar-entry.d.ts +19 -0
- package/lib/types/core/context.d.ts +139 -0
- package/lib/types/core/cron.d.ts +54 -0
- package/lib/types/core/migrate.d.ts +39 -0
- package/lib/types/core/model.d.ts +446 -0
- package/lib/types/core/recovery.d.ts +25 -0
- package/lib/types/core/split.d.ts +81 -0
- package/lib/types/core/transitions.d.ts +436 -0
- package/lib/types/dsh-home.d.ts +21 -0
- package/lib/types/host-automation.d.ts +59 -0
- package/lib/types/host-ledger.d.ts +146 -0
- package/lib/types/host-routes.d.ts +65 -0
- package/lib/types/host-runner.d.ts +177 -0
- package/lib/types/host-service.d.ts +291 -0
- package/lib/types/index.d.ts +90 -0
- package/lib/types/loopback.d.ts +23 -0
- package/lib/types/mount-once.d.ts +9 -0
- package/lib/types/protocol.d.ts +210 -0
- package/package.json +89 -0
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# dsh-nova-ui-task-board
|
|
2
|
+
|
|
3
|
+
DSH Web GUI 任务看板插件本体(功能包)。Host 服务(账本/调度/执行/自动化收集)+ 浏览器 UI。
|
|
4
|
+
|
|
5
|
+
> **当前里程碑:P3.1(T001–T011 已实现)**:monorepo 构建链、插件挂载骨架、Host
|
|
6
|
+
> 权威账本与数据模型(T002)、状态机与 Action 协议基线(T003)、五列看板 UI 与
|
|
7
|
+
> 实时同步(T004)、真实执行与结算(T005)、cron 周期定时(T006)、一次性计划
|
|
8
|
+
> 任务 one-shot(T007)、标签/项目与过滤(T008)、列内排序与跨列拖拽(T009)、
|
|
9
|
+
> 自动化收集与上下文闭环(T010:GitHub Webhook / 收藏收集 / 评论 / 上下文快照 /
|
|
10
|
+
> 产物)、对话候选任务流转(T011:proposed 候选 + 确认闸门 + Agent 标记解析 +
|
|
11
|
+
> 消息「转为任务」+ 待确认列与入口角标)。需求拆分(T012)按路线图后续实现。
|
|
12
|
+
> 需求:`docs/DSH-REQ-001-任务看板插件需求规格说明书.md`(v2.5)。
|
|
13
|
+
> 目录结构对齐参考工程 [dsh-web-ui/packages/dsh-task-board](https://github.com/zhu1090093659/dsh-web-ui)。
|
|
14
|
+
|
|
15
|
+
## 已实现(P1–P3)
|
|
16
|
+
|
|
17
|
+
| 项 | 状态 |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| pnpm workspace monorepo(根 `package.json` + `pnpm-workspace.yaml`) | ✅ |
|
|
20
|
+
| 构建链:TypeScript(tsc,类型产物到 `lib/types`)+ tsdown(`lib/index.js` + `lib/client.js`),Node ≥ 20 | ✅ |
|
|
21
|
+
| vitest 测试(16 个 spec / 305 断言:状态机、cron、one-shot、协议、账本、路由、服务、控制器、传输、jsdom 渲染) | ✅ |
|
|
22
|
+
| 插件挂载骨架:`cordis.patch.yml`(行 id `nova-ui-task-board`)+ profile 机制热插拔 | ✅ |
|
|
23
|
+
| 插件配置项:`enabled` / `announceToAgent` / `preventIdleSleep` / `trustedProxyHosts` / `proxyTokenEnv` / `githubWebhookSecretEnv` / `githubTokenEnv` | ✅ |
|
|
24
|
+
| i18n:zh 优先 + en 回退字典(`src/client/locales.ts`,key 集以 zh 为准) | ✅ |
|
|
25
|
+
| 设置卡片:注册 `nova-task-board` 设置命名空间 + Web UI 插件设置卡片(需求 12.5) | ✅ |
|
|
26
|
+
| Host 权威账本(T002):`$DSH_HOME/nova-ui/task-board/ledger-v2.json` 原子写 + 单写者锁 + 损坏隔离 + 幂等缓存 + v1 迁移 | ✅ |
|
|
27
|
+
| 状态机与 Action 协议基线(T003):`import/create/update/delete/move/archive/restore` + 严格校验 + 三端点(state/action/events SSE)+ 安全栅栏 | ✅ |
|
|
28
|
+
| 五列看板 UI 与实时同步(T004):侧边栏入口、五列 + 计数、搜索、归档视图、任务详情(执行设置/历史/移动/归档/恢复/删除)、新建任务、Host 错误条 + 重试、SSE + 全量快照同步、卡片 memo 化、v1 只读回退展示 | ✅ |
|
|
29
|
+
| 真实执行与结算(T005):`run/rerun` action + HostRunner 独立会话、5s 轮询按 turn 结算、重启恢复(无 sessionId 标 cancelled 禁止重发) | ✅ |
|
|
30
|
+
| cron 周期定时(T006):`set-schedule` action、`nextRunAtMs` 到期计算(DST 正确)、30s tick 扫描、错过不补跑、running 中到期只滚动不触发、卡片「定时」徽标 + 详情页 cron 编辑器 | ✅ |
|
|
31
|
+
| 一次性计划 one-shot(T007):`set-one-shot` action(runAt 缺省或 0 = 取消)、30s tick 触发即消费(写 firedAt 防重启重复触发)、running 冲突不并发不排队、错过跳过不补跑、与 cron 互斥(D6)、详情页 one-shot 编辑器(datetime-local + 快捷预设 + 已执行/已过期状态展示)、卡片「计划」徽标 | ✅ |
|
|
32
|
+
| 列内排序、分组与跨列拖拽(T009):`reorder`/`move.order`、order Host 重算、分组视图(手动/项目/标签)、done/failed 拖回重开 | ✅ |
|
|
33
|
+
| 自动化收集与上下文闭环(T010):`automationRules` 账本集合 + `upsert/delete/run-automation` action;书签收件箱 JSONL 收集、GitHub Issue API 轮询(标签过滤/跳 PR)、规则 cron 与任务 schedule 同轮 tick(错过不补跑)、`POST /api/nova-task-board/webhooks/github`(HMAC-SHA256 验签,env 密钥);评论/上下文快照/产物数据模型(结算后 Host 自动更新快照 + 会话产物,`composePrompt` 只注入摘要+必要片段,B5 预算);自动收集人工审核闸门(未 promote 不可执行/不可定时) | ✅ |
|
|
34
|
+
| 对话候选任务流转(T011):`propose/confirm/dismiss` action + `proposed` 状态(未确认不可执行/不可定时/不可归档,守卫在状态机);六列看板(待确认列)+ 候选卡片「待确认」角标/来源标记 + 确认对话框(可编辑、选落列、拒绝);入口未确认数量角标;Agent 候选标记解析(`⟦task-board:propose⟧ 标题 | 描述 | prompt`,订阅会话快照自动 propose,B7 定案)+ 消息 hover「转为任务」按钮(手动兜底,ConvertTaskModal 候选/直建两路);`source=conversation` + 来源会话/消息引用(metadata,可跳回对话);propose 载荷清洗(控制字符/长度)与命令字段递归拒绝(§16.7) | ✅ |
|
|
35
|
+
| `enabled=false` 隐藏入口与看板 | ✅ |
|
|
36
|
+
| 不修改 DSH 源码;仅官方 `@deepseek-ai/*` SDK | ✅ |
|
|
37
|
+
|
|
38
|
+
## 命名与共存(AGENTS.md D2/D3/D4)
|
|
39
|
+
|
|
40
|
+
- API 前缀:**`/api/nova-task-board`**(参考实现占用 `/api/task-board`,注册会 throw);
|
|
41
|
+
- 账本路径:**`$DSH_HOME/nova-ui/task-board/ledger-v2.json`**(避开宿主 `$DSH_HOME/task-board/`);
|
|
42
|
+
- 设置命名空间 / locale 命名空间 / DOM 属性(`data-dsh-nova-taskboard-*`)/ 插件行 id(`nova-ui-*`)一律 nova- 前缀,与参考实现共存不打架。
|
|
43
|
+
|
|
44
|
+
## 目录结构(对齐参考工程)
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
src/
|
|
48
|
+
├── index.ts # 插件入口:Config 七项配置、设置命名空间、播报 section
|
|
49
|
+
├── mount-once.ts # Host 单实例守卫
|
|
50
|
+
├── host-ledger.ts # Host 权威账本(T002):原子写/锁/损坏隔离/幂等
|
|
51
|
+
├── host-routes.ts # 同源端点:state / action / events(SSE) + webhooks/github(HMAC)+ 安全栅栏
|
|
52
|
+
├── host-service.ts # 协议控制面:串行 apply + snapshot/event/power + 调度 tick + 自动化收集编排
|
|
53
|
+
├── host-runner.ts # 真实会话执行与结算(T005)+ 上下文摘要摘取(T010/B5)
|
|
54
|
+
├── host-automation.ts # 自动化收集器(T010):书签收件箱 / GitHub API(注入 fetch)
|
|
55
|
+
├── protocol.ts # Action 判别联合(严格校验)(T003 基线 + T005/T006/T007/T009/T010 扩展)
|
|
56
|
+
├── loopback.ts # loopback origin 安全栅栏
|
|
57
|
+
├── dsh-home.ts # $DSH_HOME 解析
|
|
58
|
+
├── client/ # 浏览器 UI(T004 已实现)
|
|
59
|
+
│ ├── index.ts # 运行时接线:transport/sessions/workspaces/presets
|
|
60
|
+
│ ├── board-controller.ts # 控制器:Host 投影 + 视图状态 + SSE 同步 + memo 身份保持 + propose/confirm/dismiss(T011)
|
|
61
|
+
│ ├── host-api.ts # 同源 HTTP + SSE 传输 + v1 一次性迁移
|
|
62
|
+
│ ├── legacy-store.ts # v1 只读回退数据读取
|
|
63
|
+
│ ├── chat-integration.tsx # 对话候选提取(T011/B7):Agent 标记解析 + 消息 hover「转为任务」注入
|
|
64
|
+
│ ├── board/ # TaskBoard(六列)/ TaskCard / TaskDetail / NewTaskModal / ConfirmDialog / ConfirmTaskDialog / ConvertTaskModal
|
|
65
|
+
│ └── locales.ts # zh/en 字典
|
|
66
|
+
└── core/ # 模型、状态机纯函数、上下文/收集纯函数、cron 解析、迁移、恢复
|
|
67
|
+
tests/ # vitest 单测(23 个 spec;jsdom 渲染走 board-view spec)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 脚本
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
pnpm install # 仓库根执行,安装全部 workspace 依赖
|
|
74
|
+
pnpm build # tsc -p tsconfig.build.json && tsdown(功能包与聚合包)
|
|
75
|
+
pnpm test # vitest run
|
|
76
|
+
pnpm typecheck # tsc --noEmit
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 安装(对齐参考实现的挂载方式)
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
# 单装核心功能包
|
|
83
|
+
dsh plugin --profile web add @william2000/dsh-nova-ui-task-board@latest
|
|
84
|
+
# 或一键安装聚合包(推荐)
|
|
85
|
+
dsh plugin --profile web add @william2000/dsh-nova-ui-all@latest
|
|
86
|
+
```
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# dsh-nova-ui-task-board bundle patch: inserts the task-board plugin row into
|
|
2
|
+
# the web profile roster. Applied as a profile bundle layer (the
|
|
3
|
+
# `dsh.bundle.patch` manifest field) over dsh-base; activate with
|
|
4
|
+
# `dsh plugin --profile <name> add @william2000/dsh-nova-ui-task-board@latest`.
|
|
5
|
+
#
|
|
6
|
+
# 对齐参考工程 dsh-web-ui/packages/dsh-task-board/cordis.patch.yml:
|
|
7
|
+
# 裸插件行按包名引用——node 半区(exports ".")运行于 Host 进程,
|
|
8
|
+
# `dsh.client` 声明使浏览器半区(exports "./client",由 /plugins/<id>/client.js 提供)在 Web GUI 加载。
|
|
9
|
+
# 行 id 用 nova-ui-task-board(AGENTS.md 命名规范:nova-ui-* 前缀)。
|
|
10
|
+
# npm 包名带 @william2000/ scope(2026-08-23 定,见 AGENTS.md §3 D7)。
|
|
11
|
+
- insert:
|
|
12
|
+
- id: nova-ui-task-board
|
|
13
|
+
name: '@william2000/dsh-nova-ui-task-board'
|