neohive 6.0.0 → 6.0.3
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/CHANGELOG.md +7 -0
- package/cli.js +134 -33
- package/conversation-templates/autonomous-feature.json +54 -4
- package/conversation-templates/code-review.json +41 -3
- package/conversation-templates/debug-squad.json +41 -3
- package/conversation-templates/feature-build.json +41 -3
- package/conversation-templates/research-write.json +41 -3
- package/dashboard.html +2001 -691
- package/dashboard.js +719 -67
- package/lib/compact.js +5 -2
- package/lib/config.js +4 -3
- package/lib/file-io.js +3 -3
- package/lib/resolve-server-data-dir.js +96 -0
- package/package.json +2 -2
- package/server.js +872 -148
- package/templates/debate.json +24 -5
- package/templates/managed.json +48 -9
- package/templates/pair.json +22 -3
- package/templates/review.json +26 -5
- package/templates/team.json +38 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [6.0.3] - 2026-04-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **MCP data directory** — When the MCP process starts with cwd outside the repo (e.g. Cursor home) and no `NEOHIVE_DATA_DIR`, resolve the hive from repo `.cursor/mcp.json` / sibling config (`lib/resolve-server-data-dir.js`); `lib/config.js` uses the same root so agents and dashboard agree.
|
|
8
|
+
- **Dashboard `projects.json`** — Only rewrite the projects file when the canonical list differs from on-disk data (`pack(nonRedundant) !== pack(raw)`), not on every load when duplicates or default-hive rows were only present in the normalized pass-through list.
|
|
9
|
+
|
|
3
10
|
## [5.1.0] - 2026-03-19
|
|
4
11
|
|
|
5
12
|
### Major — True Autonomy Engine + Team Intelligence + Scale to 100
|
package/cli.js
CHANGED
|
@@ -9,35 +9,32 @@ const command = process.argv[2];
|
|
|
9
9
|
|
|
10
10
|
function printUsage() {
|
|
11
11
|
console.log(`
|
|
12
|
-
Neohive
|
|
13
|
-
MCP
|
|
14
|
-
Supports: Claude Code, Gemini CLI, Codex CLI, Ollama
|
|
12
|
+
Neohive v6.0.0
|
|
13
|
+
The MCP collaboration layer for AI CLI tools.
|
|
15
14
|
|
|
16
15
|
Usage:
|
|
17
|
-
npx neohive init
|
|
18
|
-
npx neohive init --claude
|
|
19
|
-
npx neohive init --gemini
|
|
20
|
-
npx neohive init --codex
|
|
21
|
-
npx neohive init --
|
|
22
|
-
npx neohive init --
|
|
23
|
-
npx neohive init --
|
|
24
|
-
npx neohive
|
|
25
|
-
npx neohive
|
|
26
|
-
npx neohive
|
|
27
|
-
npx neohive
|
|
28
|
-
npx neohive
|
|
29
|
-
npx neohive status
|
|
30
|
-
npx neohive
|
|
31
|
-
npx neohive
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
100ms handoff cooldowns in autonomous mode
|
|
40
|
-
Plan dashboard: live progress, pause/stop/skip/reassign controls
|
|
16
|
+
npx neohive init Auto-detect CLI and configure MCP
|
|
17
|
+
npx neohive init --claude Configure for Claude Code only
|
|
18
|
+
npx neohive init --gemini Configure for Gemini CLI only
|
|
19
|
+
npx neohive init --codex Configure for Codex CLI only
|
|
20
|
+
npx neohive init --cursor Configure for Cursor IDE only (.cursor/mcp.json)
|
|
21
|
+
npx neohive init --all Configure for all supported CLIs
|
|
22
|
+
npx neohive init --ollama Setup Ollama local LLM bridge
|
|
23
|
+
npx neohive init --template T Initialize with a team template
|
|
24
|
+
npx neohive serve Run MCP server in HTTP mode (port 4321)
|
|
25
|
+
npx neohive serve --port 8080 Custom port for HTTP server
|
|
26
|
+
npx neohive dashboard Launch web dashboard (http://localhost:3000)
|
|
27
|
+
npx neohive dashboard --lan Dashboard accessible on LAN
|
|
28
|
+
npx neohive status Show active agents and tasks
|
|
29
|
+
npx neohive msg <agent> <text> Send a message from CLI
|
|
30
|
+
npx neohive doctor Diagnostic health check
|
|
31
|
+
npx neohive templates List available team templates
|
|
32
|
+
npx neohive reset --force Clear all data (auto-archives first)
|
|
33
|
+
npx neohive uninstall Remove from all CLI configs
|
|
34
|
+
npx neohive help Show this help
|
|
35
|
+
|
|
36
|
+
Templates: pair, team, review, debate, managed
|
|
37
|
+
Docs: https://github.com/fakiho/neohive
|
|
41
38
|
`);
|
|
42
39
|
}
|
|
43
40
|
|
|
@@ -61,6 +58,11 @@ function detectCLIs() {
|
|
|
61
58
|
detected.push('codex');
|
|
62
59
|
}
|
|
63
60
|
|
|
61
|
+
// Cursor IDE: ~/.cursor/ (app support) exists
|
|
62
|
+
if (fs.existsSync(path.join(home, '.cursor'))) {
|
|
63
|
+
detected.push('cursor');
|
|
64
|
+
}
|
|
65
|
+
|
|
64
66
|
return detected;
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -173,6 +175,41 @@ timeout = 300
|
|
|
173
175
|
console.log(' [ok] Codex CLI: .codex/config.toml updated');
|
|
174
176
|
}
|
|
175
177
|
|
|
178
|
+
// Configure for Cursor IDE — absolute NEOHIVE_DATA_DIR so Node never sees unexpanded ${workspaceFolder}.
|
|
179
|
+
// If the IDE omits env on spawn, server startup still resolves the hive via lib/resolve-server-data-dir.js
|
|
180
|
+
// (walks cwd ancestors for the same MCP files).
|
|
181
|
+
function setupCursor(serverPath, cwd) {
|
|
182
|
+
const cursorDir = path.join(cwd, '.cursor');
|
|
183
|
+
const mcpConfigPath = path.join(cursorDir, 'mcp.json');
|
|
184
|
+
const abDataDir = path.join(path.resolve(cwd), '.neohive').replace(/\\/g, '/');
|
|
185
|
+
|
|
186
|
+
if (!fs.existsSync(cursorDir)) {
|
|
187
|
+
fs.mkdirSync(cursorDir, { recursive: true });
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
let mcpConfig = { mcpServers: {} };
|
|
191
|
+
if (fs.existsSync(mcpConfigPath)) {
|
|
192
|
+
try {
|
|
193
|
+
mcpConfig = JSON.parse(fs.readFileSync(mcpConfigPath, 'utf8'));
|
|
194
|
+
if (!mcpConfig.mcpServers) mcpConfig.mcpServers = {};
|
|
195
|
+
} catch {
|
|
196
|
+
const backup = mcpConfigPath + '.backup';
|
|
197
|
+
fs.copyFileSync(mcpConfigPath, backup);
|
|
198
|
+
console.log(' [warn] Existing .cursor/mcp.json was invalid — backed up to mcp.json.backup');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
mcpConfig.mcpServers['neohive'] = {
|
|
203
|
+
command: 'node',
|
|
204
|
+
args: [serverPath],
|
|
205
|
+
env: { NEOHIVE_DATA_DIR: abDataDir },
|
|
206
|
+
timeout: 300,
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
fs.writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2) + '\n');
|
|
210
|
+
console.log(' [ok] Cursor IDE: .cursor/mcp.json updated');
|
|
211
|
+
}
|
|
212
|
+
|
|
176
213
|
// Setup Ollama agent bridge script
|
|
177
214
|
function setupOllama(serverPath, cwd) {
|
|
178
215
|
const dir = dataDir(cwd);
|
|
@@ -320,8 +357,10 @@ function init() {
|
|
|
320
357
|
targets = ['gemini'];
|
|
321
358
|
} else if (flag === '--codex') {
|
|
322
359
|
targets = ['codex'];
|
|
360
|
+
} else if (flag === '--cursor') {
|
|
361
|
+
targets = ['cursor'];
|
|
323
362
|
} else if (flag === '--all') {
|
|
324
|
-
targets = ['claude', 'gemini', 'codex'];
|
|
363
|
+
targets = ['claude', 'gemini', 'codex', 'cursor'];
|
|
325
364
|
} else if (flag === '--ollama') {
|
|
326
365
|
const ollama = detectOllama();
|
|
327
366
|
if (!ollama.installed) {
|
|
@@ -353,11 +392,12 @@ function init() {
|
|
|
353
392
|
case 'claude': setupClaude(serverPath, cwd); break;
|
|
354
393
|
case 'gemini': setupGemini(serverPath, cwd); break;
|
|
355
394
|
case 'codex': setupCodex(serverPath, cwd); break;
|
|
395
|
+
case 'cursor': setupCursor(serverPath, cwd); break;
|
|
356
396
|
}
|
|
357
397
|
}
|
|
358
398
|
|
|
359
399
|
// Add .neohive/ and MCP config files to .gitignore
|
|
360
|
-
const gitignoreEntries = ['.neohive/', '.mcp.json', '.codex/', '.gemini/'];
|
|
400
|
+
const gitignoreEntries = ['.neohive/', '.mcp.json', '.cursor/mcp.json', '.codex/', '.gemini/'];
|
|
361
401
|
if (fs.existsSync(gitignorePath)) {
|
|
362
402
|
let content = fs.readFileSync(gitignorePath, 'utf8');
|
|
363
403
|
const missing = gitignoreEntries.filter(e => !content.includes(e));
|
|
@@ -373,8 +413,13 @@ function init() {
|
|
|
373
413
|
console.log(' [ok] .gitignore created');
|
|
374
414
|
}
|
|
375
415
|
|
|
416
|
+
const configuredCursor = targets.includes('cursor');
|
|
376
417
|
console.log('');
|
|
377
|
-
console.log(
|
|
418
|
+
console.log(
|
|
419
|
+
configuredCursor
|
|
420
|
+
? ' Neohive is ready! Restart Cursor (or reload MCP tools) and restart any terminal CLIs you use.'
|
|
421
|
+
: ' Neohive is ready! Restart your CLI to pick up the MCP tools.'
|
|
422
|
+
);
|
|
378
423
|
console.log('');
|
|
379
424
|
|
|
380
425
|
// Show template if --template was provided
|
|
@@ -389,7 +434,11 @@ function init() {
|
|
|
389
434
|
if (templateFlag) {
|
|
390
435
|
showTemplate(templateFlag);
|
|
391
436
|
} else {
|
|
392
|
-
|
|
437
|
+
if (configuredCursor) {
|
|
438
|
+
console.log(' Cursor: use register + listen() from chat (neohive MCP). Terminal CLIs: one session per agent.');
|
|
439
|
+
} else {
|
|
440
|
+
console.log(' Open two terminals and start a conversation between agents.');
|
|
441
|
+
}
|
|
393
442
|
console.log(' Tip: Use "npx neohive init --template pair" for ready-made prompts.');
|
|
394
443
|
console.log('');
|
|
395
444
|
console.log(' \x1b[1m Monitor:\x1b[0m');
|
|
@@ -508,6 +557,17 @@ function showTemplate(templateName) {
|
|
|
508
557
|
}
|
|
509
558
|
}
|
|
510
559
|
|
|
560
|
+
function serve() {
|
|
561
|
+
// Parse --port flag
|
|
562
|
+
const portIdx = process.argv.indexOf('--port');
|
|
563
|
+
if (portIdx !== -1 && process.argv[portIdx + 1]) {
|
|
564
|
+
process.env.NEOHIVE_SERVER_PORT = process.argv[portIdx + 1];
|
|
565
|
+
}
|
|
566
|
+
// Signal server.js to use HTTP transport
|
|
567
|
+
process.env.NEOHIVE_TRANSPORT = 'http';
|
|
568
|
+
require('./server.js');
|
|
569
|
+
}
|
|
570
|
+
|
|
511
571
|
function dashboard() {
|
|
512
572
|
if (process.argv.includes('--lan')) {
|
|
513
573
|
process.env.NEOHIVE_LAN = 'true';
|
|
@@ -654,7 +714,7 @@ function cliStatus() {
|
|
|
654
714
|
console.log('');
|
|
655
715
|
}
|
|
656
716
|
|
|
657
|
-
//
|
|
717
|
+
// v6.0: Diagnostic health check
|
|
658
718
|
function cliDoctor() {
|
|
659
719
|
console.log('');
|
|
660
720
|
console.log(' \x1b[1mNeohive — Doctor\x1b[0m');
|
|
@@ -853,6 +913,44 @@ function uninstall() {
|
|
|
853
913
|
}
|
|
854
914
|
}
|
|
855
915
|
|
|
916
|
+
// 7. Remove from Cursor IDE project config (.cursor/mcp.json in cwd)
|
|
917
|
+
const cursorMcpPath = path.join(cwd, '.cursor', 'mcp.json');
|
|
918
|
+
if (fs.existsSync(cursorMcpPath)) {
|
|
919
|
+
try {
|
|
920
|
+
const mcpConfig = JSON.parse(fs.readFileSync(cursorMcpPath, 'utf8'));
|
|
921
|
+
if (mcpConfig.mcpServers && mcpConfig.mcpServers['neohive']) {
|
|
922
|
+
delete mcpConfig.mcpServers['neohive'];
|
|
923
|
+
fs.writeFileSync(cursorMcpPath, JSON.stringify(mcpConfig, null, 2) + '\n');
|
|
924
|
+
removed.push('Cursor IDE (project): ' + cursorMcpPath);
|
|
925
|
+
} else {
|
|
926
|
+
notFound.push('Cursor IDE (project): no neohive entry in .cursor/mcp.json');
|
|
927
|
+
}
|
|
928
|
+
} catch (e) {
|
|
929
|
+
console.log(' [warn] Could not parse ' + cursorMcpPath + ': ' + e.message);
|
|
930
|
+
}
|
|
931
|
+
} else {
|
|
932
|
+
notFound.push('Cursor IDE (project): .cursor/mcp.json not found');
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
// 8. Remove from Cursor IDE user config (~/.cursor/mcp.json)
|
|
936
|
+
const cursorGlobalPath = path.join(home, '.cursor', 'mcp.json');
|
|
937
|
+
if (fs.existsSync(cursorGlobalPath)) {
|
|
938
|
+
try {
|
|
939
|
+
const mcpConfig = JSON.parse(fs.readFileSync(cursorGlobalPath, 'utf8'));
|
|
940
|
+
if (mcpConfig.mcpServers && mcpConfig.mcpServers['neohive']) {
|
|
941
|
+
delete mcpConfig.mcpServers['neohive'];
|
|
942
|
+
fs.writeFileSync(cursorGlobalPath, JSON.stringify(mcpConfig, null, 2) + '\n');
|
|
943
|
+
removed.push('Cursor IDE (global): ' + cursorGlobalPath);
|
|
944
|
+
} else {
|
|
945
|
+
notFound.push('Cursor IDE (global): no neohive entry');
|
|
946
|
+
}
|
|
947
|
+
} catch (e) {
|
|
948
|
+
console.log(' [warn] Could not parse ' + cursorGlobalPath + ': ' + e.message);
|
|
949
|
+
}
|
|
950
|
+
} else {
|
|
951
|
+
notFound.push('Cursor IDE (global): ~/.cursor/mcp.json not found');
|
|
952
|
+
}
|
|
953
|
+
|
|
856
954
|
// Print summary
|
|
857
955
|
if (removed.length > 0) {
|
|
858
956
|
console.log(' Removed neohive from:');
|
|
@@ -871,7 +969,7 @@ function uninstall() {
|
|
|
871
969
|
}
|
|
872
970
|
}
|
|
873
971
|
|
|
874
|
-
//
|
|
972
|
+
// 9. Check for data directory
|
|
875
973
|
const dataPath = path.join(cwd, '.neohive');
|
|
876
974
|
if (fs.existsSync(dataPath)) {
|
|
877
975
|
console.log('');
|
|
@@ -893,6 +991,9 @@ switch (command) {
|
|
|
893
991
|
case 'templates':
|
|
894
992
|
listTemplates();
|
|
895
993
|
break;
|
|
994
|
+
case 'serve':
|
|
995
|
+
serve();
|
|
996
|
+
break;
|
|
896
997
|
case 'dashboard':
|
|
897
998
|
dashboard();
|
|
898
999
|
break;
|
|
@@ -2,11 +2,61 @@
|
|
|
2
2
|
"id": "autonomous-feature",
|
|
3
3
|
"name": "Autonomous Feature Build",
|
|
4
4
|
"description": "Full autonomous feature build: architecture, parallel backend+frontend, integration testing. Zero human intervention.",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"conversation_mode": "direct",
|
|
5
7
|
"agents": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
{
|
|
9
|
+
"name": "Architect",
|
|
10
|
+
"role": "lead",
|
|
11
|
+
"display_name": "Software Architect",
|
|
12
|
+
"skills": ["design", "interfaces", "architecture", "planning"],
|
|
13
|
+
"responsibilities": [
|
|
14
|
+
"Design feature architecture with clear interfaces",
|
|
15
|
+
"Define contracts between backend and frontend",
|
|
16
|
+
"Create implementation plan"
|
|
17
|
+
],
|
|
18
|
+
"tools_focus": ["create_workflow", "advance_workflow", "kb_write", "share_file"],
|
|
19
|
+
"prompt": "You are a software architect. Design the feature architecture with clear interfaces. Call verify_and_advance() when done. Use get_work() to stay in the proactive loop."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Backend",
|
|
23
|
+
"role": "backend",
|
|
24
|
+
"display_name": "Backend Developer",
|
|
25
|
+
"skills": ["api", "database", "server", "backend", "nodejs"],
|
|
26
|
+
"responsibilities": [
|
|
27
|
+
"Implement server-side logic, APIs, and data models",
|
|
28
|
+
"Write unit tests for backend code",
|
|
29
|
+
"Lock files before editing"
|
|
30
|
+
],
|
|
31
|
+
"tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
|
|
32
|
+
"prompt": "You are a backend developer. Implement server-side logic, APIs, and data models. Write unit tests. Use lock_file() before editing. Call verify_and_advance() when done. Never wait for approval."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Frontend",
|
|
36
|
+
"role": "frontend",
|
|
37
|
+
"display_name": "Frontend Developer",
|
|
38
|
+
"skills": ["ui", "css", "components", "frontend", "html"],
|
|
39
|
+
"responsibilities": [
|
|
40
|
+
"Implement UI components, pages, and client-side logic",
|
|
41
|
+
"Write component tests",
|
|
42
|
+
"Lock files before editing"
|
|
43
|
+
],
|
|
44
|
+
"tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
|
|
45
|
+
"prompt": "You are a frontend developer. Implement UI components, pages, and client-side logic. Write component tests. Use lock_file() before editing. Call verify_and_advance() when done. Never wait for approval."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "Tester",
|
|
49
|
+
"role": "quality",
|
|
50
|
+
"display_name": "QA Engineer",
|
|
51
|
+
"skills": ["testing", "qa", "integration", "verification"],
|
|
52
|
+
"responsibilities": [
|
|
53
|
+
"Write and run integration tests",
|
|
54
|
+
"Verify all components work together",
|
|
55
|
+
"Submit review results via submit_review()"
|
|
56
|
+
],
|
|
57
|
+
"tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
|
|
58
|
+
"prompt": "You are a QA engineer. Write and run integration tests. Verify all components work together. Call verify_and_advance() when done."
|
|
59
|
+
}
|
|
10
60
|
],
|
|
11
61
|
"workflow": {
|
|
12
62
|
"name": "Autonomous Feature",
|
|
@@ -2,10 +2,48 @@
|
|
|
2
2
|
"id": "code-review",
|
|
3
3
|
"name": "Code Review Pipeline",
|
|
4
4
|
"description": "Developer writes code, Reviewer checks it, Tester validates. Autonomous: review + test run in parallel after code is written.",
|
|
5
|
+
"category": "quality",
|
|
6
|
+
"conversation_mode": "direct",
|
|
5
7
|
"agents": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
{
|
|
9
|
+
"name": "Developer",
|
|
10
|
+
"role": "backend",
|
|
11
|
+
"display_name": "Developer",
|
|
12
|
+
"skills": ["code", "implementation", "javascript", "nodejs"],
|
|
13
|
+
"responsibilities": [
|
|
14
|
+
"Write code as instructed",
|
|
15
|
+
"Address review feedback and fix issues",
|
|
16
|
+
"Lock files before editing"
|
|
17
|
+
],
|
|
18
|
+
"tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
|
|
19
|
+
"prompt": "You are a developer. Write code as instructed. Use lock_file() before editing shared code. Call verify_and_advance() when done. If review feedback arrives, fix issues and re-submit. Never wait idle."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Reviewer",
|
|
23
|
+
"role": "quality",
|
|
24
|
+
"display_name": "Code Reviewer",
|
|
25
|
+
"skills": ["review", "standards", "security", "quality"],
|
|
26
|
+
"responsibilities": [
|
|
27
|
+
"Review code for bugs, style, and best practices",
|
|
28
|
+
"Check for security vulnerabilities",
|
|
29
|
+
"Approve or request changes via submit_review()"
|
|
30
|
+
],
|
|
31
|
+
"tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
|
|
32
|
+
"prompt": "You are a code reviewer. Review code for bugs, style, and best practices. Use submit_review() to approve or request changes. Call verify_and_advance() when done."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Tester",
|
|
36
|
+
"role": "quality",
|
|
37
|
+
"display_name": "QA Tester",
|
|
38
|
+
"skills": ["testing", "qa", "verification", "regression"],
|
|
39
|
+
"responsibilities": [
|
|
40
|
+
"Write and run tests for the code",
|
|
41
|
+
"Report test results and coverage",
|
|
42
|
+
"Verify edge cases and error handling"
|
|
43
|
+
],
|
|
44
|
+
"tools_focus": ["update_task", "advance_workflow", "submit_review", "share_file"],
|
|
45
|
+
"prompt": "You are a QA tester. Write and run tests for the code. Report results. Call verify_and_advance() when done. Never wait for approval."
|
|
46
|
+
}
|
|
9
47
|
],
|
|
10
48
|
"workflow": {
|
|
11
49
|
"name": "Code Review",
|
|
@@ -2,10 +2,48 @@
|
|
|
2
2
|
"id": "debug-squad",
|
|
3
3
|
"name": "Debug Squad",
|
|
4
4
|
"description": "Investigator finds the bug, Fixer patches it, Verifier confirms the fix. Autonomous: no waiting between steps.",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"conversation_mode": "direct",
|
|
5
7
|
"agents": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
{
|
|
9
|
+
"name": "Investigator",
|
|
10
|
+
"role": "quality",
|
|
11
|
+
"display_name": "Bug Investigator",
|
|
12
|
+
"skills": ["debugging", "analysis", "tracing", "investigation"],
|
|
13
|
+
"responsibilities": [
|
|
14
|
+
"Analyze error logs and trace code paths",
|
|
15
|
+
"Identify root causes with evidence",
|
|
16
|
+
"Document findings with file paths and line numbers"
|
|
17
|
+
],
|
|
18
|
+
"tools_focus": ["search_messages", "kb_write", "advance_workflow", "share_file"],
|
|
19
|
+
"prompt": "You investigate bugs. Analyze error logs, trace code paths, and identify root causes. Include file paths and line numbers in your findings. Use kb_write() to document root cause. Call verify_and_advance() when root cause is found. Never wait idle."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Fixer",
|
|
23
|
+
"role": "backend",
|
|
24
|
+
"display_name": "Bug Fixer",
|
|
25
|
+
"skills": ["code", "fixing", "patching", "testing"],
|
|
26
|
+
"responsibilities": [
|
|
27
|
+
"Implement fixes based on investigation findings",
|
|
28
|
+
"Write regression tests",
|
|
29
|
+
"Lock files before editing"
|
|
30
|
+
],
|
|
31
|
+
"tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
|
|
32
|
+
"prompt": "You fix bugs. Implement fixes based on investigation findings. Write regression tests. Use lock_file() before editing. Call verify_and_advance() when done. If fix fails, use retry_with_improvement()."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Verifier",
|
|
36
|
+
"role": "quality",
|
|
37
|
+
"display_name": "Fix Verifier",
|
|
38
|
+
"skills": ["testing", "verification", "qa", "regression"],
|
|
39
|
+
"responsibilities": [
|
|
40
|
+
"Test the fix and confirm resolution",
|
|
41
|
+
"Check for regressions",
|
|
42
|
+
"Approve via submit_review()"
|
|
43
|
+
],
|
|
44
|
+
"tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
|
|
45
|
+
"prompt": "You verify bug fixes. Test the fix, confirm resolution, and check for regressions. Use submit_review() to formally approve. Call verify_and_advance() when done."
|
|
46
|
+
}
|
|
9
47
|
],
|
|
10
48
|
"workflow": {
|
|
11
49
|
"name": "Bug Fix",
|
|
@@ -2,10 +2,48 @@
|
|
|
2
2
|
"id": "feature-build",
|
|
3
3
|
"name": "Feature Development",
|
|
4
4
|
"description": "Architect designs, Builder implements, Reviewer approves. Autonomous mode: agents auto-advance through steps.",
|
|
5
|
+
"category": "development",
|
|
6
|
+
"conversation_mode": "direct",
|
|
5
7
|
"agents": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
{
|
|
9
|
+
"name": "Architect",
|
|
10
|
+
"role": "lead",
|
|
11
|
+
"display_name": "Software Architect",
|
|
12
|
+
"skills": ["design", "interfaces", "architecture", "planning"],
|
|
13
|
+
"responsibilities": [
|
|
14
|
+
"Design feature architecture with clear interfaces",
|
|
15
|
+
"Define API contracts between components",
|
|
16
|
+
"Create the implementation plan as a workflow"
|
|
17
|
+
],
|
|
18
|
+
"tools_focus": ["create_workflow", "advance_workflow", "kb_write", "share_file"],
|
|
19
|
+
"prompt": "You are a software architect. Design the feature architecture, define interfaces, and create the implementation plan. When done, call verify_and_advance(). Never wait for approval."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Builder",
|
|
23
|
+
"role": "backend",
|
|
24
|
+
"display_name": "Developer",
|
|
25
|
+
"skills": ["code", "implementation", "testing", "javascript", "nodejs"],
|
|
26
|
+
"responsibilities": [
|
|
27
|
+
"Implement the feature following the architecture design",
|
|
28
|
+
"Write unit tests alongside code",
|
|
29
|
+
"Lock files before editing, unlock after"
|
|
30
|
+
],
|
|
31
|
+
"tools_focus": ["lock_file", "unlock_file", "update_task", "advance_workflow", "share_file"],
|
|
32
|
+
"prompt": "You are a developer. Implement the feature following the architecture design. Write tests. Use lock_file() before editing shared code. Call verify_and_advance() when done. Never wait for approval."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Reviewer",
|
|
36
|
+
"role": "quality",
|
|
37
|
+
"display_name": "Senior Reviewer",
|
|
38
|
+
"skills": ["review", "quality", "standards", "security", "testing"],
|
|
39
|
+
"responsibilities": [
|
|
40
|
+
"Review implementations against the architecture",
|
|
41
|
+
"Check for bugs, security issues, and quality",
|
|
42
|
+
"Approve or request changes via submit_review()"
|
|
43
|
+
],
|
|
44
|
+
"tools_focus": ["request_review", "submit_review", "get_reputation", "advance_workflow"],
|
|
45
|
+
"prompt": "You are a senior reviewer. Review implementations against the architecture. Use submit_review() to approve or request changes. Call verify_and_advance() when done."
|
|
46
|
+
}
|
|
9
47
|
],
|
|
10
48
|
"workflow": {
|
|
11
49
|
"name": "Feature Dev",
|
|
@@ -2,10 +2,48 @@
|
|
|
2
2
|
"id": "research-write",
|
|
3
3
|
"name": "Research & Write",
|
|
4
4
|
"description": "Researcher gathers info, Writer creates content, Editor polishes. Autonomous: writer starts as soon as research is ready.",
|
|
5
|
+
"category": "content",
|
|
6
|
+
"conversation_mode": "direct",
|
|
5
7
|
"agents": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
{
|
|
9
|
+
"name": "Researcher",
|
|
10
|
+
"role": "quality",
|
|
11
|
+
"display_name": "Researcher",
|
|
12
|
+
"skills": ["research", "analysis", "data", "investigation"],
|
|
13
|
+
"responsibilities": [
|
|
14
|
+
"Gather information on the given topic",
|
|
15
|
+
"Organize findings into a structured brief",
|
|
16
|
+
"Store findings in KB for team access"
|
|
17
|
+
],
|
|
18
|
+
"tools_focus": ["kb_write", "kb_read", "search_messages", "advance_workflow", "share_file"],
|
|
19
|
+
"prompt": "You are a researcher. Gather information on the given topic. Organize findings into a structured research brief. Use kb_write() to store key findings. Call verify_and_advance() when done."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "Writer",
|
|
23
|
+
"role": "backend",
|
|
24
|
+
"display_name": "Writer",
|
|
25
|
+
"skills": ["writing", "content", "structure", "documentation"],
|
|
26
|
+
"responsibilities": [
|
|
27
|
+
"Write clear, well-structured content from research",
|
|
28
|
+
"Address editor feedback via retry_with_improvement()",
|
|
29
|
+
"Finalize and publish content"
|
|
30
|
+
],
|
|
31
|
+
"tools_focus": ["update_task", "advance_workflow", "kb_read", "share_file"],
|
|
32
|
+
"prompt": "You are a writer. Write clear, well-structured content based on the research findings. Use kb_read() to access research data. Call verify_and_advance() when done. If editor requests changes, use retry_with_improvement()."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Editor",
|
|
36
|
+
"role": "quality",
|
|
37
|
+
"display_name": "Editor",
|
|
38
|
+
"skills": ["editing", "style", "accuracy", "review"],
|
|
39
|
+
"responsibilities": [
|
|
40
|
+
"Review and polish content for clarity and accuracy",
|
|
41
|
+
"Check style, grammar, and factual correctness",
|
|
42
|
+
"Approve or request revisions via submit_review()"
|
|
43
|
+
],
|
|
44
|
+
"tools_focus": ["request_review", "submit_review", "advance_workflow", "get_reputation"],
|
|
45
|
+
"prompt": "You are an editor. Review and polish content. Check for clarity, accuracy, and style. Use submit_review() to approve or request revisions. Call verify_and_advance() when done."
|
|
46
|
+
}
|
|
9
47
|
],
|
|
10
48
|
"workflow": {
|
|
11
49
|
"name": "Content Pipeline",
|