@mako10k/shell-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +114 -0
- package/dist/backoffice/index.d.ts +2 -0
- package/dist/backoffice/index.d.ts.map +1 -0
- package/dist/backoffice/index.js +47 -0
- package/dist/backoffice/index.js.map +1 -0
- package/dist/backoffice/server.d.ts +45 -0
- package/dist/backoffice/server.d.ts.map +1 -0
- package/dist/backoffice/server.js +610 -0
- package/dist/backoffice/server.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +525 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config-manager.d.ts +80 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +218 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/enhanced-history-manager.d.ts +84 -0
- package/dist/core/enhanced-history-manager.d.ts.map +1 -0
- package/dist/core/enhanced-history-manager.js +319 -0
- package/dist/core/enhanced-history-manager.js.map +1 -0
- package/dist/core/file-manager.d.ts +79 -0
- package/dist/core/file-manager.d.ts.map +1 -0
- package/dist/core/file-manager.js +338 -0
- package/dist/core/file-manager.js.map +1 -0
- package/dist/core/file-storage-subscriber.d.ts +38 -0
- package/dist/core/file-storage-subscriber.d.ts.map +1 -0
- package/dist/core/file-storage-subscriber.js +132 -0
- package/dist/core/file-storage-subscriber.js.map +1 -0
- package/dist/core/monitoring-manager.d.ts +32 -0
- package/dist/core/monitoring-manager.d.ts.map +1 -0
- package/dist/core/monitoring-manager.js +296 -0
- package/dist/core/monitoring-manager.js.map +1 -0
- package/dist/core/process-manager.d.ts +105 -0
- package/dist/core/process-manager.d.ts.map +1 -0
- package/dist/core/process-manager.js +1374 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/realtime-stream-subscriber.d.ts +93 -0
- package/dist/core/realtime-stream-subscriber.d.ts.map +1 -0
- package/dist/core/realtime-stream-subscriber.js +200 -0
- package/dist/core/realtime-stream-subscriber.js.map +1 -0
- package/dist/core/remote-http-client.d.ts +15 -0
- package/dist/core/remote-http-client.d.ts.map +1 -0
- package/dist/core/remote-http-client.js +60 -0
- package/dist/core/remote-http-client.js.map +1 -0
- package/dist/core/remote-process-service.d.ts +50 -0
- package/dist/core/remote-process-service.d.ts.map +1 -0
- package/dist/core/remote-process-service.js +20 -0
- package/dist/core/remote-process-service.js.map +1 -0
- package/dist/core/server-manager.d.ts +71 -0
- package/dist/core/server-manager.d.ts.map +1 -0
- package/dist/core/server-manager.js +680 -0
- package/dist/core/server-manager.js.map +1 -0
- package/dist/core/stream-publisher.d.ts +75 -0
- package/dist/core/stream-publisher.d.ts.map +1 -0
- package/dist/core/stream-publisher.js +127 -0
- package/dist/core/stream-publisher.js.map +1 -0
- package/dist/core/streaming-pipeline-reader.d.ts +67 -0
- package/dist/core/streaming-pipeline-reader.d.ts.map +1 -0
- package/dist/core/streaming-pipeline-reader.js +191 -0
- package/dist/core/streaming-pipeline-reader.js.map +1 -0
- package/dist/core/terminal-manager.d.ts +96 -0
- package/dist/core/terminal-manager.d.ts.map +1 -0
- package/dist/core/terminal-manager.js +515 -0
- package/dist/core/terminal-manager.js.map +1 -0
- package/dist/daemon/server.d.ts +8 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +416 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/uds-transport.d.ts +31 -0
- package/dist/daemon/uds-transport.d.ts.map +1 -0
- package/dist/daemon/uds-transport.js +149 -0
- package/dist/daemon/uds-transport.js.map +1 -0
- package/dist/executor/server.d.ts +20 -0
- package/dist/executor/server.d.ts.map +1 -0
- package/dist/executor/server.js +375 -0
- package/dist/executor/server.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/daemon-runtime.d.ts +4 -0
- package/dist/runtime/daemon-runtime.d.ts.map +1 -0
- package/dist/runtime/daemon-runtime.js +4 -0
- package/dist/runtime/daemon-runtime.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/tool-runtime.d.ts +52 -0
- package/dist/runtime/tool-runtime.d.ts.map +1 -0
- package/dist/runtime/tool-runtime.js +161 -0
- package/dist/runtime/tool-runtime.js.map +1 -0
- package/dist/security/chat-completion-adapter.d.ts +443 -0
- package/dist/security/chat-completion-adapter.d.ts.map +1 -0
- package/dist/security/chat-completion-adapter.js +475 -0
- package/dist/security/chat-completion-adapter.js.map +1 -0
- package/dist/security/enhanced-evaluator.d.ts +139 -0
- package/dist/security/enhanced-evaluator.d.ts.map +1 -0
- package/dist/security/enhanced-evaluator.js +1208 -0
- package/dist/security/enhanced-evaluator.js.map +1 -0
- package/dist/security/evaluator-types.d.ts +614 -0
- package/dist/security/evaluator-types.d.ts.map +1 -0
- package/dist/security/evaluator-types.js +124 -0
- package/dist/security/evaluator-types.js.map +1 -0
- package/dist/security/manager.d.ts +76 -0
- package/dist/security/manager.d.ts.map +1 -0
- package/dist/security/manager.js +445 -0
- package/dist/security/manager.js.map +1 -0
- package/dist/security/security-llm-prompt-generator.d.ts +105 -0
- package/dist/security/security-llm-prompt-generator.d.ts.map +1 -0
- package/dist/security/security-llm-prompt-generator.js +323 -0
- package/dist/security/security-llm-prompt-generator.js.map +1 -0
- package/dist/security/security-tools.d.ts +174 -0
- package/dist/security/security-tools.d.ts.map +1 -0
- package/dist/security/security-tools.js +159 -0
- package/dist/security/security-tools.js.map +1 -0
- package/dist/security/validator-criteria-manager.d.ts +47 -0
- package/dist/security/validator-criteria-manager.d.ts.map +1 -0
- package/dist/security/validator-criteria-manager.js +169 -0
- package/dist/security/validator-criteria-manager.js.map +1 -0
- package/dist/tools/shell-tools.d.ts +474 -0
- package/dist/tools/shell-tools.d.ts.map +1 -0
- package/dist/tools/shell-tools.js +861 -0
- package/dist/tools/shell-tools.js.map +1 -0
- package/dist/types/enhanced-security.d.ts +529 -0
- package/dist/types/enhanced-security.d.ts.map +1 -0
- package/dist/types/enhanced-security.js +286 -0
- package/dist/types/enhanced-security.js.map +1 -0
- package/dist/types/index.d.ts +282 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +158 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/quick-schemas.d.ts +177 -0
- package/dist/types/quick-schemas.d.ts.map +1 -0
- package/dist/types/quick-schemas.js +113 -0
- package/dist/types/quick-schemas.js.map +1 -0
- package/dist/types/response-schemas.d.ts +41 -0
- package/dist/types/response-schemas.d.ts.map +1 -0
- package/dist/types/response-schemas.js +41 -0
- package/dist/types/response-schemas.js.map +1 -0
- package/dist/types/schemas.d.ts +578 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +498 -0
- package/dist/types/schemas.js.map +1 -0
- package/dist/utils/criteria-manager.d.ts +47 -0
- package/dist/utils/criteria-manager.d.ts.map +1 -0
- package/dist/utils/criteria-manager.js +228 -0
- package/dist/utils/criteria-manager.js.map +1 -0
- package/dist/utils/errors.d.ts +27 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +67 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/helpers.d.ts +85 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +400 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/json-repair.d.ts +23 -0
- package/dist/utils/json-repair.d.ts.map +1 -0
- package/dist/utils/json-repair.js +208 -0
- package/dist/utils/json-repair.js.map +1 -0
- package/dist/utils/process-utils.d.ts +31 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +217 -0
- package/dist/utils/process-utils.js.map +1 -0
- package/dist/utils/server-helpers.d.ts +4 -0
- package/dist/utils/server-helpers.d.ts.map +1 -0
- package/dist/utils/server-helpers.js +10 -0
- package/dist/utils/server-helpers.js.map +1 -0
- package/dist/utils/sse.d.ts +2 -0
- package/dist/utils/sse.d.ts.map +1 -0
- package/dist/utils/sse.js +6 -0
- package/dist/utils/sse.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { logger } from './helpers.js';
|
|
4
|
+
/**
|
|
5
|
+
* Default security criteria content
|
|
6
|
+
*/
|
|
7
|
+
const DEFAULT_CRITERIA = `
|
|
8
|
+
## Security Evaluation Criteria
|
|
9
|
+
|
|
10
|
+
### Primary Goal
|
|
11
|
+
Prevent reckless, careless, or commands that deviate from user intent.
|
|
12
|
+
|
|
13
|
+
### Evaluation Guidelines
|
|
14
|
+
- **Reckless**: Commands with destructive potential without clear purpose
|
|
15
|
+
- **Careless**: Commands that could cause unintended side effects
|
|
16
|
+
- **Intent Deviation**: Commands that don't align with established user workflow patterns
|
|
17
|
+
|
|
18
|
+
### Tool Selection Guidelines
|
|
19
|
+
- **allow()**: Default for routine development operations (builds, tests, file operations in project context)
|
|
20
|
+
- **ai_assistant_confirm()**: Only when genuinely missing critical information
|
|
21
|
+
- **user_confirm()**: For commands with legitimate risk but valid use cases
|
|
22
|
+
- **deny()**: For clearly destructive or malicious commands
|
|
23
|
+
|
|
24
|
+
### Context Awareness
|
|
25
|
+
Consider command history and established workflow patterns when evaluating commands.
|
|
26
|
+
Match evaluation strictness to actual risk level and maintain development-friendly approach.
|
|
27
|
+
`.trim();
|
|
28
|
+
/**
|
|
29
|
+
* Get criteria file configuration from environment or defaults
|
|
30
|
+
*/
|
|
31
|
+
export function getCriteriaConfig() {
|
|
32
|
+
const defaultPath = process.env['MCP_VALIDATION_CRITERIA_PATH'] ||
|
|
33
|
+
path.join('/tmp', 'mcp-shell-server', 'validation_criteria.txt');
|
|
34
|
+
return {
|
|
35
|
+
filePath: defaultPath,
|
|
36
|
+
backupDir: path.join(path.dirname(defaultPath), 'backups'),
|
|
37
|
+
defaultContent: DEFAULT_CRITERIA,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Ensure directory exists, creating if necessary
|
|
42
|
+
*/
|
|
43
|
+
async function ensureDirectory(dirPath) {
|
|
44
|
+
try {
|
|
45
|
+
await fs.access(dirPath);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create timestamped backup of existing criteria file
|
|
53
|
+
*/
|
|
54
|
+
async function createBackup(config) {
|
|
55
|
+
try {
|
|
56
|
+
const content = await fs.readFile(config.filePath, 'utf8');
|
|
57
|
+
await ensureDirectory(config.backupDir);
|
|
58
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
59
|
+
const backupPath = path.join(config.backupDir, `criteria_${timestamp}.txt`);
|
|
60
|
+
await fs.writeFile(backupPath, content, 'utf8');
|
|
61
|
+
return backupPath;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
// If original file doesn't exist, no backup needed
|
|
65
|
+
if (error.code === 'ENOENT') {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Load security criteria from file
|
|
73
|
+
*/
|
|
74
|
+
export async function loadCriteria() {
|
|
75
|
+
const config = getCriteriaConfig();
|
|
76
|
+
try {
|
|
77
|
+
const content = await fs.readFile(config.filePath, 'utf8');
|
|
78
|
+
return content.trim();
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error.code === 'ENOENT') {
|
|
82
|
+
// File doesn't exist, return default criteria
|
|
83
|
+
return config.defaultContent;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Save security criteria to file
|
|
90
|
+
*/
|
|
91
|
+
export async function saveCriteria(criteriaText, appendMode = false, backupExisting = true) {
|
|
92
|
+
const config = getCriteriaConfig();
|
|
93
|
+
// Validate criteria text
|
|
94
|
+
const trimmedCriteria = criteriaText.trim();
|
|
95
|
+
if (!trimmedCriteria) {
|
|
96
|
+
throw new Error('Criteria text cannot be empty');
|
|
97
|
+
}
|
|
98
|
+
// Ensure directory exists
|
|
99
|
+
await ensureDirectory(path.dirname(config.filePath));
|
|
100
|
+
// Create backup if requested and file exists
|
|
101
|
+
let backupPath = null;
|
|
102
|
+
if (backupExisting) {
|
|
103
|
+
backupPath = await createBackup(config);
|
|
104
|
+
}
|
|
105
|
+
// Prepare content
|
|
106
|
+
let finalContent;
|
|
107
|
+
if (appendMode) {
|
|
108
|
+
try {
|
|
109
|
+
const existingContent = await fs.readFile(config.filePath, 'utf8');
|
|
110
|
+
finalContent = `${existingContent.trim()}\n\n${trimmedCriteria}`;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
if (error.code === 'ENOENT') {
|
|
114
|
+
// File doesn't exist, just use new content
|
|
115
|
+
finalContent = trimmedCriteria;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
finalContent = trimmedCriteria;
|
|
124
|
+
}
|
|
125
|
+
// Save criteria
|
|
126
|
+
await fs.writeFile(config.filePath, finalContent, 'utf8');
|
|
127
|
+
return {
|
|
128
|
+
backupPath,
|
|
129
|
+
criteriaPath: config.filePath,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if criteria file was modified since last read
|
|
134
|
+
*/
|
|
135
|
+
export async function isCriteriaModified(lastModified) {
|
|
136
|
+
const config = getCriteriaConfig();
|
|
137
|
+
try {
|
|
138
|
+
const stats = await fs.stat(config.filePath);
|
|
139
|
+
return stats.mtime > lastModified;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.code === 'ENOENT') {
|
|
143
|
+
return false; // File doesn't exist
|
|
144
|
+
}
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get criteria file status information
|
|
150
|
+
*/
|
|
151
|
+
export async function getCriteriaStatus() {
|
|
152
|
+
const config = getCriteriaConfig();
|
|
153
|
+
try {
|
|
154
|
+
const stats = await fs.stat(config.filePath);
|
|
155
|
+
return {
|
|
156
|
+
exists: true,
|
|
157
|
+
path: config.filePath,
|
|
158
|
+
lastModified: stats.mtime,
|
|
159
|
+
size: stats.size,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (error.code === 'ENOENT') {
|
|
164
|
+
return {
|
|
165
|
+
exists: false,
|
|
166
|
+
path: config.filePath,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Adjust security evaluation criteria dynamically
|
|
174
|
+
* Used by both MCP tools and internal validator functions
|
|
175
|
+
*/
|
|
176
|
+
export async function adjustCriteria(criteriaText, appendMode = false, backupExisting = true) {
|
|
177
|
+
const config = getCriteriaConfig();
|
|
178
|
+
try {
|
|
179
|
+
// Create backup if requested and file exists
|
|
180
|
+
let backupPath;
|
|
181
|
+
if (backupExisting) {
|
|
182
|
+
try {
|
|
183
|
+
const existing = await loadCriteria();
|
|
184
|
+
if (existing && existing.trim()) {
|
|
185
|
+
const backup = await createBackup(config);
|
|
186
|
+
backupPath = backup || undefined;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
// Backup failed but continue with criteria update
|
|
191
|
+
logger.warn('Failed to create backup before criteria adjustment', { error });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Prepare new content
|
|
195
|
+
let newContent;
|
|
196
|
+
if (appendMode) {
|
|
197
|
+
try {
|
|
198
|
+
const existing = await loadCriteria();
|
|
199
|
+
newContent = existing ? `${existing}\n\n${criteriaText}` : criteriaText;
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
// If loading fails, treat as new content
|
|
203
|
+
newContent = criteriaText;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
newContent = criteriaText;
|
|
208
|
+
}
|
|
209
|
+
// Save new criteria
|
|
210
|
+
await saveCriteria(newContent);
|
|
211
|
+
return {
|
|
212
|
+
success: true,
|
|
213
|
+
message: appendMode ? 'Criteria successfully appended' : 'Criteria successfully updated',
|
|
214
|
+
...(backupPath && { backupPath }),
|
|
215
|
+
criteriaPath: config.filePath,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
220
|
+
logger.error('Failed to adjust criteria', { error: errorMessage });
|
|
221
|
+
return {
|
|
222
|
+
success: false,
|
|
223
|
+
message: `Failed to adjust criteria: ${errorMessage}`,
|
|
224
|
+
criteriaPath: config.filePath,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=criteria-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"criteria-manager.js","sourceRoot":"","sources":["../../src/utils/criteria-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ErrorCategory, ErrorInfo } from '../types/index.js';
|
|
2
|
+
export declare class MCPShellError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
readonly category: ErrorCategory;
|
|
5
|
+
readonly details?: Record<string, unknown>;
|
|
6
|
+
readonly timestamp: string;
|
|
7
|
+
readonly requestId?: string;
|
|
8
|
+
constructor(code: string, message: string, category: ErrorCategory, details?: Record<string, unknown>, requestId?: string);
|
|
9
|
+
toErrorInfo(): ErrorInfo;
|
|
10
|
+
static fromError(error: unknown, requestId?: string): MCPShellError;
|
|
11
|
+
}
|
|
12
|
+
export declare class ResourceNotFoundError extends MCPShellError {
|
|
13
|
+
constructor(resourceType: string, id: string, requestId?: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class ExecutionError extends MCPShellError {
|
|
16
|
+
constructor(message: string, details?: Record<string, unknown>, requestId?: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class TimeoutError extends MCPShellError {
|
|
19
|
+
constructor(timeoutSeconds: number, requestId?: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class SecurityError extends MCPShellError {
|
|
22
|
+
constructor(message: string, details?: Record<string, unknown>, requestId?: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class ResourceLimitError extends MCPShellError {
|
|
25
|
+
constructor(resource: string, limit: number, requestId?: string);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7D,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,EAAE,aAAa,CAAC;IACxC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,CAAC,EAAE,MAAM;IAWpB,WAAW,IAAI,SAAS;IAmBxB,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa;CAuBpE;AAGD,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CASjE;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM;CAGnF;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CASvD;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM;CAGnF;AAED,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAShE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export class MCPShellError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
category;
|
|
4
|
+
details;
|
|
5
|
+
timestamp;
|
|
6
|
+
requestId;
|
|
7
|
+
constructor(code, message, category, details, requestId) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'MCPShellError';
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.category = category;
|
|
12
|
+
this.details = details || {};
|
|
13
|
+
this.timestamp = new Date().toISOString();
|
|
14
|
+
this.requestId = requestId || '';
|
|
15
|
+
}
|
|
16
|
+
toErrorInfo() {
|
|
17
|
+
const errorInfo = {
|
|
18
|
+
code: this.code,
|
|
19
|
+
message: this.message,
|
|
20
|
+
category: this.category,
|
|
21
|
+
timestamp: this.timestamp,
|
|
22
|
+
};
|
|
23
|
+
if (this.details && Object.keys(this.details).length > 0) {
|
|
24
|
+
errorInfo.details = this.details;
|
|
25
|
+
}
|
|
26
|
+
if (this.requestId) {
|
|
27
|
+
errorInfo.request_id = this.requestId;
|
|
28
|
+
}
|
|
29
|
+
return errorInfo;
|
|
30
|
+
}
|
|
31
|
+
static fromError(error, requestId) {
|
|
32
|
+
if (error instanceof MCPShellError) {
|
|
33
|
+
return error;
|
|
34
|
+
}
|
|
35
|
+
if (error instanceof Error) {
|
|
36
|
+
return new MCPShellError('SYSTEM_001', error.message, 'SYSTEM', { stack: error.stack }, requestId);
|
|
37
|
+
}
|
|
38
|
+
return new MCPShellError('SYSTEM_001', 'Unknown error occurred', 'SYSTEM', { originalError: String(error) }, requestId);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// 定義済みエラー
|
|
42
|
+
export class ResourceNotFoundError extends MCPShellError {
|
|
43
|
+
constructor(resourceType, id, requestId) {
|
|
44
|
+
super('RESOURCE_001', `${resourceType} with ID ${id} not found`, 'RESOURCE', { resourceType, id }, requestId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class ExecutionError extends MCPShellError {
|
|
48
|
+
constructor(message, details, requestId) {
|
|
49
|
+
super('EXECUTION_001', message, 'EXECUTION', details, requestId);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class TimeoutError extends MCPShellError {
|
|
53
|
+
constructor(timeoutSeconds, requestId) {
|
|
54
|
+
super('EXECUTION_002', `Operation timed out after ${timeoutSeconds} seconds`, 'EXECUTION', { timeoutSeconds }, requestId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export class SecurityError extends MCPShellError {
|
|
58
|
+
constructor(message, details, requestId) {
|
|
59
|
+
super('SECURITY_001', message, 'SECURITY', details, requestId);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class ResourceLimitError extends MCPShellError {
|
|
63
|
+
constructor(resource, limit, requestId) {
|
|
64
|
+
super('RESOURCE_005', `${resource} limit of ${limit} reached`, 'RESOURCE', { resource, limit }, requestId);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export declare function generateId(): string;
|
|
2
|
+
export declare function getCurrentTimestamp(): string;
|
|
3
|
+
export declare function isValidPath(filePath: string, allowedPaths?: string[]): boolean;
|
|
4
|
+
export declare function isValidCommand(command: string, allowedCommands?: string[], blockedCommands?: string[]): boolean;
|
|
5
|
+
export declare function getFileSize(filePath: string): Promise<number>;
|
|
6
|
+
export declare function ensureDirectory(dirPath: string): Promise<void>;
|
|
7
|
+
export declare function ensureDirectorySync(dirPath: string): void;
|
|
8
|
+
export declare function safeReadFile(filePath: string, offset?: number, size?: number, encoding?: BufferEncoding): Promise<{
|
|
9
|
+
content: string;
|
|
10
|
+
totalSize: number;
|
|
11
|
+
isTruncated: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function getSystemInfo(): {
|
|
14
|
+
platform: NodeJS.Platform;
|
|
15
|
+
arch: string;
|
|
16
|
+
hostname: string;
|
|
17
|
+
loadavg: number[];
|
|
18
|
+
totalmem: number;
|
|
19
|
+
freemem: number;
|
|
20
|
+
uptime: number;
|
|
21
|
+
};
|
|
22
|
+
export declare function getProcessInfo(): {
|
|
23
|
+
pid: number;
|
|
24
|
+
ppid: number;
|
|
25
|
+
platform: NodeJS.Platform;
|
|
26
|
+
arch: NodeJS.Architecture;
|
|
27
|
+
version: string;
|
|
28
|
+
memoryUsage: NodeJS.MemoryUsage;
|
|
29
|
+
cpuUsage: NodeJS.CpuUsage;
|
|
30
|
+
uptime: number;
|
|
31
|
+
};
|
|
32
|
+
export declare function getSafeEnvironment(baseEnv?: Record<string, string>, additionalEnv?: Record<string, string>): Record<string, string>;
|
|
33
|
+
export declare function sanitizeString(input: string, maxLength?: number): string;
|
|
34
|
+
export declare function formatBytes(bytes: number): string;
|
|
35
|
+
export declare function formatDuration(milliseconds: number): string;
|
|
36
|
+
export declare enum LogLevel {
|
|
37
|
+
DEBUG = 0,
|
|
38
|
+
INFO = 1,
|
|
39
|
+
WARN = 2,
|
|
40
|
+
ERROR = 3
|
|
41
|
+
}
|
|
42
|
+
export interface LogEntry {
|
|
43
|
+
timestamp: string;
|
|
44
|
+
level: LogLevel;
|
|
45
|
+
message: string;
|
|
46
|
+
data?: unknown;
|
|
47
|
+
component?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface LogConfig {
|
|
50
|
+
enableFileLogging: boolean;
|
|
51
|
+
logFilePath: string;
|
|
52
|
+
maxFileSize: number;
|
|
53
|
+
maxLogFiles: number;
|
|
54
|
+
enableConsoleLogging: boolean;
|
|
55
|
+
}
|
|
56
|
+
export declare function updateLogConfig(config: Partial<LogConfig>): void;
|
|
57
|
+
export declare function getLogConfig(): LogConfig;
|
|
58
|
+
export declare function internalLog(level: LogLevel, message: string, data?: unknown, component?: string): void;
|
|
59
|
+
export declare function getLogEntries(level?: LogLevel, component?: string, limit?: number): LogEntry[];
|
|
60
|
+
export declare const logger: {
|
|
61
|
+
debug: (message: string, data?: unknown, component?: string) => void;
|
|
62
|
+
info: (message: string, data?: unknown, component?: string) => void;
|
|
63
|
+
warn: (message: string, data?: unknown, component?: string) => void;
|
|
64
|
+
error: (message: string, data?: unknown, component?: string) => void;
|
|
65
|
+
getEntries: (level?: LogLevel, component?: string, limit?: number) => LogEntry[];
|
|
66
|
+
getHistory: (options?: {
|
|
67
|
+
level?: LogLevel;
|
|
68
|
+
component?: string;
|
|
69
|
+
limit?: number;
|
|
70
|
+
since?: string;
|
|
71
|
+
until?: string;
|
|
72
|
+
search?: string;
|
|
73
|
+
}) => LogEntry[];
|
|
74
|
+
readLogFile: (lines?: number) => Promise<string[]>;
|
|
75
|
+
getStats: () => {
|
|
76
|
+
totalEntries: number;
|
|
77
|
+
byLevel: Record<string, number>;
|
|
78
|
+
byComponent: Record<string, number>;
|
|
79
|
+
oldestEntry: string | null | undefined;
|
|
80
|
+
newestEntry: string | null | undefined;
|
|
81
|
+
};
|
|
82
|
+
configure: typeof updateLogConfig;
|
|
83
|
+
getConfig: typeof getLogConfig;
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|