Saltar al contenido principal

Referencia de comandos A2A

Esta página documenta todos los comandos de iac-code relacionados con A2A. Úsala cuando necesites nombres exactos de opciones, patrones comunes de comandos y el significado operativo de cada flag.

Resumen de comandos

ComandoPropósito
iac-code a2aEjecutar iac-code como servidor A2A
iac-code a2a-client callDescubrir una Agent Card remota y enviar un prompt
iac-code a2a-client discoverObtener y opcionalmente verificar una Agent Card
iac-code a2a-client task-getObtener una tarea por ID
iac-code a2a-client task-listListar tareas con filtros y paginación
iac-code a2a-client task-cancelCancelar una tarea activa
iac-code a2a-client task-subscribeSuscribirse a un stream de eventos de una tarea activa
iac-code a2a-client push-config-createCrear una configuración de notificación push de tarea
iac-code a2a-client push-config-getObtener una configuración de notificación push de tarea
iac-code a2a-client push-config-listListar configuraciones de notificación push de tarea
iac-code a2a-client push-config-deleteEliminar una configuración de notificación push de tarea
iac-code a2a-client extended-cardObtener la Agent Card extendida autenticada
iac-code a2a-client route-previewPrevisualizar la selección local de ruta para a2a-client call

Todos los comandos de cliente HTTP aceptan las mismas opciones de autenticación:

OpciónDescripción
--tokenToken Bearer enviado como Authorization: Bearer <token>
--basic-usernameNombre de usuario de Basic auth
--basic-passwordContraseña de Basic auth
--api-keyValor de clave de API
--api-key-headerNombre del encabezado de clave de API; por defecto es X-API-Key

Configuración del cliente A2A

Todos los subcomandos a2a-client aceptan un archivo de configuración YAML a nivel de grupo:

iac-code a2a-client --config a2a-client.yml call --prompt "Create a VPC"

Las opciones de CLI sobrescriben los valores de configuración. Usa la configuración para conexión estable, autenticación, verificación, enrutamiento y ajustes repetidos de tareas o push; mantén el texto de prompts puntuales en la línea de comandos.

url: http://127.0.0.1:41242/
token: your-bearer-token
basic-username: iac-code
basic-password: your-password
api-key: your-api-key
api-key-header: X-IAC-Code-Key
verify-card-secret: your-card-signing-secret
verify-card-jwks-url: https://a2a.example.com/.well-known/jwks.json
require-card-signature: true
timeout: 30
cwd: /path/to/workspace
context-id: ctx-123
task-id: task-123
config-id: webhook-1
callback-url: https://hooks.example.com/a2a
notification-token: notification-token
auth-scheme: bearer
auth-credentials: callback-token
routes:
- name: ros
url: http://127.0.0.1:41242/
skills:
- iac_generation
tags:
- ros
- template

iac-code a2a

Ejecuta iac-code como servidor A2A.

iac-code a2a

De forma predeterminada, el servidor se enlaza a 127.0.0.1:41242 y sirve JSON-RPC sobre HTTP. El puerto 41242 es el predeterminado de iac-code; no es un puerto A2A registrado.

Opciones básicas del servidor

OpciónPredeterminadoDescripción
--configvacíoArchivo de configuración YAML que contiene opciones del servidor A2A
--host127.0.0.1Host del servidor HTTP
--port41242Puerto del servidor HTTP
--transporthttpTransporte del servidor: http, stdio, unix, websocket, grpc, grpc-jsonrpc o redis-streams
--thinking-exposuretool-traceExpone un tipo de señal de thinking A2A; repite para varios. Valores: raw-thinking, tool-trace
--debug, -dfalseHabilitar logging de depuración

Ejemplo:

iac-code a2a --host 127.0.0.1 --port 41242 --debug

Configuración YAML

Usa --config para autenticación, almacenamiento, firma, ajustes específicos de transporte, entrega push y otros detalles de despliegue. Las claves pueden usar guiones o guiones bajos. Los flags comunes de CLI --host, --port y --transport sobrescriben los valores del archivo de configuración.

host: 127.0.0.1
port: 41242
transport: http
token: local-dev-token
persistence-dir: .iac-code-a2a/state
artifact-dir: .iac-code-a2a/artifacts
push-notifications: true

Ejecútalo con:

iac-code a2a --config a2a-server.yml --port 41243

Autenticación HTTP

La autenticación es opcional. Configura la autenticación del servidor en YAML o con variables de entorno. Si no se configura ningún ajuste de autenticación, las solicitudes no están autenticadas. Cuando se configuran uno o más esquemas, una solicitud puede satisfacer cualquier esquema configurado.

Clave de configuraciónVariable de entornoDescripción
tokenIACCODE_A2A_HTTP_TOKENToken Bearer
basic-usernameIACCODE_A2A_BASIC_USERNAMENombre de usuario de Basic auth
basic-passwordIACCODE_A2A_BASIC_PASSWORDContraseña de Basic auth
api-keyIACCODE_A2A_API_KEYValor de clave de API
api-key-headerIACCODE_A2A_API_KEY_HEADERNombre del encabezado de clave de API

Token Bearer:

token: local-dev-token

Basic auth:

basic-username: iac-code
basic-password: local-dev-password

Clave de API:

api-key: local-dev-key
api-key-header: X-IAC-Code-Key

Persistencia y artefactos

Clave de configuraciónPredeterminadoDescripción
persistence-dir~/.iac-code/a2aMetadatos JSON locales para tareas, contextos, rutas y configuraciones push
artifact-dir<persistence-dir>/artifactsAlmacén local de payloads de artefactos

La persistencia refleja instantáneas de tareas y contextos como metadatos de restauración. No reinicia una tarea asyncio en curso después de un fallo del proceso.

persistence-dir: ~/.iac-code/a2a
artifact-dir: ~/.iac-code/a2a/artifacts

Firma de Agent Card

Clave de configuraciónDescripción
signing-secretSecreto HMAC usado para firmar la Agent Card pública

El servidor emite campos JWS AgentCardSignature del SDK de A2A. El modo simétrico usa HS256.

signing-secret: local-card-signing-secret

Entrega de notificaciones push

Clave de configuraciónPredeterminadoDescripción
push-notificationsfalseHabilitar métodos de configuración de notificaciones push de tareas A2A y entrega de estados terminales
push-queuelocal-fileBackend de cola push: local-file o redis-streams
push-redis-urlvacíoURL de Redis para la cola push respaldada por Redis
push-streamiac-code:a2a:pushStream de Redis para trabajos push
push-retry-keyiac-code:a2a:push:retryConjunto ordenado de Redis para reintentos retrasados
push-dead-streamiac-code:a2a:push:deadStream de Redis para trabajos de dead-letter
push-consumer-groupiac-code-pushGrupo de consumidores Redis para workers push
push-consumer-namevacíoNombre de consumidor Redis para este worker
push-lease-timeout-ms300000Timeout de lease pendiente de Redis

Cola de archivo local:

push-notifications: true
persistence-dir: ~/.iac-code/a2a
push-queue: local-file

Cola Redis Streams:

push-notifications: true
push-queue: redis-streams
push-redis-url: redis://localhost:6379/0
push-stream: iac-code:a2a:push
push-retry-key: iac-code:a2a:push:retry
push-dead-stream: iac-code:a2a:push:dead
push-consumer-group: iac-code-push
push-consumer-name: worker-1

La entrega push respaldada por Redis requiere el extra a2a-redis.

Opciones de transporte

TransporteComandoNotas
HTTP JSON-RPC y RESTiac-code a2a --transport httpPredeterminado. Anuncia interfaces JSONRPC y HTTP+JSON.
stdioiac-code a2a --transport stdioFrames JSON-RPC personalizados experimentales sobre entrada/salida estándar.
Socket Unixiac-code a2a --config a2a-server.yml --transport unixRequiere socket-path en la configuración.
WebSocketiac-code a2a --config a2a-server.yml --transport websocketUsa ws-path desde la configuración, con valor predeterminado /a2a.
gRPCiac-code a2a --config a2a-server.yml --transport grpcUsa grpc-host y grpc-port desde la configuración.
gRPC JSON-RPCiac-code a2a --config a2a-server.yml --transport grpc-jsonrpcEnvoltorio JSON-RPC personalizado sobre gRPC.
Redis Streamsiac-code a2a --config a2a-server.yml --transport redis-streamsRequiere redis-url en la configuración.

Opciones de transporte Redis Streams:

Clave de configuraciónPredeterminadoDescripción
redis-urlvacíoURL de conexión Redis; requerida para --transport redis-streams
request-streamiac-code:a2a:requestsNombre del stream de solicitudes
response-streamiac-code:a2a:responsesNombre del stream de respuestas
consumer-groupiac-codeGrupo de consumidores del stream de solicitudes

Exposición de thinking

Clave de configuraciónPredeterminadoDescripción
thinking-exposuretool-traceTipos de señales de runtime que no son respuesta expuestas mediante A2A metadata.iac_code. Usa una lista YAML, una cadena separada por comas o flags --thinking-exposure repetidas. Los valores admitidos son tool-trace y raw-thinking.

tool-trace conserva los metadatos existentes de progreso de herramientas, permisos y resultados. raw-thinking emite chunks de razonamiento del provider como actualizaciones metadata.iac_code.thinking con type: raw_thinking y text. iac-code no produce actualmente eventos separados de thought-summary o progress-summary, por lo que no son tipos de exposición válidos.

thinking-exposure:
- tool-trace
- raw-thinking

Comportamiento de permisos

Clave de configuraciónPredeterminadoDescripción
auto-approve-permissionsfalseAprobar automáticamente solicitudes de permisos de herramientas generadas durante turnos A2A

Sin auto-approve-permissions: true, el modo A2A rechaza solicitudes de permisos y emite metadatos de permisos. Cuando está habilitado, las decisiones de permisos se escriben en el registro local de auditoría de permisos; toda decisión allow que requiere un registro de auditoría falla en modo cerrado si ese registro no se puede persistir. Las API protegidas de escritura de Alibaba Cloud no se aprueban de forma global con reglas allow ordinarias; configura reglas allow exactas aliyun_api(product:action) para automatización confiable.

iac-code a2a-client call

Descubre una Agent Card, elige el endpoint anunciado y envía un prompt.

iac-code a2a-client --config a2a-client.yml call \
--prompt "Create a ROS VPC template with two vSwitches." \
--cwd "$PWD"
OpciónPredeterminadoDescripción
--urlvacíoURL base del agente A2A o URL del endpoint JSON-RPC; puede venir de la configuración
--routerepetibleEspecificación de ruta usada cuando --url se omite
--route-namevacíoRuta con nombre que seleccionar
--prompt, -prequeridoTexto del prompt
--cwd.Ruta de espacio de trabajo enviada como message.metadata.iac_code.cwd
--context-idvacíoID de contexto A2A existente para un mensaje de seguimiento
--iac-code-modelvacíoModelo LLM enviado como message.metadata.iac_code.iac_code_model; anula la configuración del modelo del servidor solo para este turno de mensaje
--iac-code-api-keyvacíoAPI key del proveedor LLM enviada como message.metadata.iac_code.iac_code_api_key; anula IAC_CODE_API_KEY y .credentials.yml solo para este turno de mensaje
--thinking-enabled, --no-thinking-enabledvacíoPolítica booleana de thinking enviada como message.metadata.iac_code.thinking.enabled; si se omite, conserva el valor predeterminado del servidor/proveedor
--thinking-effortvacíoEffort de thinking enviado como message.metadata.iac_code.thinking.effort solo para este turno de mensaje
--thinking-budgetvacíoPresupuesto de thinking como entero positivo enviado como message.metadata.iac_code.thinking.budget solo para este turno de mensaje
--verify-card-secret, --signing-secretvacíoSecreto HMAC para verificación de Agent Card
--verify-card-jwks-urlvacíoURL JWKS remota usada para verificación de Agent Card
--require-card-signature, --require-signaturefalseRechazar Agent Cards sin firmar o inválidas
--timeout30.0Timeout de llamada en segundos
--streamfalseUsar SendStreamingMessage e imprimir eventos de stream

--iac-code-api-key es la clave que usa el runtime iac-code remoto para llamar a su proveedor LLM. Es distinta de --api-key, que autentica la solicitud HTTP A2A en sí.

Las opciones de thinking son metadatos de solicitud por mensaje. También se pueden proporcionar en el YAML del cliente A2A como thinking-enabled, thinking-effort y thinking-budget; los flags de línea de comandos anulan los valores de configuración. Si se omiten las tres, el cliente no envía metadatos de thinking y el runtime remoto conserva los valores predeterminados configurados del proveedor. Para endpoints openai_compatible respaldados por el modo compatible de DashScope, una política de thinking explícita usa los parámetros wire nativos de DashScope, por lo que --no-thinking-enabled puede enviar extra_body.enable_thinking=false. Emitir raw thinking de vuelta al cliente A2A sigue requiriendo que el servidor habilite thinking-exposure: raw-thinking.

thinking-enabled: false
thinking-effort: low
thinking-budget: 2048

Seguimiento en el mismo contexto:

iac-code a2a-client --config a2a-client.yml call \
--context-id ctx-123 \
--prompt "Now add outputs for the VPC and vSwitch IDs." \
--cwd "$PWD"

Streaming:

iac-code a2a-client --config a2a-client.yml call \
--prompt "Review this Terraform module." \
--cwd "$PWD" \
--stream

Requerir una Agent Card firmada:

iac-code a2a-client --config a2a-client.yml call \
--prompt "Generate a production VPC template." \
--cwd "$PWD"

Verificar usando una URL JWKS remota:

iac-code a2a-client --config jwks-client.yml call \
--prompt "Review the ROS stack."

iac-code a2a-client discover

Obtiene e imprime una Agent Card remota.

iac-code a2a-client --config a2a-client.yml discover
OpciónDescripción
--urlURL base del agente A2A; puede venir de la configuración
--verify-card-secret, --signing-secretSecreto HMAC para verificación
--verify-card-jwks-urlURL JWKS remota para verificación
--require-card-signature, --require-signatureRequerir una firma válida

Descubrimiento autenticado:

iac-code a2a-client --config a2a-client.yml discover

Comandos de tareas

Los comandos de tareas llaman directamente a métodos de tarea JSON-RPC. Son útiles para herramientas operativas, paneles y depuración.

iac-code a2a-client task-get

iac-code a2a-client --config a2a-client.yml task-get \
--task-id task-123 \
--history-length 20
OpciónDescripción
--urlURL del endpoint A2A JSON-RPC; puede venir de la configuración
--task-idID de tarea; puede venir de la configuración
--history-lengthEntradas máximas de historial de tarea que devolver

iac-code a2a-client task-list

iac-code a2a-client --config a2a-client.yml task-list \
--context-id ctx-123 \
--status TASK_STATE_INPUT_REQUIRED \
--page-size 20 \
--output table
OpciónPredeterminadoDescripción
--urlvacíoURL del endpoint A2A JSON-RPC; puede venir de la configuración
--context-idvacíoFiltrar por ID de contexto
--statusvacíoFiltrar por estado de tarea
--page-sizevacíoMáximo de tareas que devolver
--page-tokenvacíoToken de paginación
--include-artifactsfalseIncluir artefactos de tarea en la respuesta
--outputtabletable o json

Salida JSON:

iac-code a2a-client --config a2a-client.yml task-list \
--include-artifacts \
--output json

iac-code a2a-client task-cancel

iac-code a2a-client --config a2a-client.yml task-cancel \
--task-id task-123

La cancelación es cooperativa. Una tarea completada, fallida, cancelada o que requiere entrada devuelve el error estándar A2A de tarea no cancelable.

iac-code a2a-client task-subscribe

iac-code a2a-client --config a2a-client.yml task-subscribe \
--task-id task-123

El comando transmite eventos para tareas activas. Para un nuevo turno, prefiere a2a-client call --stream; inicia la tarea y transmite actualizaciones en un solo comando.

Comandos de configuración de notificaciones push

Estos comandos requieren un servidor iniciado con push-notifications: true. Gestionan configuraciones estándar de notificaciones push de tareas A2A.

iac-code a2a-client push-config-create

iac-code a2a-client --config a2a-client.yml push-config-create \
--task-id task-123 \
--config-id webhook-1 \
--callback-url https://hooks.example.com/a2a \
--notification-token "$NOTIFICATION_TOKEN" \
--auth-scheme bearer \
--auth-credentials "$WEBHOOK_BEARER_TOKEN"
OpciónDescripción
--urlURL del endpoint A2A JSON-RPC; puede venir de la configuración
--task-idID de tarea; puede venir de la configuración
--config-idID de configuración push; puede venir de la configuración
--callback-urlURL de callback HTTP(S); puede venir de la configuración
--notification-tokenToken enviado como X-A2A-Notification-Token
--auth-schemeEsquema de autenticación del callback, como bearer o basic
--auth-credentialsCredenciales de autenticación del callback

Las URL de callback se validan antes del almacenamiento y del despacho. El validador predeterminado rechaza URL que no sean HTTP(S), nombres localhost y direcciones IP literales privadas/locales.

iac-code a2a-client push-config-get

iac-code a2a-client --config a2a-client.yml push-config-get \
--task-id task-123 \
--config-id webhook-1

iac-code a2a-client push-config-list

iac-code a2a-client --config a2a-client.yml push-config-list \
--task-id task-123 \
--page-size 10

iac-code a2a-client push-config-delete

iac-code a2a-client --config a2a-client.yml push-config-delete \
--task-id task-123 \
--config-id webhook-1

iac-code a2a-client extended-card

Obtiene la Agent Card extendida autenticada.

iac-code a2a-client --config a2a-client.yml extended-card \
--token "$A2A_TOKEN"

La Agent Card pública anuncia capabilities.extendedAgentCard=true. La tarjeta extendida agrega detalles autenticados del runtime, incluidos metadatos de capacidades de gestión de tareas y configuración push.

iac-code a2a-client route-preview

Previsualiza cómo a2a-client call resuelve rutas configuradas cuando --url se omite.

iac-code a2a-client route-preview \
--route "template=http://127.0.0.1:41242/;skills=iac_generation;tags=ros,template" \
--skill iac_generation \
--prompt "Create a ROS VPC template"
OpciónDescripción
--routeEspecificación de ruta repetible en formato name=url;skills=a,b;tags=x,y
--nameNombre de ruta que resolver
--skillID de skill que resolver
--promptTexto de prompt usado para coincidencia de nombre/etiqueta
--route-state-dir, --persistence-dirDirectorio usado para persistir instantáneas de rutas
--save-routesGuardar las rutas proporcionadas en el directorio de estado de rutas

Guardar instantáneas de rutas:

iac-code a2a-client route-preview \
--route "ros=http://127.0.0.1:41242/;skills=iac_generation;tags=ros" \
--route-state-dir ~/.iac-code/a2a \
--save-routes

Llamar mediante rutas:

iac-code a2a-client call \
--route "ros=http://127.0.0.1:41242/;skills=iac_generation;tags=ros" \
--route-name ros \
--prompt "Create a ROS VPC template." \
--cwd "$PWD"

Variables de entorno

VariableDescripción
IACCODE_A2A_HTTP_TOKENValor predeterminado del token Bearer de servidor/cliente
IACCODE_A2A_BASIC_USERNAMEValor predeterminado del nombre de usuario de Basic auth de servidor/cliente
IACCODE_A2A_BASIC_PASSWORDValor predeterminado de la contraseña de Basic auth de servidor/cliente
IACCODE_A2A_API_KEYValor predeterminado de clave de API de servidor/cliente
IACCODE_A2A_API_KEY_HEADERNombre predeterminado del encabezado de clave de API
IACCODE_A2A_ALLOWED_CWDSLista separada por rutas del sistema operativo de raíces de espacio de trabajo permitidas para metadatos de mensajes entrantes y URL de archivos
IACCODE_A2A_TEXT_MIME_TYPESTipos MIME extra similares a texto separados por comas o punto y coma
IACCODE_A2A_MULTIMODAL_MIME_TYPESTipos MIME multimodales extra separados por comas o punto y coma
IAC_CODE_A2A_PUSH_KEYRINGKeyring de secretos push cifrados gestionado por el entorno