Skip to content

feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) - #8119

Merged
diegosouzapw merged 9 commits into
release/v3.8.50from
feat/conductor-agent-card
Aug 12, 2026
Merged

diegosouzapw merged 9 commits into
release/v3.8.50from
feat/conductor-agent-card

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

O que é

PR2 da integração OmniConductor (PRD OmniConductor/docs/PRD-OMNIROUTE-CONDUCTOR.md, RF2) — empilhado no PR #8080 (reusa CONDUCTOR_HUB_URL/TOKEN; retarget para release/v3.8.49 quando o PR1 mergear).

O /.well-known/agent.json passa a anunciar, além das 6 skills estáticas, skills derivadas da frota do OmniConductor (GET /v1/runners, capacidades OASF):

  • src/lib/conductor/fleetSkills.ts — 1 skill por perfil de CLI único entre runners online (conductor-cli-<profile>, com contagem de runners e modelos na descrição) + 1 por skill OASF declarada (conductor-skill-<s>). Cache em módulo de ~60s (relógio injetável). Fail-open: env ausente, hub offline, HTTP não-ok ou shape inválido (Zod — input não confiável) → [], e o card continua válido sem a seção da frota.
  • Rota do card: skills: [...estáticas, ...(await getFleetSkills())] — estáticas intactas.
  • Decisão de segurança (kickoff da integração): operações de administração da frota (drain/desregistro) não entram no card — só capacidades anunciáveis.

Testes (TDD — RED provado antes de cada implementação)

  • tests/unit/conductor-fleet-skills.test.ts (5) + tests/unit/conductor-agent-card.test.ts (2) — derivação/dedup, offline excluído, cache TTL com relógio injetável, hub-off → card válido, estáticas intactas com frota presente.
  • node --import tsx/esm --test tests/unit/conductor-*.test.ts tests/unit/listCapabilities-a2a.test.ts → 13/13 ✅ (regressão do card incluída)
  • npm run typecheck:core ✅ · eslint dos arquivos tocados ✅
  • Smoke real (hub vivo + runner real registrado): card devolveu 10 skills — 6 estáticas + conductor-cli-{claude,codex,gateway,opencode} com os modelos reais na descrição.

Próximos (PRD §7)

PR3 painel Conductor · PR4 chat do Faro com voz · PR5 delegação A2A de entrada (opcional).

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@diegosouzapw diegosouzapw changed the title feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) - Defer to 3.9.0 Jul 22, 2026
@diegosouzapw

Copy link
Copy Markdown
Collaborator Author

Confirmado: este PR (assim como o #8080, base dele) está corretamente marcado 'Defer to 3.9.0' — não faz sentido avaliar para merge em release/v3.8.49 enquanto a branch base feat/conductor-bridge não estiver integrada. Código revisado e está bom (fail-open, Zod no shape do hub, cache com relógio injetável, 13/13 testes TDD cobrindo offline/TTL/estáticas-intactas). Nenhuma ação necessária agora — retomar quando #8080 for decidido e este PR for retargetado para release/v3.8.49.

@diegosouzapw diegosouzapw changed the title feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) - Defer to 3.9.0 [defer] feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) - Defer to 3.9.0 Jul 22, 2026
@diegosouzapw diegosouzapw changed the title [defer] feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) - Defer to 3.9.0 feat(a2a): Agent Card announces Conductor fleet skills (PRD RF2) Aug 10, 2026
@diegosouzapw
diegosouzapw changed the base branch from feat/conductor-bridge to release/v3.8.50 August 12, 2026 04:32
@diegosouzapw
diegosouzapw merged commit 0b15820 into release/v3.8.50 Aug 12, 2026
6 of 10 checks passed
@diegosouzapw
diegosouzapw deleted the feat/conductor-agent-card branch August 12, 2026 13:33
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…aper-inference#8119)

* feat(a2a): conductor bridge core — event mapping with canceled->cancelled

* feat(a2a): incremental SSE parser for conductor bridge

* feat(a2a): conductor bridge connection loop with persisted cursor and backoff

* feat(a2a): start conductor bridge at boot behind CONDUCTOR_HUB_URL

* fix(a2a): conductor bridge parses the hub's real SSE wire format (id/type in frame, data={ts,payload})

* docs(reference): document CONDUCTOR_HUB_URL/TOKEN in ENVIRONMENT.md (env-doc-sync gate)

* feat(a2a): fleet skills derived from the Conductor hub for the agent card

* feat(a2a): agent card announces Conductor fleet skills

---------

Co-authored-by: backryun <bakryun0718@proton.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants