swarm-control 0.1.5 → 0.1.6
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 +4 -2
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +61 -28
- package/dist/installer.js.map +1 -1
- package/index.ts +1 -0
- package/package.json +17 -4
package/README.md
CHANGED
|
@@ -25,7 +25,9 @@ After installation, run the setup command:
|
|
|
25
25
|
swarm-control setup
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
This will
|
|
28
|
+
This will:
|
|
29
|
+
1. Install the swarm-control package to OpenCode's node_modules
|
|
30
|
+
2. Add it to the plugin list in your OpenCode config
|
|
29
31
|
|
|
30
32
|
**Important**: You must restart OpenCode after running setup for the plugin to be loaded.
|
|
31
33
|
|
|
@@ -208,7 +210,7 @@ swarm-control uninstall
|
|
|
208
210
|
```
|
|
209
211
|
|
|
210
212
|
This removes:
|
|
211
|
-
-
|
|
213
|
+
- `swarm-control` from OpenCode's plugin list
|
|
212
214
|
- Swarm configuration from OpenCode config
|
|
213
215
|
|
|
214
216
|
To also remove state, run `swarm-control reset` before uninstalling.
|
package/dist/installer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AA0BA,wBAAsB,WAAW,kBAkChC;AAED,wBAAsB,eAAe,kBAepC;AAED,wBAAsB,UAAU,kBAiB/B"}
|
package/dist/installer.js
CHANGED
|
@@ -1,43 +1,47 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
import JSON5 from 'json5';
|
|
4
6
|
import chalk from 'chalk';
|
|
5
7
|
import ora from 'ora';
|
|
6
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
9
|
const __dirname = path.dirname(__filename);
|
|
8
|
-
// Determine the package
|
|
10
|
+
// Determine the package tarball path
|
|
9
11
|
const PACKAGE_ROOT = __dirname.includes('node_modules')
|
|
10
12
|
? path.join(__dirname, '..')
|
|
11
13
|
: path.join(__dirname, '..');
|
|
12
|
-
const PLUGIN_DIST_PATH = path.join(PACKAGE_ROOT, 'dist/plugin');
|
|
13
|
-
const PLUGIN_TEMPLATE = path.join(PACKAGE_ROOT, 'templates/swarm-control.template.ts');
|
|
14
|
-
const PLUGIN_TARGET = path.join(process.env.HOME, '.config/opencode/plugin/swarm-control.ts');
|
|
15
14
|
const OPENCODE_CONFIG_DIR = path.join(process.env.HOME, '.config/opencode');
|
|
16
15
|
const OPENCODE_CONFIG_FILE = path.join(OPENCODE_CONFIG_DIR, 'opencode.json');
|
|
16
|
+
const OPENCODE_CACHE_DIR = path.join(process.env.HOME, '.cache/opencode');
|
|
17
17
|
const SWARM_CONFIG_KEY = 'swarm';
|
|
18
|
+
async function getPackageVersion() {
|
|
19
|
+
const packageJson = await fs.readJson(path.join(PACKAGE_ROOT, 'package.json'));
|
|
20
|
+
return packageJson.version;
|
|
21
|
+
}
|
|
18
22
|
export async function setupPlugin() {
|
|
19
23
|
const spinner = ora('Installing swarm-control plugin...').start();
|
|
20
24
|
try {
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const exists = await fs.pathExists(PLUGIN_TARGET);
|
|
34
|
-
if (!exists) {
|
|
35
|
-
throw new Error('Installation failed - plugin file not found');
|
|
25
|
+
// Ensure OpenCode directories exist
|
|
26
|
+
await fs.ensureDir(OPENCODE_CACHE_DIR);
|
|
27
|
+
// Install swarm-control package to OpenCode's node_modules
|
|
28
|
+
spinner.text = 'Installing package to OpenCode cache...';
|
|
29
|
+
const packageTarball = path.join(PACKAGE_ROOT, `swarm-control-${getPackageVersion()}.tgz`);
|
|
30
|
+
try {
|
|
31
|
+
execSync(`cd "${OPENCODE_CACHE_DIR}" && bun install "${packageTarball}"`, {
|
|
32
|
+
stdio: 'inherit'
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new Error('Failed to install package. Make sure bun is installed.');
|
|
36
37
|
}
|
|
38
|
+
// Add plugin to OpenCode config
|
|
39
|
+
spinner.text = 'Updating OpenCode config...';
|
|
40
|
+
await addToConfig();
|
|
37
41
|
spinner.succeed(chalk.green('Plugin installed successfully!'));
|
|
38
42
|
console.log(chalk.bold('\nNext steps:'));
|
|
39
43
|
console.log('1. Restart opencode');
|
|
40
|
-
console.log('2. Configure
|
|
44
|
+
console.log('2. Configure swarm model: /swarm_model <model-name>');
|
|
41
45
|
console.log('3. Start using: /swarm_spawn "your task"');
|
|
42
46
|
}
|
|
43
47
|
catch (error) {
|
|
@@ -49,11 +53,10 @@ export async function setupPlugin() {
|
|
|
49
53
|
export async function uninstallPlugin() {
|
|
50
54
|
const spinner = ora('Uninstalling swarm-control plugin...').start();
|
|
51
55
|
try {
|
|
52
|
-
// Remove plugin
|
|
53
|
-
await
|
|
54
|
-
// Remove swarm config from opencode config
|
|
55
|
-
await removeSwarmConfig();
|
|
56
|
+
// Remove plugin from OpenCode config
|
|
57
|
+
await removeFromConfig();
|
|
56
58
|
spinner.succeed(chalk.green('Plugin uninstalled successfully'));
|
|
59
|
+
console.log(chalk.yellow('\nNote: Run "bun remove swarm-control" in ~/.cache/opencode to remove cached files'));
|
|
57
60
|
}
|
|
58
61
|
catch (error) {
|
|
59
62
|
spinner.fail(chalk.red('Uninstallation failed'));
|
|
@@ -77,17 +80,47 @@ export async function resetState() {
|
|
|
77
80
|
process.exit(1);
|
|
78
81
|
}
|
|
79
82
|
}
|
|
80
|
-
async function
|
|
83
|
+
async function addToConfig() {
|
|
84
|
+
try {
|
|
85
|
+
const configExists = await fs.pathExists(OPENCODE_CONFIG_FILE);
|
|
86
|
+
if (!configExists) {
|
|
87
|
+
await fs.writeJson(OPENCODE_CONFIG_FILE, { plugin: ['swarm-control'] }, { spaces: 2 });
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
// Read config as text (it may have comments)
|
|
91
|
+
const configText = await fs.readFile(OPENCODE_CONFIG_FILE, 'utf-8');
|
|
92
|
+
// Parse config with json5 (supports comments)
|
|
93
|
+
const config = JSON5.parse(configText);
|
|
94
|
+
// Add swarm-control to plugin list
|
|
95
|
+
if (!config.plugin) {
|
|
96
|
+
config.plugin = [];
|
|
97
|
+
}
|
|
98
|
+
if (!config.plugin.includes('swarm-control')) {
|
|
99
|
+
config.plugin.push('swarm-control');
|
|
100
|
+
}
|
|
101
|
+
await fs.writeJson(OPENCODE_CONFIG_FILE, config, { spaces: 2 });
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.warn(chalk.yellow('Warning: Could not update opencode config'));
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function removeFromConfig() {
|
|
81
109
|
try {
|
|
82
110
|
const configExists = await fs.pathExists(OPENCODE_CONFIG_FILE);
|
|
83
111
|
if (!configExists)
|
|
84
112
|
return;
|
|
85
|
-
const
|
|
86
|
-
|
|
113
|
+
const configText = await fs.readFile(OPENCODE_CONFIG_FILE, 'utf-8');
|
|
114
|
+
const config = JSON5.parse(configText);
|
|
115
|
+
// Remove swarm-control from plugin list
|
|
116
|
+
if (config.plugin && Array.isArray(config.plugin)) {
|
|
117
|
+
config.plugin = config.plugin.filter((p) => p !== 'swarm-control');
|
|
118
|
+
}
|
|
119
|
+
// Remove swarm config
|
|
87
120
|
if (config[SWARM_CONFIG_KEY]) {
|
|
88
121
|
delete config[SWARM_CONFIG_KEY];
|
|
89
|
-
await fs.writeJson(OPENCODE_CONFIG_FILE, config, { spaces: 2 });
|
|
90
122
|
}
|
|
123
|
+
await fs.writeJson(OPENCODE_CONFIG_FILE, config, { spaces: 2 });
|
|
91
124
|
}
|
|
92
125
|
catch (error) {
|
|
93
126
|
console.warn(chalk.yellow('Warning: Could not update opencode config'));
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAE1C,
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SwarmControlPlugin } from "./dist/plugin/index.js"
|
package/package.json
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swarm-control",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OpenCode plugin for multi-agent swarm coordination",
|
|
6
|
-
"main": "
|
|
6
|
+
"main": "index.ts",
|
|
7
|
+
"module": "index.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./index.ts",
|
|
11
|
+
"types": "./index.ts"
|
|
12
|
+
},
|
|
13
|
+
"./cli": {
|
|
14
|
+
"import": "./dist/cli.js",
|
|
15
|
+
"types": "./dist/cli.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
7
18
|
"bin": {
|
|
8
19
|
"swarm-control": "./dist/cli.js"
|
|
9
20
|
},
|
|
10
21
|
"files": [
|
|
22
|
+
"index.ts",
|
|
11
23
|
"dist/",
|
|
12
24
|
"templates/",
|
|
13
25
|
"README.md",
|
|
@@ -22,10 +34,11 @@
|
|
|
22
34
|
"dependencies": {
|
|
23
35
|
"@opencode-ai/plugin": "^1.1.7",
|
|
24
36
|
"@opencode-ai/sdk": "^1.1.7",
|
|
25
|
-
"commander": "^11.0.0",
|
|
26
37
|
"chalk": "^5.3.0",
|
|
27
|
-
"
|
|
38
|
+
"commander": "^11.0.0",
|
|
28
39
|
"fs-extra": "^11.0.0",
|
|
40
|
+
"json5": "^2.2.3",
|
|
41
|
+
"ora": "^7.0.0",
|
|
29
42
|
"zod": "^3.22.0"
|
|
30
43
|
},
|
|
31
44
|
"devDependencies": {
|