@godv61/dsh-task-engine 0.14.0 → 0.16.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.
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Built-in engineering workflows. A workflow is a complete, engine-resolved
3
+ * `WorkflowConfig` a project adopts by id: the stage graph, transition guards,
4
+ * artifacts, commit rule, and default skill/rule bindings are all baked in
5
+ * here. A project overrides only its stage bindings (which skill/rule each
6
+ * node mounts); every other field is a fixed property of the chosen preset, so
7
+ * a project cannot hand-edit the gate semantics.
8
+ *
9
+ * @module dsh-task-engine/workflows
10
+ */
11
+ /** The selectable preset workflows (shown in the workbench flow picker). */
12
+ export const FLOW_OPTIONS = [
13
+ { id: 'standard', label: '标准研发', description: '需求评审 → 设计 → 开发 → 交付 → 代码审核,含产物门 + 确认门' },
14
+ { id: 'agile', label: '敏捷轻量', description: '需求 → 开发 → 交付 → 审查,四阶段、少产物' },
15
+ { id: 'minimal', label: '纯代码', description: '开发 → 交付,两阶段,只留提交门禁' },
16
+ ];
17
+ /** Standard review-gated delivery: the default workflow. */
18
+ const STANDARD = {
19
+ stages: ['需求评审', '设计', '开发', '交付', '代码审核', '完成'],
20
+ start_stage: '需求评审',
21
+ transitions: [
22
+ { from: '需求评审', to: '设计', requires: ['requirement_confirmation', 'artifacts_present'] },
23
+ { from: '设计', to: '开发', requires: ['solution_confirmation', 'artifacts_present'] },
24
+ { from: '开发', to: '交付', requires: ['todos_done'] },
25
+ { from: '交付', to: '代码审核', requires: ['verified'] },
26
+ { from: '代码审核', to: '完成', requires: ['review_passed', 'artifacts_present'] },
27
+ ],
28
+ artifacts: [
29
+ { stage: '需求评审', id: 'requirement', name: '需求说明', fields: ['scope', 'acceptance_criteria'] },
30
+ { stage: '设计', id: 'design', name: '设计文档', fields: ['approach', 'risks', 'impact'] },
31
+ { stage: '代码审核', id: 'review', name: '评审记录', fields: ['conclusion', 'issues'] },
32
+ ],
33
+ commit: {
34
+ policy: 'task',
35
+ message_pattern: '^【(\\S+)】【(?:TASK|T\\d+)】.+',
36
+ message_hint: '【<module>】【TASK/T1】说明 —— 写结果,不写空泛动作',
37
+ checkpoints: ['交付'],
38
+ file_scope: true,
39
+ },
40
+ high_risk_requires_verification: true,
41
+ stage_bindings: {
42
+ '需求评审': { skills: ['requirement-analysis'], rules: ['security-redlines'] },
43
+ '设计': { skills: ['solution-design'] },
44
+ '开发': { skills: ['code-implement'], rules: ['coding-conventions'] },
45
+ '交付': { skills: ['code-verify', 'code-commit'], rules: ['coding-conventions', 'commit-conventions'] },
46
+ '代码审核': { skills: ['code-review'], rules: ['security-redlines'] },
47
+ },
48
+ };
49
+ /** Lighter four-stage flow with few artifacts, for fast-moving projects. */
50
+ const AGILE = {
51
+ stages: ['需求', '开发', '交付', '审查'],
52
+ start_stage: '需求',
53
+ transitions: [
54
+ { from: '需求', to: '开发', requires: ['requirement_confirmation'] },
55
+ { from: '开发', to: '交付', requires: ['todos_done'] },
56
+ { from: '交付', to: '审查', requires: [] },
57
+ ],
58
+ artifacts: [
59
+ { stage: '需求', id: 'requirement', name: '需求说明', fields: ['scope'] },
60
+ ],
61
+ commit: {
62
+ policy: 'item',
63
+ message_pattern: '^【(\\S+)】【T\\d+】.+',
64
+ message_hint: '【<module>】【T1】说明',
65
+ checkpoints: ['交付'],
66
+ file_scope: true,
67
+ },
68
+ high_risk_requires_verification: false,
69
+ stage_bindings: {
70
+ '需求': { skills: ['requirement-analysis'] },
71
+ '开发': { skills: ['code-implement'], rules: ['coding-conventions'] },
72
+ '交付': { skills: ['code-verify', 'code-commit'], rules: ['commit-conventions'] },
73
+ '审查': { skills: ['code-review'] },
74
+ },
75
+ };
76
+ /** Minimal two-stage flow: only a commit gate, no artifact doors. */
77
+ const MINIMAL = {
78
+ stages: ['开发', '交付'],
79
+ start_stage: '开发',
80
+ transitions: [
81
+ { from: '开发', to: '交付', requires: ['todos_done'] },
82
+ ],
83
+ artifacts: [],
84
+ commit: {
85
+ policy: 'task',
86
+ message_pattern: '',
87
+ message_hint: '无格式要求',
88
+ checkpoints: ['交付'],
89
+ file_scope: false,
90
+ },
91
+ high_risk_requires_verification: false,
92
+ stage_bindings: {
93
+ '开发': { skills: ['code-implement'] },
94
+ '交付': { skills: ['code-commit'], rules: ['commit-conventions'] },
95
+ },
96
+ };
97
+ export const FLOW_CONFIGS = {
98
+ standard: STANDARD,
99
+ agile: AGILE,
100
+ minimal: MINIMAL,
101
+ };
102
+ /** Whether `flow` names a built-in workflow. */
103
+ export function isKnownFlow(flow) {
104
+ return Object.prototype.hasOwnProperty.call(FLOW_CONFIGS, flow);
105
+ }
106
+ /**
107
+ * Resolve a preset workflow plus a project's stage-binding override into the
108
+ * complete engine config. Unknown `flow` ids fall back to `standard` when
109
+ * reading (a stale file must not break the gate); writes reject unknown ids
110
+ * before calling this.
111
+ * @param flow - workflow id from the project's `.dsh/eng.json`.
112
+ * @param override - optional whole `stage_bindings` map replacing the preset default.
113
+ * @returns the resolved workflow, always structurally complete.
114
+ */
115
+ export function resolveFlowConfig(flow, override) {
116
+ const base = FLOW_CONFIGS[flow] ?? STANDARD;
117
+ if (override?.stage_bindings !== undefined) {
118
+ return { ...base, stage_bindings: { ...override.stage_bindings } };
119
+ }
120
+ return base;
121
+ }
122
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@godv61/dsh-task-engine",
3
- "version": "0.14.0",
4
- "description": "Config-driven engineering delivery engine for DeepSeek Harness: a `dev_task` tool that hard-gates workflow stage transitions and commit scope/message, stage-level skill/rule bindings with progressive disclosure, a full-screen workbench to edit each workspace's flow, and preset-scoped activation — the tool and skills activate only for sessions on a preset that names the agent row.",
3
+ "version": "0.16.0",
4
+ "description": "Preset-workflow engineering delivery engine for DeepSeek Harness: a `dev_task` tool that hard-gates stage transitions and commit scope/message, per-node skill/rule bindings with progressive disclosure, a workbench to pick a flow preset and mount skills/rules, and preset-scoped activation — the tool and skills activate only for sessions on a preset that names the agent row.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -30,6 +30,7 @@
30
30
  "skills/**",
31
31
  "rules/**",
32
32
  "preset/**",
33
+ "docs/**",
33
34
  "README.md"
34
35
  ],
35
36
  "license": "MIT",
@@ -6,7 +6,7 @@ whenToUse: 开始任何开发、改 bug、加功能、代码评审或提交任
6
6
 
7
7
  # 工程化交付
8
8
 
9
- `dev_task` 工具是流程的唯一事实来源与硬约束。阶段、流转门槛、提交格式来自项目根 `.dsh/eng.json`(没有该文件则用 bundle 内置默认,见 `defaults/eng.json`)。
9
+ `dev_task` 工具是流程的唯一事实来源与硬约束。阶段顺序、流转门槛、提交格式来自所选流程预设(standard / agile / minimal);项目根 `.dsh/eng.json` 只声明 `flow`(选哪套预设)和 `stage_bindings`(每个节点挂哪些 skill / rule)。
10
10
 
11
11
  ## 入口
12
12