1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
17 KiB
OmniRoute A2A Server Documentation (Igbo)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Agent-to-Agent Protocol v0.3 — OmniRoute dịka onye nnọchi anya nwere ọgụgụ isi maka ịhọrọ ụzọ
Ụdị njikọ A2A nwere akụkụ abụọ:
- JSON-RPC 2.0 na
POST /a2a(ebe ntinye izizi, nke akọwapụtara nasrc/app/a2a/route.ts). - REST n'okpuru
/api/a2a/*maka dashboard na ngwa ọrụ (ọnọdụ, ndepụta ọrụ, ịkagbu).
A na-eji A2ATaskManager (src/lib/a2a/taskManager.ts, TTL ndabara nke nkeji 5) esochi ọrụ. A na-ezigara nka ndị njikwa kwesịrị ekwesị site na A2A_SKILL_HANDLERS dị na src/lib/a2a/taskExecution.ts.
Ịchọpụta Onye Nnọchi Anya
curl http://localhost:20128/.well-known/agent.json
Ọ na-eweghachi Kaadị Onye Nnọchi Anya nke na-akọwa ikike, nka, na ihe nyocha njirimara OmniRoute chọrọ.
A na-enweta mpaghara version nke Kaadị Onye Nnọchi Anya site na process.env.npm_package_version (lee src/app/.well-known/agent.json/route.ts:13), ya mere ọ na-emekọrịta onwe ya na package.json mgbe ọ bụla e wepụtara ụdị ọhụrụ.
Nnyocha Njirimara
Arịrịọ /a2a niile chọrọ igodo API site na nkụnyeisi Authorization:
Authorization: Bearer YOUR_OMNIROUTE_API_KEY
Ọ bụrụ na ahazighị igodo API ọ bụla na sava ahụ, a ga-agafe nyocha njirimara.
Ịgbalite
A na-achịkwa A2A site na mgba ọkụ Endpoints → A2A, ma agbanyụrụ ya na ndabara. Mgbe agbanyụrụ ya,
GET /api/a2a/status na-akọ status: "disabled" na online: false; oku JSON-RPC gaa na
POST /a2a na-eweghachi HTTP 503 tinyere koodu njehie JSON-RPC -32000.
Metọd JSON-RPC 2.0
message/send — Mmezu Kwekọrọ Oge
Na-eziga ozi na nka ma chere nzaghachi zuru ezu.
curl -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "message/send",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Write a hello world in Python"}],
"metadata": {"model": "auto", "combo": "fast-coding"}
}
}'
Nzaghachi:
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"task": { "id": "uuid", "state": "completed" },
"artifacts": [{ "type": "text", "content": "..." }],
"metadata": {
"routing_explanation": "Selected claude-sonnet via provider \"anthropic\" (latency: 1200ms, cost: $0.003)",
"cost_envelope": {
"estimated": 0.005,
"actual": 0.003,
"currency": "USD"
},
"resilience_trace": [
{
"event": "primary_selected",
"provider": "anthropic",
"timestamp": "..."
}
],
"policy_verdict": {
"allowed": true,
"reason": "within budget and quota limits"
}
}
}
}
message/stream — Mgbasa SSE
Ọ bụ otu ihe ahụ dị ka message/send, mana ọ na-eweghachi Mmemme Sava Zitere maka mgbasa ozugbo.
curl -N -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "message/stream",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Explain quantum computing"}]
}
}'
Mmemme SSE:
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"working"},"chunk":{"type":"text","content":"..."}}}
: heartbeat 2026-03-03T17:00:00Z
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"completed"},"metadata":{...}}}
tasks/get — Jụọ Ọnọdụ Ọrụ
curl -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{"jsonrpc":"2.0","id":"2","method":"tasks/get","params":{"taskId":"TASK_UUID"}}'
tasks/cancel — Kagbuo Ọrụ
curl -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{"jsonrpc":"2.0","id":"3","method":"tasks/cancel","params":{"taskId":"TASK_UUID"}}'
Nka Ndị Dị
OmniRoute na-ekpughe nka A2A 6 e jikọtara na src/lib/a2a/taskExecution.ts::A2A_SKILL_HANDLERS. Modul nka ọ bụla dị na src/lib/a2a/skills/.
| Nka | ID | Nkọwa | Mkpado | Ọmụmaatụ |
|---|---|---|---|---|
| Nduzi Ụzọ Kọmputa | smart-routing |
Na-eduru arịrịọ site n'aka onye na-enye ọrụ ma ọ bụ ngwakọta kacha mma site n'iji injin ngwakọta OmniRoute + usoro inye akara | nduzi ụzọ, ndị na-enye ọrụ | "Jiri ụdịdị kacha mma duzie arịrịọ a" |
| Njikwa Oke Ojiji | quota-management |
Na-akọ ọnọdụ oke ojiji nke onye na-enye ọrụ ọ bụla, ma na-enyere ndị na-akpọ ọrụ aka ikpebi mgbe ha ga-ebelata ọsọ ma ọ bụ gbanwee onye na-enye ọrụ | oke ojiji, ndị na-enye ọrụ | "Lelee oke ojiji maka anthropic" |
| Nchọpụta Ndị Na-enye Ọrụ | provider-discovery |
Na-edepụta ndị na-enye ọrụ arụnyere, tinyere ikike ha, akara ọkwa efu, na ọnọdụ OAuth | ndị na-enye ọrụ, nchọpụta | "Olee ndị na-enye ọrụ dị?" |
| Nnyocha Ọnụ Ahịa | cost-analysis |
Na-eme atụmatụ ọnụ ahịa arịrịọ ma ọ bụ mkparịta ụka dabere na katalọgụ + ojiji emere n'oge na-adịbeghị anya | ọnụ ahịa, ojiji | "Mee atụmatụ ọnụ ahịa mkparịta ụka a" |
| Akụkọ Ọnọdụ Ahụike | health-report |
Na-achịkọta ọnọdụ circuit breaker, cooldown, na lockout maka onye na-enye ọrụ ọ bụla | ahụike, nkwụsi ike | "Gosi ọnọdụ ahụike nke ndị na-enye ọrụ niile" |
| Depụta Ikike | list-capabilities |
Na-eweghachi katalọgụ Agent Skills zuru ezu nwere ndenye 45 (API 23 + CLI 21 + config 1) dị ka tebụl markdown nwere URL SKILL.md raw maka itinye ọnọdụ | katalọgụ, nchọpụta, nka | "Depụta ikike OmniRoute niile" |
E kwesịrị idobe Agent Card ka ọ kwekọọ na katalọgụ dị ndụ nke ndị na-enye ọrụ 352; a na-enweta ọnụọgụ ndị na-enye ọrụ na metadata efu/na-enweghị nkwenye site na ndekọ runtime.
Nkọwa Nka list-capabilities
Nka list-capabilities bara uru karịsịa nye agent mpụga ndị chọrọ ịchọpụta ihe OmniRoute na-ekpughe tupu ha ezipụ oku API. Ọ na-eweghachi artifact tebụl markdown ahaziri nke ọma:
| ID | Aha | Ụdị | Mpaghara | Endpoints/Iwu | URL Raw |
| --- | --- | --- | --- | --- | --- |
| omni-auth | Nkwenye & Oge Ojiji | api | auth | POST /api/auth/login, ... | https://raw.githubusercontent.com/... |
...
Ahịrị ọ bụla nwere kọlụm rawUrl ka ndị agent nwee ike iweta SKILL.md zuru ezu ozugbo. Field metadata.totalSkills na-egosipụta otu nha katalọgụ ahụ (45 taa). Mmejuputa: src/lib/a2a/skills/listCapabilities.ts. Hụkwa AGENT-SKILLS.md.
REST API (ihe enyemaka)
Ebe njedebe JSON-RPC /a2a bụ ebe ntinye A2A izizi. Ebe njedebe REST ndị dị n'okpuru na-enye ohere enyemaka maka dashboard na ngwa mpụga:
| Ebe njedebe | Usoro | Nkọwa | Nkwenye |
|---|---|---|---|
/api/a2a/status |
GET | Ọnọdụ sava, nkà ndị edebanyere aha | (ọha) |
/api/a2a/tasks |
GET | Depụta ọrụ site na nzacha | njikwa |
/api/a2a/tasks/[id] |
GET | Nweta ọrụ site na ID | njikwa |
/api/a2a/tasks/[id]/cancel |
POST | Kagbuo ọrụ na-aga n'ihu | njikwa |
/.well-known/agent.json |
GET | Kaadị Agent (nchọpụta A2A) | (ọha, echekwara 3600s) |
/api/a2a/tasks |
POST | Nnyefe ọrụ mbata nye ìgwè OmniConductor (Conductor PRD RF5) | Bearer megide OMNIROUTE_API_KEY + a2aEnabled |
Nnyefe ọrụ Conductor mbata (POST /api/a2a/tasks): ndị agent A2A mpụga na-enyefe ọrụ ide koodu nye ìgwè OmniConductor site na OmniRoute. Ahụ: { skill: "conductor" | "conductor-cli-<profile>", messages: [{role, content}], metadata: { conductor: { repo: { url, base_ref? }, mode?, cli?, model? } } } — naanị nkà nke ìgwè Conductor (ndị ekwuputara na Kaadị Agent) ka enwere ike inyefe ọrụ; metadata.conductor.repo.url dị mkpa (ìgwè ahụ na-arụ ọrụ na repo git). Ụzọ ahụ na-atụgharị gaa na POST /v1/tasks nke hub site n'iji CONDUCTOR_ORCHESTRATOR_TOKEN dị n'akụkụ sava (ọ bụrụ na nke ahụ adịghị, CONDUCTOR_HUB_TOKEN) ma weghachite 201 { conductor_task_id, state: "submitted" }; ọnọdụ ọrụ na-alaghachi site na enyo SSE→A2A (RF1), a pụkwara ịhụ ha site na GET /api/a2a/tasks?skill=conductor.
Ịgbakwunye Nkà Ọhụrụ
-
Mepụta faịlụ nkà:
src/lib/a2a/skills/<your-skill>.tsBupụ function async
(task: A2ATask) => Promise<{ artifacts, metadata }>. Soro nhazi nke nkà ndị dị ugbu a dịkasmartRouting.ts. -
Debanye handler aha: n'ime
src/lib/a2a/taskExecution.ts, tinye ntinye naA2A_SKILL_HANDLERS:export const A2A_SKILL_HANDLERS = { // ...nkà ndị dị ugbu a "your-skill": async (task) => { const skillModule = await import("./skills/yourSkill"); return skillModule.executeYourSkill(task); }, }; -
Gosipụta ya na Kaadị Agent: n'ime
src/app/.well-known/agent.json/route.ts, gbakwunye na njedebe arrayskills:{ "id": "your-skill", "name": "Nkà Gị", "description": "Nkọwa dị nkenke nke lekwasịrị anya na ebumnuche", "tags": ["routing", "quota"], "examples": ["Ihe atụ nke ịkpọ ya n'asụsụ mmadụ"] } -
Dee ule:
tests/unit/a2a-<your-skill>.test.ts. Kpuchie ụzọ ihe si aga nke ọma + ụzọ njehie. -
Detuo nkọwa nke nkà ọhụrụ ahụ na tebụl
Available Skillsnke faịlụ a.
TTL nke Ọrụ
Ọrụ na-ekubi ume mgbe ttlMinutes gachara (ndabara bụ nkeji 5) — a na-ahazi nke a n'ime constructor A2ATaskManager dị na src/lib/a2a/taskManager.ts:82. Iji hazie ya dịka ịchọrọ, mee fork nke instantiation A2ATaskManager ma nyefee uru ọzọ (dịka ọmụmaatụ, new A2ATaskManager(15) maka TTL nke nkeji 15). Interval na-arụ ọrụ n'azụ na-ekpochapụ ọrụ ndị kubiela ume kwa sekọnd 60.
Usoro Ndụ Ọrụ
submitted → working → completed
→ failed
→ cancelled
- Ọrụ na-ekubi ume mgbe nkeji 5 gachara na ndabara (lee TTL nke Ọrụ)
- Ọnọdụ ikpeazụ:
completed,failed,cancelled - Ndekọ ihe omume na-edekọ mgbanwe ọnọdụ ọ bụla
Koodu Njehie
| Koodu | Ihe ọ pụtara |
|---|---|
| -32700 | Njehie parsing (JSON na-adịghị irè) |
| -32600 | Arịrịọ na-adịghị irè / Enweghị ikike |
| -32601 | Ahụghị method ma ọ bụ skill |
| -32602 | Params na-adịghị irè |
| -32603 | Njehie dị n'ime |
| -32000 | Agbanyụrụ endpoint A2A |
Ọmụmaatụ Njikọta
Python (requests)
import requests
resp = requests.post("http://localhost:20128/a2a", json={
"jsonrpc": "2.0", "id": "1",
"method": "message/send",
"params": {
"skill": "smart-routing",
"messages": [{"role": "user", "content": "Hello"}]
}
}, headers={"Authorization": "Bearer YOUR_KEY"})
result = resp.json()["result"]
print(result["artifacts"][0]["content"])
print(result["metadata"]["routing_explanation"])
TypeScript (fetch)
const resp = await fetch("http://localhost:20128/a2a", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer YOUR_KEY",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: "1",
method: "message/send",
params: {
skill: "smart-routing",
messages: [{ role: "user", content: "Hello" }],
},
}),
});
const { result } = await resp.json();
console.log(result.metadata.routing_explanation);