neohive 6.0.2 → 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 +113 -6
- 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 +2000 -690
- package/dashboard.js +717 -65
- 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 +871 -147
- 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
|
@@ -17,9 +17,12 @@ function printUsage() {
|
|
|
17
17
|
npx neohive init --claude Configure for Claude Code only
|
|
18
18
|
npx neohive init --gemini Configure for Gemini CLI only
|
|
19
19
|
npx neohive init --codex Configure for Codex CLI only
|
|
20
|
-
npx neohive init --
|
|
20
|
+
npx neohive init --cursor Configure for Cursor IDE only (.cursor/mcp.json)
|
|
21
|
+
npx neohive init --all Configure for all supported CLIs
|
|
21
22
|
npx neohive init --ollama Setup Ollama local LLM bridge
|
|
22
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
|
|
23
26
|
npx neohive dashboard Launch web dashboard (http://localhost:3000)
|
|
24
27
|
npx neohive dashboard --lan Dashboard accessible on LAN
|
|
25
28
|
npx neohive status Show active agents and tasks
|
|
@@ -55,6 +58,11 @@ function detectCLIs() {
|
|
|
55
58
|
detected.push('codex');
|
|
56
59
|
}
|
|
57
60
|
|
|
61
|
+
// Cursor IDE: ~/.cursor/ (app support) exists
|
|
62
|
+
if (fs.existsSync(path.join(home, '.cursor'))) {
|
|
63
|
+
detected.push('cursor');
|
|
64
|
+
}
|
|
65
|
+
|
|
58
66
|
return detected;
|
|
59
67
|
}
|
|
60
68
|
|
|
@@ -167,6 +175,41 @@ timeout = 300
|
|
|
167
175
|
console.log(' [ok] Codex CLI: .codex/config.toml updated');
|
|
168
176
|
}
|
|
169
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
|
+
|
|
170
213
|
// Setup Ollama agent bridge script
|
|
171
214
|
function setupOllama(serverPath, cwd) {
|
|
172
215
|
const dir = dataDir(cwd);
|
|
@@ -314,8 +357,10 @@ function init() {
|
|
|
314
357
|
targets = ['gemini'];
|
|
315
358
|
} else if (flag === '--codex') {
|
|
316
359
|
targets = ['codex'];
|
|
360
|
+
} else if (flag === '--cursor') {
|
|
361
|
+
targets = ['cursor'];
|
|
317
362
|
} else if (flag === '--all') {
|
|
318
|
-
targets = ['claude', 'gemini', 'codex'];
|
|
363
|
+
targets = ['claude', 'gemini', 'codex', 'cursor'];
|
|
319
364
|
} else if (flag === '--ollama') {
|
|
320
365
|
const ollama = detectOllama();
|
|
321
366
|
if (!ollama.installed) {
|
|
@@ -347,11 +392,12 @@ function init() {
|
|
|
347
392
|
case 'claude': setupClaude(serverPath, cwd); break;
|
|
348
393
|
case 'gemini': setupGemini(serverPath, cwd); break;
|
|
349
394
|
case 'codex': setupCodex(serverPath, cwd); break;
|
|
395
|
+
case 'cursor': setupCursor(serverPath, cwd); break;
|
|
350
396
|
}
|
|
351
397
|
}
|
|
352
398
|
|
|
353
399
|
// Add .neohive/ and MCP config files to .gitignore
|
|
354
|
-
const gitignoreEntries = ['.neohive/', '.mcp.json', '.codex/', '.gemini/'];
|
|
400
|
+
const gitignoreEntries = ['.neohive/', '.mcp.json', '.cursor/mcp.json', '.codex/', '.gemini/'];
|
|
355
401
|
if (fs.existsSync(gitignorePath)) {
|
|
356
402
|
let content = fs.readFileSync(gitignorePath, 'utf8');
|
|
357
403
|
const missing = gitignoreEntries.filter(e => !content.includes(e));
|
|
@@ -367,8 +413,13 @@ function init() {
|
|
|
367
413
|
console.log(' [ok] .gitignore created');
|
|
368
414
|
}
|
|
369
415
|
|
|
416
|
+
const configuredCursor = targets.includes('cursor');
|
|
370
417
|
console.log('');
|
|
371
|
-
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
|
+
);
|
|
372
423
|
console.log('');
|
|
373
424
|
|
|
374
425
|
// Show template if --template was provided
|
|
@@ -383,7 +434,11 @@ function init() {
|
|
|
383
434
|
if (templateFlag) {
|
|
384
435
|
showTemplate(templateFlag);
|
|
385
436
|
} else {
|
|
386
|
-
|
|
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
|
+
}
|
|
387
442
|
console.log(' Tip: Use "npx neohive init --template pair" for ready-made prompts.');
|
|
388
443
|
console.log('');
|
|
389
444
|
console.log(' \x1b[1m Monitor:\x1b[0m');
|
|
@@ -502,6 +557,17 @@ function showTemplate(templateName) {
|
|
|
502
557
|
}
|
|
503
558
|
}
|
|
504
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
|
+
|
|
505
571
|
function dashboard() {
|
|
506
572
|
if (process.argv.includes('--lan')) {
|
|
507
573
|
process.env.NEOHIVE_LAN = 'true';
|
|
@@ -847,6 +913,44 @@ function uninstall() {
|
|
|
847
913
|
}
|
|
848
914
|
}
|
|
849
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
|
+
|
|
850
954
|
// Print summary
|
|
851
955
|
if (removed.length > 0) {
|
|
852
956
|
console.log(' Removed neohive from:');
|
|
@@ -865,7 +969,7 @@ function uninstall() {
|
|
|
865
969
|
}
|
|
866
970
|
}
|
|
867
971
|
|
|
868
|
-
//
|
|
972
|
+
// 9. Check for data directory
|
|
869
973
|
const dataPath = path.join(cwd, '.neohive');
|
|
870
974
|
if (fs.existsSync(dataPath)) {
|
|
871
975
|
console.log('');
|
|
@@ -887,6 +991,9 @@ switch (command) {
|
|
|
887
991
|
case 'templates':
|
|
888
992
|
listTemplates();
|
|
889
993
|
break;
|
|
994
|
+
case 'serve':
|
|
995
|
+
serve();
|
|
996
|
+
break;
|
|
890
997
|
case 'dashboard':
|
|
891
998
|
dashboard();
|
|
892
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",
|