@godv61/dsh-task-engine 0.24.0 → 0.25.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/lib/workflows.js CHANGED
@@ -1,15 +1,18 @@
1
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 by APPENDING skill/rule
6
- * names to the preset defaults; every guard, artifact, and commit field stays
7
- * a fixed property of the chosen preset, so a project cannot hand-edit the gate
8
- * semantics or cancel a core binding.
2
+ * Built-in workflow SKELETONS.
3
+ *
4
+ * A preset states how work MOVES: the stage graph and the guards on each edge.
5
+ * It deliberately carries nothing about HOW to do the work, because a preset that
6
+ * also baked in skills, a commit format and artifact fields would make every
7
+ * project follow the shipped method whether or not that suits it.
8
+ *
9
+ * One reasonable engineering setup per skeleton is offered separately as a
10
+ * {@link FlowRecommendation}, and enters a project only when a user adopts it
11
+ * explicitly. After adoption those values are the user's own config: edited,
12
+ * extended or removed, with nothing merged back by a later version.
9
13
  *
10
14
  * @module dsh-task-engine/workflows
11
15
  */
12
- import { formatResourceRef } from "./engine.js";
13
16
  /**
14
17
  * Build one skill binding from a bare name plus its bundled rules.
15
18
  *
@@ -30,7 +33,15 @@ export const FLOW_OPTIONS = [
30
33
  { id: 'agile', label: '日常迭代', description: '目标明确的常规功能与缺陷修复:目标与验收 → 实现 → 验收与审查 → 提交' },
31
34
  { id: 'minimal', label: '快速修改', description: '局部、低风险、方案明确的改动:修改 → 检查与提交' },
32
35
  ];
33
- /** Standard review-gated delivery: the default workflow. */
36
+ /**
37
+ * Standard review-gated delivery.
38
+ *
39
+ * The skeleton states how work MOVES: which stages exist, what may follow what,
40
+ * and which confirmations or evidence an edge demands. Everything about HOW to do
41
+ * the work — which skills run, what a commit message must look like, which
42
+ * artifacts a stage records — lives in {@link STANDARD_RECOMMENDATION} and enters
43
+ * a project only when the user adopts it.
44
+ */
34
45
  const STANDARD = {
35
46
  stages: ['需求评审', '设计', '开发', '交付', '代码审核', '完成'],
36
47
  start_stage: '需求评审',
@@ -41,19 +52,31 @@ const STANDARD = {
41
52
  { from: '交付', to: '代码审核', requires: ['verified'] },
42
53
  { from: '代码审核', to: '完成', requires: ['review_passed', 'artifacts_present'] },
43
54
  ],
55
+ // No artifacts, no commit policy, no skills: the skeleton carries none of them.
56
+ artifacts: [],
57
+ commit: { policy: 'task', message_pattern: '', message_hint: '无格式要求', checkpoints: ['代码审核'], file_scope: true },
58
+ high_risk_requires_verification: true,
59
+ };
60
+ /**
61
+ * One ready-made setup for the standard flow, offered for explicit adoption.
62
+ *
63
+ * This is a recommendation, not a default: it reflects one reasonable way to work
64
+ * and nothing here takes effect until a user adopts it. After adoption these
65
+ * values are ordinary user config — edited, extended or removed — and no later
66
+ * version merges anything back in.
67
+ */
68
+ const STANDARD_RECOMMENDATION = {
69
+ commit: {
70
+ // Only the TEXT conventions. Policy, checkpoints and scope stay on the
71
+ // skeleton: they decide when a gate fires, not how a message reads.
72
+ message_pattern: '^【(\\S+)】【(?:TASK|T\\d+)】.+',
73
+ message_hint: '【<task_id>】【TASK/T1】说明 —— 第一段填本任务 id(如 GREET-001),写结果不写空泛动作',
74
+ },
44
75
  artifacts: [
45
76
  { stage: '需求评审', id: 'requirement', name: '需求说明', fields: ['scope', 'acceptance_criteria'] },
46
77
  { stage: '设计', id: 'design', name: '设计文档', fields: ['approach', 'risks', 'impact'] },
47
78
  { stage: '代码审核', id: 'review', name: '评审记录', fields: ['conclusion', 'issues'] },
48
79
  ],
49
- commit: {
50
- policy: 'task',
51
- message_pattern: '^【(\\S+)】【(?:TASK|T\\d+)】.+',
52
- message_hint: '【<task_id>】【TASK/T1】说明 —— 第一段填本任务 id(如 GREET-001),写结果不写空泛动作',
53
- checkpoints: ['代码审核'],
54
- file_scope: true,
55
- },
56
- high_risk_requires_verification: true,
57
80
  stage_bindings: {
58
81
  '需求评审': { skills: [bundled('requirement-analysis', 'security-redlines')] },
59
82
  '设计': { skills: [bundled('solution-design')] },
@@ -67,37 +90,46 @@ const STANDARD = {
67
90
  },
68
91
  },
69
92
  };
70
- /** Lighter four-stage flow with few artifacts, for fast-moving projects. */
93
+ /** Lighter four-stage flow: the skeleton only. */
71
94
  const AGILE = {
72
95
  stages: ['需求', '开发', '交付', '审查'],
73
96
  start_stage: '需求',
74
97
  transitions: [
75
98
  { from: '需求', to: '开发', requires: ['requirement_confirmation'] },
76
99
  { from: '开发', to: '交付', requires: ['todos_done'] },
100
+ // Entering 审查 is unconditional. A review guard on this edge would be
101
+ // circular — it would demand the verdict BEFORE the stage that produces it —
102
+ // and it would also block the commit at 交付, since a commit requires its
103
+ // stage's outgoing guards. What 审查 requires is declared as completion_guards
104
+ // instead, because a terminal stage has no outgoing edge to carry it.
77
105
  { from: '交付', to: '审查', requires: [] },
78
106
  ],
107
+ artifacts: [],
108
+ commit: { policy: 'item', message_pattern: '', message_hint: '无格式要求', checkpoints: ['交付'], file_scope: true },
109
+ high_risk_requires_verification: false,
110
+ // 审查 is terminal and IS the review, so there is no outgoing edge to carry
111
+ // the guard. Declaring it here is what makes a blocked review prevent
112
+ // completion; without it the stage could be reached and finished with the
113
+ // review failing, which is what the assessment found.
114
+ completion_guards: ['review_passed'],
115
+ };
116
+ /** One ready-made setup for the agile flow, offered for explicit adoption. */
117
+ const AGILE_RECOMMENDATION = {
118
+ commit: {
119
+ // `item` policy emits two label shapes: `T<n>` mid-flow and `TASK` at the
120
+ // closing checkpoint. The pattern accepts BOTH, so the label the engine hands
121
+ // the model always satisfies the rule that validates it.
122
+ message_pattern: '^【(\\S+)】【(?:TASK|T\\d+)】.+',
123
+ message_hint: '【<task_id>】【TASK/T1】说明 —— 第一段填本任务 id;实施项提交用 T1、T2,收尾提交用 TASK',
124
+ },
79
125
  artifacts: [
80
126
  { stage: '需求', id: 'requirement', name: '需求说明', fields: ['scope'] },
81
127
  // The 审查 stage binds code-review, whose instructions write this artifact with
82
- // `record artifact=review`. Declaring it here keeps that binding executable:
83
- // the engine refuses an undeclared artifact, so a bound skill pointing at one
84
- // would be a contract the preset itself made impossible to satisfy.
128
+ // `record artifact=review`. Declaring it keeps that binding executable: the
129
+ // engine refuses an undeclared artifact, so a bound skill pointing at one would
130
+ // be a contract the recommendation made impossible to satisfy.
85
131
  { stage: '审查', id: 'review', name: '评审记录', fields: ['conclusion', 'issues'] },
86
132
  ],
87
- commit: {
88
- // `item` policy emits two label shapes: `T<n>` for a mid-flow item commit and
89
- // `TASK` for the closing commit at the checkpoint. The pattern below accepts
90
- // BOTH, so the label the engine hands the model always satisfies the preset's
91
- // own rule. Previously it accepted only `T\d+` while the checkpoint stage
92
- // returned `TASK`, which made the closing commit impossible to phrase: the
93
- // status line and the validator disagreed about the contract.
94
- policy: 'item',
95
- message_pattern: '^【(\\S+)】【(?:TASK|T\\d+)】.+',
96
- message_hint: '【<task_id>】【TASK/T1】说明 —— 第一段填本任务 id;实施项提交用 T1、T2,收尾提交用 TASK',
97
- checkpoints: ['交付'],
98
- file_scope: true,
99
- },
100
- high_risk_requires_verification: false,
101
133
  stage_bindings: {
102
134
  '需求': { skills: [bundled('requirement-analysis', 'security-redlines')] },
103
135
  '开发': { skills: [bundled('code-implement', 'coding-conventions', 'security-redlines')] },
@@ -105,7 +137,7 @@ const AGILE = {
105
137
  '审查': { skills: [bundled('code-review', 'coding-conventions', 'security-redlines')] },
106
138
  },
107
139
  };
108
- /** Minimal two-stage flow: only a commit gate, no artifact doors. */
140
+ /** Minimal two-stage flow: the skeleton only. */
109
141
  const MINIMAL = {
110
142
  stages: ['开发', '交付'],
111
143
  start_stage: '开发',
@@ -113,18 +145,14 @@ const MINIMAL = {
113
145
  { from: '开发', to: '交付', requires: ['todos_done'] },
114
146
  ],
115
147
  artifacts: [],
116
- commit: {
117
- policy: 'task',
118
- message_pattern: '',
119
- message_hint: '无格式要求',
120
- checkpoints: ['交付'],
121
- file_scope: false,
122
- },
148
+ commit: { policy: 'task', message_pattern: '', message_hint: '无格式要求', checkpoints: ['交付'], file_scope: false },
123
149
  high_risk_requires_verification: false,
150
+ };
151
+ /** One ready-made setup for the minimal flow, offered for explicit adoption. */
152
+ const MINIMAL_RECOMMENDATION = {
124
153
  // A fast-change flow checks each change once, not twice under two headings a
125
154
  // short change rarely distinguishes. The item still has to be reviewed — what
126
- // drops is the duplicated verdict, which is where the weight actually was: this
127
- // flow used to carry the same per-item audit burden as the full one.
155
+ // drops is the duplicated verdict, which is where the weight actually was.
128
156
  review_depth: 'single',
129
157
  stage_bindings: {
130
158
  '开发': { skills: [bundled('code-implement', 'coding-conventions', 'security-redlines')] },
@@ -148,20 +176,27 @@ function deriveCapabilities(config) {
148
176
  caps.push('file_scope');
149
177
  return caps;
150
178
  }
151
- function preset(id, version, label, description, config) {
152
- return { id, version, label, description, capabilities: deriveCapabilities(config), config };
179
+ function preset(id, version, label, description, config, recommendation) {
180
+ return {
181
+ id, version, label, description,
182
+ capabilities: deriveCapabilities(config),
183
+ config,
184
+ // exactOptionalPropertyTypes: omit rather than assign undefined.
185
+ ...(recommendation !== undefined ? { recommendation } : {}),
186
+ };
153
187
  }
154
188
  export const FLOW_PRESETS = {
155
- standard: preset('standard', 2, '完整研发', '新功能、架构或跨模块改动、高风险任务:需求确认 → 方案确认 → 实现 → 验证 → 审核 → 提交', STANDARD),
156
- // Version 2: the closing-commit label shape was unified with the message pattern,
157
- // and the `review` artifact the bound code-review skill writes was declared. Tasks
158
- // created before this keep their frozen version 1 config and are unaffected.
159
- agile: preset('agile', 2, '日常迭代', '目标明确的常规功能与缺陷修复:目标与验收 → 实现 → 验收与审查 → 提交', AGILE),
160
- // Version 2: per-item review depth is declared as `single` instead of inheriting
161
- // the full flow's two verdicts per item. Tasks created before this keep their
162
- // frozen version 1 config, which has no `review_depth` and therefore reads as
163
- // two-stage exactly as it behaved.
164
- minimal: preset('minimal', 2, '快速修改', '局部、低风险、方案明确的改动:修改 → 检查与提交,每项一次检查', MINIMAL),
189
+ standard: preset('standard', 3, '完整研发', '新功能、架构或跨模块改动、高风险任务:需求确认 → 方案确认 → 实现 → 验证 → 审核 → 提交', STANDARD, STANDARD_RECOMMENDATION),
190
+ // Version 4 for agile: 交付 → 审查 now requires review_passed, where it previously
191
+ // required nothing. That is a gate-semantics change, so a task created before it
192
+ // keeps its frozen version 3 config and behaves exactly as it did.
193
+ //
194
+ // Version 3 across all three: the preset is now a bare skeleton and its former
195
+ // built-in bindings, commit rule and artifacts are a separate recommendation a
196
+ // user adopts explicitly. Tasks created before this keep their frozen config and
197
+ // are unaffected; a project's existing config is likewise left exactly as it is.
198
+ agile: preset('agile', 4, '日常迭代', '目标明确的常规功能与缺陷修复:目标与验收 → 实现 → 验收与审查 → 提交', AGILE, AGILE_RECOMMENDATION),
199
+ minimal: preset('minimal', 3, '快速修改', '局部、低风险、方案明确的改动:修改 → 检查与提交,每项一次检查', MINIMAL, MINIMAL_RECOMMENDATION),
165
200
  };
166
201
  /** Whether `flow` names a built-in workflow. */
167
202
  export function isKnownFlow(flow) {
@@ -190,48 +225,88 @@ function dedupe(names) {
190
225
  return [...new Set(names)];
191
226
  }
192
227
  /**
193
- * Merge a project's stage bindings into a preset's defaults without ever removing
194
- * a core skill. Skills are appended and de-duplicated by their source-qualified
195
- * reference, so a project cannot cancel a shipped binding and two same-named
196
- * skills from different layers stay distinct.
228
+ * Apply a project's own config over a preset skeleton.
197
229
  *
198
- * Rules are NOT merged here. A rule belongs to the skill that carries it, so a
199
- * project wanting a skill under a different rule set supplies its own skill
200
- * binding whose `rules` list is used as given. There is no stage-level rule list
201
- * to merge into and no override layer to compute — the skill's list is the answer.
230
+ * The project's values are taken as given. There is nothing to merge against any
231
+ * more: the skeleton carries no skills, no commit rule, no artifacts and no
232
+ * review depth, so whatever the user configured IS the configuration. Earlier
233
+ * versions merged a project's skills into the preset's built-in set, which had two
234
+ * consequences this removes — a built-in skill could never be dropped, and an
235
+ * attempt to give a built-in skill a different rule list was discarded because the
236
+ * skill reference already existed.
202
237
  *
203
- * `legacy_rules` from a project pass through untouched: they are the stage-level
204
- * rules of a pre-migration config, still enforced, awaiting a human decision
205
- * about which skill owns them.
238
+ * `stage_bindings` entirely replaces the skeleton's (empty) map; a stage the user
239
+ * omits simply has no bindings, which is a legitimate state rather than a gap to
240
+ * be filled from a recommendation.
206
241
  */
207
- function mergeBindings(base, override) {
208
- if (override === undefined)
242
+ function applyProjectConfig(base, project) {
243
+ if (project === undefined)
209
244
  return base;
210
- let changed = false;
211
- const merged = { ...base.stage_bindings };
212
- for (const [stage, addition] of Object.entries(override)) {
213
- const existing = merged[stage];
214
- const skills = [...(existing?.skills ?? [])];
215
- const seen = new Set(skills.map(skill => formatResourceRef(skill.skill)));
216
- for (const skill of addition.skills ?? []) {
217
- const key = formatResourceRef(skill.skill);
218
- if (seen.has(key))
219
- continue;
220
- seen.add(key);
221
- skills.push(skill);
245
+ const next = { ...base };
246
+ if (project.stage_bindings !== undefined) {
247
+ const bindings = {};
248
+ for (const [stage, binding] of Object.entries(project.stage_bindings)) {
249
+ const entry = {};
250
+ if ((binding.skills ?? []).length > 0)
251
+ entry.skills = [...binding.skills];
252
+ const legacy = dedupe(binding.legacy_rules ?? []);
253
+ if (legacy.length > 0)
254
+ entry.legacy_rules = legacy;
255
+ bindings[stage] = entry;
222
256
  }
223
- const legacy = dedupe([...(existing?.legacy_rules ?? []), ...(addition.legacy_rules ?? [])]);
224
- const binding = {};
225
- if (skills.length > 0)
226
- binding.skills = skills;
227
- if (legacy.length > 0)
228
- binding.legacy_rules = legacy;
229
- merged[stage] = binding;
230
- changed = true;
257
+ next.stage_bindings = bindings;
231
258
  }
232
- if (!changed)
233
- return base;
234
- return { ...base, stage_bindings: merged };
259
+ if (project.commit !== undefined)
260
+ next.commit = project.commit;
261
+ if (project.artifacts !== undefined)
262
+ next.artifacts = project.artifacts;
263
+ if (project.review_depth !== undefined)
264
+ next.review_depth = project.review_depth;
265
+ if (project.commit_required !== undefined)
266
+ next.commit_required = project.commit_required;
267
+ return next;
268
+ }
269
+ /**
270
+ * Write a preset's recommendation into a config, for a user who asked for it.
271
+ *
272
+ * This is the ADOPTION step. It is a deliberate, one-time act: the returned config
273
+ * is the user's own from then on, and nothing re-applies or re-merges the
274
+ * recommendation later, so a value the user deletes stays deleted.
275
+ * @param presetId - the preset whose recommendation to adopt.
276
+ * @param current - the user's current config, if any values should be kept.
277
+ * @returns the config with the recommendation applied, or undefined for an unknown preset.
278
+ */
279
+ export function adoptRecommendation(presetId, current) {
280
+ const preset = FLOW_PRESETS[presetId];
281
+ if (preset === undefined)
282
+ return undefined;
283
+ const rec = preset.recommendation;
284
+ if (rec === undefined)
285
+ return { flow: presetId, ...current };
286
+ // The recommendation supplies a starting point; anything the user already set
287
+ // wins, so adopting never overwrites an existing decision.
288
+ //
289
+ // The commit rule is assembled from BOTH halves, because they live in different
290
+ // places by design: the skeleton owns when a gate fires and whether the scope is
291
+ // protected, the recommendation owns how a message reads. Writing the
292
+ // recommendation's half alone would produce a config with no checkpoints and no
293
+ // scope protection — the flow control would silently disappear on adoption.
294
+ const commit = {
295
+ ...preset.config.commit,
296
+ ...(rec.commit ?? {}),
297
+ ...(current?.commit ?? {}),
298
+ };
299
+ const config = {
300
+ flow: presetId,
301
+ stage_bindings: current?.stage_bindings ?? rec.stage_bindings ?? {},
302
+ commit,
303
+ artifacts: current?.artifacts ?? rec.artifacts ?? preset.config.artifacts,
304
+ ...(current?.review_depth !== undefined
305
+ ? { review_depth: current.review_depth }
306
+ : (rec.review_depth !== undefined ? { review_depth: rec.review_depth } : {})),
307
+ ...(current?.commit_required !== undefined ? { commit_required: current.commit_required } : {}),
308
+ };
309
+ return config;
235
310
  }
236
311
  /**
237
312
  * Resolve a preset workflow plus a project's stage-binding additions into the
@@ -240,13 +315,14 @@ function mergeBindings(base, override) {
240
315
  * project that names a missing or stale preset stops instead of running the
241
316
  * wrong gate.
242
317
  * @param flow - workflow id from the project's `.dsh/eng.json`.
243
- * @param override - optional whole `stage_bindings` map APPENDED to the preset defaults.
318
+ * @param project - the project's own config, applied verbatim over the skeleton.
244
319
  */
245
- export function resolveFlow(flow, override) {
320
+ export function resolveFlow(flow, project) {
246
321
  const preset = FLOW_PRESETS[flow];
247
322
  if (preset === undefined) {
248
323
  return { ok: false, code: 'UNKNOWN_FLOW', flow, knownFlows: Object.keys(FLOW_PRESETS) };
249
324
  }
250
- return { ok: true, config: mergeBindings(preset.config, override?.stage_bindings), preset };
325
+ const { flow: _ignored, ...rest } = project ?? { flow };
326
+ return { ok: true, config: applyProjectConfig(preset.config, { flow, ...rest }), preset };
251
327
  }
252
328
  //# sourceMappingURL=workflows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH;;;;;;;;;GASG;AACH,SAAS,OAAO,CAAC,KAAa,EAAE,GAAG,KAAe;IAChD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;AACrD,CAAC;AAoDD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACpG,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,wCAAwC,EAAE;IACrF,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;CAC3E,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAmB;IAC/B,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;IAChD,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE;QACX,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,EAAE;QACvF,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,EAAE;QAClF,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;QAClD,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QAClD,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC,EAAE;KAC7E;IACD,gFAAgF;IAChF,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;IAC/G,+BAA+B,EAAE,IAAI;CACtC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAuB;IAClD,MAAM,EAAE;QACN,uEAAuE;QACvE,oEAAoE;QACpE,eAAe,EAAE,6BAA6B;QAC9C,YAAY,EAAE,6DAA6D;KAC5E;IACD,SAAS,EAAE;QACT,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAAE;QAC5F,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;QACpF,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;KAChF;IACD,cAAc,EAAE;QACd,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,EAAE;QAC1E,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE;QAC9C,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,EAAE;QACxF,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE;QAC1C,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,OAAO,CAAC,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;gBACjE,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC;aAC7C;SACF;KACF;CACF,CAAA;AAED,kDAAkD;AAClD,MAAM,KAAK,GAAmB;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAChC,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE;QACX,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,0BAA0B,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;QAClD,qEAAqE;QACrE,6EAA6E;QAC7E,wEAAwE;QACxE,6EAA6E;QAC7E,sEAAsE;QACtE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;KACvC;IACD,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;IAC7G,+BAA+B,EAAE,KAAK;IACtC,0EAA0E;IAC1E,sEAAsE;IACtE,0EAA0E;IAC1E,sDAAsD;IACtD,iBAAiB,EAAE,CAAC,eAAe,CAAC;CACrC,CAAA;AAED,8EAA8E;AAC9E,MAAM,oBAAoB,GAAuB;IAC/C,MAAM,EAAE;QACN,0EAA0E;QAC1E,8EAA8E;QAC9E,yDAAyD;QACzD,eAAe,EAAE,6BAA6B;QAC9C,YAAY,EAAE,8DAA8D;KAC7E;IACD,SAAS,EAAE;QACT,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QACnE,8EAA8E;QAC9E,4EAA4E;QAC5E,gFAAgF;QAChF,+DAA+D;QAC/D,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE;KAC9E;IACD,cAAc,EAAE;QACd,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,EAAE;QACxE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,EAAE;QACxF,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,EAAE;QACxF,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,EAAE;KACtF;CACF,CAAA;AAED,iDAAiD;AACjD,MAAM,OAAO,GAAmB;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE;QACX,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE;KACnD;IACD,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;IAC9G,+BAA+B,EAAE,KAAK;CACvC,CAAA;AAED,gFAAgF;AAChF,MAAM,sBAAsB,GAAuB;IACjD,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,YAAY,EAAE,QAAQ;IACtB,cAAc,EAAE;QACd,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,EAAE;QACxF,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,EAAE;KACjE;CACF,CAAA;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,IAAI,GAAyB,EAAE,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;IACzE,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC1D,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACzD,IAAI,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC/D,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACrD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,MAAM,CACb,EAAU,EACV,OAAe,EACf,KAAa,EACb,WAAmB,EACnB,MAAsB,EACtB,cAAmC;IAEnC,OAAO;QACL,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;QACxC,MAAM;QACN,iEAAiE;QACjE,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAA+B;IACtD,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,oDAAoD,EAAE,QAAQ,EAAE,uBAAuB,CAAC;IAChI,+EAA+E;IAC/E,iFAAiF;IACjF,mEAAmE;IACnE,EAAE;IACF,+EAA+E;IAC/E,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,wCAAwC,EAAE,KAAK,EAAE,oBAAoB,CAAC;IACxG,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,sBAAsB,CAAC;CAC3G,CAAA;AAED,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAkC;IAC5E,mBAAmB;IACnB,YAAY;IACZ,aAAa;CACd,CAAA;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAuC;IACjF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AACjE,CAAC;AAmBD,qEAAqE;AACrE,SAAS,MAAM,CAAC,KAAe;IAC7B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CAAC,IAAoB,EAAE,OAAuB;IACvE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtC,MAAM,IAAI,GAAmB,EAAE,GAAG,IAAI,EAAE,CAAA;IACxC,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAiC,EAAE,CAAA;QACjD,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACtE,MAAM,KAAK,GAAiB,EAAE,CAAA;YAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAO,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;YACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,YAAY,GAAG,MAAM,CAAA;YAClD,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;IAChC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC9D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACvE,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IAChF,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;QAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;IACzF,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,OAAuB;IAEvB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAA;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAA;IAC5D,8EAA8E;IAC9E,2DAA2D;IAC3D,EAAE;IACF,gFAAgF;IAChF,iFAAiF;IACjF,sEAAsE;IACtE,gFAAgF;IAChF,4EAA4E;IAC5E,MAAM,MAAM,GAAe;QACzB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;QACvB,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;KAC3B,CAAA;IACD,MAAM,MAAM,GAAkB;QAC5B,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,GAAG,CAAC,cAAc,IAAI,EAAE;QACnE,MAAM;QACN,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS;QACzE,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;YACxC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChG,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAiBD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAuB;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA;IACzF,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,IAAI,EAAE,CAAA;IACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;AAC3F,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@godv61/dsh-task-engine",
3
- "version": "0.24.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.",
3
+ "version": "0.25.0",
4
+ "description": "Workflow engine for DeepSeek Harness: a `dev_task` tool that hard-gates stage transitions and commit scope/message, per-node skill bindings with progressive disclosure, and a workbench to configure flows and mount skills. A preset is a flow SKELETON — state control only — and one reasonable engineering setup is offered separately for explicit adoption; which skills run, which rules they follow and what a commit message must look like stay the user's decisions.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -37,6 +37,8 @@
37
37
  "docs/**",
38
38
  "README.md",
39
39
  ".p0-test.mjs",
40
+ ".acceptance.mjs",
41
+ ".hook-consistency.mjs",
40
42
  ".resource-test.mjs",
41
43
  ".workflow-test.mjs",
42
44
  ".hook-test.mjs",
@@ -45,8 +47,10 @@
45
47
  ".e2e-presets.mjs",
46
48
  ".revision-test.mjs",
47
49
  ".freeze-test.mjs",
48
- ".acceptance.mjs",
49
- ".hook-consistency.mjs"
50
+ ".enforce-test.mjs",
51
+ ".evidence-test.mjs",
52
+ ".roundtrip-test.mjs",
53
+ ".filter-test.mjs"
50
54
  ],
51
55
  "license": "MIT",
52
56
  "publishConfig": {
@@ -67,7 +71,7 @@
67
71
  "scripts": {
68
72
  "build": "tsc -p tsconfig.json && node build-client.mjs && node build-hook.mjs",
69
73
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit",
70
- "test": "node .p0-test.mjs && node .acceptance.mjs && node .hook-consistency.mjs && node --test .resource-test.mjs .workflow-test.mjs .hook-test.mjs .preset-test.mjs .assessment-batch1.mjs .e2e-presets.mjs .revision-test.mjs .freeze-test.mjs",
74
+ "test": "node .p0-test.mjs && node .acceptance.mjs && node .hook-consistency.mjs && node --test .resource-test.mjs .workflow-test.mjs .hook-test.mjs .preset-test.mjs .assessment-batch1.mjs .e2e-presets.mjs .revision-test.mjs .freeze-test.mjs .enforce-test.mjs .evidence-test.mjs .roundtrip-test.mjs .filter-test.mjs",
71
75
  "verify:package": "node scripts/verify-package.mjs",
72
76
  "verify:dsh": "node scripts/verify-dsh-compat.mjs",
73
77
  "prepare": "npm run build"
@@ -42,7 +42,7 @@ const listing = execSync(`tar -tzf "${tgzPath}"`, { encoding: 'utf8' })
42
42
  check('extract', existsSync(join(pkgDir, 'package.json')))
43
43
 
44
44
  // 3. files whitelist sanity
45
- for (const required of ['hooks/commit-msg', 'lib/index.js', 'lib/client.js', 'lib/client.d.ts', '.p0-test.mjs', 'preset/enable.mjs', 'README.md', '.resource-test.mjs', '.workflow-test.mjs', '.hook-test.mjs', '.preset-test.mjs', '.assessment-batch1.mjs', '.e2e-presets.mjs', '.revision-test.mjs', '.freeze-test.mjs', '.acceptance.mjs', '.hook-consistency.mjs']) {
45
+ for (const required of ['hooks/commit-msg', 'lib/index.js', 'lib/client.js', 'lib/client.d.ts', 'preset/enable.mjs', 'README.md', '.p0-test.mjs', '.acceptance.mjs', '.hook-consistency.mjs', '.resource-test.mjs', '.workflow-test.mjs', '.hook-test.mjs', '.preset-test.mjs', '.assessment-batch1.mjs', '.e2e-presets.mjs', '.revision-test.mjs', '.freeze-test.mjs', '.enforce-test.mjs', '.evidence-test.mjs', '.roundtrip-test.mjs', '.filter-test.mjs']) {
46
46
  check(`tarball contains ${required}`, listing.includes(required))
47
47
  }
48
48
  check('tarball excludes src sources', !listing.some(line => line.startsWith('src/')))