Skip to content

v0.12.0

Choose a tag to compare

@ami-facturadirecta ami-facturadirecta released this 26 Sep 12:45
· 1 commit to main since this release

Añadido

  • facturadirecta login --device: inicio de sesión por dispositivo (OAuth 2.0
    Device Authorization Grant, RFC 8628) para máquinas sin navegador (SSH,
    contenedores, agentes): el CLI muestra una URL y un código para autorizar
    desde cualquier dispositivo. Requiere el grant activado en el cliente
    facturadirecta-api de Keycloak.
  • login --no-browser (solo imprime la URL) y login --port (fija el puerto
    del callback). Variable FACTURADIRECTA_KEYCLOAK_URL para apuntar el login
    a otro Keycloak (desarrollo).
  • statements unreconcile --delete-transaction: el parámetro del contrato
    que faltaba (borrar también el asiento al desconciliar).
  • facturadirecta search <texto> y facturadirecta fetch <id>: la búsqueda
    combinada y el detalle legible que ofrecen las tools search/fetch del
    MCP, con los mismos ids (tipo:empresa:id) y URLs. search combina
    contactos, productos, facturas y presupuestos por número y los últimos
    documentos de los contactos encontrados; --type acota los tipos. Sin
    empresa fijada y con varias empresas busca en hasta 5.
  • Errores clasificados. En modo agente (-j, -q, --agent, --jq) los
    errores van a stderr como una línea JSON con code (los del MCP:
    not_found, insufficient_scope, invalid_input, company_required,
    upstream_error; y los del CLI: usage, auth_required, readonly,
    network_error), message, status, detail, hint y data; el
    proceso sale con un código por clase (2 uso/entrada, 3 sesión/permisos,
    4 no encontrado, 5 empresa, 6 API/red). El texto para humanos no cambia.
  • facturadirecta accounting summary y accounting accounts: agregados del
    diario contable con la misma forma que summarize_accounting y
    list_accounts del MCP. summary devuelve debe, haber y saldo por cuenta,
    mes o cuenta+mes, más ingresos (grupo 7), gastos (grupo 6) y resultado;
    accounts lista las cuentas con movimientos y su saldo (la API no expone
    el plan de cuentas). Paginan el diario hasta 10.000 apuntes y avisan si el
    periodo tiene más.
  • facturadirecta whoami: perfil, usuario, modo de acceso, la empresa que
    usarán los comandos (y de dónde sale) y las empresas disponibles en una sola
    llamada; con --json devuelve un objeto compacto pensado para agentes.
  • --summary en list y get de facturas, presupuestos, gastos, contactos y
    productos: resumen compacto por elemento (id, número, fecha, contacto,
    totales, estado, saldo pendiente y url) en las salidas JSON. En facturas y
    gastos pide related=state,balance automáticamente; pendingAmount es
    positivo cuando queda importe por cobrar o pagar.
  • --url en get: imprime solo la URL del elemento en la web de FacturaDirecta.
  • Variable de entorno FACTURADIRECTA_COMPANY: fija la empresa para una
    sesión de shell sin tocar el perfil.
  • journal --id: apuntes originados por un documento concreto (asiento,
    factura, gasto, nómina o remesa). No confundir con --document, que filtra
    por el documento al que se imputan.
  • statements list --matched-document: extractos conciliados con un asiento.
  • settings series admite clientOrder y purchaseOrder.

Cambiado

  • El callback OAuth del login escucha en un puerto loopback libre elegido por
    el sistema (127.0.0.1:<puerto>, RFC 8252) en vez del 31337 fijo: dos
    logins a la vez o un puerto ocupado ya no hacen fallar el inicio de sesión.
  • Los scopes que pide el login salen del contrato de la API (SDK) en vez de
    una lista escrita a mano: incluye ahora clientOrders, customFields y
    purchaseOrders.
  • Las flags de query de todos los listados y consultas se generan desde el
    contrato de la API (internal/commands/flags.gen.go, emitido por el
    generador del monorepo desde la IR) en vez de escribirse a mano: nombre
    kebab-case, tipo y ayuda (primera frase de la documentación de la API más
    los valores admitidos). Los nombres de las flags no cambian; sí cambian
    los textos de --help. La paridad con el contrato la comprueba un test
    (internal/cli/flags_test.go) que sustituye a scripts/check-flags.py.
  • Los errores se imprimen una sola vez: sin el "Error:" duplicado de cobra ni
    el volcado del usage completo tras cada fallo (en errores de uso se
    sugiere --help).
  • Resolución de empresa determinista: --company > FACTURADIRECTA_COMPANY >
    empresa fijada en el perfil > la única empresa del usuario (se guarda en el
    perfil). Con varias empresas y ninguna fijada, el error lista las
    disponibles en vez de exigir auth use-company.
  • El skill para agentes pasa a llamarse facturadirecta-cli y se instala en
    <skills>/facturadirecta-cli, para no pisar el skill facturadirecta del
    MCP remoto (ni ser pisado por él). setup retira la copia antigua del CLI
    si la encuentra. El skill recomienda empezar con whoami --json y usar
    --summary en los listados, y corrige journal list (el comando es
    journal).