@marsken/dsh-studio 0.1.5 → 0.1.6

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.
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 项 | 值 |
8
8
  | --- | --- |
9
- | dsh-studio | `package.json` `version: 0.1.5` |
9
+ | dsh-studio | `package.json` `version: 0.1.6` |
10
10
  | DeepSeek Harness | `0.2.2-rc.1`(`dsh --version`) |
11
11
  | Node | `v24.22.2`(Linux 目标机);本机 Windows `v24.19.0` |
12
12
  | 目标系统 | Ubuntu 24.04,`dsh web` 监听 `18080`,nginx `:80` 反代并注入 `dsh-auth-*` cookie |
package/docs/publish.md CHANGED
@@ -127,6 +127,7 @@ token 只写进临时 npmrc(放在仓库外或 `tmp/` 且不提交),发完
127
127
  | --- | --- | --- |
128
128
  | `0.1.0` | 2026-11-13 | 首个公开版:看板 / 需求 / 用例回归 / 效能 / 设计评审四期 |
129
129
  | `0.1.1` | 2026-11-13 | 补三张 README 截图(npm 页可看图);默认值与文档去掉公司内网信息 |
130
+ | `0.1.6` | 2026-11-14 | 回归跑完也发事件(regression/finished);数据库用例可指定断言的列 |
130
131
  | `0.1.5` | 2026-11-14 | agent/failed 事件、控制面板(执行开关 / 上限 / webhook 按事件订阅)、抽屉里加数据库用例入口 |
131
132
  | `0.1.4` | 2026-11-14 | SQLite 用例、出站 webhook、可配置上限、执行器注册表 |
132
133
  | `0.1.3` | 2026-11-13 | shell 用例(命令 + 退出码/输出断言,默认关闭) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marsken/dsh-studio",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "description": "DSH Studio: role-based multi-agent workspace (product / architect / developer / QA) with a live work board, GitLab + Feishu connection settings, all configurable from the web GUI.",
6
6
  "main": "index.js",
@@ -1,5 +1,6 @@
1
1
  import { randomBytes } from 'node:crypto'
2
2
  import { applyFidelityItem, applySpecItem, pushDiffHistory, sanitizeDesign } from '../design.js'
3
+ import { emitEvent } from '../events.js'
3
4
  import { collectCases, groupCaseKeys, loadSuites, resolveSuiteKeys, sanitizeSuite, saveSuites, summarizeRun } from '../cases.js'
4
5
  import { clearTeamMemory, loadTeamMemory } from '../team-memory.js'
5
6
  import {
@@ -84,6 +85,7 @@ async function runCaseKeys(store, keys, options = {}) {
84
85
  } catch {
85
86
  /* 记不下来不影响这次跑的结果 */
86
87
  }
88
+ emitEvent('regression/finished', { by: record.by, cards: record.cards, total: record.total, passed: record.passed, failed: record.failed, bugs: record.bugs ?? 0 })
87
89
  return { results, regression: record }
88
90
  }
89
91
 
@@ -1,7 +1,7 @@
1
1
  // webhook 订阅者:把事件 POST 给配置里的地址。失败只记健康,不重试、不阻塞。
2
2
  import { emitEvent, subscribe } from './events.js'
3
3
 
4
- export const WEBHOOK_EVENTS = ['task/moved', 'case/failed', 'gate/blocked', 'agent/failed']
4
+ export const WEBHOOK_EVENTS = ['task/moved', 'case/failed', 'gate/blocked', 'agent/failed', 'regression/finished']
5
5
 
6
6
  export function sanitizeWebhooks(raw) {
7
7
  if (!Array.isArray(raw)) return []