@majkapp/majk-chat-cli 1.0.26 → 1.0.28
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/cli.js +1 -1
- package/dist/majk-chat-standalone.cjs +687 -1448
- package/dist/tools/bash.tool.d.ts +11 -0
- package/dist/tools/bash.tool.d.ts.map +1 -0
- package/dist/tools/bash.tool.js +140 -0
- package/dist/tools/bash.tool.js.map +1 -0
- package/dist/tools/filesystem.tool.d.ts +20 -0
- package/dist/tools/filesystem.tool.d.ts.map +1 -0
- package/dist/tools/filesystem.tool.js +312 -0
- package/dist/tools/filesystem.tool.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ToolExecutor, ToolDefinition, ToolResult, RequestContext } from '@majkapp/majk-chat-core';
|
|
2
|
+
export declare class BashTool implements ToolExecutor {
|
|
3
|
+
readonly name = "bash";
|
|
4
|
+
private requireConfirmation;
|
|
5
|
+
constructor(requireConfirmation?: boolean);
|
|
6
|
+
readonly definition: ToolDefinition;
|
|
7
|
+
execute(args: any, _context: RequestContext): Promise<ToolResult>;
|
|
8
|
+
validateArgs(args: any): boolean;
|
|
9
|
+
requestPermission(args: any, _context: RequestContext): Promise<boolean>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=bash.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.tool.d.ts","sourceRoot":"","sources":["../../src/tools/bash.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,yBAAyB,CAAC;AAMjC,qBAAa,QAAS,YAAW,YAAY;IAC3C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,mBAAmB,CAAU;gBAEzB,mBAAmB,UAAO;IAItC,QAAQ,CAAC,UAAU,EAAE,cAAc,CA2BjC;IAEI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAoEvE,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAQ1B,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;CAuB/E"}
|
|
@@ -0,0 +1,140 @@
|
|
|
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.BashTool = void 0;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
12
|
+
class BashTool {
|
|
13
|
+
name = 'bash';
|
|
14
|
+
requireConfirmation;
|
|
15
|
+
constructor(requireConfirmation = true) {
|
|
16
|
+
this.requireConfirmation = requireConfirmation;
|
|
17
|
+
}
|
|
18
|
+
definition = {
|
|
19
|
+
type: 'function',
|
|
20
|
+
function: {
|
|
21
|
+
name: 'bash',
|
|
22
|
+
description: 'Execute bash commands on the local system',
|
|
23
|
+
parameters: {
|
|
24
|
+
type: 'object',
|
|
25
|
+
properties: {
|
|
26
|
+
command: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'The bash command to execute'
|
|
29
|
+
},
|
|
30
|
+
working_directory: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Optional working directory for the command'
|
|
33
|
+
},
|
|
34
|
+
timeout: {
|
|
35
|
+
type: 'number',
|
|
36
|
+
description: 'Timeout in milliseconds (default: 30000)'
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
required: ['command']
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
serverInvocable: true,
|
|
43
|
+
sideEffects: 'external',
|
|
44
|
+
requiresConfirmation: true
|
|
45
|
+
};
|
|
46
|
+
async execute(args, _context) {
|
|
47
|
+
const { command, working_directory, timeout = 30000 } = args;
|
|
48
|
+
try {
|
|
49
|
+
const options = {
|
|
50
|
+
timeout,
|
|
51
|
+
maxBuffer: 1024 * 1024 * 10 // 10MB
|
|
52
|
+
};
|
|
53
|
+
if (working_directory) {
|
|
54
|
+
options.cwd = working_directory;
|
|
55
|
+
}
|
|
56
|
+
console.log(chalk_1.default.yellow(`\nExecuting: ${command}`));
|
|
57
|
+
if (working_directory) {
|
|
58
|
+
console.log(chalk_1.default.gray(`In directory: ${working_directory}`));
|
|
59
|
+
}
|
|
60
|
+
const { stdout, stderr } = await execAsync(command, options);
|
|
61
|
+
let output = '';
|
|
62
|
+
if (stdout) {
|
|
63
|
+
output += stdout;
|
|
64
|
+
}
|
|
65
|
+
if (stderr) {
|
|
66
|
+
output += '\n[stderr]\n' + stderr;
|
|
67
|
+
}
|
|
68
|
+
// Truncate output if too long
|
|
69
|
+
const maxLength = 10000;
|
|
70
|
+
if (output.length > maxLength) {
|
|
71
|
+
output = output.substring(0, maxLength) + '\n...[truncated]';
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
output: {
|
|
76
|
+
stdout: stdout || '',
|
|
77
|
+
stderr: stderr || '',
|
|
78
|
+
combined: output,
|
|
79
|
+
exit_code: 0
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
let errorMessage = 'Command execution failed';
|
|
85
|
+
let exitCode = -1;
|
|
86
|
+
if (error.code === 'ETIMEDOUT') {
|
|
87
|
+
errorMessage = `Command timed out after ${timeout}ms`;
|
|
88
|
+
}
|
|
89
|
+
else if (error.code) {
|
|
90
|
+
errorMessage = `Command failed with code ${error.code}`;
|
|
91
|
+
exitCode = error.code;
|
|
92
|
+
}
|
|
93
|
+
else if (error.message) {
|
|
94
|
+
errorMessage = error.message;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
success: false,
|
|
98
|
+
error: errorMessage,
|
|
99
|
+
output: {
|
|
100
|
+
stdout: error.stdout || '',
|
|
101
|
+
stderr: error.stderr || '',
|
|
102
|
+
exit_code: exitCode
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
validateArgs(args) {
|
|
108
|
+
if (!args || typeof args !== 'object')
|
|
109
|
+
return false;
|
|
110
|
+
if (!args.command || typeof args.command !== 'string')
|
|
111
|
+
return false;
|
|
112
|
+
if (args.working_directory && typeof args.working_directory !== 'string')
|
|
113
|
+
return false;
|
|
114
|
+
if (args.timeout && typeof args.timeout !== 'number')
|
|
115
|
+
return false;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
async requestPermission(args, _context) {
|
|
119
|
+
if (!this.requireConfirmation) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
console.log(chalk_1.default.yellow('\n⚠️ Tool execution request:'));
|
|
123
|
+
console.log(chalk_1.default.cyan('Tool:'), this.name);
|
|
124
|
+
console.log(chalk_1.default.cyan('Command:'), args.command);
|
|
125
|
+
if (args.working_directory) {
|
|
126
|
+
console.log(chalk_1.default.cyan('Directory:'), args.working_directory);
|
|
127
|
+
}
|
|
128
|
+
const { confirm } = await inquirer_1.default.prompt([
|
|
129
|
+
{
|
|
130
|
+
type: 'confirm',
|
|
131
|
+
name: 'confirm',
|
|
132
|
+
message: 'Do you want to execute this command?',
|
|
133
|
+
default: false
|
|
134
|
+
}
|
|
135
|
+
]);
|
|
136
|
+
return confirm;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.BashTool = BashTool;
|
|
140
|
+
//# sourceMappingURL=bash.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.tool.js","sourceRoot":"","sources":["../../src/tools/bash.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ToolExecutor, ToolDefinition, ToolResult, RequestContext } from '@majkapp/majk-chat-core';
|
|
2
|
+
export declare class FileSystemTool implements ToolExecutor {
|
|
3
|
+
readonly name = "filesystem";
|
|
4
|
+
private requireConfirmation;
|
|
5
|
+
constructor(requireConfirmation?: boolean);
|
|
6
|
+
readonly definition: ToolDefinition;
|
|
7
|
+
execute(args: any, _context: RequestContext): Promise<ToolResult>;
|
|
8
|
+
validateArgs(args: any): boolean;
|
|
9
|
+
requestPermission(args: any, _context: RequestContext): Promise<boolean>;
|
|
10
|
+
private readFile;
|
|
11
|
+
private writeFile;
|
|
12
|
+
private appendFile;
|
|
13
|
+
private deleteFile;
|
|
14
|
+
private exists;
|
|
15
|
+
private listDirectory;
|
|
16
|
+
private makeDirectory;
|
|
17
|
+
private copy;
|
|
18
|
+
private move;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=filesystem.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.tool.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.tool.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,cAAe,YAAW,YAAY;IACjD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,mBAAmB,CAAU;gBAEzB,mBAAmB,UAAO;IAItC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAwCjC;IAEI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IA2DvE,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAkB1B,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YAkChE,QAAQ;YAyBR,SAAS;YAST,UAAU;YASV,UAAU;YAoBV,MAAM;YAmBN,aAAa;YA4Bb,aAAa;YAcb,IAAI;YAYJ,IAAI;CAWnB"}
|
|
@@ -0,0 +1,312 @@
|
|
|
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 __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.FileSystemTool = void 0;
|
|
40
|
+
const fs = __importStar(require("fs-extra"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
43
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
+
class FileSystemTool {
|
|
45
|
+
name = 'filesystem';
|
|
46
|
+
requireConfirmation;
|
|
47
|
+
constructor(requireConfirmation = true) {
|
|
48
|
+
this.requireConfirmation = requireConfirmation;
|
|
49
|
+
}
|
|
50
|
+
definition = {
|
|
51
|
+
type: 'function',
|
|
52
|
+
function: {
|
|
53
|
+
name: 'filesystem',
|
|
54
|
+
description: 'Perform file system operations (read, write, list, etc.)',
|
|
55
|
+
parameters: {
|
|
56
|
+
type: 'object',
|
|
57
|
+
properties: {
|
|
58
|
+
operation: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
enum: ['read', 'write', 'append', 'delete', 'exists', 'list', 'mkdir', 'copy', 'move'],
|
|
61
|
+
description: 'The file system operation to perform'
|
|
62
|
+
},
|
|
63
|
+
path: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'The file or directory path'
|
|
66
|
+
},
|
|
67
|
+
content: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Content to write or append (for write/append operations)'
|
|
70
|
+
},
|
|
71
|
+
destination: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'Destination path (for copy/move operations)'
|
|
74
|
+
},
|
|
75
|
+
encoding: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'File encoding (default: utf-8)'
|
|
78
|
+
},
|
|
79
|
+
recursive: {
|
|
80
|
+
type: 'boolean',
|
|
81
|
+
description: 'Whether to operate recursively (for mkdir/delete)'
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
required: ['operation', 'path']
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
serverInvocable: true,
|
|
88
|
+
sideEffects: 'write',
|
|
89
|
+
requiresConfirmation: true
|
|
90
|
+
};
|
|
91
|
+
async execute(args, _context) {
|
|
92
|
+
const { operation, path: filePath, content, destination, encoding = 'utf-8', recursive = false } = args;
|
|
93
|
+
try {
|
|
94
|
+
let result;
|
|
95
|
+
switch (operation) {
|
|
96
|
+
case 'read':
|
|
97
|
+
result = await this.readFile(filePath, encoding);
|
|
98
|
+
break;
|
|
99
|
+
case 'write':
|
|
100
|
+
result = await this.writeFile(filePath, content, encoding);
|
|
101
|
+
break;
|
|
102
|
+
case 'append':
|
|
103
|
+
result = await this.appendFile(filePath, content, encoding);
|
|
104
|
+
break;
|
|
105
|
+
case 'delete':
|
|
106
|
+
result = await this.deleteFile(filePath, recursive);
|
|
107
|
+
break;
|
|
108
|
+
case 'exists':
|
|
109
|
+
result = await this.exists(filePath);
|
|
110
|
+
break;
|
|
111
|
+
case 'list':
|
|
112
|
+
result = await this.listDirectory(filePath);
|
|
113
|
+
break;
|
|
114
|
+
case 'mkdir':
|
|
115
|
+
result = await this.makeDirectory(filePath, recursive);
|
|
116
|
+
break;
|
|
117
|
+
case 'copy':
|
|
118
|
+
result = await this.copy(filePath, destination);
|
|
119
|
+
break;
|
|
120
|
+
case 'move':
|
|
121
|
+
result = await this.move(filePath, destination);
|
|
122
|
+
break;
|
|
123
|
+
default:
|
|
124
|
+
throw new Error(`Unknown operation: ${operation}`);
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
success: true,
|
|
128
|
+
output: result
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return {
|
|
133
|
+
success: false,
|
|
134
|
+
error: error.message || 'File system operation failed'
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
validateArgs(args) {
|
|
139
|
+
if (!args || typeof args !== 'object')
|
|
140
|
+
return false;
|
|
141
|
+
if (!args.operation || !args.path)
|
|
142
|
+
return false;
|
|
143
|
+
const validOperations = ['read', 'write', 'append', 'delete', 'exists', 'list', 'mkdir', 'copy', 'move'];
|
|
144
|
+
if (!validOperations.includes(args.operation))
|
|
145
|
+
return false;
|
|
146
|
+
if ((args.operation === 'write' || args.operation === 'append') && args.content === undefined) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
if ((args.operation === 'copy' || args.operation === 'move') && !args.destination) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
async requestPermission(args, _context) {
|
|
155
|
+
if (!this.requireConfirmation) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
// Read operations don't need confirmation
|
|
159
|
+
if (args.operation === 'read' || args.operation === 'exists' || args.operation === 'list') {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
console.log(chalk_1.default.yellow('\n⚠️ File system operation request:'));
|
|
163
|
+
console.log(chalk_1.default.cyan('Operation:'), args.operation);
|
|
164
|
+
console.log(chalk_1.default.cyan('Path:'), args.path);
|
|
165
|
+
if (args.destination) {
|
|
166
|
+
console.log(chalk_1.default.cyan('Destination:'), args.destination);
|
|
167
|
+
}
|
|
168
|
+
if (args.content && args.content.length > 100) {
|
|
169
|
+
console.log(chalk_1.default.cyan('Content:'), args.content.substring(0, 100) + '...');
|
|
170
|
+
}
|
|
171
|
+
else if (args.content) {
|
|
172
|
+
console.log(chalk_1.default.cyan('Content:'), args.content);
|
|
173
|
+
}
|
|
174
|
+
const { confirm } = await inquirer_1.default.prompt([
|
|
175
|
+
{
|
|
176
|
+
type: 'confirm',
|
|
177
|
+
name: 'confirm',
|
|
178
|
+
message: `Do you want to ${args.operation} this file/directory?`,
|
|
179
|
+
default: false
|
|
180
|
+
}
|
|
181
|
+
]);
|
|
182
|
+
return confirm;
|
|
183
|
+
}
|
|
184
|
+
async readFile(filePath, encoding) {
|
|
185
|
+
const stats = await fs.stat(filePath);
|
|
186
|
+
if (stats.isDirectory()) {
|
|
187
|
+
throw new Error('Cannot read a directory as a file');
|
|
188
|
+
}
|
|
189
|
+
const content = await fs.readFile(filePath, encoding);
|
|
190
|
+
// Truncate if too large
|
|
191
|
+
const maxLength = 50000;
|
|
192
|
+
if (content.length > maxLength) {
|
|
193
|
+
return {
|
|
194
|
+
content: content.substring(0, maxLength),
|
|
195
|
+
truncated: true,
|
|
196
|
+
originalLength: content.length
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
content,
|
|
201
|
+
size: stats.size,
|
|
202
|
+
modified: stats.mtime
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
async writeFile(filePath, content, encoding) {
|
|
206
|
+
await fs.writeFile(filePath, content, { encoding: encoding });
|
|
207
|
+
return {
|
|
208
|
+
path: filePath,
|
|
209
|
+
size: Buffer.byteLength(content, encoding),
|
|
210
|
+
operation: 'write'
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
async appendFile(filePath, content, encoding) {
|
|
214
|
+
await fs.appendFile(filePath, content, { encoding: encoding });
|
|
215
|
+
return {
|
|
216
|
+
path: filePath,
|
|
217
|
+
appended: content.length,
|
|
218
|
+
operation: 'append'
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
async deleteFile(filePath, recursive) {
|
|
222
|
+
const stats = await fs.stat(filePath);
|
|
223
|
+
if (stats.isDirectory() && !recursive) {
|
|
224
|
+
throw new Error('Cannot delete directory without recursive flag');
|
|
225
|
+
}
|
|
226
|
+
if (recursive) {
|
|
227
|
+
await fs.remove(filePath);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
await fs.unlink(filePath);
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
path: filePath,
|
|
234
|
+
deleted: true,
|
|
235
|
+
wasDirectory: stats.isDirectory()
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
async exists(filePath) {
|
|
239
|
+
const exists = await fs.pathExists(filePath);
|
|
240
|
+
if (exists) {
|
|
241
|
+
const stats = await fs.stat(filePath);
|
|
242
|
+
return {
|
|
243
|
+
exists: true,
|
|
244
|
+
isFile: stats.isFile(),
|
|
245
|
+
isDirectory: stats.isDirectory(),
|
|
246
|
+
size: stats.size,
|
|
247
|
+
modified: stats.mtime
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
exists: false
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
async listDirectory(dirPath) {
|
|
255
|
+
const stats = await fs.stat(dirPath);
|
|
256
|
+
if (!stats.isDirectory()) {
|
|
257
|
+
throw new Error('Path is not a directory');
|
|
258
|
+
}
|
|
259
|
+
const items = await fs.readdir(dirPath);
|
|
260
|
+
const details = [];
|
|
261
|
+
for (const item of items) {
|
|
262
|
+
const itemPath = path.join(dirPath, item);
|
|
263
|
+
const itemStats = await fs.stat(itemPath);
|
|
264
|
+
details.push({
|
|
265
|
+
name: item,
|
|
266
|
+
type: itemStats.isDirectory() ? 'directory' : 'file',
|
|
267
|
+
size: itemStats.size,
|
|
268
|
+
modified: itemStats.mtime
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
path: dirPath,
|
|
273
|
+
items: details,
|
|
274
|
+
count: details.length
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
async makeDirectory(dirPath, recursive) {
|
|
278
|
+
if (recursive) {
|
|
279
|
+
await fs.ensureDir(dirPath);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
await fs.mkdir(dirPath);
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
path: dirPath,
|
|
286
|
+
created: true,
|
|
287
|
+
recursive
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
async copy(source, destination) {
|
|
291
|
+
await fs.copy(source, destination);
|
|
292
|
+
const stats = await fs.stat(destination);
|
|
293
|
+
return {
|
|
294
|
+
source,
|
|
295
|
+
destination,
|
|
296
|
+
size: stats.size,
|
|
297
|
+
operation: 'copy'
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
async move(source, destination) {
|
|
301
|
+
await fs.move(source, destination);
|
|
302
|
+
const stats = await fs.stat(destination);
|
|
303
|
+
return {
|
|
304
|
+
source,
|
|
305
|
+
destination,
|
|
306
|
+
size: stats.size,
|
|
307
|
+
operation: 'move'
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
exports.FileSystemTool = FileSystemTool;
|
|
312
|
+
//# sourceMappingURL=filesystem.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.tool.js","sourceRoot":"","sources":["../../src/tools/filesystem.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAO7B,wDAAgC;AAChC,kDAA0B;AAE1B,MAAa,cAAc;IAChB,IAAI,GAAG,YAAY,CAAC;IACrB,mBAAmB,CAAU;IAErC,YAAY,mBAAmB,GAAG,IAAI;QACpC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAEQ,UAAU,GAAmB;QACpC,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,0DAA0D;YACvE,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;wBACtF,WAAW,EAAE,sCAAsC;qBACpD;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,4BAA4B;qBAC1C;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0DAA0D;qBACxE;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6CAA6C;qBAC3D;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,gCAAgC;qBAC9C;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,mDAAmD;qBACjE;iBACF;gBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;aAChC;SACF;QACD,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,OAAO;QACpB,oBAAoB,EAAE,IAAI;KAC3B,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,IAAS,EAAE,QAAwB;QAC/C,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;QAExG,IAAI,CAAC;YACH,IAAI,MAAW,CAAC;YAEhB,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,MAAM;oBACT,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACjD,MAAM;gBAER,KAAK,OAAO;oBACV,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC3D,MAAM;gBAER,KAAK,QAAQ;oBACX,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC5D,MAAM;gBAER,KAAK,QAAQ;oBACX,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACpD,MAAM;gBAER,KAAK,QAAQ;oBACX,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACrC,MAAM;gBAER,KAAK,MAAM;oBACT,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC5C,MAAM;gBAER,KAAK,OAAO;oBACV,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACvD,MAAM;gBAER,KAAK,MAAM;oBACT,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAChD,MAAM;gBAER,KAAK,MAAM;oBACT,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAChD,MAAM;gBAER;oBACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,8BAA8B;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,YAAY,CAAC,IAAS;QACpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAEhD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAS,EAAE,QAAwB;QACzD,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC1F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kBAAkB,IAAI,CAAC,SAAS,uBAAuB;gBAChE,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,QAAgB;QACvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAA0B,CAAC,CAAC;QAExE,wBAAwB;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAG,OAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;gBACpD,SAAS,EAAE,IAAI;gBACf,cAAc,EAAG,OAAkB,CAAC,MAAM;aAC3C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,KAAK;SACtB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAe,EAAE,QAAgB;QACzE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAA0B,EAAE,CAAC,CAAC;QAChF,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,QAA0B,CAAC;YAC5D,SAAS,EAAE,OAAO;SACnB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,OAAe,EAAE,QAAgB;QAC1E,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAA0B,EAAE,CAAC,CAAC;QACjF,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,SAAkB;QAC3D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;SAClC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,QAAgB;QACnC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,KAAK;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1C,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;gBACpD,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,QAAQ,EAAE,SAAS,CAAC,KAAK;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,SAAkB;QAC7D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI;YACb,SAAS;SACV,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,WAAmB;QACpD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO;YACL,MAAM;YACN,WAAW;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,MAAM;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,WAAmB;QACpD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO;YACL,MAAM;YACN,WAAW;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,MAAM;SAClB,CAAC;IACJ,CAAC;CACF;AApTD,wCAoTC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@majkapp/majk-chat-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"description": "CLI for multi-provider LLM chat interactions",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
"author": "Jules White",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@majkapp/majk-chat-basic-tools": "1.0.
|
|
36
|
-
"@majkapp/majk-chat-core": "1.0.
|
|
37
|
-
"@majkapp/majk-chat-document-tools": "1.0.
|
|
38
|
-
"@majkapp/majk-chat-mcp": "1.0.
|
|
39
|
-
"@majkapp/majk-chat-sessions": "1.0.
|
|
35
|
+
"@majkapp/majk-chat-basic-tools": "1.0.27",
|
|
36
|
+
"@majkapp/majk-chat-core": "1.0.27",
|
|
37
|
+
"@majkapp/majk-chat-document-tools": "1.0.27",
|
|
38
|
+
"@majkapp/majk-chat-mcp": "1.0.27",
|
|
39
|
+
"@majkapp/majk-chat-sessions": "1.0.27",
|
|
40
40
|
"chalk": "^4.1.2",
|
|
41
41
|
"commander": "^12.0.0",
|
|
42
42
|
"dotenv": "^16.4.0",
|