@nubiia/mcp-freematica 0.6.4 → 0.8.0

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.
Files changed (60) hide show
  1. package/README.md +44 -12
  2. package/dist/clients/freematica-client.d.ts +264 -1
  3. package/dist/clients/freematica-client.js +387 -1
  4. package/dist/clients/freematica-client.js.map +1 -1
  5. package/dist/config.d.ts +22 -1
  6. package/dist/config.js +29 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/schemas/clientes.d.ts +164 -0
  9. package/dist/schemas/clientes.js +205 -0
  10. package/dist/schemas/clientes.js.map +1 -0
  11. package/dist/schemas/contratos.d.ts +268 -5
  12. package/dist/schemas/contratos.js +402 -1
  13. package/dist/schemas/contratos.js.map +1 -1
  14. package/dist/schemas/localizaciones.d.ts +90 -0
  15. package/dist/schemas/localizaciones.js +145 -0
  16. package/dist/schemas/localizaciones.js.map +1 -0
  17. package/dist/server-instructions.js +68 -1
  18. package/dist/server-instructions.js.map +1 -1
  19. package/dist/server.d.ts +6 -0
  20. package/dist/server.js +5 -5
  21. package/dist/server.js.map +1 -1
  22. package/dist/tools/clientes.d.ts +2 -1
  23. package/dist/tools/clientes.js +63 -2
  24. package/dist/tools/clientes.js.map +1 -1
  25. package/dist/tools/contactos-clientes.d.ts +2 -1
  26. package/dist/tools/contactos-clientes.js +58 -4
  27. package/dist/tools/contactos-clientes.js.map +1 -1
  28. package/dist/tools/contratos/cabecera.d.ts +6 -0
  29. package/dist/tools/contratos/cabecera.js +128 -0
  30. package/dist/tools/contratos/cabecera.js.map +1 -0
  31. package/dist/tools/contratos/index.d.ts +21 -0
  32. package/dist/tools/contratos/index.js +31 -0
  33. package/dist/tools/contratos/index.js.map +1 -0
  34. package/dist/tools/contratos/materiales.d.ts +4 -0
  35. package/dist/tools/{contratos.js → contratos/materiales.js} +5 -11
  36. package/dist/tools/contratos/materiales.js.map +1 -0
  37. package/dist/tools/contratos/opcionales.d.ts +5 -0
  38. package/dist/tools/contratos/opcionales.js +106 -0
  39. package/dist/tools/contratos/opcionales.js.map +1 -0
  40. package/dist/tools/contratos/servicios.d.ts +5 -0
  41. package/dist/tools/contratos/servicios.js +215 -0
  42. package/dist/tools/contratos/servicios.js.map +1 -0
  43. package/dist/tools/helpers.d.ts +4 -0
  44. package/dist/tools/helpers.js.map +1 -1
  45. package/dist/tools/localizaciones.d.ts +2 -1
  46. package/dist/tools/localizaciones.js +149 -2
  47. package/dist/tools/localizaciones.js.map +1 -1
  48. package/dist/transports/http.d.ts +2 -0
  49. package/dist/transports/http.js +3 -1
  50. package/dist/transports/http.js.map +1 -1
  51. package/dist/transports/stdio.d.ts +2 -0
  52. package/dist/transports/stdio.js +3 -1
  53. package/dist/transports/stdio.js.map +1 -1
  54. package/dist/types/contratos.d.ts +29 -0
  55. package/dist/utils/idreg.d.ts +37 -0
  56. package/dist/utils/idreg.js +52 -0
  57. package/dist/utils/idreg.js.map +1 -0
  58. package/package.json +1 -1
  59. package/dist/tools/contratos.d.ts +0 -10
  60. package/dist/tools/contratos.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA4B,MAAM,2BAA2B,CAAC;AAYtF,MAAM,UAAU,EAAE,CAAC,IAAa;IAC9B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAKtB;IACC,OAAO,EAAE,CAAC;QACR,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,IAAI,CAAC,YAAY;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,SAAsC,EAAE,OAAgB;IAC5E,IAAI,IAAyB,CAAC;IAC9B,IAAI,GAAW,CAAC;IAEhB,IAAI,SAAS,YAAY,eAAe,EAAE,CAAC;QACzC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtB,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;QACtC,IAAI,GAAG,kBAAkB,CAAC;QAC1B,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,SAAS,CAAC;QACjB,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA4B,MAAM,2BAA2B,CAAC;AAiBtF,MAAM,UAAU,EAAE,CAAC,IAAa;IAC9B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAKtB;IACC,OAAO,EAAE,CAAC;QACR,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACxB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,cAAc,EAAE,IAAI,CAAC,YAAY;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,SAAsC,EAAE,OAAgB;IAC5E,IAAI,IAAyB,CAAC;IAC9B,IAAI,GAAW,CAAC;IAEhB,IAAI,SAAS,YAAY,eAAe,EAAE,CAAC;QACzC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtB,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,IAAI,SAAS,YAAY,KAAK,EAAE,CAAC;QACtC,IAAI,GAAG,kBAAkB,CAAC;QAC1B,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,SAAS,CAAC;QACjB,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { FreematicaClient } from '../clients/freematica-client.js';
3
+ import { type RegisterOptions } from './helpers.js';
3
4
  /**
4
5
  * Registra las tres tools de localizaciones en el servidor MCP.
5
6
  *
@@ -14,4 +15,4 @@ import type { FreematicaClient } from '../clients/freematica-client.js';
14
15
  * @param server - Instancia del servidor MCP.
15
16
  * @param client - Cliente Freemática autenticado.
16
17
  */
17
- export declare function registerLocalizacionesTools(server: McpServer, client: FreematicaClient): void;
18
+ export declare function registerLocalizacionesTools(server: McpServer, client: FreematicaClient, opts?: RegisterOptions): void;
@@ -1,10 +1,16 @@
1
1
  import { z } from 'zod';
2
2
  import { FreematicaError } from '../clients/base-client.js';
3
3
  import { PaginationSchema } from '../schemas/pagination.js';
4
- import { error, okList } from './helpers.js';
4
+ import { CreateLocalizacionClienteShape, UpdateLocalizacionClienteShape, LOC_FIELD_MAP, buildLocalizacionClienteBody, } from '../schemas/localizaciones.js';
5
+ import { mergeForUpdate } from '../schemas/clientes.js';
6
+ import { error, ok, okList } from './helpers.js';
5
7
  const LIST_COBRO_CLIENTES_TOOL = 'freematica_list_localizaciones_cobro_clientes';
6
8
  const LIST_PAGO_PROVEEDORES_TOOL = 'freematica_list_localizaciones_pago_proveedores';
7
9
  const LIST_SERVICIO_CLIENTES_TOOL = 'freematica_list_localizaciones_servicio_clientes';
10
+ const LIST_ENVIO_CLIENTES_TOOL = 'freematica_list_localizaciones_envio_clientes';
11
+ const LIST_FACTURA_CLIENTES_TOOL = 'freematica_list_localizaciones_factura_clientes';
12
+ const CREATE_LOC_TOOL = 'freematica_create_localizacion_cliente';
13
+ const UPDATE_LOC_TOOL = 'freematica_update_localizacion_cliente';
8
14
  const COBRO_CLIENTES_DESCRIPTION = [
9
15
  'Devuelve la lista paginada de localizaciones de cobro de clientes.',
10
16
  '',
@@ -35,6 +41,46 @@ const SERVICIO_CLIENTES_DESCRIPTION = [
35
41
  'El filtro `activo` es un booleano: true = sin fecha de baja (localizaciones activas);',
36
42
  'false = con fecha de baja (dadas de baja).',
37
43
  ].join('\n');
44
+ const ENVIO_CLIENTES_DESCRIPTION = [
45
+ 'Devuelve la lista paginada de localizaciones de envío de clientes.',
46
+ '',
47
+ 'Direcciones de entrega/envío asociadas a un cliente. Cada item incluye',
48
+ 'LOC_CLI_ENV (código), NOM_LOC_ENV, dirección, más `idReg` opaco que se usa',
49
+ 'en freematica_update_localizacion_cliente (tipo=envio).',
50
+ '',
51
+ 'Paginación 1-indexed.',
52
+ ].join('\n');
53
+ const FACTURA_CLIENTES_DESCRIPTION = [
54
+ 'Devuelve la lista paginada de localizaciones de factura de clientes.',
55
+ '',
56
+ 'Direcciones fiscales/de facturación asociadas a un cliente (incluye datos',
57
+ 'de factura electrónica: oficina contable, órgano gestor, EDI). Cada item',
58
+ 'incluye LOC_CLI_FAC (código), NOM_LOC_FAC, más `idReg` opaco que se usa en',
59
+ 'freematica_update_localizacion_cliente (tipo=factura).',
60
+ '',
61
+ 'Paginación 1-indexed.',
62
+ ].join('\n');
63
+ const CREATE_LOC_DESCRIPTION = [
64
+ 'Da de alta una localización de cliente del tipo indicado:',
65
+ ' - cobro: condiciones de cobro/domiciliación (requiere formaPago)',
66
+ ' - envio: dirección de entrega',
67
+ ' - factura: dirección fiscal/de facturación',
68
+ ' - servicio: instalación donde se presta el servicio',
69
+ '',
70
+ 'Endpoint: POST /pgrl/v2/localizaciones-{tipo}-clientes.',
71
+ 'Requeridos: tipo, grupoCliente, codCliente, codLocalizacion; nombre es',
72
+ 'obligatorio salvo en tipo envio; formaPago solo se exige en tipo cobro.',
73
+ 'Campos específicos del tipo vía camposAdicionales (ej: cobro → CMCC_IBAN;',
74
+ 'servicio → COD_ZONA, CMCS_COD_DLG).',
75
+ ].join('\n');
76
+ const UPDATE_LOC_DESCRIPTION = [
77
+ 'Actualiza una localización de cliente existente (actualización parcial).',
78
+ '',
79
+ 'Endpoint: PUT /pgrl/v2/localizaciones-{tipo}-clientes/{idReg}. La tool',
80
+ 'recupera la localización actual, aplica encima los campos informados y',
81
+ 'envía el objeto completo. El `idReg` sale de la list tool del tipo',
82
+ '(freematica_list_localizaciones_{cobro|envio|factura|servicio}_clientes).',
83
+ ].join('\n');
38
84
  // ---------------------------------------------------------------------------
39
85
  // Schemas individuales
40
86
  // ---------------------------------------------------------------------------
@@ -124,7 +170,7 @@ const ServicioClientesSchema = {
124
170
  * @param server - Instancia del servidor MCP.
125
171
  * @param client - Cliente Freemática autenticado.
126
172
  */
127
- export function registerLocalizacionesTools(server, client) {
173
+ export function registerLocalizacionesTools(server, client, opts = { enableWrites: false }) {
128
174
  // --------------------------------------------------------------------------
129
175
  // Tool 1: Localizaciones cobro clientes
130
176
  // --------------------------------------------------------------------------
@@ -188,5 +234,106 @@ export function registerLocalizacionesTools(server, client) {
188
234
  return error(err instanceof Error ? err : new Error(String(err)));
189
235
  }
190
236
  });
237
+ // --------------------------------------------------------------------------
238
+ // Tools 4 y 5: Localizaciones envío y factura (lectura)
239
+ // --------------------------------------------------------------------------
240
+ const envioFacturaSchema = {
241
+ ...PaginationSchema,
242
+ codCliente: z
243
+ .string()
244
+ .min(1)
245
+ .optional()
246
+ .describe('Código natural del cliente (COD_CLI en Freemática).'),
247
+ grupoCliente: z
248
+ .string()
249
+ .min(1)
250
+ .optional()
251
+ .describe('Código de grupo de clientes (COD_GRUPO_CLI en Freemática).'),
252
+ };
253
+ server.tool(LIST_ENVIO_CLIENTES_TOOL, ENVIO_CLIENTES_DESCRIPTION, envioFacturaSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items, codCliente, grupoCliente }) => {
254
+ try {
255
+ const result = await client.listLocalizacionesEnvioClientes({
256
+ page,
257
+ items,
258
+ codCliente,
259
+ grupoCliente,
260
+ });
261
+ return okList({
262
+ items: result.items,
263
+ total: result.total,
264
+ page,
265
+ itemsPerPage: items,
266
+ });
267
+ }
268
+ catch (err) {
269
+ if (err instanceof FreematicaError)
270
+ return error(err);
271
+ return error(err instanceof Error ? err : new Error(String(err)));
272
+ }
273
+ });
274
+ server.tool(LIST_FACTURA_CLIENTES_TOOL, FACTURA_CLIENTES_DESCRIPTION, envioFacturaSchema, { readOnlyHint: true, destructiveHint: false, openWorldHint: true }, async ({ page, items, codCliente, grupoCliente }) => {
275
+ try {
276
+ const result = await client.listLocalizacionesFacturaClientes({
277
+ page,
278
+ items,
279
+ codCliente,
280
+ grupoCliente,
281
+ });
282
+ return okList({
283
+ items: result.items,
284
+ total: result.total,
285
+ page,
286
+ itemsPerPage: items,
287
+ });
288
+ }
289
+ catch (err) {
290
+ if (err instanceof FreematicaError)
291
+ return error(err);
292
+ return error(err instanceof Error ? err : new Error(String(err)));
293
+ }
294
+ });
295
+ if (!opts.enableWrites)
296
+ return;
297
+ // --------------------------------------------------------------------------
298
+ // Tools de escritura: alta y actualización de localizaciones de cliente
299
+ // --------------------------------------------------------------------------
300
+ server.tool(CREATE_LOC_TOOL, CREATE_LOC_DESCRIPTION, CreateLocalizacionClienteShape, { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, async ({ tipo, ...fields }) => {
301
+ try {
302
+ const locTipo = tipo;
303
+ const args = fields;
304
+ if (LOC_FIELD_MAP[locTipo].nombreRequerido && args.nombre === undefined) {
305
+ return error(new Error(`El campo nombre es obligatorio para localizaciones de tipo ${locTipo}.`));
306
+ }
307
+ if (locTipo === 'cobro' && args.formaPago === undefined) {
308
+ return error(new Error('El campo formaPago es obligatorio para localizaciones de tipo cobro.'));
309
+ }
310
+ const body = buildLocalizacionClienteBody(locTipo, args);
311
+ const created = await client.createLocalizacionCliente(locTipo, body);
312
+ return ok(created);
313
+ }
314
+ catch (err) {
315
+ if (err instanceof FreematicaError)
316
+ return error(err);
317
+ return error(err instanceof Error ? err : new Error(String(err)));
318
+ }
319
+ });
320
+ server.tool(UPDATE_LOC_TOOL, UPDATE_LOC_DESCRIPTION, UpdateLocalizacionClienteShape, { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: true }, async ({ tipo, idReg, ...fields }) => {
321
+ try {
322
+ const locTipo = tipo;
323
+ const changes = buildLocalizacionClienteBody(locTipo, fields);
324
+ if (Object.keys(changes).length === 0) {
325
+ return error(new Error('Debes informar al menos un campo a actualizar además de tipo e idReg.'));
326
+ }
327
+ const current = await client.getLocalizacionCliente(locTipo, idReg);
328
+ const body = mergeForUpdate(current, changes);
329
+ const updated = await client.updateLocalizacionCliente(locTipo, idReg, body);
330
+ return ok(updated);
331
+ }
332
+ catch (err) {
333
+ if (err instanceof FreematicaError)
334
+ return error(err);
335
+ return error(err instanceof Error ? err : new Error(String(err)));
336
+ }
337
+ });
191
338
  }
192
339
  //# sourceMappingURL=localizaciones.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"localizaciones.js","sourceRoot":"","sources":["../../src/tools/localizaciones.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localizaciones.js","sourceRoot":"","sources":["../../src/tools/localizaciones.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export interface HttpTransportConfig {
4
4
  port: number;
5
5
  client: FreematicaClient;
6
6
  allowedOrigins: string;
7
+ /** Override del flag de escrituras; si se omite se lee FREEMATICA_ENABLE_WRITES. */
8
+ enableWrites?: boolean;
7
9
  }
8
10
  export interface HttpAppResult {
9
11
  app: express.Application;
@@ -4,6 +4,7 @@ import rateLimit from 'express-rate-limit';
4
4
  import { randomUUID } from 'node:crypto';
5
5
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
6
6
  import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
7
+ import { loadWritesConfig } from '../config.js';
7
8
  import { createFreematicaServer } from '../server.js';
8
9
  import { VERSION } from '../version.js';
9
10
  import { logger } from '../logger.js';
@@ -60,7 +61,8 @@ export async function createHttpApp(config) {
60
61
  if (transport.sessionId)
61
62
  sessions.delete(transport.sessionId);
62
63
  };
63
- const server = createFreematicaServer({ client: config.client });
64
+ const enableWrites = config.enableWrites ?? loadWritesConfig().FREEMATICA_ENABLE_WRITES;
65
+ const server = createFreematicaServer({ client: config.client, enableWrites });
64
66
  await server.connect(transport);
65
67
  await transport.handleRequest(req, res, req.body);
66
68
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAAA,OAAO,OAAwC,MAAM,SAAS,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAEhD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEjD,MAAM,OAAO,GACX,MAAM,CAAC,cAAc,KAAK,GAAG;QAC3B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5D,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,iDAAiD;IACjD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,EAAE,cAAc,EAAE,GAAG,EAAE,EACvB,+FAA+F;YAC7F,kFAAkF,CACrF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,GAAG,CACL,IAAI,CAAC;QACH,MAAM,EAAE,OAAO;QACf,cAAc,EAAE,CAAC,gBAAgB,CAAC;QAClC,cAAc,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,eAAe,CAAC;KACpE,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAExC,MAAM,YAAY,GAAG,SAAS,CAAC;QAC7B,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,GAAG;QACV,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK;KACrB,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACnE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,IAAI,KAAK,GAA6B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,mCAAmC,EAAE;oBACrE,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;gBAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;gBACtC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,CAAC;aACF,CAAC,CAAC;YAEH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,IAAI,SAAS,CAAC,SAAS;oBAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAChE,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEhC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAClE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACrE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,QAAQ,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,KAAK,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;gBACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAElB,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { FreematicaClient } from '../clients/freematica-client.js';
2
2
  export interface StartStdioOptions {
3
3
  client: FreematicaClient;
4
+ /** Override del flag de escrituras; si se omite se lee FREEMATICA_ENABLE_WRITES. */
5
+ enableWrites?: boolean;
4
6
  }
5
7
  /**
6
8
  * Arranca el MCP server sobre el transport stdio.
@@ -1,4 +1,5 @@
1
1
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
2
+ import { loadWritesConfig } from '../config.js';
2
3
  import { createFreematicaServer } from '../server.js';
3
4
  /**
4
5
  * Arranca el MCP server sobre el transport stdio.
@@ -8,7 +9,8 @@ import { createFreematicaServer } from '../server.js';
8
9
  * el `onclose` del transport y libera el proceso).
9
10
  */
10
11
  export async function startStdio(opts) {
11
- const server = createFreematicaServer({ client: opts.client });
12
+ const enableWrites = opts.enableWrites ?? loadWritesConfig().FREEMATICA_ENABLE_WRITES;
13
+ const server = createFreematicaServer({ client: opts.client, enableWrites });
12
14
  const transport = new StdioServerTransport();
13
15
  await server.connect(transport);
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAMtD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQtD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC,wBAAwB,CAAC;IACtF,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -6,3 +6,32 @@
6
6
  * tighten it then.
7
7
  */
8
8
  export type VoContratosServMatAsignado = Record<string, unknown>;
9
+ /**
10
+ * Cabecera de contrato (tabla VSS_CONTRATOS, módulo pvss).
11
+ *
12
+ * Campos conocidos (verificados contra el API real): CTRT_EMP, CTRT_DELEG,
13
+ * CTRT_COD, CTRT_DES, CTRT_FECHA, CTRT_COD_CLI, CTRT_PAIS, CTRT_PROV,
14
+ * CTRT_CPOSTAL, CTRT_POB, CTRT_TVIA, CTRT_NOMVIA, CTRT_UBIVIA, CTRT_ABIERTO,
15
+ * CTRT_LOC_SERV, CTRT_ESTADISTICO, idReg.
16
+ *
17
+ * El campo `idReg` es Base64("{EMP}__{DELEG}__{COD}").
18
+ */
19
+ export type VoContrato = Record<string, unknown>;
20
+ /**
21
+ * Servicio de un contrato (tabla VSS_CONTRATOS_SERV, módulo pvss).
22
+ *
23
+ * Campos conocidos: CTRTS_EMP, CTRTS_DELEG, CTRTS_CTRT, CTRTS_COD, CTRTS_DES,
24
+ * CTRTS_INSP, CTRTS_TIPO, CTRTS_FECALTA, CTRTS_FECFIN, CTRTS_PRECIO_ESP,
25
+ * CTRTS_CLASE, CTRTS_CALFEST, CTRTS_OBS_PUESTO, idReg.
26
+ *
27
+ * El campo `idReg` es Base64("{EMP}__{DELEG}__{CTRT}__{COD}").
28
+ */
29
+ export type VoContratoServicio = Record<string, unknown>;
30
+ /** Datos de facturación de un servicio (VoServiciosFac, campos CTRTF_*). */
31
+ export type VoServiciosFac = Record<string, unknown>;
32
+ /** Histórico de precios de un servicio (VoServiciosHistPr, campos SERVHPR_*). */
33
+ export type VoServiciosHistPr = Record<string, unknown>;
34
+ /** Texto de facturación de un servicio (VoServiciosFacTxt, campos CTRTFL_*). */
35
+ export type VoServiciosFacTxt = Record<string, unknown>;
36
+ /** Opcionales de contrato (VoContratosOpcionales, campos CON2_*, módulo ppre). */
37
+ export type VoContratosOpcionales = Record<string, unknown>;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Utilidades para decodificar los identificadores opacos `idReg` de Freemática.
3
+ *
4
+ * Convención verificada contra el API real (módulo pvss, Contratos):
5
+ * - Contrato: idReg = Base64("{EMP}__{DELEG}__{COD}")
6
+ * Ejemplo: "MDJfXzA4X18yMzA0" → "02__08__2304"
7
+ * - Servicio: idReg = Base64("{EMP}__{DELEG}__{CTRT}__{COD}")
8
+ * Ejemplo: "MDJfXzA4X18yMzA0X18x" → "02__08__2304__1"
9
+ *
10
+ * Los endpoints de escritura de pvss exigen los códigos naturales (empresa,
11
+ * delegación, contrato, servicio) dentro del body además del idReg en el
12
+ * path; estos helpers evitan que el caller tenga que duplicarlos.
13
+ */
14
+ export interface ContratoIdRegParts {
15
+ empresa: string;
16
+ delegacion: string;
17
+ codContrato: string;
18
+ }
19
+ export interface ServicioIdRegParts extends ContratoIdRegParts {
20
+ codServicio: string;
21
+ }
22
+ /**
23
+ * Decodifica el idReg de una cabecera de contrato.
24
+ *
25
+ * @param idReg - Identificador opaco (Base64 de "EMP__DELEG__COD").
26
+ * @returns Partes del identificador.
27
+ * @throws Error si el idReg no tiene el formato esperado de 3 partes.
28
+ */
29
+ export declare function decodeContratoIdReg(idReg: string): ContratoIdRegParts;
30
+ /**
31
+ * Decodifica el idReg de un servicio de contrato.
32
+ *
33
+ * @param idReg - Identificador opaco (Base64 de "EMP__DELEG__CTRT__COD").
34
+ * @returns Partes del identificador.
35
+ * @throws Error si el idReg no tiene el formato esperado de 4 partes.
36
+ */
37
+ export declare function decodeServicioIdReg(idReg: string): ServicioIdRegParts;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Utilidades para decodificar los identificadores opacos `idReg` de Freemática.
3
+ *
4
+ * Convención verificada contra el API real (módulo pvss, Contratos):
5
+ * - Contrato: idReg = Base64("{EMP}__{DELEG}__{COD}")
6
+ * Ejemplo: "MDJfXzA4X18yMzA0" → "02__08__2304"
7
+ * - Servicio: idReg = Base64("{EMP}__{DELEG}__{CTRT}__{COD}")
8
+ * Ejemplo: "MDJfXzA4X18yMzA0X18x" → "02__08__2304__1"
9
+ *
10
+ * Los endpoints de escritura de pvss exigen los códigos naturales (empresa,
11
+ * delegación, contrato, servicio) dentro del body además del idReg en el
12
+ * path; estos helpers evitan que el caller tenga que duplicarlos.
13
+ */
14
+ function decodeBase64(idReg) {
15
+ return Buffer.from(idReg, 'base64').toString('utf8');
16
+ }
17
+ /**
18
+ * Decodifica el idReg de una cabecera de contrato.
19
+ *
20
+ * @param idReg - Identificador opaco (Base64 de "EMP__DELEG__COD").
21
+ * @returns Partes del identificador.
22
+ * @throws Error si el idReg no tiene el formato esperado de 3 partes.
23
+ */
24
+ export function decodeContratoIdReg(idReg) {
25
+ const decoded = decodeBase64(idReg);
26
+ const parts = decoded.split('__');
27
+ if (parts.length !== 3 || parts.some((p) => p.length === 0)) {
28
+ throw new Error(`idReg de contrato inválido: se esperaba Base64("EMP__DELEG__COD"), se obtuvo "${decoded}"`);
29
+ }
30
+ return { empresa: parts[0], delegacion: parts[1], codContrato: parts[2] };
31
+ }
32
+ /**
33
+ * Decodifica el idReg de un servicio de contrato.
34
+ *
35
+ * @param idReg - Identificador opaco (Base64 de "EMP__DELEG__CTRT__COD").
36
+ * @returns Partes del identificador.
37
+ * @throws Error si el idReg no tiene el formato esperado de 4 partes.
38
+ */
39
+ export function decodeServicioIdReg(idReg) {
40
+ const decoded = decodeBase64(idReg);
41
+ const parts = decoded.split('__');
42
+ if (parts.length !== 4 || parts.some((p) => p.length === 0)) {
43
+ throw new Error(`idReg de servicio inválido: se esperaba Base64("EMP__DELEG__CTRT__COD"), se obtuvo "${decoded}"`);
44
+ }
45
+ return {
46
+ empresa: parts[0],
47
+ delegacion: parts[1],
48
+ codContrato: parts[2],
49
+ codServicio: parts[3],
50
+ };
51
+ }
52
+ //# sourceMappingURL=idreg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idreg.js","sourceRoot":"","sources":["../../src/utils/idreg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,iFAAiF,OAAO,GAAG,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,uFAAuF,OAAO,GAAG,CAClG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACpB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;KACtB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nubiia/mcp-freematica",
3
- "version": "0.6.4",
3
+ "version": "0.8.0",
4
4
  "description": "MCP server for the Freemática ERP REST API: invoicing, accounts receivable, suppliers, accounting and HR data for AI assistants like Claude. Built by Nubiia.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,10 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { FreematicaClient } from '../clients/freematica-client.js';
3
- /**
4
- * Registers every MCP tool that maps to operations in the "Contratos" API group
5
- * (Postman: app `pvss` → group `Contratos`).
6
- *
7
- * Add new tools here by calling `server.tool(...)` again. When this file grows
8
- * past ~15 tools, split it into `src/tools/contratos/<entity>.ts`.
9
- */
10
- export declare function registerContratosTools(server: McpServer, client: FreematicaClient): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"contratos.js","sourceRoot":"","sources":["../../src/tools/contratos.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,yBAAyB,GAAG,gDAAgD,CAAC;AAEnF,MAAM,gCAAgC,GAAG;IACvC,8DAA8D;IAC9D,EAAE;IACF,uEAAuE;IACvE,kDAAkD;IAClD,EAAE;IACF,4EAA4E;IAC5E,wEAAwE;IACxE,wDAAwD;IACxD,sCAAsC;CACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAwB;IAChF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,gCAAgC,EAChC,EAAE,EACF,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACnE,KAAK,IAA6B,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,EAAE,CAAC;YACxE,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAmB,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAmB,CAAC;YACxE,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}