@godv61/dsh-task-engine 0.23.2 → 0.23.4
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/.hook-test.mjs +191 -0
- package/.p0-test.mjs +50 -0
- package/docs/CHANGELOG.md +22 -8
- package/lib/client.js +38 -36
- package/lib/client.js.map +2 -2
- package/lib/controller.d.ts +23 -6
- package/lib/controller.js +83 -13
- package/lib/controller.js.map +1 -1
- package/package.json +10 -7
- package/lib/custom-flow.d.ts +0 -212
- package/lib/custom-flow.js +0 -50
- package/lib/custom-flow.js.map +0 -1
package/lib/custom-flow.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/** Portable, versioned sequential workflows. JSON and Remote inputs use this parser. */
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { validateWorkflow } from "./engine.js";
|
|
4
|
-
const name = z.string().trim().min(1).max(120).refine(v => !['__proto__', 'constructor', 'prototype'].includes(v), '保留名称不可用');
|
|
5
|
-
const names = z.array(name).max(100);
|
|
6
|
-
const guard = z.enum(['confirmation', 'requirement_confirmation', 'solution_confirmation', 'todos_done', 'verified', 'review_passed', 'artifacts_present']);
|
|
7
|
-
const configSchema = z.object({
|
|
8
|
-
stages: names.min(2).max(30), start_stage: name,
|
|
9
|
-
transitions: z.array(z.object({ from: name, to: name, requires: z.array(guard).max(7).default([]) }).strict()).max(29),
|
|
10
|
-
artifacts: z.array(z.object({ stage: name, id: name, name, fields: names.min(1) }).strict()).max(100),
|
|
11
|
-
commit: z.object({ policy: z.enum(['task', 'item', 'manual']), message_pattern: z.string().max(500), message_hint: z.string().max(1000), checkpoints: names, file_scope: z.boolean() }).strict(),
|
|
12
|
-
high_risk_requires_verification: z.literal(true),
|
|
13
|
-
evidence_scope: z.literal('stage'),
|
|
14
|
-
stage_bindings: z.record(name, z.object({ skills: names.default([]), rules: names.default([]) }).strict()).default({}),
|
|
15
|
-
}).strict();
|
|
16
|
-
/** Shared wire parser; semantic sequential validation is performed by parseCustomFlow. */
|
|
17
|
-
export const customFlowSchema = z.object({
|
|
18
|
-
schema: z.literal(1), id: z.string().regex(/^custom:[a-z0-9][a-z0-9-]{0,63}$/),
|
|
19
|
-
label: name, version: z.number().int().positive().safe(), config: configSchema,
|
|
20
|
-
}).strict();
|
|
21
|
-
/** Parse untrusted JSON; reject branches, loops, unused artifact requirements and invalid references. */
|
|
22
|
-
export function parseCustomFlow(value) {
|
|
23
|
-
const parsed = customFlowSchema.safeParse(value);
|
|
24
|
-
if (!parsed.success)
|
|
25
|
-
return { ok: false, problems: parsed.error.issues.map(i => `${i.path.join('.')}: ${i.message}`) };
|
|
26
|
-
const config = parsed.data.config;
|
|
27
|
-
const problems = validateWorkflow(config);
|
|
28
|
-
if (config.start_stage !== config.stages[0])
|
|
29
|
-
problems.push('起始阶段必须是列表中的第一个阶段');
|
|
30
|
-
if (config.transitions.length !== config.stages.length - 1 || config.transitions.some((t, i) => t.from !== config.stages[i] || t.to !== config.stages[i + 1])) {
|
|
31
|
-
problems.push('第一版只支持按阶段列表顺序逐步执行,不支持跳转、分支或循环');
|
|
32
|
-
}
|
|
33
|
-
for (const t of config.transitions) {
|
|
34
|
-
if (t.requires?.includes('artifacts_present') && !config.artifacts.some(a => a.stage === t.from))
|
|
35
|
-
problems.push(`${t.from}:请添加产物或取消「必填产物」`);
|
|
36
|
-
}
|
|
37
|
-
const terminal = config.stages[config.stages.length - 1];
|
|
38
|
-
if (config.artifacts.some(a => a.stage === terminal))
|
|
39
|
-
problems.push('完成阶段不能设置待验收产物,请放到前一个阶段');
|
|
40
|
-
if (config.commit.policy !== 'manual' && config.commit.checkpoints.length === 0)
|
|
41
|
-
problems.push('请选择至少一个允许提交的阶段');
|
|
42
|
-
return problems.length ? { ok: false, problems } : { ok: true, value: parsed.data };
|
|
43
|
-
}
|
|
44
|
-
/** Copy a template without changing its bindings; new evidence belongs to the current stage. */
|
|
45
|
-
export function customFromTemplate(config, label = '我的流程') {
|
|
46
|
-
return { schema: 1, id: 'custom:my-workflow', label, version: 1, config: {
|
|
47
|
-
...structuredClone(config), evidence_scope: 'stage', high_risk_requires_verification: true,
|
|
48
|
-
} };
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=custom-flow.js.map
|
package/lib/custom-flow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-flow.js","sourceRoot":"","sources":["../src/custom-flow.ts"],"names":[],"mappings":"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"}
|