@autonoma-io/a6s 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +200 -0
- package/bin/binaries/a6s-darwin-amd64 +0 -0
- package/bin/binaries/a6s-darwin-arm64 +0 -0
- package/bin/binaries/a6s-linux-amd64 +0 -0
- package/bin/binaries/a6s-linux-arm64 +0 -0
- package/bin/binaries/a6s-win32-x64.exe +0 -0
- package/dist/commands/ai-learning-demo.d.ts +3 -0
- package/dist/commands/ai-learning-demo.d.ts.map +1 -0
- package/dist/commands/ai-learning-demo.js +176 -0
- package/dist/commands/ai-learning-demo.js.map +1 -0
- package/dist/commands/auth.d.ts +33 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +603 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/consent/consent.d.ts +74 -0
- package/dist/consent/consent.d.ts.map +1 -0
- package/dist/consent/consent.js +184 -0
- package/dist/consent/consent.js.map +1 -0
- package/dist/consent/disclosure.d.ts +26 -0
- package/dist/consent/disclosure.d.ts.map +1 -0
- package/dist/consent/disclosure.js +170 -0
- package/dist/consent/disclosure.js.map +1 -0
- package/dist/consent/ignore.d.ts +50 -0
- package/dist/consent/ignore.d.ts.map +1 -0
- package/dist/consent/ignore.js +277 -0
- package/dist/consent/ignore.js.map +1 -0
- package/dist/consent/index.d.ts +4 -0
- package/dist/consent/index.d.ts.map +1 -0
- package/dist/consent/index.js +23 -0
- package/dist/consent/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +390 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +19 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +367 -0
- package/dist/interactive.js.map +1 -0
- package/dist/modules/ab-testing.d.ts +16 -0
- package/dist/modules/ab-testing.d.ts.map +1 -0
- package/dist/modules/ab-testing.js +375 -0
- package/dist/modules/ab-testing.js.map +1 -0
- package/dist/modules/ai-orchestration.d.ts +70 -0
- package/dist/modules/ai-orchestration.d.ts.map +1 -0
- package/dist/modules/ai-orchestration.js +546 -0
- package/dist/modules/ai-orchestration.js.map +1 -0
- package/dist/modules/auth-access-control.d.ts +118 -0
- package/dist/modules/auth-access-control.d.ts.map +1 -0
- package/dist/modules/auth-access-control.js +832 -0
- package/dist/modules/auth-access-control.js.map +1 -0
- package/dist/modules/campaign.d.ts +20 -0
- package/dist/modules/campaign.d.ts.map +1 -0
- package/dist/modules/campaign.js +301 -0
- package/dist/modules/campaign.js.map +1 -0
- package/dist/modules/database.d.ts +14 -0
- package/dist/modules/database.d.ts.map +1 -0
- package/dist/modules/database.js +253 -0
- package/dist/modules/database.js.map +1 -0
- package/dist/modules/deployment.d.ts +17 -0
- package/dist/modules/deployment.d.ts.map +1 -0
- package/dist/modules/deployment.js +201 -0
- package/dist/modules/deployment.js.map +1 -0
- package/dist/modules/edge-computing.d.ts +130 -0
- package/dist/modules/edge-computing.d.ts.map +1 -0
- package/dist/modules/edge-computing.js +672 -0
- package/dist/modules/edge-computing.js.map +1 -0
- package/dist/modules/load-testing.d.ts +21 -0
- package/dist/modules/load-testing.d.ts.map +1 -0
- package/dist/modules/load-testing.js +372 -0
- package/dist/modules/load-testing.js.map +1 -0
- package/dist/modules/monitoring.d.ts +18 -0
- package/dist/modules/monitoring.d.ts.map +1 -0
- package/dist/modules/monitoring.js +375 -0
- package/dist/modules/monitoring.js.map +1 -0
- package/dist/modules/onboarding.d.ts +20 -0
- package/dist/modules/onboarding.d.ts.map +1 -0
- package/dist/modules/onboarding.js +455 -0
- package/dist/modules/onboarding.js.map +1 -0
- package/dist/nlp/memory.d.ts +43 -0
- package/dist/nlp/memory.d.ts.map +1 -0
- package/dist/nlp/memory.js +205 -0
- package/dist/nlp/memory.js.map +1 -0
- package/dist/nlp/processor.d.ts +29 -0
- package/dist/nlp/processor.d.ts.map +1 -0
- package/dist/nlp/processor.js +321 -0
- package/dist/nlp/processor.js.map +1 -0
- package/dist/utils/db-client.d.ts +35 -0
- package/dist/utils/db-client.d.ts.map +1 -0
- package/dist/utils/db-client.js +132 -0
- package/dist/utils/db-client.js.map +1 -0
- package/package.json +97 -0
- package/scripts/chmod-binaries.js +33 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConversationMemory = void 0;
|
|
4
|
+
class ConversationMemory {
|
|
5
|
+
messages = [];
|
|
6
|
+
context;
|
|
7
|
+
maxMessages = 50;
|
|
8
|
+
userPreferences = {};
|
|
9
|
+
learnedPatterns = new Map();
|
|
10
|
+
constructor() {
|
|
11
|
+
this.context = {
|
|
12
|
+
conversationId: this.generateConversationId(),
|
|
13
|
+
userPreferences: this.loadUserPreferences()
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
addMessage(role, content, additionalContext) {
|
|
17
|
+
const message = {
|
|
18
|
+
role,
|
|
19
|
+
content,
|
|
20
|
+
timestamp: new Date(),
|
|
21
|
+
context: { ...this.context, ...additionalContext }
|
|
22
|
+
};
|
|
23
|
+
this.messages.push(message);
|
|
24
|
+
// Update context based on message
|
|
25
|
+
this.updateContext(message);
|
|
26
|
+
// Trim old messages if needed
|
|
27
|
+
if (this.messages.length > this.maxMessages) {
|
|
28
|
+
this.messages = this.messages.slice(-this.maxMessages);
|
|
29
|
+
}
|
|
30
|
+
// Learn from patterns
|
|
31
|
+
this.learnFromMessage(message);
|
|
32
|
+
}
|
|
33
|
+
getContext() {
|
|
34
|
+
return this.context;
|
|
35
|
+
}
|
|
36
|
+
getRecentMessages(count = 5) {
|
|
37
|
+
return this.messages.slice(-count);
|
|
38
|
+
}
|
|
39
|
+
getFullConversation() {
|
|
40
|
+
return [...this.messages];
|
|
41
|
+
}
|
|
42
|
+
updateContext(message) {
|
|
43
|
+
// Extract and update context from user messages
|
|
44
|
+
if (message.role === 'user') {
|
|
45
|
+
const content = message.content.toLowerCase();
|
|
46
|
+
// Update last action
|
|
47
|
+
if (content.includes('deploy')) {
|
|
48
|
+
this.context.lastAction = 'deploy';
|
|
49
|
+
}
|
|
50
|
+
else if (content.includes('rollback')) {
|
|
51
|
+
this.context.lastAction = 'rollback';
|
|
52
|
+
}
|
|
53
|
+
else if (content.includes('send') || content.includes('email')) {
|
|
54
|
+
this.context.lastAction = 'campaign';
|
|
55
|
+
}
|
|
56
|
+
else if (content.includes('fix')) {
|
|
57
|
+
this.context.lastAction = 'fix';
|
|
58
|
+
}
|
|
59
|
+
else if (content.includes('check') || content.includes('show')) {
|
|
60
|
+
this.context.lastAction = 'check';
|
|
61
|
+
}
|
|
62
|
+
// Update last target
|
|
63
|
+
if (content.includes('production')) {
|
|
64
|
+
this.context.lastTarget = 'production';
|
|
65
|
+
}
|
|
66
|
+
else if (content.includes('staging')) {
|
|
67
|
+
this.context.lastTarget = 'staging';
|
|
68
|
+
}
|
|
69
|
+
else if (content.includes('database')) {
|
|
70
|
+
this.context.lastTarget = 'database';
|
|
71
|
+
}
|
|
72
|
+
else if (content.includes('email') || content.includes('campaign')) {
|
|
73
|
+
this.context.lastTarget = 'email';
|
|
74
|
+
}
|
|
75
|
+
// Extract tier if mentioned
|
|
76
|
+
const tierMatch = content.match(/tier\s*(\d)/);
|
|
77
|
+
if (tierMatch) {
|
|
78
|
+
this.context.lastTarget = `tier-${tierMatch[1]}`;
|
|
79
|
+
}
|
|
80
|
+
this.context.lastTimestamp = message.timestamp;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
learnFromMessage(message) {
|
|
84
|
+
if (message.role === 'user') {
|
|
85
|
+
const content = message.content.toLowerCase();
|
|
86
|
+
// Learn deployment preferences
|
|
87
|
+
if (content.includes('deploy') && content.includes('staging')) {
|
|
88
|
+
this.userPreferences.deploymentEnvironment = 'staging';
|
|
89
|
+
}
|
|
90
|
+
else if (content.includes('deploy') && content.includes('production')) {
|
|
91
|
+
this.userPreferences.deploymentEnvironment = 'production';
|
|
92
|
+
}
|
|
93
|
+
// Learn testing preferences
|
|
94
|
+
if (content.includes('test') || content.includes('dry run')) {
|
|
95
|
+
this.userPreferences.alwaysTest = true;
|
|
96
|
+
}
|
|
97
|
+
// Learn verbosity preferences
|
|
98
|
+
if (content.includes('verbose') || content.includes('detail')) {
|
|
99
|
+
this.userPreferences.verboseOutput = true;
|
|
100
|
+
}
|
|
101
|
+
// Store learned patterns
|
|
102
|
+
const nextMessage = this.messages[this.messages.indexOf(message) + 1];
|
|
103
|
+
if (nextMessage && nextMessage.role === 'system') {
|
|
104
|
+
this.learnedPatterns.set(content, nextMessage.content);
|
|
105
|
+
}
|
|
106
|
+
this.saveUserPreferences();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Reference resolution for pronouns
|
|
110
|
+
resolveReference(reference) {
|
|
111
|
+
const lowerRef = reference.toLowerCase();
|
|
112
|
+
if (lowerRef === 'it' || lowerRef === 'that') {
|
|
113
|
+
return this.context.lastTarget;
|
|
114
|
+
}
|
|
115
|
+
if (lowerRef === 'them') {
|
|
116
|
+
// Look for recent plural references
|
|
117
|
+
for (let i = this.messages.length - 1; i >= 0; i--) {
|
|
118
|
+
const msg = this.messages[i];
|
|
119
|
+
if (msg.content.includes('contacts') || msg.content.includes('users')) {
|
|
120
|
+
return 'contacts';
|
|
121
|
+
}
|
|
122
|
+
if (msg.content.includes('emails')) {
|
|
123
|
+
return 'emails';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (lowerRef === 'there' || lowerRef === 'here') {
|
|
128
|
+
return this.context.lastTarget;
|
|
129
|
+
}
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
// Get conversation summary for context
|
|
133
|
+
getSummary() {
|
|
134
|
+
const recentMessages = this.getRecentMessages(10);
|
|
135
|
+
const actions = recentMessages
|
|
136
|
+
.filter(m => m.role === 'user')
|
|
137
|
+
.map(m => {
|
|
138
|
+
const content = m.content.toLowerCase();
|
|
139
|
+
if (content.includes('deploy'))
|
|
140
|
+
return 'deployment';
|
|
141
|
+
if (content.includes('email'))
|
|
142
|
+
return 'email campaign';
|
|
143
|
+
if (content.includes('fix'))
|
|
144
|
+
return 'troubleshooting';
|
|
145
|
+
if (content.includes('check'))
|
|
146
|
+
return 'monitoring';
|
|
147
|
+
return 'query';
|
|
148
|
+
});
|
|
149
|
+
const uniqueActions = [...new Set(actions)];
|
|
150
|
+
return `Recent activities: ${uniqueActions.join(', ')}`;
|
|
151
|
+
}
|
|
152
|
+
// Predict next action based on patterns
|
|
153
|
+
predictNextAction() {
|
|
154
|
+
const predictions = [];
|
|
155
|
+
const lastAction = this.context.lastAction;
|
|
156
|
+
if (lastAction === 'deploy') {
|
|
157
|
+
predictions.push('check deployment status', 'view logs', 'rollback if needed');
|
|
158
|
+
}
|
|
159
|
+
else if (lastAction === 'campaign') {
|
|
160
|
+
predictions.push('check engagement metrics', 'schedule follow-up', 'segment by response');
|
|
161
|
+
}
|
|
162
|
+
else if (lastAction === 'fix') {
|
|
163
|
+
predictions.push('verify fix worked', 'run tests', 'check logs');
|
|
164
|
+
}
|
|
165
|
+
else if (lastAction === 'check') {
|
|
166
|
+
predictions.push('fix issues found', 'generate report', 'set up alerts');
|
|
167
|
+
}
|
|
168
|
+
// Add learned patterns
|
|
169
|
+
const lastUserMessage = this.messages.filter(m => m.role === 'user').pop();
|
|
170
|
+
if (lastUserMessage) {
|
|
171
|
+
const pattern = this.learnedPatterns.get(lastUserMessage.content.toLowerCase());
|
|
172
|
+
if (pattern) {
|
|
173
|
+
predictions.unshift(pattern);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return predictions.slice(0, 3);
|
|
177
|
+
}
|
|
178
|
+
// Clear conversation but keep preferences
|
|
179
|
+
clearConversation() {
|
|
180
|
+
this.messages = [];
|
|
181
|
+
this.context = {
|
|
182
|
+
conversationId: this.generateConversationId(),
|
|
183
|
+
userPreferences: this.userPreferences
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
generateConversationId() {
|
|
187
|
+
return `conv_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
188
|
+
}
|
|
189
|
+
loadUserPreferences() {
|
|
190
|
+
// In production, load from persistent storage
|
|
191
|
+
// For now, return defaults
|
|
192
|
+
return {
|
|
193
|
+
deploymentEnvironment: 'production',
|
|
194
|
+
alwaysTest: false,
|
|
195
|
+
verboseOutput: false,
|
|
196
|
+
autoConfirm: false
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
saveUserPreferences() {
|
|
200
|
+
// In production, save to persistent storage
|
|
201
|
+
console.log('User preferences updated:', this.userPreferences);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.ConversationMemory = ConversationMemory;
|
|
205
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/nlp/memory.ts"],"names":[],"mappings":";;;AAwBA,MAAa,kBAAkB;IACrB,QAAQ,GAAc,EAAE,CAAC;IACzB,OAAO,CAAsB;IAC7B,WAAW,GAAG,EAAE,CAAC;IACjB,eAAe,GAAoB,EAAE,CAAC;IACtC,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;IAEzD;QACE,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAE;YAC7C,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAqB,EAAE,OAAe,EAAE,iBAAgD;QACjG,MAAM,OAAO,GAAY;YACvB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,iBAAiB,EAAE;SACnD,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,kCAAkC;QAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,8BAA8B;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,QAAgB,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAEO,aAAa,CAAC,OAAgB;QACpC,gDAAgD;QAChD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAE9C,qBAAqB;YACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC;YACrC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;YACpC,CAAC;YAED,qBAAqB;YACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC;YACzC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YACtC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;YACpC,CAAC;YAED,4BAA4B;YAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAgB;QACvC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAE9C,+BAA+B;YAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,SAAS,CAAC;YACzD,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxE,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,YAAY,CAAC;YAC5D,CAAC;YAED,4BAA4B;YAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;YACzC,CAAC;YAED,8BAA8B;YAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC;YAC5C,CAAC;YAED,yBAAyB;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,gBAAgB,CAAC,SAAiB;QAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,oCAAoC;YACpC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtE,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uCAAuC;IACvC,UAAU;QACR,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,cAAc;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,OAAO,YAAY,CAAC;YACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,iBAAiB,CAAC;YACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,YAAY,CAAC;YACnD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QAEL,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,OAAO,sBAAsB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,wCAAwC;IACxC,iBAAiB;QACf,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAE3C,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,WAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QAC5F,CAAC;aAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAC3E,CAAC;QAED,uBAAuB;QACvB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,IAAI,OAAO,EAAE,CAAC;gBACZ,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,0CAA0C;IAC1C,iBAAiB;QACf,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAE;YAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC5B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAEO,mBAAmB;QACzB,8CAA8C;QAC9C,2BAA2B;QAC3B,OAAO;YACL,qBAAqB,EAAE,YAAY;YACnC,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC;CACF;AA3ND,gDA2NC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ConversationContext } from './memory';
|
|
2
|
+
interface Intent {
|
|
3
|
+
action: string;
|
|
4
|
+
target: string;
|
|
5
|
+
parameters: string[];
|
|
6
|
+
confidence: number;
|
|
7
|
+
originalQuery: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class NaturalLanguageProcessor {
|
|
10
|
+
private tokenizer;
|
|
11
|
+
private classifier;
|
|
12
|
+
private actionPatterns;
|
|
13
|
+
constructor();
|
|
14
|
+
private initializeClassifier;
|
|
15
|
+
private initializePatterns;
|
|
16
|
+
process(query: string, context?: ConversationContext): Promise<Intent>;
|
|
17
|
+
private extractAction;
|
|
18
|
+
private extractTarget;
|
|
19
|
+
private extractParameters;
|
|
20
|
+
private applyContext;
|
|
21
|
+
processWithClarification(query: string, context?: ConversationContext): Promise<{
|
|
22
|
+
intent: Intent;
|
|
23
|
+
needsClarification: boolean;
|
|
24
|
+
clarificationOptions?: string[];
|
|
25
|
+
}>;
|
|
26
|
+
learnFromCorrection(originalQuery: string, correctIntent: Intent): void;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../src/nlp/processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,cAAc,CAAyB;;IAS/C,OAAO,CAAC,oBAAoB;IAoD5B,OAAO,CAAC,kBAAkB;IAgDpB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB5E,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,YAAY;IAkCd,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QACpF,MAAM,EAAE,MAAM,CAAC;QACf,kBAAkB,EAAE,OAAO,CAAC;QAC5B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;IA+CF,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CASjE"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NaturalLanguageProcessor = void 0;
|
|
7
|
+
const natural_1 = __importDefault(require("natural"));
|
|
8
|
+
const compromise_1 = __importDefault(require("compromise"));
|
|
9
|
+
class NaturalLanguageProcessor {
|
|
10
|
+
tokenizer;
|
|
11
|
+
classifier;
|
|
12
|
+
actionPatterns;
|
|
13
|
+
constructor() {
|
|
14
|
+
this.tokenizer = new natural_1.default.WordTokenizer();
|
|
15
|
+
this.classifier = new natural_1.default.BayesClassifier();
|
|
16
|
+
this.initializeClassifier();
|
|
17
|
+
this.initializePatterns();
|
|
18
|
+
}
|
|
19
|
+
initializeClassifier() {
|
|
20
|
+
// Deployment intents
|
|
21
|
+
this.classifier.addDocument('deploy the latest changes', 'deploy');
|
|
22
|
+
this.classifier.addDocument('deploy to production', 'deploy');
|
|
23
|
+
this.classifier.addDocument('push changes to prod', 'deploy');
|
|
24
|
+
this.classifier.addDocument('rollback deployment', 'rollback');
|
|
25
|
+
this.classifier.addDocument('rollback to yesterday', 'rollback');
|
|
26
|
+
this.classifier.addDocument('undo last deployment', 'rollback');
|
|
27
|
+
// Email campaign intents
|
|
28
|
+
this.classifier.addDocument('send email campaign', 'campaign');
|
|
29
|
+
this.classifier.addDocument('send emails to tier 1', 'campaign');
|
|
30
|
+
this.classifier.addDocument('email tier 2 contacts', 'campaign');
|
|
31
|
+
this.classifier.addDocument('check email engagement', 'engagement');
|
|
32
|
+
this.classifier.addDocument('show engagement metrics', 'engagement');
|
|
33
|
+
this.classifier.addDocument('how are emails performing', 'engagement');
|
|
34
|
+
// Database intents
|
|
35
|
+
this.classifier.addDocument('fix ssl issue', 'fix-ssl');
|
|
36
|
+
this.classifier.addDocument('fix database connection', 'fix-ssl');
|
|
37
|
+
this.classifier.addDocument('run migration', 'migrate');
|
|
38
|
+
this.classifier.addDocument('execute sql query', 'query');
|
|
39
|
+
this.classifier.addDocument('backup database', 'backup');
|
|
40
|
+
// Monitoring intents
|
|
41
|
+
this.classifier.addDocument('show me errors', 'logs-error');
|
|
42
|
+
this.classifier.addDocument('why did deployment fail', 'logs-error');
|
|
43
|
+
this.classifier.addDocument('check system health', 'health');
|
|
44
|
+
this.classifier.addDocument('show alerts', 'alerts');
|
|
45
|
+
this.classifier.addDocument('view logs', 'logs');
|
|
46
|
+
// Load testing intents (Beta)
|
|
47
|
+
this.classifier.addDocument('simulate 1000 users', 'load-test');
|
|
48
|
+
this.classifier.addDocument('run load test', 'load-test');
|
|
49
|
+
this.classifier.addDocument('stress test the api', 'load-test');
|
|
50
|
+
this.classifier.addDocument('test campaign at scale', 'campaign-load');
|
|
51
|
+
// A/B testing intents (Beta)
|
|
52
|
+
this.classifier.addDocument('create ab test', 'ab-create');
|
|
53
|
+
this.classifier.addDocument('set up experiment', 'ab-create');
|
|
54
|
+
this.classifier.addDocument('show experiment metrics', 'ab-metrics');
|
|
55
|
+
this.classifier.addDocument('end experiment', 'ab-conclude');
|
|
56
|
+
// Onboarding intents (Beta)
|
|
57
|
+
this.classifier.addDocument('onboard new customer', 'onboard');
|
|
58
|
+
this.classifier.addDocument('provision organization', 'provision');
|
|
59
|
+
this.classifier.addDocument('send invitation', 'invite');
|
|
60
|
+
this.classifier.addDocument('validate setup', 'validate');
|
|
61
|
+
this.classifier.train();
|
|
62
|
+
}
|
|
63
|
+
initializePatterns() {
|
|
64
|
+
this.actionPatterns = new Map([
|
|
65
|
+
['deploy', [
|
|
66
|
+
/deploy/i,
|
|
67
|
+
/push/i,
|
|
68
|
+
/release/i,
|
|
69
|
+
/ship/i
|
|
70
|
+
]],
|
|
71
|
+
['rollback', [
|
|
72
|
+
/rollback/i,
|
|
73
|
+
/revert/i,
|
|
74
|
+
/undo/i,
|
|
75
|
+
/go back/i
|
|
76
|
+
]],
|
|
77
|
+
['send', [
|
|
78
|
+
/send/i,
|
|
79
|
+
/email/i,
|
|
80
|
+
/campaign/i,
|
|
81
|
+
/notify/i
|
|
82
|
+
]],
|
|
83
|
+
['fix', [
|
|
84
|
+
/fix/i,
|
|
85
|
+
/repair/i,
|
|
86
|
+
/resolve/i,
|
|
87
|
+
/solve/i
|
|
88
|
+
]],
|
|
89
|
+
['check', [
|
|
90
|
+
/check/i,
|
|
91
|
+
/show/i,
|
|
92
|
+
/view/i,
|
|
93
|
+
/display/i,
|
|
94
|
+
/get/i
|
|
95
|
+
]],
|
|
96
|
+
['simulate', [
|
|
97
|
+
/simulate/i,
|
|
98
|
+
/test/i,
|
|
99
|
+
/load/i,
|
|
100
|
+
/stress/i
|
|
101
|
+
]],
|
|
102
|
+
['create', [
|
|
103
|
+
/create/i,
|
|
104
|
+
/set up/i,
|
|
105
|
+
/establish/i,
|
|
106
|
+
/make/i
|
|
107
|
+
]]
|
|
108
|
+
]);
|
|
109
|
+
}
|
|
110
|
+
async process(query, context) {
|
|
111
|
+
const doc = (0, compromise_1.default)(query);
|
|
112
|
+
const tokens = this.tokenizer.tokenize(query.toLowerCase()) || [];
|
|
113
|
+
// Get base classification
|
|
114
|
+
const classification = this.classifier.getClassifications(query);
|
|
115
|
+
const topClass = classification[0];
|
|
116
|
+
// Extract entities
|
|
117
|
+
const action = this.extractAction(query, tokens);
|
|
118
|
+
const target = this.extractTarget(query, doc, context);
|
|
119
|
+
const parameters = this.extractParameters(query, tokens);
|
|
120
|
+
// Apply context if available
|
|
121
|
+
const enhancedIntent = this.applyContext({
|
|
122
|
+
action,
|
|
123
|
+
target,
|
|
124
|
+
parameters,
|
|
125
|
+
confidence: topClass.value,
|
|
126
|
+
originalQuery: query
|
|
127
|
+
}, context);
|
|
128
|
+
return enhancedIntent;
|
|
129
|
+
}
|
|
130
|
+
extractAction(query, tokens) {
|
|
131
|
+
// Check for explicit action patterns
|
|
132
|
+
for (const [action, patterns] of this.actionPatterns) {
|
|
133
|
+
if (patterns.some(pattern => pattern.test(query))) {
|
|
134
|
+
return action;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Check for specific keywords
|
|
138
|
+
if (tokens.includes('deploy'))
|
|
139
|
+
return 'deploy';
|
|
140
|
+
if (tokens.includes('rollback'))
|
|
141
|
+
return 'rollback';
|
|
142
|
+
if (tokens.includes('send'))
|
|
143
|
+
return 'send';
|
|
144
|
+
if (tokens.includes('fix'))
|
|
145
|
+
return 'fix';
|
|
146
|
+
if (tokens.includes('check') || tokens.includes('show'))
|
|
147
|
+
return 'check';
|
|
148
|
+
if (tokens.includes('simulate'))
|
|
149
|
+
return 'simulate';
|
|
150
|
+
if (tokens.includes('create'))
|
|
151
|
+
return 'create';
|
|
152
|
+
if (tokens.includes('onboard'))
|
|
153
|
+
return 'onboard';
|
|
154
|
+
return 'unknown';
|
|
155
|
+
}
|
|
156
|
+
extractTarget(query, doc, context) {
|
|
157
|
+
// Check for environment references
|
|
158
|
+
if (/production|prod/i.test(query))
|
|
159
|
+
return 'production';
|
|
160
|
+
if (/staging|stage/i.test(query))
|
|
161
|
+
return 'staging';
|
|
162
|
+
if (/development|dev/i.test(query))
|
|
163
|
+
return 'development';
|
|
164
|
+
// Check for service references
|
|
165
|
+
if (/database|db|rds|postgres/i.test(query))
|
|
166
|
+
return 'database';
|
|
167
|
+
if (/email|campaign|sendgrid/i.test(query))
|
|
168
|
+
return 'email';
|
|
169
|
+
if (/ssl|certificate/i.test(query))
|
|
170
|
+
return 'ssl';
|
|
171
|
+
if (/api|endpoint/i.test(query))
|
|
172
|
+
return 'api';
|
|
173
|
+
if (/website|web|frontend/i.test(query))
|
|
174
|
+
return 'website';
|
|
175
|
+
// Check for tier references
|
|
176
|
+
const tierMatch = query.match(/tier\s*(\d)/i);
|
|
177
|
+
if (tierMatch)
|
|
178
|
+
return `tier-${tierMatch[1]}`;
|
|
179
|
+
// Check context for "it", "them", "that"
|
|
180
|
+
if (context && /\b(it|them|that|this)\b/i.test(query)) {
|
|
181
|
+
return context.lastTarget || 'unknown';
|
|
182
|
+
}
|
|
183
|
+
// Extract organizations
|
|
184
|
+
const orgs = doc.match('#Organization').out('array');
|
|
185
|
+
if (orgs.length > 0)
|
|
186
|
+
return orgs[0];
|
|
187
|
+
return 'default';
|
|
188
|
+
}
|
|
189
|
+
extractParameters(query, _tokens) {
|
|
190
|
+
const params = [];
|
|
191
|
+
// Extract time references
|
|
192
|
+
if (/yesterday/i.test(query))
|
|
193
|
+
params.push('time:yesterday');
|
|
194
|
+
if (/today/i.test(query))
|
|
195
|
+
params.push('time:today');
|
|
196
|
+
if (/tomorrow/i.test(query))
|
|
197
|
+
params.push('time:tomorrow');
|
|
198
|
+
if (/last\s+week/i.test(query))
|
|
199
|
+
params.push('time:last-week');
|
|
200
|
+
if (/next\s+week/i.test(query))
|
|
201
|
+
params.push('time:next-week');
|
|
202
|
+
// Extract time patterns (e.g., "at 9am", "10:30")
|
|
203
|
+
const timePattern = /at\s+(\d{1,2}):?(\d{2})?\s*(am|pm)?/i;
|
|
204
|
+
const timeMatch = query.match(timePattern);
|
|
205
|
+
if (timeMatch) {
|
|
206
|
+
params.push(`schedule:${timeMatch[1]}${timeMatch[2] || ':00'}${timeMatch[3] || ''}`);
|
|
207
|
+
}
|
|
208
|
+
// Extract numbers
|
|
209
|
+
const numbers = query.match(/\d+/g);
|
|
210
|
+
if (numbers) {
|
|
211
|
+
numbers.forEach(num => params.push(`count:${num}`));
|
|
212
|
+
}
|
|
213
|
+
// Extract tier information
|
|
214
|
+
const tierMatch = query.match(/tier\s*(\d)/gi);
|
|
215
|
+
if (tierMatch) {
|
|
216
|
+
tierMatch.forEach(tier => params.push(tier.toLowerCase()));
|
|
217
|
+
}
|
|
218
|
+
// Extract company names
|
|
219
|
+
const companies = ['databricks', 'visa', 'mastercard', 'netflix', 'uber', 'stripe'];
|
|
220
|
+
companies.forEach(company => {
|
|
221
|
+
if (query.toLowerCase().includes(company)) {
|
|
222
|
+
params.push(`company:${company}`);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// Extract modifiers
|
|
226
|
+
if (/test|dry.?run/i.test(query))
|
|
227
|
+
params.push('test-mode');
|
|
228
|
+
if (/force|skip/i.test(query))
|
|
229
|
+
params.push('force');
|
|
230
|
+
if (/all/i.test(query))
|
|
231
|
+
params.push('all');
|
|
232
|
+
if (/latest/i.test(query))
|
|
233
|
+
params.push('latest');
|
|
234
|
+
if (/verbose|detail/i.test(query))
|
|
235
|
+
params.push('verbose');
|
|
236
|
+
return params;
|
|
237
|
+
}
|
|
238
|
+
applyContext(intent, context) {
|
|
239
|
+
if (!context)
|
|
240
|
+
return intent;
|
|
241
|
+
// Resolve pronouns and references
|
|
242
|
+
if (intent.target === 'default' && context.lastTarget) {
|
|
243
|
+
intent.target = context.lastTarget;
|
|
244
|
+
}
|
|
245
|
+
// Apply learned preferences
|
|
246
|
+
if (context.userPreferences) {
|
|
247
|
+
const prefs = context.userPreferences;
|
|
248
|
+
// Apply deployment preferences
|
|
249
|
+
if (intent.action === 'deploy' && prefs.deploymentEnvironment) {
|
|
250
|
+
if (!intent.target || intent.target === 'default') {
|
|
251
|
+
intent.target = prefs.deploymentEnvironment;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Apply testing preferences
|
|
255
|
+
if (prefs.alwaysTest && !intent.parameters.includes('test-mode')) {
|
|
256
|
+
intent.parameters.push('test-mode');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Enhance confidence based on context match
|
|
260
|
+
if (context.lastAction === intent.action) {
|
|
261
|
+
intent.confidence = Math.min(1.0, intent.confidence * 1.2);
|
|
262
|
+
}
|
|
263
|
+
return intent;
|
|
264
|
+
}
|
|
265
|
+
// Advanced NLP features for Beta phase
|
|
266
|
+
async processWithClarification(query, context) {
|
|
267
|
+
const intent = await this.process(query, context);
|
|
268
|
+
// Check if clarification is needed
|
|
269
|
+
const needsClarification = intent.confidence < 0.6 || intent.action === 'unknown';
|
|
270
|
+
let clarificationOptions = [];
|
|
271
|
+
if (needsClarification) {
|
|
272
|
+
// Generate clarification options based on query
|
|
273
|
+
if (query.includes('deploy')) {
|
|
274
|
+
clarificationOptions = [
|
|
275
|
+
'Deploy to production',
|
|
276
|
+
'Deploy to staging',
|
|
277
|
+
'Rollback last deployment'
|
|
278
|
+
];
|
|
279
|
+
}
|
|
280
|
+
else if (query.includes('email') || query.includes('campaign')) {
|
|
281
|
+
clarificationOptions = [
|
|
282
|
+
'Send campaign to Tier 1',
|
|
283
|
+
'Send campaign to Tier 2',
|
|
284
|
+
'Check engagement metrics',
|
|
285
|
+
'Schedule future campaign'
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
else if (query.includes('fix')) {
|
|
289
|
+
clarificationOptions = [
|
|
290
|
+
'Fix SSL database configuration',
|
|
291
|
+
'Fix deployment issues',
|
|
292
|
+
'Fix email template problems'
|
|
293
|
+
];
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
clarificationOptions = [
|
|
297
|
+
'Show system health',
|
|
298
|
+
'View recent logs',
|
|
299
|
+
'Check deployment status',
|
|
300
|
+
'Show email engagement'
|
|
301
|
+
];
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
intent,
|
|
306
|
+
needsClarification,
|
|
307
|
+
clarificationOptions: needsClarification ? clarificationOptions : undefined
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
// Learn from user corrections
|
|
311
|
+
learnFromCorrection(originalQuery, correctIntent) {
|
|
312
|
+
// Add the corrected mapping to classifier
|
|
313
|
+
this.classifier.addDocument(originalQuery, correctIntent.action);
|
|
314
|
+
this.classifier.train();
|
|
315
|
+
// Store for future reference
|
|
316
|
+
// In production, this would persist to a database
|
|
317
|
+
console.log(`Learned: "${originalQuery}" → ${correctIntent.action}`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
exports.NaturalLanguageProcessor = NaturalLanguageProcessor;
|
|
321
|
+
//# sourceMappingURL=processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/nlp/processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Client Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides secure PostgreSQL client with proper AWS RDS certificate validation.
|
|
5
|
+
* Uses AWS RDS global CA bundle instead of disabling SSL verification.
|
|
6
|
+
*
|
|
7
|
+
* Security: This replaces the insecure NODE_TLS_REJECT_UNAUTHORIZED=0 approach
|
|
8
|
+
* Reference: AWS RDS Certificate Authority documentation
|
|
9
|
+
*/
|
|
10
|
+
import { Client, ClientConfig } from 'pg';
|
|
11
|
+
/**
|
|
12
|
+
* Get SSL configuration for PostgreSQL client
|
|
13
|
+
* Uses CA bundle if available, falls back to insecure mode with warning
|
|
14
|
+
*/
|
|
15
|
+
export declare function getSSLConfig(): ClientConfig['ssl'];
|
|
16
|
+
/**
|
|
17
|
+
* Default database connection string
|
|
18
|
+
* Uses environment variable or falls back to default
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_CONNECTION_STRING: string;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new PostgreSQL client with secure SSL configuration
|
|
23
|
+
*
|
|
24
|
+
* @param connectionString - Optional connection string (defaults to DATABASE_URL)
|
|
25
|
+
* @returns Configured pg Client instance
|
|
26
|
+
*/
|
|
27
|
+
export declare function createDbClient(connectionString?: string): Client;
|
|
28
|
+
/**
|
|
29
|
+
* Create a new PostgreSQL client and connect it
|
|
30
|
+
*
|
|
31
|
+
* @param connectionString - Optional connection string (defaults to DATABASE_URL)
|
|
32
|
+
* @returns Promise resolving to connected pg Client instance
|
|
33
|
+
*/
|
|
34
|
+
export declare function createConnectedDbClient(connectionString?: string): Promise<Client>;
|
|
35
|
+
//# sourceMappingURL=db-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-client.d.ts","sourceRoot":"","sources":["../../src/utils/db-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AA2C1C;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,CAclD;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAuC,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIxF"}
|