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.
Files changed (178) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +180 -0
  3. package/dist/agents/__tests__/personas.test.d.ts +2 -0
  4. package/dist/agents/__tests__/personas.test.d.ts.map +1 -0
  5. package/dist/agents/__tests__/personas.test.js +47 -0
  6. package/dist/agents/__tests__/personas.test.js.map +1 -0
  7. package/dist/agents/personas.d.ts +3 -0
  8. package/dist/agents/personas.d.ts.map +1 -0
  9. package/dist/agents/personas.js +127 -0
  10. package/dist/agents/personas.js.map +1 -0
  11. package/dist/agents/skills-map.d.ts +7 -0
  12. package/dist/agents/skills-map.d.ts.map +1 -0
  13. package/dist/agents/skills-map.js +55 -0
  14. package/dist/agents/skills-map.js.map +1 -0
  15. package/dist/cli/__tests__/cli.test.d.ts +2 -0
  16. package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
  17. package/dist/cli/__tests__/cli.test.js +65 -0
  18. package/dist/cli/__tests__/cli.test.js.map +1 -0
  19. package/dist/cli/commands/config.d.ts +3 -0
  20. package/dist/cli/commands/config.d.ts.map +1 -0
  21. package/dist/cli/commands/config.js +50 -0
  22. package/dist/cli/commands/config.js.map +1 -0
  23. package/dist/cli/commands/doctor.d.ts +9 -0
  24. package/dist/cli/commands/doctor.d.ts.map +1 -0
  25. package/dist/cli/commands/doctor.js +74 -0
  26. package/dist/cli/commands/doctor.js.map +1 -0
  27. package/dist/cli/commands/init.d.ts +3 -0
  28. package/dist/cli/commands/init.d.ts.map +1 -0
  29. package/dist/cli/commands/init.js +67 -0
  30. package/dist/cli/commands/init.js.map +1 -0
  31. package/dist/cli/commands/logs.d.ts +3 -0
  32. package/dist/cli/commands/logs.d.ts.map +1 -0
  33. package/dist/cli/commands/logs.js +51 -0
  34. package/dist/cli/commands/logs.js.map +1 -0
  35. package/dist/cli/commands/resume.d.ts +3 -0
  36. package/dist/cli/commands/resume.d.ts.map +1 -0
  37. package/dist/cli/commands/resume.js +106 -0
  38. package/dist/cli/commands/resume.js.map +1 -0
  39. package/dist/cli/commands/start.d.ts +3 -0
  40. package/dist/cli/commands/start.d.ts.map +1 -0
  41. package/dist/cli/commands/start.js +103 -0
  42. package/dist/cli/commands/start.js.map +1 -0
  43. package/dist/cli/commands/status.d.ts +3 -0
  44. package/dist/cli/commands/status.d.ts.map +1 -0
  45. package/dist/cli/commands/status.js +64 -0
  46. package/dist/cli/commands/status.js.map +1 -0
  47. package/dist/cli/commands/team.d.ts +4 -0
  48. package/dist/cli/commands/team.d.ts.map +1 -0
  49. package/dist/cli/commands/team.js +33 -0
  50. package/dist/cli/commands/team.js.map +1 -0
  51. package/dist/cli/index.d.ts +4 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +35 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/cli/splash.d.ts +2 -0
  56. package/dist/cli/splash.d.ts.map +1 -0
  57. package/dist/cli/splash.js +20 -0
  58. package/dist/cli/splash.js.map +1 -0
  59. package/dist/engine/__tests__/ceo-brain.test.d.ts +2 -0
  60. package/dist/engine/__tests__/ceo-brain.test.d.ts.map +1 -0
  61. package/dist/engine/__tests__/ceo-brain.test.js +57 -0
  62. package/dist/engine/__tests__/ceo-brain.test.js.map +1 -0
  63. package/dist/engine/__tests__/dispatcher.test.d.ts +2 -0
  64. package/dist/engine/__tests__/dispatcher.test.d.ts.map +1 -0
  65. package/dist/engine/__tests__/dispatcher.test.js +60 -0
  66. package/dist/engine/__tests__/dispatcher.test.js.map +1 -0
  67. package/dist/engine/__tests__/orchestrator.test.d.ts +2 -0
  68. package/dist/engine/__tests__/orchestrator.test.d.ts.map +1 -0
  69. package/dist/engine/__tests__/orchestrator.test.js +83 -0
  70. package/dist/engine/__tests__/orchestrator.test.js.map +1 -0
  71. package/dist/engine/__tests__/pr-manager.test.d.ts +2 -0
  72. package/dist/engine/__tests__/pr-manager.test.d.ts.map +1 -0
  73. package/dist/engine/__tests__/pr-manager.test.js +44 -0
  74. package/dist/engine/__tests__/pr-manager.test.js.map +1 -0
  75. package/dist/engine/__tests__/prompt-builder.test.d.ts +2 -0
  76. package/dist/engine/__tests__/prompt-builder.test.d.ts.map +1 -0
  77. package/dist/engine/__tests__/prompt-builder.test.js +42 -0
  78. package/dist/engine/__tests__/prompt-builder.test.js.map +1 -0
  79. package/dist/engine/ceo-brain.d.ts +33 -0
  80. package/dist/engine/ceo-brain.d.ts.map +1 -0
  81. package/dist/engine/ceo-brain.js +94 -0
  82. package/dist/engine/ceo-brain.js.map +1 -0
  83. package/dist/engine/dispatcher.d.ts +40 -0
  84. package/dist/engine/dispatcher.d.ts.map +1 -0
  85. package/dist/engine/dispatcher.js +125 -0
  86. package/dist/engine/dispatcher.js.map +1 -0
  87. package/dist/engine/orchestrator.d.ts +49 -0
  88. package/dist/engine/orchestrator.d.ts.map +1 -0
  89. package/dist/engine/orchestrator.js +303 -0
  90. package/dist/engine/orchestrator.js.map +1 -0
  91. package/dist/engine/pr-manager.d.ts +14 -0
  92. package/dist/engine/pr-manager.d.ts.map +1 -0
  93. package/dist/engine/pr-manager.js +67 -0
  94. package/dist/engine/pr-manager.js.map +1 -0
  95. package/dist/engine/prompt-builder.d.ts +27 -0
  96. package/dist/engine/prompt-builder.d.ts.map +1 -0
  97. package/dist/engine/prompt-builder.js +73 -0
  98. package/dist/engine/prompt-builder.js.map +1 -0
  99. package/dist/server/__tests__/server.test.d.ts +2 -0
  100. package/dist/server/__tests__/server.test.d.ts.map +1 -0
  101. package/dist/server/__tests__/server.test.js +87 -0
  102. package/dist/server/__tests__/server.test.js.map +1 -0
  103. package/dist/server/index.d.ts +4 -0
  104. package/dist/server/index.d.ts.map +1 -0
  105. package/dist/server/index.js +72 -0
  106. package/dist/server/index.js.map +1 -0
  107. package/dist/server/routes/api.d.ts +4 -0
  108. package/dist/server/routes/api.d.ts.map +1 -0
  109. package/dist/server/routes/api.js +60 -0
  110. package/dist/server/routes/api.js.map +1 -0
  111. package/dist/skills/__tests__/loader.test.d.ts +2 -0
  112. package/dist/skills/__tests__/loader.test.d.ts.map +1 -0
  113. package/dist/skills/__tests__/loader.test.js +50 -0
  114. package/dist/skills/__tests__/loader.test.js.map +1 -0
  115. package/dist/skills/loader.d.ts +21 -0
  116. package/dist/skills/loader.d.ts.map +1 -0
  117. package/dist/skills/loader.js +190 -0
  118. package/dist/skills/loader.js.map +1 -0
  119. package/dist/state/__tests__/database.test.d.ts +2 -0
  120. package/dist/state/__tests__/database.test.d.ts.map +1 -0
  121. package/dist/state/__tests__/database.test.js +50 -0
  122. package/dist/state/__tests__/database.test.js.map +1 -0
  123. package/dist/state/database.d.ts +14 -0
  124. package/dist/state/database.d.ts.map +1 -0
  125. package/dist/state/database.js +164 -0
  126. package/dist/state/database.js.map +1 -0
  127. package/dist/state/repositories/__tests__/repositories.test.d.ts +2 -0
  128. package/dist/state/repositories/__tests__/repositories.test.d.ts.map +1 -0
  129. package/dist/state/repositories/__tests__/repositories.test.js +162 -0
  130. package/dist/state/repositories/__tests__/repositories.test.js.map +1 -0
  131. package/dist/state/repositories/agents.d.ts +14 -0
  132. package/dist/state/repositories/agents.d.ts.map +1 -0
  133. package/dist/state/repositories/agents.js +52 -0
  134. package/dist/state/repositories/agents.js.map +1 -0
  135. package/dist/state/repositories/events.d.ts +10 -0
  136. package/dist/state/repositories/events.d.ts.map +1 -0
  137. package/dist/state/repositories/events.js +27 -0
  138. package/dist/state/repositories/events.js.map +1 -0
  139. package/dist/state/repositories/messages.d.ts +15 -0
  140. package/dist/state/repositories/messages.d.ts.map +1 -0
  141. package/dist/state/repositories/messages.js +19 -0
  142. package/dist/state/repositories/messages.js.map +1 -0
  143. package/dist/state/repositories/pull-requests.d.ts +25 -0
  144. package/dist/state/repositories/pull-requests.d.ts.map +1 -0
  145. package/dist/state/repositories/pull-requests.js +40 -0
  146. package/dist/state/repositories/pull-requests.js.map +1 -0
  147. package/dist/state/repositories/sessions.d.ts +13 -0
  148. package/dist/state/repositories/sessions.d.ts.map +1 -0
  149. package/dist/state/repositories/sessions.js +41 -0
  150. package/dist/state/repositories/sessions.js.map +1 -0
  151. package/dist/state/repositories/sprints.d.ts +19 -0
  152. package/dist/state/repositories/sprints.d.ts.map +1 -0
  153. package/dist/state/repositories/sprints.js +26 -0
  154. package/dist/state/repositories/sprints.js.map +1 -0
  155. package/dist/state/repositories/tasks.d.ts +26 -0
  156. package/dist/state/repositories/tasks.d.ts.map +1 -0
  157. package/dist/state/repositories/tasks.js +43 -0
  158. package/dist/state/repositories/tasks.js.map +1 -0
  159. package/dist/types/__tests__/types.test.d.ts +2 -0
  160. package/dist/types/__tests__/types.test.d.ts.map +1 -0
  161. package/dist/types/__tests__/types.test.js +70 -0
  162. package/dist/types/__tests__/types.test.js.map +1 -0
  163. package/dist/types/index.d.ts +198 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +3 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/package.json +65 -0
  168. package/src/web/dist/assets/BufferResource-rnljfCCz.js +185 -0
  169. package/src/web/dist/assets/CanvasRenderer-BvTI2UTL.js +1 -0
  170. package/src/web/dist/assets/Filter-BzO9QkkB.js +1 -0
  171. package/src/web/dist/assets/RenderTargetSystem-CKlnKfTJ.js +172 -0
  172. package/src/web/dist/assets/WebGLRenderer-B5LAM4bk.js +156 -0
  173. package/src/web/dist/assets/WebGPURenderer-FkK3p3f4.js +41 -0
  174. package/src/web/dist/assets/browserAll-CDpBxY6s.js +14 -0
  175. package/src/web/dist/assets/index-B3XZpovA.js +298 -0
  176. package/src/web/dist/assets/index-BcX-h_hs.css +1 -0
  177. package/src/web/dist/assets/webworkerAll-B9AvsPZH.js +83 -0
  178. 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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function initCommand(): Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -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":";;;;;AAaA,kCAsDC;AAnED,yCAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AAExB,MAAM,cAAc,GAAG;IACrB,WAAW,EAAE,WAAW;IACxB,OAAO,EAAE,qCAAqC;IAC9C,KAAK,EAAE,0BAA0B;IACjC,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAgB,WAAW;IACzB,OAAO,IAAI,mBAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAC9C,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,EAAE,SAAS,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,YAAY,CAAC;QAE7B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,eAAe;QACf,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACnD,IAAI,OAAO,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAClE,IAAI,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;QAE7D,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAChD,CAAC;QAED,eAAe;QACf,YAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAChC,CAAC;QAEF,oBAAoB;QACpB,MAAM,aAAa,GAAG,YAAY,CAAC;QACnC,MAAM,cAAc,GAAG,8BAA8B,CAAC;QACtD,IAAI,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpC,YAAE,CAAC,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAE,CAAC,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,cAAc,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function logsCommand(): Command;
3
+ //# sourceMappingURL=logs.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function resumeCommand(): Command;
3
+ //# sourceMappingURL=resume.d.ts.map
@@ -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,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function startCommand(): Command;
3
+ //# sourceMappingURL=start.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function statusCommand(): Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -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,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function formatTeamRoster(agentId?: string): string;
3
+ export declare function teamCommand(): Command;
4
+ //# sourceMappingURL=team.d.ts.map
@@ -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,4 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ export declare function buildProgram(): Command;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}