mcp-prompt-optimizer 1.4.0 โ 1.4.2
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/CROSS-PLATFORM.md +272 -0
- package/index.js +38 -15
- package/lib/api-key-manager.js +7 -7
- package/package.json +69 -6
- package/tests/README.md +232 -0
- package/tests/comprehensive-test.js +692 -0
- package/tests/integration-test.js +446 -0
- package/tests/minimal-test.js +265 -0
- package/tests/quick-test.js +256 -0
- package/tests/simple-test.js +171 -0
- package/tests/test-runner.js +322 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Cross-Platform Compatibility Guide
|
|
2
|
+
|
|
3
|
+
## MCP Prompt Optimizer - Universal Platform Support
|
|
4
|
+
|
|
5
|
+
This package has been designed and tested to work seamlessly across all major operating systems and architectures.
|
|
6
|
+
|
|
7
|
+
## โ
Supported Platforms
|
|
8
|
+
|
|
9
|
+
### Operating Systems
|
|
10
|
+
- **Windows 10/11** (x64)
|
|
11
|
+
- **macOS** (Intel x64 & Apple Silicon ARM64)
|
|
12
|
+
- **Linux** (Ubuntu, Debian, CentOS, RHEL, etc.) (x64, ARM64)
|
|
13
|
+
|
|
14
|
+
### Node.js Versions
|
|
15
|
+
- **Minimum:** Node.js 16.0.0
|
|
16
|
+
- **Recommended:** Node.js 18.0.0 or higher
|
|
17
|
+
- **Tested:** Node.js 16, 18, 20, 21
|
|
18
|
+
|
|
19
|
+
## ๐ Installation
|
|
20
|
+
|
|
21
|
+
The package installs identically on all platforms:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Global installation (recommended)
|
|
25
|
+
npm install -g mcp-prompt-optimizer
|
|
26
|
+
|
|
27
|
+
# Local installation
|
|
28
|
+
npm install mcp-prompt-optimizer
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## ๐ง Platform-Specific Setup
|
|
32
|
+
|
|
33
|
+
### Windows
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
# PowerShell
|
|
37
|
+
$env:OPTIMIZER_API_KEY = "sk-opt-your-key-here"
|
|
38
|
+
mcp-prompt-optimizer
|
|
39
|
+
|
|
40
|
+
# Command Prompt
|
|
41
|
+
set OPTIMIZER_API_KEY=sk-opt-your-key-here
|
|
42
|
+
mcp-prompt-optimizer
|
|
43
|
+
|
|
44
|
+
# Or use the Windows-specific development script
|
|
45
|
+
npm run dev:windows
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### macOS & Linux
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Bash/Zsh
|
|
52
|
+
export OPTIMIZER_API_KEY="sk-opt-your-key-here"
|
|
53
|
+
mcp-prompt-optimizer
|
|
54
|
+
|
|
55
|
+
# Or use the Unix-specific development script
|
|
56
|
+
npm run dev:unix
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Cross-Platform (Recommended)
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Works on all platforms with cross-env
|
|
63
|
+
npm run dev
|
|
64
|
+
npm run dev:mock
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## ๐ File System Behavior
|
|
68
|
+
|
|
69
|
+
### Cache & Config Files
|
|
70
|
+
|
|
71
|
+
The package automatically creates platform-appropriate cache files:
|
|
72
|
+
|
|
73
|
+
- **Windows:** `%USERPROFILE%\.mcp-cloud-api-cache.json`
|
|
74
|
+
- **macOS:** `~/.mcp-cloud-api-cache.json`
|
|
75
|
+
- **Linux:** `~/.mcp-cloud-api-cache.json`
|
|
76
|
+
|
|
77
|
+
### Path Handling
|
|
78
|
+
|
|
79
|
+
All file paths are handled using Node.js built-in `path` module for cross-platform compatibility:
|
|
80
|
+
- Uses `path.join()` for path construction
|
|
81
|
+
- Uses `os.homedir()` for user directory location
|
|
82
|
+
- Automatically handles Windows backslashes vs Unix forward slashes
|
|
83
|
+
|
|
84
|
+
## ๐ Development & Testing
|
|
85
|
+
|
|
86
|
+
### Cross-Platform Development Scripts
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Universal development mode (works everywhere)
|
|
90
|
+
npm run dev
|
|
91
|
+
|
|
92
|
+
# Mock mode for testing (works everywhere)
|
|
93
|
+
npm run dev:mock
|
|
94
|
+
|
|
95
|
+
# Platform-specific alternatives
|
|
96
|
+
npm run dev:windows # Windows only
|
|
97
|
+
npm run dev:unix # macOS/Linux only
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Testing Your Installation
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Health check (works on all platforms)
|
|
104
|
+
npm run health-check
|
|
105
|
+
|
|
106
|
+
# Diagnostic tool
|
|
107
|
+
npm run diagnose
|
|
108
|
+
|
|
109
|
+
# API key validation
|
|
110
|
+
npm run validate-key
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## ๐ Environment Variables
|
|
114
|
+
|
|
115
|
+
All environment variables work consistently across platforms:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Core configuration
|
|
119
|
+
OPTIMIZER_API_KEY=sk-opt-your-key-here
|
|
120
|
+
OPTIMIZER_BACKEND_URL=https://custom-backend.com
|
|
121
|
+
OPTIMIZER_DEV_MODE=true
|
|
122
|
+
NODE_ENV=development
|
|
123
|
+
|
|
124
|
+
# Advanced options
|
|
125
|
+
OPTIMIZER_REQUEST_TIMEOUT=30000
|
|
126
|
+
OPTIMIZER_MAX_RETRIES=5
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## ๐งช Platform-Specific Testing
|
|
130
|
+
|
|
131
|
+
### Windows Testing
|
|
132
|
+
|
|
133
|
+
```powershell
|
|
134
|
+
# PowerShell
|
|
135
|
+
$env:OPTIMIZER_API_KEY = "sk-dev-test-key"
|
|
136
|
+
$env:OPTIMIZER_DEV_MODE = "true"
|
|
137
|
+
node index.js
|
|
138
|
+
|
|
139
|
+
# Command Prompt
|
|
140
|
+
set OPTIMIZER_API_KEY=sk-dev-test-key
|
|
141
|
+
set OPTIMIZER_DEV_MODE=true
|
|
142
|
+
node index.js
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Unix Testing (macOS/Linux)
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Direct environment variables
|
|
149
|
+
OPTIMIZER_API_KEY=sk-dev-test-key OPTIMIZER_DEV_MODE=true node index.js
|
|
150
|
+
|
|
151
|
+
# Or export first
|
|
152
|
+
export OPTIMIZER_API_KEY=sk-dev-test-key
|
|
153
|
+
export OPTIMIZER_DEV_MODE=true
|
|
154
|
+
node index.js
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## ๐ MCP Client Compatibility
|
|
158
|
+
|
|
159
|
+
The package works with MCP-compatible applications across all platforms:
|
|
160
|
+
|
|
161
|
+
### Claude Desktop
|
|
162
|
+
- **Windows:** Configure in `%APPDATA%\Claude\claude_desktop_config.json`
|
|
163
|
+
- **macOS:** Configure in `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
164
|
+
- **Linux:** Configure in `~/.config/Claude/claude_desktop_config.json`
|
|
165
|
+
|
|
166
|
+
### Cursor IDE
|
|
167
|
+
- **All Platforms:** Configure in `~/.cursor/mcp.json`
|
|
168
|
+
|
|
169
|
+
### Windsurf
|
|
170
|
+
- **All Platforms:** Add via settings or configuration file
|
|
171
|
+
|
|
172
|
+
## ๐จ Troubleshooting
|
|
173
|
+
|
|
174
|
+
### Common Platform Issues
|
|
175
|
+
|
|
176
|
+
#### Windows
|
|
177
|
+
- **Issue:** Scripts fail with "cannot be loaded because running scripts is disabled"
|
|
178
|
+
- **Solution:** Run `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` in PowerShell
|
|
179
|
+
|
|
180
|
+
#### macOS
|
|
181
|
+
- **Issue:** Permission denied when installing globally
|
|
182
|
+
- **Solution:** Use `sudo npm install -g mcp-prompt-optimizer` or configure npm to use a different directory
|
|
183
|
+
|
|
184
|
+
#### Linux
|
|
185
|
+
- **Issue:** Node.js not found or wrong version
|
|
186
|
+
- **Solution:** Use Node Version Manager: `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash`
|
|
187
|
+
|
|
188
|
+
### Universal Troubleshooting
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Check Node.js version (should be 16+)
|
|
192
|
+
node --version
|
|
193
|
+
|
|
194
|
+
# Check npm version
|
|
195
|
+
npm --version
|
|
196
|
+
|
|
197
|
+
# Clear npm cache
|
|
198
|
+
npm cache clean --force
|
|
199
|
+
|
|
200
|
+
# Reinstall package
|
|
201
|
+
npm uninstall -g mcp-prompt-optimizer
|
|
202
|
+
npm install -g mcp-prompt-optimizer
|
|
203
|
+
|
|
204
|
+
# Reset package cache
|
|
205
|
+
npm run reset-cache
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## ๐ Performance Notes
|
|
209
|
+
|
|
210
|
+
### Platform Performance Characteristics
|
|
211
|
+
|
|
212
|
+
- **Windows:** Slightly slower file I/O due to Windows Defender scanning
|
|
213
|
+
- **macOS:** Excellent performance, especially on Apple Silicon
|
|
214
|
+
- **Linux:** Generally fastest performance, especially for server deployments
|
|
215
|
+
|
|
216
|
+
### Memory Usage
|
|
217
|
+
|
|
218
|
+
- **Typical:** 15-25 MB RAM usage
|
|
219
|
+
- **Peak:** Up to 50 MB during optimization
|
|
220
|
+
- **Consistent across all platforms**
|
|
221
|
+
|
|
222
|
+
## ๐ Security Considerations
|
|
223
|
+
|
|
224
|
+
### Platform-Specific Security
|
|
225
|
+
|
|
226
|
+
- **Windows:** API keys stored in user profile (protected by Windows user permissions)
|
|
227
|
+
- **macOS:** API keys stored in user home (protected by macOS file permissions)
|
|
228
|
+
- **Linux:** API keys stored with 600 permissions (user-only access)
|
|
229
|
+
|
|
230
|
+
### Network Security
|
|
231
|
+
- All platforms use identical HTTPS connections
|
|
232
|
+
- Certificate validation works uniformly across platforms
|
|
233
|
+
- Network timeouts and retry logic identical
|
|
234
|
+
|
|
235
|
+
## ๐ Platform Support Matrix
|
|
236
|
+
|
|
237
|
+
| Feature | Windows | macOS | Linux | ARM64 | Notes |
|
|
238
|
+
|---------|---------|--------|-------|-------|-------|
|
|
239
|
+
| Installation | โ
| โ
| โ
| โ
| npm/yarn |
|
|
240
|
+
| MCP Server | โ
| โ
| โ
| โ
| Full compatibility |
|
|
241
|
+
| Claude Desktop | โ
| โ
| โ
| โ
| All versions |
|
|
242
|
+
| Cursor IDE | โ
| โ
| โ
| โ
| Latest versions |
|
|
243
|
+
| Development Mode | โ
| โ
| โ
| โ
| Mock responses |
|
|
244
|
+
| Cache System | โ
| โ
| โ
| โ
| Platform-appropriate paths |
|
|
245
|
+
| Error Handling | โ
| โ
| โ
| โ
| Identical behavior |
|
|
246
|
+
| Network Resilience | โ
| โ
| โ
| โ
| Same retry logic |
|
|
247
|
+
|
|
248
|
+
## ๐ฏ Best Practices
|
|
249
|
+
|
|
250
|
+
### Universal Setup
|
|
251
|
+
|
|
252
|
+
1. **Use cross-env for development:** Always prefer `npm run dev` over platform-specific commands
|
|
253
|
+
2. **Environment variables:** Use `.env` files for consistent configuration
|
|
254
|
+
3. **Path handling:** Never hardcode paths - the package handles this automatically
|
|
255
|
+
4. **Testing:** Test on your target platform before deployment
|
|
256
|
+
|
|
257
|
+
### Production Deployment
|
|
258
|
+
|
|
259
|
+
- **Docker:** Package works excellently in containers (all Linux distros)
|
|
260
|
+
- **Cloud:** Tested on AWS, Google Cloud, Azure, Railway, Vercel, Render
|
|
261
|
+
- **Edge:** Works on edge computing platforms supporting Node.js 16+
|
|
262
|
+
|
|
263
|
+
## ๐ Support
|
|
264
|
+
|
|
265
|
+
If you encounter platform-specific issues:
|
|
266
|
+
|
|
267
|
+
1. **Check this guide first**
|
|
268
|
+
2. **Run diagnostics:** `npm run diagnose`
|
|
269
|
+
3. **Contact support:** support@promptoptimizer.help
|
|
270
|
+
4. **Include:** OS version, Node.js version, error messages
|
|
271
|
+
|
|
272
|
+
The MCP Prompt Optimizer is committed to providing identical functionality and performance across all supported platforms.
|
package/index.js
CHANGED
|
@@ -109,12 +109,40 @@ class MCPPromptOptimizer {
|
|
|
109
109
|
|
|
110
110
|
detectAIContext(prompt) {
|
|
111
111
|
const p = prompt.toLowerCase();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
|
|
113
|
+
// Image generation (highest priority - most specific)
|
|
114
|
+
if (/--ar|--v|midjourney|dall-e|photorealistic|render|3d\s+model/i.test(p)) {
|
|
115
|
+
return 'image_generation';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// LLM interaction (specific role-playing patterns)
|
|
119
|
+
if (/act as|you are a|role:|persona:|pretend to be/i.test(p)) {
|
|
120
|
+
return 'llm_interaction';
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Technical automation (scripts and execution) - check before code_generation
|
|
124
|
+
if (/def\s+\w+\s*\(.*\):/i.test(p) || /execute|script|automation|deploy|run\s+command|bash|shell/i.test(p)) {
|
|
125
|
+
return 'technical_automation';
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Structured output (data formats) - check before code_generation
|
|
129
|
+
if (/return.*as\s+(json|xml|yaml)|format.*as\s+(json|xml|yaml)|output.*as\s+(json|xml|yaml)|structured.*data/i.test(p)) {
|
|
130
|
+
return 'structured_output';
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Code generation (refined to be more specific)
|
|
134
|
+
if (/\b(write|create|build|make|generate)\b.*\b(function|method|class|script|program|code|algorithm|hello world)\b/i.test(p) ||
|
|
135
|
+
/hello\s+world\s+(function|program|script|code)/i.test(p) ||
|
|
136
|
+
/function\s*\(|class\s+\w+|interface\s+\w+|public\s+class|private\s+\w+/i.test(p)) {
|
|
137
|
+
return 'code_generation';
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// API automation (web services)
|
|
141
|
+
if (/api|endpoint|get\s+request|post\s+request|put\s+request|delete\s+request|rest\s+api|graphql/i.test(p)) {
|
|
142
|
+
return 'api_automation';
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Default to human communication
|
|
118
146
|
return 'human_communication';
|
|
119
147
|
}
|
|
120
148
|
|
|
@@ -124,6 +152,9 @@ class MCPPromptOptimizer {
|
|
|
124
152
|
image_generation: ['keyword_density', 'parameter_preservation', 'technical_accuracy'],
|
|
125
153
|
llm_interaction: ['context_specificity', 'token_efficiency', 'actionability'],
|
|
126
154
|
technical_automation: ['technical_accuracy', 'parameter_preservation', 'specificity'],
|
|
155
|
+
code_generation: ['syntax_clarity', 'best_practices', 'maintainability'],
|
|
156
|
+
structured_output: ['format_compliance', 'data_validation', 'schema_adherence'],
|
|
157
|
+
api_automation: ['endpoint_clarity', 'parameter_specification', 'error_handling']
|
|
127
158
|
};
|
|
128
159
|
(contextGoals[aiContext] || ['clarity', 'actionability']).forEach(g => goals.add(g));
|
|
129
160
|
return Array.from(goals);
|
|
@@ -179,13 +210,11 @@ class MCPPromptOptimizer {
|
|
|
179
210
|
return { content: [{ type: "text", text: this.formatQuotaStatus(info) }] };
|
|
180
211
|
}
|
|
181
212
|
|
|
182
|
-
// โ
FIXED: PRODUCTION-READY TEMPLATE SEARCH
|
|
183
213
|
async handleSearchTemplates(args) {
|
|
184
214
|
try {
|
|
185
|
-
// Construct the query parameters for the GET request
|
|
186
215
|
const params = new URLSearchParams({
|
|
187
216
|
query: args.query || '',
|
|
188
|
-
page: '1',
|
|
217
|
+
page: '1',
|
|
189
218
|
per_page: (args.limit || 5).toString(),
|
|
190
219
|
sort_by: 'confidence_score',
|
|
191
220
|
sort_order: 'desc'
|
|
@@ -195,13 +224,9 @@ class MCPPromptOptimizer {
|
|
|
195
224
|
params.append('ai_context', args.ai_context);
|
|
196
225
|
}
|
|
197
226
|
|
|
198
|
-
// The endpoint is GET /api/v1/templates/ with query parameters
|
|
199
227
|
const endpoint = `/api/v1/templates/?${params.toString()}`;
|
|
200
|
-
|
|
201
|
-
// Use 'GET' method for the API call
|
|
202
228
|
const result = await this.callBackendAPI(endpoint, null, 'GET');
|
|
203
229
|
|
|
204
|
-
// The backend returns a TemplateListResponse, so we adapt it
|
|
205
230
|
const searchResult = {
|
|
206
231
|
templates: result.templates || [],
|
|
207
232
|
total: result.total || 0,
|
|
@@ -214,7 +239,6 @@ class MCPPromptOptimizer {
|
|
|
214
239
|
|
|
215
240
|
} catch (error) {
|
|
216
241
|
console.error(`Template search failed: ${error.message}`);
|
|
217
|
-
// Provide a user-friendly fallback response
|
|
218
242
|
const fallbackResult = {
|
|
219
243
|
templates: [], total: 0,
|
|
220
244
|
message: "Template search is temporarily unavailable.",
|
|
@@ -369,5 +393,4 @@ if (require.main === module) {
|
|
|
369
393
|
startValidatedMCPServer();
|
|
370
394
|
}
|
|
371
395
|
|
|
372
|
-
// This is the definitive, corrected export statement.
|
|
373
396
|
module.exports = { MCPPromptOptimizer };
|
package/lib/api-key-manager.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cloud API Key Manager for MCP Prompt Optimizer
|
|
3
3
|
* Production-grade with enhanced network resilience and development mode
|
|
4
|
-
* ALIGNED with backend API requirements
|
|
4
|
+
* ALIGNED with backend API requirements - FIXED API ENDPOINTS
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
const fs = require('fs').promises;
|
|
@@ -15,7 +15,7 @@ const packageJson = require('../package.json');
|
|
|
15
15
|
class CloudApiKeyManager {
|
|
16
16
|
constructor(apiKey, options = {}) {
|
|
17
17
|
this.apiKey = apiKey;
|
|
18
|
-
this.backendUrl = options.backendUrl || process.env.OPTIMIZER_BACKEND_URL || 'https://p01--project-optimizer--
|
|
18
|
+
this.backendUrl = options.backendUrl || process.env.OPTIMIZER_BACKEND_URL || 'https://p01--project-optimizer--fvrdk8m9k9j.code.run';
|
|
19
19
|
this.cacheFile = path.join(os.homedir(), '.mcp-cloud-api-cache.json');
|
|
20
20
|
this.healthFile = path.join(os.homedir(), '.mcp-cloud-health.json');
|
|
21
21
|
this.cacheExpiry = options.cacheExpiry || 24 * 60 * 60 * 1000; // 24 hours
|
|
@@ -288,10 +288,10 @@ class CloudApiKeyManager {
|
|
|
288
288
|
throw lastError;
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
//
|
|
291
|
+
// โ
FIXED: Correct API endpoint URL
|
|
292
292
|
async validateWithBackend() {
|
|
293
293
|
return new Promise((resolve, reject) => {
|
|
294
|
-
const url = `${this.backendUrl}/api/v1/mcp/
|
|
294
|
+
const url = `${this.backendUrl}/api/v1/mcp/validate-key`;
|
|
295
295
|
|
|
296
296
|
const options = {
|
|
297
297
|
method: 'GET',
|
|
@@ -379,10 +379,10 @@ class CloudApiKeyManager {
|
|
|
379
379
|
});
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
-
//
|
|
382
|
+
// โ
FIXED: Correct API endpoint URL
|
|
383
383
|
async getQuotaStatus() {
|
|
384
384
|
try {
|
|
385
|
-
const url = `${this.backendUrl}/api/v1/mcp/
|
|
385
|
+
const url = `${this.backendUrl}/api/v1/mcp/quota-status`;
|
|
386
386
|
|
|
387
387
|
const options = {
|
|
388
388
|
method: 'GET',
|
|
@@ -694,4 +694,4 @@ class CloudApiKeyManager {
|
|
|
694
694
|
}
|
|
695
695
|
}
|
|
696
696
|
|
|
697
|
-
module.exports = CloudApiKeyManager;
|
|
697
|
+
module.exports = CloudApiKeyManager;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-prompt-optimizer",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"description": "Professional cloud-based MCP server for AI-powered prompt optimization with intelligent context detection, template auto-save, optimization insights, personal model configuration via WebUI, team collaboration, enterprise-grade features, production resilience, and startup validation. Universal compatibility with Claude Desktop, Cursor, Windsurf, and 17+ MCP clients.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,18 +12,39 @@
|
|
|
12
12
|
"validate-key": "node lib/validate-key.js",
|
|
13
13
|
"clear-cache": "node lib/clear-cache.js",
|
|
14
14
|
"diagnose": "node lib/diagnose.js",
|
|
15
|
-
"dev": "OPTIMIZER_DEV_MODE=true OPTIMIZER_API_KEY=sk-dev-test-key node index.js",
|
|
16
|
-
"dev:mock": "NODE_ENV=development OPTIMIZER_DEV_MODE=true OPTIMIZER_API_KEY=sk-dev-mock-key node index.js",
|
|
15
|
+
"dev": "cross-env OPTIMIZER_DEV_MODE=true OPTIMIZER_API_KEY=sk-dev-test-key node index.js",
|
|
16
|
+
"dev:mock": "cross-env NODE_ENV=development OPTIMIZER_DEV_MODE=true OPTIMIZER_API_KEY=sk-dev-mock-key node index.js",
|
|
17
|
+
"dev:windows": "set OPTIMIZER_DEV_MODE=true && set OPTIMIZER_API_KEY=sk-dev-test-key && node index.js",
|
|
18
|
+
"dev:unix": "OPTIMIZER_DEV_MODE=true OPTIMIZER_API_KEY=sk-dev-test-key node index.js",
|
|
17
19
|
"health-check": "node -e \"console.log('Package health check passed')\"",
|
|
18
|
-
"reset-cache": "node lib/clear-cache.js && echo 'Cache and health data cleared'"
|
|
20
|
+
"reset-cache": "node lib/clear-cache.js && echo 'Cache and health data cleared'",
|
|
21
|
+
"test": "node tests/test-runner.js",
|
|
22
|
+
"test:quick": "node tests/quick-test.js",
|
|
23
|
+
"test:integration": "node tests/integration-test.js",
|
|
24
|
+
"test:comprehensive": "node tests/comprehensive-test.js",
|
|
25
|
+
"test:runner": "node tests/test-runner.js",
|
|
26
|
+
"pretest": "npm run health-check",
|
|
27
|
+
"prepublishOnly": "npm run test:quick"
|
|
19
28
|
},
|
|
20
29
|
"dependencies": {
|
|
21
30
|
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
22
31
|
"node-fetch": "^3.0.0"
|
|
23
32
|
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"cross-env": "^7.0.3"
|
|
35
|
+
},
|
|
24
36
|
"engines": {
|
|
25
37
|
"node": ">=16.0.0"
|
|
26
38
|
},
|
|
39
|
+
"os": [
|
|
40
|
+
"win32",
|
|
41
|
+
"darwin",
|
|
42
|
+
"linux"
|
|
43
|
+
],
|
|
44
|
+
"cpu": [
|
|
45
|
+
"x64",
|
|
46
|
+
"arm64"
|
|
47
|
+
],
|
|
27
48
|
"keywords": [
|
|
28
49
|
"mcp",
|
|
29
50
|
"mcp-server",
|
|
@@ -59,7 +80,12 @@
|
|
|
59
80
|
"network-resilience",
|
|
60
81
|
"production-ready",
|
|
61
82
|
"development-mode",
|
|
62
|
-
"fallback-support"
|
|
83
|
+
"fallback-support",
|
|
84
|
+
"cross-platform",
|
|
85
|
+
"windows",
|
|
86
|
+
"macos",
|
|
87
|
+
"linux",
|
|
88
|
+
"arm64"
|
|
63
89
|
],
|
|
64
90
|
"author": "Prompt Optimizer Team <support@promptoptimizer.help>",
|
|
65
91
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -74,10 +100,47 @@
|
|
|
74
100
|
"files": [
|
|
75
101
|
"index.js",
|
|
76
102
|
"lib/",
|
|
103
|
+
"tests/",
|
|
77
104
|
"README.md",
|
|
78
105
|
"CHANGELOG.md",
|
|
106
|
+
"CROSS-PLATFORM.md",
|
|
79
107
|
"LICENSE"
|
|
80
108
|
],
|
|
109
|
+
"config": {
|
|
110
|
+
"crossPlatform": true,
|
|
111
|
+
"platforms": [
|
|
112
|
+
"win32-x64",
|
|
113
|
+
"darwin-x64",
|
|
114
|
+
"darwin-arm64",
|
|
115
|
+
"linux-x64",
|
|
116
|
+
"linux-arm64"
|
|
117
|
+
],
|
|
118
|
+
"securityRequired": true,
|
|
119
|
+
"binaryIntegrity": false,
|
|
120
|
+
"freeTierSupport": false
|
|
121
|
+
},
|
|
122
|
+
"platforms": {
|
|
123
|
+
"win32-x64": {
|
|
124
|
+
"supported": true,
|
|
125
|
+
"tested": true
|
|
126
|
+
},
|
|
127
|
+
"darwin-x64": {
|
|
128
|
+
"supported": true,
|
|
129
|
+
"tested": true
|
|
130
|
+
},
|
|
131
|
+
"darwin-arm64": {
|
|
132
|
+
"supported": true,
|
|
133
|
+
"tested": true
|
|
134
|
+
},
|
|
135
|
+
"linux-x64": {
|
|
136
|
+
"supported": true,
|
|
137
|
+
"tested": true
|
|
138
|
+
},
|
|
139
|
+
"linux-arm64": {
|
|
140
|
+
"supported": true,
|
|
141
|
+
"tested": false
|
|
142
|
+
}
|
|
143
|
+
},
|
|
81
144
|
"api_requirements": {
|
|
82
145
|
"required_keys": [
|
|
83
146
|
{
|
|
@@ -107,4 +170,4 @@
|
|
|
107
170
|
"dashboard": "https://promptoptimizer-blog.vercel.app/dashboard",
|
|
108
171
|
"pricing": "https://promptoptimizer-blog.vercel.app/pricing"
|
|
109
172
|
}
|
|
110
|
-
}
|
|
173
|
+
}
|