@sowonai/crewx-sdk 0.1.0-dev.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 (102) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +558 -0
  3. package/dist/config/index.d.ts +1 -0
  4. package/dist/config/index.js +18 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/timeout.config.d.ts +14 -0
  7. package/dist/config/timeout.config.js +34 -0
  8. package/dist/config/timeout.config.js.map +1 -0
  9. package/dist/constants/index.d.ts +4 -0
  10. package/dist/constants/index.js +8 -0
  11. package/dist/constants/index.js.map +1 -0
  12. package/dist/constants.d.ts +1 -0
  13. package/dist/constants.js +18 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/conversation/conversation-config.d.ts +9 -0
  16. package/dist/conversation/conversation-config.js +22 -0
  17. package/dist/conversation/conversation-config.js.map +1 -0
  18. package/dist/conversation/conversation-history.interface.d.ts +25 -0
  19. package/dist/conversation/conversation-history.interface.js +3 -0
  20. package/dist/conversation/conversation-history.interface.js.map +1 -0
  21. package/dist/conversation/conversation-storage.service.d.ts +16 -0
  22. package/dist/conversation/conversation-storage.service.js +213 -0
  23. package/dist/conversation/conversation-storage.service.js.map +1 -0
  24. package/dist/conversation/index.d.ts +3 -0
  25. package/dist/conversation/index.js +20 -0
  26. package/dist/conversation/index.js.map +1 -0
  27. package/dist/core/agent/agent-factory.d.ts +30 -0
  28. package/dist/core/agent/agent-factory.js +31 -0
  29. package/dist/core/agent/agent-factory.js.map +1 -0
  30. package/dist/core/agent/agent-runtime.d.ts +36 -0
  31. package/dist/core/agent/agent-runtime.js +96 -0
  32. package/dist/core/agent/agent-runtime.js.map +1 -0
  33. package/dist/core/agent/event-bus.d.ts +44 -0
  34. package/dist/core/agent/event-bus.js +43 -0
  35. package/dist/core/agent/event-bus.js.map +1 -0
  36. package/dist/core/agent/index.d.ts +3 -0
  37. package/dist/core/agent/index.js +11 -0
  38. package/dist/core/agent/index.js.map +1 -0
  39. package/dist/core/providers/ai-provider.interface.d.ts +50 -0
  40. package/dist/core/providers/ai-provider.interface.js +23 -0
  41. package/dist/core/providers/ai-provider.interface.js.map +1 -0
  42. package/dist/core/providers/base-ai.provider.d.ts +67 -0
  43. package/dist/core/providers/base-ai.provider.js +624 -0
  44. package/dist/core/providers/base-ai.provider.js.map +1 -0
  45. package/dist/core/providers/claude.provider.d.ts +24 -0
  46. package/dist/core/providers/claude.provider.js +361 -0
  47. package/dist/core/providers/claude.provider.js.map +1 -0
  48. package/dist/core/providers/codex.provider.d.ts +17 -0
  49. package/dist/core/providers/codex.provider.js +99 -0
  50. package/dist/core/providers/codex.provider.js.map +1 -0
  51. package/dist/core/providers/copilot.provider.d.ts +24 -0
  52. package/dist/core/providers/copilot.provider.js +266 -0
  53. package/dist/core/providers/copilot.provider.js.map +1 -0
  54. package/dist/core/providers/dynamic-provider.factory.d.ts +55 -0
  55. package/dist/core/providers/dynamic-provider.factory.js +587 -0
  56. package/dist/core/providers/dynamic-provider.factory.js.map +1 -0
  57. package/dist/core/providers/gemini.provider.d.ts +21 -0
  58. package/dist/core/providers/gemini.provider.js +147 -0
  59. package/dist/core/providers/gemini.provider.js.map +1 -0
  60. package/dist/index.d.ts +15 -0
  61. package/dist/index.js +34 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/internal/index.d.ts +1 -0
  64. package/dist/internal/index.js +6 -0
  65. package/dist/internal/index.js.map +1 -0
  66. package/dist/knowledge/DocumentManager.d.ts +4 -0
  67. package/dist/knowledge/DocumentManager.js +119 -0
  68. package/dist/knowledge/DocumentManager.js.map +1 -0
  69. package/dist/knowledge/index.d.ts +1 -0
  70. package/dist/knowledge/index.js +18 -0
  71. package/dist/knowledge/index.js.map +1 -0
  72. package/dist/types/agent.types.d.ts +117 -0
  73. package/dist/types/agent.types.js +16 -0
  74. package/dist/types/agent.types.js.map +1 -0
  75. package/dist/types/index.d.ts +1 -0
  76. package/dist/types/index.js +18 -0
  77. package/dist/types/index.js.map +1 -0
  78. package/dist/types.d.ts +1 -0
  79. package/dist/types.js +18 -0
  80. package/dist/types.js.map +1 -0
  81. package/dist/utils/error-utils.d.ts +3 -0
  82. package/dist/utils/error-utils.js +27 -0
  83. package/dist/utils/error-utils.js.map +1 -0
  84. package/dist/utils/index.d.ts +4 -0
  85. package/dist/utils/index.js +21 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/math-utils.d.ts +3 -0
  88. package/dist/utils/math-utils.js +10 -0
  89. package/dist/utils/math-utils.js.map +1 -0
  90. package/dist/utils/mention-parser.d.ts +18 -0
  91. package/dist/utils/mention-parser.js +136 -0
  92. package/dist/utils/mention-parser.js.map +1 -0
  93. package/dist/utils/string-utils.d.ts +1 -0
  94. package/dist/utils/string-utils.js +10 -0
  95. package/dist/utils/string-utils.js.map +1 -0
  96. package/dist/utils.d.ts +3 -0
  97. package/dist/utils.js +20 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/version.d.ts +1 -0
  100. package/dist/version.js +17 -0
  101. package/dist/version.js.map +1 -0
  102. package/package.json +54 -0
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONVERSATION_CONFIG = void 0;
4
+ exports.getConversationConfig = getConversationConfig;
5
+ exports.DEFAULT_CONVERSATION_CONFIG = {
6
+ maxMessages: 20,
7
+ maxContextLength: 4000,
8
+ cacheTTL: 30000,
9
+ maxCacheSize: 100,
10
+ enabled: true,
11
+ };
12
+ function getConversationConfig(env = process.env) {
13
+ return {
14
+ maxMessages: parseInt(env.CONVERSATION_MAX_MESSAGES ?? String(exports.DEFAULT_CONVERSATION_CONFIG.maxMessages), 10),
15
+ maxContextLength: parseInt(env.CONVERSATION_MAX_CONTEXT_LENGTH ??
16
+ String(exports.DEFAULT_CONVERSATION_CONFIG.maxContextLength), 10),
17
+ cacheTTL: parseInt(env.CONVERSATION_CACHE_TTL ?? String(exports.DEFAULT_CONVERSATION_CONFIG.cacheTTL), 10),
18
+ maxCacheSize: parseInt(env.CONVERSATION_MAX_CACHE_SIZE ?? String(exports.DEFAULT_CONVERSATION_CONFIG.maxCacheSize), 10),
19
+ enabled: env.CONVERSATION_HISTORY_ENABLED !== 'false',
20
+ };
21
+ }
22
+ //# sourceMappingURL=conversation-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-config.js","sourceRoot":"","sources":["../../src/conversation/conversation-config.ts"],"names":[],"mappings":";;;AAgBA,sDAqBC;AA7BY,QAAA,2BAA2B,GAAuB;IAC7D,WAAW,EAAE,EAAE;IACf,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,KAAM;IAChB,YAAY,EAAE,GAAG;IACjB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,SAAgB,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,OAAO;QACL,WAAW,EAAE,QAAQ,CACnB,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC,mCAA2B,CAAC,WAAW,CAAC,EAChF,EAAE,CACH;QACD,gBAAgB,EAAE,QAAQ,CACxB,GAAG,CAAC,+BAA+B;YACjC,MAAM,CAAC,mCAA2B,CAAC,gBAAgB,CAAC,EACtD,EAAE,CACH;QACD,QAAQ,EAAE,QAAQ,CAChB,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,mCAA2B,CAAC,QAAQ,CAAC,EAC1E,EAAE,CACH;QACD,YAAY,EAAE,QAAQ,CACpB,GAAG,CAAC,2BAA2B,IAAI,MAAM,CAAC,mCAA2B,CAAC,YAAY,CAAC,EACnF,EAAE,CACH;QACD,OAAO,EAAE,GAAG,CAAC,4BAA4B,KAAK,OAAO;KACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface ConversationMessage {
2
+ id: string;
3
+ userId: string;
4
+ text: string;
5
+ timestamp: Date;
6
+ isAssistant: boolean;
7
+ metadata?: Record<string, any>;
8
+ }
9
+ export interface ConversationThread {
10
+ threadId: string;
11
+ platform: 'slack' | 'cli';
12
+ messages: ConversationMessage[];
13
+ metadata?: Record<string, any>;
14
+ hasMore?: boolean;
15
+ }
16
+ export interface FetchHistoryOptions {
17
+ limit?: number;
18
+ maxContextLength?: number;
19
+ excludeCurrent?: boolean;
20
+ }
21
+ export interface IConversationHistoryProvider {
22
+ fetchHistory(threadId: string, options?: FetchHistoryOptions): Promise<ConversationThread>;
23
+ formatForAI(thread: ConversationThread, options?: FetchHistoryOptions): Promise<string>;
24
+ hasHistory(threadId: string): Promise<boolean>;
25
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=conversation-history.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-history.interface.js","sourceRoot":"","sources":["../../src/conversation/conversation-history.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { ConversationThread, ConversationMessage } from './conversation-history.interface';
2
+ export declare class ConversationStorageService {
3
+ private readonly logger;
4
+ private readonly storageDir;
5
+ constructor();
6
+ initialize(): Promise<void>;
7
+ saveThread(thread: ConversationThread): Promise<void>;
8
+ loadThread(threadId: string): Promise<ConversationThread | null>;
9
+ addMessage(threadId: string, message: ConversationMessage, platform?: 'slack' | 'cli'): Promise<ConversationThread>;
10
+ listThreads(): Promise<string[]>;
11
+ deleteThread(threadId: string): Promise<void>;
12
+ hasThread(threadId: string): Promise<boolean>;
13
+ private getThreadPath;
14
+ private getCandidatePaths;
15
+ cleanupOldThreads(daysToKeep?: number): Promise<number>;
16
+ }
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var ConversationStorageService_1;
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.ConversationStorageService = void 0;
47
+ const common_1 = require("@nestjs/common");
48
+ const fs_1 = require("fs");
49
+ const path = __importStar(require("path"));
50
+ let ConversationStorageService = ConversationStorageService_1 = class ConversationStorageService {
51
+ constructor() {
52
+ this.logger = new common_1.Logger(ConversationStorageService_1.name);
53
+ this.storageDir = path.join(process.cwd(), '.crewx', 'conversations');
54
+ }
55
+ async initialize() {
56
+ try {
57
+ await fs_1.promises.mkdir(this.storageDir, { recursive: true });
58
+ this.logger.debug(`Storage directory initialized: ${this.storageDir}`);
59
+ }
60
+ catch (error) {
61
+ this.logger.error(`Failed to initialize storage: ${error.message}`);
62
+ throw error;
63
+ }
64
+ }
65
+ async saveThread(thread) {
66
+ await this.initialize();
67
+ const filePath = this.getThreadPath(thread.threadId, thread.platform);
68
+ const data = JSON.stringify(thread, null, 2);
69
+ try {
70
+ await fs_1.promises.writeFile(filePath, data, 'utf-8');
71
+ this.logger.debug(`Thread saved: ${thread.threadId}`);
72
+ }
73
+ catch (error) {
74
+ this.logger.error(`Failed to save thread: ${error.message}`);
75
+ throw error;
76
+ }
77
+ }
78
+ async loadThread(threadId) {
79
+ const candidatePaths = this.getCandidatePaths(threadId);
80
+ for (const filePath of candidatePaths) {
81
+ try {
82
+ const data = await fs_1.promises.readFile(filePath, 'utf-8');
83
+ const thread = JSON.parse(data);
84
+ thread.messages = thread.messages.map(message => ({
85
+ ...message,
86
+ timestamp: new Date(message.timestamp),
87
+ }));
88
+ return thread;
89
+ }
90
+ catch (error) {
91
+ if (error.code !== 'ENOENT') {
92
+ this.logger.error(`Failed to load thread: ${error.message}`);
93
+ throw error;
94
+ }
95
+ }
96
+ }
97
+ return null;
98
+ }
99
+ async addMessage(threadId, message, platform = 'cli') {
100
+ let thread = await this.loadThread(threadId);
101
+ if (!thread) {
102
+ thread = {
103
+ threadId,
104
+ platform,
105
+ messages: [],
106
+ metadata: {
107
+ createdAt: new Date().toISOString(),
108
+ },
109
+ };
110
+ }
111
+ thread.messages.push(message);
112
+ thread.metadata = {
113
+ ...thread.metadata,
114
+ updatedAt: new Date().toISOString(),
115
+ messageCount: thread.messages.length,
116
+ };
117
+ await this.saveThread(thread);
118
+ return thread;
119
+ }
120
+ async listThreads() {
121
+ try {
122
+ await this.initialize();
123
+ const files = await fs_1.promises.readdir(this.storageDir);
124
+ const threadIds = [];
125
+ for (const file of files) {
126
+ if (!file.endsWith('.json'))
127
+ continue;
128
+ const filePath = path.join(this.storageDir, file);
129
+ try {
130
+ const data = await fs_1.promises.readFile(filePath, 'utf-8');
131
+ const thread = JSON.parse(data);
132
+ threadIds.push(thread.threadId ?? file.replace('.json', ''));
133
+ }
134
+ catch (error) {
135
+ this.logger.warn(`Failed to read thread file ${file}: ${error.message}`);
136
+ }
137
+ }
138
+ return threadIds;
139
+ }
140
+ catch (error) {
141
+ this.logger.error(`Failed to list threads: ${error.message}`);
142
+ return [];
143
+ }
144
+ }
145
+ async deleteThread(threadId) {
146
+ const candidatePaths = this.getCandidatePaths(threadId);
147
+ for (const filePath of candidatePaths) {
148
+ try {
149
+ await fs_1.promises.unlink(filePath);
150
+ this.logger.debug(`Thread deleted: ${threadId}`);
151
+ return;
152
+ }
153
+ catch (error) {
154
+ if (error.code === 'ENOENT')
155
+ continue;
156
+ this.logger.error(`Failed to delete thread: ${error.message}`);
157
+ throw error;
158
+ }
159
+ }
160
+ }
161
+ async hasThread(threadId) {
162
+ const candidatePaths = this.getCandidatePaths(threadId);
163
+ for (const filePath of candidatePaths) {
164
+ try {
165
+ await fs_1.promises.access(filePath);
166
+ return true;
167
+ }
168
+ catch (error) {
169
+ if (error.code !== 'ENOENT') {
170
+ this.logger.error(`Failed to check thread: ${error.message}`);
171
+ }
172
+ }
173
+ }
174
+ return false;
175
+ }
176
+ getThreadPath(threadId, platform) {
177
+ const safeId = threadId.replace(/[^a-zA-Z0-9-_]/g, '_');
178
+ const resolvedPlatform = platform ?? (threadId.includes(':') ? 'slack' : undefined);
179
+ const prefix = resolvedPlatform === 'slack' ? 'slack-' : '';
180
+ return path.join(this.storageDir, `${prefix}${safeId}.json`);
181
+ }
182
+ getCandidatePaths(threadId) {
183
+ const candidates = new Set();
184
+ candidates.add(this.getThreadPath(threadId));
185
+ candidates.add(this.getThreadPath(threadId, 'slack'));
186
+ candidates.add(this.getThreadPath(threadId, 'cli'));
187
+ return Array.from(candidates);
188
+ }
189
+ async cleanupOldThreads(daysToKeep = 30) {
190
+ const threads = await this.listThreads();
191
+ const cutoffDate = new Date();
192
+ cutoffDate.setDate(cutoffDate.getDate() - daysToKeep);
193
+ let deletedCount = 0;
194
+ for (const threadId of threads) {
195
+ const thread = await this.loadThread(threadId);
196
+ if (!thread)
197
+ continue;
198
+ const lastMessage = thread.messages[thread.messages.length - 1];
199
+ if (lastMessage && lastMessage.timestamp < cutoffDate) {
200
+ await this.deleteThread(threadId);
201
+ deletedCount++;
202
+ }
203
+ }
204
+ this.logger.log(`Cleaned up ${deletedCount} old threads`);
205
+ return deletedCount;
206
+ }
207
+ };
208
+ exports.ConversationStorageService = ConversationStorageService;
209
+ exports.ConversationStorageService = ConversationStorageService = ConversationStorageService_1 = __decorate([
210
+ (0, common_1.Injectable)(),
211
+ __metadata("design:paramtypes", [])
212
+ ], ConversationStorageService);
213
+ //# sourceMappingURL=conversation-storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-storage.service.js","sourceRoot":"","sources":["../../src/conversation/conversation-storage.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './conversation-history.interface';
2
+ export * from './conversation-config';
3
+ export * from './conversation-storage.service';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./conversation-history.interface"), exports);
18
+ __exportStar(require("./conversation-config"), exports);
19
+ __exportStar(require("./conversation-storage.service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,wDAAsC;AACtC,iEAA+C"}
@@ -0,0 +1,30 @@
1
+ import { AgentRuntime } from './agent-runtime';
2
+ import { EventBus, EventListener } from './event-bus';
3
+ export interface ProviderConfig {
4
+ namespace: string;
5
+ id: string;
6
+ apiKey?: string;
7
+ model?: string;
8
+ }
9
+ export interface KnowledgeBaseConfig {
10
+ path?: string;
11
+ sources?: string[];
12
+ }
13
+ export interface CrewxAgentConfig {
14
+ provider?: ProviderConfig;
15
+ knowledgeBase?: KnowledgeBaseConfig;
16
+ enableCallStack?: boolean;
17
+ defaultAgentId?: string;
18
+ }
19
+ export interface CrewxAgent {
20
+ query: AgentRuntime['query'];
21
+ execute: AgentRuntime['execute'];
22
+ getCallStack: AgentRuntime['getCallStack'];
23
+ }
24
+ export interface CrewxAgentResult {
25
+ agent: CrewxAgent;
26
+ onEvent: <T = any>(eventName: string, listener: EventListener<T>) => () => void;
27
+ eventBus: EventBus;
28
+ }
29
+ export declare function createCrewxAgent(config?: CrewxAgentConfig): Promise<CrewxAgentResult>;
30
+ export declare function loadAgentConfigFromYaml(yamlString: string): CrewxAgentConfig;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCrewxAgent = createCrewxAgent;
4
+ exports.loadAgentConfigFromYaml = loadAgentConfigFromYaml;
5
+ const agent_runtime_1 = require("./agent-runtime");
6
+ const event_bus_1 = require("./event-bus");
7
+ async function createCrewxAgent(config = {}) {
8
+ const eventBus = new event_bus_1.EventBus();
9
+ const runtimeOptions = {
10
+ eventBus,
11
+ enableCallStack: config.enableCallStack ?? false,
12
+ defaultAgentId: config.defaultAgentId ?? 'crewx',
13
+ };
14
+ const runtime = new agent_runtime_1.AgentRuntime(runtimeOptions);
15
+ const agent = {
16
+ query: runtime.query.bind(runtime),
17
+ execute: runtime.execute.bind(runtime),
18
+ getCallStack: runtime.getCallStack.bind(runtime),
19
+ };
20
+ return {
21
+ agent,
22
+ onEvent: (eventName, listener) => eventBus.on(eventName, listener),
23
+ eventBus,
24
+ };
25
+ }
26
+ function loadAgentConfigFromYaml(yamlString) {
27
+ return {
28
+ defaultAgentId: 'crewx',
29
+ };
30
+ }
31
+ //# sourceMappingURL=agent-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../../src/core/agent/agent-factory.ts"],"names":[],"mappings":";;AAoFA,4CA6BC;AAMD,0DAMC;AAxHD,mDAAoE;AACpE,2CAAsD;AA8E/C,KAAK,UAAU,gBAAgB,CACpC,SAA2B,EAAE;IAG7B,MAAM,QAAQ,GAAG,IAAI,oBAAQ,EAAE,CAAC;IAGhC,MAAM,cAAc,GAAwB;QAC1C,QAAQ;QACR,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;KACjD,CAAC;IAGF,MAAM,OAAO,GAAG,IAAI,4BAAY,CAAC,cAAc,CAAC,CAAC;IAGjD,MAAM,KAAK,GAAe;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KACjD,CAAC;IAGF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAClE,QAAQ;KACT,CAAC;AACJ,CAAC;AAMD,SAAgB,uBAAuB,CAAC,UAAkB;IAGxD,OAAO;QACL,cAAc,EAAE,OAAO;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { EventBus, CallStackFrame } from './event-bus';
2
+ import type { ConversationMessage } from '../../conversation/conversation-history.interface';
3
+ export interface AgentQueryRequest {
4
+ agentId?: string;
5
+ prompt: string;
6
+ context?: string;
7
+ messages?: ConversationMessage[];
8
+ }
9
+ export interface AgentExecuteRequest {
10
+ agentId?: string;
11
+ prompt: string;
12
+ context?: string;
13
+ messages?: ConversationMessage[];
14
+ }
15
+ export interface AgentResult {
16
+ content: string;
17
+ success: boolean;
18
+ agentId?: string;
19
+ metadata?: Record<string, any>;
20
+ }
21
+ export interface AgentRuntimeOptions {
22
+ eventBus?: EventBus;
23
+ enableCallStack?: boolean;
24
+ defaultAgentId?: string;
25
+ }
26
+ export declare class AgentRuntime {
27
+ private eventBus;
28
+ private enableCallStack;
29
+ private callStack;
30
+ private defaultAgentId;
31
+ constructor(options?: AgentRuntimeOptions);
32
+ query(request: AgentQueryRequest): Promise<AgentResult>;
33
+ execute(request: AgentExecuteRequest): Promise<AgentResult>;
34
+ getCallStack(): CallStackFrame[];
35
+ getEventBus(): EventBus;
36
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentRuntime = void 0;
4
+ const event_bus_1 = require("./event-bus");
5
+ class AgentRuntime {
6
+ constructor(options = {}) {
7
+ this.callStack = [];
8
+ this.eventBus = options.eventBus ?? new event_bus_1.EventBus();
9
+ this.enableCallStack = options.enableCallStack ?? false;
10
+ this.defaultAgentId = options.defaultAgentId ?? 'default';
11
+ }
12
+ async query(request) {
13
+ const agentId = request.agentId ?? this.defaultAgentId;
14
+ try {
15
+ await this.eventBus.emit('agentStarted', { agentId, mode: 'query' });
16
+ if (this.enableCallStack) {
17
+ const frame = {
18
+ depth: this.callStack.length,
19
+ agentId,
20
+ provider: 'sdk',
21
+ mode: 'query',
22
+ enteredAt: new Date().toISOString(),
23
+ };
24
+ this.callStack.push(frame);
25
+ await this.eventBus.emit('callStackUpdated', [...this.callStack]);
26
+ }
27
+ const result = {
28
+ content: `Query executed: ${request.prompt}`,
29
+ success: true,
30
+ agentId,
31
+ metadata: {
32
+ context: request.context,
33
+ messageCount: request.messages?.length ?? 0,
34
+ },
35
+ };
36
+ await this.eventBus.emit('agentCompleted', { agentId, success: true });
37
+ return result;
38
+ }
39
+ catch (error) {
40
+ await this.eventBus.emit('agentCompleted', { agentId, success: false });
41
+ throw error;
42
+ }
43
+ finally {
44
+ if (this.enableCallStack && this.callStack.length > 0) {
45
+ this.callStack.pop();
46
+ await this.eventBus.emit('callStackUpdated', [...this.callStack]);
47
+ }
48
+ }
49
+ }
50
+ async execute(request) {
51
+ const agentId = request.agentId ?? this.defaultAgentId;
52
+ try {
53
+ await this.eventBus.emit('agentStarted', { agentId, mode: 'execute' });
54
+ if (this.enableCallStack) {
55
+ const frame = {
56
+ depth: this.callStack.length,
57
+ agentId,
58
+ provider: 'sdk',
59
+ mode: 'execute',
60
+ enteredAt: new Date().toISOString(),
61
+ };
62
+ this.callStack.push(frame);
63
+ await this.eventBus.emit('callStackUpdated', [...this.callStack]);
64
+ }
65
+ const result = {
66
+ content: `Execute completed: ${request.prompt}`,
67
+ success: true,
68
+ agentId,
69
+ metadata: {
70
+ context: request.context,
71
+ messageCount: request.messages?.length ?? 0,
72
+ },
73
+ };
74
+ await this.eventBus.emit('agentCompleted', { agentId, success: true });
75
+ return result;
76
+ }
77
+ catch (error) {
78
+ await this.eventBus.emit('agentCompleted', { agentId, success: false });
79
+ throw error;
80
+ }
81
+ finally {
82
+ if (this.enableCallStack && this.callStack.length > 0) {
83
+ this.callStack.pop();
84
+ await this.eventBus.emit('callStackUpdated', [...this.callStack]);
85
+ }
86
+ }
87
+ }
88
+ getCallStack() {
89
+ return [...this.callStack];
90
+ }
91
+ getEventBus() {
92
+ return this.eventBus;
93
+ }
94
+ }
95
+ exports.AgentRuntime = AgentRuntime;
96
+ //# sourceMappingURL=agent-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/core/agent/agent-runtime.ts"],"names":[],"mappings":";;;AAKA,2CAAuD;AAkCvD,MAAa,YAAY;IAMvB,YAAY,UAA+B,EAAE;QAHrC,cAAS,GAAqB,EAAE,CAAC;QAIvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,oBAAQ,EAAE,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;IAC5D,CAAC;IAKD,KAAK,CAAC,KAAK,CAAC,OAA0B;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QAEvD,IAAI,CAAC;YAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAGrE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAmB;oBAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;oBAC5B,OAAO;oBACP,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,CAAC;YAGD,MAAM,MAAM,GAAgB;gBAC1B,OAAO,EAAE,mBAAmB,OAAO,CAAC,MAAM,EAAE;gBAC5C,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,QAAQ,EAAE;oBACR,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;iBAC5C;aACF,CAAC;YAGF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YAET,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QAEvD,IAAI,CAAC;YAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAGvE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAmB;oBAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;oBAC5B,OAAO;oBACP,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,CAAC;YAGD,MAAM,MAAM,GAAgB;gBAC1B,OAAO,EAAE,sBAAsB,OAAO,CAAC,MAAM,EAAE;gBAC/C,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,QAAQ,EAAE;oBACR,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;iBAC5C;aACF,CAAC;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAKD,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAKD,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AA3HD,oCA2HC"}
@@ -0,0 +1,44 @@
1
+ export type EventListener<T = any> = (payload: T) => void | Promise<void>;
2
+ export interface CallStackFrame {
3
+ depth: number;
4
+ agentId: string;
5
+ provider: string;
6
+ mode: 'query' | 'execute';
7
+ taskId?: string;
8
+ enteredAt: string;
9
+ }
10
+ export type AgentEvent = {
11
+ type: 'callStackUpdated';
12
+ payload: CallStackFrame[];
13
+ } | {
14
+ type: 'agentStarted';
15
+ payload: {
16
+ agentId: string;
17
+ mode: 'query' | 'execute';
18
+ };
19
+ } | {
20
+ type: 'agentCompleted';
21
+ payload: {
22
+ agentId: string;
23
+ success: boolean;
24
+ };
25
+ } | {
26
+ type: 'toolCallStarted';
27
+ payload: {
28
+ toolName: string;
29
+ args: any;
30
+ };
31
+ } | {
32
+ type: 'toolCallCompleted';
33
+ payload: {
34
+ toolName: string;
35
+ result: any;
36
+ };
37
+ };
38
+ export declare class EventBus {
39
+ private listeners;
40
+ on<T = any>(eventName: string, listener: EventListener<T>): () => void;
41
+ emit<T = any>(eventName: string, payload: T): Promise<void>;
42
+ clear(eventName?: string): void;
43
+ listenerCount(eventName: string): number;
44
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBus = void 0;
4
+ class EventBus {
5
+ constructor() {
6
+ this.listeners = new Map();
7
+ }
8
+ on(eventName, listener) {
9
+ if (!this.listeners.has(eventName)) {
10
+ this.listeners.set(eventName, new Set());
11
+ }
12
+ this.listeners.get(eventName).add(listener);
13
+ return () => {
14
+ const listeners = this.listeners.get(eventName);
15
+ if (listeners) {
16
+ listeners.delete(listener);
17
+ if (listeners.size === 0) {
18
+ this.listeners.delete(eventName);
19
+ }
20
+ }
21
+ };
22
+ }
23
+ async emit(eventName, payload) {
24
+ const listeners = this.listeners.get(eventName);
25
+ if (!listeners)
26
+ return;
27
+ const promises = Array.from(listeners).map((listener) => Promise.resolve(listener(payload)));
28
+ await Promise.all(promises);
29
+ }
30
+ clear(eventName) {
31
+ if (eventName) {
32
+ this.listeners.delete(eventName);
33
+ }
34
+ else {
35
+ this.listeners.clear();
36
+ }
37
+ }
38
+ listenerCount(eventName) {
39
+ return this.listeners.get(eventName)?.size ?? 0;
40
+ }
41
+ }
42
+ exports.EventBus = EventBus;
43
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/core/agent/event-bus.ts"],"names":[],"mappings":";;;AAuBA,MAAa,QAAQ;IAArB;QACU,cAAS,GAAoC,IAAI,GAAG,EAAE,CAAC;IA2DjE,CAAC;IAnDC,EAAE,CAAU,SAAiB,EAAE,QAA0B;QACvD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,QAAyB,CAAC,CAAC;QAG9D,OAAO,GAAG,EAAE;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,CAAC,QAAyB,CAAC,CAAC;gBAC5C,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAOD,KAAK,CAAC,IAAI,CAAU,SAAiB,EAAE,OAAU;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACnC,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAMD,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAKD,aAAa,CAAC,SAAiB;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AA5DD,4BA4DC"}
@@ -0,0 +1,3 @@
1
+ export { createCrewxAgent, loadAgentConfigFromYaml, type CrewxAgent, type CrewxAgentConfig, type CrewxAgentResult, type ProviderConfig, type KnowledgeBaseConfig, } from './agent-factory';
2
+ export { AgentRuntime, type AgentQueryRequest, type AgentExecuteRequest, type AgentResult, type AgentRuntimeOptions, } from './agent-runtime';
3
+ export { EventBus, type EventListener, type CallStackFrame, type AgentEvent, } from './event-bus';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBus = exports.AgentRuntime = exports.loadAgentConfigFromYaml = exports.createCrewxAgent = void 0;
4
+ var agent_factory_1 = require("./agent-factory");
5
+ Object.defineProperty(exports, "createCrewxAgent", { enumerable: true, get: function () { return agent_factory_1.createCrewxAgent; } });
6
+ Object.defineProperty(exports, "loadAgentConfigFromYaml", { enumerable: true, get: function () { return agent_factory_1.loadAgentConfigFromYaml; } });
7
+ var agent_runtime_1 = require("./agent-runtime");
8
+ Object.defineProperty(exports, "AgentRuntime", { enumerable: true, get: function () { return agent_runtime_1.AgentRuntime; } });
9
+ var event_bus_1 = require("./event-bus");
10
+ Object.defineProperty(exports, "EventBus", { enumerable: true, get: function () { return event_bus_1.EventBus; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agent/index.ts"],"names":[],"mappings":";;;AAIA,iDAQyB;AAPvB,iHAAA,gBAAgB,OAAA;AAChB,wHAAA,uBAAuB,OAAA;AAQzB,iDAMyB;AALvB,6GAAA,YAAY,OAAA;AAOd,yCAKqB;AAJnB,qGAAA,QAAQ,OAAA"}