@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.
- package/dist/bot/auto-responder.d.ts +2 -0
- package/dist/bot/auto-responder.js +678 -21
- package/dist/bot/feedback-loop.js +652 -2
- package/dist/bot/index.js +681 -23
- package/dist/browser/bot/auto-responder.js +678 -21
- package/dist/browser/bot/feedback-loop.js +652 -2
- package/dist/browser/bot/index.js +681 -23
- package/dist/browser/i18n/catalogs/en.js +191 -0
- package/dist/browser/i18n/catalogs/es.js +191 -0
- package/dist/browser/i18n/catalogs/fr.js +191 -0
- package/dist/browser/i18n/catalogs/index.js +571 -0
- package/dist/browser/i18n/index.js +670 -0
- package/dist/browser/i18n/keys.js +71 -0
- package/dist/browser/i18n/locale.js +13 -0
- package/dist/browser/i18n/messages.js +585 -0
- package/dist/browser/index.js +884 -58
- package/dist/browser/rag/index.js +662 -5
- package/dist/browser/rag/ticket-resolver.js +662 -5
- package/dist/browser/tickets/classifier.js +839 -30
- package/dist/browser/tickets/index.js +839 -30
- package/dist/i18n/catalogs/en.d.ts +8 -0
- package/dist/i18n/catalogs/en.js +192 -0
- package/dist/i18n/catalogs/es.d.ts +6 -0
- package/dist/i18n/catalogs/es.js +192 -0
- package/dist/i18n/catalogs/fr.d.ts +6 -0
- package/dist/i18n/catalogs/fr.js +192 -0
- package/dist/i18n/catalogs/index.d.ts +8 -0
- package/dist/i18n/catalogs/index.js +572 -0
- package/dist/i18n/i18n.test.d.ts +1 -0
- package/dist/i18n/index.d.ts +30 -0
- package/dist/i18n/index.js +671 -0
- package/dist/i18n/keys.d.ts +174 -0
- package/dist/i18n/keys.js +72 -0
- package/dist/i18n/locale.d.ts +8 -0
- package/dist/i18n/locale.js +14 -0
- package/dist/i18n/messages.d.ts +15 -0
- package/dist/i18n/messages.js +586 -0
- package/dist/index.js +884 -58
- package/dist/node/bot/auto-responder.js +678 -21
- package/dist/node/bot/feedback-loop.js +652 -2
- package/dist/node/bot/index.js +681 -23
- package/dist/node/i18n/catalogs/en.js +191 -0
- package/dist/node/i18n/catalogs/es.js +191 -0
- package/dist/node/i18n/catalogs/fr.js +191 -0
- package/dist/node/i18n/catalogs/index.js +571 -0
- package/dist/node/i18n/index.js +670 -0
- package/dist/node/i18n/keys.js +71 -0
- package/dist/node/i18n/locale.js +13 -0
- package/dist/node/i18n/messages.js +585 -0
- package/dist/node/index.js +884 -58
- package/dist/node/rag/index.js +662 -5
- package/dist/node/rag/ticket-resolver.js +662 -5
- package/dist/node/tickets/classifier.js +839 -30
- package/dist/node/tickets/index.js +839 -30
- package/dist/rag/index.js +662 -5
- package/dist/rag/ticket-resolver.d.ts +2 -0
- package/dist/rag/ticket-resolver.js +662 -5
- package/dist/tickets/classifier.d.ts +6 -0
- package/dist/tickets/classifier.js +839 -30
- package/dist/tickets/index.js +839 -30
- package/package.json +148 -8
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed message keys for the support-bot i18n system.
|
|
3
|
+
*
|
|
4
|
+
* All translatable strings in the package are referenced by these keys.
|
|
5
|
+
* Organized by domain: prompt, responder, resolver, tool, error, feedback, spec.
|
|
6
|
+
*
|
|
7
|
+
* @module i18n/keys
|
|
8
|
+
*/
|
|
9
|
+
export declare const PROMPT_KEYS: {
|
|
10
|
+
/** Classifier system prompt */
|
|
11
|
+
readonly 'prompt.classifier.system': "prompt.classifier.system";
|
|
12
|
+
/** Auto-responder system prompt */
|
|
13
|
+
readonly 'prompt.autoResponder.system': "prompt.autoResponder.system";
|
|
14
|
+
/** Auto-responder user prompt template */
|
|
15
|
+
readonly 'prompt.autoResponder.user': "prompt.autoResponder.user";
|
|
16
|
+
};
|
|
17
|
+
export declare const RESPONDER_KEYS: {
|
|
18
|
+
/** "We remain available if you need anything else." */
|
|
19
|
+
readonly 'responder.closing.friendly': "responder.closing.friendly";
|
|
20
|
+
/** "Please let us know if you require additional assistance." */
|
|
21
|
+
readonly 'responder.closing.formal': "responder.closing.formal";
|
|
22
|
+
/** "Hi {name}," */
|
|
23
|
+
readonly 'responder.greeting.named': "responder.greeting.named";
|
|
24
|
+
/** "Hi there," */
|
|
25
|
+
readonly 'responder.greeting.anonymous': "responder.greeting.anonymous";
|
|
26
|
+
/** 'Thanks for contacting us about "{subject}".' */
|
|
27
|
+
readonly 'responder.intro.thanks': "responder.intro.thanks";
|
|
28
|
+
/** "\u2014 ContractSpec Support" */
|
|
29
|
+
readonly 'responder.signature': "responder.signature";
|
|
30
|
+
/** "References:" */
|
|
31
|
+
readonly 'responder.references.header': "responder.references.header";
|
|
32
|
+
/** "Source {index}" */
|
|
33
|
+
readonly 'responder.references.sourceLabel': "responder.references.sourceLabel";
|
|
34
|
+
/** Category intro: billing */
|
|
35
|
+
readonly 'responder.category.billing': "responder.category.billing";
|
|
36
|
+
/** Category intro: technical */
|
|
37
|
+
readonly 'responder.category.technical': "responder.category.technical";
|
|
38
|
+
/** Category intro: product */
|
|
39
|
+
readonly 'responder.category.product': "responder.category.product";
|
|
40
|
+
/** Category intro: account */
|
|
41
|
+
readonly 'responder.category.account': "responder.category.account";
|
|
42
|
+
/** Category intro: compliance */
|
|
43
|
+
readonly 'responder.category.compliance': "responder.category.compliance";
|
|
44
|
+
/** Category intro: other */
|
|
45
|
+
readonly 'responder.category.other': "responder.category.other";
|
|
46
|
+
/** "Re: {subject}" */
|
|
47
|
+
readonly 'responder.subject.replyPrefix': "responder.subject.replyPrefix";
|
|
48
|
+
};
|
|
49
|
+
export declare const RESOLVER_KEYS: {
|
|
50
|
+
/** "Subject: {subject}" */
|
|
51
|
+
readonly 'resolver.question.subjectLabel': "resolver.question.subjectLabel";
|
|
52
|
+
/** "Channel: {channel}" */
|
|
53
|
+
readonly 'resolver.question.channelLabel': "resolver.question.channelLabel";
|
|
54
|
+
/** "Customer: {name}" */
|
|
55
|
+
readonly 'resolver.question.customerLabel': "resolver.question.customerLabel";
|
|
56
|
+
/** "Escalate for human review" */
|
|
57
|
+
readonly 'resolver.action.escalate': "resolver.action.escalate";
|
|
58
|
+
/** "Send automated response" */
|
|
59
|
+
readonly 'resolver.action.respond': "resolver.action.respond";
|
|
60
|
+
/** "Insufficient confidence or missing knowledge references" */
|
|
61
|
+
readonly 'resolver.escalation.insufficientConfidence': "resolver.escalation.insufficientConfidence";
|
|
62
|
+
};
|
|
63
|
+
export declare const TOOL_KEYS: {
|
|
64
|
+
/** "support_classify_ticket" */
|
|
65
|
+
readonly 'tool.classify.title': "tool.classify.title";
|
|
66
|
+
/** "Classify a ticket for priority, sentiment, and category" */
|
|
67
|
+
readonly 'tool.classify.description': "tool.classify.description";
|
|
68
|
+
/** "support_resolve_ticket" */
|
|
69
|
+
readonly 'tool.resolve.title': "tool.resolve.title";
|
|
70
|
+
/** "Generate a knowledge-grounded resolution for a ticket" */
|
|
71
|
+
readonly 'tool.resolve.description': "tool.resolve.description";
|
|
72
|
+
/** "support_draft_response" */
|
|
73
|
+
readonly 'tool.draft.title': "tool.draft.title";
|
|
74
|
+
/** "Draft a user-facing reply based on resolution + classification" */
|
|
75
|
+
readonly 'tool.draft.description': "tool.draft.description";
|
|
76
|
+
};
|
|
77
|
+
export declare const ERROR_KEYS: {
|
|
78
|
+
/** "Input must include ticket" */
|
|
79
|
+
readonly 'error.inputMustIncludeTicket': "error.inputMustIncludeTicket";
|
|
80
|
+
/** "Ticket is missing id" */
|
|
81
|
+
readonly 'error.ticketMissingId': "error.ticketMissingId";
|
|
82
|
+
/** "resolution and classification are required" */
|
|
83
|
+
readonly 'error.resolutionClassificationRequired': "error.resolutionClassificationRequired";
|
|
84
|
+
};
|
|
85
|
+
export declare const FEEDBACK_KEYS: {
|
|
86
|
+
/** "No feedback recorded yet." */
|
|
87
|
+
readonly 'feedback.noRecords': "feedback.noRecords";
|
|
88
|
+
/** "Escalated" */
|
|
89
|
+
readonly 'feedback.status.escalated': "feedback.status.escalated";
|
|
90
|
+
/** "Auto-resolved" */
|
|
91
|
+
readonly 'feedback.status.autoResolved': "feedback.status.autoResolved";
|
|
92
|
+
};
|
|
93
|
+
export declare const SPEC_KEYS: {
|
|
94
|
+
/** Instructions appendix for support-bot spec */
|
|
95
|
+
readonly 'spec.instructionsAppendix': "spec.instructionsAppendix";
|
|
96
|
+
};
|
|
97
|
+
export declare const I18N_KEYS: {
|
|
98
|
+
/** Instructions appendix for support-bot spec */
|
|
99
|
+
readonly 'spec.instructionsAppendix': "spec.instructionsAppendix";
|
|
100
|
+
/** "No feedback recorded yet." */
|
|
101
|
+
readonly 'feedback.noRecords': "feedback.noRecords";
|
|
102
|
+
/** "Escalated" */
|
|
103
|
+
readonly 'feedback.status.escalated': "feedback.status.escalated";
|
|
104
|
+
/** "Auto-resolved" */
|
|
105
|
+
readonly 'feedback.status.autoResolved': "feedback.status.autoResolved";
|
|
106
|
+
/** "Input must include ticket" */
|
|
107
|
+
readonly 'error.inputMustIncludeTicket': "error.inputMustIncludeTicket";
|
|
108
|
+
/** "Ticket is missing id" */
|
|
109
|
+
readonly 'error.ticketMissingId': "error.ticketMissingId";
|
|
110
|
+
/** "resolution and classification are required" */
|
|
111
|
+
readonly 'error.resolutionClassificationRequired': "error.resolutionClassificationRequired";
|
|
112
|
+
/** "support_classify_ticket" */
|
|
113
|
+
readonly 'tool.classify.title': "tool.classify.title";
|
|
114
|
+
/** "Classify a ticket for priority, sentiment, and category" */
|
|
115
|
+
readonly 'tool.classify.description': "tool.classify.description";
|
|
116
|
+
/** "support_resolve_ticket" */
|
|
117
|
+
readonly 'tool.resolve.title': "tool.resolve.title";
|
|
118
|
+
/** "Generate a knowledge-grounded resolution for a ticket" */
|
|
119
|
+
readonly 'tool.resolve.description': "tool.resolve.description";
|
|
120
|
+
/** "support_draft_response" */
|
|
121
|
+
readonly 'tool.draft.title': "tool.draft.title";
|
|
122
|
+
/** "Draft a user-facing reply based on resolution + classification" */
|
|
123
|
+
readonly 'tool.draft.description': "tool.draft.description";
|
|
124
|
+
/** "Subject: {subject}" */
|
|
125
|
+
readonly 'resolver.question.subjectLabel': "resolver.question.subjectLabel";
|
|
126
|
+
/** "Channel: {channel}" */
|
|
127
|
+
readonly 'resolver.question.channelLabel': "resolver.question.channelLabel";
|
|
128
|
+
/** "Customer: {name}" */
|
|
129
|
+
readonly 'resolver.question.customerLabel': "resolver.question.customerLabel";
|
|
130
|
+
/** "Escalate for human review" */
|
|
131
|
+
readonly 'resolver.action.escalate': "resolver.action.escalate";
|
|
132
|
+
/** "Send automated response" */
|
|
133
|
+
readonly 'resolver.action.respond': "resolver.action.respond";
|
|
134
|
+
/** "Insufficient confidence or missing knowledge references" */
|
|
135
|
+
readonly 'resolver.escalation.insufficientConfidence': "resolver.escalation.insufficientConfidence";
|
|
136
|
+
/** "We remain available if you need anything else." */
|
|
137
|
+
readonly 'responder.closing.friendly': "responder.closing.friendly";
|
|
138
|
+
/** "Please let us know if you require additional assistance." */
|
|
139
|
+
readonly 'responder.closing.formal': "responder.closing.formal";
|
|
140
|
+
/** "Hi {name}," */
|
|
141
|
+
readonly 'responder.greeting.named': "responder.greeting.named";
|
|
142
|
+
/** "Hi there," */
|
|
143
|
+
readonly 'responder.greeting.anonymous': "responder.greeting.anonymous";
|
|
144
|
+
/** 'Thanks for contacting us about "{subject}".' */
|
|
145
|
+
readonly 'responder.intro.thanks': "responder.intro.thanks";
|
|
146
|
+
/** "\u2014 ContractSpec Support" */
|
|
147
|
+
readonly 'responder.signature': "responder.signature";
|
|
148
|
+
/** "References:" */
|
|
149
|
+
readonly 'responder.references.header': "responder.references.header";
|
|
150
|
+
/** "Source {index}" */
|
|
151
|
+
readonly 'responder.references.sourceLabel': "responder.references.sourceLabel";
|
|
152
|
+
/** Category intro: billing */
|
|
153
|
+
readonly 'responder.category.billing': "responder.category.billing";
|
|
154
|
+
/** Category intro: technical */
|
|
155
|
+
readonly 'responder.category.technical': "responder.category.technical";
|
|
156
|
+
/** Category intro: product */
|
|
157
|
+
readonly 'responder.category.product': "responder.category.product";
|
|
158
|
+
/** Category intro: account */
|
|
159
|
+
readonly 'responder.category.account': "responder.category.account";
|
|
160
|
+
/** Category intro: compliance */
|
|
161
|
+
readonly 'responder.category.compliance': "responder.category.compliance";
|
|
162
|
+
/** Category intro: other */
|
|
163
|
+
readonly 'responder.category.other': "responder.category.other";
|
|
164
|
+
/** "Re: {subject}" */
|
|
165
|
+
readonly 'responder.subject.replyPrefix': "responder.subject.replyPrefix";
|
|
166
|
+
/** Classifier system prompt */
|
|
167
|
+
readonly 'prompt.classifier.system': "prompt.classifier.system";
|
|
168
|
+
/** Auto-responder system prompt */
|
|
169
|
+
readonly 'prompt.autoResponder.system': "prompt.autoResponder.system";
|
|
170
|
+
/** Auto-responder user prompt template */
|
|
171
|
+
readonly 'prompt.autoResponder.user': "prompt.autoResponder.user";
|
|
172
|
+
};
|
|
173
|
+
/** Union type of all valid support-bot i18n keys */
|
|
174
|
+
export type SupportBotMessageKey = keyof typeof I18N_KEYS;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/i18n/keys.ts
|
|
3
|
+
var PROMPT_KEYS = {
|
|
4
|
+
"prompt.classifier.system": "prompt.classifier.system",
|
|
5
|
+
"prompt.autoResponder.system": "prompt.autoResponder.system",
|
|
6
|
+
"prompt.autoResponder.user": "prompt.autoResponder.user"
|
|
7
|
+
};
|
|
8
|
+
var RESPONDER_KEYS = {
|
|
9
|
+
"responder.closing.friendly": "responder.closing.friendly",
|
|
10
|
+
"responder.closing.formal": "responder.closing.formal",
|
|
11
|
+
"responder.greeting.named": "responder.greeting.named",
|
|
12
|
+
"responder.greeting.anonymous": "responder.greeting.anonymous",
|
|
13
|
+
"responder.intro.thanks": "responder.intro.thanks",
|
|
14
|
+
"responder.signature": "responder.signature",
|
|
15
|
+
"responder.references.header": "responder.references.header",
|
|
16
|
+
"responder.references.sourceLabel": "responder.references.sourceLabel",
|
|
17
|
+
"responder.category.billing": "responder.category.billing",
|
|
18
|
+
"responder.category.technical": "responder.category.technical",
|
|
19
|
+
"responder.category.product": "responder.category.product",
|
|
20
|
+
"responder.category.account": "responder.category.account",
|
|
21
|
+
"responder.category.compliance": "responder.category.compliance",
|
|
22
|
+
"responder.category.other": "responder.category.other",
|
|
23
|
+
"responder.subject.replyPrefix": "responder.subject.replyPrefix"
|
|
24
|
+
};
|
|
25
|
+
var RESOLVER_KEYS = {
|
|
26
|
+
"resolver.question.subjectLabel": "resolver.question.subjectLabel",
|
|
27
|
+
"resolver.question.channelLabel": "resolver.question.channelLabel",
|
|
28
|
+
"resolver.question.customerLabel": "resolver.question.customerLabel",
|
|
29
|
+
"resolver.action.escalate": "resolver.action.escalate",
|
|
30
|
+
"resolver.action.respond": "resolver.action.respond",
|
|
31
|
+
"resolver.escalation.insufficientConfidence": "resolver.escalation.insufficientConfidence"
|
|
32
|
+
};
|
|
33
|
+
var TOOL_KEYS = {
|
|
34
|
+
"tool.classify.title": "tool.classify.title",
|
|
35
|
+
"tool.classify.description": "tool.classify.description",
|
|
36
|
+
"tool.resolve.title": "tool.resolve.title",
|
|
37
|
+
"tool.resolve.description": "tool.resolve.description",
|
|
38
|
+
"tool.draft.title": "tool.draft.title",
|
|
39
|
+
"tool.draft.description": "tool.draft.description"
|
|
40
|
+
};
|
|
41
|
+
var ERROR_KEYS = {
|
|
42
|
+
"error.inputMustIncludeTicket": "error.inputMustIncludeTicket",
|
|
43
|
+
"error.ticketMissingId": "error.ticketMissingId",
|
|
44
|
+
"error.resolutionClassificationRequired": "error.resolutionClassificationRequired"
|
|
45
|
+
};
|
|
46
|
+
var FEEDBACK_KEYS = {
|
|
47
|
+
"feedback.noRecords": "feedback.noRecords",
|
|
48
|
+
"feedback.status.escalated": "feedback.status.escalated",
|
|
49
|
+
"feedback.status.autoResolved": "feedback.status.autoResolved"
|
|
50
|
+
};
|
|
51
|
+
var SPEC_KEYS = {
|
|
52
|
+
"spec.instructionsAppendix": "spec.instructionsAppendix"
|
|
53
|
+
};
|
|
54
|
+
var I18N_KEYS = {
|
|
55
|
+
...PROMPT_KEYS,
|
|
56
|
+
...RESPONDER_KEYS,
|
|
57
|
+
...RESOLVER_KEYS,
|
|
58
|
+
...TOOL_KEYS,
|
|
59
|
+
...ERROR_KEYS,
|
|
60
|
+
...FEEDBACK_KEYS,
|
|
61
|
+
...SPEC_KEYS
|
|
62
|
+
};
|
|
63
|
+
export {
|
|
64
|
+
TOOL_KEYS,
|
|
65
|
+
SPEC_KEYS,
|
|
66
|
+
RESPONDER_KEYS,
|
|
67
|
+
RESOLVER_KEYS,
|
|
68
|
+
PROMPT_KEYS,
|
|
69
|
+
I18N_KEYS,
|
|
70
|
+
FEEDBACK_KEYS,
|
|
71
|
+
ERROR_KEYS
|
|
72
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale utilities for the support-bot package.
|
|
3
|
+
*
|
|
4
|
+
* Re-exported from the shared i18n factory in contracts-spec.
|
|
5
|
+
*
|
|
6
|
+
* @module i18n/locale
|
|
7
|
+
*/
|
|
8
|
+
export { DEFAULT_LOCALE, SUPPORTED_LOCALES, resolveLocale, isSupportedLocale, type SupportedLocale, } from '@contractspec/lib.contracts-spec/translations';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/i18n/locale.ts
|
|
3
|
+
import {
|
|
4
|
+
DEFAULT_LOCALE,
|
|
5
|
+
SUPPORTED_LOCALES,
|
|
6
|
+
resolveLocale,
|
|
7
|
+
isSupportedLocale
|
|
8
|
+
} from "@contractspec/lib.contracts-spec/translations";
|
|
9
|
+
export {
|
|
10
|
+
resolveLocale,
|
|
11
|
+
isSupportedLocale,
|
|
12
|
+
SUPPORTED_LOCALES,
|
|
13
|
+
DEFAULT_LOCALE
|
|
14
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Translation helper for the support-bot package.
|
|
3
|
+
* @module i18n/messages
|
|
4
|
+
*/
|
|
5
|
+
import { type I18nInstance } from '@contractspec/lib.contracts-spec/translations';
|
|
6
|
+
import type { SupportBotMessageKey } from './keys';
|
|
7
|
+
export { interpolate } from '@contractspec/lib.contracts-spec/translations';
|
|
8
|
+
/** I18n instance type for the support-bot package. */
|
|
9
|
+
export type SupportBotI18n = I18nInstance<SupportBotMessageKey>;
|
|
10
|
+
/** Create an i18n instance for a given locale. */
|
|
11
|
+
export declare const createSupportBotI18n: (optionsLocale?: string, runtimeLocale?: string) => I18nInstance<"prompt.classifier.system" | "prompt.autoResponder.system" | "prompt.autoResponder.user" | "responder.closing.friendly" | "responder.closing.formal" | "responder.greeting.named" | "responder.greeting.anonymous" | "responder.intro.thanks" | "responder.signature" | "responder.references.header" | "responder.references.sourceLabel" | "responder.category.billing" | "responder.category.technical" | "responder.category.product" | "responder.category.account" | "responder.category.compliance" | "responder.category.other" | "responder.subject.replyPrefix" | "resolver.question.subjectLabel" | "resolver.question.channelLabel" | "resolver.question.customerLabel" | "resolver.action.escalate" | "resolver.action.respond" | "resolver.escalation.insufficientConfidence" | "tool.classify.title" | "tool.classify.description" | "tool.resolve.title" | "tool.resolve.description" | "tool.draft.title" | "tool.draft.description" | "error.inputMustIncludeTicket" | "error.ticketMissingId" | "error.resolutionClassificationRequired" | "feedback.noRecords" | "feedback.status.escalated" | "feedback.status.autoResolved" | "spec.instructionsAppendix">;
|
|
12
|
+
/** Create a default (English) i18n instance. */
|
|
13
|
+
export declare const getDefaultI18n: () => I18nInstance<"prompt.classifier.system" | "prompt.autoResponder.system" | "prompt.autoResponder.user" | "responder.closing.friendly" | "responder.closing.formal" | "responder.greeting.named" | "responder.greeting.anonymous" | "responder.intro.thanks" | "responder.signature" | "responder.references.header" | "responder.references.sourceLabel" | "responder.category.billing" | "responder.category.technical" | "responder.category.product" | "responder.category.account" | "responder.category.compliance" | "responder.category.other" | "responder.subject.replyPrefix" | "resolver.question.subjectLabel" | "resolver.question.channelLabel" | "resolver.question.customerLabel" | "resolver.action.escalate" | "resolver.action.respond" | "resolver.escalation.insufficientConfidence" | "tool.classify.title" | "tool.classify.description" | "tool.resolve.title" | "tool.resolve.description" | "tool.draft.title" | "tool.draft.description" | "error.inputMustIncludeTicket" | "error.ticketMissingId" | "error.resolutionClassificationRequired" | "feedback.noRecords" | "feedback.status.escalated" | "feedback.status.autoResolved" | "spec.instructionsAppendix">;
|
|
14
|
+
/** Reset the shared registry (useful for testing). @internal */
|
|
15
|
+
export declare const resetI18nRegistry: () => void;
|