Files
Gnuboard7/docs/ai-tools/agents/src/index.ts
T
2026-04-01 10:30:52 +09:00

86 lines
2.0 KiB
TypeScript

/**
* 그누보드7 Multi-Agent System
* AI Agent SDK 기반 멀티에이전트 협업 시스템
*/
import 'dotenv/config';
import { runCli } from './cli.js';
import type { CliOptions, WorkflowType } from './types/index.js';
async function main(): Promise<void> {
const args = process.argv.slice(2);
// 인수 파싱
const options = parseArgs(args);
// CLI 실행
await runCli(options);
}
/**
* 명령줄 인수 파싱
*/
function parseArgs(args: string[]): CliOptions {
// 기본값
const options: CliOptions = {
mode: 'interactive',
};
if (args.length === 0) {
return options;
}
const mode = args[0];
// 모드 확인
if (mode === 'interactive') {
options.mode = 'interactive';
return options;
}
if (mode === 'single') {
options.mode = 'single';
// 워크플로우 옵션 확인
const workflowIndex = args.indexOf('--workflow');
if (workflowIndex !== -1 && args[workflowIndex + 1]) {
options.workflow = args[workflowIndex + 1] as WorkflowType;
// 워크플로우 옵션 제거
args.splice(workflowIndex, 2);
}
// 나머지를 프롬프트로 사용
options.prompt = args.slice(1).join(' ');
return options;
}
// 단축 워크플로우 명령어
if (mode === 'feature' || mode === 'bugfix' || mode === 'pr-review') {
options.mode = 'single';
options.workflow = mode as WorkflowType;
options.prompt = args.slice(1).join(' ');
return options;
}
// 기본: 단일 모드로 전체 인수를 프롬프트로 사용
options.mode = 'single';
options.prompt = args.join(' ');
return options;
}
// 에러 핸들링
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection:', reason);
process.exit(1);
});
process.on('uncaughtException', (error) => {
console.error('Uncaught Exception:', error);
process.exit(1);
});
// 실행
main().catch((error) => {
console.error('Fatal error:', error);
process.exit(1);
});