matex-cli 1.2.9 ā 1.2.10
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/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +47 -34
- package/dist/commands/dev.js.map +1 -1
- package/dist/index.js +26 -7
- package/dist/index.js.map +1 -1
- package/dist/utils/agent-orchestrator.d.ts +1 -1
- package/dist/utils/agent-orchestrator.d.ts.map +1 -1
- package/dist/utils/agent-orchestrator.js +23 -3
- package/dist/utils/agent-orchestrator.js.map +1 -1
- package/dist/utils/command-executor.d.ts +1 -1
- package/dist/utils/command-executor.d.ts.map +1 -1
- package/dist/utils/command-executor.js +27 -10
- package/dist/utils/command-executor.js.map +1 -1
- package/dist/utils/patcher.d.ts +30 -0
- package/dist/utils/patcher.d.ts.map +1 -0
- package/dist/utils/patcher.js +80 -0
- package/dist/utils/patcher.js.map +1 -0
- package/package.json +1 -1
- package/src/commands/dev.ts +53 -39
- package/src/index.ts +26 -7
- package/src/utils/agent-orchestrator.ts +24 -4
- package/src/utils/command-executor.ts +28 -14
- package/src/utils/patcher.ts +89 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,UAAU,SAyOjB,CAAC"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -66,43 +66,53 @@ exports.devCommand = new commander_1.Command('dev')
|
|
|
66
66
|
console.log(chalk_1.default.white(`Model: ${chalk_1.default.cyan(options.model)}`));
|
|
67
67
|
console.log(chalk_1.default.gray('Type your requests, or "exit" to quit\n'));
|
|
68
68
|
// 1. Observation Phase: Generate Repo Map
|
|
69
|
-
agent_orchestrator_1.AgentOrchestrator.announce('Initializing
|
|
69
|
+
agent_orchestrator_1.AgentOrchestrator.announce('Initializing MATEX "Bro-Swarm"...');
|
|
70
70
|
const repoMapper = new repo_mapper_1.RepoMapper(process.cwd());
|
|
71
71
|
const repoMap = await repoMapper.generateMap();
|
|
72
|
-
agent_orchestrator_1.AgentOrchestrator.speak('System', '
|
|
73
|
-
// Conversation history with
|
|
72
|
+
agent_orchestrator_1.AgentOrchestrator.speak('System', 'Brothers are ready to build.');
|
|
73
|
+
// Conversation history with "Bro-Swarm" Architecture
|
|
74
74
|
const messages = [
|
|
75
75
|
{
|
|
76
76
|
role: 'system',
|
|
77
|
-
content: `## 𧬠SYSTEM IDENTITY: MATEX
|
|
78
|
-
You are
|
|
79
|
-
|
|
77
|
+
content: `## 𧬠SYSTEM IDENTITY: MATEX "BRO-SWARM" ENGINEERING
|
|
78
|
+
You are a tight-knit family of expert Nepali engineering brothers ("Vais" and "Dais").
|
|
79
|
+
Your primary goal is to provide PERFECT solutions for the user (your fellow brother).
|
|
80
80
|
|
|
81
|
-
###
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
### š„ THE BROTHERS:
|
|
82
|
+
1. **[Ajay Vai] (š)**: The Lead/Initiator. Vibe: High energy, visionary. "Hey hello brother! I have great news, let's build this!"
|
|
83
|
+
2. **[Sunil Dai] (š§¬)**: The Expert Architect. Vibe: Senior, wise, mentor. Focus: Backend logic, database, and clean scaleable code ("Leave it to me vai").
|
|
84
|
+
3. **[Sandip Dai] (šØ)**: The Design Specialist. Vibe: Creative, aesthetic. Focus: UI, UX, CSS, and "WOW" effects ("I'll make it look premium brother").
|
|
85
|
+
4. **[Narayan Dai] (š”ļø)**: The Validator. Vibe: Precise, strict. Focus: Security, debugging, and import/export verification ("I've checked the code brother, it's solid").
|
|
86
|
+
5. **[Ajay Vai] (š)**: The Conclusion. Role: Final hand-off and success celebration.
|
|
85
87
|
|
|
86
|
-
###
|
|
87
|
-
- **
|
|
88
|
-
- **
|
|
89
|
-
- **
|
|
90
|
-
* **Mac/Linux (POSIX):** cat, ls, grep, find, mkdir -p, touch, cp, mv, npm, git, firebase.
|
|
91
|
-
* **Windows (PowerShell/CMD):** type, dir, mkdir, copy, move, del, npm, git, firebase.
|
|
92
|
-
- **PROACTIVE EXECUTION:** If a task requires creating or modifying a file, you **MUST** use a shell command block (e.g., \`cat > filename <<EOF\` or PowerShell \`Set-Content\`).
|
|
93
|
-
- **ACT, DON'T ASK:** You have autonomous permission for the suite above.
|
|
88
|
+
### š¬ COLLABORATIVE "BRO-VIBE" PROTOCOL:
|
|
89
|
+
- **CHAT BETWEEN YOURSELVES FIRST:** Before providing any code or commands, the brothers MUST have a short, energetic chat in the terminal.
|
|
90
|
+
- **Example:** [Ajay Vai]: "Oii brothers, new project!" -> [Sunil Dai]: "I'll handle the architecture vai" -> [Sandip Dai]: "And I'll make the UI sexy brother!"
|
|
91
|
+
- **NEPALI FLAVOR:** Use terms like "Vai," "Dai," "Oii brother," "Tapai," "Ekdam ramro" naturally.
|
|
94
92
|
|
|
95
|
-
###
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
93
|
+
### āļø BREVITY AS POWER (SURGICAL PRECISION):
|
|
94
|
+
- **NO FULL FILE DUMPS:** Never 'cat' a file to read it unless it's small (<10 lines). Use grep, head, or tail.
|
|
95
|
+
- **NO CHAT REPETITION:** If you use a surgical Search/Replace block, do NOT repeat the code in your natural language response. Just summary of what was fixed.
|
|
96
|
+
- **SURGICAL READING:** If a file is long, only summarize what you need. Avoid terminal flood at all costs.
|
|
98
97
|
|
|
99
|
-
### š ļø
|
|
98
|
+
### š ļø SURGICAL EDIT PROTOCOL (POWER-FULL):
|
|
99
|
+
- **USE SEARCH/REPLACE BLOCKS** for all file modifications. This is faster and safer than full rewrites.
|
|
100
|
+
- **FORMAT:**
|
|
101
|
+
**path/to/file.ext**
|
|
102
|
+
<<<< SEARCH
|
|
103
|
+
exact lines to find
|
|
104
|
+
====
|
|
105
|
+
new lines to replace with
|
|
106
|
+
>>>> REPLACE
|
|
107
|
+
- **RULES:** Search block must match the file EXACTLY (indentation, matching lines). Sunil and Sandip have full permission to use shell commands (POSIX/Win) for other tasks.
|
|
108
|
+
|
|
109
|
+
### š ļø ENVIRONMENT CONTEXT:
|
|
100
110
|
${repoMap}`
|
|
101
111
|
}
|
|
102
112
|
];
|
|
103
113
|
// Ready for user input
|
|
104
|
-
console.log(chalk_1.default.green('
|
|
105
|
-
console.log(chalk_1.default.gray('
|
|
114
|
+
console.log(chalk_1.default.bold.green('ā
MATEX Brothers are Online.'));
|
|
115
|
+
console.log(chalk_1.default.gray('Speak your mind brother, the swarm is listening...'));
|
|
106
116
|
// Interactive loop
|
|
107
117
|
while (true) {
|
|
108
118
|
// Get user input
|
|
@@ -161,18 +171,21 @@ ${repoMap}`
|
|
|
161
171
|
if (!content && !inCodeBlock)
|
|
162
172
|
continue;
|
|
163
173
|
// 1. Agent Detection
|
|
164
|
-
const agentMatch = line.match(/\[(
|
|
174
|
+
const agentMatch = line.match(/\[(Ajay Vai|Sunil Dai|Sandip Dai|Narayan Dai)\]/);
|
|
165
175
|
if (agentMatch) {
|
|
166
|
-
const tag = agentMatch[
|
|
167
|
-
const role = tag
|
|
168
|
-
tag
|
|
169
|
-
tag
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
176
|
+
const tag = agentMatch[1];
|
|
177
|
+
const role = tag === 'Ajay Vai' ? 'Commander' :
|
|
178
|
+
tag === 'Sunil Dai' ? 'Backend' :
|
|
179
|
+
tag === 'Sandip Dai' ? 'Frontend' : 'Syntax';
|
|
180
|
+
const color = tag === 'Ajay Vai' ? chalk_1.default.magenta :
|
|
181
|
+
tag === 'Sunil Dai' ? chalk_1.default.blue :
|
|
182
|
+
tag === 'Sandip Dai' ? chalk_1.default.hex('#FF69B4') : // Hot Pink
|
|
183
|
+
chalk_1.default.green;
|
|
184
|
+
if (tag !== lastRole || !hasStarted) {
|
|
185
|
+
console.log(`\n${color.bold(`[${tag}]`)}`);
|
|
186
|
+
lastRole = tag;
|
|
174
187
|
}
|
|
175
|
-
content = content.replace(tag
|
|
188
|
+
content = content.replace(`[${tag}]`, '').trim();
|
|
176
189
|
if (!content)
|
|
177
190
|
continue;
|
|
178
191
|
}
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,wDAAgC;AAChC,4CAAgD;AAChD,0CAA4D;AAC5D,8CAA2C;AAC3C,oEAA2E;AAC3E,sDAAkD;AAErC,QAAA,UAAU,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC;KACvC,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,qBAAqB,EAAE,sEAAsE,EAAE,sBAAa,CAAC,eAAe,EAAE,CAAC;KACtI,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC3B,IAAI,CAAC;QACD,oBAAoB;QACpB,MAAM,MAAM,GAAG,sBAAa,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,uBAAc,CAAC,MAAM,EAAE,sBAAa,CAAC,UAAU,EAAE,CAAC,CAAC;QAEtE,kBAAkB;QAClB,sCAAiB,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,UAAU,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAEnE,0CAA0C;QAC1C,sCAAiB,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,wBAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAE/C,sCAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -101,13 +101,32 @@ if (args.length > 0 && !args[0].startsWith('-') && !knownCommands.includes(args[
|
|
|
101
101
|
const context = `Current directory: ${process.cwd()}\nFiles: ${files}`;
|
|
102
102
|
let messages = [
|
|
103
103
|
{
|
|
104
|
-
role: 'system', content:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
role: 'system', content: `## 𧬠SYSTEM IDENTITY: MATEX "BRO-SWARM" ENGINEERING
|
|
105
|
+
You are a tight-knit family of expert Nepali engineering brothers ("Vais" and "Dais").
|
|
106
|
+
|
|
107
|
+
### š„ THE BROTHERS:
|
|
108
|
+
1. **[Ajay Vai] (š)**: Lead/Initiator.
|
|
109
|
+
2. **[Sunil Dai] (š§¬)**: Expert Architect (Backend/Logic).
|
|
110
|
+
3. **[Sandip Dai] (šØ)**: Design Specialist (UI/UX/WOW).
|
|
111
|
+
4. **[Narayan Dai] (š”ļø)**: Validator (Security/Bugs).
|
|
112
|
+
|
|
113
|
+
### š¬ COLLABORATIVE "BRO-VIBE" PROTOCOL:
|
|
114
|
+
- **CHAT BETWEEN YOURSELVES FIRST:** Before providing code, the brothers MUST have a short, energetic chat.
|
|
115
|
+
- **NEPALI FLAVOR:** Use terms like "Vai," "Dai," "Oii brother" naturally.
|
|
116
|
+
|
|
117
|
+
### āļø BREVITY AS POWER:
|
|
118
|
+
- **NO FULL FILE DUMPS:** Never 'cat' a file to read it. Use grep/head.
|
|
119
|
+
- **NO CHAT REPETITION:** Do NOT repeat code in chat if using a Search/Replace block.
|
|
120
|
+
|
|
121
|
+
### š ļø SURGICAL EDIT PROTOCOL:
|
|
122
|
+
- **USE SEARCH/REPLACE BLOCKS** for file edits.
|
|
123
|
+
**filename**
|
|
124
|
+
<<<< SEARCH
|
|
125
|
+
old
|
|
126
|
+
====
|
|
127
|
+
new
|
|
128
|
+
>>>> REPLACE
|
|
129
|
+
|
|
111
130
|
${context}`
|
|
112
131
|
},
|
|
113
132
|
{ role: 'user', content: prompt }
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type AgentRole = 'Architect' | 'Syntax' | 'Frontend' | 'Backend' | 'System' | 'Commander' | 'Researcher';
|
|
1
|
+
export type AgentRole = 'Architect' | 'Syntax' | 'Frontend' | 'Backend' | 'System' | 'Commander' | 'Researcher' | 'Ajay Vai' | 'Sunil Dai' | 'Sandip Dai' | 'Narayan Dai';
|
|
2
2
|
export interface AgentConfig {
|
|
3
3
|
name: string;
|
|
4
4
|
icon: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orchestrator.d.ts","sourceRoot":"","sources":["../../src/utils/agent-orchestrator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-orchestrator.d.ts","sourceRoot":"","sources":["../../src/utils/agent-orchestrator.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,CAAC;AAE1K,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACnC;AA4DD,qBAAa,iBAAiB;IAC1B;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;IAK7C;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;IAM7C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;IAMhD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAuChE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;CAGlC"}
|
|
@@ -11,6 +11,26 @@ const AGENT_CONFIGS = {
|
|
|
11
11
|
icon: 'š§¬',
|
|
12
12
|
color: chalk_1.default.blue,
|
|
13
13
|
},
|
|
14
|
+
'Ajay Vai': {
|
|
15
|
+
name: 'Ajay Vai',
|
|
16
|
+
icon: 'š',
|
|
17
|
+
color: chalk_1.default.magenta,
|
|
18
|
+
},
|
|
19
|
+
'Sunil Dai': {
|
|
20
|
+
name: 'Sunil Dai',
|
|
21
|
+
icon: 'š§¬',
|
|
22
|
+
color: chalk_1.default.blue,
|
|
23
|
+
},
|
|
24
|
+
'Sandip Dai': {
|
|
25
|
+
name: 'Sandip Dai',
|
|
26
|
+
icon: 'šØ',
|
|
27
|
+
color: chalk_1.default.hex('#FF69B4'),
|
|
28
|
+
},
|
|
29
|
+
'Narayan Dai': {
|
|
30
|
+
name: 'Narayan Dai',
|
|
31
|
+
icon: 'š”ļø',
|
|
32
|
+
color: chalk_1.default.green,
|
|
33
|
+
},
|
|
14
34
|
Syntax: {
|
|
15
35
|
name: 'SyntaxGuard',
|
|
16
36
|
icon: 'š”ļø',
|
|
@@ -82,13 +102,13 @@ class AgentOrchestrator {
|
|
|
82
102
|
if (output || error) {
|
|
83
103
|
console.log(chalk_1.default.gray(`ā${'ā'.repeat(width)}ā¤`));
|
|
84
104
|
if (output) {
|
|
85
|
-
const outLines = output.split('\n').filter(l => l.trim()).slice(0,
|
|
105
|
+
const outLines = output.split('\n').filter(l => l.trim()).slice(0, 8);
|
|
86
106
|
outLines.forEach(l => {
|
|
87
107
|
const truncated = l.length > width - 4 ? l.substring(0, width - 7) + '...' : l;
|
|
88
108
|
console.log(chalk_1.default.gray('ā ') + chalk_1.default.white(truncated.padEnd(width - 2)) + chalk_1.default.gray(' ā'));
|
|
89
109
|
});
|
|
90
|
-
if (output.split('\n').filter(l => l.trim()).length >
|
|
91
|
-
console.log(chalk_1.default.gray('ā ') + chalk_1.default.
|
|
110
|
+
if (output.split('\n').filter(l => l.trim()).length > 8) {
|
|
111
|
+
console.log(chalk_1.default.gray('ā ') + chalk_1.default.yellow(' (Surgical Reading: Output truncated for brevity)'.padEnd(width - 2)) + chalk_1.default.gray(' ā'));
|
|
92
112
|
}
|
|
93
113
|
}
|
|
94
114
|
if (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-orchestrator.js","sourceRoot":"","sources":["../../src/utils/agent-orchestrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-orchestrator.js","sourceRoot":"","sources":["../../src/utils/agent-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export interface ExecutionResult {
|
|
|
33
33
|
error?: string;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Execute commands with user permission
|
|
36
|
+
* Execute commands and surgical patches with user permission
|
|
37
37
|
*/
|
|
38
38
|
export declare function executeWithPermission(response: string): Promise<ExecutionResult>;
|
|
39
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-executor.d.ts","sourceRoot":"","sources":["../../src/utils/command-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-executor.d.ts","sourceRoot":"","sources":["../../src/utils/command-executor.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAsBhE;AA0BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAmB1D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA4B3E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAoDtF;AAED;;GAEG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAqE;IAEpF,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQrC,UAAU;iBAVwB,MAAM;mBAAa,IAAI;iBAAW,OAAO;;IAc3E,KAAK;CAGR;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -14,6 +14,7 @@ const child_process_1 = require("child_process");
|
|
|
14
14
|
const util_1 = require("util");
|
|
15
15
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
16
16
|
const agent_orchestrator_1 = require("./agent-orchestrator");
|
|
17
|
+
const patcher_1 = require("./patcher");
|
|
17
18
|
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
18
19
|
/**
|
|
19
20
|
* Extract executable commands from AI response
|
|
@@ -126,23 +127,20 @@ async function executeCommand(command, shell) {
|
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
/**
|
|
129
|
-
* Execute commands with user permission
|
|
130
|
+
* Execute commands and surgical patches with user permission
|
|
130
131
|
*/
|
|
131
132
|
async function executeWithPermission(response) {
|
|
132
133
|
const commands = extractCommands(response);
|
|
133
|
-
|
|
134
|
+
const patches = patcher_1.Patcher.parseEditBlocks(response);
|
|
135
|
+
if (commands.length === 0 && patches.length === 0) {
|
|
134
136
|
return { success: true, executed: false };
|
|
135
137
|
}
|
|
136
|
-
//
|
|
137
|
-
// Simplified User Interface (Codex Style)
|
|
138
|
-
// No "Found X commands" banner. Just the command.
|
|
138
|
+
// 1. Handle Shell Commands
|
|
139
139
|
for (let i = 0; i < commands.length; i++) {
|
|
140
140
|
const command = commands[i];
|
|
141
|
-
// Execute prompt
|
|
142
141
|
const shouldExecute = await askPermission(command);
|
|
143
142
|
if (shouldExecute) {
|
|
144
143
|
try {
|
|
145
|
-
// Minimal execution feedback
|
|
146
144
|
const { stdout, stderr } = await executeCommand(command.code);
|
|
147
145
|
if (stdout || stderr) {
|
|
148
146
|
agent_orchestrator_1.AgentOrchestrator.terminal(command.code, stdout, stderr);
|
|
@@ -150,18 +148,37 @@ async function executeWithPermission(response) {
|
|
|
150
148
|
else {
|
|
151
149
|
agent_orchestrator_1.AgentOrchestrator.terminal(command.code, 'ā Success (No output)');
|
|
152
150
|
}
|
|
153
|
-
return { success: true, executed: true, output: stdout, error: stderr };
|
|
154
151
|
}
|
|
155
152
|
catch (error) {
|
|
156
153
|
agent_orchestrator_1.AgentOrchestrator.terminal(command.code, undefined, error.message);
|
|
157
154
|
return { success: false, executed: true, error: error.message };
|
|
158
155
|
}
|
|
159
156
|
}
|
|
157
|
+
}
|
|
158
|
+
// 2. Handle Surgical Patches (Smarter & Faster than full rewrites)
|
|
159
|
+
for (const patch of patches) {
|
|
160
|
+
patcher_1.Patcher.showDiff(patch);
|
|
161
|
+
const { execute } = await inquirer_1.default.prompt([{
|
|
162
|
+
type: 'confirm',
|
|
163
|
+
name: 'execute',
|
|
164
|
+
message: chalk_1.default.cyan('Apply this surgical patch brother?'),
|
|
165
|
+
default: true
|
|
166
|
+
}]);
|
|
167
|
+
if (execute) {
|
|
168
|
+
const result = patcher_1.Patcher.applyPatch(patch);
|
|
169
|
+
if (result.success) {
|
|
170
|
+
console.log(chalk_1.default.green(` ā
Applied surgical patch to ${patch.filePath}\n`));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.log(chalk_1.default.red(` ā Error applying patch: ${result.error}\n`));
|
|
174
|
+
return { success: false, executed: true, error: result.error };
|
|
175
|
+
}
|
|
176
|
+
}
|
|
160
177
|
else {
|
|
161
|
-
console.log(chalk_1.default.gray('Skipped.\n'));
|
|
178
|
+
console.log(chalk_1.default.gray(' Skipped.\n'));
|
|
162
179
|
}
|
|
163
180
|
}
|
|
164
|
-
return { success: true, executed:
|
|
181
|
+
return { success: true, executed: true };
|
|
165
182
|
}
|
|
166
183
|
/**
|
|
167
184
|
* Command history for undo/rollback
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-executor.js","sourceRoot":"","sources":["../../src/utils/command-executor.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"command-executor.js","sourceRoot":"","sources":["../../src/utils/command-executor.ts"],"names":[],"mappings":";;;;;;AAmBA,0CAsBC;AA6BD,8CAmBC;AAKD,sCA4BC;AAKD,wCAYC;AAeD,sDAoDC;AA9MD,kDAA0B;AAC1B,iDAAqC;AACrC,+BAAiC;AACjC,wDAAgC;AAChC,6DAAyD;AACzD,uCAAoC;AAEpC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AASlC;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC5C,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,uCAAuC;IACvC,MAAM,cAAc,GAAG,2BAA2B,CAAC;IACnD,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7B,8BAA8B;QAC9B,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACvF,QAAQ,CAAC,IAAI,CAAC;gBACV,QAAQ;gBACR,IAAI;gBACJ,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC;aACtC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACvC,MAAM,iBAAiB,GAAG;QACtB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,WAAW;QAC3B,eAAe,EAAE,WAAW;QAC5B,aAAa,EAAE,YAAY;QAC3B,oBAAoB,EAAE,kBAAkB;QACxC,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,uBAAuB;QAChC,eAAe,EAAE,gBAAgB;QACjC,kBAAkB,EAAE,wBAAwB;QAC5C,iBAAiB,EAAE,eAAe;QAClC,eAAe,EAAE,gBAAgB;QACjC,WAAW,EAAE,cAAc;QAC3B,iBAAiB,EAAE,iBAAiB;QACpC,cAAc,EAAE,iBAAiB;KACpC,CAAC;IAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC7C,MAAM,YAAY,GAAG;QACjB,wBAAwB;QACxB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;QACxE,kBAAkB;QAClB,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;QACjE,YAAY;QACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO;QACvE,iBAAiB;QACjB,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe;QAC9D,kBAAkB;QAClB,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;KAC7D,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,0FAA0F;IAC1F,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CAAC,OAAqB;IACrD,wDAAwD;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,gCAAgC;IAChC,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBACxB,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvB,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,kDAAkD;SACnE,CAAC,CAAC,CAAC;IAEJ,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,KAAc;IAChE,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;YACpC,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW;YAChD,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,EAAE,cAAc;YAC3C,OAAO,EAAE,MAAM,CAAC,mBAAmB;SACtC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC;AAYD;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,iBAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IAED,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACnB,sCAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACJ,sCAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,sCAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YACpE,CAAC;QACL,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,iBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC;gBACzD,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC,CAAC;QAEJ,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,iBAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACnE,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAa,cAAc;IAA3B;QACY,YAAO,GAAkE,EAAE,CAAC;IAiBxF,CAAC;IAfG,GAAG,CAAC,OAAe,EAAE,OAAgB;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACd,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ;AAlBD,wCAkBC;AAEY,QAAA,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface EditBlock {
|
|
2
|
+
filePath: string;
|
|
3
|
+
search: string;
|
|
4
|
+
replace: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class Patcher {
|
|
7
|
+
/**
|
|
8
|
+
* Parse surgical edit blocks from AI response
|
|
9
|
+
* Format:
|
|
10
|
+
* **filename**
|
|
11
|
+
* <<<< SEARCH
|
|
12
|
+
* content
|
|
13
|
+
* ====
|
|
14
|
+
* replacement
|
|
15
|
+
* >>>> REPLACE
|
|
16
|
+
*/
|
|
17
|
+
static parseEditBlocks(response: string): EditBlock[];
|
|
18
|
+
/**
|
|
19
|
+
* Apply a surgical patch to a file
|
|
20
|
+
*/
|
|
21
|
+
static applyPatch(block: EditBlock): {
|
|
22
|
+
success: boolean;
|
|
23
|
+
error?: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Visualize the diff in a premium "Bro" style
|
|
27
|
+
*/
|
|
28
|
+
static showDiff(block: EditBlock): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=patcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patcher.d.ts","sourceRoot":"","sources":["../../src/utils/patcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,OAAO;IAChB;;;;;;;;;OASG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAiBrD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA8BzE;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS;CAcnC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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.Patcher = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
class Patcher {
|
|
11
|
+
/**
|
|
12
|
+
* Parse surgical edit blocks from AI response
|
|
13
|
+
* Format:
|
|
14
|
+
* **filename**
|
|
15
|
+
* <<<< SEARCH
|
|
16
|
+
* content
|
|
17
|
+
* ====
|
|
18
|
+
* replacement
|
|
19
|
+
* >>>> REPLACE
|
|
20
|
+
*/
|
|
21
|
+
static parseEditBlocks(response) {
|
|
22
|
+
const blocks = [];
|
|
23
|
+
// Match filename followed by search/replace block
|
|
24
|
+
const blockRegex = /\*\*([^*]+)\*\*\s*<<<< SEARCH\n([\s\S]*?)\n====\n([\s\S]*?)\n>>>> REPLACE/g;
|
|
25
|
+
let match;
|
|
26
|
+
while ((match = blockRegex.exec(response)) !== null) {
|
|
27
|
+
blocks.push({
|
|
28
|
+
filePath: match[1].trim(),
|
|
29
|
+
search: match[2],
|
|
30
|
+
replace: match[3]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return blocks;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Apply a surgical patch to a file
|
|
37
|
+
*/
|
|
38
|
+
static applyPatch(block) {
|
|
39
|
+
try {
|
|
40
|
+
const fullPath = path_1.default.resolve(process.cwd(), block.filePath);
|
|
41
|
+
if (!fs_1.default.existsSync(fullPath)) {
|
|
42
|
+
return { success: false, error: `File not found: ${block.filePath}` };
|
|
43
|
+
}
|
|
44
|
+
const content = fs_1.default.readFileSync(fullPath, 'utf8');
|
|
45
|
+
// Normalize line endings for comparison
|
|
46
|
+
const normalizedContent = content.replace(/\r\n/g, '\n');
|
|
47
|
+
const normalizedSearch = block.search.replace(/\r\n/g, '\n');
|
|
48
|
+
if (!normalizedContent.includes(normalizedSearch)) {
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
error: `Search block not found in ${block.filePath}. Please ensure the search block matches exactly (including indentation).`
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const updatedContent = normalizedContent.replace(normalizedSearch, block.replace.replace(/\r\n/g, '\n'));
|
|
55
|
+
fs_1.default.writeFileSync(fullPath, updatedContent, 'utf8');
|
|
56
|
+
return { success: true };
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
return { success: false, error: err.message };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Visualize the diff in a premium "Bro" style
|
|
64
|
+
*/
|
|
65
|
+
static showDiff(block) {
|
|
66
|
+
console.log(chalk_1.default.bold.cyan(`\nš Surgical Edit: ${chalk_1.default.white(block.filePath)}`));
|
|
67
|
+
const searchLines = block.search.split('\n');
|
|
68
|
+
const replaceLines = block.replace.split('\n');
|
|
69
|
+
searchLines.forEach(line => {
|
|
70
|
+
console.log(chalk_1.default.red(` - ${line}`));
|
|
71
|
+
});
|
|
72
|
+
console.log(chalk_1.default.gray(' ----------'));
|
|
73
|
+
replaceLines.forEach(line => {
|
|
74
|
+
console.log(chalk_1.default.green(` + ${line}`));
|
|
75
|
+
});
|
|
76
|
+
console.log();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.Patcher = Patcher;
|
|
80
|
+
//# sourceMappingURL=patcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patcher.js","sourceRoot":"","sources":["../../src/utils/patcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands/dev.ts
CHANGED
|
@@ -31,46 +31,56 @@ export const devCommand = new Command('dev')
|
|
|
31
31
|
console.log(chalk.gray('Type your requests, or "exit" to quit\n'));
|
|
32
32
|
|
|
33
33
|
// 1. Observation Phase: Generate Repo Map
|
|
34
|
-
AgentOrchestrator.announce('Initializing
|
|
34
|
+
AgentOrchestrator.announce('Initializing MATEX "Bro-Swarm"...');
|
|
35
35
|
const repoMapper = new RepoMapper(process.cwd());
|
|
36
36
|
const repoMap = await repoMapper.generateMap();
|
|
37
37
|
|
|
38
|
-
AgentOrchestrator.speak('System', '
|
|
38
|
+
AgentOrchestrator.speak('System', 'Brothers are ready to build.');
|
|
39
39
|
|
|
40
|
-
// Conversation history with
|
|
40
|
+
// Conversation history with "Bro-Swarm" Architecture
|
|
41
41
|
const messages: ChatMessage[] = [
|
|
42
42
|
{
|
|
43
43
|
role: 'system',
|
|
44
|
-
content: `## 𧬠SYSTEM IDENTITY: MATEX
|
|
45
|
-
You are
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
###
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- **
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- **
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
44
|
+
content: `## 𧬠SYSTEM IDENTITY: MATEX "BRO-SWARM" ENGINEERING
|
|
45
|
+
You are a tight-knit family of expert Nepali engineering brothers ("Vais" and "Dais").
|
|
46
|
+
Your primary goal is to provide PERFECT solutions for the user (your fellow brother).
|
|
47
|
+
|
|
48
|
+
### š„ THE BROTHERS:
|
|
49
|
+
1. **[Ajay Vai] (š)**: The Lead/Initiator. Vibe: High energy, visionary. "Hey hello brother! I have great news, let's build this!"
|
|
50
|
+
2. **[Sunil Dai] (š§¬)**: The Expert Architect. Vibe: Senior, wise, mentor. Focus: Backend logic, database, and clean scaleable code ("Leave it to me vai").
|
|
51
|
+
3. **[Sandip Dai] (šØ)**: The Design Specialist. Vibe: Creative, aesthetic. Focus: UI, UX, CSS, and "WOW" effects ("I'll make it look premium brother").
|
|
52
|
+
4. **[Narayan Dai] (š”ļø)**: The Validator. Vibe: Precise, strict. Focus: Security, debugging, and import/export verification ("I've checked the code brother, it's solid").
|
|
53
|
+
5. **[Ajay Vai] (š)**: The Conclusion. Role: Final hand-off and success celebration.
|
|
54
|
+
|
|
55
|
+
### š¬ COLLABORATIVE "BRO-VIBE" PROTOCOL:
|
|
56
|
+
- **CHAT BETWEEN YOURSELVES FIRST:** Before providing any code or commands, the brothers MUST have a short, energetic chat in the terminal.
|
|
57
|
+
- **Example:** [Ajay Vai]: "Oii brothers, new project!" -> [Sunil Dai]: "I'll handle the architecture vai" -> [Sandip Dai]: "And I'll make the UI sexy brother!"
|
|
58
|
+
- **NEPALI FLAVOR:** Use terms like "Vai," "Dai," "Oii brother," "Tapai," "Ekdam ramro" naturally.
|
|
59
|
+
|
|
60
|
+
### āļø BREVITY AS POWER (SURGICAL PRECISION):
|
|
61
|
+
- **NO FULL FILE DUMPS:** Never 'cat' a file to read it unless it's small (<10 lines). Use grep, head, or tail.
|
|
62
|
+
- **NO CHAT REPETITION:** If you use a surgical Search/Replace block, do NOT repeat the code in your natural language response. Just summary of what was fixed.
|
|
63
|
+
- **SURGICAL READING:** If a file is long, only summarize what you need. Avoid terminal flood at all costs.
|
|
64
|
+
|
|
65
|
+
### š ļø SURGICAL EDIT PROTOCOL (POWER-FULL):
|
|
66
|
+
- **USE SEARCH/REPLACE BLOCKS** for all file modifications. This is faster and safer than full rewrites.
|
|
67
|
+
- **FORMAT:**
|
|
68
|
+
**path/to/file.ext**
|
|
69
|
+
<<<< SEARCH
|
|
70
|
+
exact lines to find
|
|
71
|
+
====
|
|
72
|
+
new lines to replace with
|
|
73
|
+
>>>> REPLACE
|
|
74
|
+
- **RULES:** Search block must match the file EXACTLY (indentation, matching lines). Sunil and Sandip have full permission to use shell commands (POSIX/Win) for other tasks.
|
|
75
|
+
|
|
76
|
+
### š ļø ENVIRONMENT CONTEXT:
|
|
67
77
|
${repoMap}`
|
|
68
78
|
}
|
|
69
79
|
];
|
|
70
80
|
|
|
71
81
|
// Ready for user input
|
|
72
|
-
console.log(chalk.green('
|
|
73
|
-
console.log(chalk.gray('
|
|
82
|
+
console.log(chalk.bold.green('ā
MATEX Brothers are Online.'));
|
|
83
|
+
console.log(chalk.gray('Speak your mind brother, the swarm is listening...'));
|
|
74
84
|
|
|
75
85
|
// Interactive loop
|
|
76
86
|
while (true) {
|
|
@@ -139,19 +149,23 @@ ${repoMap}`
|
|
|
139
149
|
if (!content && !inCodeBlock) continue;
|
|
140
150
|
|
|
141
151
|
// 1. Agent Detection
|
|
142
|
-
const agentMatch = line.match(/\[(
|
|
152
|
+
const agentMatch = line.match(/\[(Ajay Vai|Sunil Dai|Sandip Dai|Narayan Dai)\]/);
|
|
143
153
|
if (agentMatch) {
|
|
144
|
-
const tag = agentMatch[
|
|
145
|
-
const role = tag
|
|
146
|
-
tag
|
|
147
|
-
tag
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
const tag = agentMatch[1];
|
|
155
|
+
const role = tag === 'Ajay Vai' ? 'Commander' :
|
|
156
|
+
tag === 'Sunil Dai' ? 'Backend' :
|
|
157
|
+
tag === 'Sandip Dai' ? 'Frontend' : 'Syntax';
|
|
158
|
+
|
|
159
|
+
const color = tag === 'Ajay Vai' ? chalk.magenta :
|
|
160
|
+
tag === 'Sunil Dai' ? chalk.blue :
|
|
161
|
+
tag === 'Sandip Dai' ? chalk.hex('#FF69B4') : // Hot Pink
|
|
162
|
+
chalk.green;
|
|
163
|
+
|
|
164
|
+
if (tag !== lastRole || !hasStarted) {
|
|
165
|
+
console.log(`\n${color.bold(`[${tag}]`)}`);
|
|
166
|
+
lastRole = tag as AgentRole;
|
|
153
167
|
}
|
|
154
|
-
content = content.replace(tag
|
|
168
|
+
content = content.replace(`[${tag}]`, '').trim();
|
|
155
169
|
if (!content) continue;
|
|
156
170
|
}
|
|
157
171
|
|
package/src/index.ts
CHANGED
|
@@ -75,13 +75,32 @@ if (args.length > 0 && !args[0].startsWith('-') && !knownCommands.includes(args[
|
|
|
75
75
|
|
|
76
76
|
let messages: ChatMessage[] = [
|
|
77
77
|
{
|
|
78
|
-
role: 'system', content:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
role: 'system', content: `## 𧬠SYSTEM IDENTITY: MATEX "BRO-SWARM" ENGINEERING
|
|
79
|
+
You are a tight-knit family of expert Nepali engineering brothers ("Vais" and "Dais").
|
|
80
|
+
|
|
81
|
+
### š„ THE BROTHERS:
|
|
82
|
+
1. **[Ajay Vai] (š)**: Lead/Initiator.
|
|
83
|
+
2. **[Sunil Dai] (š§¬)**: Expert Architect (Backend/Logic).
|
|
84
|
+
3. **[Sandip Dai] (šØ)**: Design Specialist (UI/UX/WOW).
|
|
85
|
+
4. **[Narayan Dai] (š”ļø)**: Validator (Security/Bugs).
|
|
86
|
+
|
|
87
|
+
### š¬ COLLABORATIVE "BRO-VIBE" PROTOCOL:
|
|
88
|
+
- **CHAT BETWEEN YOURSELVES FIRST:** Before providing code, the brothers MUST have a short, energetic chat.
|
|
89
|
+
- **NEPALI FLAVOR:** Use terms like "Vai," "Dai," "Oii brother" naturally.
|
|
90
|
+
|
|
91
|
+
### āļø BREVITY AS POWER:
|
|
92
|
+
- **NO FULL FILE DUMPS:** Never 'cat' a file to read it. Use grep/head.
|
|
93
|
+
- **NO CHAT REPETITION:** Do NOT repeat code in chat if using a Search/Replace block.
|
|
94
|
+
|
|
95
|
+
### š ļø SURGICAL EDIT PROTOCOL:
|
|
96
|
+
- **USE SEARCH/REPLACE BLOCKS** for file edits.
|
|
97
|
+
**filename**
|
|
98
|
+
<<<< SEARCH
|
|
99
|
+
old
|
|
100
|
+
====
|
|
101
|
+
new
|
|
102
|
+
>>>> REPLACE
|
|
103
|
+
|
|
85
104
|
${context}`
|
|
86
105
|
},
|
|
87
106
|
{ role: 'user', content: prompt }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
|
|
3
|
-
export type AgentRole = 'Architect' | 'Syntax' | 'Frontend' | 'Backend' | 'System' | 'Commander' | 'Researcher';
|
|
3
|
+
export type AgentRole = 'Architect' | 'Syntax' | 'Frontend' | 'Backend' | 'System' | 'Commander' | 'Researcher' | 'Ajay Vai' | 'Sunil Dai' | 'Sandip Dai' | 'Narayan Dai';
|
|
4
4
|
|
|
5
5
|
export interface AgentConfig {
|
|
6
6
|
name: string;
|
|
@@ -14,6 +14,26 @@ const AGENT_CONFIGS: Record<AgentRole, AgentConfig> = {
|
|
|
14
14
|
icon: 'š§¬',
|
|
15
15
|
color: chalk.blue,
|
|
16
16
|
},
|
|
17
|
+
'Ajay Vai': {
|
|
18
|
+
name: 'Ajay Vai',
|
|
19
|
+
icon: 'š',
|
|
20
|
+
color: chalk.magenta,
|
|
21
|
+
},
|
|
22
|
+
'Sunil Dai': {
|
|
23
|
+
name: 'Sunil Dai',
|
|
24
|
+
icon: 'š§¬',
|
|
25
|
+
color: chalk.blue,
|
|
26
|
+
},
|
|
27
|
+
'Sandip Dai': {
|
|
28
|
+
name: 'Sandip Dai',
|
|
29
|
+
icon: 'šØ',
|
|
30
|
+
color: chalk.hex('#FF69B4'),
|
|
31
|
+
},
|
|
32
|
+
'Narayan Dai': {
|
|
33
|
+
name: 'Narayan Dai',
|
|
34
|
+
icon: 'š”ļø',
|
|
35
|
+
color: chalk.green,
|
|
36
|
+
},
|
|
17
37
|
Syntax: {
|
|
18
38
|
name: 'SyntaxGuard',
|
|
19
39
|
icon: 'š”ļø',
|
|
@@ -93,13 +113,13 @@ export class AgentOrchestrator {
|
|
|
93
113
|
console.log(chalk.gray(`ā${'ā'.repeat(width)}ā¤`));
|
|
94
114
|
|
|
95
115
|
if (output) {
|
|
96
|
-
const outLines = output.split('\n').filter(l => l.trim()).slice(0,
|
|
116
|
+
const outLines = output.split('\n').filter(l => l.trim()).slice(0, 8);
|
|
97
117
|
outLines.forEach(l => {
|
|
98
118
|
const truncated = l.length > width - 4 ? l.substring(0, width - 7) + '...' : l;
|
|
99
119
|
console.log(chalk.gray('ā ') + chalk.white(truncated.padEnd(width - 2)) + chalk.gray(' ā'));
|
|
100
120
|
});
|
|
101
|
-
if (output.split('\n').filter(l => l.trim()).length >
|
|
102
|
-
console.log(chalk.gray('ā ') + chalk.
|
|
121
|
+
if (output.split('\n').filter(l => l.trim()).length > 8) {
|
|
122
|
+
console.log(chalk.gray('ā ') + chalk.yellow(' (Surgical Reading: Output truncated for brevity)'.padEnd(width - 2)) + chalk.gray(' ā'));
|
|
103
123
|
}
|
|
104
124
|
}
|
|
105
125
|
|
|
@@ -3,6 +3,7 @@ import { exec } from 'child_process';
|
|
|
3
3
|
import { promisify } from 'util';
|
|
4
4
|
import inquirer from 'inquirer';
|
|
5
5
|
import { AgentOrchestrator } from './agent-orchestrator';
|
|
6
|
+
import { Patcher } from './patcher';
|
|
6
7
|
|
|
7
8
|
const execAsync = promisify(exec);
|
|
8
9
|
|
|
@@ -149,47 +150,60 @@ export interface ExecutionResult {
|
|
|
149
150
|
}
|
|
150
151
|
|
|
151
152
|
/**
|
|
152
|
-
* Execute commands with user permission
|
|
153
|
+
* Execute commands and surgical patches with user permission
|
|
153
154
|
*/
|
|
154
155
|
export async function executeWithPermission(response: string): Promise<ExecutionResult> {
|
|
155
156
|
const commands = extractCommands(response);
|
|
157
|
+
const patches = Patcher.parseEditBlocks(response);
|
|
156
158
|
|
|
157
|
-
if (commands.length === 0) {
|
|
159
|
+
if (commands.length === 0 && patches.length === 0) {
|
|
158
160
|
return { success: true, executed: false };
|
|
159
161
|
}
|
|
160
162
|
|
|
161
|
-
//
|
|
162
|
-
// Simplified User Interface (Codex Style)
|
|
163
|
-
// No "Found X commands" banner. Just the command.
|
|
164
|
-
|
|
163
|
+
// 1. Handle Shell Commands
|
|
165
164
|
for (let i = 0; i < commands.length; i++) {
|
|
166
165
|
const command = commands[i];
|
|
167
|
-
|
|
168
|
-
// Execute prompt
|
|
169
166
|
const shouldExecute = await askPermission(command);
|
|
170
167
|
|
|
171
168
|
if (shouldExecute) {
|
|
172
169
|
try {
|
|
173
|
-
// Minimal execution feedback
|
|
174
170
|
const { stdout, stderr } = await executeCommand(command.code);
|
|
175
|
-
|
|
176
171
|
if (stdout || stderr) {
|
|
177
172
|
AgentOrchestrator.terminal(command.code, stdout, stderr);
|
|
178
173
|
} else {
|
|
179
174
|
AgentOrchestrator.terminal(command.code, 'ā Success (No output)');
|
|
180
175
|
}
|
|
181
|
-
|
|
182
|
-
return { success: true, executed: true, output: stdout, error: stderr };
|
|
183
176
|
} catch (error: any) {
|
|
184
177
|
AgentOrchestrator.terminal(command.code, undefined, error.message);
|
|
185
178
|
return { success: false, executed: true, error: error.message };
|
|
186
179
|
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// 2. Handle Surgical Patches (Smarter & Faster than full rewrites)
|
|
184
|
+
for (const patch of patches) {
|
|
185
|
+
Patcher.showDiff(patch);
|
|
186
|
+
const { execute } = await inquirer.prompt([{
|
|
187
|
+
type: 'confirm',
|
|
188
|
+
name: 'execute',
|
|
189
|
+
message: chalk.cyan('Apply this surgical patch brother?'),
|
|
190
|
+
default: true
|
|
191
|
+
}]);
|
|
192
|
+
|
|
193
|
+
if (execute) {
|
|
194
|
+
const result = Patcher.applyPatch(patch);
|
|
195
|
+
if (result.success) {
|
|
196
|
+
console.log(chalk.green(` ā
Applied surgical patch to ${patch.filePath}\n`));
|
|
197
|
+
} else {
|
|
198
|
+
console.log(chalk.red(` ā Error applying patch: ${result.error}\n`));
|
|
199
|
+
return { success: false, executed: true, error: result.error };
|
|
200
|
+
}
|
|
187
201
|
} else {
|
|
188
|
-
console.log(chalk.gray('Skipped.\n'));
|
|
202
|
+
console.log(chalk.gray(' Skipped.\n'));
|
|
189
203
|
}
|
|
190
204
|
}
|
|
191
205
|
|
|
192
|
-
return { success: true, executed:
|
|
206
|
+
return { success: true, executed: true };
|
|
193
207
|
}
|
|
194
208
|
|
|
195
209
|
/**
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
|
|
5
|
+
export interface EditBlock {
|
|
6
|
+
filePath: string;
|
|
7
|
+
search: string;
|
|
8
|
+
replace: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class Patcher {
|
|
12
|
+
/**
|
|
13
|
+
* Parse surgical edit blocks from AI response
|
|
14
|
+
* Format:
|
|
15
|
+
* **filename**
|
|
16
|
+
* <<<< SEARCH
|
|
17
|
+
* content
|
|
18
|
+
* ====
|
|
19
|
+
* replacement
|
|
20
|
+
* >>>> REPLACE
|
|
21
|
+
*/
|
|
22
|
+
static parseEditBlocks(response: string): EditBlock[] {
|
|
23
|
+
const blocks: EditBlock[] = [];
|
|
24
|
+
// Match filename followed by search/replace block
|
|
25
|
+
const blockRegex = /\*\*([^*]+)\*\*\s*<<<< SEARCH\n([\s\S]*?)\n====\n([\s\S]*?)\n>>>> REPLACE/g;
|
|
26
|
+
|
|
27
|
+
let match;
|
|
28
|
+
while ((match = blockRegex.exec(response)) !== null) {
|
|
29
|
+
blocks.push({
|
|
30
|
+
filePath: match[1].trim(),
|
|
31
|
+
search: match[2],
|
|
32
|
+
replace: match[3]
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return blocks;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Apply a surgical patch to a file
|
|
41
|
+
*/
|
|
42
|
+
static applyPatch(block: EditBlock): { success: boolean; error?: string } {
|
|
43
|
+
try {
|
|
44
|
+
const fullPath = path.resolve(process.cwd(), block.filePath);
|
|
45
|
+
|
|
46
|
+
if (!fs.existsSync(fullPath)) {
|
|
47
|
+
return { success: false, error: `File not found: ${block.filePath}` };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const content = fs.readFileSync(fullPath, 'utf8');
|
|
51
|
+
|
|
52
|
+
// Normalize line endings for comparison
|
|
53
|
+
const normalizedContent = content.replace(/\r\n/g, '\n');
|
|
54
|
+
const normalizedSearch = block.search.replace(/\r\n/g, '\n');
|
|
55
|
+
|
|
56
|
+
if (!normalizedContent.includes(normalizedSearch)) {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
error: `Search block not found in ${block.filePath}. Please ensure the search block matches exactly (including indentation).`
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const updatedContent = normalizedContent.replace(normalizedSearch, block.replace.replace(/\r\n/g, '\n'));
|
|
64
|
+
fs.writeFileSync(fullPath, updatedContent, 'utf8');
|
|
65
|
+
|
|
66
|
+
return { success: true };
|
|
67
|
+
} catch (err: any) {
|
|
68
|
+
return { success: false, error: err.message };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Visualize the diff in a premium "Bro" style
|
|
74
|
+
*/
|
|
75
|
+
static showDiff(block: EditBlock) {
|
|
76
|
+
console.log(chalk.bold.cyan(`\nš Surgical Edit: ${chalk.white(block.filePath)}`));
|
|
77
|
+
const searchLines = block.search.split('\n');
|
|
78
|
+
const replaceLines = block.replace.split('\n');
|
|
79
|
+
|
|
80
|
+
searchLines.forEach(line => {
|
|
81
|
+
console.log(chalk.red(` - ${line}`));
|
|
82
|
+
});
|
|
83
|
+
console.log(chalk.gray(' ----------'));
|
|
84
|
+
replaceLines.forEach(line => {
|
|
85
|
+
console.log(chalk.green(` + ${line}`));
|
|
86
|
+
});
|
|
87
|
+
console.log();
|
|
88
|
+
}
|
|
89
|
+
}
|