sage-team 3.4.0 → 3.4.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.
Files changed (35) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/init.d.ts.map +1 -1
  3. package/dist/cli/commands/init.js +36 -23
  4. package/dist/cli/commands/init.js.map +1 -1
  5. package/dist/cli/index.js +1 -1
  6. package/dist/engine/__tests__/dispatcher.test.js +2 -3
  7. package/dist/engine/__tests__/dispatcher.test.js.map +1 -1
  8. package/dist/engine/ceo-brain.d.ts +14 -1
  9. package/dist/engine/ceo-brain.d.ts.map +1 -1
  10. package/dist/engine/ceo-brain.js +89 -4
  11. package/dist/engine/ceo-brain.js.map +1 -1
  12. package/dist/engine/dispatcher.d.ts +5 -0
  13. package/dist/engine/dispatcher.d.ts.map +1 -1
  14. package/dist/engine/dispatcher.js +82 -4
  15. package/dist/engine/dispatcher.js.map +1 -1
  16. package/dist/engine/orchestrator.d.ts +5 -0
  17. package/dist/engine/orchestrator.d.ts.map +1 -1
  18. package/dist/engine/orchestrator.js +61 -7
  19. package/dist/engine/orchestrator.js.map +1 -1
  20. package/dist/mcp/server.js +158 -36
  21. package/dist/mcp/server.js.map +1 -1
  22. package/package.json +1 -1
  23. package/src/web/dist/assets/{BufferResource-Bct1-zq7.js → BufferResource-gLeIu0yv.js} +1 -1
  24. package/src/web/dist/assets/{CanvasRenderer-CKwE0kc4.js → CanvasRenderer-7_doUdID.js} +1 -1
  25. package/src/web/dist/assets/{Filter-DOuiTHq_.js → Filter-AN-kr0CX.js} +1 -1
  26. package/src/web/dist/assets/{RenderTargetSystem-BFGmN4oB.js → RenderTargetSystem-5MG91ZAa.js} +1 -1
  27. package/src/web/dist/assets/{WebGLRenderer-Bnd2tXK6.js → WebGLRenderer-Uk53IW12.js} +1 -1
  28. package/src/web/dist/assets/{WebGPURenderer-BuJedD5Q.js → WebGPURenderer-BtIyp_5U.js} +1 -1
  29. package/src/web/dist/assets/{browserAll-XFxdM5KU.js → browserAll-C9gGmA0l.js} +1 -1
  30. package/src/web/dist/assets/index-8Qtg1JIx.css +1 -0
  31. package/src/web/dist/assets/index-Ckr6v_4r.js +298 -0
  32. package/src/web/dist/assets/{webworkerAll-DU2TvyX8.js → webworkerAll-BTUR00vw.js} +1 -1
  33. package/src/web/dist/index.html +2 -2
  34. package/src/web/dist/assets/index-CQg6t7aD.js +0 -298
  35. package/src/web/dist/assets/index-DgR_4NZL.css +0 -1
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Sage Team v3.1
1
+ # Sage Team v3.4
2
2
 
3
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
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,WAAW,IAAI,OAAO,CAsErC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,WAAW,IAAI,OAAO,CAkFrC"}
@@ -5,22 +5,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.initCommand = initCommand;
7
7
  const commander_1 = require("commander");
8
+ const child_process_1 = require("child_process");
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const path_1 = __importDefault(require("path"));
10
- const DEFAULT_CONFIG = {
11
- companyName: 'Sage Team',
12
- mission: 'Build amazing software autonomously',
13
- model: 'claude-sonnet-4-20250514',
14
- maxConcurrentAgents: 3,
15
- autonomyMode: 'sandbox',
16
- apiKey: '',
17
- };
11
+ /** Detect if current directory is inside a git repository */
12
+ function hasGit() {
13
+ try {
14
+ (0, child_process_1.execSync)('git rev-parse --git-dir', { stdio: 'pipe' });
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
18
21
  function initCommand() {
19
22
  return new commander_1.Command('init')
20
23
  .description('Initialize Sage Team in current directory')
21
24
  .option('--api-key <key>', 'Anthropic API key')
22
25
  .option('--company-name <name>', 'Company name')
23
- .option('--autonomy <mode>', 'Autonomy mode: sandbox|direct|supervised', 'sandbox')
26
+ .option('--autonomy <mode>', 'Autonomy mode: sandbox|direct|supervised')
24
27
  .action(async (options) => {
25
28
  const sageDir = '.sage-team';
26
29
  const configPath = path_1.default.join(sageDir, 'config.json');
@@ -29,32 +32,42 @@ function initCommand() {
29
32
  return;
30
33
  }
31
34
  // Create directory structure
32
- fs_1.default.mkdirSync(path_1.default.join(sageDir, 'worktrees'), { recursive: true });
35
+ fs_1.default.mkdirSync(sageDir, { recursive: true });
36
+ // Auto-detect: sandbox if git available, direct otherwise
37
+ const isGitRepo = hasGit();
38
+ const defaultMode = isGitRepo ? 'sandbox' : 'direct';
33
39
  // Build config
34
- const config = { ...DEFAULT_CONFIG };
40
+ const config = {
41
+ companyName: 'Sage Team',
42
+ mission: 'Build amazing software autonomously',
43
+ model: 'claude-sonnet-4-20250514',
44
+ maxConcurrentAgents: 3,
45
+ autonomyMode: options.autonomy || defaultMode,
46
+ apiKey: '',
47
+ };
35
48
  if (options.apiKey)
36
49
  config.apiKey = options.apiKey;
37
50
  if (options.companyName)
38
51
  config.companyName = options.companyName;
39
- if (options.autonomy)
40
- config.autonomyMode = options.autonomy;
41
52
  // Check env var
42
53
  if (!config.apiKey && process.env.ANTHROPIC_API_KEY) {
43
54
  config.apiKey = process.env.ANTHROPIC_API_KEY;
44
55
  }
45
56
  // Write config
46
57
  fs_1.default.writeFileSync(path_1.default.join(sageDir, 'config.json'), JSON.stringify(config, null, 2));
47
- // Add to .gitignore
48
- const gitignorePath = '.gitignore';
49
- const gitignoreEntry = '\n# Sage Team\n.sage-team/\n';
50
- if (fs_1.default.existsSync(gitignorePath)) {
51
- const content = fs_1.default.readFileSync(gitignorePath, 'utf-8');
52
- if (!content.includes('.sage-team')) {
53
- fs_1.default.appendFileSync(gitignorePath, gitignoreEntry);
58
+ // Add to .gitignore only if git exists
59
+ if (isGitRepo) {
60
+ const gitignorePath = '.gitignore';
61
+ const gitignoreEntry = '\n# Sage Team\n.sage-team/\n';
62
+ if (fs_1.default.existsSync(gitignorePath)) {
63
+ const content = fs_1.default.readFileSync(gitignorePath, 'utf-8');
64
+ if (!content.includes('.sage-team')) {
65
+ fs_1.default.appendFileSync(gitignorePath, gitignoreEntry);
66
+ }
67
+ }
68
+ else {
69
+ fs_1.default.writeFileSync(gitignorePath, gitignoreEntry);
54
70
  }
55
- }
56
- else {
57
- fs_1.default.writeFileSync(gitignorePath, gitignoreEntry);
58
71
  }
59
72
  // Create .mcp.json for Claude Code integration
60
73
  const mcpPath = '.mcp.json';
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
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.4.0');
19
+ .version('3.4.3');
20
20
  program.addCommand((0, init_1.initCommand)());
21
21
  program.addCommand((0, start_1.startCommand)());
22
22
  program.addCommand((0, resume_1.resumeCommand)());
@@ -15,12 +15,11 @@ const dispatcher_1 = require("../dispatcher");
15
15
  cwd: '/tmp/worktree-dex',
16
16
  maxTurns: 50,
17
17
  });
18
- (0, vitest_1.expect)(cmd.command).toBe('claude');
18
+ (0, vitest_1.expect)(cmd.command).toContain('claude');
19
19
  (0, vitest_1.expect)(cmd.args).toContain('--print');
20
20
  (0, vitest_1.expect)(cmd.args).toContain('--output-format');
21
21
  (0, vitest_1.expect)(cmd.args).toContain('stream-json');
22
- (0, vitest_1.expect)(cmd.args).toContain('--permission-mode');
23
- (0, vitest_1.expect)(cmd.args).toContain('bypassPermissions');
22
+ (0, vitest_1.expect)(cmd.args).toContain('--dangerously-skip-permissions');
24
23
  (0, vitest_1.expect)(cmd.args).toContain('--max-turns');
25
24
  (0, vitest_1.expect)(cmd.args).toContain('50');
26
25
  // Task prompt is positional (last arg)
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/engine/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/engine/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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"}
@@ -22,11 +22,24 @@ export interface DecompositionResult {
22
22
  description?: string;
23
23
  }[];
24
24
  }
25
+ export interface CEOResponse {
26
+ type: 'question' | 'ready';
27
+ message: string;
28
+ questions?: string[];
29
+ summary?: string;
30
+ }
25
31
  export declare class CEOBrain {
26
32
  private config;
27
33
  private client;
34
+ private conversationHistory;
28
35
  constructor(config: CEOBrainConfig);
29
- buildDecompositionPrompt(goal: string, roster: AgentRoster[]): string;
36
+ /** Start a conversation about a new goal */
37
+ chat(userMessage: string): Promise<CEOResponse>;
38
+ /** Reset conversation for a new goal */
39
+ resetConversation(): void;
40
+ /** Get conversation context as a string for decomposition */
41
+ getConversationContext(): string;
42
+ buildDecompositionPrompt(goal: string, roster: AgentRoster[], context?: string): string;
30
43
  parseDecomposition(response: string): DecompositionResult;
31
44
  decompose(goal: string, roster: AgentRoster[]): Promise<DecompositionResult>;
32
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ceo-brain.d.ts","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"AAEA,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,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,EAAE,cAAc;IAYlC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM;IAwCrE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IA2BnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoBnF"}
1
+ {"version":3,"file":"ceo-brain.d.ts","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"AAEA,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;AAsCD,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,mBAAmB,CAAyD;gBAExE,MAAM,EAAE,cAAc;IAWlC,4CAA4C;IACtC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqCrD,wCAAwC;IACxC,iBAAiB,IAAI,IAAI;IAIzB,6DAA6D;IAC7D,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;IA2BnD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAyBnF"}
@@ -5,9 +5,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CEOBrain = void 0;
7
7
  const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
8
+ const CEO_SYSTEM_PROMPT = `You are Sage, the CEO of Sage Team — an AI software company with 11 specialized agents. You are warm, professional, and strategic. You speak directly but with personality.
9
+
10
+ Your job is to understand what the user wants to build BEFORE assigning any work to your team. You act like a real CEO: you listen, ask smart questions, and make sure you fully understand the scope.
11
+
12
+ ## Your Personality
13
+ - Confident but not arrogant
14
+ - Direct and efficient — you value everyone's time
15
+ - You use the team members' names naturally (Nova the CTO, Dex the senior dev, Uma the designer, etc.)
16
+ - You occasionally reference your team's strengths ("Dex loves a good TDD challenge", "Uma has great taste in UI")
17
+ - You speak in first person as Sage
18
+
19
+ ## Conversation Flow
20
+ When the user describes a project:
21
+ 1. Acknowledge what they want
22
+ 2. Ask 2-4 clarifying questions about scope, tech preferences, design style, etc.
23
+ 3. When you have enough info, summarize the plan and say you're ready
24
+
25
+ ## Response Format
26
+ ALWAYS respond with ONLY valid JSON (no markdown, no explanation):
27
+
28
+ When you need more info:
29
+ {
30
+ "type": "question",
31
+ "message": "Your conversational response to the user",
32
+ "questions": ["Question 1?", "Question 2?"]
33
+ }
34
+
35
+ When you're ready to start (you have enough context):
36
+ {
37
+ "type": "ready",
38
+ "message": "Your conversational response summarizing the plan",
39
+ "summary": "Concise technical summary of what will be built"
40
+ }
41
+
42
+ IMPORTANT: Only set type="ready" when you genuinely have enough context. If the user's goal is very simple and clear (like "create a hello world page"), you can skip questions and go straight to ready.`;
8
43
  class CEOBrain {
9
44
  config;
10
45
  client = null;
46
+ conversationHistory = [];
11
47
  constructor(config) {
12
48
  this.config = config;
13
49
  if (config.apiKey === 'test') {
@@ -17,15 +53,60 @@ class CEOBrain {
17
53
  this.client = new sdk_1.default({ apiKey: config.apiKey });
18
54
  }
19
55
  else if (process.env.ANTHROPIC_API_KEY) {
20
- // SDK reads ANTHROPIC_API_KEY from environment automatically
21
56
  this.client = new sdk_1.default();
22
57
  }
23
58
  }
24
- buildDecompositionPrompt(goal, roster) {
59
+ /** Start a conversation about a new goal */
60
+ async chat(userMessage) {
61
+ if (!this.client) {
62
+ throw new Error('CEO Brain not initialized: no API key');
63
+ }
64
+ this.conversationHistory.push({ role: 'user', content: userMessage });
65
+ const response = await this.client.messages.create({
66
+ model: this.config.model,
67
+ max_tokens: 1024,
68
+ system: CEO_SYSTEM_PROMPT,
69
+ messages: this.conversationHistory,
70
+ });
71
+ const text = response.content
72
+ .filter(block => block.type === 'text')
73
+ .map(block => block.text)
74
+ .join('');
75
+ this.conversationHistory.push({ role: 'assistant', content: text });
76
+ // Parse the JSON response
77
+ try {
78
+ const jsonMatch = text.match(/\{[\s\S]*\}/);
79
+ const parsed = JSON.parse(jsonMatch ? jsonMatch[0] : text);
80
+ return {
81
+ type: parsed.type || 'question',
82
+ message: parsed.message || text,
83
+ questions: parsed.questions,
84
+ summary: parsed.summary,
85
+ };
86
+ }
87
+ catch {
88
+ // If JSON parsing fails, treat as a question
89
+ return { type: 'question', message: text };
90
+ }
91
+ }
92
+ /** Reset conversation for a new goal */
93
+ resetConversation() {
94
+ this.conversationHistory = [];
95
+ }
96
+ /** Get conversation context as a string for decomposition */
97
+ getConversationContext() {
98
+ return this.conversationHistory
99
+ .map(m => `${m.role === 'user' ? 'User' : 'Sage'}: ${m.content}`)
100
+ .join('\n\n');
101
+ }
102
+ buildDecompositionPrompt(goal, roster, context) {
25
103
  const agentList = roster.map(a => `- **${a.name}** (${a.id}): ${a.role} — skills: ${a.skills.join(', ')}`).join('\n');
104
+ const contextBlock = context
105
+ ? `## Conversation Context\n${context}\n\n`
106
+ : '';
26
107
  return `You are Sage, CEO of an AI software company. Decompose this goal into a sprint with concrete tasks.
27
108
 
28
- ## Goal
109
+ ${contextBlock}## Goal
29
110
  ${goal}
30
111
 
31
112
  ## Available Team
@@ -84,7 +165,11 @@ Respond with ONLY valid JSON (no markdown, no explanation):
84
165
  if (!this.client) {
85
166
  throw new Error('CEO Brain not initialized: no API key');
86
167
  }
87
- const prompt = this.buildDecompositionPrompt(goal, roster);
168
+ // Include conversation context if available
169
+ const context = this.conversationHistory.length > 0
170
+ ? this.getConversationContext()
171
+ : undefined;
172
+ const prompt = this.buildDecompositionPrompt(goal, roster, context);
88
173
  const response = await this.client.messages.create({
89
174
  model: this.config.model,
90
175
  max_tokens: 4096,
@@ -1 +1 @@
1
- {"version":3,"file":"ceo-brain.js","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ceo-brain.js","sourceRoot":"","sources":["../../src/engine/ceo-brain.ts"],"names":[],"mappings":"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"}
@@ -27,12 +27,17 @@ export interface RunningProcess {
27
27
  export declare class Dispatcher extends EventEmitter {
28
28
  private config;
29
29
  private running;
30
+ private claudePath;
30
31
  constructor(config: DispatcherConfig);
32
+ /** Find the claude executable — cache it for reuse */
33
+ private findClaude;
31
34
  availableSlots(): number;
32
35
  runningCount(): number;
33
36
  buildCommand(input: SpawnCommandInput): SpawnCommand;
34
37
  parseStreamEvent(line: string): StreamEvent | null;
35
38
  toolToStatus(toolName: string): string;
39
+ /** Extract human-readable detail from a tool_use event */
40
+ extractToolDetail(event: StreamEvent): string;
36
41
  spawnAgent(agentId: string, taskId: string, systemPrompt: string, taskPrompt: string, cwd: string, maxTurns?: number): Promise<void>;
37
42
  killAgent(taskId: string): boolean;
38
43
  killAll(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/engine/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAA0C;gBAE7C,MAAM,EAAE,gBAAgB;IAKpC,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY;IAiBpD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQlD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIhC,UAAU,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAiEhB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQlC,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/engine/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,UAAU,CAAuB;gBAE7B,MAAM,EAAE,gBAAgB;IAKpC,sDAAsD;IACtD,OAAO,CAAC,UAAU;IA2BlB,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY;IAiBpD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAQlD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItC,0DAA0D;IAC1D,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IA0BvC,UAAU,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,IAAI,CAAC;IAiFhB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQlC,OAAO,IAAI,IAAI;CAMhB"}
@@ -1,8 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Dispatcher = void 0;
4
7
  const child_process_1 = require("child_process");
8
+ const child_process_2 = require("child_process");
5
9
  const events_1 = require("events");
10
+ const path_1 = __importDefault(require("path"));
6
11
  const TOOL_STATUS_MAP = {
7
12
  Edit: 'coding',
8
13
  Write: 'coding',
@@ -15,10 +20,43 @@ const TOOL_STATUS_MAP = {
15
20
  class Dispatcher extends events_1.EventEmitter {
16
21
  config;
17
22
  running = new Map();
23
+ claudePath = null;
18
24
  constructor(config) {
19
25
  super();
20
26
  this.config = config;
21
27
  }
28
+ /** Find the claude executable — cache it for reuse */
29
+ findClaude() {
30
+ if (this.claudePath)
31
+ return this.claudePath;
32
+ if (process.platform === 'win32') {
33
+ // Prefer native .exe — does NOT need cmd.exe / shell: true
34
+ const fs = require('fs');
35
+ const exePaths = [
36
+ path_1.default.join(process.env.USERPROFILE || '', '.local', 'bin', 'claude.exe'),
37
+ path_1.default.join(process.env.LOCALAPPDATA || '', 'Programs', 'claude', 'claude.exe'),
38
+ ];
39
+ for (const p of exePaths) {
40
+ if (fs.existsSync(p)) {
41
+ this.claudePath = p;
42
+ return this.claudePath;
43
+ }
44
+ }
45
+ // Fallback: try where command (which uses cmd.exe — may fail in MCP context)
46
+ try {
47
+ const lines = (0, child_process_2.execSync)('where claude.exe', { encoding: 'utf-8' }).trim().split('\n');
48
+ const exeLine = lines.find((l) => l.trim().endsWith('.exe'));
49
+ if (exeLine) {
50
+ this.claudePath = exeLine.trim();
51
+ return this.claudePath;
52
+ }
53
+ }
54
+ catch { /* continue */ }
55
+ }
56
+ // Unix or fallback
57
+ this.claudePath = 'claude';
58
+ return this.claudePath;
59
+ }
22
60
  availableSlots() {
23
61
  return this.config.maxConcurrent - this.running.size;
24
62
  }
@@ -29,13 +67,13 @@ class Dispatcher extends events_1.EventEmitter {
29
67
  const args = [
30
68
  '--print',
31
69
  '--output-format', 'stream-json',
70
+ '--dangerously-skip-permissions',
32
71
  '--system-prompt', input.systemPrompt,
33
- '--permission-mode', 'bypassPermissions',
34
72
  '--max-turns', String(input.maxTurns),
35
73
  input.taskPrompt, // positional argument (last)
36
74
  ];
37
75
  return {
38
- command: 'claude',
76
+ command: this.findClaude(),
39
77
  args,
40
78
  cwd: input.cwd,
41
79
  };
@@ -51,6 +89,32 @@ class Dispatcher extends events_1.EventEmitter {
51
89
  toolToStatus(toolName) {
52
90
  return TOOL_STATUS_MAP[toolName] || 'thinking';
53
91
  }
92
+ /** Extract human-readable detail from a tool_use event */
93
+ extractToolDetail(event) {
94
+ const input = event.input;
95
+ if (!input)
96
+ return '';
97
+ const tool = event.tool;
98
+ switch (tool) {
99
+ case 'Edit':
100
+ case 'Write':
101
+ case 'Read': {
102
+ const fp = input.file_path || input.path || '';
103
+ const file = fp.split(/[/\\]/).pop() || fp;
104
+ return file ? file : '';
105
+ }
106
+ case 'Bash': {
107
+ const cmd = (input.command || '').slice(0, 80);
108
+ return cmd;
109
+ }
110
+ case 'Grep':
111
+ case 'Glob': {
112
+ return input.pattern || input.glob || '';
113
+ }
114
+ default:
115
+ return '';
116
+ }
117
+ }
54
118
  async spawnAgent(agentId, taskId, systemPrompt, taskPrompt, cwd, maxTurns = 50) {
55
119
  if (this.availableSlots() <= 0) {
56
120
  throw new Error('No available slots');
@@ -59,7 +123,6 @@ class Dispatcher extends events_1.EventEmitter {
59
123
  const proc = (0, child_process_1.spawn)(cmd.command, cmd.args, {
60
124
  cwd: cmd.cwd,
61
125
  stdio: ['ignore', 'pipe', 'pipe'],
62
- shell: true,
63
126
  env: { ...process.env },
64
127
  });
65
128
  const runningProc = {
@@ -83,7 +146,21 @@ class Dispatcher extends events_1.EventEmitter {
83
146
  this.emit('stream-event', { agentId, taskId, event });
84
147
  if (event.type === 'tool_use' && event.tool) {
85
148
  const status = this.toolToStatus(event.tool);
86
- this.emit('agent-status', { agentId, status });
149
+ const detail = this.extractToolDetail(event);
150
+ this.emit('agent-status', { agentId, status, tool: event.tool, detail });
151
+ }
152
+ if (event.type === 'assistant' && event.message) {
153
+ // Claude's text output — narration from the agent
154
+ const msg = event.message;
155
+ if (msg.content) {
156
+ const textBlocks = (Array.isArray(msg.content) ? msg.content : [msg.content])
157
+ .filter((b) => b.type === 'text' || typeof b === 'string')
158
+ .map((b) => typeof b === 'string' ? b : b.text)
159
+ .join('');
160
+ if (textBlocks.length > 0 && textBlocks.length < 500) {
161
+ this.emit('agent-narration', { agentId, taskId, text: textBlocks.slice(0, 200) });
162
+ }
163
+ }
87
164
  }
88
165
  if (event.type === 'result') {
89
166
  this.emit('task-complete', {
@@ -92,6 +169,7 @@ class Dispatcher extends events_1.EventEmitter {
92
169
  cost: event.cost_usd,
93
170
  duration: event.duration_ms,
94
171
  turns: event.turns,
172
+ result: typeof event.result === 'string' ? event.result.slice(0, 300) : '',
95
173
  });
96
174
  }
97
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/engine/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/engine/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import { Database } from '../state/database';
3
+ import { CEOResponse } from './ceo-brain';
3
4
  import type { Session, AutonomyMode } from '../types';
4
5
  export interface OrchestratorConfig {
5
6
  apiKey: string;
@@ -33,6 +34,10 @@ export declare class Orchestrator extends EventEmitter {
33
34
  start(goal?: string): Session;
34
35
  resume(sessionId: string): boolean;
35
36
  stop(): void;
37
+ /** Chat with CEO Sage before starting a sprint */
38
+ chatWithCEO(message: string): Promise<CEOResponse>;
39
+ /** Start the sprint after CEO conversation — uses conversation context */
40
+ launchSprint(goal: string): Promise<void>;
36
41
  submitGoal(goal: string): Promise<void>;
37
42
  private startTickLoop;
38
43
  private tick;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/engine/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAe7C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAAqB;IAGnC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,YAAY,CAAmB;IAGvC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IAGjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAS;IAExB,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;gBAEW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB;IAwBpD,OAAO,CAAC,wBAAwB;IAuBhC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAoB7B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAiBlC,IAAI,IAAI,IAAI;IASN,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D7C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,IAAI;IAqDZ,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;IAiB3B,SAAS,IAAI,GAAG,EAAE;IAKlB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAKvC,QAAQ,IAAI,GAAG,EAAE;IAKjB,aAAa,IAAI,GAAG,EAAE;IAKhB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU9C,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/engine/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQ7C,OAAO,EAAY,WAAW,EAAe,MAAM,aAAa,CAAC;AAOjE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,MAAM,CAAqB;IAGnC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,YAAY,CAAmB;IAGvC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IAGjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,OAAO,CAAS;IAExB,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;gBAEW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB;IAwBpD,OAAO,CAAC,wBAAwB;IA2BhC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAoB7B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAiBlC,IAAI,IAAI,IAAI;IASZ,kDAAkD;IAC5C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBxD,0EAA0E;IACpE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D7C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,IAAI;IAoEZ,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;IAiB3B,SAAS,IAAI,GAAG,EAAE;IAKlB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAKvC,QAAQ,IAAI,GAAG,EAAE;IAKjB,aAAa,IAAI,GAAG,EAAE;IAKhB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU9C,OAAO,CAAC,SAAS;CAMlB"}