sage-team 3.4.9 → 3.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/dist/cli/index.js +1 -1
- package/dist/engine/__tests__/ceo-brain.test.js +27 -0
- package/dist/engine/__tests__/ceo-brain.test.js.map +1 -1
- package/dist/engine/ceo-brain.d.ts +8 -9
- package/dist/engine/ceo-brain.d.ts.map +1 -1
- package/dist/engine/ceo-brain.js +124 -117
- package/dist/engine/ceo-brain.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/package.json +1 -1
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.5.0');
|
|
20
20
|
program.addCommand((0, init_1.initCommand)());
|
|
21
21
|
program.addCommand((0, start_1.startCommand)());
|
|
22
22
|
program.addCommand((0, resume_1.resumeCommand)());
|
|
@@ -53,5 +53,32 @@ const ceo_brain_1 = require("../ceo-brain");
|
|
|
53
53
|
(0, vitest_1.expect)(prompt).toContain('Quinn');
|
|
54
54
|
(0, vitest_1.expect)(prompt).toContain('JSON');
|
|
55
55
|
});
|
|
56
|
+
(0, vitest_1.it)('should ask questions on first chat message (instant, no AI)', async () => {
|
|
57
|
+
const brain = new ceo_brain_1.CEOBrain({ apiKey: 'test', model: 'claude-sonnet-4-20250514' });
|
|
58
|
+
const response = await brain.chat('Build a website for a painting company in Dublin');
|
|
59
|
+
(0, vitest_1.expect)(response.type).toBe('question');
|
|
60
|
+
(0, vitest_1.expect)(response.questions).toBeDefined();
|
|
61
|
+
(0, vitest_1.expect)(response.questions.length).toBeGreaterThan(0);
|
|
62
|
+
(0, vitest_1.expect)(response.message).toBeTruthy();
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('should detect website project type', async () => {
|
|
65
|
+
const brain = new ceo_brain_1.CEOBrain({ apiKey: 'test', model: 'claude-sonnet-4-20250514' });
|
|
66
|
+
const response = await brain.chat('Criar um site profissional para empresa de pintura');
|
|
67
|
+
(0, vitest_1.expect)(response.type).toBe('question');
|
|
68
|
+
(0, vitest_1.expect)(response.questions.some(q => q.toLowerCase().includes('tech') || q.toLowerCase().includes('stack'))).toBe(true);
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)('should be ready on second message', async () => {
|
|
71
|
+
const brain = new ceo_brain_1.CEOBrain({ apiKey: 'test', model: 'claude-sonnet-4-20250514' });
|
|
72
|
+
await brain.chat('Build a website for my company');
|
|
73
|
+
const response = await brain.chat('Use Next.js, modern design, I have all content ready');
|
|
74
|
+
(0, vitest_1.expect)(response.type).toBe('ready');
|
|
75
|
+
(0, vitest_1.expect)(response.summary).toBeTruthy();
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.it)('should detect API project type', async () => {
|
|
78
|
+
const brain = new ceo_brain_1.CEOBrain({ apiKey: 'test', model: 'claude-sonnet-4-20250514' });
|
|
79
|
+
const response = await brain.chat('Build a REST API for a todo application');
|
|
80
|
+
(0, vitest_1.expect)(response.type).toBe('question');
|
|
81
|
+
(0, vitest_1.expect)(response.questions.some(q => q.toLowerCase().includes('database') || q.toLowerCase().includes('framework'))).toBe(true);
|
|
82
|
+
});
|
|
56
83
|
});
|
|
57
84
|
//# sourceMappingURL=ceo-brain.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ceo-brain.test.js","sourceRoot":"","sources":["../../../src/engine/__tests__/ceo-brain.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ceo-brain.test.js","sourceRoot":"","sources":["../../../src/engine/__tests__/ceo-brain.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,26 +23,25 @@ export interface DecompositionResult {
|
|
|
23
23
|
}[];
|
|
24
24
|
}
|
|
25
25
|
export interface CEOResponse {
|
|
26
|
-
type: 'question' | 'ready'
|
|
26
|
+
type: 'question' | 'ready';
|
|
27
27
|
message: string;
|
|
28
28
|
questions?: string[];
|
|
29
29
|
summary?: string;
|
|
30
|
-
meeting_notes?: string[];
|
|
31
30
|
}
|
|
32
31
|
export declare class CEOBrain {
|
|
33
32
|
private config;
|
|
34
33
|
private client;
|
|
35
|
-
private useClaudeCode;
|
|
36
34
|
private conversationHistory;
|
|
35
|
+
private collectedAnswers;
|
|
36
|
+
private detectedProject;
|
|
37
37
|
constructor(config: CEOBrainConfig);
|
|
38
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Chat with the user — INSTANT, no AI needed.
|
|
40
|
+
* Uses smart project detection to ask relevant questions.
|
|
41
|
+
* Only decomposition (later) needs AI.
|
|
42
|
+
*/
|
|
39
43
|
chat(userMessage: string): Promise<CEOResponse>;
|
|
40
|
-
private chatViaSDK;
|
|
41
|
-
private chatViaClaudeCode;
|
|
42
|
-
private parseCEOResponse;
|
|
43
|
-
/** Reset conversation for a new goal */
|
|
44
44
|
resetConversation(): void;
|
|
45
|
-
/** Get conversation context as a string for decomposition */
|
|
46
45
|
getConversationContext(): string;
|
|
47
46
|
buildDecompositionPrompt(goal: string, roster: AgentRoster[], context?: string): string;
|
|
48
47
|
parseDecomposition(response: string): DecompositionResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ceo-brain.d.ts","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"ceo-brain.d.ts","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqJD,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,mBAAmB,CAAyD;IACpF,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,MAAM,EAAE,cAAc;IAalC;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmDrD,iBAAiB,IAAI,IAAI;IAMzB,sBAAsB,IAAI,MAAM;IAMhC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IA4CvF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAoCnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CA2BnF"}
|
package/dist/engine/ceo-brain.js
CHANGED
|
@@ -7,54 +7,78 @@ exports.CEOBrain = void 0;
|
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
10
|
+
const PROJECT_TYPES = [
|
|
11
|
+
{
|
|
12
|
+
keywords: ['site', 'website', 'web', 'landing', 'página', 'pagina', 'homepage'],
|
|
13
|
+
greeting: 'Love it! A website project — Uma (our designer) is going to have a blast with this, and Dex is already itching to code.',
|
|
14
|
+
questions: [
|
|
15
|
+
'What tech stack do you prefer? (e.g., Next.js, React, plain HTML/CSS, WordPress)',
|
|
16
|
+
'Do you have a design style in mind? (minimalist, bold/colorful, corporate, modern)',
|
|
17
|
+
'Do you already have the content (texts, images, logo) or do we need to create placeholder content?',
|
|
18
|
+
'Where do you want to deploy this? (Vercel, Netlify, traditional hosting, etc.)',
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
keywords: ['api', 'backend', 'server', 'rest', 'graphql', 'microservice'],
|
|
23
|
+
greeting: 'A backend project — Nova (CTO) and Dex (Senior Dev) are going to love architecting this.',
|
|
24
|
+
questions: [
|
|
25
|
+
'What language/framework do you prefer? (Node.js/Express, Python/FastAPI, Go, etc.)',
|
|
26
|
+
'What database do you need? (PostgreSQL, MongoDB, SQLite, etc.)',
|
|
27
|
+
'Do you need authentication? (JWT, OAuth, sessions)',
|
|
28
|
+
'Will this API serve a frontend, mobile app, or both?',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
keywords: ['app', 'mobile', 'ios', 'android', 'react native', 'flutter'],
|
|
33
|
+
greeting: 'A mobile app — exciting! Uma will design the screens while Dex and Gage handle the implementation.',
|
|
34
|
+
questions: [
|
|
35
|
+
'Which platform? (iOS only, Android only, or cross-platform)',
|
|
36
|
+
'What framework do you prefer? (React Native, Flutter, native)',
|
|
37
|
+
'Does it need a backend/API, or is it standalone?',
|
|
38
|
+
'What are the 3 most important features?',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
keywords: ['dashboard', 'admin', 'painel', 'analytics', 'crm'],
|
|
43
|
+
greeting: 'A dashboard project — River (Data) and Uma (Design) will make this shine. Dex will wire it all up.',
|
|
44
|
+
questions: [
|
|
45
|
+
'What data sources will this dashboard connect to?',
|
|
46
|
+
'Do you need real-time updates or is periodic refresh OK?',
|
|
47
|
+
'What are the key metrics/charts you want to display?',
|
|
48
|
+
'Who are the users? (internal team, clients, public)',
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
keywords: ['ecommerce', 'e-commerce', 'loja', 'store', 'shop', 'produto', 'product'],
|
|
53
|
+
greeting: 'An e-commerce project — this is a big one! Nova will architect it, Uma will design the shopping experience, and Dex will build it solid.',
|
|
54
|
+
questions: [
|
|
55
|
+
'What platform do you prefer? (Shopify, custom with Stripe, WooCommerce)',
|
|
56
|
+
'How many products approximately?',
|
|
57
|
+
'Do you need inventory management, or just a simple catalog?',
|
|
58
|
+
'What payment methods? (Credit card, PayPal, Pix, etc.)',
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
const DEFAULT_PROJECT = {
|
|
63
|
+
keywords: [],
|
|
64
|
+
greeting: 'Interesting project! Let me make sure I understand exactly what you need before I rally the team.',
|
|
65
|
+
questions: [
|
|
66
|
+
'What technology/framework do you want us to use?',
|
|
67
|
+
'What are the 3 most important features or requirements?',
|
|
68
|
+
'Do you have any design preferences or references?',
|
|
69
|
+
'What is the target audience for this project?',
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
function detectProjectType(goal) {
|
|
73
|
+
const lower = goal.toLowerCase();
|
|
74
|
+
for (const pt of PROJECT_TYPES) {
|
|
75
|
+
if (pt.keywords.some(kw => lower.includes(kw))) {
|
|
76
|
+
return pt;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return DEFAULT_PROJECT;
|
|
80
|
+
}
|
|
81
|
+
// ── Claude Code spawn (only used for decomposition) ─────────────
|
|
58
82
|
function findClaudeExe() {
|
|
59
83
|
if (process.platform === 'win32') {
|
|
60
84
|
const fs = require('fs');
|
|
@@ -76,12 +100,10 @@ function findClaudeExe() {
|
|
|
76
100
|
}
|
|
77
101
|
return 'claude';
|
|
78
102
|
}
|
|
79
|
-
/** Run claude --print asynchronously and return the text output */
|
|
80
103
|
function runClaude(systemPrompt, userPrompt) {
|
|
81
104
|
return new Promise((resolve, reject) => {
|
|
82
105
|
const claude = findClaudeExe();
|
|
83
106
|
const env = { ...process.env };
|
|
84
|
-
// Allow spawning claude from within MCP context
|
|
85
107
|
delete env.CLAUDECODE;
|
|
86
108
|
const proc = (0, child_process_1.spawn)(claude, [
|
|
87
109
|
'--print',
|
|
@@ -100,8 +122,8 @@ function runClaude(systemPrompt, userPrompt) {
|
|
|
100
122
|
proc.stderr?.on('data', (chunk) => { stderr += chunk.toString(); });
|
|
101
123
|
const timer = setTimeout(() => {
|
|
102
124
|
proc.kill('SIGTERM');
|
|
103
|
-
reject(new Error('Claude timed out after
|
|
104
|
-
},
|
|
125
|
+
reject(new Error('Claude timed out after 180s'));
|
|
126
|
+
}, 180000);
|
|
105
127
|
proc.on('error', (err) => {
|
|
106
128
|
clearTimeout(timer);
|
|
107
129
|
reject(new Error(`Failed to run claude: ${err.message}`));
|
|
@@ -117,92 +139,80 @@ function runClaude(systemPrompt, userPrompt) {
|
|
|
117
139
|
});
|
|
118
140
|
});
|
|
119
141
|
}
|
|
142
|
+
// ── CEO Brain ───────────────────────────────────────────────────
|
|
120
143
|
class CEOBrain {
|
|
121
144
|
config;
|
|
122
145
|
client = null;
|
|
123
|
-
useClaudeCode = false;
|
|
124
146
|
conversationHistory = [];
|
|
147
|
+
collectedAnswers = [];
|
|
148
|
+
detectedProject = null;
|
|
125
149
|
constructor(config) {
|
|
126
150
|
this.config = config;
|
|
127
151
|
if (config.apiKey === 'test') {
|
|
128
|
-
// Test mode
|
|
152
|
+
// Test mode
|
|
129
153
|
}
|
|
130
154
|
else if (process.env.ANTHROPIC_API_KEY) {
|
|
131
|
-
// Use API directly if env var is set
|
|
132
155
|
try {
|
|
133
156
|
this.client = new sdk_1.default();
|
|
134
157
|
}
|
|
135
158
|
catch {
|
|
136
|
-
|
|
159
|
+
// Fall through — will use template mode
|
|
137
160
|
}
|
|
138
161
|
}
|
|
139
|
-
else {
|
|
140
|
-
// Plug-and-play: use Claude Code directly — no API key needed
|
|
141
|
-
this.useClaudeCode = true;
|
|
142
|
-
}
|
|
143
162
|
}
|
|
144
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* Chat with the user — INSTANT, no AI needed.
|
|
165
|
+
* Uses smart project detection to ask relevant questions.
|
|
166
|
+
* Only decomposition (later) needs AI.
|
|
167
|
+
*/
|
|
145
168
|
async chat(userMessage) {
|
|
146
169
|
this.conversationHistory.push({ role: 'user', content: userMessage });
|
|
147
|
-
|
|
148
|
-
if (
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return this.parseCEOResponse(text);
|
|
156
|
-
}
|
|
157
|
-
async chatViaSDK() {
|
|
158
|
-
const response = await this.client.messages.create({
|
|
159
|
-
model: this.config.model,
|
|
160
|
-
max_tokens: 1024,
|
|
161
|
-
system: CEO_SYSTEM_PROMPT,
|
|
162
|
-
messages: this.conversationHistory,
|
|
163
|
-
});
|
|
164
|
-
return response.content
|
|
165
|
-
.filter(block => block.type === 'text')
|
|
166
|
-
.map(block => block.text)
|
|
167
|
-
.join('');
|
|
168
|
-
}
|
|
169
|
-
async chatViaClaudeCode() {
|
|
170
|
-
// Build conversation context into the prompt
|
|
171
|
-
const contextParts = this.conversationHistory.slice(0, -1).map(m => `${m.role === 'user' ? 'User' : 'Sage'}: ${m.content}`);
|
|
172
|
-
const currentMessage = this.conversationHistory[this.conversationHistory.length - 1].content;
|
|
173
|
-
let prompt = currentMessage;
|
|
174
|
-
if (contextParts.length > 0) {
|
|
175
|
-
prompt = `Previous conversation:\n${contextParts.join('\n')}\n\nUser: ${currentMessage}\n\nRespond as Sage (JSON only):`;
|
|
176
|
-
}
|
|
177
|
-
return runClaude(CEO_SYSTEM_PROMPT, prompt);
|
|
178
|
-
}
|
|
179
|
-
parseCEOResponse(text) {
|
|
180
|
-
try {
|
|
181
|
-
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
182
|
-
const parsed = JSON.parse(jsonMatch ? jsonMatch[0] : text);
|
|
183
|
-
// Force questions on first interaction — CEO should never skip to ready immediately
|
|
184
|
-
const isFirstResponse = this.conversationHistory.filter(m => m.role === 'assistant').length <= 1;
|
|
185
|
-
let type = parsed.type || 'question';
|
|
186
|
-
if (isFirstResponse && type === 'ready') {
|
|
187
|
-
type = 'question';
|
|
188
|
-
}
|
|
189
|
-
return {
|
|
190
|
-
type,
|
|
191
|
-
message: parsed.message || text,
|
|
192
|
-
questions: parsed.questions,
|
|
193
|
-
summary: parsed.summary,
|
|
194
|
-
meeting_notes: parsed.meeting_notes,
|
|
170
|
+
const messageCount = this.conversationHistory.filter(m => m.role === 'user').length;
|
|
171
|
+
if (messageCount === 1) {
|
|
172
|
+
// First message — detect project type and ask questions
|
|
173
|
+
this.detectedProject = detectProjectType(userMessage);
|
|
174
|
+
const response = {
|
|
175
|
+
type: 'question',
|
|
176
|
+
message: this.detectedProject.greeting,
|
|
177
|
+
questions: this.detectedProject.questions,
|
|
195
178
|
};
|
|
179
|
+
this.conversationHistory.push({ role: 'assistant', content: JSON.stringify(response) });
|
|
180
|
+
return response;
|
|
196
181
|
}
|
|
197
|
-
|
|
198
|
-
|
|
182
|
+
// Subsequent messages — user is answering questions
|
|
183
|
+
this.collectedAnswers.push(userMessage);
|
|
184
|
+
if (messageCount === 2) {
|
|
185
|
+
// Second message — we have enough context, Sage is ready
|
|
186
|
+
const goalSummary = this.conversationHistory
|
|
187
|
+
.filter(m => m.role === 'user')
|
|
188
|
+
.map(m => m.content)
|
|
189
|
+
.join(' | ');
|
|
190
|
+
const response = {
|
|
191
|
+
type: 'ready',
|
|
192
|
+
message: `Perfect, I have a clear picture now. Let me call the team together — Nova will handle the architecture, Uma will work on the design, and Dex will lead the implementation. I'll have Morgan coordinate everything. Let's go!`,
|
|
193
|
+
summary: goalSummary,
|
|
194
|
+
};
|
|
195
|
+
this.conversationHistory.push({ role: 'assistant', content: JSON.stringify(response) });
|
|
196
|
+
return response;
|
|
199
197
|
}
|
|
198
|
+
// 3+ messages — still ready
|
|
199
|
+
const goalSummary = this.conversationHistory
|
|
200
|
+
.filter(m => m.role === 'user')
|
|
201
|
+
.map(m => m.content)
|
|
202
|
+
.join(' | ');
|
|
203
|
+
const response = {
|
|
204
|
+
type: 'ready',
|
|
205
|
+
message: `Got it! Adding that to the plan. Let me rally the team now.`,
|
|
206
|
+
summary: goalSummary,
|
|
207
|
+
};
|
|
208
|
+
this.conversationHistory.push({ role: 'assistant', content: JSON.stringify(response) });
|
|
209
|
+
return response;
|
|
200
210
|
}
|
|
201
|
-
/** Reset conversation for a new goal */
|
|
202
211
|
resetConversation() {
|
|
203
212
|
this.conversationHistory = [];
|
|
213
|
+
this.collectedAnswers = [];
|
|
214
|
+
this.detectedProject = null;
|
|
204
215
|
}
|
|
205
|
-
/** Get conversation context as a string for decomposition */
|
|
206
216
|
getConversationContext() {
|
|
207
217
|
return this.conversationHistory
|
|
208
218
|
.map(m => `${m.role === 'user' ? 'User' : 'Sage'}: ${m.content}`)
|
|
@@ -248,10 +258,8 @@ Respond with ONLY valid JSON (no markdown, no explanation):
|
|
|
248
258
|
}`;
|
|
249
259
|
}
|
|
250
260
|
parseDecomposition(response) {
|
|
251
|
-
// Try to extract JSON from markdown code blocks
|
|
252
261
|
const jsonMatch = response.match(/```(?:json)?\s*\n?([\s\S]*?)\n?\s*```/);
|
|
253
262
|
const jsonStr = jsonMatch ? jsonMatch[1].trim() : response.trim();
|
|
254
|
-
// Also try raw JSON match if no code block found
|
|
255
263
|
let parsed;
|
|
256
264
|
try {
|
|
257
265
|
parsed = JSON.parse(jsonStr);
|
|
@@ -284,7 +292,6 @@ Respond with ONLY valid JSON (no markdown, no explanation):
|
|
|
284
292
|
};
|
|
285
293
|
}
|
|
286
294
|
async decompose(goal, roster) {
|
|
287
|
-
// Include conversation context if available
|
|
288
295
|
const context = this.conversationHistory.length > 0
|
|
289
296
|
? this.getConversationContext()
|
|
290
297
|
: undefined;
|
|
@@ -302,7 +309,7 @@ Respond with ONLY valid JSON (no markdown, no explanation):
|
|
|
302
309
|
.join('');
|
|
303
310
|
}
|
|
304
311
|
else {
|
|
305
|
-
// Use Claude Code
|
|
312
|
+
// Use Claude Code CLI for decomposition (the only step that needs AI)
|
|
306
313
|
text = await runClaude('You are a technical project manager. Respond with ONLY valid JSON.', prompt);
|
|
307
314
|
}
|
|
308
315
|
return this.parseDecomposition(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ceo-brain.js","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAgD;AAChD,gDAAwB;AACxB,4DAA0C;
|
|
1
|
+
{"version":3,"file":"ceo-brain.js","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAgD;AAChD,gDAAwB;AACxB,4DAA0C;AAwC1C,MAAM,aAAa,GAAkB;IACnC;QACE,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;QAC/E,QAAQ,EAAE,yHAAyH;QACnI,SAAS,EAAE;YACT,kFAAkF;YAClF,oFAAoF;YACpF,oGAAoG;YACpG,gFAAgF;SACjF;KACF;IACD;QACE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC;QACzE,QAAQ,EAAE,0FAA0F;QACpG,SAAS,EAAE;YACT,oFAAoF;YACpF,gEAAgE;YAChE,oDAAoD;YACpD,sDAAsD;SACvD;KACF;IACD;QACE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC;QACxE,QAAQ,EAAE,oGAAoG;QAC9G,SAAS,EAAE;YACT,6DAA6D;YAC7D,+DAA+D;YAC/D,kDAAkD;YAClD,yCAAyC;SAC1C;KACF;IACD;QACE,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;QAC9D,QAAQ,EAAE,oGAAoG;QAC9G,SAAS,EAAE;YACT,mDAAmD;YACnD,0DAA0D;YAC1D,sDAAsD;YACtD,qDAAqD;SACtD;KACF;IACD;QACE,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACpF,QAAQ,EAAE,0IAA0I;QACpJ,SAAS,EAAE;YACT,yEAAyE;YACzE,kCAAkC;YAClC,6DAA6D;YAC7D,wDAAwD;SACzD;KACF;CACF,CAAC;AAEF,MAAM,eAAe,GAAgB;IACnC,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,mGAAmG;IAC7G,SAAS,EAAE;QACT,kDAAkD;QAClD,yDAAyD;QACzD,mDAAmD;QACnD,+CAA+C;KAChD;CACF,CAAC;AAEF,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,mEAAmE;AACnE,SAAS,aAAa;IACpB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG;YACf,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;YACvE,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC;SAC9E,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,wBAAQ,EAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,YAAoB,EAAE,UAAkB;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAQ,GAAW,CAAC,UAAU,CAAC;QAE/B,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,MAAM,EAAE;YACzB,SAAS;YACT,gCAAgC;YAChC,iBAAiB,EAAE,MAAM;YACzB,aAAa,EAAE,GAAG;YAClB,iBAAiB,EAAE,YAAY;YAC/B,UAAU;SACX,EAAE;YACD,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACnD,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mEAAmE;AACnE,MAAa,QAAQ;IACX,MAAM,CAAiB;IACvB,MAAM,GAAqB,IAAI,CAAC;IAChC,mBAAmB,GAAsD,EAAE,CAAC;IAC5E,gBAAgB,GAAa,EAAE,CAAC;IAChC,eAAe,GAAuB,IAAI,CAAC;IAEnD,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,YAAY;QACd,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,GAAG,IAAI,aAAS,EAAE,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtE,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAEpF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,wDAAwD;YACxD,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAgB;gBAC5B,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;gBACtC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS;aAC1C,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,yDAAyD;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB;iBACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACnB,IAAI,CAAC,KAAK,CAAC,CAAC;YAEf,MAAM,QAAQ,GAAgB;gBAC5B,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,8NAA8N;gBACvO,OAAO,EAAE,WAAW;aACrB,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,IAAI,CAAC,KAAK,CAAC,CAAC;QAEf,MAAM,QAAQ,GAAgB;YAC5B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,6DAA6D;YACtE,OAAO,EAAE,WAAW;SACrB,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,mBAAmB;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAChE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB,CAAC,IAAY,EAAE,MAAqB,EAAE,OAAgB;QAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,4BAA4B,OAAO,MAAM;YAC3C,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;;EAET,YAAY;EACZ,IAAI;;;EAGJ,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BT,CAAC;IACD,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAElE,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;gBACxB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;aACzB;YACD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACnC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;gBAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC;gBACzB,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,EAAE;gBACxC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;aAC/B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,MAAqB;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC/B,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpE,IAAI,IAAY,CAAC;QAEjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,IAAI,GAAG,QAAQ,CAAC,OAAO;iBACpB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAwC,CAAC,IAAI,CAAC;iBAC5D,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,IAAI,GAAG,MAAM,SAAS,CAAC,oEAAoE,EAAE,MAAM,CAAC,CAAC;QACvG,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;AAnMD,4BAmMC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -119,7 +119,7 @@ function ensureOrchestrator() {
|
|
|
119
119
|
// ── MCP Server ───────────────────────────────────────────────────────
|
|
120
120
|
const server = new mcp_js_1.McpServer({
|
|
121
121
|
name: 'sage-team',
|
|
122
|
-
version: '3.
|
|
122
|
+
version: '3.5.0',
|
|
123
123
|
});
|
|
124
124
|
// ── Tool: init ───────────────────────────────────────────────────────
|
|
125
125
|
server.tool('sage_team_init', 'Initialize Sage Team in the current project directory. Creates .sage-team/ config. Usually not needed — sage_team_start auto-initializes.', {}, async () => {
|
package/package.json
CHANGED