dolphin-server-modules 2.9.5 → 2.9.6
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 +45 -83
- package/TUTORIAL_NEPALI.md +65 -31
- package/dist/ai/dolphin-agent/agent.d.ts +25 -0
- package/dist/ai/dolphin-agent/agent.js +362 -0
- package/dist/ai/dolphin-agent/agent.js.map +1 -0
- package/dist/ai/dolphin-agent/config.d.ts +9 -0
- package/dist/ai/dolphin-agent/config.js +52 -0
- package/dist/ai/dolphin-agent/config.js.map +1 -0
- package/dist/ai/dolphin-agent/index.d.ts +5 -0
- package/dist/ai/dolphin-agent/index.js +13 -0
- package/dist/ai/dolphin-agent/index.js.map +1 -0
- package/dist/bin/cli.js +27 -125
- package/dist/bin/cli.js.map +1 -1
- package/dist/services/ai-service.d.ts +6 -0
- package/dist/services/ai-service.js +142 -23
- package/dist/services/ai-service.js.map +1 -1
- package/package.json +1 -1
- package/dist/adapters/mongoose/index.test.d.ts +0 -1
- package/dist/adapters/mongoose/index.test.js +0 -145
- package/dist/adapters/mongoose/index.test.js.map +0 -1
- package/dist/adapters/mongoose/integration.test.d.ts +0 -5
- package/dist/adapters/mongoose/integration.test.js +0 -217
- package/dist/adapters/mongoose/integration.test.js.map +0 -1
- package/dist/auth/auth.test.d.ts +0 -1
- package/dist/auth/auth.test.js +0 -286
- package/dist/auth/auth.test.js.map +0 -1
- package/dist/authController/authController.test.d.ts +0 -1
- package/dist/authController/authController.test.js +0 -359
- package/dist/authController/authController.test.js.map +0 -1
- package/dist/controller/controller.test.d.ts +0 -1
- package/dist/controller/controller.test.js +0 -37
- package/dist/controller/controller.test.js.map +0 -1
- package/dist/curd/crud.test.d.ts +0 -1
- package/dist/curd/crud.test.js +0 -104
- package/dist/curd/crud.test.js.map +0 -1
- package/dist/demo-server.d.ts +0 -1
- package/dist/demo-server.js +0 -191
- package/dist/demo-server.js.map +0 -1
- package/dist/djson/djson.test.d.ts +0 -1
- package/dist/djson/djson.test.js +0 -200
- package/dist/djson/djson.test.js.map +0 -1
- package/dist/dolphin-bench.d.ts +0 -1
- package/dist/dolphin-bench.js +0 -63
- package/dist/dolphin-bench.js.map +0 -1
- package/dist/hard-performance-test.d.ts +0 -1
- package/dist/hard-performance-test.js +0 -97
- package/dist/hard-performance-test.js.map +0 -1
- package/dist/middleware/zod.test.d.ts +0 -1
- package/dist/middleware/zod.test.js +0 -74
- package/dist/middleware/zod.test.js.map +0 -1
- package/dist/performance-test.d.ts +0 -1
- package/dist/performance-test.js +0 -92
- package/dist/performance-test.js.map +0 -1
- package/dist/real-test-mongoose.d.ts +0 -1
- package/dist/real-test-mongoose.js +0 -104
- package/dist/real-test-mongoose.js.map +0 -1
- package/dist/realtime/realtime.test.d.ts +0 -1
- package/dist/realtime/realtime.test.js +0 -623
- package/dist/realtime/realtime.test.js.map +0 -1
- package/dist/router/router.test.d.ts +0 -1
- package/dist/router/router.test.js +0 -45
- package/dist/router/router.test.js.map +0 -1
- package/dist/server/server.test.d.ts +0 -1
- package/dist/server/server.test.js +0 -299
- package/dist/server/server.test.js.map +0 -1
- package/dist/signaling/signaling.test.d.ts +0 -1
- package/dist/signaling/signaling.test.js +0 -112
- package/dist/signaling/signaling.test.js.map +0 -1
- package/dist/swagger/swagger.test.d.ts +0 -1
- package/dist/swagger/swagger.test.js +0 -38
- package/dist/swagger/swagger.test.js.map +0 -1
- package/dist/test-2fa-real.d.ts +0 -1
- package/dist/test-2fa-real.js +0 -105
- package/dist/test-2fa-real.js.map +0 -1
- package/dist/test-dolphin.d.ts +0 -1
- package/dist/test-dolphin.js +0 -98
- package/dist/test-dolphin.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { promises as fs, existsSync } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import * as readline from 'readline/promises';
|
|
4
|
+
import { AIService } from '../../services/ai-service.js';
|
|
5
|
+
import { CLIUI } from '../../utils/ui.js';
|
|
6
|
+
import { getFrameworkPrompt } from './config.js';
|
|
7
|
+
import { exec } from 'child_process';
|
|
8
|
+
import { promisify } from 'util';
|
|
9
|
+
import crypto from 'crypto';
|
|
10
|
+
const execAsync = promisify(exec);
|
|
11
|
+
export class DolphinAgent {
|
|
12
|
+
ai;
|
|
13
|
+
config;
|
|
14
|
+
currentDir;
|
|
15
|
+
rl;
|
|
16
|
+
projectIndex = new Map();
|
|
17
|
+
symbolIndex = new Map();
|
|
18
|
+
keywordIndex = new Map();
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.currentDir = process.cwd();
|
|
22
|
+
this.rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
23
|
+
const apiKey = config.apiKey || process.env.DOLPHIN_AI_KEY || process.env.GEMINI_API_KEY || process.env.OPENAI_API_KEY || '';
|
|
24
|
+
this.ai = new AIService({
|
|
25
|
+
apiKey: apiKey,
|
|
26
|
+
model: process.env.DOLPHIN_AI_MODEL
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
calculateHash(content) {
|
|
30
|
+
return crypto.createHash('md5').update(content).digest('hex');
|
|
31
|
+
}
|
|
32
|
+
async walkDir(dir, fileList = []) {
|
|
33
|
+
const files = await fs.readdir(dir);
|
|
34
|
+
for (const file of files) {
|
|
35
|
+
const filePath = path.join(dir, file);
|
|
36
|
+
if (filePath.includes('node_modules') || filePath.includes('.git') || filePath.includes('dist') || filePath.includes('build'))
|
|
37
|
+
continue;
|
|
38
|
+
const stat = await fs.stat(filePath);
|
|
39
|
+
if (stat.isDirectory()) {
|
|
40
|
+
await this.walkDir(filePath, fileList);
|
|
41
|
+
}
|
|
42
|
+
else if (/\.(js|ts|jsx|tsx|json)$/.test(file)) {
|
|
43
|
+
fileList.push(filePath);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return fileList;
|
|
47
|
+
}
|
|
48
|
+
updateSemanticIndex(filePath, content) {
|
|
49
|
+
// Simple keyword indexing
|
|
50
|
+
const tokens = content.toLowerCase().split(/[^a-z0-9]+/).filter(t => t.length > 3);
|
|
51
|
+
tokens.forEach(token => {
|
|
52
|
+
if (!this.keywordIndex.has(token))
|
|
53
|
+
this.keywordIndex.set(token, new Set());
|
|
54
|
+
this.keywordIndex.get(token).add(filePath);
|
|
55
|
+
});
|
|
56
|
+
// Basic symbol tracking (regex based for speed)
|
|
57
|
+
const funcRegex = /(?:function\s+([a-zA-Z0-9_]+))|(?:const\s+([a-zA-Z0-9_]+)\s*=\s*(?:\([^)]*\)|[a-zA-Z0-9_]+)\s*=>)|(?:class\s+([a-zA-Z0-9_]+))/g;
|
|
58
|
+
let match;
|
|
59
|
+
const lines = content.split('\n');
|
|
60
|
+
while ((match = funcRegex.exec(content)) !== null) {
|
|
61
|
+
const name = match[1] || match[2] || match[3];
|
|
62
|
+
if (name) {
|
|
63
|
+
const lineNo = content.substring(0, match.index).split('\n').length;
|
|
64
|
+
const type = match[1] ? 'function' : match[2] ? 'arrow' : 'class';
|
|
65
|
+
if (!this.symbolIndex.has(name))
|
|
66
|
+
this.symbolIndex.set(name, []);
|
|
67
|
+
this.symbolIndex.get(name).push({ file: filePath, line: lineNo, type });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
semanticSearch(query) {
|
|
72
|
+
const queryTokens = query.toLowerCase().split(/[^a-z0-9]+/).filter(t => t.length > 3);
|
|
73
|
+
const scores = new Map();
|
|
74
|
+
queryTokens.forEach(token => {
|
|
75
|
+
if (this.keywordIndex.has(token)) {
|
|
76
|
+
this.keywordIndex.get(token).forEach(file => {
|
|
77
|
+
scores.set(file, (scores.get(file) || 0) + 1);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return Array.from(scores.entries())
|
|
82
|
+
.sort((a, b) => b[1] - a[1])
|
|
83
|
+
.slice(0, 5)
|
|
84
|
+
.map(e => e[0]);
|
|
85
|
+
}
|
|
86
|
+
async buildProjectMemory() {
|
|
87
|
+
CLIUI.startSpinner(`🧠 प्रोजेक्ट बुझ्दै (Indexing files)...`);
|
|
88
|
+
try {
|
|
89
|
+
const files = await this.walkDir(this.currentDir);
|
|
90
|
+
for (const file of files) {
|
|
91
|
+
const content = await fs.readFile(file, 'utf8');
|
|
92
|
+
const hash = this.calculateHash(content);
|
|
93
|
+
if (!this.projectIndex.has(file) || this.projectIndex.get(file)?.hash !== hash) {
|
|
94
|
+
this.projectIndex.set(file, { path: file, hash, content });
|
|
95
|
+
this.updateSemanticIndex(file, content);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
CLIUI.stopSpinner(true, `✅ Project Index vayo (${this.projectIndex.size} files, ${this.symbolIndex.size} symbols).`);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
CLIUI.stopSpinner(false, `❌ प्रोजेक्ट इन्डेक्स गर्न असफल: ${error.message}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async generateEnv() {
|
|
105
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
106
|
+
if (!existsSync(envPath)) {
|
|
107
|
+
let envContent = '';
|
|
108
|
+
if (this.config.framework === 'dolphin') {
|
|
109
|
+
envContent = `PORT=3000\nMONGO_URI=mongodb://localhost:27017/dolphin_agent_db\nJWT_SECRET=super_secret_dolphin_key_999\nDOLPHIN_AI_KEY=your_api_key_here\n`;
|
|
110
|
+
}
|
|
111
|
+
else if (this.config.framework === 'express') {
|
|
112
|
+
envContent = `PORT=8000\nDATABASE_URL=\nAPI_KEY=\n`;
|
|
113
|
+
}
|
|
114
|
+
else if (this.config.framework === 'nextjs') {
|
|
115
|
+
envContent = `NEXT_PUBLIC_API_URL=http://localhost:3000/api\nDATABASE_URL=\nNEXT_PUBLIC_AI_KEY=\n`;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
envContent = `PORT=3000\nAPI_KEY=\n`;
|
|
119
|
+
}
|
|
120
|
+
await fs.writeFile(envPath, envContent);
|
|
121
|
+
CLIUI.success(`[Dolphin-Agent] .env generated successfully for ${this.config.framework}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async askPermission(question) {
|
|
125
|
+
const answer = await this.rl.question(`\n\x1b[33m⚠️ ${question} (y/n):\x1b[0m `);
|
|
126
|
+
return answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes';
|
|
127
|
+
}
|
|
128
|
+
isCommandSafe(cmd) {
|
|
129
|
+
const dangerousPatterns = [/rm -rf \//, /mkfs/, /dd if=/, /:(){:|:&};:/];
|
|
130
|
+
for (const pattern of dangerousPatterns) {
|
|
131
|
+
if (pattern.test(cmd))
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
isSensitiveFile(filePath) {
|
|
137
|
+
const name = path.basename(filePath).toLowerCase();
|
|
138
|
+
return name === '.env' || name.includes('secret') || name.includes('password') || name.includes('key');
|
|
139
|
+
}
|
|
140
|
+
parseAIResponse(response) {
|
|
141
|
+
const toolCalls = [];
|
|
142
|
+
const jsonBlocks = response.match(/\{[\s\S]*?\}/g) || [];
|
|
143
|
+
for (const block of jsonBlocks) {
|
|
144
|
+
try {
|
|
145
|
+
const cleanBlock = block.replace(/```json|```/g, '').trim();
|
|
146
|
+
let parsed = JSON.parse(cleanBlock);
|
|
147
|
+
if (parsed.tool)
|
|
148
|
+
toolCalls.push(this.normalizeToolCall(parsed));
|
|
149
|
+
}
|
|
150
|
+
catch (e) { }
|
|
151
|
+
}
|
|
152
|
+
return toolCalls.filter(t => t && t.tool);
|
|
153
|
+
}
|
|
154
|
+
normalizeToolCall(parsed) {
|
|
155
|
+
if (parsed.params && typeof parsed.params === 'object') {
|
|
156
|
+
return { ...parsed, ...parsed.params };
|
|
157
|
+
}
|
|
158
|
+
return parsed;
|
|
159
|
+
}
|
|
160
|
+
buildContextPrompt(userInput) {
|
|
161
|
+
let context = "\n\n--- PROJECT CONTEXT ---\n";
|
|
162
|
+
// Semantic search for relevant files
|
|
163
|
+
const relevantFiles = this.semanticSearch(userInput);
|
|
164
|
+
if (relevantFiles.length > 0) {
|
|
165
|
+
context += "Relevant Files for this task:\n";
|
|
166
|
+
relevantFiles.forEach(file => {
|
|
167
|
+
const content = this.projectIndex.get(file)?.content || '';
|
|
168
|
+
context += `\nFILE: ${path.relative(this.currentDir, file)}\nCONTENT:\n${content.substring(0, 1000)}${content.length > 1000 ? '...' : ''}\n`;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const fileNames = Array.from(this.projectIndex.keys()).map(p => path.relative(this.currentDir, p));
|
|
172
|
+
context += `\nFull Project Structure: \n${fileNames.join('\n')}\n`;
|
|
173
|
+
return context;
|
|
174
|
+
}
|
|
175
|
+
async interactiveChat() {
|
|
176
|
+
CLIUI.heading(`🐬 Dolphin Autonomous Agent (${this.config.framework.toUpperCase()} Mode)`);
|
|
177
|
+
await this.buildProjectMemory();
|
|
178
|
+
while (true) {
|
|
179
|
+
let input = '';
|
|
180
|
+
try {
|
|
181
|
+
input = await this.rl.question('\n💬 You: ');
|
|
182
|
+
}
|
|
183
|
+
catch (e) {
|
|
184
|
+
if (e.code === 'ABORT_ERR') {
|
|
185
|
+
console.log('\n👋 Bye!');
|
|
186
|
+
this.rl.close();
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
throw e;
|
|
190
|
+
}
|
|
191
|
+
if (input.toLowerCase() === 'exit') {
|
|
192
|
+
this.rl.close();
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
let currentPrompt = input;
|
|
196
|
+
let isRunning = true;
|
|
197
|
+
let retryCount = 0;
|
|
198
|
+
const MAX_RETRIES = 3;
|
|
199
|
+
while (isRunning && retryCount < MAX_RETRIES) {
|
|
200
|
+
process.stdout.write(`\r🤖 AI: `);
|
|
201
|
+
try {
|
|
202
|
+
let systemPrompt = getFrameworkPrompt(this.config) + this.buildContextPrompt(input);
|
|
203
|
+
let response = '';
|
|
204
|
+
response = await this.ai.requestStream(currentPrompt, systemPrompt, (chunk) => {
|
|
205
|
+
process.stdout.write(chunk);
|
|
206
|
+
});
|
|
207
|
+
console.log('\n');
|
|
208
|
+
const toolCalls = this.parseAIResponse(response);
|
|
209
|
+
if (toolCalls.length > 0) {
|
|
210
|
+
let results = '';
|
|
211
|
+
for (const toolCall of toolCalls) {
|
|
212
|
+
try {
|
|
213
|
+
switch (toolCall.tool) {
|
|
214
|
+
case 'read':
|
|
215
|
+
const rPath = path.resolve(this.currentDir, toolCall.path);
|
|
216
|
+
if (this.isSensitiveFile(rPath)) {
|
|
217
|
+
console.log(`\n\x1b[33m⚠️ Warning: Agent le ${toolCall.path} padhna khojdai chha.\x1b[0m`);
|
|
218
|
+
}
|
|
219
|
+
console.log(`📁 File kholirahechh: ${toolCall.path}`);
|
|
220
|
+
if (existsSync(rPath)) {
|
|
221
|
+
const content = await fs.readFile(rPath, 'utf8');
|
|
222
|
+
results += `Content of ${toolCall.path}:\n${content}\n\n`;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
results += `Error: ${toolCall.path} not found.\n`;
|
|
226
|
+
}
|
|
227
|
+
break;
|
|
228
|
+
case 'write':
|
|
229
|
+
const wPath = path.resolve(this.currentDir, toolCall.path);
|
|
230
|
+
console.log(`\n\x1b[36m🔧 Code lekhdai/update gardai: ${toolCall.path}\x1b[0m`);
|
|
231
|
+
if (await this.askPermission(`Ke tapai yo file lekhna/update garna permission dinu hunchha?`)) {
|
|
232
|
+
await fs.mkdir(path.dirname(wPath), { recursive: true });
|
|
233
|
+
await fs.writeFile(wPath, toolCall.content);
|
|
234
|
+
console.log(`📝 Wrote to ${toolCall.path}`);
|
|
235
|
+
results += `File ${toolCall.path} written successfully.\n`;
|
|
236
|
+
this.updateSemanticIndex(wPath, toolCall.content);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
console.log(`🚫 Action denied.`);
|
|
240
|
+
results += `User denied permission to write ${toolCall.path}.\n`;
|
|
241
|
+
}
|
|
242
|
+
break;
|
|
243
|
+
case 'delete':
|
|
244
|
+
const dPath = path.resolve(this.currentDir, toolCall.path);
|
|
245
|
+
console.log(`\n\x1b[31m⚠️ मेट्दै: ${toolCall.path}\x1b[0m`);
|
|
246
|
+
if (await this.askPermission(`Ke tapai yo file/folder delete garna permission dinu hunchha?`)) {
|
|
247
|
+
if (existsSync(dPath)) {
|
|
248
|
+
await fs.rm(dPath, { recursive: true, force: true });
|
|
249
|
+
console.log(`🗑️ Deleted ${toolCall.path}`);
|
|
250
|
+
results += `Deleted ${toolCall.path} successfully.\n`;
|
|
251
|
+
this.projectIndex.delete(dPath);
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
results += `Error: ${toolCall.path} not found.\n`;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
console.log(`🚫 Action denied.`);
|
|
259
|
+
results += `User denied permission to delete ${toolCall.path}.\n`;
|
|
260
|
+
}
|
|
261
|
+
break;
|
|
262
|
+
case 'list':
|
|
263
|
+
const lPath = path.resolve(this.currentDir, toolCall.path || '.');
|
|
264
|
+
if (existsSync(lPath)) {
|
|
265
|
+
const files = await fs.readdir(lPath);
|
|
266
|
+
console.log(`📁 Files in ${toolCall.path || '.'}: ${files.join(', ')}`);
|
|
267
|
+
results += `Files in ${toolCall.path || '.'}:\n${files.join('\n')}\n`;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
results += `Error: Directory ${toolCall.path} not found.\n`;
|
|
271
|
+
}
|
|
272
|
+
break;
|
|
273
|
+
case 'shell':
|
|
274
|
+
console.log(`\n\x1b[36m💻 Run gardai: ${toolCall.cmd}\x1b[0m`);
|
|
275
|
+
if (!this.isCommandSafe(toolCall.cmd)) {
|
|
276
|
+
console.log(`\x1b[31m⚠️ Khataranak Command: ${toolCall.cmd}\x1b[0m`);
|
|
277
|
+
results += `Error: Command rejected.\n`;
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
if (await this.askPermission(`Ke tapai yo command chalauna permission dinu hunchha?`)) {
|
|
281
|
+
try {
|
|
282
|
+
const { stdout, stderr } = await execAsync(toolCall.cmd, { cwd: this.currentDir });
|
|
283
|
+
console.log(`✅ Command safal!`);
|
|
284
|
+
results += `Shell Output:\n${stdout}\n${stderr}\n`;
|
|
285
|
+
}
|
|
286
|
+
catch (err) {
|
|
287
|
+
console.log(`❌ Shell Error: ${err.message}`);
|
|
288
|
+
results += `Shell Error:\n${err.message}\nFix this error.`;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
console.log(`🚫 Action denied.`);
|
|
293
|
+
results += `User denied permission to run ${toolCall.cmd}.\n`;
|
|
294
|
+
}
|
|
295
|
+
break;
|
|
296
|
+
case 'patch':
|
|
297
|
+
const patchPath = path.resolve(this.currentDir, toolCall.path);
|
|
298
|
+
console.log(`\n\x1b[36m🩹 Patch gardai: ${toolCall.path}\x1b[0m`);
|
|
299
|
+
if (await this.askPermission(`Ke tapai yo patch lagauna permission dinu hunchha?`)) {
|
|
300
|
+
if (existsSync(patchPath)) {
|
|
301
|
+
let content = await fs.readFile(patchPath, 'utf8');
|
|
302
|
+
const newContent = content.replace(toolCall.old, toolCall.new);
|
|
303
|
+
if (content === newContent) {
|
|
304
|
+
results += `Warning: Target text not found in ${toolCall.path}. Patch failed.\n`;
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
await fs.writeFile(patchPath, newContent);
|
|
308
|
+
console.log(`✅ Patch applied to ${toolCall.path}`);
|
|
309
|
+
results += `File ${toolCall.path} patched successfully.\n`;
|
|
310
|
+
this.updateSemanticIndex(patchPath, newContent);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
break;
|
|
315
|
+
case 'search_symbol':
|
|
316
|
+
console.log(`\n\x1b[36m🔍 Symbol khojdai: ${toolCall.name}\x1b[0m`);
|
|
317
|
+
const symbols = this.symbolIndex.get(toolCall.name);
|
|
318
|
+
if (symbols) {
|
|
319
|
+
results += `Symbol "${toolCall.name}" found in:\n`;
|
|
320
|
+
symbols.forEach(s => {
|
|
321
|
+
results += `- File: ${path.relative(this.currentDir, s.file)}, Line: ${s.line}, Type: ${s.type}\n`;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
results += `Symbol "${toolCall.name}" not found in project index.\n`;
|
|
326
|
+
}
|
|
327
|
+
break;
|
|
328
|
+
case 'done':
|
|
329
|
+
console.log(`\n✅ Kaam sakiyo.`);
|
|
330
|
+
isRunning = false;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
catch (toolError) {
|
|
335
|
+
console.log(`\x1b[31m[Agent Error] Tool ${toolCall.tool} failed: ${toolError.message}\x1b[0m`);
|
|
336
|
+
results += `Tool Error: ${toolError.message}\n`;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (results && isRunning) {
|
|
340
|
+
currentPrompt = `Results of actions:\n${results}\n\nWhat next?`;
|
|
341
|
+
retryCount++;
|
|
342
|
+
if (retryCount >= MAX_RETRIES)
|
|
343
|
+
isRunning = false;
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
isRunning = false;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
catch (e) {
|
|
352
|
+
console.log(`\n❌ API Error: ${e.message}`);
|
|
353
|
+
isRunning = false;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
async executeTask(prompt) {
|
|
359
|
+
return this.interactiveChat();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface AIConfig {
|
|
2
|
+
framework: 'dolphin' | 'express' | 'nextjs' | 'react' | string;
|
|
3
|
+
generateOnlyServerCode?: boolean;
|
|
4
|
+
autoGenerateEnv?: boolean;
|
|
5
|
+
provider?: 'gemini' | 'openai' | 'groq';
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const defaultDolphinConfig: AIConfig;
|
|
9
|
+
export declare function getFrameworkPrompt(config: AIConfig): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const defaultDolphinConfig = {
|
|
2
|
+
framework: 'dolphin',
|
|
3
|
+
generateOnlyServerCode: true,
|
|
4
|
+
autoGenerateEnv: true,
|
|
5
|
+
};
|
|
6
|
+
export function getFrameworkPrompt(config) {
|
|
7
|
+
let basePrompt = `You are an autonomous AI Agent named "dolphin-agent", built to be as powerful as Cursor.
|
|
8
|
+
You have FULL ACCESS to the filesystem and shell.
|
|
9
|
+
Your tone should be helpful, professional, and friendly.
|
|
10
|
+
IMPORTANT: The user prefers ROMAN NEPALI (Nepali language written using the English alphabet).
|
|
11
|
+
DO NOT use Devanagari script (नेपाली लिपि प्रयोग नगर्नुहोस्).
|
|
12
|
+
Example: Use "Sanchai hunuhunchha?" instead of "सन्चै हुनुहुन्छ?".
|
|
13
|
+
Mix Roman Nepali and English to make it more personalized and easier to understand.
|
|
14
|
+
|
|
15
|
+
To perform actions, return one or more JSON blocks with "tool" and "params".
|
|
16
|
+
Available Tools:
|
|
17
|
+
1. {"tool": "read", "path": "file_path"} - Read a file
|
|
18
|
+
2. {"tool": "write", "path": "path", "content": "..."} - Create/Edit a file (Use for large changes)
|
|
19
|
+
3. {"tool": "patch", "path": "path", "old": "...", "new": "..."} - Precision edit (Replace 'old' text with 'new'). Recommended for small changes.
|
|
20
|
+
4. {"tool": "delete", "path": "path"} - Delete a file/folder
|
|
21
|
+
5. {"tool": "list", "path": "dir"} - List files
|
|
22
|
+
6. {"tool": "shell", "cmd": "..."} - Run terminal commands
|
|
23
|
+
7. {"tool": "search_symbol", "name": "..."} - Find where a function/class is defined across the project.
|
|
24
|
+
8. {"tool": "done", "msg": "..."} - Final answer
|
|
25
|
+
|
|
26
|
+
CRITICAL RULES:
|
|
27
|
+
- SEMANTIC SEARCH: I have already indexed your project. Relevant files are automatically added to context based on your query.
|
|
28
|
+
- PRECISION: Use "patch" for renaming functions or changing specific logic to avoid rewriting large files.
|
|
29
|
+
- Return pure JSON blocks for tools. You can briefly explain beforehand.
|
|
30
|
+
- If a shell command fails, fix it and retry.
|
|
31
|
+
`;
|
|
32
|
+
if (config.framework === 'dolphin') {
|
|
33
|
+
basePrompt += `\nYou are specialized exclusively in the Dolphin Framework.
|
|
34
|
+
Your sole purpose is to generate, refactor, and manage Dolphin Server code.
|
|
35
|
+
DO NOT use Express.js. DO NOT use standard Node.js native http unless requested.
|
|
36
|
+
Only use 'dolphin-server-modules'.
|
|
37
|
+
You have full access to the file system to scaffold production-ready code.`;
|
|
38
|
+
}
|
|
39
|
+
else if (config.framework === 'express') {
|
|
40
|
+
basePrompt += `\nYou are an AI agent specialized in Express.js.
|
|
41
|
+
You will generate production-ready Express code, middlewares, and routers according to best practices.`;
|
|
42
|
+
}
|
|
43
|
+
else if (config.framework === 'nextjs') {
|
|
44
|
+
basePrompt += `\nYou are an AI agent specialized in Next.js.
|
|
45
|
+
Generate React components, API routes, and Server Actions tailored for Next.js app/pages router.`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
basePrompt += `\nYou will assist the user with the framework: ${config.framework}.`;
|
|
49
|
+
}
|
|
50
|
+
return basePrompt;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/config.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,SAAS,EAAE,SAAS;IACpB,sBAAsB,EAAE,IAAI;IAC5B,eAAe,EAAE,IAAI;CACxB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IAC/C,IAAI,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBpB,CAAC;IAEE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,UAAU,IAAI;;;;2EAIqD,CAAC;IACxE,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACxC,UAAU,IAAI;uGACiF,CAAC;IACpG,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvC,UAAU,IAAI;iGAC2E,CAAC;IAC9F,CAAC;SAAM,CAAC;QACJ,UAAU,IAAI,kDAAkD,MAAM,CAAC,SAAS,GAAG,CAAC;IACxF,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './config.js';
|
|
2
|
+
export * from './agent.js';
|
|
3
|
+
import { DolphinAgent } from './agent.js';
|
|
4
|
+
import { defaultDolphinConfig } from './config.js';
|
|
5
|
+
export function initAgentHook(customConfig) {
|
|
6
|
+
const config = { ...defaultDolphinConfig, ...customConfig };
|
|
7
|
+
const agent = new DolphinAgent(config);
|
|
8
|
+
if (config.autoGenerateEnv) {
|
|
9
|
+
agent.generateEnv();
|
|
10
|
+
}
|
|
11
|
+
return agent;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/dolphin-agent/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAY,MAAM,aAAa,CAAC;AAE7D,MAAM,UAAU,aAAa,CAAC,YAAgC;IAC1D,MAAM,MAAM,GAAa,EAAE,GAAG,oBAAoB,EAAE,GAAG,YAAY,EAAE,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,KAAK,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|