expxagents 0.4.1 → 0.5.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/README.md
CHANGED
|
@@ -30,6 +30,9 @@ npx expxagents create
|
|
|
30
30
|
|
|
31
31
|
# Run a squad
|
|
32
32
|
npx expxagents run my-squad
|
|
33
|
+
|
|
34
|
+
# Open the virtual office (starts server if needed)
|
|
35
|
+
npx expxagents virtual-office
|
|
33
36
|
```
|
|
34
37
|
|
|
35
38
|
## How It Works
|
|
@@ -51,6 +54,7 @@ npx expxagents run my-squad
|
|
|
51
54
|
| `expxagents list` | List all available squads |
|
|
52
55
|
| `expxagents stop <name>` | Stop a running squad |
|
|
53
56
|
| `expxagents server` | Start the dashboard server (port 3001) |
|
|
57
|
+
| `expxagents virtual-office` | Open the virtual office in browser |
|
|
54
58
|
| `expxagents doctor` | Check system health and dependencies |
|
|
55
59
|
| `expxagents install <skill>` | Install a skill from the catalog |
|
|
56
60
|
| `expxagents uninstall <skill>` | Remove an installed skill |
|
|
@@ -85,7 +89,7 @@ ExpxAgents also works as a **Claude Code plugin** for IDE integration:
|
|
|
85
89
|
/install-plugin https://github.com/bittencourtthulio/expxagents
|
|
86
90
|
```
|
|
87
91
|
|
|
88
|
-
Then use `/expxagents` to access the main menu, create squads, run pipelines, and more — all from your editor.
|
|
92
|
+
Then use `/expxagents` to access the main menu, create squads, run pipelines, open the virtual office, and more — all from your editor.
|
|
89
93
|
|
|
90
94
|
## Core Architecture
|
|
91
95
|
|
|
@@ -140,6 +140,7 @@ Present using AskUserQuestion with 2-4 options:
|
|
|
140
140
|
| \`/expxagents uninstall <name>\` | Remove installed skill |
|
|
141
141
|
| \`/expxagents delete <name>\` | Confirm and delete squad |
|
|
142
142
|
| \`/expxagents dashboard\` | Start server + open dashboard |
|
|
143
|
+
| \`/expxagents virtual-office\` | Start server + open virtual office in browser |
|
|
143
144
|
| \`/expxagents help\` | Show help text |
|
|
144
145
|
|
|
145
146
|
## Loading Agents
|
|
@@ -213,8 +214,9 @@ SKILLS
|
|
|
213
214
|
/expxagents uninstall Remove a skill
|
|
214
215
|
|
|
215
216
|
SETTINGS
|
|
216
|
-
/expxagents dashboard
|
|
217
|
-
/expxagents
|
|
217
|
+
/expxagents dashboard Open virtual office
|
|
218
|
+
/expxagents virtual-office Open virtual office in browser
|
|
219
|
+
/expxagents help Show this help
|
|
218
220
|
\`\`\`
|
|
219
221
|
|
|
220
222
|
## Critical Rules
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function virtualOfficeCommand(): Promise<void>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { spawn, execSync } from 'child_process';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export async function virtualOfficeCommand() {
|
|
4
|
+
const port = process.env.PORT ?? '3001';
|
|
5
|
+
const url = `http://localhost:${port}/office`;
|
|
6
|
+
// Check if server is already running
|
|
7
|
+
let serverRunning = false;
|
|
8
|
+
try {
|
|
9
|
+
const res = await fetch(`http://localhost:${port}/api/health`);
|
|
10
|
+
serverRunning = res.ok;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
serverRunning = false;
|
|
14
|
+
}
|
|
15
|
+
if (!serverRunning) {
|
|
16
|
+
console.log('Starting ExpxAgents server...');
|
|
17
|
+
const cwd = process.cwd();
|
|
18
|
+
const serverDir = path.join(cwd, 'server');
|
|
19
|
+
const child = spawn('node', ['dist/index.js'], {
|
|
20
|
+
cwd: serverDir,
|
|
21
|
+
stdio: 'inherit',
|
|
22
|
+
env: { ...process.env },
|
|
23
|
+
detached: true,
|
|
24
|
+
});
|
|
25
|
+
child.on('error', (err) => {
|
|
26
|
+
console.error(`Failed to start server: ${err.message}`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
});
|
|
29
|
+
// Wait for server to start
|
|
30
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
31
|
+
}
|
|
32
|
+
// Open browser
|
|
33
|
+
console.log(`Opening virtual office at ${url}`);
|
|
34
|
+
const platform = process.platform;
|
|
35
|
+
try {
|
|
36
|
+
if (platform === 'darwin') {
|
|
37
|
+
execSync(`open ${url}`);
|
|
38
|
+
}
|
|
39
|
+
else if (platform === 'linux') {
|
|
40
|
+
execSync(`xdg-open ${url}`);
|
|
41
|
+
}
|
|
42
|
+
else if (platform === 'win32') {
|
|
43
|
+
execSync(`start ${url}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
console.log(`Could not open browser. Visit ${url} manually.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
package/dist/cli/src/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { uninstallCommand } from './commands/uninstall.js';
|
|
|
9
9
|
import { serverCommand } from './commands/server.js';
|
|
10
10
|
import { doctorCommand } from './commands/doctor.js';
|
|
11
11
|
import { onboardingCommand } from './commands/onboarding.js';
|
|
12
|
+
import { virtualOfficeCommand } from './commands/virtual-office.js';
|
|
12
13
|
const program = new Command();
|
|
13
14
|
program
|
|
14
15
|
.name('expxagents')
|
|
@@ -55,4 +56,8 @@ program
|
|
|
55
56
|
.command('onboarding')
|
|
56
57
|
.description('Configure company profile and preferences')
|
|
57
58
|
.action(onboardingCommand);
|
|
59
|
+
program
|
|
60
|
+
.command('virtual-office')
|
|
61
|
+
.description('Open the virtual office in browser')
|
|
62
|
+
.action(virtualOfficeCommand);
|
|
58
63
|
program.parse();
|