stringray-ai 1.0.14 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/package.json +1 -1
- package/scripts/test-stringray-plugin.mjs +105 -6
package/README.md
CHANGED
|
@@ -61,7 +61,13 @@
|
|
|
61
61
|
|
|
62
62
|
### Installation
|
|
63
63
|
|
|
64
|
+
First, ensure you have a `package.json` file in your project:
|
|
65
|
+
|
|
64
66
|
```bash
|
|
67
|
+
# If you don't have package.json yet
|
|
68
|
+
npm init -y
|
|
69
|
+
|
|
70
|
+
# Then install StringRay AI
|
|
65
71
|
npm install stringray-ai
|
|
66
72
|
```
|
|
67
73
|
|
|
@@ -70,10 +76,10 @@ npm install stringray-ai
|
|
|
70
76
|
**Important:** After installation, you must run the setup command manually:
|
|
71
77
|
|
|
72
78
|
```bash
|
|
73
|
-
npx stringray-ai
|
|
79
|
+
npx stringray-ai install
|
|
74
80
|
```
|
|
75
81
|
|
|
76
|
-
**Note:**
|
|
82
|
+
**Note:** The setup command is required because npm's postinstall scripts have security restrictions that prevent automatic configuration. This ensures you have full control over the installation process.
|
|
77
83
|
|
|
78
84
|
This will automatically:
|
|
79
85
|
|
|
@@ -81,6 +87,28 @@ This will automatically:
|
|
|
81
87
|
- ✅ Enable multi-agent orchestration settings
|
|
82
88
|
- ✅ Set up configuration for AI development workflows
|
|
83
89
|
|
|
90
|
+
### Validation & Testing
|
|
91
|
+
|
|
92
|
+
After installation, validate that StringRay is working correctly:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Test CLI functionality
|
|
96
|
+
npx stringray-ai --help
|
|
97
|
+
npx stringray-ai doctor
|
|
98
|
+
|
|
99
|
+
# Run comprehensive plugin validation
|
|
100
|
+
node node_modules/stringray-ai/scripts/test-stringray-plugin.mjs
|
|
101
|
+
|
|
102
|
+
# Check system status
|
|
103
|
+
npx stringray-ai status
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The plugin test will verify:
|
|
107
|
+
- ✅ Plugin loads successfully
|
|
108
|
+
- ✅ Codex injection works
|
|
109
|
+
- ✅ System hooks are functional
|
|
110
|
+
- ✅ Framework is ready for oh-my-opencode integration
|
|
111
|
+
|
|
84
112
|
### Manual Installation
|
|
85
113
|
|
|
86
114
|
If automatic setup fails:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stringray-ai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.16",
|
|
4
4
|
"description": "⚡ StringRay ⚡: Bulletproof AI orchestration with systematic error prevention. Zero dead ends. Ship clean, tested, optimized code — every time.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/plugin/index.js",
|
|
@@ -58,14 +58,17 @@ console.log('=====================================\n');
|
|
|
58
58
|
console.log(`📚 Codex context injected: ${hasCodex ? '✅' : '❌'}`);
|
|
59
59
|
console.log(`📋 Codex terms included: ${hasTerms ? '✅' : '❌'}`);
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
if (hasCodex && hasTerms) {
|
|
62
62
|
console.log('\n🎉 StringRay Framework Plugin Test: PASSED');
|
|
63
63
|
console.log('✨ Framework is ready for oh-my-opencode integration');
|
|
64
|
-
|
|
64
|
+
|
|
65
|
+
// Run comprehensive deployment tests
|
|
66
|
+
console.log('\n🔬 Running comprehensive deployment validation...');
|
|
67
|
+
await runComprehensiveTests();
|
|
65
68
|
} else {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
console.log('\n❌ StringRay Framework Plugin Test: FAILED');
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
69
72
|
} else {
|
|
70
73
|
console.log('❌ No system messages generated');
|
|
71
74
|
process.exit(1);
|
|
@@ -75,4 +78,100 @@ console.log('=====================================\n');
|
|
|
75
78
|
console.error('❌ Plugin loading failed:', error);
|
|
76
79
|
process.exit(1);
|
|
77
80
|
}
|
|
78
|
-
})();
|
|
81
|
+
})();
|
|
82
|
+
|
|
83
|
+
// Comprehensive deployment validation function
|
|
84
|
+
async function runComprehensiveTests() {
|
|
85
|
+
console.log('\n🔬 Running comprehensive deployment validation...\n');
|
|
86
|
+
|
|
87
|
+
const tests = [
|
|
88
|
+
{
|
|
89
|
+
name: 'Core functionality test',
|
|
90
|
+
command: 'npm run test:architect --prefix ..',
|
|
91
|
+
description: 'Tests core StringRay functionality'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'MCP server connectivity test',
|
|
95
|
+
command: 'npm run test:mcp-connectivity --prefix ..',
|
|
96
|
+
description: 'Tests MCP server connections'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: 'oh-my-opencode integration test',
|
|
100
|
+
command: 'npm run test:oh-my-opencode-integration --prefix ..',
|
|
101
|
+
description: 'Tests oh-my-opencode integration'
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'External process communication test',
|
|
105
|
+
command: 'npm run test:external-processes --prefix ..',
|
|
106
|
+
description: 'Tests external process communication'
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
|
|
110
|
+
let passed = 0;
|
|
111
|
+
let failed = 0;
|
|
112
|
+
|
|
113
|
+
for (const test of tests) {
|
|
114
|
+
console.log(`🧪 Running ${test.name}...`);
|
|
115
|
+
console.log(` ${test.description}`);
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
const { spawn } = await import('child_process');
|
|
119
|
+
const [cmd, ...args] = test.command.split(' ');
|
|
120
|
+
|
|
121
|
+
await new Promise((resolve, reject) => {
|
|
122
|
+
const child = spawn(cmd, args, {
|
|
123
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
124
|
+
cwd: process.cwd()
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
let stdout = '';
|
|
128
|
+
let stderr = '';
|
|
129
|
+
|
|
130
|
+
child.stdout.on('data', (data) => {
|
|
131
|
+
stdout += data.toString();
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
child.stderr.on('data', (data) => {
|
|
135
|
+
stderr += data.toString();
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
child.on('close', (code) => {
|
|
139
|
+
if (code === 0) {
|
|
140
|
+
console.log(` ✅ PASSED\n`);
|
|
141
|
+
passed++;
|
|
142
|
+
resolve();
|
|
143
|
+
} else {
|
|
144
|
+
console.log(` ❌ FAILED (exit code: ${code})`);
|
|
145
|
+
if (stderr) console.log(` Error: ${stderr.slice(0, 200)}...`);
|
|
146
|
+
console.log('');
|
|
147
|
+
failed++;
|
|
148
|
+
resolve(); // Continue with other tests
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
child.on('error', (error) => {
|
|
153
|
+
console.log(` ❌ FAILED (spawn error: ${error.message})`);
|
|
154
|
+
console.log('');
|
|
155
|
+
failed++;
|
|
156
|
+
resolve();
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
} catch (error) {
|
|
160
|
+
console.log(` ❌ FAILED (exception: ${error.message})`);
|
|
161
|
+
console.log('');
|
|
162
|
+
failed++;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
console.log('📊 Comprehensive Test Results:');
|
|
167
|
+
console.log(` ✅ Passed: ${passed}`);
|
|
168
|
+
console.log(` ❌ Failed: ${failed}`);
|
|
169
|
+
console.log(` 📈 Success Rate: ${Math.round((passed / (passed + failed)) * 100)}%`);
|
|
170
|
+
|
|
171
|
+
if (failed === 0) {
|
|
172
|
+
console.log('\n🎉 ALL COMPREHENSIVE TESTS PASSED!');
|
|
173
|
+
console.log('✨ StringRay Framework is fully operational and ready for production use.');
|
|
174
|
+
} else {
|
|
175
|
+
console.log(`\n⚠️ ${failed} test(s) failed. Please check the framework configuration.`);
|
|
176
|
+
}
|
|
177
|
+
}
|