sage-team 3.0.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/LICENSE +21 -0
- package/README.md +180 -0
- package/dist/agents/__tests__/personas.test.d.ts +2 -0
- package/dist/agents/__tests__/personas.test.d.ts.map +1 -0
- package/dist/agents/__tests__/personas.test.js +47 -0
- package/dist/agents/__tests__/personas.test.js.map +1 -0
- package/dist/agents/personas.d.ts +3 -0
- package/dist/agents/personas.d.ts.map +1 -0
- package/dist/agents/personas.js +127 -0
- package/dist/agents/personas.js.map +1 -0
- package/dist/agents/skills-map.d.ts +7 -0
- package/dist/agents/skills-map.d.ts.map +1 -0
- package/dist/agents/skills-map.js +55 -0
- package/dist/agents/skills-map.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +65 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +50 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +74 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +67 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +3 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +51 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +3 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +106 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +103 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +64 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/team.d.ts +4 -0
- package/dist/cli/commands/team.d.ts.map +1 -0
- package/dist/cli/commands/team.js +33 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +35 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/splash.d.ts +2 -0
- package/dist/cli/splash.d.ts.map +1 -0
- package/dist/cli/splash.js +20 -0
- package/dist/cli/splash.js.map +1 -0
- package/dist/engine/__tests__/ceo-brain.test.d.ts +2 -0
- package/dist/engine/__tests__/ceo-brain.test.d.ts.map +1 -0
- package/dist/engine/__tests__/ceo-brain.test.js +57 -0
- package/dist/engine/__tests__/ceo-brain.test.js.map +1 -0
- package/dist/engine/__tests__/dispatcher.test.d.ts +2 -0
- package/dist/engine/__tests__/dispatcher.test.d.ts.map +1 -0
- package/dist/engine/__tests__/dispatcher.test.js +60 -0
- package/dist/engine/__tests__/dispatcher.test.js.map +1 -0
- package/dist/engine/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/engine/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/engine/__tests__/orchestrator.test.js +83 -0
- package/dist/engine/__tests__/orchestrator.test.js.map +1 -0
- package/dist/engine/__tests__/pr-manager.test.d.ts +2 -0
- package/dist/engine/__tests__/pr-manager.test.d.ts.map +1 -0
- package/dist/engine/__tests__/pr-manager.test.js +44 -0
- package/dist/engine/__tests__/pr-manager.test.js.map +1 -0
- package/dist/engine/__tests__/prompt-builder.test.d.ts +2 -0
- package/dist/engine/__tests__/prompt-builder.test.d.ts.map +1 -0
- package/dist/engine/__tests__/prompt-builder.test.js +42 -0
- package/dist/engine/__tests__/prompt-builder.test.js.map +1 -0
- package/dist/engine/ceo-brain.d.ts +33 -0
- package/dist/engine/ceo-brain.d.ts.map +1 -0
- package/dist/engine/ceo-brain.js +94 -0
- package/dist/engine/ceo-brain.js.map +1 -0
- package/dist/engine/dispatcher.d.ts +40 -0
- package/dist/engine/dispatcher.d.ts.map +1 -0
- package/dist/engine/dispatcher.js +125 -0
- package/dist/engine/dispatcher.js.map +1 -0
- package/dist/engine/orchestrator.d.ts +49 -0
- package/dist/engine/orchestrator.d.ts.map +1 -0
- package/dist/engine/orchestrator.js +303 -0
- package/dist/engine/orchestrator.js.map +1 -0
- package/dist/engine/pr-manager.d.ts +14 -0
- package/dist/engine/pr-manager.d.ts.map +1 -0
- package/dist/engine/pr-manager.js +67 -0
- package/dist/engine/pr-manager.js.map +1 -0
- package/dist/engine/prompt-builder.d.ts +27 -0
- package/dist/engine/prompt-builder.d.ts.map +1 -0
- package/dist/engine/prompt-builder.js +73 -0
- package/dist/engine/prompt-builder.js.map +1 -0
- package/dist/server/__tests__/server.test.d.ts +2 -0
- package/dist/server/__tests__/server.test.d.ts.map +1 -0
- package/dist/server/__tests__/server.test.js +87 -0
- package/dist/server/__tests__/server.test.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +72 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/api.d.ts +4 -0
- package/dist/server/routes/api.d.ts.map +1 -0
- package/dist/server/routes/api.js +60 -0
- package/dist/server/routes/api.js.map +1 -0
- package/dist/skills/__tests__/loader.test.d.ts +2 -0
- package/dist/skills/__tests__/loader.test.d.ts.map +1 -0
- package/dist/skills/__tests__/loader.test.js +50 -0
- package/dist/skills/__tests__/loader.test.js.map +1 -0
- package/dist/skills/loader.d.ts +21 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +190 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/state/__tests__/database.test.d.ts +2 -0
- package/dist/state/__tests__/database.test.d.ts.map +1 -0
- package/dist/state/__tests__/database.test.js +50 -0
- package/dist/state/__tests__/database.test.js.map +1 -0
- package/dist/state/database.d.ts +14 -0
- package/dist/state/database.d.ts.map +1 -0
- package/dist/state/database.js +164 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/repositories/__tests__/repositories.test.d.ts +2 -0
- package/dist/state/repositories/__tests__/repositories.test.d.ts.map +1 -0
- package/dist/state/repositories/__tests__/repositories.test.js +162 -0
- package/dist/state/repositories/__tests__/repositories.test.js.map +1 -0
- package/dist/state/repositories/agents.d.ts +14 -0
- package/dist/state/repositories/agents.d.ts.map +1 -0
- package/dist/state/repositories/agents.js +52 -0
- package/dist/state/repositories/agents.js.map +1 -0
- package/dist/state/repositories/events.d.ts +10 -0
- package/dist/state/repositories/events.d.ts.map +1 -0
- package/dist/state/repositories/events.js +27 -0
- package/dist/state/repositories/events.js.map +1 -0
- package/dist/state/repositories/messages.d.ts +15 -0
- package/dist/state/repositories/messages.d.ts.map +1 -0
- package/dist/state/repositories/messages.js +19 -0
- package/dist/state/repositories/messages.js.map +1 -0
- package/dist/state/repositories/pull-requests.d.ts +25 -0
- package/dist/state/repositories/pull-requests.d.ts.map +1 -0
- package/dist/state/repositories/pull-requests.js +40 -0
- package/dist/state/repositories/pull-requests.js.map +1 -0
- package/dist/state/repositories/sessions.d.ts +13 -0
- package/dist/state/repositories/sessions.d.ts.map +1 -0
- package/dist/state/repositories/sessions.js +41 -0
- package/dist/state/repositories/sessions.js.map +1 -0
- package/dist/state/repositories/sprints.d.ts +19 -0
- package/dist/state/repositories/sprints.d.ts.map +1 -0
- package/dist/state/repositories/sprints.js +26 -0
- package/dist/state/repositories/sprints.js.map +1 -0
- package/dist/state/repositories/tasks.d.ts +26 -0
- package/dist/state/repositories/tasks.d.ts.map +1 -0
- package/dist/state/repositories/tasks.js +43 -0
- package/dist/state/repositories/tasks.js.map +1 -0
- package/dist/types/__tests__/types.test.d.ts +2 -0
- package/dist/types/__tests__/types.test.d.ts.map +1 -0
- package/dist/types/__tests__/types.test.js +70 -0
- package/dist/types/__tests__/types.test.js.map +1 -0
- package/dist/types/index.d.ts +198 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +65 -0
- package/src/web/dist/assets/BufferResource-rnljfCCz.js +185 -0
- package/src/web/dist/assets/CanvasRenderer-BvTI2UTL.js +1 -0
- package/src/web/dist/assets/Filter-BzO9QkkB.js +1 -0
- package/src/web/dist/assets/RenderTargetSystem-CKlnKfTJ.js +172 -0
- package/src/web/dist/assets/WebGLRenderer-B5LAM4bk.js +156 -0
- package/src/web/dist/assets/WebGPURenderer-FkK3p3f4.js +41 -0
- package/src/web/dist/assets/browserAll-CDpBxY6s.js +14 -0
- package/src/web/dist/assets/index-B3XZpovA.js +298 -0
- package/src/web/dist/assets/index-BcX-h_hs.css +1 -0
- package/src/web/dist/assets/webworkerAll-B9AvsPZH.js +83 -0
- package/src/web/dist/index.html +18 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.doctorChecks = doctorChecks;
|
|
7
|
+
exports.doctorCommand = doctorCommand;
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
function doctorChecks() {
|
|
12
|
+
const checks = [];
|
|
13
|
+
// Node.js version
|
|
14
|
+
const nodeVersion = process.version;
|
|
15
|
+
const major = parseInt(nodeVersion.slice(1));
|
|
16
|
+
checks.push({
|
|
17
|
+
name: 'Node.js',
|
|
18
|
+
status: major >= 18 ? 'pass' : 'fail',
|
|
19
|
+
message: `${nodeVersion} ${major >= 18 ? '(OK)' : '(requires >= 18)'}`,
|
|
20
|
+
});
|
|
21
|
+
// Git
|
|
22
|
+
try {
|
|
23
|
+
const gitVersion = (0, child_process_1.execSync)('git --version', { stdio: 'pipe', timeout: 3000 }).toString().trim();
|
|
24
|
+
checks.push({ name: 'Git', status: 'pass', message: gitVersion });
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
checks.push({ name: 'Git', status: 'fail', message: 'Not found' });
|
|
28
|
+
}
|
|
29
|
+
// Claude Code CLI
|
|
30
|
+
try {
|
|
31
|
+
(0, child_process_1.execSync)('claude --version', { stdio: 'pipe', timeout: 2000 });
|
|
32
|
+
checks.push({ name: 'Claude Code', status: 'pass', message: 'Installed' });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
checks.push({ name: 'Claude Code', status: 'fail', message: 'Not found. Install: npm i -g @anthropic-ai/claude-code' });
|
|
36
|
+
}
|
|
37
|
+
// API Key
|
|
38
|
+
const hasEnvKey = !!process.env.ANTHROPIC_API_KEY;
|
|
39
|
+
const hasConfigKey = fs_1.default.existsSync('.sage-team/config.json') &&
|
|
40
|
+
!!JSON.parse(fs_1.default.readFileSync('.sage-team/config.json', 'utf-8')).apiKey;
|
|
41
|
+
checks.push({
|
|
42
|
+
name: 'API Key',
|
|
43
|
+
status: hasEnvKey || hasConfigKey ? 'pass' : 'warn',
|
|
44
|
+
message: hasEnvKey ? 'Set via ANTHROPIC_API_KEY' : hasConfigKey ? 'Set in config' : 'Not set',
|
|
45
|
+
});
|
|
46
|
+
// Sage Team init
|
|
47
|
+
checks.push({
|
|
48
|
+
name: 'Initialized',
|
|
49
|
+
status: fs_1.default.existsSync('.sage-team') ? 'pass' : 'warn',
|
|
50
|
+
message: fs_1.default.existsSync('.sage-team') ? '.sage-team/ exists' : 'Run: sage-team init',
|
|
51
|
+
});
|
|
52
|
+
return checks;
|
|
53
|
+
}
|
|
54
|
+
function doctorCommand() {
|
|
55
|
+
return new commander_1.Command('doctor')
|
|
56
|
+
.description('Check system health and dependencies')
|
|
57
|
+
.action(() => {
|
|
58
|
+
const checks = doctorChecks();
|
|
59
|
+
console.log('Sage Team Health Check\n');
|
|
60
|
+
for (const check of checks) {
|
|
61
|
+
const icon = check.status === 'pass' ? '✅' : check.status === 'warn' ? '⚠️' : '❌';
|
|
62
|
+
console.log(`${icon} ${check.name}: ${check.message}`);
|
|
63
|
+
}
|
|
64
|
+
const failures = checks.filter(c => c.status === 'fail');
|
|
65
|
+
if (failures.length > 0) {
|
|
66
|
+
console.log(`\n${failures.length} issue(s) found.`);
|
|
67
|
+
process.exitCode = 1;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log('\nAll good!');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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,CAsDrC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.initCommand = initCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
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
|
+
};
|
|
18
|
+
function initCommand() {
|
|
19
|
+
return new commander_1.Command('init')
|
|
20
|
+
.description('Initialize Sage Team in current directory')
|
|
21
|
+
.option('--api-key <key>', 'Anthropic API key')
|
|
22
|
+
.option('--company-name <name>', 'Company name')
|
|
23
|
+
.option('--autonomy <mode>', 'Autonomy mode: sandbox|direct|supervised', 'sandbox')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
const sageDir = '.sage-team';
|
|
26
|
+
const configPath = path_1.default.join(sageDir, 'config.json');
|
|
27
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
28
|
+
console.log('Sage Team already initialized in this directory.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Create directory structure
|
|
32
|
+
fs_1.default.mkdirSync(path_1.default.join(sageDir, 'worktrees'), { recursive: true });
|
|
33
|
+
// Build config
|
|
34
|
+
const config = { ...DEFAULT_CONFIG };
|
|
35
|
+
if (options.apiKey)
|
|
36
|
+
config.apiKey = options.apiKey;
|
|
37
|
+
if (options.companyName)
|
|
38
|
+
config.companyName = options.companyName;
|
|
39
|
+
if (options.autonomy)
|
|
40
|
+
config.autonomyMode = options.autonomy;
|
|
41
|
+
// Check env var
|
|
42
|
+
if (!config.apiKey && process.env.ANTHROPIC_API_KEY) {
|
|
43
|
+
config.apiKey = process.env.ANTHROPIC_API_KEY;
|
|
44
|
+
}
|
|
45
|
+
// Write config
|
|
46
|
+
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);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
fs_1.default.writeFileSync(gitignorePath, gitignoreEntry);
|
|
58
|
+
}
|
|
59
|
+
console.log('Sage Team initialized successfully!');
|
|
60
|
+
console.log(` Config: ${sageDir}/config.json`);
|
|
61
|
+
console.log(` Mode: ${config.autonomyMode}`);
|
|
62
|
+
if (!config.apiKey) {
|
|
63
|
+
console.log('\n Warning: No API key set. Run: sage-team config --api-key <key>');
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,WAAW,IAAI,OAAO,CA2CrC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logsCommand = logsCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const database_1 = require("../../state/database");
|
|
10
|
+
const sessions_1 = require("../../state/repositories/sessions");
|
|
11
|
+
const events_1 = require("../../state/repositories/events");
|
|
12
|
+
function logsCommand() {
|
|
13
|
+
return new commander_1.Command('logs')
|
|
14
|
+
.description('View activity log')
|
|
15
|
+
.option('--agent <id>', 'Filter by agent ID')
|
|
16
|
+
.option('-n, --lines <n>', 'Number of events', '50')
|
|
17
|
+
.action((options) => {
|
|
18
|
+
const dbPath = '.sage-team/state.db';
|
|
19
|
+
if (!fs_1.default.existsSync(dbPath)) {
|
|
20
|
+
console.log('No session data. Run: sage-team start --goal "..."');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const db = new database_1.Database(dbPath);
|
|
24
|
+
const sessions = new sessions_1.SessionsRepo(db);
|
|
25
|
+
const events = new events_1.EventsRepo(db);
|
|
26
|
+
const session = sessions.findLatestActive();
|
|
27
|
+
if (!session) {
|
|
28
|
+
console.log('No active session.');
|
|
29
|
+
db.close();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const limit = parseInt(options.lines);
|
|
33
|
+
let allEvents = events.findBySession(session.id, limit);
|
|
34
|
+
if (options.agent) {
|
|
35
|
+
allEvents = allEvents.filter((e) => e.agent_id === options.agent);
|
|
36
|
+
}
|
|
37
|
+
if (allEvents.length === 0) {
|
|
38
|
+
console.log('No events found.');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
for (const event of allEvents.reverse()) {
|
|
42
|
+
const agent = event.agent_id ? `[${event.agent_id}]` : '[system]';
|
|
43
|
+
const data = event.data ? JSON.parse(event.data) : {};
|
|
44
|
+
const msg = data.message || data.status || event.type;
|
|
45
|
+
console.log(`${event.timestamp} ${agent} ${msg}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
db.close();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":";;;;;AAMA,kCA2CC;AAjDD,yCAAoC;AACpC,4CAAoB;AACpB,mDAAgD;AAChD,gEAAiE;AACjE,4DAA6D;AAE7D,SAAgB,WAAW;IACzB,OAAO,IAAI,mBAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC;SAC5C,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACnD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,mBAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,uBAAY,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,mBAAU,CAAC,EAAE,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAExD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;gBAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,aAAa,IAAI,OAAO,CAqEvC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.resumeCommand = resumeCommand;
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const fs_1 = __importDefault(require("fs"));
|
|
42
|
+
const database_1 = require("../../state/database");
|
|
43
|
+
const sessions_1 = require("../../state/repositories/sessions");
|
|
44
|
+
const orchestrator_1 = require("../../engine/orchestrator");
|
|
45
|
+
function resumeCommand() {
|
|
46
|
+
return new commander_1.Command('resume')
|
|
47
|
+
.description('Resume the last active session')
|
|
48
|
+
.option('--session <id>', 'Specific session ID to resume')
|
|
49
|
+
.option('--port <port>', 'Server port', '3000')
|
|
50
|
+
.action(async (options) => {
|
|
51
|
+
const configPath = '.sage-team/config.json';
|
|
52
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
53
|
+
console.error('Sage Team not initialized. Run: sage-team init');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const config = JSON.parse(fs_1.default.readFileSync(configPath, 'utf-8'));
|
|
57
|
+
const apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
58
|
+
const db = new database_1.Database('.sage-team/state.db');
|
|
59
|
+
// Find session to resume
|
|
60
|
+
let sessionId = options.session;
|
|
61
|
+
if (!sessionId) {
|
|
62
|
+
const repo = new sessions_1.SessionsRepo(db);
|
|
63
|
+
const latest = repo.findLatestActive();
|
|
64
|
+
if (!latest) {
|
|
65
|
+
console.error('No active session found. Run: sage-team start --goal "..."');
|
|
66
|
+
db.close();
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
sessionId = latest.id;
|
|
70
|
+
}
|
|
71
|
+
const orchestrator = new orchestrator_1.Orchestrator(db, {
|
|
72
|
+
apiKey,
|
|
73
|
+
model: config.model,
|
|
74
|
+
maxConcurrentAgents: config.maxConcurrentAgents,
|
|
75
|
+
autonomyMode: config.autonomyMode,
|
|
76
|
+
companyName: config.companyName,
|
|
77
|
+
mission: config.mission,
|
|
78
|
+
});
|
|
79
|
+
const success = orchestrator.resume(sessionId);
|
|
80
|
+
if (!success) {
|
|
81
|
+
console.error(`Session ${sessionId} not found.`);
|
|
82
|
+
db.close();
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const agents = orchestrator.getAgents();
|
|
86
|
+
const tasks = orchestrator.getTasks();
|
|
87
|
+
const pendingPRs = orchestrator.getPendingPRs();
|
|
88
|
+
console.log(`Resuming session ${sessionId}...`);
|
|
89
|
+
console.log(` Agents: ${agents.length}`);
|
|
90
|
+
console.log(` Tasks: ${tasks.length} (${tasks.filter((t) => t.status === 'completed').length} completed)`);
|
|
91
|
+
if (pendingPRs.length > 0) {
|
|
92
|
+
console.log(` Pending PRs: ${pendingPRs.length}`);
|
|
93
|
+
}
|
|
94
|
+
// Start server
|
|
95
|
+
const { createServer } = await Promise.resolve().then(() => __importStar(require('../../server/index')));
|
|
96
|
+
const port = parseInt(options.port);
|
|
97
|
+
createServer(orchestrator, port);
|
|
98
|
+
console.log(`Office running at http://localhost:${port}`);
|
|
99
|
+
process.on('SIGINT', () => {
|
|
100
|
+
orchestrator.stop();
|
|
101
|
+
db.close();
|
|
102
|
+
process.exit(0);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/cli/commands/resume.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,YAAY,IAAI,OAAO,CAiEtC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.startCommand = startCommand;
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const fs_1 = __importDefault(require("fs"));
|
|
42
|
+
const database_1 = require("../../state/database");
|
|
43
|
+
const orchestrator_1 = require("../../engine/orchestrator");
|
|
44
|
+
function startCommand() {
|
|
45
|
+
return new commander_1.Command('start')
|
|
46
|
+
.description('Start Sage Team office and agents')
|
|
47
|
+
.option('--goal <goal>', 'Initial goal to decompose')
|
|
48
|
+
.option('--no-browser', 'Skip opening browser')
|
|
49
|
+
.option('--port <port>', 'Server port', '3000')
|
|
50
|
+
.action(async (options) => {
|
|
51
|
+
const configPath = '.sage-team/config.json';
|
|
52
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
53
|
+
console.error('Sage Team not initialized. Run: sage-team init');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const config = JSON.parse(fs_1.default.readFileSync(configPath, 'utf-8'));
|
|
57
|
+
if (!config.apiKey && !process.env.ANTHROPIC_API_KEY) {
|
|
58
|
+
console.error('No API key. Set ANTHROPIC_API_KEY or run: sage-team config --api-key <key>');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
const apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
62
|
+
const db = new database_1.Database('.sage-team/state.db');
|
|
63
|
+
const orchestrator = new orchestrator_1.Orchestrator(db, {
|
|
64
|
+
apiKey,
|
|
65
|
+
model: config.model,
|
|
66
|
+
maxConcurrentAgents: config.maxConcurrentAgents,
|
|
67
|
+
autonomyMode: config.autonomyMode,
|
|
68
|
+
companyName: config.companyName,
|
|
69
|
+
mission: config.mission,
|
|
70
|
+
});
|
|
71
|
+
// Start session
|
|
72
|
+
const session = orchestrator.start(options.goal);
|
|
73
|
+
console.log(`Session: ${session.id}`);
|
|
74
|
+
if (options.goal) {
|
|
75
|
+
console.log(`Goal: ${options.goal}`);
|
|
76
|
+
console.log('CEO is decomposing the goal...');
|
|
77
|
+
}
|
|
78
|
+
// Start server (lazy import to avoid loading express when not needed)
|
|
79
|
+
const { createServer } = await Promise.resolve().then(() => __importStar(require('../../server/index')));
|
|
80
|
+
const port = parseInt(options.port);
|
|
81
|
+
const server = createServer(orchestrator, port);
|
|
82
|
+
// Open browser
|
|
83
|
+
if (options.browser !== false) {
|
|
84
|
+
try {
|
|
85
|
+
const open = (await Promise.resolve().then(() => __importStar(require('open')))).default;
|
|
86
|
+
await open(`http://localhost:${port}`);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
console.log(`Open browser: http://localhost:${port}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.log(`Office running at http://localhost:${port}`);
|
|
93
|
+
console.log('Press Ctrl+C to stop.');
|
|
94
|
+
// Graceful shutdown
|
|
95
|
+
process.on('SIGINT', () => {
|
|
96
|
+
console.log('\nShutting down...');
|
|
97
|
+
orchestrator.stop();
|
|
98
|
+
db.close();
|
|
99
|
+
process.exit(0);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oCAiEC;AAvED,yCAAoC;AACpC,4CAAoB;AAEpB,mDAAgD;AAChD,4DAAyD;AAEzD,SAAgB,YAAY;IAC1B,OAAO,IAAI,mBAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC;SAC9C,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,UAAU,GAAG,wBAAwB,CAAC;QAC5C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,MAAM,EAAE,GAAG,IAAI,mBAAQ,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,EAAE,EAAE;YACxC,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAED,sEAAsE;QACtE,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAEhD,eAAe;QACf,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,wDAAa,MAAM,GAAC,CAAC,CAAC,OAAO,CAAC;gBAC5C,MAAM,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAErC,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,YAAY,CAAC,IAAI,EAAE,CAAC;YACpB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,aAAa,IAAI,OAAO,CAqDvC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.statusCommand = statusCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const database_1 = require("../../state/database");
|
|
10
|
+
const sessions_1 = require("../../state/repositories/sessions");
|
|
11
|
+
const tasks_1 = require("../../state/repositories/tasks");
|
|
12
|
+
const sprints_1 = require("../../state/repositories/sprints");
|
|
13
|
+
const pull_requests_1 = require("../../state/repositories/pull-requests");
|
|
14
|
+
function statusCommand() {
|
|
15
|
+
return new commander_1.Command('status')
|
|
16
|
+
.description('Show sprint progress and pending PRs')
|
|
17
|
+
.action(() => {
|
|
18
|
+
const dbPath = '.sage-team/state.db';
|
|
19
|
+
if (!fs_1.default.existsSync(dbPath)) {
|
|
20
|
+
console.log('No active session. Run: sage-team start --goal "..."');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const db = new database_1.Database(dbPath);
|
|
24
|
+
const sessions = new sessions_1.SessionsRepo(db);
|
|
25
|
+
const tasks = new tasks_1.TasksRepo(db);
|
|
26
|
+
const sprints = new sprints_1.SprintsRepo(db);
|
|
27
|
+
const prs = new pull_requests_1.PullRequestsRepo(db);
|
|
28
|
+
const session = sessions.findLatestActive();
|
|
29
|
+
if (!session) {
|
|
30
|
+
console.log('No active session.');
|
|
31
|
+
db.close();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
console.log(`Session: ${session.id}`);
|
|
35
|
+
console.log(`Goal: ${session.goal}`);
|
|
36
|
+
const sprint = sprints.findActive(session.id);
|
|
37
|
+
if (sprint) {
|
|
38
|
+
console.log(`\nSprint: ${sprint.name}`);
|
|
39
|
+
}
|
|
40
|
+
const allTasks = tasks.findBySession(session.id);
|
|
41
|
+
const completed = allTasks.filter((t) => t.status === 'completed');
|
|
42
|
+
const inProgress = allTasks.filter((t) => t.status === 'in_progress');
|
|
43
|
+
const pending = allTasks.filter((t) => t.status === 'pending');
|
|
44
|
+
const failed = allTasks.filter((t) => t.status === 'failed');
|
|
45
|
+
console.log(`\nTasks: ${allTasks.length} total`);
|
|
46
|
+
if (completed.length)
|
|
47
|
+
console.log(` ✅ ${completed.length} completed`);
|
|
48
|
+
if (inProgress.length)
|
|
49
|
+
console.log(` 🔄 ${inProgress.length} in progress`);
|
|
50
|
+
if (pending.length)
|
|
51
|
+
console.log(` ⏳ ${pending.length} pending`);
|
|
52
|
+
if (failed.length)
|
|
53
|
+
console.log(` ❌ ${failed.length} failed`);
|
|
54
|
+
const pendingPRs = prs.findPending(session.id);
|
|
55
|
+
if (pendingPRs.length > 0) {
|
|
56
|
+
console.log(`\nPending PRs: ${pendingPRs.length}`);
|
|
57
|
+
for (const pr of pendingPRs) {
|
|
58
|
+
console.log(` ${pr.branch} (${pr.status})`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
db.close();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED,wBAAgB,WAAW,IAAI,OAAO,CAOrC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatTeamRoster = formatTeamRoster;
|
|
4
|
+
exports.teamCommand = teamCommand;
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const personas_1 = require("../../agents/personas");
|
|
7
|
+
const skills_map_1 = require("../../agents/skills-map");
|
|
8
|
+
function formatTeamRoster(agentId) {
|
|
9
|
+
const agents = agentId
|
|
10
|
+
? personas_1.PERSONAS.filter(p => p.id === agentId)
|
|
11
|
+
: personas_1.PERSONAS;
|
|
12
|
+
if (agents.length === 0)
|
|
13
|
+
return `Agent "${agentId}" not found.`;
|
|
14
|
+
return agents.map(p => {
|
|
15
|
+
const skills = skills_map_1.AGENT_SKILLS[p.id] || [];
|
|
16
|
+
const skillStr = skills.map(s => ` ${s}`).join('\n');
|
|
17
|
+
return `${p.emoji} ${p.name} (${p.id})
|
|
18
|
+
Role: ${p.role}
|
|
19
|
+
Room: ${p.defaultRoom}
|
|
20
|
+
Color: ${p.color}
|
|
21
|
+
Skills:
|
|
22
|
+
${skillStr}`;
|
|
23
|
+
}).join('\n\n');
|
|
24
|
+
}
|
|
25
|
+
function teamCommand() {
|
|
26
|
+
return new commander_1.Command('team')
|
|
27
|
+
.description('Show team roster and skills')
|
|
28
|
+
.option('--agent <id>', 'Show details for specific agent')
|
|
29
|
+
.action((options) => {
|
|
30
|
+
console.log(formatTeamRoster(options.agent));
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../../src/cli/commands/team.ts"],"names":[],"mappings":";;AAIA,4CAiBC;AAED,kCAOC;AA9BD,yCAAoC;AACpC,oDAAiD;AACjD,wDAAuD;AAEvD,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,MAAM,GAAG,OAAO;QACpB,CAAC,CAAC,mBAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;QACxC,CAAC,CAAC,mBAAQ,CAAC;IAEb,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,OAAO,cAAc,CAAC;IAEhE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,MAAM,GAAG,yBAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;UAC9B,CAAC,CAAC,IAAI;UACN,CAAC,CAAC,WAAW;WACZ,CAAC,CAAC,KAAK;;EAEhB,QAAQ,EAAE,CAAC;IACX,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,IAAI,mBAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC;SACzD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAClB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,YAAY,IAAI,OAAO,CAkBtC"}
|