@backendkit-labs/aval-tools

中文文档
0.1.14发布于 2026/10/27TypeScriptCommonJS近 30 天下载 1939

Payment tools for @backendkit-labs/agent-core agents to spend through an AVAL instance

原始使用文档
文档目录7 节
  1. Qué trae
  2. Instalación
  3. Uso
  4. Configuración
  5. El flujo de un gasto retenido
  6. Por qué reintentar no duplica el gasto
  7. Qué pasa si AVAL no responde

@backendkit-labs/aval-tools

Herramientas de pago para agentes de @backendkit-labs/agent-core que gastan a través de una instancia de AVAL — credencial por agente, presupuesto previo y bitácora encadenada.

Qué trae

  • pay — la vía amarrada: el agente pide un techo de gasto, AVAL decide y paga. Devuelve el resultado como texto: pagado (con el coste real y la referencia del carril), retenido (con el authorizationId para consultar después) o denegado (con el motivo) — y en los tres casos, el presupuesto que le queda al agente (remainingToday/remainingTotal), que AVAL ya manda en cada respuesta. Sin verlo, un agente que pide varios gastos en el mismo turno no tiene forma de saber si le va a alcanzar antes de pedir el siguiente.
  • check_payment — consulta el estado de una autorización propia por authorizationId. Es la pieza que le faltaba al framework para la vía "retenido": nada bloquea una sesión esperando a un humano, así que un gasto retenido se resuelve volviendo a preguntar más tarde — en otra invocación, disparada por un trigger o por el propio usuario.
  • list_own_history — el historial propio del agente en AVAL (GET /api/v1/history), en texto legible. pay/check_payment sólo muestran UN gasto puntual; esto le da al agente contexto de patrones (qué se pagó, a quién, con qué frecuencia) para priorizar cuando el presupuesto no va a alcanzar para todo. De sólo lectura, y pensado para usarse cuando hace falta, no en cada turno.

Ninguna herramienta guarda dinero ni credenciales del proveedor: eso lo tiene AVAL.

Instalación

npm install @backendkit-labs/aval-tools

Uso

import { AgentEngine, ToolRegistry } from '@backendkit-labs/agent-core';
import { createAvalTools } from '@backendkit-labs/aval-tools';

const tools = new ToolRegistry();
for (const tool of createAvalTools({ baseUrl: 'https://aval.internal' })) {
    tools.register(tool);
}

const profile = {
    id: 'expedientes-bot',
    // ...
    allowedTools: ['pay', 'check_payment', 'list_own_history' /* ... */],
    // La clave vive en el perfil de ESTE agente, no en una variable de entorno
    // compartida por todos. Cárgala desde donde guardes secretos (vault,
    // gestor de secretos del proveedor de nube, etc.), nunca en texto plano
    // en un fichero que se vaya a commitear.
    secrets: { AVAL_KEY: process.env.EXPEDIENTES_BOT_AVAL_KEY! },
};

Configuración

interface AvalToolsConfig {
    baseUrl: string;       // dónde está AVAL
    secretName?: string;   // nombre de la credencial en ctx.secrets — por defecto "AVAL_KEY"
    timeoutMs?: number;    // por defecto 15000
    maxAttempts?: number;  // por defecto 3
}

El flujo de un gasto retenido

1. El agente llama a pay("tarifas.aduana", 0.70, "Actualización trimestral").
   → "Retenido para aprobación humana. authorizationId=auth_xyz. [...]"
   El turno del agente termina ahí. No hace falta que la sesión siga viva.

2. Horas después, alguien aprueba el gasto desde la consola de AVAL —
   aprobar es pagar: AVAL usa su propia credencial, el agente no interviene.

3. Una invocación nueva del agente (un cron, un webhook, o simplemente el
   usuario preguntando "¿ya se aprobó eso?") llama a
   check_payment("auth_xyz").
   → "auth_xyz → liquidado — el pago se completó. [...]"

Por qué reintentar no duplica el gasto

pay deriva una clave de idempotencia a partir de la sesión y los argumentos exactos de la llamada (sha256(sessionId:counterparty:ceiling:purpose)). Un reintento del propio agente tras un timeout de red produce la misma clave y AVAL lo trata como una repetición, no como un segundo gasto. Una llamada genuinamente distinta —otro importe, otro propósito, otra sesión— obtiene una clave distinta por sí sola.

Qué pasa si AVAL no responde

Las tres herramientas reintentan automáticamente ante errores de red o 5xx (backoff exponencial con jitter, tres intentos por defecto). Los 4xx —denegado, credencial revocada, límite superado— nunca se reintentan: son respuestas de negocio, no fallos de transporte, y se devuelven al agente como texto para que decida qué hacer.

版本与发布记录

@backendkit-labs/aval-tools 共发布 15 个版本,首次发布于 2026/08/08;过去 12 个月发布了 15 个版本。

版本发布日期距今
0.1.14latest2026/10/2712 天前
0.1.132026/10/2712 天前
0.1.122026/10/2612 天前
0.1.112026/10/2613 天前
0.1.102026/10/2414 天前
0.1.92026/10/2415 天前

关于 @backendkit-labs/aval-tools 的常见问题

@backendkit-labs/aval-tools 是什么?

Payment tools for @backendkit-labs/agent-core agents to spend through an AVAL instance

如何安装 @backendkit-labs/aval-tools?

在项目目录运行 npm install @backendkit-labs/aval-tools,或使用 pnpm add / yarn add / bun add。

@backendkit-labs/aval-tools 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@backendkit-labs/aval-tools 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@backendkit-labs/aval-tools 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@backendkit-labs/aval-tools 可以商用吗?

@backendkit-labs/aval-tools 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@backendkit-labs/aval-tools 的下载量有多少?

根据 npm 官方下载统计,@backendkit-labs/aval-tools 在 2026/10/08 – 2026/11/06 这 30 天内被下载 1,939 次,日均约 65 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@backendkit-labs/aval-tools 还在维护吗?

最新版本 0.1.14 发布于 2026/10/27(12 天前);至今共发布 15 个版本,其中过去 12 个月发布了 15 个;首次发布于 2026/08/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。