Šķîþ ţö ḿàîñ çöñţéñţ

Ƒļöŵ Šţéþš Ƒöŕḿàţ

Ýöü ŵŕîţé à ƒļöŵ àš à ÝÀḾĻ ļîšţ öƒ šţéþš, àñđ ķàþî çöḿþîļéš ţĥé ļîšţ ţö ţĥé îñţéŕñàļ ĝŕàþĥ öƒ ñöđéš àñđ éđĝéš.

Ƒöŕḿàţ Đéţéçţîöñ​

Ţĥé ƒļöŵ þàŕšéŕ àüţö-đéţéçţš ţĥé ƒöŕḿàţ:

  • spec.steps þŕéšéñţ -> šţéþš ƒöŕḿàţ, çöḿþîļéđ ṽîà StepsToGraph()
  • spec.nodes þŕéšéñţ -> ĝŕàþĥ ƒöŕḿàţ, üšéđ đîŕéçţļý
  • Ƃöţĥ éñṽéļöþéđ (apiVersion: v1) àñđ ƃàŕé ÝÀḾĻ àŕé šüþþöŕţéđ

Šţéþš Ƒöŕḿàţ Šþéç​

type FlowStep struct {
Tool string `yaml:"tool,omitempty"` // tool name
Config map[string]any `yaml:"config,omitempty"` // tool parameters
Label string `yaml:"label,omitempty"` // display label
Parallel []FlowStep `yaml:"parallel,omitempty"` // branches (definition model only)
}

Ţŕàñšƒöŕḿéŕš àš öŕđéŕéđ šţéþš​

Ţööļš ţĥàţ ŕéŵŕîţé ţĥé šöüŕçé/ḿöđéļ (ŕéđàçţîöñ, à šîḿþļîƒîéŕ, ñöŕḿàļîžàţîöñ) àŕé öŕđîñàŕý éñţŕîéš îñ steps:; ţĥéŕé îš ñö šéþàŕàţé šţŕüçţüŕàļ šţàĝé (É-03). À ƒļöŵ ţĥàţ đéçļàŕéš ţĥé ŕéḿöṽéđ source_transforms: ƒîéļđ îš ŕéĵéçţéđ ƃý StepsToGraph ŵîţĥ à ḿîĝŕàţîöñ éŕŕöŕ þöîñţîñĝ àţ É-03 àñđ đîŕéçţîñĝ ţĥé àüţĥöŕ ţö ļîšţ ţĥé ţŕàñšƒöŕḿéŕš àš öŕđéŕéđ šţéþš.

steps:
- tool: redact # applied inline; later steps see the redacted source
- tool: translate
- tool: qa

Ţŕàñšƒöŕḿéŕ öŕđéŕîñĝ îš ṽàļîđàţéđ ƃý ţĥé þļàçéḿéñţ þàšš (core/flow/placement.go), ŵĥîçĥ ŕüñš ƃéšîđé đàţà-ƒļöŵ ṽàļîđàţîöñ àţ éṽéŕý ƒļöŵ ƃüîļđ/ļöàđ ĝàţé àñđ éḿîţš ţĥéšé đîàĝñöšţîçš:

Ŕüļé îđŠéṽéŕîţýŢŕîĝĝéŕ
transformer-after-targetéŕŕöŕà ţŕàñšƒöŕḿéŕ ƒöļļöŵš à šţéþ ţĥàţ þŕöđüçéš à çöḿḿîţţéđ ţàŕĝéţ; éẋéḿþţ ŵĥéñ ţĥé ţŕàñšƒöŕḿéŕ þŕöđüçéš ţĥé ţàŕĝéţ þöŕţ îţšéļƒ (é.ĝ. unredact)
transformer-after-remote-egresséŕŕöŕà ŕéçöṽéŕàƃļé ţŕàñšƒöŕḿéŕ (redact) ƒöļļöŵš à šţéþ ŵîţĥ ţĥé ŕéḿöţé-šöüŕçé-éĝŕéšš öŕ þŕöçéšš-éẋéç šîđé 郃éçţ; éẋéḿþţ ƒöŕ ţĥé šţéþ(š) þŕöđüçîñĝ àñ îñþüţ ţĥé ţŕàñšƒöŕḿéŕ'š çöñƒîĝ-ŕéšöļṽéđ çöñţŕàçţ ŕéǫüîŕéš
transformer-late-placementŵàŕñîñĝà ţŕàñšƒöŕḿéŕ šîţš ļàţéŕ ţĥàñ îţš éàŕļîéšţ ṽàļîđ šļöţ (àƒţéŕ îţš ļàšţ ŕéǫüîŕéđ îñþüţ), ƒöŕçîñĝ àṽöîđàƃļé öṽéŕļàý ŕéƃàšîñĝ

Çöḿþîļàţîöñ​

StepsToGraph(spec) ĝéñéŕàţéš:

  1. Ţööļ ñöđéš ƒŕöḿ steps, çĥàîñéđ šéǫüéñţîàļļý
  2. Ƒöŕ à parallel: ƃļöçķ, öñé ñöđé þéŕ ƃŕàñçĥ àţ ţĥé šàḿé Ẋ þöšîţîöñ, éàçĥ ŵîţĥ àñ éđĝé ƒŕöḿ ţĥé þŕéṽîöüš šţéþ'š ñöđé, àñđ àñ éđĝé ƒŕöḿ éṽéŕý ƃŕàñçĥ ţö ţĥé ñéẋţ šţéþ'š ñöđé

Àüţö-àššîĝñéđ ÎĐš ƒöļļöŵ tool-N þàţţéŕñ. Þöšîţîöñš àüţö-ļàýöüţ ļéƒţ-ţö-ŕîĝĥţ. Ţĥé ĝŕàþĥ îš ţööļ ñöđéš öñļý; ţĥé ƒļöŵ'š šöüŕçé àñđ šîñķ àŕé ƃîñđîñĝš ŕéšöļṽéđ àţ ŕüñ ţîḿé (É-04), ñöţ ñöđéš.

À parallel: ƃļöçķ éẋîšţš îñ ţĥé đéƒîñîţîöñ ḿöđéļ öñļý. Éṽéŕý ĥöšţ ŕüñš à ƒļöŵ àš àñ öŕđéŕéđ ţööļ çĥàîñ (É-01): ţĥé þŕöĵéçţ ƒļöŵ ŕüññéŕ ƃüîļđš öñé ţööļ þéŕ šţéþ àñđ ƒàîļš öñ à parallel: šţéþ. Ŵŕîţé à ƒļöŵ ḿéàñţ ţö ŕüñ àš öŕđéŕéđ šţéþš.

Éẋàḿþļéš​

Ļîñéàŕ þîþéļîñé​

steps:
- tool: recycle
config: { fuzzyThreshold: 75 }
- tool: translate
- tool: qa

Šçŕîþţ šţéþ​

steps:
- tool: script
label: Filter long segments
config:
code: |
if (part.type === "block") {
if (part.block.source[0].content.text.length > 200) emit(part);
else skip();
} else emit(part);