@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.
Files changed (117) hide show
  1. package/dist/analytics/collector.d.ts +17 -0
  2. package/dist/analytics/collector.d.ts.map +1 -0
  3. package/dist/analytics/collector.js +40 -0
  4. package/dist/analytics/collector.js.map +1 -0
  5. package/dist/analytics/index.d.ts +3 -0
  6. package/dist/analytics/index.d.ts.map +1 -0
  7. package/dist/analytics/index.js +2 -0
  8. package/dist/analytics/index.js.map +1 -0
  9. package/dist/conversation/index.d.ts +4 -0
  10. package/dist/conversation/index.d.ts.map +1 -0
  11. package/dist/conversation/index.js +3 -0
  12. package/dist/conversation/index.js.map +1 -0
  13. package/dist/conversation/manager.d.ts +15 -0
  14. package/dist/conversation/manager.d.ts.map +1 -0
  15. package/dist/conversation/manager.js +44 -0
  16. package/dist/conversation/manager.js.map +1 -0
  17. package/dist/conversation/store.d.ts +13 -0
  18. package/dist/conversation/store.d.ts.map +1 -0
  19. package/dist/conversation/store.js +13 -0
  20. package/dist/conversation/store.js.map +1 -0
  21. package/dist/i18n/ar.d.ts +3 -0
  22. package/dist/i18n/ar.d.ts.map +1 -0
  23. package/dist/i18n/ar.js +14 -0
  24. package/dist/i18n/ar.js.map +1 -0
  25. package/dist/i18n/de.d.ts +3 -0
  26. package/dist/i18n/de.d.ts.map +1 -0
  27. package/dist/i18n/de.js +14 -0
  28. package/dist/i18n/de.js.map +1 -0
  29. package/dist/i18n/en.d.ts +3 -0
  30. package/dist/i18n/en.d.ts.map +1 -0
  31. package/dist/i18n/en.js +14 -0
  32. package/dist/i18n/en.js.map +1 -0
  33. package/dist/i18n/es.d.ts +3 -0
  34. package/dist/i18n/es.d.ts.map +1 -0
  35. package/dist/i18n/es.js +14 -0
  36. package/dist/i18n/es.js.map +1 -0
  37. package/dist/i18n/fr.d.ts +3 -0
  38. package/dist/i18n/fr.d.ts.map +1 -0
  39. package/dist/i18n/fr.js +14 -0
  40. package/dist/i18n/fr.js.map +1 -0
  41. package/dist/i18n/hi.d.ts +3 -0
  42. package/dist/i18n/hi.d.ts.map +1 -0
  43. package/dist/i18n/hi.js +14 -0
  44. package/dist/i18n/hi.js.map +1 -0
  45. package/dist/i18n/index.d.ts +13 -0
  46. package/dist/i18n/index.d.ts.map +1 -0
  47. package/dist/i18n/index.js +24 -0
  48. package/dist/i18n/index.js.map +1 -0
  49. package/dist/i18n/ja.d.ts +3 -0
  50. package/dist/i18n/ja.d.ts.map +1 -0
  51. package/dist/i18n/ja.js +14 -0
  52. package/dist/i18n/ja.js.map +1 -0
  53. package/dist/i18n/types.d.ts +14 -0
  54. package/dist/i18n/types.d.ts.map +1 -0
  55. package/dist/i18n/types.js +2 -0
  56. package/dist/i18n/types.js.map +1 -0
  57. package/dist/i18n/zh.d.ts +3 -0
  58. package/dist/i18n/zh.d.ts.map +1 -0
  59. package/dist/i18n/zh.js +14 -0
  60. package/dist/i18n/zh.js.map +1 -0
  61. package/dist/index.d.ts +14 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +10 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/knowledge/base.d.ts +5 -0
  66. package/dist/knowledge/base.d.ts.map +1 -0
  67. package/dist/knowledge/base.js +2 -0
  68. package/dist/knowledge/base.js.map +1 -0
  69. package/dist/knowledge/faq.d.ts +13 -0
  70. package/dist/knowledge/faq.d.ts.map +1 -0
  71. package/dist/knowledge/faq.js +33 -0
  72. package/dist/knowledge/faq.js.map +1 -0
  73. package/dist/knowledge/index.d.ts +5 -0
  74. package/dist/knowledge/index.d.ts.map +1 -0
  75. package/dist/knowledge/index.js +3 -0
  76. package/dist/knowledge/index.js.map +1 -0
  77. package/dist/knowledge/text.d.ts +8 -0
  78. package/dist/knowledge/text.d.ts.map +1 -0
  79. package/dist/knowledge/text.js +28 -0
  80. package/dist/knowledge/text.js.map +1 -0
  81. package/dist/providers/base.d.ts +35 -0
  82. package/dist/providers/base.d.ts.map +1 -0
  83. package/dist/providers/base.js +72 -0
  84. package/dist/providers/base.js.map +1 -0
  85. package/dist/providers/claude.d.ts +11 -0
  86. package/dist/providers/claude.d.ts.map +1 -0
  87. package/dist/providers/claude.js +48 -0
  88. package/dist/providers/claude.js.map +1 -0
  89. package/dist/providers/gemini.d.ts +11 -0
  90. package/dist/providers/gemini.d.ts.map +1 -0
  91. package/dist/providers/gemini.js +66 -0
  92. package/dist/providers/gemini.js.map +1 -0
  93. package/dist/providers/index.d.ts +6 -0
  94. package/dist/providers/index.d.ts.map +1 -0
  95. package/dist/providers/index.js +5 -0
  96. package/dist/providers/index.js.map +1 -0
  97. package/dist/providers/openai.d.ts +11 -0
  98. package/dist/providers/openai.d.ts.map +1 -0
  99. package/dist/providers/openai.js +53 -0
  100. package/dist/providers/openai.js.map +1 -0
  101. package/dist/tools/base.d.ts +10 -0
  102. package/dist/tools/base.d.ts.map +1 -0
  103. package/dist/tools/base.js +9 -0
  104. package/dist/tools/base.js.map +1 -0
  105. package/dist/tools/index.d.ts +5 -0
  106. package/dist/tools/index.d.ts.map +1 -0
  107. package/dist/tools/index.js +3 -0
  108. package/dist/tools/index.js.map +1 -0
  109. package/dist/tools/lead-capture.d.ts +34 -0
  110. package/dist/tools/lead-capture.d.ts.map +1 -0
  111. package/dist/tools/lead-capture.js +58 -0
  112. package/dist/tools/lead-capture.js.map +1 -0
  113. package/dist/types.d.ts +80 -0
  114. package/dist/types.d.ts.map +1 -0
  115. package/dist/types.js +2 -0
  116. package/dist/types.js.map +1 -0
  117. 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"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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
+ }