sage-team 3.0.1 → 3.1.1
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 +50 -3
- package/dist/cli/index.js +1 -1
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +295 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Sage Team v3.
|
|
1
|
+
# Sage Team v3.1
|
|
2
2
|
|
|
3
|
-
> AI-Powered Autonomous Software Company — 11 agents execute real code via Claude Code, with a PixiJS isometric office visualization.
|
|
3
|
+
> AI-Powered Autonomous Software Company — 11 agents execute real code via Claude Code, with a PixiJS isometric office visualization and native Claude Code MCP integration.
|
|
4
4
|
|
|
5
5
|
Sage Team runs a complete AI software company. A **CEO agent** decomposes your goal into a sprint, then **11 specialized agents** execute tasks in parallel using **Claude Code subprocesses** — writing real code, running tests, and creating PRs. Watch it all happen in a **PixiJS isometric office** in your browser.
|
|
6
6
|
|
|
@@ -15,6 +15,36 @@ Sage Team runs a complete AI software company. A **CEO agent** decomposes your g
|
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
18
|
+
### Option A: Inside Claude Code (recommended)
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install -g sage-team
|
|
22
|
+
cd your-project
|
|
23
|
+
claude
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Inside Claude, just talk naturally:
|
|
27
|
+
|
|
28
|
+
> "Initialize sage team here"
|
|
29
|
+
> "Start the team with the goal: Build a REST API for a todo app"
|
|
30
|
+
> "How's the sprint going?"
|
|
31
|
+
> "Approve the PR"
|
|
32
|
+
|
|
33
|
+
Claude Code auto-discovers Sage Team via MCP. Set up the `.mcp.json` in your project:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"mcpServers": {
|
|
38
|
+
"sage-team": {
|
|
39
|
+
"command": "sage-team-mcp",
|
|
40
|
+
"args": []
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Option B: Standalone CLI
|
|
47
|
+
|
|
18
48
|
```bash
|
|
19
49
|
# Install globally
|
|
20
50
|
npm install -g sage-team
|
|
@@ -48,7 +78,22 @@ sage-team start --goal "Build a REST API for a todo app with authentication"
|
|
|
48
78
|
| 🌀 **River** | Scrum Master | Lounge | Process, blocker removal |
|
|
49
79
|
| 📊 **Atlas** | Data Engineer | Data Lab | Database, data pipelines |
|
|
50
80
|
|
|
51
|
-
##
|
|
81
|
+
## MCP Tools (inside Claude Code)
|
|
82
|
+
|
|
83
|
+
When using Sage Team inside Claude Code, these tools are available:
|
|
84
|
+
|
|
85
|
+
| Tool | Description |
|
|
86
|
+
|------|-------------|
|
|
87
|
+
| `sage_team_init` | Initialize Sage Team in current project |
|
|
88
|
+
| `sage_team_list` | Show all 11 agents with roles and skills |
|
|
89
|
+
| `sage_team_start` | Start a session with a goal |
|
|
90
|
+
| `sage_team_status` | Show sprint progress, tasks, and agent statuses |
|
|
91
|
+
| `sage_team_doctor` | Check system health (Node, Git, Claude Code, API key) |
|
|
92
|
+
| `sage_team_config` | View or update configuration |
|
|
93
|
+
| `sage_team_approve_pr` | Approve and merge a pull request |
|
|
94
|
+
| `sage_team_reject_pr` | Reject a PR with feedback for rework |
|
|
95
|
+
|
|
96
|
+
## CLI Commands
|
|
52
97
|
|
|
53
98
|
```bash
|
|
54
99
|
sage-team init # Initialize .sage-team/ directory
|
|
@@ -130,6 +175,8 @@ sage-team/
|
|
|
130
175
|
│ ├── cli/
|
|
131
176
|
│ │ ├── index.ts # Commander program with 8 commands
|
|
132
177
|
│ │ └── commands/ # init, start, resume, config, team, status, doctor, logs
|
|
178
|
+
│ ├── mcp/
|
|
179
|
+
│ │ └── server.ts # MCP server for Claude Code integration
|
|
133
180
|
│ ├── server/
|
|
134
181
|
│ │ ├── index.ts # Express + WebSocket server
|
|
135
182
|
│ │ └── routes/api.ts # REST API endpoints
|
package/dist/cli/index.js
CHANGED
|
@@ -16,7 +16,7 @@ function buildProgram() {
|
|
|
16
16
|
program
|
|
17
17
|
.name('sage-team')
|
|
18
18
|
.description('AI-powered autonomous software company')
|
|
19
|
-
.version('3.
|
|
19
|
+
.version('3.1.1');
|
|
20
20
|
program.addCommand((0, init_1.initCommand)());
|
|
21
21
|
program.addCommand((0, start_1.startCommand)());
|
|
22
22
|
program.addCommand((0, resume_1.resumeCommand)());
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
41
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
42
|
+
const zod_1 = require("zod");
|
|
43
|
+
const fs_1 = __importDefault(require("fs"));
|
|
44
|
+
const path_1 = __importDefault(require("path"));
|
|
45
|
+
const database_1 = require("../state/database");
|
|
46
|
+
const orchestrator_1 = require("../engine/orchestrator");
|
|
47
|
+
const personas_1 = require("../agents/personas");
|
|
48
|
+
// ── State ────────────────────────────────────────────────────────────
|
|
49
|
+
let orchestrator = null;
|
|
50
|
+
let db = null;
|
|
51
|
+
function loadConfig() {
|
|
52
|
+
const configPath = path_1.default.join(process.cwd(), '.sage-team', 'config.json');
|
|
53
|
+
if (!fs_1.default.existsSync(configPath))
|
|
54
|
+
return null;
|
|
55
|
+
return JSON.parse(fs_1.default.readFileSync(configPath, 'utf-8'));
|
|
56
|
+
}
|
|
57
|
+
function ensureOrchestrator() {
|
|
58
|
+
if (orchestrator)
|
|
59
|
+
return orchestrator;
|
|
60
|
+
const config = loadConfig();
|
|
61
|
+
if (!config)
|
|
62
|
+
throw new Error('Sage Team not initialized. Run sage-team init first.');
|
|
63
|
+
const apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY || '';
|
|
64
|
+
if (!apiKey)
|
|
65
|
+
throw new Error('No API key. Set ANTHROPIC_API_KEY environment variable.');
|
|
66
|
+
const dbPath = path_1.default.join(process.cwd(), '.sage-team', 'state.db');
|
|
67
|
+
db = new database_1.Database(dbPath);
|
|
68
|
+
orchestrator = new orchestrator_1.Orchestrator(db, {
|
|
69
|
+
apiKey,
|
|
70
|
+
model: config.model || 'claude-sonnet-4-20250514',
|
|
71
|
+
maxConcurrentAgents: config.maxConcurrentAgents || 3,
|
|
72
|
+
autonomyMode: config.autonomyMode || 'sandbox',
|
|
73
|
+
companyName: config.companyName || 'Sage Team',
|
|
74
|
+
mission: config.mission || 'Build amazing software autonomously',
|
|
75
|
+
});
|
|
76
|
+
return orchestrator;
|
|
77
|
+
}
|
|
78
|
+
// ── MCP Server ───────────────────────────────────────────────────────
|
|
79
|
+
const server = new mcp_js_1.McpServer({
|
|
80
|
+
name: 'sage-team',
|
|
81
|
+
version: '3.0.1',
|
|
82
|
+
});
|
|
83
|
+
// ── Tool: init ───────────────────────────────────────────────────────
|
|
84
|
+
server.tool('sage_team_init', 'Initialize Sage Team in the current project directory. Creates .sage-team/ config.', {}, async () => {
|
|
85
|
+
const sageDir = path_1.default.join(process.cwd(), '.sage-team');
|
|
86
|
+
const configPath = path_1.default.join(sageDir, 'config.json');
|
|
87
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
88
|
+
return { content: [{ type: 'text', text: 'Sage Team already initialized in this directory.' }] };
|
|
89
|
+
}
|
|
90
|
+
fs_1.default.mkdirSync(path_1.default.join(sageDir, 'worktrees'), { recursive: true });
|
|
91
|
+
const config = {
|
|
92
|
+
companyName: 'Sage Team',
|
|
93
|
+
mission: 'Build amazing software autonomously',
|
|
94
|
+
model: 'claude-sonnet-4-20250514',
|
|
95
|
+
maxConcurrentAgents: 3,
|
|
96
|
+
autonomyMode: 'sandbox',
|
|
97
|
+
apiKey: '',
|
|
98
|
+
};
|
|
99
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
|
100
|
+
config.apiKey = process.env.ANTHROPIC_API_KEY;
|
|
101
|
+
}
|
|
102
|
+
fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
103
|
+
// Add to .gitignore
|
|
104
|
+
const gitignorePath = path_1.default.join(process.cwd(), '.gitignore');
|
|
105
|
+
const entry = '\n# Sage Team\n.sage-team/\n';
|
|
106
|
+
if (fs_1.default.existsSync(gitignorePath)) {
|
|
107
|
+
const content = fs_1.default.readFileSync(gitignorePath, 'utf-8');
|
|
108
|
+
if (!content.includes('.sage-team')) {
|
|
109
|
+
fs_1.default.appendFileSync(gitignorePath, entry);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
fs_1.default.writeFileSync(gitignorePath, entry);
|
|
114
|
+
}
|
|
115
|
+
const keyStatus = config.apiKey ? 'API key detected from environment.' : 'Warning: No API key. Set ANTHROPIC_API_KEY.';
|
|
116
|
+
return {
|
|
117
|
+
content: [{
|
|
118
|
+
type: 'text',
|
|
119
|
+
text: `Sage Team initialized!\n Config: .sage-team/config.json\n Mode: ${config.autonomyMode}\n ${keyStatus}`,
|
|
120
|
+
}],
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
// ── Tool: team ───────────────────────────────────────────────────────
|
|
124
|
+
server.tool('sage_team_list', 'Show all 11 Sage Team AI agents with their roles, skills, and emoji.', {}, async () => {
|
|
125
|
+
const lines = personas_1.PERSONAS.map(p => `${p.emoji} **${p.name}** (${p.id}) — ${p.role}\n ${p.description}\n Skills: ${p.skills.join(', ')}`);
|
|
126
|
+
return { content: [{ type: 'text', text: `# Sage Team — 11 Agents\n\n${lines.join('\n\n')}` }] };
|
|
127
|
+
});
|
|
128
|
+
// ── Tool: start ──────────────────────────────────────────────────────
|
|
129
|
+
server.tool('sage_team_start', 'Start a new Sage Team session and give the team a goal to work on. The CEO (Sage) will decompose it into tasks and assign them to agents.', { goal: zod_1.z.string().describe('The goal for the team (e.g. "Build a REST API for a todo app")') }, async ({ goal }) => {
|
|
130
|
+
const orch = ensureOrchestrator();
|
|
131
|
+
const session = orch.start(goal);
|
|
132
|
+
// Wait for decomposition
|
|
133
|
+
const lines = [`Session started: ${session.id}`, `Goal: ${goal}`, '', 'CEO Sage is decomposing the goal...'];
|
|
134
|
+
try {
|
|
135
|
+
await orch.submitGoal(goal);
|
|
136
|
+
const tasks = orch.getTasks();
|
|
137
|
+
lines.push(`\nSprint created with ${tasks.length} tasks:\n`);
|
|
138
|
+
for (const t of tasks) {
|
|
139
|
+
lines.push(` - [${t.assignee_id}] ${t.title}`);
|
|
140
|
+
}
|
|
141
|
+
lines.push('\nAgents are now working. Use sage_team_status to check progress.');
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
lines.push(`\nGoal decomposition failed: ${err.message}`);
|
|
145
|
+
}
|
|
146
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
147
|
+
});
|
|
148
|
+
// ── Tool: status ─────────────────────────────────────────────────────
|
|
149
|
+
server.tool('sage_team_status', 'Show current sprint progress: tasks, agent statuses, and pending PRs.', {}, async () => {
|
|
150
|
+
const orch = ensureOrchestrator();
|
|
151
|
+
if (!orch.sessionId) {
|
|
152
|
+
return { content: [{ type: 'text', text: 'No active session. Use sage_team_start first.' }] };
|
|
153
|
+
}
|
|
154
|
+
const agents = orch.getAgents();
|
|
155
|
+
const tasks = orch.getTasks();
|
|
156
|
+
const prs = orch.getPendingPRs();
|
|
157
|
+
const completed = tasks.filter((t) => t.status === 'completed').length;
|
|
158
|
+
const inProgress = tasks.filter((t) => t.status === 'in_progress').length;
|
|
159
|
+
const pending = tasks.filter((t) => t.status === 'pending').length;
|
|
160
|
+
const failed = tasks.filter((t) => t.status === 'failed').length;
|
|
161
|
+
const lines = [
|
|
162
|
+
`# Sprint Status`,
|
|
163
|
+
``,
|
|
164
|
+
`**Tasks:** ${completed}/${tasks.length} completed | ${inProgress} in progress | ${pending} pending${failed ? ` | ${failed} failed` : ''}`,
|
|
165
|
+
``,
|
|
166
|
+
`## Agents`,
|
|
167
|
+
...agents.map((a) => {
|
|
168
|
+
const persona = personas_1.PERSONAS.find(p => p.id === a.agent_id);
|
|
169
|
+
return ` ${persona?.emoji || '?'} ${persona?.name || a.agent_id}: ${a.status}${a.current_task_id ? ` (task: ${a.current_task_id})` : ''}`;
|
|
170
|
+
}),
|
|
171
|
+
``,
|
|
172
|
+
`## Tasks`,
|
|
173
|
+
...tasks.map((t) => {
|
|
174
|
+
const icon = t.status === 'completed' ? '✅' : t.status === 'in_progress' ? '🔨' : t.status === 'failed' ? '❌' : '⏳';
|
|
175
|
+
return ` ${icon} [${t.assignee_id}] ${t.title}`;
|
|
176
|
+
}),
|
|
177
|
+
];
|
|
178
|
+
if (prs.length > 0) {
|
|
179
|
+
lines.push('', '## Pending PRs');
|
|
180
|
+
for (const pr of prs) {
|
|
181
|
+
lines.push(` 📝 PR #${pr.id} by ${pr.agent_id} — branch: ${pr.branch}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
185
|
+
});
|
|
186
|
+
// ── Tool: doctor ─────────────────────────────────────────────────────
|
|
187
|
+
server.tool('sage_team_doctor', 'Check system health: Node.js, Git, Claude Code, API key status.', {}, async () => {
|
|
188
|
+
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
189
|
+
const checks = [];
|
|
190
|
+
// Node
|
|
191
|
+
try {
|
|
192
|
+
const v = execSync('node --version', { timeout: 3000 }).toString().trim();
|
|
193
|
+
checks.push(`✅ Node.js: ${v}`);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
checks.push('❌ Node.js: not found');
|
|
197
|
+
}
|
|
198
|
+
// Git
|
|
199
|
+
try {
|
|
200
|
+
const v = execSync('git --version', { timeout: 3000 }).toString().trim();
|
|
201
|
+
checks.push(`✅ Git: ${v}`);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
checks.push('❌ Git: not found');
|
|
205
|
+
}
|
|
206
|
+
// Claude Code
|
|
207
|
+
try {
|
|
208
|
+
execSync('claude --version', { timeout: 3000, stdio: 'pipe' });
|
|
209
|
+
checks.push('✅ Claude Code: installed');
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
checks.push('❌ Claude Code: not found');
|
|
213
|
+
}
|
|
214
|
+
// API Key
|
|
215
|
+
const hasEnv = !!process.env.ANTHROPIC_API_KEY;
|
|
216
|
+
const config = loadConfig();
|
|
217
|
+
const hasConfig = config && !!config.apiKey;
|
|
218
|
+
if (hasEnv)
|
|
219
|
+
checks.push('✅ API Key: set via ANTHROPIC_API_KEY');
|
|
220
|
+
else if (hasConfig)
|
|
221
|
+
checks.push('✅ API Key: set in config');
|
|
222
|
+
else
|
|
223
|
+
checks.push('❌ API Key: not set');
|
|
224
|
+
// Init
|
|
225
|
+
if (config)
|
|
226
|
+
checks.push('✅ Initialized: .sage-team/ exists');
|
|
227
|
+
else
|
|
228
|
+
checks.push('⚠️ Not initialized: run sage_team_init');
|
|
229
|
+
return { content: [{ type: 'text', text: `# Sage Team Doctor\n\n${checks.join('\n')}` }] };
|
|
230
|
+
});
|
|
231
|
+
// ── Tool: approve PR ─────────────────────────────────────────────────
|
|
232
|
+
server.tool('sage_team_approve_pr', 'Approve and merge a pending pull request.', { pr_id: zod_1.z.string().describe('The PR ID to approve') }, async ({ pr_id }) => {
|
|
233
|
+
const orch = ensureOrchestrator();
|
|
234
|
+
try {
|
|
235
|
+
await orch.approvePR(pr_id);
|
|
236
|
+
return { content: [{ type: 'text', text: `PR ${pr_id} approved and merged.` }] };
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
return { content: [{ type: 'text', text: `Failed to approve PR: ${err.message}` }] };
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// ── Tool: reject PR ──────────────────────────────────────────────────
|
|
243
|
+
server.tool('sage_team_reject_pr', 'Reject a pull request with feedback. The agent will rework the task.', {
|
|
244
|
+
pr_id: zod_1.z.string().describe('The PR ID to reject'),
|
|
245
|
+
feedback: zod_1.z.string().describe('Feedback for the agent on what to fix'),
|
|
246
|
+
}, async ({ pr_id, feedback }) => {
|
|
247
|
+
const orch = ensureOrchestrator();
|
|
248
|
+
try {
|
|
249
|
+
orch.rejectPR(pr_id, feedback);
|
|
250
|
+
return { content: [{ type: 'text', text: `PR ${pr_id} rejected. Agent will rework with feedback.` }] };
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
return { content: [{ type: 'text', text: `Failed to reject PR: ${err.message}` }] };
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
// ── Tool: config ─────────────────────────────────────────────────────
|
|
257
|
+
server.tool('sage_team_config', 'View or update Sage Team configuration (model, max agents, autonomy mode, company name).', {
|
|
258
|
+
show: zod_1.z.boolean().optional().describe('Show current config'),
|
|
259
|
+
model: zod_1.z.string().optional().describe('Claude model to use'),
|
|
260
|
+
max_agents: zod_1.z.number().optional().describe('Max concurrent agents (1-10)'),
|
|
261
|
+
autonomy: zod_1.z.enum(['sandbox', 'direct', 'supervised']).optional().describe('Autonomy mode'),
|
|
262
|
+
company_name: zod_1.z.string().optional().describe('Company name'),
|
|
263
|
+
}, async ({ show, model, max_agents, autonomy, company_name }) => {
|
|
264
|
+
const configPath = path_1.default.join(process.cwd(), '.sage-team', 'config.json');
|
|
265
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
266
|
+
return { content: [{ type: 'text', text: 'Not initialized. Run sage_team_init first.' }] };
|
|
267
|
+
}
|
|
268
|
+
const config = JSON.parse(fs_1.default.readFileSync(configPath, 'utf-8'));
|
|
269
|
+
if (show || (!model && !max_agents && !autonomy && !company_name)) {
|
|
270
|
+
const display = { ...config };
|
|
271
|
+
if (display.apiKey)
|
|
272
|
+
display.apiKey = display.apiKey.slice(0, 10) + '...';
|
|
273
|
+
return { content: [{ type: 'text', text: `# Config\n\n\`\`\`json\n${JSON.stringify(display, null, 2)}\n\`\`\`` }] };
|
|
274
|
+
}
|
|
275
|
+
if (model)
|
|
276
|
+
config.model = model;
|
|
277
|
+
if (max_agents)
|
|
278
|
+
config.maxConcurrentAgents = max_agents;
|
|
279
|
+
if (autonomy)
|
|
280
|
+
config.autonomyMode = autonomy;
|
|
281
|
+
if (company_name)
|
|
282
|
+
config.companyName = company_name;
|
|
283
|
+
fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
284
|
+
return { content: [{ type: 'text', text: 'Configuration updated.' }] };
|
|
285
|
+
});
|
|
286
|
+
// ── Start ────────────────────────────────────────────────────────────
|
|
287
|
+
async function main() {
|
|
288
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
289
|
+
await server.connect(transport);
|
|
290
|
+
}
|
|
291
|
+
main().catch((err) => {
|
|
292
|
+
console.error('MCP server failed:', err);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sage-team",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.1",
|
|
4
4
|
"description": "AI-powered autonomous software company with 11 agents, Claude Code execution, and PixiJS isometric office visualization.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"sage-team": "dist/cli/index.js",
|
|
8
|
-
"sage": "dist/cli/index.js"
|
|
8
|
+
"sage": "dist/cli/index.js",
|
|
9
|
+
"sage-team-mcp": "dist/mcp/server.js"
|
|
9
10
|
},
|
|
10
11
|
"scripts": {
|
|
11
12
|
"build": "tsc && cd src/web && npm run build",
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
"homepage": "https://github.com/Petriccone/sage-team#readme",
|
|
37
38
|
"dependencies": {
|
|
38
39
|
"@anthropic-ai/sdk": "^0.39.0",
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
39
41
|
"better-sqlite3": "^12.8.0",
|
|
40
42
|
"commander": "^12.1.0",
|
|
41
43
|
"eventemitter3": "^5.0.1",
|