@backendkit-labs/aval-tools 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,11 +8,19 @@ previo y bitácora encadenada.
8
8
 
9
9
  - **`pay`** — la vía amarrada: el agente pide un techo de gasto, AVAL decide y paga. Devuelve
10
10
  el resultado como texto: pagado (con el coste real y la referencia del carril), retenido
11
- (con el `authorizationId` para consultar después) o denegado (con el motivo).
11
+ (con el `authorizationId` para consultar después) o denegado (con el motivo) — y en los tres
12
+ casos, el presupuesto que le queda al agente (`remainingToday`/`remainingTotal`), que AVAL ya
13
+ manda en cada respuesta. Sin verlo, un agente que pide varios gastos en el mismo turno no
14
+ tiene forma de saber si le va a alcanzar antes de pedir el siguiente.
12
15
  - **`check_payment`** — consulta el estado de una autorización propia por `authorizationId`.
13
16
  Es la pieza que le faltaba al framework para la vía "retenido": nada bloquea una sesión
14
17
  esperando a un humano, así que un gasto retenido se resuelve volviendo a preguntar más
15
18
  tarde — en otra invocación, disparada por un trigger o por el propio usuario.
19
+ - **`list_own_history`** — el historial propio del agente en AVAL (`GET /api/v1/history`), en
20
+ texto legible. `pay`/`check_payment` sólo muestran UN gasto puntual; esto le da al agente
21
+ contexto de patrones (qué se pagó, a quién, con qué frecuencia) para priorizar cuando el
22
+ presupuesto no va a alcanzar para todo. De sólo lectura, y pensado para usarse cuando hace
23
+ falta, no en cada turno.
16
24
 
17
25
  Ninguna herramienta guarda dinero ni credenciales del proveedor: eso lo tiene AVAL.
18
26
 
@@ -36,7 +44,7 @@ for (const tool of createAvalTools({ baseUrl: 'https://aval.internal' })) {
36
44
  const profile = {
37
45
  id: 'expedientes-bot',
38
46
  // ...
39
- allowedTools: ['pay', 'check_payment' /* ... */],
47
+ allowedTools: ['pay', 'check_payment', 'list_own_history' /* ... */],
40
48
  // La clave vive en el perfil de ESTE agente, no en una variable de entorno
41
49
  // compartida por todos. Cárgala desde donde guardes secretos (vault,
42
50
  // gestor de secretos del proveedor de nube, etc.), nunca en texto plano
@@ -82,7 +90,7 @@ obtiene una clave distinta por sí sola.
82
90
 
83
91
  ## Qué pasa si AVAL no responde
84
92
 
85
- `pay` y `check_payment` reintentan automáticamente ante errores de red o 5xx (backoff
93
+ Las tres herramientas reintentan automáticamente ante errores de red o 5xx (backoff
86
94
  exponencial con `jitter`, tres intentos por defecto). Los 4xx —denegado, credencial revocada,
87
95
  límite superado— nunca se reintentan: son respuestas de negocio, no fallos de transporte, y
88
96
  se devuelven al agente como texto para que decida qué hacer.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=history.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/history.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const history_1 = require("../history");
4
+ function makeCtx(overrides = {}) {
5
+ return {
6
+ agentId: 'expedientes-bot',
7
+ sessionId: 'session-1',
8
+ memory: { get: () => undefined, set: () => undefined, getAll: () => ({}) },
9
+ askAgent: async () => '',
10
+ ...overrides,
11
+ };
12
+ }
13
+ function jsonResponse(status, body) {
14
+ return { status, ok: status >= 200 && status < 300, json: async () => body };
15
+ }
16
+ const config = { baseUrl: 'https://aval.test' };
17
+ const history = (0, history_1.createHistoryTool)(config);
18
+ beforeEach(() => {
19
+ global.fetch = jest.fn();
20
+ });
21
+ describe('list_own_history', () => {
22
+ it('requires a credential before calling out', async () => {
23
+ const result = await history.execute({}, makeCtx());
24
+ expect(result).toMatch(/no tiene credencial de AVAL/);
25
+ expect(fetch).not.toHaveBeenCalled();
26
+ });
27
+ it('requests the default limit when none is given', async () => {
28
+ fetch.mockResolvedValueOnce(jsonResponse(200, { entries: [] }));
29
+ await history.execute({}, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
30
+ const [url] = fetch.mock.calls[0];
31
+ expect(url).toBe('https://aval.test/api/v1/history?limit=20');
32
+ });
33
+ it('passes a custom limit through', async () => {
34
+ fetch.mockResolvedValueOnce(jsonResponse(200, { entries: [] }));
35
+ await history.execute({ limit: 5 }, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
36
+ const [url] = fetch.mock.calls[0];
37
+ expect(url).toBe('https://aval.test/api/v1/history?limit=5');
38
+ });
39
+ it('says so plainly when there is no history yet', async () => {
40
+ fetch.mockResolvedValueOnce(jsonResponse(200, { entries: [] }));
41
+ const result = await history.execute({}, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
42
+ expect(result).toMatch(/Sin historial todavía/);
43
+ });
44
+ it('formats entries with amount, vendor, purpose and the first reason', async () => {
45
+ fetch.mockResolvedValueOnce(jsonResponse(200, {
46
+ entries: [
47
+ {
48
+ seq: 4,
49
+ ts: '2026-08-07T00:00:00.000Z',
50
+ type: 'spend.authorized',
51
+ amount: 300000,
52
+ asset: 'USD',
53
+ vendor: 'ocr.docs',
54
+ purpose: 'Lectura del pedimento A-1190',
55
+ reasons: ['Dentro de los tres topes: operación, día y total.'],
56
+ },
57
+ ],
58
+ }));
59
+ const result = await history.execute({}, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
60
+ expect(result).toMatch(/#4/);
61
+ expect(result).toMatch(/\$0\.30/);
62
+ expect(result).toMatch(/ocr\.docs/);
63
+ expect(result).toMatch(/Lectura del pedimento A-1190/);
64
+ expect(result).toMatch(/Dentro de los tres topes/);
65
+ });
66
+ it('reports credential errors instead of a raw error', async () => {
67
+ fetch.mockResolvedValueOnce(jsonResponse(401, { error: 'Credencial revocada.' }));
68
+ const result = await history.execute({}, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
69
+ expect(result).toMatch(/Error de credencial/);
70
+ });
71
+ });
72
+ //# sourceMappingURL=history.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.test.js","sourceRoot":"","sources":["../../src/__tests__/history.test.ts"],"names":[],"mappings":"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"}
@@ -74,6 +74,32 @@ describe('pay', () => {
74
74
  expect(result).toMatch(/Denegado/);
75
75
  expect(result).toMatch(/tope por operación/);
76
76
  });
77
+ it('surfaces the remaining budget on every decision, not just authorized', async () => {
78
+ fetch
79
+ .mockResolvedValueOnce(jsonResponse(200, {
80
+ decision: 'denied',
81
+ reasons: ['$0,90 supera el tope por operación de $0,80.'],
82
+ budget: { remainingToday: 2_500_000, remainingTotal: 39_000_000 },
83
+ }))
84
+ .mockResolvedValueOnce(jsonResponse(200, {
85
+ decision: 'authorized',
86
+ authorizationId: 'auth_9',
87
+ rail: 'proxy',
88
+ reasons: [],
89
+ amount: 300000,
90
+ budget: { remainingToday: 1_000_000, remainingTotal: 20_000_000 },
91
+ }));
92
+ const ctx = makeCtx({ secrets: { AVAL_KEY: 'k' } });
93
+ const denied = await pay.execute({ counterparty: 'tarifas.aduana', ceilingUsd: 0.9, purpose: 'x' }, ctx);
94
+ expect(denied).toMatch(/Presupuesto restante: \$2\.50 hoy, \$39\.00 en total\./);
95
+ const authorized = await pay.execute({ counterparty: 'ocr.docs', ceilingUsd: 0.3, purpose: 'y' }, ctx);
96
+ expect(authorized).toMatch(/Presupuesto restante: \$1\.00 hoy, \$20\.00 en total\./);
97
+ });
98
+ it('omits the budget line when AVAL does not send one', async () => {
99
+ fetch.mockResolvedValueOnce(jsonResponse(200, { decision: 'denied', reasons: ['x'] }));
100
+ const result = await pay.execute({ counterparty: 'ocr.docs', ceilingUsd: 0.1, purpose: 'x' }, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
101
+ expect(result).not.toMatch(/Presupuesto/);
102
+ });
77
103
  it('surfaces rate limiting with the retry window', async () => {
78
104
  fetch.mockResolvedValueOnce(jsonResponse(429, { error: 'Demasiados intentos.', retryAfterSeconds: 57 }));
79
105
  const result = await pay.execute({ counterparty: 'ocr.docs', ceilingUsd: 0.1, purpose: 'x' }, makeCtx({ secrets: { AVAL_KEY: 'k' } }));
@@ -1 +1 @@
1
- {"version":3,"file":"pay.test.js","sourceRoot":"","sources":["../../src/__tests__/pay.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.test.js","sourceRoot":"","sources":["../../src/__tests__/pay.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type AvalToolsConfig } from './client';
2
+ /**
3
+ * Creates the `list_own_history` tool: the agent's own recent activity in
4
+ * AVAL (`GET /api/v1/history`). `pay` and `check_payment` only ever show
5
+ * what happened to ONE spend. Without this, an agent that has to decide
6
+ * between several due payments in the same turn — and whose budget won't
7
+ * cover all of them — has no way to see patterns (which counterparty gets
8
+ * paid regularly, which requests have been failing) to prioritize with.
9
+ *
10
+ * Deliberately read-only and separate from `pay`: an agent should reach for
11
+ * it only when it actually needs the context, not on every turn.
12
+ */
13
+ export declare function createHistoryTool(config: AvalToolsConfig): import("@backendkit-labs/agent-core").ToolDefinition;
14
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAsBtE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,wDAmCxD"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createHistoryTool = createHistoryTool;
4
+ const agent_core_1 = require("@backendkit-labs/agent-core");
5
+ const client_1 = require("./client");
6
+ const USD_PER_UNIT = 1_000_000;
7
+ const usdFormat = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 6 });
8
+ const formatUsd = (units) => `$${usdFormat.format(units / USD_PER_UNIT)}`;
9
+ /**
10
+ * Creates the `list_own_history` tool: the agent's own recent activity in
11
+ * AVAL (`GET /api/v1/history`). `pay` and `check_payment` only ever show
12
+ * what happened to ONE spend. Without this, an agent that has to decide
13
+ * between several due payments in the same turn — and whose budget won't
14
+ * cover all of them — has no way to see patterns (which counterparty gets
15
+ * paid regularly, which requests have been failing) to prioritize with.
16
+ *
17
+ * Deliberately read-only and separate from `pay`: an agent should reach for
18
+ * it only when it actually needs the context, not on every turn.
19
+ */
20
+ function createHistoryTool(config) {
21
+ return (0, agent_core_1.defineTool)({
22
+ name: 'list_own_history',
23
+ description: 'Consulta el historial propio de este agente en AVAL: los últimos gastos (autorizados, ' +
24
+ 'retenidos o denegados), con contraparte, monto y motivo. Útil cuando necesitás contexto ' +
25
+ 'para priorizar entre varios pagos posibles — no hace falta llamarlo si ya sabés qué hacer.',
26
+ input: agent_core_1.z.object({
27
+ limit: agent_core_1.z.number().int().positive().max(200).optional().describe('Cuántas entradas recientes traer. Por defecto 20.'),
28
+ }),
29
+ execute: async ({ limit }, ctx) => {
30
+ const token = (0, client_1.avalKey)(config, ctx.secrets);
31
+ if (!token) {
32
+ return `Error: este agente no tiene credencial de AVAL configurada ` +
33
+ `(falta ctx.secrets.${config.secretName ?? 'AVAL_KEY'} en su perfil).`;
34
+ }
35
+ const { status, body } = await (0, client_1.avalRequest)(config, token, 'GET', `/api/v1/history?limit=${limit ?? 20}`);
36
+ if (status === 401 || status === 403)
37
+ return `Error de credencial: ${body.error}`;
38
+ if (!body.entries)
39
+ return `Error: respuesta inesperada de AVAL (${status}): ${body.error ?? JSON.stringify(body)}`;
40
+ if (body.entries.length === 0)
41
+ return 'Sin historial todavía — este agente no tiene ninguna entrada en AVAL.';
42
+ const lines = body.entries.map((e) => {
43
+ const reason = e.reasons?.length ? ` — ${e.reasons[0]}` : '';
44
+ return `#${e.seq} ${e.ts} ${e.type} ${formatUsd(e.amount)} ${e.vendor ?? '—'} · ${e.purpose ?? '—'}${reason}`;
45
+ });
46
+ return `${body.entries.length} entrada(s), más reciente al final:\n${lines.join('\n')}`;
47
+ },
48
+ });
49
+ }
50
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":";;AAkCA,8CAmCC;AArED,4DAA4D;AAC5D,qCAAsE;AAEtE,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACzG,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC;AAkBlF;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,MAAuB;IACrD,OAAO,IAAA,uBAAU,EAAC;QACd,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACP,wFAAwF;YACxF,0FAA0F;YAC1F,4FAA4F;QAChG,KAAK,EAAE,cAAC,CAAC,MAAM,CAAC;YACZ,KAAK,EAAE,cAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SACvH,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAA,gBAAO,EAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,6DAA6D;oBAChE,sBAAsB,MAAM,CAAC,UAAU,IAAI,UAAU,iBAAiB,CAAC;YAC/E,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,oBAAW,EACtC,MAAM,EACN,KAAK,EACL,KAAK,EACL,yBAAyB,KAAK,IAAI,EAAE,EAAE,CACzC,CAAC;YAEF,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,wBAAwB,IAAI,CAAC,KAAK,EAAE,CAAC;YAClF,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,wCAAwC,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACnH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,uEAAuE,CAAC;YAE9G,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;YAClH,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,wCAAwC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,14 @@ export type { AvalToolsConfig } from './client';
2
2
  export { avalKey, avalRequest } from './client';
3
3
  export { createPayTool } from './pay';
4
4
  export { createCheckPaymentTool } from './check-payment';
5
+ export { createHistoryTool } from './history';
5
6
  import type { AvalToolsConfig } from './client';
6
7
  /**
7
- * The two AVAL tools together, ready to spread into an agent's tool list.
8
+ * The three AVAL tools together, ready to spread into an agent's tool list.
8
9
  *
9
10
  * Wiring an agent up to AVAL is then: give the agent's profile a `secrets`
10
- * entry with its AVAL key, add "pay" and "check_payment" to its
11
- * `allowedTools`, and register these with the engine's ToolRegistry.
11
+ * entry with its AVAL key, add "pay", "check_payment" and "list_own_history"
12
+ * to its `allowedTools`, and register these with the engine's ToolRegistry.
12
13
  *
13
14
  * @example
14
15
  * ```ts
@@ -19,10 +20,10 @@ import type { AvalToolsConfig } from './client';
19
20
  *
20
21
  * const profile: AgentProfile = {
21
22
  * // ...
22
- * allowedTools: ['pay', 'check_payment', ...],
23
+ * allowedTools: ['pay', 'check_payment', 'list_own_history', ...],
23
24
  * secrets: { AVAL_KEY: process.env.EXPEDIENTES_BOT_AVAL_KEY! },
24
25
  * };
25
26
  * ```
26
27
  */
27
- export declare function createAvalTools(config: AvalToolsConfig): readonly [import("@backendkit-labs/agent-core").ToolDefinition, import("@backendkit-labs/agent-core").ToolDefinition];
28
+ export declare function createAvalTools(config: AvalToolsConfig): readonly [import("@backendkit-labs/agent-core").ToolDefinition, import("@backendkit-labs/agent-core").ToolDefinition, import("@backendkit-labs/agent-core").ToolDefinition];
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,yHAEtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,+KAEtD"}
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCheckPaymentTool = exports.createPayTool = exports.avalRequest = exports.avalKey = void 0;
3
+ exports.createHistoryTool = exports.createCheckPaymentTool = exports.createPayTool = exports.avalRequest = exports.avalKey = void 0;
4
4
  exports.createAvalTools = createAvalTools;
5
5
  const pay_1 = require("./pay");
6
6
  const check_payment_1 = require("./check-payment");
7
+ const history_1 = require("./history");
7
8
  var client_1 = require("./client");
8
9
  Object.defineProperty(exports, "avalKey", { enumerable: true, get: function () { return client_1.avalKey; } });
9
10
  Object.defineProperty(exports, "avalRequest", { enumerable: true, get: function () { return client_1.avalRequest; } });
@@ -11,12 +12,14 @@ var pay_2 = require("./pay");
11
12
  Object.defineProperty(exports, "createPayTool", { enumerable: true, get: function () { return pay_2.createPayTool; } });
12
13
  var check_payment_2 = require("./check-payment");
13
14
  Object.defineProperty(exports, "createCheckPaymentTool", { enumerable: true, get: function () { return check_payment_2.createCheckPaymentTool; } });
15
+ var history_2 = require("./history");
16
+ Object.defineProperty(exports, "createHistoryTool", { enumerable: true, get: function () { return history_2.createHistoryTool; } });
14
17
  /**
15
- * The two AVAL tools together, ready to spread into an agent's tool list.
18
+ * The three AVAL tools together, ready to spread into an agent's tool list.
16
19
  *
17
20
  * Wiring an agent up to AVAL is then: give the agent's profile a `secrets`
18
- * entry with its AVAL key, add "pay" and "check_payment" to its
19
- * `allowedTools`, and register these with the engine's ToolRegistry.
21
+ * entry with its AVAL key, add "pay", "check_payment" and "list_own_history"
22
+ * to its `allowedTools`, and register these with the engine's ToolRegistry.
20
23
  *
21
24
  * @example
22
25
  * ```ts
@@ -27,12 +30,12 @@ Object.defineProperty(exports, "createCheckPaymentTool", { enumerable: true, get
27
30
  *
28
31
  * const profile: AgentProfile = {
29
32
  * // ...
30
- * allowedTools: ['pay', 'check_payment', ...],
33
+ * allowedTools: ['pay', 'check_payment', 'list_own_history', ...],
31
34
  * secrets: { AVAL_KEY: process.env.EXPEDIENTES_BOT_AVAL_KEY! },
32
35
  * };
33
36
  * ```
34
37
  */
35
38
  function createAvalTools(config) {
36
- return [(0, pay_1.createPayTool)(config), (0, check_payment_1.createCheckPaymentTool)(config)];
39
+ return [(0, pay_1.createPayTool)(config), (0, check_payment_1.createCheckPaymentTool)(config), (0, history_1.createHistoryTool)(config)];
37
40
  }
38
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA+BA,0CAEC;AAjCD,+BAAsC;AACtC,mDAAyD;AAGzD,mCAAgD;AAAvC,iGAAA,OAAO,OAAA;AAAE,qGAAA,WAAW,OAAA;AAC7B,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,iDAAyD;AAAhD,uHAAA,sBAAsB,OAAA;AAI/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,eAAe,CAAC,MAAuB;IACnD,OAAO,CAAC,IAAA,mBAAa,EAAC,MAAM,CAAC,EAAE,IAAA,sCAAsB,EAAC,MAAM,CAAC,CAAU,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAiCA,0CAEC;AAnCD,+BAAsC;AACtC,mDAAyD;AACzD,uCAA8C;AAG9C,mCAAgD;AAAvC,iGAAA,OAAO,OAAA;AAAE,qGAAA,WAAW,OAAA;AAC7B,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,iDAAyD;AAAhD,uHAAA,sBAAsB,OAAA;AAC/B,qCAA8C;AAArC,4GAAA,iBAAiB,OAAA;AAI1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,eAAe,CAAC,MAAuB;IACnD,OAAO,CAAC,IAAA,mBAAa,EAAC,MAAM,CAAC,EAAE,IAAA,sCAAsB,EAAC,MAAM,CAAC,EAAE,IAAA,2BAAiB,EAAC,MAAM,CAAC,CAAU,CAAC;AACvG,CAAC"}
package/dist/pay.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAuDtE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,wDAuEpD"}
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAyEtE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,wDAyEpD"}
package/dist/pay.js CHANGED
@@ -20,6 +20,18 @@ const usdFormat = new Intl.NumberFormat('en-US', { minimumFractionDigits: 2, max
20
20
  function formatUsd(units) {
21
21
  return `$${usdFormat.format(units / USD_PER_UNIT)}`;
22
22
  }
23
+ /**
24
+ * AVAL returns a budget snapshot on every `/spend` response, authorized or
25
+ * not — without surfacing it, an agent placing several calls in the same
26
+ * turn (or the same run) has no way to know how much room it has left
27
+ * before the *next* call, so it can't prioritize when the day's spend won't
28
+ * cover everything it's about to ask for.
29
+ */
30
+ function formatBudget(budget) {
31
+ if (!budget)
32
+ return '';
33
+ return `\nPresupuesto restante: ${formatUsd(budget.remainingToday)} hoy, ${formatUsd(budget.remainingTotal)} en total.`;
34
+ }
23
35
  /**
24
36
  * Creates the `pay` tool: the amarrada path into AVAL. The agent asks for a
25
37
  * ceiling; AVAL decides and, if authorized, pays through its own rail — the
@@ -31,7 +43,8 @@ function createPayTool(config) {
31
43
  description: 'Solicita un gasto a AVAL para pagar a una contraparte registrada. AVAL decide si se ' +
32
44
  'autoriza, se retiene para aprobación humana, o se deniega, y si autoriza, paga él mismo ' +
33
45
  'por el carril que corresponda. Nunca gastes por tu cuenta: si la respuesta no es ' +
34
- '"authorized", no hay pago que hacer.',
46
+ '"authorized", no hay pago que hacer. La respuesta incluye el presupuesto restante — ' +
47
+ 'útil para priorizar si vas a pedir varios gastos en el mismo turno y no van a entrar todos.',
35
48
  input: agent_core_1.z.object({
36
49
  counterparty: agent_core_1.z.string().describe('Identificador de la contraparte registrada en AVAL, p. ej. "ocr.docs".'),
37
50
  ceilingUsd: agent_core_1.z.number().positive().describe('Techo del gasto en dólares, p. ej. 0.42 para 42 centavos. El coste real puede ser menor.'),
@@ -67,13 +80,14 @@ function createPayTool(config) {
67
80
  }
68
81
  const warning = body.credential?.warning ? `\nAviso de credencial: ${body.credential.warning}` : '';
69
82
  const reasons = body.reasons?.length ? `\nMotivo: ${body.reasons.join(' ')}` : '';
83
+ const budget = formatBudget(body.budget);
70
84
  if (body.decision === 'denied') {
71
- return `Denegado.${reasons}${warning}`;
85
+ return `Denegado.${reasons}${warning}${budget}`;
72
86
  }
73
87
  if (body.decision === 'held') {
74
88
  return (`Retenido para aprobación humana. authorizationId="${body.authorizationId}".` +
75
89
  `${reasons}\nUsa check_payment con este authorizationId más tarde para saber si ya se resolvió — ` +
76
- `no se ha gastado nada todavía.${warning}`);
90
+ `no se ha gastado nada todavía.${warning}${budget}`);
77
91
  }
78
92
  // authorized
79
93
  const cap = body.capability;
@@ -81,7 +95,7 @@ function createPayTool(config) {
81
95
  const nativo = cap ? `${cap.payment.nativeAmount} ${cap.payment.asset}` : '';
82
96
  return (`Pagado. authorizationId="${body.authorizationId}", carril=${body.rail ?? cap?.rail}, ` +
83
97
  `coste real=${actual}${nativo ? ` (${nativo})` : ''}, ref=${cap?.payment.ref ?? '—'}.` +
84
- `${reasons}${warning}`);
98
+ `${reasons}${warning}${budget}`);
85
99
  },
86
100
  });
87
101
  }
package/dist/pay.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backendkit-labs/aval-tools",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Payment tools for @backendkit-labs/agent-core agents to spend through an AVAL instance",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "prepublishOnly": "npm run build"
21
21
  },
22
22
  "dependencies": {
23
- "@backendkit-labs/agent-core": "*"
23
+ "@backendkit-labs/agent-core": "^0.24.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/jest": "^29.0.0",