@contractspec/lib.support-bot 3.7.5 → 3.7.7

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 (44) hide show
  1. package/README.md +62 -36
  2. package/dist/bot/auto-responder.d.ts +1 -1
  3. package/dist/bot/auto-responder.js +101 -101
  4. package/dist/bot/feedback-loop.js +101 -101
  5. package/dist/bot/index.js +101 -101
  6. package/dist/bot/tools.d.ts +1 -1
  7. package/dist/browser/bot/auto-responder.js +101 -101
  8. package/dist/browser/bot/feedback-loop.js +101 -101
  9. package/dist/browser/bot/index.js +101 -101
  10. package/dist/browser/i18n/catalogs/index.js +80 -80
  11. package/dist/browser/i18n/index.js +101 -101
  12. package/dist/browser/i18n/locale.js +2 -2
  13. package/dist/browser/i18n/messages.js +80 -80
  14. package/dist/browser/index.js +132 -132
  15. package/dist/browser/rag/index.js +101 -101
  16. package/dist/browser/rag/ticket-resolver.js +101 -101
  17. package/dist/browser/tickets/classifier.js +101 -101
  18. package/dist/browser/tickets/index.js +101 -101
  19. package/dist/i18n/catalogs/index.d.ts +1 -1
  20. package/dist/i18n/catalogs/index.js +80 -80
  21. package/dist/i18n/index.d.ts +7 -7
  22. package/dist/i18n/index.js +101 -101
  23. package/dist/i18n/locale.d.ts +1 -1
  24. package/dist/i18n/locale.js +2 -2
  25. package/dist/i18n/messages.js +80 -80
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.js +132 -132
  28. package/dist/node/bot/auto-responder.js +101 -101
  29. package/dist/node/bot/feedback-loop.js +101 -101
  30. package/dist/node/bot/index.js +101 -101
  31. package/dist/node/i18n/catalogs/index.js +80 -80
  32. package/dist/node/i18n/index.js +101 -101
  33. package/dist/node/i18n/locale.js +2 -2
  34. package/dist/node/i18n/messages.js +80 -80
  35. package/dist/node/index.js +132 -132
  36. package/dist/node/rag/index.js +101 -101
  37. package/dist/node/rag/ticket-resolver.js +101 -101
  38. package/dist/node/tickets/classifier.js +101 -101
  39. package/dist/node/tickets/index.js +101 -101
  40. package/dist/rag/index.js +101 -101
  41. package/dist/rag/ticket-resolver.js +101 -101
  42. package/dist/tickets/classifier.js +101 -101
  43. package/dist/tickets/index.js +101 -101
  44. package/package.json +10 -10
package/dist/rag/index.js CHANGED
@@ -188,38 +188,38 @@ Respond to the customer.`,
188
188
  }
189
189
  });
190
190
 
191
- // src/i18n/catalogs/fr.ts
191
+ // src/i18n/catalogs/es.ts
192
192
  import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
193
- var frMessages = defineTranslation2({
193
+ var esMessages = defineTranslation2({
194
194
  meta: {
195
195
  key: "support-bot.messages",
196
196
  version: "1.0.0",
197
197
  domain: "support-bot",
198
- description: "French translations for the support-bot package",
198
+ description: "Spanish translations for the support-bot package",
199
199
  owners: ["platform"],
200
200
  stability: "experimental"
201
201
  },
202
- locale: "fr",
202
+ locale: "es",
203
203
  fallback: "en",
204
204
  messages: {
205
205
  "prompt.classifier.system": {
206
- value: "Classifiez le ticket de support.",
206
+ value: "Clasifica el ticket de soporte.",
207
207
  description: "Classifier LLM system prompt"
208
208
  },
209
209
  "prompt.autoResponder.system": {
210
- value: "R\xE9digez des r\xE9ponses de support empathiques et pr\xE9cises en citant les sources lorsque c\u2019est pertinent.",
210
+ value: "Redacta respuestas de soporte emp\xE1ticas y precisas citando fuentes cuando sea relevante.",
211
211
  description: "Auto-responder LLM system prompt"
212
212
  },
213
213
  "prompt.autoResponder.user": {
214
214
  value: `Ticket #{ticketId} ({category}, {priority}, {sentiment})
215
- Sujet\xA0: {subject}
215
+ Asunto: {subject}
216
216
 
217
217
  {body}
218
218
 
219
- Connaissances\xA0:
219
+ Conocimientos:
220
220
  {knowledge}
221
221
 
222
- R\xE9pondez au client.`,
222
+ Responde al cliente.`,
223
223
  description: "Auto-responder user prompt template",
224
224
  placeholders: [
225
225
  { name: "ticketId", type: "string" },
@@ -232,94 +232,94 @@ R\xE9pondez au client.`,
232
232
  ]
233
233
  },
234
234
  "responder.closing.friendly": {
235
- value: "Nous restons \xE0 votre disposition si vous avez besoin de quoi que ce soit.",
235
+ value: "Quedamos a su disposici\xF3n si necesita cualquier otra cosa.",
236
236
  description: "Friendly closing line for support responses"
237
237
  },
238
238
  "responder.closing.formal": {
239
- value: "Veuillez nous contacter si vous avez besoin d\u2019une assistance suppl\xE9mentaire.",
239
+ value: "No dude en contactarnos si requiere asistencia adicional.",
240
240
  description: "Formal closing line for support responses"
241
241
  },
242
242
  "responder.greeting.named": {
243
- value: "Bonjour {name},",
243
+ value: "Hola {name},",
244
244
  description: "Greeting with customer name",
245
245
  placeholders: [{ name: "name", type: "string" }]
246
246
  },
247
247
  "responder.greeting.anonymous": {
248
- value: "Bonjour,",
248
+ value: "Hola,",
249
249
  description: "Greeting without customer name"
250
250
  },
251
251
  "responder.intro.thanks": {
252
- value: "Merci de nous avoir contact\xE9s au sujet de \xAB\xA0{subject}\xA0\xBB.",
252
+ value: "Gracias por contactarnos sobre \xAB{subject}\xBB.",
253
253
  description: "Thank-you intro referencing the ticket subject",
254
254
  placeholders: [{ name: "subject", type: "string" }]
255
255
  },
256
256
  "responder.signature": {
257
- value: "\u2014 Support ContractSpec",
257
+ value: "\u2014 Soporte ContractSpec",
258
258
  description: "Email / response signature"
259
259
  },
260
260
  "responder.references.header": {
261
- value: "R\xE9f\xE9rences\xA0:",
261
+ value: "Referencias:",
262
262
  description: "Header for the references section"
263
263
  },
264
264
  "responder.references.sourceLabel": {
265
- value: "Source {index}",
265
+ value: "Fuente {index}",
266
266
  description: "Label for a numbered source reference",
267
267
  placeholders: [{ name: "index", type: "number" }]
268
268
  },
269
269
  "responder.category.billing": {
270
- value: "Je comprends que les probl\xE8mes de facturation peuvent \xEAtre stressants, laissez-moi clarifier la situation.",
270
+ value: "Entiendo que los problemas de facturaci\xF3n pueden ser estresantes, perm\xEDtame aclarar la situaci\xF3n.",
271
271
  description: "Category intro for billing tickets"
272
272
  },
273
273
  "responder.category.technical": {
274
- value: "Je vois que vous avez rencontr\xE9 un probl\xE8me technique. Voici ce qui s\u2019est pass\xE9 et comment le r\xE9soudre.",
274
+ value: "Veo que encontr\xF3 un problema t\xE9cnico. Esto es lo que sucedi\xF3 y c\xF3mo solucionarlo.",
275
275
  description: "Category intro for technical tickets"
276
276
  },
277
277
  "responder.category.product": {
278
- value: "Merci d\u2019avoir partag\xE9 vos retours sur le produit. Voici les prochaines \xE9tapes.",
278
+ value: "Gracias por compartir sus comentarios sobre el producto. Estos son los pr\xF3ximos pasos.",
279
279
  description: "Category intro for product tickets"
280
280
  },
281
281
  "responder.category.account": {
282
- value: "L\u2019acc\xE8s au compte est essentiel, laissez-moi vous guider vers la r\xE9solution.",
282
+ value: "El acceso a la cuenta es fundamental, perm\xEDtame guiarle hacia la resoluci\xF3n.",
283
283
  description: "Category intro for account tickets"
284
284
  },
285
285
  "responder.category.compliance": {
286
- value: "Les questions de conformit\xE9 exigent de la pr\xE9cision. Consultez la r\xE9ponse conforme aux politiques ci-dessous.",
286
+ value: "Las preguntas de cumplimiento requieren precisi\xF3n. Consulte la respuesta alineada con las pol\xEDticas a continuaci\xF3n.",
287
287
  description: "Category intro for compliance tickets"
288
288
  },
289
289
  "responder.category.other": {
290
- value: "Voici ce que nous avons trouv\xE9 apr\xE8s examen de votre demande.",
290
+ value: "Esto es lo que encontramos tras revisar su solicitud.",
291
291
  description: "Category intro for uncategorized tickets"
292
292
  },
293
293
  "responder.subject.replyPrefix": {
294
- value: "Re\xA0: {subject}",
294
+ value: "Re: {subject}",
295
295
  description: "Reply subject line prefix",
296
296
  placeholders: [{ name: "subject", type: "string" }]
297
297
  },
298
298
  "resolver.question.subjectLabel": {
299
- value: "Sujet\xA0: {subject}",
299
+ value: "Asunto: {subject}",
300
300
  description: "Subject label in resolver question context",
301
301
  placeholders: [{ name: "subject", type: "string" }]
302
302
  },
303
303
  "resolver.question.channelLabel": {
304
- value: "Canal\xA0: {channel}",
304
+ value: "Canal: {channel}",
305
305
  description: "Channel label in resolver question context",
306
306
  placeholders: [{ name: "channel", type: "string" }]
307
307
  },
308
308
  "resolver.question.customerLabel": {
309
- value: "Client\xA0: {name}",
309
+ value: "Cliente: {name}",
310
310
  description: "Customer label in resolver question context",
311
311
  placeholders: [{ name: "name", type: "string" }]
312
312
  },
313
313
  "resolver.action.escalate": {
314
- value: "Escalader pour r\xE9vision humaine",
314
+ value: "Escalar para revisi\xF3n humana",
315
315
  description: "Action label for escalation"
316
316
  },
317
317
  "resolver.action.respond": {
318
- value: "Envoyer une r\xE9ponse automatique",
318
+ value: "Enviar respuesta autom\xE1tica",
319
319
  description: "Action label for automated response"
320
320
  },
321
321
  "resolver.escalation.insufficientConfidence": {
322
- value: "Confiance insuffisante ou r\xE9f\xE9rences de connaissances manquantes",
322
+ value: "Confianza insuficiente o referencias de conocimiento faltantes",
323
323
  description: "Escalation reason when confidence is too low"
324
324
  },
325
325
  "tool.classify.title": {
@@ -327,7 +327,7 @@ R\xE9pondez au client.`,
327
327
  description: "MCP tool title for ticket classification"
328
328
  },
329
329
  "tool.classify.description": {
330
- value: "Classifier un ticket par priorit\xE9, sentiment et cat\xE9gorie",
330
+ value: "Clasificar un ticket por prioridad, sentimiento y categor\xEDa",
331
331
  description: "MCP tool description for ticket classification"
332
332
  },
333
333
  "tool.resolve.title": {
@@ -335,7 +335,7 @@ R\xE9pondez au client.`,
335
335
  description: "MCP tool title for ticket resolution"
336
336
  },
337
337
  "tool.resolve.description": {
338
- value: "G\xE9n\xE9rer une r\xE9solution fond\xE9e sur la base de connaissances pour un ticket",
338
+ value: "Generar una resoluci\xF3n basada en conocimientos para un ticket",
339
339
  description: "MCP tool description for ticket resolution"
340
340
  },
341
341
  "tool.draft.title": {
@@ -343,72 +343,72 @@ R\xE9pondez au client.`,
343
343
  description: "MCP tool title for response drafting"
344
344
  },
345
345
  "tool.draft.description": {
346
- value: "R\xE9diger une r\xE9ponse client bas\xE9e sur la r\xE9solution et la classification",
346
+ value: "Redactar una respuesta al cliente basada en la resoluci\xF3n y la clasificaci\xF3n",
347
347
  description: "MCP tool description for response drafting"
348
348
  },
349
349
  "error.inputMustIncludeTicket": {
350
- value: "L\u2019entr\xE9e doit inclure un ticket",
350
+ value: "La entrada debe incluir un ticket",
351
351
  description: "Error when input payload is missing the ticket field"
352
352
  },
353
353
  "error.ticketMissingId": {
354
- value: "Le ticket n\u2019a pas d\u2019identifiant",
354
+ value: "El ticket no tiene identificador",
355
355
  description: "Error when ticket object lacks an id"
356
356
  },
357
357
  "error.resolutionClassificationRequired": {
358
- value: "la r\xE9solution et la classification sont requises",
358
+ value: "la resoluci\xF3n y la clasificaci\xF3n son obligatorias",
359
359
  description: "Error when draft endpoint is called without resolution and classification"
360
360
  },
361
361
  "feedback.noRecords": {
362
- value: "Aucun retour enregistr\xE9 pour le moment.",
362
+ value: "No hay comentarios registrados a\xFAn.",
363
363
  description: "Placeholder when no feedback entries exist"
364
364
  },
365
365
  "feedback.status.escalated": {
366
- value: "Escalad\xE9",
366
+ value: "Escalado",
367
367
  description: "Status label for escalated tickets"
368
368
  },
369
369
  "feedback.status.autoResolved": {
370
- value: "R\xE9solu automatiquement",
370
+ value: "Resuelto autom\xE1ticamente",
371
371
  description: "Status label for auto-resolved tickets"
372
372
  },
373
373
  "spec.instructionsAppendix": {
374
- value: "Citez toujours les sources de connaissances du support et signalez les probl\xE8mes de conformit\xE9/facturation pour r\xE9vision humaine en cas de doute.",
374
+ value: "Cite siempre las fuentes de conocimiento de soporte y se\xF1ale los problemas de cumplimiento/facturaci\xF3n para revisi\xF3n humana en caso de duda.",
375
375
  description: "Instructions appendix appended to agent spec"
376
376
  }
377
377
  }
378
378
  });
379
379
 
380
- // src/i18n/catalogs/es.ts
380
+ // src/i18n/catalogs/fr.ts
381
381
  import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
382
- var esMessages = defineTranslation3({
382
+ var frMessages = defineTranslation3({
383
383
  meta: {
384
384
  key: "support-bot.messages",
385
385
  version: "1.0.0",
386
386
  domain: "support-bot",
387
- description: "Spanish translations for the support-bot package",
387
+ description: "French translations for the support-bot package",
388
388
  owners: ["platform"],
389
389
  stability: "experimental"
390
390
  },
391
- locale: "es",
391
+ locale: "fr",
392
392
  fallback: "en",
393
393
  messages: {
394
394
  "prompt.classifier.system": {
395
- value: "Clasifica el ticket de soporte.",
395
+ value: "Classifiez le ticket de support.",
396
396
  description: "Classifier LLM system prompt"
397
397
  },
398
398
  "prompt.autoResponder.system": {
399
- value: "Redacta respuestas de soporte emp\xE1ticas y precisas citando fuentes cuando sea relevante.",
399
+ value: "R\xE9digez des r\xE9ponses de support empathiques et pr\xE9cises en citant les sources lorsque c\u2019est pertinent.",
400
400
  description: "Auto-responder LLM system prompt"
401
401
  },
402
402
  "prompt.autoResponder.user": {
403
403
  value: `Ticket #{ticketId} ({category}, {priority}, {sentiment})
404
- Asunto: {subject}
404
+ Sujet\xA0: {subject}
405
405
 
406
406
  {body}
407
407
 
408
- Conocimientos:
408
+ Connaissances\xA0:
409
409
  {knowledge}
410
410
 
411
- Responde al cliente.`,
411
+ R\xE9pondez au client.`,
412
412
  description: "Auto-responder user prompt template",
413
413
  placeholders: [
414
414
  { name: "ticketId", type: "string" },
@@ -421,94 +421,94 @@ Responde al cliente.`,
421
421
  ]
422
422
  },
423
423
  "responder.closing.friendly": {
424
- value: "Quedamos a su disposici\xF3n si necesita cualquier otra cosa.",
424
+ value: "Nous restons \xE0 votre disposition si vous avez besoin de quoi que ce soit.",
425
425
  description: "Friendly closing line for support responses"
426
426
  },
427
427
  "responder.closing.formal": {
428
- value: "No dude en contactarnos si requiere asistencia adicional.",
428
+ value: "Veuillez nous contacter si vous avez besoin d\u2019une assistance suppl\xE9mentaire.",
429
429
  description: "Formal closing line for support responses"
430
430
  },
431
431
  "responder.greeting.named": {
432
- value: "Hola {name},",
432
+ value: "Bonjour {name},",
433
433
  description: "Greeting with customer name",
434
434
  placeholders: [{ name: "name", type: "string" }]
435
435
  },
436
436
  "responder.greeting.anonymous": {
437
- value: "Hola,",
437
+ value: "Bonjour,",
438
438
  description: "Greeting without customer name"
439
439
  },
440
440
  "responder.intro.thanks": {
441
- value: "Gracias por contactarnos sobre \xAB{subject}\xBB.",
441
+ value: "Merci de nous avoir contact\xE9s au sujet de \xAB\xA0{subject}\xA0\xBB.",
442
442
  description: "Thank-you intro referencing the ticket subject",
443
443
  placeholders: [{ name: "subject", type: "string" }]
444
444
  },
445
445
  "responder.signature": {
446
- value: "\u2014 Soporte ContractSpec",
446
+ value: "\u2014 Support ContractSpec",
447
447
  description: "Email / response signature"
448
448
  },
449
449
  "responder.references.header": {
450
- value: "Referencias:",
450
+ value: "R\xE9f\xE9rences\xA0:",
451
451
  description: "Header for the references section"
452
452
  },
453
453
  "responder.references.sourceLabel": {
454
- value: "Fuente {index}",
454
+ value: "Source {index}",
455
455
  description: "Label for a numbered source reference",
456
456
  placeholders: [{ name: "index", type: "number" }]
457
457
  },
458
458
  "responder.category.billing": {
459
- value: "Entiendo que los problemas de facturaci\xF3n pueden ser estresantes, perm\xEDtame aclarar la situaci\xF3n.",
459
+ value: "Je comprends que les probl\xE8mes de facturation peuvent \xEAtre stressants, laissez-moi clarifier la situation.",
460
460
  description: "Category intro for billing tickets"
461
461
  },
462
462
  "responder.category.technical": {
463
- value: "Veo que encontr\xF3 un problema t\xE9cnico. Esto es lo que sucedi\xF3 y c\xF3mo solucionarlo.",
463
+ value: "Je vois que vous avez rencontr\xE9 un probl\xE8me technique. Voici ce qui s\u2019est pass\xE9 et comment le r\xE9soudre.",
464
464
  description: "Category intro for technical tickets"
465
465
  },
466
466
  "responder.category.product": {
467
- value: "Gracias por compartir sus comentarios sobre el producto. Estos son los pr\xF3ximos pasos.",
467
+ value: "Merci d\u2019avoir partag\xE9 vos retours sur le produit. Voici les prochaines \xE9tapes.",
468
468
  description: "Category intro for product tickets"
469
469
  },
470
470
  "responder.category.account": {
471
- value: "El acceso a la cuenta es fundamental, perm\xEDtame guiarle hacia la resoluci\xF3n.",
471
+ value: "L\u2019acc\xE8s au compte est essentiel, laissez-moi vous guider vers la r\xE9solution.",
472
472
  description: "Category intro for account tickets"
473
473
  },
474
474
  "responder.category.compliance": {
475
- value: "Las preguntas de cumplimiento requieren precisi\xF3n. Consulte la respuesta alineada con las pol\xEDticas a continuaci\xF3n.",
475
+ value: "Les questions de conformit\xE9 exigent de la pr\xE9cision. Consultez la r\xE9ponse conforme aux politiques ci-dessous.",
476
476
  description: "Category intro for compliance tickets"
477
477
  },
478
478
  "responder.category.other": {
479
- value: "Esto es lo que encontramos tras revisar su solicitud.",
479
+ value: "Voici ce que nous avons trouv\xE9 apr\xE8s examen de votre demande.",
480
480
  description: "Category intro for uncategorized tickets"
481
481
  },
482
482
  "responder.subject.replyPrefix": {
483
- value: "Re: {subject}",
483
+ value: "Re\xA0: {subject}",
484
484
  description: "Reply subject line prefix",
485
485
  placeholders: [{ name: "subject", type: "string" }]
486
486
  },
487
487
  "resolver.question.subjectLabel": {
488
- value: "Asunto: {subject}",
488
+ value: "Sujet\xA0: {subject}",
489
489
  description: "Subject label in resolver question context",
490
490
  placeholders: [{ name: "subject", type: "string" }]
491
491
  },
492
492
  "resolver.question.channelLabel": {
493
- value: "Canal: {channel}",
493
+ value: "Canal\xA0: {channel}",
494
494
  description: "Channel label in resolver question context",
495
495
  placeholders: [{ name: "channel", type: "string" }]
496
496
  },
497
497
  "resolver.question.customerLabel": {
498
- value: "Cliente: {name}",
498
+ value: "Client\xA0: {name}",
499
499
  description: "Customer label in resolver question context",
500
500
  placeholders: [{ name: "name", type: "string" }]
501
501
  },
502
502
  "resolver.action.escalate": {
503
- value: "Escalar para revisi\xF3n humana",
503
+ value: "Escalader pour r\xE9vision humaine",
504
504
  description: "Action label for escalation"
505
505
  },
506
506
  "resolver.action.respond": {
507
- value: "Enviar respuesta autom\xE1tica",
507
+ value: "Envoyer une r\xE9ponse automatique",
508
508
  description: "Action label for automated response"
509
509
  },
510
510
  "resolver.escalation.insufficientConfidence": {
511
- value: "Confianza insuficiente o referencias de conocimiento faltantes",
511
+ value: "Confiance insuffisante ou r\xE9f\xE9rences de connaissances manquantes",
512
512
  description: "Escalation reason when confidence is too low"
513
513
  },
514
514
  "tool.classify.title": {
@@ -516,7 +516,7 @@ Responde al cliente.`,
516
516
  description: "MCP tool title for ticket classification"
517
517
  },
518
518
  "tool.classify.description": {
519
- value: "Clasificar un ticket por prioridad, sentimiento y categor\xEDa",
519
+ value: "Classifier un ticket par priorit\xE9, sentiment et cat\xE9gorie",
520
520
  description: "MCP tool description for ticket classification"
521
521
  },
522
522
  "tool.resolve.title": {
@@ -524,7 +524,7 @@ Responde al cliente.`,
524
524
  description: "MCP tool title for ticket resolution"
525
525
  },
526
526
  "tool.resolve.description": {
527
- value: "Generar una resoluci\xF3n basada en conocimientos para un ticket",
527
+ value: "G\xE9n\xE9rer une r\xE9solution fond\xE9e sur la base de connaissances pour un ticket",
528
528
  description: "MCP tool description for ticket resolution"
529
529
  },
530
530
  "tool.draft.title": {
@@ -532,61 +532,40 @@ Responde al cliente.`,
532
532
  description: "MCP tool title for response drafting"
533
533
  },
534
534
  "tool.draft.description": {
535
- value: "Redactar una respuesta al cliente basada en la resoluci\xF3n y la clasificaci\xF3n",
535
+ value: "R\xE9diger une r\xE9ponse client bas\xE9e sur la r\xE9solution et la classification",
536
536
  description: "MCP tool description for response drafting"
537
537
  },
538
538
  "error.inputMustIncludeTicket": {
539
- value: "La entrada debe incluir un ticket",
539
+ value: "L\u2019entr\xE9e doit inclure un ticket",
540
540
  description: "Error when input payload is missing the ticket field"
541
541
  },
542
542
  "error.ticketMissingId": {
543
- value: "El ticket no tiene identificador",
543
+ value: "Le ticket n\u2019a pas d\u2019identifiant",
544
544
  description: "Error when ticket object lacks an id"
545
545
  },
546
546
  "error.resolutionClassificationRequired": {
547
- value: "la resoluci\xF3n y la clasificaci\xF3n son obligatorias",
547
+ value: "la r\xE9solution et la classification sont requises",
548
548
  description: "Error when draft endpoint is called without resolution and classification"
549
549
  },
550
550
  "feedback.noRecords": {
551
- value: "No hay comentarios registrados a\xFAn.",
551
+ value: "Aucun retour enregistr\xE9 pour le moment.",
552
552
  description: "Placeholder when no feedback entries exist"
553
553
  },
554
554
  "feedback.status.escalated": {
555
- value: "Escalado",
555
+ value: "Escalad\xE9",
556
556
  description: "Status label for escalated tickets"
557
557
  },
558
558
  "feedback.status.autoResolved": {
559
- value: "Resuelto autom\xE1ticamente",
559
+ value: "R\xE9solu automatiquement",
560
560
  description: "Status label for auto-resolved tickets"
561
561
  },
562
562
  "spec.instructionsAppendix": {
563
- value: "Cite siempre las fuentes de conocimiento de soporte y se\xF1ale los problemas de cumplimiento/facturaci\xF3n para revisi\xF3n humana en caso de duda.",
563
+ value: "Citez toujours les sources de connaissances du support et signalez les probl\xE8mes de conformit\xE9/facturation pour r\xE9vision humaine en cas de doute.",
564
564
  description: "Instructions appendix appended to agent spec"
565
565
  }
566
566
  }
567
567
  });
568
568
 
569
- // src/i18n/messages.ts
570
- import {
571
- createI18nFactory
572
- } from "@contractspec/lib.contracts-spec/translations";
573
- import { interpolate } from "@contractspec/lib.contracts-spec/translations";
574
- var factory = createI18nFactory({
575
- specKey: "support-bot.messages",
576
- catalogs: [enMessages, frMessages, esMessages]
577
- });
578
- var createSupportBotI18n = factory.create;
579
- var getDefaultI18n = factory.getDefault;
580
- var resetI18nRegistry = factory.resetRegistry;
581
-
582
- // src/i18n/locale.ts
583
- import {
584
- DEFAULT_LOCALE,
585
- SUPPORTED_LOCALES,
586
- resolveLocale,
587
- isSupportedLocale
588
- } from "@contractspec/lib.contracts-spec/translations";
589
-
590
569
  // src/i18n/keys.ts
591
570
  var PROMPT_KEYS = {
592
571
  "prompt.classifier.system": "prompt.classifier.system",
@@ -648,6 +627,27 @@ var I18N_KEYS = {
648
627
  ...FEEDBACK_KEYS,
649
628
  ...SPEC_KEYS
650
629
  };
630
+
631
+ // src/i18n/locale.ts
632
+ import {
633
+ DEFAULT_LOCALE,
634
+ isSupportedLocale,
635
+ resolveLocale,
636
+ SUPPORTED_LOCALES
637
+ } from "@contractspec/lib.contracts-spec/translations";
638
+
639
+ // src/i18n/messages.ts
640
+ import {
641
+ createI18nFactory
642
+ } from "@contractspec/lib.contracts-spec/translations";
643
+ import { interpolate } from "@contractspec/lib.contracts-spec/translations";
644
+ var factory = createI18nFactory({
645
+ specKey: "support-bot.messages",
646
+ catalogs: [enMessages, frMessages, esMessages]
647
+ });
648
+ var createSupportBotI18n = factory.create;
649
+ var getDefaultI18n = factory.getDefault;
650
+ var resetI18nRegistry = factory.resetRegistry;
651
651
  // src/rag/ticket-resolver.ts
652
652
  class TicketResolver {
653
653
  knowledge;