@chatcops/core 0.2.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/analytics/collector.d.ts +17 -0
- package/dist/analytics/collector.d.ts.map +1 -0
- package/dist/analytics/collector.js +40 -0
- package/dist/analytics/collector.js.map +1 -0
- package/dist/analytics/index.d.ts +3 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +2 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/conversation/index.d.ts +4 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +3 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/manager.d.ts +15 -0
- package/dist/conversation/manager.d.ts.map +1 -0
- package/dist/conversation/manager.js +44 -0
- package/dist/conversation/manager.js.map +1 -0
- package/dist/conversation/store.d.ts +13 -0
- package/dist/conversation/store.d.ts.map +1 -0
- package/dist/conversation/store.js +13 -0
- package/dist/conversation/store.js.map +1 -0
- package/dist/i18n/ar.d.ts +3 -0
- package/dist/i18n/ar.d.ts.map +1 -0
- package/dist/i18n/ar.js +14 -0
- package/dist/i18n/ar.js.map +1 -0
- package/dist/i18n/de.d.ts +3 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/de.js +14 -0
- package/dist/i18n/de.js.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +14 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/es.d.ts +3 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +14 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/fr.js +14 -0
- package/dist/i18n/fr.js.map +1 -0
- package/dist/i18n/hi.d.ts +3 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hi.js +14 -0
- package/dist/i18n/hi.js.map +1 -0
- package/dist/i18n/index.d.ts +13 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +24 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/ja.d.ts +3 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +14 -0
- package/dist/i18n/ja.js.map +1 -0
- package/dist/i18n/types.d.ts +14 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +2 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/zh.d.ts +3 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/i18n/zh.js +14 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/base.d.ts +5 -0
- package/dist/knowledge/base.d.ts.map +1 -0
- package/dist/knowledge/base.js +2 -0
- package/dist/knowledge/base.js.map +1 -0
- package/dist/knowledge/faq.d.ts +13 -0
- package/dist/knowledge/faq.d.ts.map +1 -0
- package/dist/knowledge/faq.js +33 -0
- package/dist/knowledge/faq.js.map +1 -0
- package/dist/knowledge/index.d.ts +5 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +3 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/text.d.ts +8 -0
- package/dist/knowledge/text.d.ts.map +1 -0
- package/dist/knowledge/text.js +28 -0
- package/dist/knowledge/text.js.map +1 -0
- package/dist/providers/base.d.ts +35 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +72 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/claude.d.ts +11 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +48 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/gemini.d.ts +11 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +66 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +5 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai.d.ts +11 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +53 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/tools/base.d.ts +10 -0
- package/dist/tools/base.d.ts.map +1 -0
- package/dist/tools/base.js +9 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lead-capture.d.ts +34 -0
- package/dist/tools/lead-capture.d.ts.map +1 -0
- package/dist/tools/lead-capture.js +58 -0
- package/dist/tools/lead-capture.js.map +1 -0
- package/dist/types.d.ts +80 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const leadInputSchema = z.object({
|
|
3
|
+
name: z.string(),
|
|
4
|
+
email: z.string().email(),
|
|
5
|
+
company: z.string().optional(),
|
|
6
|
+
phone: z.string().optional(),
|
|
7
|
+
projectDetails: z.string(),
|
|
8
|
+
});
|
|
9
|
+
export class LeadCaptureTool {
|
|
10
|
+
name = 'capture_lead';
|
|
11
|
+
description = 'Capture contact information from a potential customer or lead. Call this when the user provides their name, email, and project details.';
|
|
12
|
+
parameters = {
|
|
13
|
+
name: { type: 'string', description: 'Full name of the lead' },
|
|
14
|
+
email: { type: 'string', description: 'Email address' },
|
|
15
|
+
company: { type: 'string', description: 'Company name (if provided)' },
|
|
16
|
+
phone: { type: 'string', description: 'Phone number (if provided)' },
|
|
17
|
+
projectDetails: { type: 'string', description: 'Summary of what the lead needs' },
|
|
18
|
+
};
|
|
19
|
+
required = ['name', 'email', 'projectDetails'];
|
|
20
|
+
onCapture;
|
|
21
|
+
constructor(onCapture) {
|
|
22
|
+
this.onCapture = onCapture;
|
|
23
|
+
}
|
|
24
|
+
async execute(input) {
|
|
25
|
+
const parsed = leadInputSchema.safeParse(input);
|
|
26
|
+
if (!parsed.success) {
|
|
27
|
+
return {
|
|
28
|
+
success: false,
|
|
29
|
+
message: `Invalid lead data: ${parsed.error.issues.map((i) => i.message).join(', ')}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const lead = {
|
|
33
|
+
name: parsed.data.name,
|
|
34
|
+
email: parsed.data.email,
|
|
35
|
+
company: parsed.data.company,
|
|
36
|
+
phone: parsed.data.phone,
|
|
37
|
+
projectDetails: parsed.data.projectDetails,
|
|
38
|
+
source: 'chatcops-widget',
|
|
39
|
+
};
|
|
40
|
+
if (this.onCapture) {
|
|
41
|
+
try {
|
|
42
|
+
await this.onCapture(lead);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
message: 'Failed to process lead capture callback.',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
success: true,
|
|
53
|
+
data: lead,
|
|
54
|
+
message: 'Lead information captured successfully.',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=lead-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lead-capture.js","sourceRoot":"","sources":["../../src/tools/lead-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAC1B,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,yIAAyI,CAAC;IACxJ,UAAU,GAAG;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE;QACvE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,eAAe,EAAE;QAChE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC/E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC7E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,gCAAgC,EAAE;KAC3F,CAAC;IACF,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEvC,SAAS,CAAuB;IAExC,YAAY,SAA+B;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA8B;QAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACtF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;YAC5B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;YAC1C,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,0CAA0C;iBACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,yCAAyC;SACnD,CAAC;IACJ,CAAC;CACF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export interface ChatMessage {
|
|
2
|
+
id: string;
|
|
3
|
+
role: 'user' | 'assistant' | 'system';
|
|
4
|
+
content: string;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface Conversation {
|
|
9
|
+
id: string;
|
|
10
|
+
messages: ChatMessage[];
|
|
11
|
+
metadata?: Record<string, unknown>;
|
|
12
|
+
createdAt: number;
|
|
13
|
+
updatedAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ChatRequest {
|
|
16
|
+
conversationId: string;
|
|
17
|
+
message: string;
|
|
18
|
+
pageContext?: PageContext;
|
|
19
|
+
locale?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ChatResponse {
|
|
22
|
+
message: ChatMessage;
|
|
23
|
+
leadCaptured?: boolean;
|
|
24
|
+
suggestedActions?: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface PageContext {
|
|
27
|
+
url: string;
|
|
28
|
+
title: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
contentSnippet?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface LeadData {
|
|
33
|
+
name: string;
|
|
34
|
+
email: string;
|
|
35
|
+
company?: string;
|
|
36
|
+
phone?: string;
|
|
37
|
+
projectDetails: string;
|
|
38
|
+
source: string;
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
export interface ToolParameter {
|
|
42
|
+
type: 'string' | 'number' | 'boolean';
|
|
43
|
+
description: string;
|
|
44
|
+
enum?: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface ToolDefinition {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
parameters: Record<string, ToolParameter>;
|
|
50
|
+
required: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface ToolResult {
|
|
53
|
+
success: boolean;
|
|
54
|
+
data?: unknown;
|
|
55
|
+
message?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface WebhookConfig {
|
|
58
|
+
url: string;
|
|
59
|
+
events: string[];
|
|
60
|
+
secret?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ProviderConfig {
|
|
63
|
+
type: 'claude' | 'openai' | 'gemini';
|
|
64
|
+
apiKey: string;
|
|
65
|
+
model?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface ProviderChatParams {
|
|
68
|
+
messages: ChatMessage[];
|
|
69
|
+
systemPrompt: string;
|
|
70
|
+
tools?: ToolDefinition[];
|
|
71
|
+
maxTokens?: number;
|
|
72
|
+
temperature?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface AnalyticsEvent {
|
|
75
|
+
type: string;
|
|
76
|
+
data?: Record<string, unknown>;
|
|
77
|
+
timestamp: number;
|
|
78
|
+
}
|
|
79
|
+
export type { LocaleStrings } from './i18n/types.js';
|
|
80
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chatcops/core",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Core AI provider abstraction, tools, and knowledge base for ChatCops",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"test": "vitest run",
|
|
21
|
+
"test:watch": "vitest",
|
|
22
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
26
|
+
"openai": "^4.80.0",
|
|
27
|
+
"@google/generative-ai": "^0.21.0",
|
|
28
|
+
"zod": "^3.24.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"typescript": "^5.7.0",
|
|
32
|
+
"vitest": "^3.0.0"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT"
|
|
38
|
+
}
|