@contractspec/lib.support-bot 2.4.0 → 2.6.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 (61) hide show
  1. package/dist/bot/auto-responder.d.ts +2 -0
  2. package/dist/bot/auto-responder.js +678 -21
  3. package/dist/bot/feedback-loop.js +652 -2
  4. package/dist/bot/index.js +681 -23
  5. package/dist/browser/bot/auto-responder.js +678 -21
  6. package/dist/browser/bot/feedback-loop.js +652 -2
  7. package/dist/browser/bot/index.js +681 -23
  8. package/dist/browser/i18n/catalogs/en.js +191 -0
  9. package/dist/browser/i18n/catalogs/es.js +191 -0
  10. package/dist/browser/i18n/catalogs/fr.js +191 -0
  11. package/dist/browser/i18n/catalogs/index.js +571 -0
  12. package/dist/browser/i18n/index.js +670 -0
  13. package/dist/browser/i18n/keys.js +71 -0
  14. package/dist/browser/i18n/locale.js +13 -0
  15. package/dist/browser/i18n/messages.js +585 -0
  16. package/dist/browser/index.js +884 -58
  17. package/dist/browser/rag/index.js +662 -5
  18. package/dist/browser/rag/ticket-resolver.js +662 -5
  19. package/dist/browser/tickets/classifier.js +839 -30
  20. package/dist/browser/tickets/index.js +839 -30
  21. package/dist/i18n/catalogs/en.d.ts +8 -0
  22. package/dist/i18n/catalogs/en.js +192 -0
  23. package/dist/i18n/catalogs/es.d.ts +6 -0
  24. package/dist/i18n/catalogs/es.js +192 -0
  25. package/dist/i18n/catalogs/fr.d.ts +6 -0
  26. package/dist/i18n/catalogs/fr.js +192 -0
  27. package/dist/i18n/catalogs/index.d.ts +8 -0
  28. package/dist/i18n/catalogs/index.js +572 -0
  29. package/dist/i18n/i18n.test.d.ts +1 -0
  30. package/dist/i18n/index.d.ts +30 -0
  31. package/dist/i18n/index.js +671 -0
  32. package/dist/i18n/keys.d.ts +174 -0
  33. package/dist/i18n/keys.js +72 -0
  34. package/dist/i18n/locale.d.ts +8 -0
  35. package/dist/i18n/locale.js +14 -0
  36. package/dist/i18n/messages.d.ts +15 -0
  37. package/dist/i18n/messages.js +586 -0
  38. package/dist/index.js +884 -58
  39. package/dist/node/bot/auto-responder.js +678 -21
  40. package/dist/node/bot/feedback-loop.js +652 -2
  41. package/dist/node/bot/index.js +681 -23
  42. package/dist/node/i18n/catalogs/en.js +191 -0
  43. package/dist/node/i18n/catalogs/es.js +191 -0
  44. package/dist/node/i18n/catalogs/fr.js +191 -0
  45. package/dist/node/i18n/catalogs/index.js +571 -0
  46. package/dist/node/i18n/index.js +670 -0
  47. package/dist/node/i18n/keys.js +71 -0
  48. package/dist/node/i18n/locale.js +13 -0
  49. package/dist/node/i18n/messages.js +585 -0
  50. package/dist/node/index.js +884 -58
  51. package/dist/node/rag/index.js +662 -5
  52. package/dist/node/rag/ticket-resolver.js +662 -5
  53. package/dist/node/tickets/classifier.js +839 -30
  54. package/dist/node/tickets/index.js +839 -30
  55. package/dist/rag/index.js +662 -5
  56. package/dist/rag/ticket-resolver.d.ts +2 -0
  57. package/dist/rag/ticket-resolver.js +662 -5
  58. package/dist/tickets/classifier.d.ts +6 -0
  59. package/dist/tickets/classifier.js +839 -30
  60. package/dist/tickets/index.js +839 -30
  61. package/package.json +148 -8
@@ -0,0 +1,191 @@
1
+ // src/i18n/catalogs/en.ts
2
+ import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
3
+ var enMessages = defineTranslation({
4
+ meta: {
5
+ key: "support-bot.messages",
6
+ version: "1.0.0",
7
+ domain: "support-bot",
8
+ description: "All user-facing, LLM-facing, and developer-facing strings for the support-bot package",
9
+ owners: ["platform"],
10
+ stability: "experimental"
11
+ },
12
+ locale: "en",
13
+ fallback: "en",
14
+ messages: {
15
+ "prompt.classifier.system": {
16
+ value: "Classify the support ticket.",
17
+ description: "Classifier LLM system prompt"
18
+ },
19
+ "prompt.autoResponder.system": {
20
+ value: "Write empathetic, accurate support replies that cite sources when relevant.",
21
+ description: "Auto-responder LLM system prompt"
22
+ },
23
+ "prompt.autoResponder.user": {
24
+ value: `Ticket #{ticketId} ({category}, {priority}, {sentiment})
25
+ Subject: {subject}
26
+
27
+ {body}
28
+
29
+ Knowledge:
30
+ {knowledge}
31
+
32
+ Respond to the customer.`,
33
+ description: "Auto-responder user prompt template",
34
+ placeholders: [
35
+ { name: "ticketId", type: "string" },
36
+ { name: "category", type: "string" },
37
+ { name: "priority", type: "string" },
38
+ { name: "sentiment", type: "string" },
39
+ { name: "subject", type: "string" },
40
+ { name: "body", type: "string" },
41
+ { name: "knowledge", type: "string" }
42
+ ]
43
+ },
44
+ "responder.closing.friendly": {
45
+ value: "We remain available if you need anything else.",
46
+ description: "Friendly closing line for support responses"
47
+ },
48
+ "responder.closing.formal": {
49
+ value: "Please let us know if you require additional assistance.",
50
+ description: "Formal closing line for support responses"
51
+ },
52
+ "responder.greeting.named": {
53
+ value: "Hi {name},",
54
+ description: "Greeting with customer name",
55
+ placeholders: [{ name: "name", type: "string" }]
56
+ },
57
+ "responder.greeting.anonymous": {
58
+ value: "Hi there,",
59
+ description: "Greeting without customer name"
60
+ },
61
+ "responder.intro.thanks": {
62
+ value: 'Thanks for contacting us about "{subject}".',
63
+ description: "Thank-you intro referencing the ticket subject",
64
+ placeholders: [{ name: "subject", type: "string" }]
65
+ },
66
+ "responder.signature": {
67
+ value: "— ContractSpec Support",
68
+ description: "Email / response signature"
69
+ },
70
+ "responder.references.header": {
71
+ value: "References:",
72
+ description: "Header for the references section"
73
+ },
74
+ "responder.references.sourceLabel": {
75
+ value: "Source {index}",
76
+ description: "Label for a numbered source reference",
77
+ placeholders: [{ name: "index", type: "number" }]
78
+ },
79
+ "responder.category.billing": {
80
+ value: "I understand billing issues can be stressful, so let me clarify the situation.",
81
+ description: "Category intro for billing tickets"
82
+ },
83
+ "responder.category.technical": {
84
+ value: "I see you encountered a technical issue. Here is what happened and how to fix it.",
85
+ description: "Category intro for technical tickets"
86
+ },
87
+ "responder.category.product": {
88
+ value: "Thanks for sharing feedback about the product. Here are the next steps.",
89
+ description: "Category intro for product tickets"
90
+ },
91
+ "responder.category.account": {
92
+ value: "Account access is critical, so let me walk you through the resolution.",
93
+ description: "Category intro for account tickets"
94
+ },
95
+ "responder.category.compliance": {
96
+ value: "Compliance questions require precision. See the policy-aligned answer below.",
97
+ description: "Category intro for compliance tickets"
98
+ },
99
+ "responder.category.other": {
100
+ value: "Here is what we found after reviewing your request.",
101
+ description: "Category intro for uncategorized tickets"
102
+ },
103
+ "responder.subject.replyPrefix": {
104
+ value: "Re: {subject}",
105
+ description: "Reply subject line prefix",
106
+ placeholders: [{ name: "subject", type: "string" }]
107
+ },
108
+ "resolver.question.subjectLabel": {
109
+ value: "Subject: {subject}",
110
+ description: "Subject label in resolver question context",
111
+ placeholders: [{ name: "subject", type: "string" }]
112
+ },
113
+ "resolver.question.channelLabel": {
114
+ value: "Channel: {channel}",
115
+ description: "Channel label in resolver question context",
116
+ placeholders: [{ name: "channel", type: "string" }]
117
+ },
118
+ "resolver.question.customerLabel": {
119
+ value: "Customer: {name}",
120
+ description: "Customer label in resolver question context",
121
+ placeholders: [{ name: "name", type: "string" }]
122
+ },
123
+ "resolver.action.escalate": {
124
+ value: "Escalate for human review",
125
+ description: "Action label for escalation"
126
+ },
127
+ "resolver.action.respond": {
128
+ value: "Send automated response",
129
+ description: "Action label for automated response"
130
+ },
131
+ "resolver.escalation.insufficientConfidence": {
132
+ value: "Insufficient confidence or missing knowledge references",
133
+ description: "Escalation reason when confidence is too low"
134
+ },
135
+ "tool.classify.title": {
136
+ value: "support_classify_ticket",
137
+ description: "MCP tool title for ticket classification"
138
+ },
139
+ "tool.classify.description": {
140
+ value: "Classify a ticket for priority, sentiment, and category",
141
+ description: "MCP tool description for ticket classification"
142
+ },
143
+ "tool.resolve.title": {
144
+ value: "support_resolve_ticket",
145
+ description: "MCP tool title for ticket resolution"
146
+ },
147
+ "tool.resolve.description": {
148
+ value: "Generate a knowledge-grounded resolution for a ticket",
149
+ description: "MCP tool description for ticket resolution"
150
+ },
151
+ "tool.draft.title": {
152
+ value: "support_draft_response",
153
+ description: "MCP tool title for response drafting"
154
+ },
155
+ "tool.draft.description": {
156
+ value: "Draft a user-facing reply based on resolution + classification",
157
+ description: "MCP tool description for response drafting"
158
+ },
159
+ "error.inputMustIncludeTicket": {
160
+ value: "Input must include ticket",
161
+ description: "Error when input payload is missing the ticket field"
162
+ },
163
+ "error.ticketMissingId": {
164
+ value: "Ticket is missing id",
165
+ description: "Error when ticket object lacks an id"
166
+ },
167
+ "error.resolutionClassificationRequired": {
168
+ value: "resolution and classification are required",
169
+ description: "Error when draft endpoint is called without resolution and classification"
170
+ },
171
+ "feedback.noRecords": {
172
+ value: "No feedback recorded yet.",
173
+ description: "Placeholder when no feedback entries exist"
174
+ },
175
+ "feedback.status.escalated": {
176
+ value: "Escalated",
177
+ description: "Status label for escalated tickets"
178
+ },
179
+ "feedback.status.autoResolved": {
180
+ value: "Auto-resolved",
181
+ description: "Status label for auto-resolved tickets"
182
+ },
183
+ "spec.instructionsAppendix": {
184
+ value: "Always cite support knowledge sources and flag compliance/billing issues for human review when unsure.",
185
+ description: "Instructions appendix appended to agent spec"
186
+ }
187
+ }
188
+ });
189
+ export {
190
+ enMessages
191
+ };
@@ -0,0 +1,191 @@
1
+ // src/i18n/catalogs/es.ts
2
+ import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
3
+ var esMessages = defineTranslation({
4
+ meta: {
5
+ key: "support-bot.messages",
6
+ version: "1.0.0",
7
+ domain: "support-bot",
8
+ description: "Spanish translations for the support-bot package",
9
+ owners: ["platform"],
10
+ stability: "experimental"
11
+ },
12
+ locale: "es",
13
+ fallback: "en",
14
+ messages: {
15
+ "prompt.classifier.system": {
16
+ value: "Clasifica el ticket de soporte.",
17
+ description: "Classifier LLM system prompt"
18
+ },
19
+ "prompt.autoResponder.system": {
20
+ value: "Redacta respuestas de soporte empáticas y precisas citando fuentes cuando sea relevante.",
21
+ description: "Auto-responder LLM system prompt"
22
+ },
23
+ "prompt.autoResponder.user": {
24
+ value: `Ticket #{ticketId} ({category}, {priority}, {sentiment})
25
+ Asunto: {subject}
26
+
27
+ {body}
28
+
29
+ Conocimientos:
30
+ {knowledge}
31
+
32
+ Responde al cliente.`,
33
+ description: "Auto-responder user prompt template",
34
+ placeholders: [
35
+ { name: "ticketId", type: "string" },
36
+ { name: "category", type: "string" },
37
+ { name: "priority", type: "string" },
38
+ { name: "sentiment", type: "string" },
39
+ { name: "subject", type: "string" },
40
+ { name: "body", type: "string" },
41
+ { name: "knowledge", type: "string" }
42
+ ]
43
+ },
44
+ "responder.closing.friendly": {
45
+ value: "Quedamos a su disposición si necesita cualquier otra cosa.",
46
+ description: "Friendly closing line for support responses"
47
+ },
48
+ "responder.closing.formal": {
49
+ value: "No dude en contactarnos si requiere asistencia adicional.",
50
+ description: "Formal closing line for support responses"
51
+ },
52
+ "responder.greeting.named": {
53
+ value: "Hola {name},",
54
+ description: "Greeting with customer name",
55
+ placeholders: [{ name: "name", type: "string" }]
56
+ },
57
+ "responder.greeting.anonymous": {
58
+ value: "Hola,",
59
+ description: "Greeting without customer name"
60
+ },
61
+ "responder.intro.thanks": {
62
+ value: "Gracias por contactarnos sobre «{subject}».",
63
+ description: "Thank-you intro referencing the ticket subject",
64
+ placeholders: [{ name: "subject", type: "string" }]
65
+ },
66
+ "responder.signature": {
67
+ value: "— Soporte ContractSpec",
68
+ description: "Email / response signature"
69
+ },
70
+ "responder.references.header": {
71
+ value: "Referencias:",
72
+ description: "Header for the references section"
73
+ },
74
+ "responder.references.sourceLabel": {
75
+ value: "Fuente {index}",
76
+ description: "Label for a numbered source reference",
77
+ placeholders: [{ name: "index", type: "number" }]
78
+ },
79
+ "responder.category.billing": {
80
+ value: "Entiendo que los problemas de facturación pueden ser estresantes, permítame aclarar la situación.",
81
+ description: "Category intro for billing tickets"
82
+ },
83
+ "responder.category.technical": {
84
+ value: "Veo que encontró un problema técnico. Esto es lo que sucedió y cómo solucionarlo.",
85
+ description: "Category intro for technical tickets"
86
+ },
87
+ "responder.category.product": {
88
+ value: "Gracias por compartir sus comentarios sobre el producto. Estos son los próximos pasos.",
89
+ description: "Category intro for product tickets"
90
+ },
91
+ "responder.category.account": {
92
+ value: "El acceso a la cuenta es fundamental, permítame guiarle hacia la resolución.",
93
+ description: "Category intro for account tickets"
94
+ },
95
+ "responder.category.compliance": {
96
+ value: "Las preguntas de cumplimiento requieren precisión. Consulte la respuesta alineada con las políticas a continuación.",
97
+ description: "Category intro for compliance tickets"
98
+ },
99
+ "responder.category.other": {
100
+ value: "Esto es lo que encontramos tras revisar su solicitud.",
101
+ description: "Category intro for uncategorized tickets"
102
+ },
103
+ "responder.subject.replyPrefix": {
104
+ value: "Re: {subject}",
105
+ description: "Reply subject line prefix",
106
+ placeholders: [{ name: "subject", type: "string" }]
107
+ },
108
+ "resolver.question.subjectLabel": {
109
+ value: "Asunto: {subject}",
110
+ description: "Subject label in resolver question context",
111
+ placeholders: [{ name: "subject", type: "string" }]
112
+ },
113
+ "resolver.question.channelLabel": {
114
+ value: "Canal: {channel}",
115
+ description: "Channel label in resolver question context",
116
+ placeholders: [{ name: "channel", type: "string" }]
117
+ },
118
+ "resolver.question.customerLabel": {
119
+ value: "Cliente: {name}",
120
+ description: "Customer label in resolver question context",
121
+ placeholders: [{ name: "name", type: "string" }]
122
+ },
123
+ "resolver.action.escalate": {
124
+ value: "Escalar para revisión humana",
125
+ description: "Action label for escalation"
126
+ },
127
+ "resolver.action.respond": {
128
+ value: "Enviar respuesta automática",
129
+ description: "Action label for automated response"
130
+ },
131
+ "resolver.escalation.insufficientConfidence": {
132
+ value: "Confianza insuficiente o referencias de conocimiento faltantes",
133
+ description: "Escalation reason when confidence is too low"
134
+ },
135
+ "tool.classify.title": {
136
+ value: "support_classify_ticket",
137
+ description: "MCP tool title for ticket classification"
138
+ },
139
+ "tool.classify.description": {
140
+ value: "Clasificar un ticket por prioridad, sentimiento y categoría",
141
+ description: "MCP tool description for ticket classification"
142
+ },
143
+ "tool.resolve.title": {
144
+ value: "support_resolve_ticket",
145
+ description: "MCP tool title for ticket resolution"
146
+ },
147
+ "tool.resolve.description": {
148
+ value: "Generar una resolución basada en conocimientos para un ticket",
149
+ description: "MCP tool description for ticket resolution"
150
+ },
151
+ "tool.draft.title": {
152
+ value: "support_draft_response",
153
+ description: "MCP tool title for response drafting"
154
+ },
155
+ "tool.draft.description": {
156
+ value: "Redactar una respuesta al cliente basada en la resolución y la clasificación",
157
+ description: "MCP tool description for response drafting"
158
+ },
159
+ "error.inputMustIncludeTicket": {
160
+ value: "La entrada debe incluir un ticket",
161
+ description: "Error when input payload is missing the ticket field"
162
+ },
163
+ "error.ticketMissingId": {
164
+ value: "El ticket no tiene identificador",
165
+ description: "Error when ticket object lacks an id"
166
+ },
167
+ "error.resolutionClassificationRequired": {
168
+ value: "la resolución y la clasificación son obligatorias",
169
+ description: "Error when draft endpoint is called without resolution and classification"
170
+ },
171
+ "feedback.noRecords": {
172
+ value: "No hay comentarios registrados aún.",
173
+ description: "Placeholder when no feedback entries exist"
174
+ },
175
+ "feedback.status.escalated": {
176
+ value: "Escalado",
177
+ description: "Status label for escalated tickets"
178
+ },
179
+ "feedback.status.autoResolved": {
180
+ value: "Resuelto automáticamente",
181
+ description: "Status label for auto-resolved tickets"
182
+ },
183
+ "spec.instructionsAppendix": {
184
+ value: "Cite siempre las fuentes de conocimiento de soporte y señale los problemas de cumplimiento/facturación para revisión humana en caso de duda.",
185
+ description: "Instructions appendix appended to agent spec"
186
+ }
187
+ }
188
+ });
189
+ export {
190
+ esMessages
191
+ };
@@ -0,0 +1,191 @@
1
+ // src/i18n/catalogs/fr.ts
2
+ import { defineTranslation } from "@contractspec/lib.contracts-spec/translations";
3
+ var frMessages = defineTranslation({
4
+ meta: {
5
+ key: "support-bot.messages",
6
+ version: "1.0.0",
7
+ domain: "support-bot",
8
+ description: "French translations for the support-bot package",
9
+ owners: ["platform"],
10
+ stability: "experimental"
11
+ },
12
+ locale: "fr",
13
+ fallback: "en",
14
+ messages: {
15
+ "prompt.classifier.system": {
16
+ value: "Classifiez le ticket de support.",
17
+ description: "Classifier LLM system prompt"
18
+ },
19
+ "prompt.autoResponder.system": {
20
+ value: "Rédigez des réponses de support empathiques et précises en citant les sources lorsque c’est pertinent.",
21
+ description: "Auto-responder LLM system prompt"
22
+ },
23
+ "prompt.autoResponder.user": {
24
+ value: `Ticket #{ticketId} ({category}, {priority}, {sentiment})
25
+ Sujet : {subject}
26
+
27
+ {body}
28
+
29
+ Connaissances :
30
+ {knowledge}
31
+
32
+ Répondez au client.`,
33
+ description: "Auto-responder user prompt template",
34
+ placeholders: [
35
+ { name: "ticketId", type: "string" },
36
+ { name: "category", type: "string" },
37
+ { name: "priority", type: "string" },
38
+ { name: "sentiment", type: "string" },
39
+ { name: "subject", type: "string" },
40
+ { name: "body", type: "string" },
41
+ { name: "knowledge", type: "string" }
42
+ ]
43
+ },
44
+ "responder.closing.friendly": {
45
+ value: "Nous restons à votre disposition si vous avez besoin de quoi que ce soit.",
46
+ description: "Friendly closing line for support responses"
47
+ },
48
+ "responder.closing.formal": {
49
+ value: "Veuillez nous contacter si vous avez besoin d’une assistance supplémentaire.",
50
+ description: "Formal closing line for support responses"
51
+ },
52
+ "responder.greeting.named": {
53
+ value: "Bonjour {name},",
54
+ description: "Greeting with customer name",
55
+ placeholders: [{ name: "name", type: "string" }]
56
+ },
57
+ "responder.greeting.anonymous": {
58
+ value: "Bonjour,",
59
+ description: "Greeting without customer name"
60
+ },
61
+ "responder.intro.thanks": {
62
+ value: "Merci de nous avoir contactés au sujet de « {subject} ».",
63
+ description: "Thank-you intro referencing the ticket subject",
64
+ placeholders: [{ name: "subject", type: "string" }]
65
+ },
66
+ "responder.signature": {
67
+ value: "— Support ContractSpec",
68
+ description: "Email / response signature"
69
+ },
70
+ "responder.references.header": {
71
+ value: "Références :",
72
+ description: "Header for the references section"
73
+ },
74
+ "responder.references.sourceLabel": {
75
+ value: "Source {index}",
76
+ description: "Label for a numbered source reference",
77
+ placeholders: [{ name: "index", type: "number" }]
78
+ },
79
+ "responder.category.billing": {
80
+ value: "Je comprends que les problèmes de facturation peuvent être stressants, laissez-moi clarifier la situation.",
81
+ description: "Category intro for billing tickets"
82
+ },
83
+ "responder.category.technical": {
84
+ value: "Je vois que vous avez rencontré un problème technique. Voici ce qui s’est passé et comment le résoudre.",
85
+ description: "Category intro for technical tickets"
86
+ },
87
+ "responder.category.product": {
88
+ value: "Merci d’avoir partagé vos retours sur le produit. Voici les prochaines étapes.",
89
+ description: "Category intro for product tickets"
90
+ },
91
+ "responder.category.account": {
92
+ value: "L’accès au compte est essentiel, laissez-moi vous guider vers la résolution.",
93
+ description: "Category intro for account tickets"
94
+ },
95
+ "responder.category.compliance": {
96
+ value: "Les questions de conformité exigent de la précision. Consultez la réponse conforme aux politiques ci-dessous.",
97
+ description: "Category intro for compliance tickets"
98
+ },
99
+ "responder.category.other": {
100
+ value: "Voici ce que nous avons trouvé après examen de votre demande.",
101
+ description: "Category intro for uncategorized tickets"
102
+ },
103
+ "responder.subject.replyPrefix": {
104
+ value: "Re : {subject}",
105
+ description: "Reply subject line prefix",
106
+ placeholders: [{ name: "subject", type: "string" }]
107
+ },
108
+ "resolver.question.subjectLabel": {
109
+ value: "Sujet : {subject}",
110
+ description: "Subject label in resolver question context",
111
+ placeholders: [{ name: "subject", type: "string" }]
112
+ },
113
+ "resolver.question.channelLabel": {
114
+ value: "Canal : {channel}",
115
+ description: "Channel label in resolver question context",
116
+ placeholders: [{ name: "channel", type: "string" }]
117
+ },
118
+ "resolver.question.customerLabel": {
119
+ value: "Client : {name}",
120
+ description: "Customer label in resolver question context",
121
+ placeholders: [{ name: "name", type: "string" }]
122
+ },
123
+ "resolver.action.escalate": {
124
+ value: "Escalader pour révision humaine",
125
+ description: "Action label for escalation"
126
+ },
127
+ "resolver.action.respond": {
128
+ value: "Envoyer une réponse automatique",
129
+ description: "Action label for automated response"
130
+ },
131
+ "resolver.escalation.insufficientConfidence": {
132
+ value: "Confiance insuffisante ou références de connaissances manquantes",
133
+ description: "Escalation reason when confidence is too low"
134
+ },
135
+ "tool.classify.title": {
136
+ value: "support_classify_ticket",
137
+ description: "MCP tool title for ticket classification"
138
+ },
139
+ "tool.classify.description": {
140
+ value: "Classifier un ticket par priorité, sentiment et catégorie",
141
+ description: "MCP tool description for ticket classification"
142
+ },
143
+ "tool.resolve.title": {
144
+ value: "support_resolve_ticket",
145
+ description: "MCP tool title for ticket resolution"
146
+ },
147
+ "tool.resolve.description": {
148
+ value: "Générer une résolution fondée sur la base de connaissances pour un ticket",
149
+ description: "MCP tool description for ticket resolution"
150
+ },
151
+ "tool.draft.title": {
152
+ value: "support_draft_response",
153
+ description: "MCP tool title for response drafting"
154
+ },
155
+ "tool.draft.description": {
156
+ value: "Rédiger une réponse client basée sur la résolution et la classification",
157
+ description: "MCP tool description for response drafting"
158
+ },
159
+ "error.inputMustIncludeTicket": {
160
+ value: "L’entrée doit inclure un ticket",
161
+ description: "Error when input payload is missing the ticket field"
162
+ },
163
+ "error.ticketMissingId": {
164
+ value: "Le ticket n’a pas d’identifiant",
165
+ description: "Error when ticket object lacks an id"
166
+ },
167
+ "error.resolutionClassificationRequired": {
168
+ value: "la résolution et la classification sont requises",
169
+ description: "Error when draft endpoint is called without resolution and classification"
170
+ },
171
+ "feedback.noRecords": {
172
+ value: "Aucun retour enregistré pour le moment.",
173
+ description: "Placeholder when no feedback entries exist"
174
+ },
175
+ "feedback.status.escalated": {
176
+ value: "Escaladé",
177
+ description: "Status label for escalated tickets"
178
+ },
179
+ "feedback.status.autoResolved": {
180
+ value: "Résolu automatiquement",
181
+ description: "Status label for auto-resolved tickets"
182
+ },
183
+ "spec.instructionsAppendix": {
184
+ value: "Citez toujours les sources de connaissances du support et signalez les problèmes de conformité/facturation pour révision humaine en cas de doute.",
185
+ description: "Instructions appendix appended to agent spec"
186
+ }
187
+ }
188
+ });
189
+ export {
190
+ frMessages
191
+ };