stringray-ai 1.0.41 → 1.0.42

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.
@@ -0,0 +1,48 @@
1
+ # StrRay Python Backend
2
+
3
+ The StrRay framework includes a Python backend located in `src/strray/` with the following components:
4
+
5
+ - **Core Agents**: Async agent coordination and state management
6
+ - **Configuration**: Dynamic model routing and settings management
7
+ - **AI Services**: Interface to various AI providers
8
+ - **Performance Monitoring**: Metrics collection and analysis
9
+ - **Security**: Input validation and access control
10
+ - **Orchestration**: Async delegation, progress persistence, conflict resolution
11
+
12
+ ## Requirements
13
+
14
+ Install Python dependencies:
15
+
16
+ ```bash
17
+ pip install -r src/requirements.txt
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ The Python backend is automatically integrated with the framework agents and provides the underlying AI coordination capabilities.
23
+
24
+ ## Architecture
25
+
26
+ ```
27
+ .opencode/src/strray/
28
+ ├── core/
29
+ │ ├── agent.py # BaseAgent class with async capabilities
30
+ │ ├── context_loader.py # Context loading utilities
31
+ │ └── orchestration.py # Advanced coordination systems
32
+ ├── config/
33
+ │ └── manager.py # Configuration management
34
+ ├── ai/
35
+ │ └── service.py # AI service interfaces
36
+ ├── performance/
37
+ │ └── monitor.py # Performance monitoring
38
+ └── security.py # Security utilities
39
+ ```
40
+
41
+ ## Integration with oh-my-opencode
42
+
43
+ The Python backend integrates seamlessly with the oh-my-opencode framework through:
44
+
45
+ - **MCP Servers**: Model Context Protocol for agent communication
46
+ - **Configuration Bridge**: Shared configuration management
47
+ - **Command Interface**: Shell script integration points
48
+ - **Logging Integration**: Automatic logging to REFACTORING_LOG.md
@@ -0,0 +1,93 @@
1
+ {
2
+ "version": "2.14.0",
3
+ "model": "opencode/grok-code",
4
+
5
+ "settings": {
6
+ "theme": "auto",
7
+ "maxConcurrentAgents": 5,
8
+ "multi_agent_orchestration": {
9
+ "enabled": true,
10
+ "max_concurrent_agents": 5,
11
+ "coordination_model": "async-multi-agent"
12
+ },
13
+ "relentlessExecution": true,
14
+ "errorTolerance": 0,
15
+ "performanceBudget": {
16
+ "bundleSizeKb": 2048,
17
+ "responseTimeMs": 2000,
18
+ "memoryUsageMb": 512
19
+ },
20
+ "security": {
21
+ "inputValidation": true,
22
+ "sanitizeData": true,
23
+ "auditLogging": true
24
+ }
25
+ },
26
+ "hooks": {
27
+ "preCommit": ["lint", "test", "security-scan"],
28
+ "postCommit": ["deploy-preview"],
29
+ "onError": ["notify-team", "log-error"]
30
+ },
31
+ "integrations": {
32
+ "github": true,
33
+ "slack": false,
34
+ "datadog": false
35
+ },
36
+
37
+ "plugin": ["oh-my-opencode", "dist/plugin/plugins/stringray-codex-injection.js"],
38
+ "claude_code": {
39
+ "mcp": true,
40
+ "commands": true,
41
+ "skills": true,
42
+ "agents": true,
43
+ "hooks": true,
44
+ "plugins": true
45
+ },
46
+ "agent": {
47
+ "orchestrator": {
48
+ "model": "opencode/grok-code"
49
+ },
50
+ "enhanced-orchestrator": {
51
+ "model": "opencode/grok-code"
52
+ },
53
+ "enforcer": {
54
+ "model": "opencode/grok-code"
55
+ },
56
+ "architect": {
57
+ "model": "opencode/grok-code"
58
+ },
59
+ "test-architect": {
60
+ "model": "opencode/grok-code"
61
+ },
62
+ "bug-triage-specialist": {
63
+ "model": "opencode/grok-code"
64
+ },
65
+ "code-reviewer": {
66
+ "model": "opencode/grok-code"
67
+ },
68
+ "security-auditor": {
69
+ "model": "opencode/grok-code"
70
+ },
71
+ "refactorer": {
72
+ "model": "opencode/grok-code"
73
+ },
74
+ "librarian": {
75
+ "model": "opencode/grok-code"
76
+ },
77
+ "explore": {
78
+ "model": "opencode/grok-code"
79
+ },
80
+ "oracle": {
81
+ "model": "opencode/grok-code"
82
+ },
83
+ "frontend-ui-ux-engineer": {
84
+ "model": "opencode/grok-code"
85
+ },
86
+ "document-writer": {
87
+ "model": "opencode/grok-code"
88
+ },
89
+ "multimodal-looker": {
90
+ "model": "opencode/grok-code"
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "dependencies": {
4
+ "@opencode-ai/plugin": "1.1.19"
5
+ }
6
+ }
package/opencode.json ADDED
@@ -0,0 +1,112 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "mcp": {
4
+ // Disable problematic default MCP servers
5
+ "context7": { "enabled": false },
6
+ "global-everything": { "enabled": false },
7
+ "global-filesystem": { "enabled": false },
8
+ "global-git": { "enabled": false },
9
+ "global-sqlite": { "enabled": false },
10
+ "grep_app": { "enabled": false },
11
+ // Enable our custom StrRay MCP servers
12
+ "orchestrator": {
13
+ "type": "local",
14
+ "command": ["node", "dist/mcps/orchestrator.server.js"],
15
+ "enabled": true
16
+ },
17
+ "enhanced-orchestrator": {
18
+ "type": "local",
19
+ "command": ["node", "dist/mcps/enhanced-orchestrator.server.js"],
20
+ "enabled": true
21
+ },
22
+ "enforcer": {
23
+ "type": "local",
24
+ "command": ["node", "dist/mcps/enforcer-tools.server.js"],
25
+ "enabled": true
26
+ },
27
+ "api-design": {
28
+ "type": "local",
29
+ "command": ["node", "dist/mcps/knowledge-skills/api-design.server.js"],
30
+ "enabled": true
31
+ },
32
+ "architecture-patterns": {
33
+ "type": "local",
34
+ "command": [
35
+ "node",
36
+ "dist/mcps/knowledge-skills/architecture-patterns.server.js"
37
+ ],
38
+ "enabled": true
39
+ },
40
+ "git-workflow": {
41
+ "type": "local",
42
+ "command": ["node", "dist/mcps/knowledge-skills/git-workflow.server.js"],
43
+ "enabled": true
44
+ },
45
+ "performance-optimization": {
46
+ "type": "local",
47
+ "command": [
48
+ "node",
49
+ "dist/mcps/knowledge-skills/performance-optimization.server.js"
50
+ ],
51
+ "enabled": true
52
+ },
53
+ "project-analysis": {
54
+ "type": "local",
55
+ "command": [
56
+ "node",
57
+ "dist/mcps/knowledge-skills/project-analysis.server.js"
58
+ ],
59
+ "enabled": true
60
+ },
61
+ "testing-strategy": {
62
+ "type": "local",
63
+ "command": [
64
+ "node",
65
+ "dist/mcps/knowledge-skills/testing-strategy.server.js"
66
+ ],
67
+ "enabled": true
68
+ },
69
+ "code-review": {
70
+ "type": "local",
71
+ "command": ["node", "dist/mcps/knowledge-skills/code-review.server.js"],
72
+ "enabled": true
73
+ },
74
+ "security-audit": {
75
+ "type": "local",
76
+ "command": [
77
+ "node",
78
+ "dist/mcps/knowledge-skills/security-audit.server.js"
79
+ ],
80
+ "enabled": true
81
+ },
82
+ "ui-ux-design": {
83
+ "type": "local",
84
+ "command": ["node", "dist/mcps/knowledge-skills/ui-ux-design.server.js"],
85
+ "enabled": true
86
+ },
87
+ "refactoring-strategies": {
88
+ "type": "local",
89
+ "command": [
90
+ "node",
91
+ "dist/mcps/knowledge-skills/refactoring-strategies.server.js"
92
+ ],
93
+ "enabled": true
94
+ },
95
+ "testing-best-practices": {
96
+ "type": "local",
97
+ "command": [
98
+ "node",
99
+ "dist/mcps/knowledge-skills/testing-best-practices.server.js"
100
+ ],
101
+ "enabled": true
102
+ },
103
+ "librarian": {
104
+ "type": "local",
105
+ "command": [
106
+ "node",
107
+ "dist/plugin/mcps/knowledge-skills/project-analysis.server.js"
108
+ ],
109
+ "enabled": true
110
+ }
111
+ }
112
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stringray-ai",
3
- "version": "1.0.41",
3
+ "version": "1.0.42",
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",
@@ -95,6 +95,9 @@
95
95
  },
96
96
  "files": [
97
97
  ".mcp.json",
98
+ "opencode.json",
99
+ ".opencode/oh-my-opencode.json",
100
+ ".opencode/package.json",
98
101
  "dist/cli",
99
102
  "dist/plugin",
100
103
  "dist/mcps",
@@ -8,35 +8,57 @@ const fs = require('fs');
8
8
  const path = require('path');
9
9
  const os = require('os');
10
10
 
11
- // Copy .mcp.json to project root if it doesn't exist
11
+ // Configuration files to copy during installation
12
+ const configFiles = [
13
+ { source: '.mcp.json', dest: '.mcp.json' },
14
+ { source: 'opencode.json', dest: 'opencode.json' },
15
+ { source: '.opencode/oh-my-opencode.json', dest: '.opencode/oh-my-opencode.json' },
16
+ { source: '.opencode/package.json', dest: '.opencode/package.json' }
17
+ ];
18
+
12
19
  // Find the package root relative to this script
13
20
  const packageRoot = path.join(__dirname, '..');
14
- const mcpConfigSource = path.join(packageRoot, '.mcp.json');
15
- const mcpConfigDest = path.join(process.cwd(), '.mcp.json');
16
21
 
17
22
  console.log('Postinstall running...');
18
23
  console.log('Script dir:', __dirname);
19
24
  console.log('Package root:', packageRoot);
20
- console.log('Source:', mcpConfigSource);
21
- console.log('Destination:', mcpConfigDest);
22
- console.log('Source exists:', fs.existsSync(mcpConfigSource));
23
25
 
24
- try {
25
- if (fs.existsSync(mcpConfigSource)) {
26
- fs.copyFileSync(mcpConfigSource, mcpConfigDest);
27
- console.log('✅ StrRay MCP configuration installed');
28
- } else {
29
- console.warn('Warning: MCP config not found at', mcpConfigSource);
30
- // Try alternative locations
31
- const altSource = path.join(packageRoot, 'node_modules', 'stringray-ai', '.mcp.json');
32
- if (fs.existsSync(altSource)) {
33
- fs.copyFileSync(altSource, mcpConfigDest);
34
- console.log('✅ StrRay MCP configuration installed (alt location)');
26
+ // Copy all configuration files
27
+ configFiles.forEach(({ source: sourcePath, dest: destPath }) => {
28
+ const source = path.join(packageRoot, sourcePath);
29
+ const dest = path.join(process.cwd(), destPath);
30
+
31
+ console.log(`Copying ${sourcePath} -> ${destPath}`);
32
+ console.log('Source exists:', fs.existsSync(source));
33
+
34
+ try {
35
+ if (fs.existsSync(source)) {
36
+ // Ensure destination directory exists
37
+ const destDir = path.dirname(dest);
38
+ if (!fs.existsSync(destDir)) {
39
+ fs.mkdirSync(destDir, { recursive: true });
40
+ console.log(`Created directory: ${destDir}`);
41
+ }
42
+
43
+ fs.copyFileSync(source, dest);
44
+ console.log(`✅ ${sourcePath} installed`);
45
+ } else {
46
+ console.warn(`Warning: ${sourcePath} not found at ${source}`);
47
+ // Try alternative locations for installed package
48
+ const altSource = path.join(packageRoot, 'node_modules', 'stringray-ai', sourcePath);
49
+ if (fs.existsSync(altSource)) {
50
+ const destDir = path.dirname(dest);
51
+ if (!fs.existsSync(destDir)) {
52
+ fs.mkdirSync(destDir, { recursive: true });
53
+ }
54
+ fs.copyFileSync(altSource, dest);
55
+ console.log(`✅ ${sourcePath} installed (alt location)`);
56
+ }
35
57
  }
58
+ } catch (error) {
59
+ console.warn(`Warning: Could not copy ${sourcePath}:`, error.message);
36
60
  }
37
- } catch (error) {
38
- console.warn('Warning: Could not copy MCP config:', error.message);
39
- }
61
+ });
40
62
 
41
63
  // Create a marker file to prove the script ran
42
64
  const markerPath = path.join(os.tmpdir(), 'stringray-postinstall-ran');