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

Üñđéŕšţàñđîñĝ ţĥé ÇĻÎ ļàýéŕš

Ḿöšţ üšéŕš ŕüñ kapi up àñđ šţöþ: îţ çàţçĥéš ţĥé ŵĥöļé þŕöĵéçţ üþ ţö îţš šĥîþ ĝàţéš, àñđ ţĥé þöŕçéļàîñ ṽéŕƃš àŕöüñđ îţ (status, check, apply, translate) çöṽéŕ ţĥé đàîļý ŵöŕķ. Üñđéŕñéàţĥ ţĥéḿ àŕé ţĥé ļàýéŕš ţĥöšé ṽéŕƃš àŕé ḿàđé öƒ, ŵĥîçĥ ýöü çàñ ŕüñ öñé þîéçé àţ à ţîḿé.

Àţ ţĥé ƃöţţöḿ îš à ŕéĝîšţŕý öƒ ţööļš: ţŕàñšļàţé, ŕéçýçļé, ǫà, ţéŕḿ-çĥéçķ, ŕéđàçţ, àñđ ţĥé ŕéšţ (ļîšţ ţĥéḿ ŵîţĥ kapi tools list; ţĥé ţööļ ŕéƒéŕéñçé đöçüḿéñţš éàçĥ). À ƒļöŵ çöḿþöšéš ţööļš îñţö à ñàḿéđ þîþéļîñé. Ţĥé þöŕçéļàîñ ṽéŕƃš àŕé ŵöŕķƒļöŵš öṽéŕ ţĥöšé ţŵö ļàýéŕš: kapi translate ŵŕàþš ŕéçýçļé → ţŕàñšļàţé → çĥéçķš, àñđ kapi up ļööþš à ƒļöŵ üñţîļ ţĥé þŕöĵéçţ'š ĝàţéš àŕé ḿéţ.

Porcelainkapi up · translate · check · statusloop the default flow over pending blocksre-derive coverage before each passrun the bound checks, evaluate the gateshold back for review what needs a personcomposesFlowskapi run <flow>one named flow, one passan ordered composition of toolsno gate loop, no review holdcomposesToolskapi exec <tool>one registry tool, one passno content-memory pass, no checks around itdiscover with kapi tools list

Éàçĥ ļàýéŕ çöḿþöšéš ţĥé öñé ƃéļöŵ: à ƒļöŵ îš àñ öŕđéŕéđ ļîšţ öƒ ţööļš; ķàþî üþ îš à ƒļöŵ îñ à ļööþ ŵîţĥ çöṽéŕàĝé, çĥéçķš, àñđ ĝàţéš àŕöüñđ îţ.

exec: öñé ţööļ, öñé þàšš​

kapi exec <tool> éẋéçüţéš à šîñĝļé ŕéĝîšţŕý ţööļ öñ ţĥé ƒîļéš ýöü ñàḿé: öñé ţööļ, öñé þàšš, ñö ĝüàŕđŕàîļš àŕöüñđ îţ. Ţĥéšé àŕé ţĥé šàḿé ţööļš à ƒļöŵ ŕüñš: exec translate îš à ƃàŕé ÀÎ ţŕàñšļàţé ŵîţĥ ñö çöñţéñţ-ḿéḿöŕý þàšš ƃéƒöŕé îţ àñđ ñö çĥéçķš àƒţéŕ îţ; exec term-check ŕüñš ĵüšţ ţĥé ţéŕḿîñöļöĝý çĥéçķ; exec recycle ŕüñš ĵüšţ ţĥé çöñţéñţ-ḿéḿöŕý ļéṽéŕàĝé. Đîšçöṽéŕ à ţööļ'š öþţîöñš ŵîţĥ kapi tools schema <name>.

kapi exec translate app.json --target-lang fr # bare translate, no memory, no checks
kapi exec term-check locales/en.json --target locales/fr.json --target-lang fr
kapi exec recycle app.json --target-lang fr # content-memory leverage only

À çĥéçķ ţĥàţ çöḿþàŕéš à ƃļöçķ'š šöüŕçé ŵîţĥ îţš ţŕàñšļàţîöñ ŕéàđš ƃöţĥ. À ƒîļé ţĥàţ ĥöļđš ƃöţĥ, šüçĥ àš ẊĻÎƑƑ, ñééđš ñöţĥîñĝ ḿöŕé. Ŵĥéñ ţĥé ţŕàñšļàţîöñ îš à ƒîļé öƒ îţš öŵñ, ñàḿé ţĥé šöüŕçé ƒîļé àñđ þàšš ţĥé ţŕàñšļàţîöñ ŵîţĥ --target. Ţĥé ŕüñ ŕéàđš ţĥé ţŵö ƒîļéš àš öñé šéţ öƒ ƃļöçķš, þŕîñţš îţš ƒîñđîñĝš, àñđ ŵŕîţéš ñö ƒîļé:

$ kapi exec qa docs/contacts.md --target docs/nb/contacts.md --target-lang nb
outcome rule location message
REPORTS qa.doubled-word docs/contacts.md:contacts/p#2 Target contains doubled word: "på"

0 failing, 1 reported · score 99/100

Ŕüñ öñ docs/contacts.md àļöñé, qa ƒîñđš ñö nb ţŕàñšļàţîöñ ţö çöḿþàŕé ŵîţĥ. ķàþî ŕéþöŕţš ţĥàţ ţĥé çĥéçķ đîđ ñöţ ŕüñ, ñàḿéš --target, àñđ éẋîţš ŵîţĥ çöđé 4, àš kapi check đöéš ŵĥéñ îţ çĥéçķš ñö çöñţéñţ. qa ŵŕîţéš à ƒîļé öñļý ŵĥéŕé -o öŕ --output-dir ñàḿéš öñé.

review þàîŕš à ţŕàñšļàţîöñ ƒîļé ţĥé šàḿé ŵàý. Îţ àšķš à þŕöṽîđéŕ ţö ŕéṽîéŵ éàçĥ ƃļöçķ'š ţŕàñšļàţîöñ, þŕîñţš ŵĥàţ ţĥé þŕöṽîđéŕ ƒöüñđ, àñđ çĥàñĝéš ñéîţĥéŕ ƒîļé:

$ kapi exec review docs/contacts.md --target docs/nb/contacts.md --target-lang nb --provider demo
demo mode: illustrative output from a built-in stub rather than a real language model.
outcome rule location message
REPORTS review.review docs/contacts.md:contacts/p ⟦demo⟧ illustrative stub response (no real language model)
REPORTS review.review docs/contacts.md:h ⟦demo⟧ illustrative stub response (no real language model)

0 failing, 2 reported · score 98/100

Ţĥé đéḿö þŕöṽîđéŕ àñšŵéŕš éàçĥ ƃļöçķ îñ þŕöšé, šö éàçĥ ƃļöçķ çàŕŕîéš öñé ƒîñđîñĝ ţĥàţ ĥöļđš ţĥé àñšŵéŕ. À þŕöṽîđéŕ ţĥàţ àñšŵéŕš ŵîţĥ ţĥé ŕéṽîéŵ'š ƒîñđîñĝš ŕéþöŕţš öñé ŕöŵ þéŕ ƒîñđîñĝ, àñđ çöüñţš à çŕîţîçàļ öŕ ḿàĵöŕ öñé àš ƒàîļîñĝ. Ŵĥéñ îţ ŕüñš ŵîţĥöüţ --target öñ à ƒîļé ţĥàţ ĥöļđš ñö nb ţŕàñšļàţîöñ, review ŕéþöŕţš ţĥàţ îţ đîđ ñöţ ŕüñ àñđ éẋîţš ŵîţĥ çöđé 4, àš qa đöéš.

Ŕéàçĥ ƒöŕ exec ŵĥéñ ýöü ŵàñţ éẋàçţļý öñé ţööļ'š ƃéĥàṽîöŕ: îšöļàţîñĝ à šţéþ ŵĥîļé đéƃüĝĝîñĝ à ƒļöŵ, öŕ à öñé-öƒƒ çĥéçķ öñ à ƒîļé. Šéé ţĥé exec ŕéƒéŕéñçé.

Îñ à þŕöĵéçţ ţĥàţ đéçļàŕéš à ŕéđàçţîöñ þöļîçý, exec þüţš redact ƃéƒöŕé à ţööļ ţĥàţ çàļļš à ḿöđéļ àñđ unredact àƒţéŕ îţ. Éàçĥ ƒîļé îš ŕéđàçţéđ üñđéŕ ţĥé þöļîçý ţĥàţ çöṽéŕš îţ: îţš çöļļéçţîöñ'š öŕ çöñţéñţ îţéḿ'š redaction:, éļšé defaults.redaction. Ţĥé ḿöđéļ ŕéàđš þļàçéĥöļđéŕš îñ éṽéŕý ƃļöçķ, îñ éàçĥ ţŕàñšļàţîöñ ƃéšîđé îţ, àñđ îñ éṽéŕýţĥîñĝ ţĥé ţööļ šéñđš ŵîţĥ ţĥéḿ: ţéŕḿ ŕüļéš, ţĥé ṽöîçé þŕöƒîļé, ţĥé çöñţéñţ ḿéḿöŕý'š þŕéṽîöüš ṽéŕšîöñ àñđ ţĥé îñšţŕüçţîöñ. Ţĥé öüţþüţ çàŕŕîéš ţĥé öŕîĝîñàļ ṽàļüéš. À þöļîçý ţĥàţ đéţéçţš éñţîţîéš šţöþš ţĥé ŕüñ; ŕüñ ţĥé ţööļ îñ à ƒļöŵ ŵîţĥ entity-extract àĥéàđ öƒ redact îñšţéàđ.

run: çöḿþöšé ţööļš îñţö à ƒļöŵ​

kapi run <flow> ŕüñš à ñàḿéđ ƒļöŵ (àñ öŕđéŕéđ çöḿþöšîţîöñ öƒ ţööļš) ƒöŕ öñé þàšš. Ƃüîļţ-îñ ƒļöŵš çöṽéŕ ţĥé çöḿḿöñ çöḿþöšîţîöñš (translate, translate-qa, secure-translate; kapi flows ļîšţš ŵĥàţ ýöüŕ ƃüîļđ šĥîþš), àñđ à þŕöĵéçţ ŕéçîþé đéƒîñéš îţš öŵñ üñđéŕ flows:.

kapi run translate-qa -i app.xliff --target-lang fr # translate, then LLM-judged review
kapi run secure-translate -i notes.md --target-lang de # redact → translate → unredact
kapi run pseudo -p kapi.yaml # a project-defined flow

À ƒļöŵ ţĥé ŕéçîþé đéƒîñéš ŕüñš öṽéŕ ţĥé þŕöĵéçţ'š ƒîļéš, šö ĝîṽéñ à .kpz þàçķàĝé îţ šţöþš: kapi exec <tool> work.kpz ŕüñš öñé ţööļ öñ ţĥé þàçķàĝé, àñđ kapi merge work.kpz ƃŕîñĝš îţ îñţö ţĥé þŕöĵéçţ ƒîŕšţ.

À ƒļöŵ îš àļšö ŵĥàţ kapi up ļööþš: defaults.flow ñàḿéš ţĥé þŕöĵéçţ'š đéƒàüļţ, àñđ ŵîţĥöüţ öñé up ŕüñš ţĥé ƃüîļţ-îñ đéƒàüļţ: çöñţéñţ-ḿéḿöŕý ŕéüšé (ŕéçýçļé) ƒöļļöŵéđ ƃý ÀÎ ţŕàñšļàţé. run éẋéçüţéš ţĥé çöḿþöšîţîöñ öñçé àñđ šţöþš; îţ ŕé-đéŕîṽéš ñö çöṽéŕàĝé àñđ çöñšüļţš ñö ĝàţéš. Šéé ţĥé run ŕéƒéŕéñçé.

extract / merge: ţĥé ţŕàñšļàţöŕ ĥàñđ-öƒƒ​

Ñöţ éṽéŕý þàšš îš à ţööļ ŕüñ. Ŵĥéñ à þéŕšöñ đöéš ţĥé ţŕàñšļàţîöñ, kapi extract éḿîţš öñé ƃîļîñĝüàļ ƒîļé þéŕ šöüŕçé → ţàŕĝéţ þàîŕ (ẊĻÎƑƑ 2.ẋ öŕ ÞÖ ƒöŕ à ţĥîŕđ-þàŕţý ÇÀŢ ţööļ, à ļöššļéšš .kpz ƒöŕ à ŕéçîþîéñţ ŵöŕķîñĝ îñ ķàþî), þŕé-ƒîļļéđ ƒŕöḿ ţĥé þŕöĵéçţ'š çöñţéñţ ḿéḿöŕý. kapi merge àþþļîéš ţĥé ŕéţüŕñéđ ƒîļé ƃàçķ öñţö ţĥé þŕöĵéçţ, ŕéšţöŕîñĝ ţĥé öŕîĝîñàļ ƒöŕḿàţš ţĥŕöüĝĥ ţĥé šķéļéţöñ çàþţüŕéđ àţ éẋţŕàçţ ţîḿé àñđ àƃšöŕƃîñĝ ţĥé çöŕŕéçţîöñš îñţö ḿéḿöŕý.

kapi extract --target-lang fr # → out/<name>.en-to-fr.xliff, memory pre-filled
kapi merge -i out/app.en-to-fr.xliff

Éẋţŕàçţ àñđ ḿéŕĝé šîţ àţ ţĥé šàḿé ļàýéŕ àš run: ţĥéý ḿöṽé ŵöŕķ ţĥŕöüĝĥ àñ éẋţéŕñàļ þàšš îñšţéàđ öƒ à ţööļ þàšš, àñđ ţĥé ŕéšüļţ ļàñđš îñ ţĥé šàḿé þŕöĵéçţ šţàţé ţĥé þöŕçéļàîñ ŕé-đéŕîṽéš. Ţĥé ŵöŕķƒļöŵ (çàŕŕîéŕš, ḿéḿöŕý þŕöṽéñàñçé, ṽéñđöŕ ŕöüñđš) îš çöṽéŕéđ îñ Ĥàñđ öƒƒ ţö ţŕàñšļàţöŕš; ţĥé ƒļàĝš àŕé îñ ţĥé extract àñđ merge ŕéƒéŕéñçéš.

Ŵĥàţ kapi up àđđš​

Šééñ ƒŕöḿ ţĥîš ļàýéŕ, kapi up îš ŕüñ ţĥé đéƒàüļţ ƒļöŵ, îñ à ļööþ, ŵîţĥ ţĥé þŕöĵéçţ ḿàçĥîñéŕý àŕöüñđ îţ. Éàçĥ þàšš:

  1. ŕé-đéŕîṽéš çöṽéŕàĝé ƒŕöḿ ţĥé ŵöŕķîñĝ ţŕéé (ŕé-éẋţŕàçţîñĝ ŵĥéñ šöüŕçé ƒîļéš çĥàñĝéđ),
  2. ŕüñš ţĥé ƒļöŵ ƒöŕ ţĥé ļöçàļéš šţîļļ šĥöŕţ öƒ ţĥéîŕ ĝàţé: ţĥé šàḿé çöḿþöšîţîöñ run ŵöüļđ éẋéçüţé öñçé,
  3. ŕüñš ţĥé ƃöüñđ çĥéçķš öṽéŕ ŵĥàţ ŵàš þŕöđüçéđ, šö à ļöçàļé ŵîţĥ à ƒàîļîñĝ ƒîñđîñĝ đöéš ñöţ çļéàŕ îţš ĝàţé,
  4. éṽàļüàţéš ţĥé ĝàţéš àñđ éîţĥéŕ ļööþš, šţöþš ŵĥéñ ţĥé þŕöĵéçţ îš üþ ţö đàţé, öŕ ĥöļđš ƃàçķ ƒöŕ ŕéṽîéŵ ŵĥàţ ñééđš à þéŕšöñ.

run àñđ exec šķîþ ţĥé çöṽéŕàĝé đéŕîṽàţîöñ, ţĥé çĥéçķš àñđ ţĥé ĝàţéš. Ţĥé ƒüļļ ḿöđéļ îš ţĥé ķàþî ļööþ.

Ŵĥéñ ţö ŕéàçĥ ƒöŕ éàçĥ​

Ýöü ŵàñţŔéàçĥ ƒöŕ
Ţĥé đàîļý çàţçĥ-üþ: éṽéŕýţĥîñĝ ţöŵàŕđ ţĥé ĝàţéškapi up
Öñé ĝüàŕđŕàîļéđ ţŕàñšļàţîöñ þàšš öṽéŕ ñàḿéđ ƒîļéškapi translate
À šþéçîƒîç çöḿþöšîţîöñ, öñé þàšš, ñö ĝàţé ļööþkapi run <flow>
Éẋàçţļý öñé ţööļ'š ƃéĥàṽîöŕ, ñöţĥîñĝ àŕöüñđ îţkapi exec <tool>
À þéŕšöñ ţŕàñšļàţéš: ĥàñđ ţĥé ŵöŕķ öüţ àñđ ţàķé îţ ƃàçķkapi extract / kapi merge

Šéé àļšö​