프로젝트 소개

cb365는 Microsoft 365 서비스에 명령줄로 접근할 수 있게 하며, 사용자 지정 Graph API 애플리케이션을 작성하거나 UI에서 수동으로 상호작용하는 것의 대안입니다. 작업 생성, 메일 발송, 캘린더 관리, Teams 게시, SharePoint, OneDrive, Planner, Loop와의 상호작용 같은 작업을 자동화할 수 있습니다. 이 도구는 구조화된 JSON 출력을 제공하므로 스크립트와 AI 에이전트가 소비하기에 적합합니다. 주요 기능과 대상 사용자는 다음과 같습니다. - DevOps 및 플랫폼 지니어: CI에서 작업을 생성하거나 빌드 결과를 Teams에 게시하는 등 M365 작업을 스크립팅할 때 사용합니다. - AI 에이전트 빌더: 자율 워크플로를 위해 --json 출력과 안전 플래그를 두에 두고 설계되었습니다. - IT 관리자: Graph API 작업을 위한 PowerShell의 CLI 대안입니다. - 개발자: 일반적인 M365 작업을 위해 반복적인 Graph SDK 코드를 줄여줍니다. cb365는 Microsoft Graph API를 감싸며 다음과 같은 복잡성을 처리합니다. - 인증: 디바이스 코드, 클라이언트 자격 증명, 인증서 흐름을 지원하고 토큰을 OS 키체인에 안전하게 저장합니다. - 안전: 44개의 하드코딩된 규칙을 포함하며, 삭제에는 --force를, 브로드캐스트에는 --confirm을 요구하고, 모든 쓰기 작업에 --dry-run을 사용할 수 있습니다. 토큰은 출력에 절대 노출되지 않습니다. - 출력: --json, --plain(TSV), 사람이 읽을 수 있는 표 형식을 제공하며 파이프라인 통합을 위해 설계되었습니다. - 프로필: 위임된 인증과 전용 인증을 나란히 관리하여 테넌트 전환을 쉽게 합니다. - 종속성 없음: 타임 요구 사항이 없는 단일 Go 바이너리입니다. 설치는 go install 또는 미리 빌드된 리스 바이너리로 할 수 있습니다. 사용자는 Entra ID 앱을 등록하고 필요한 API 권한을 구성해야 합니다. 인증은 대화형 사용을 위한 위임된 방식(디바이스 코드)과 무인 자동화를 위한 앱 전용 방식(클라이언트 암호 또는 인증서)을 지원하며, 보안을 위해 클라이언트 암호는 표준 입력에서만 허용됩니다. 다양한 M365 워크로드에 대한 명령을 사용할 수 있습니다. - Auth: 로그인, 상태, 로그아웃, 프로필 관리. - To Do: 작업 목록과 작업을 나열, 생성, 업데이트, 완료, 삭제합니다. - Mail: 메시지를 나열, 가져오기, 읽음 표시, 이동, 영구 삭제, 초안 작성, 보내기, 검색합니다. - Calendar: 이벤트를 나열, 가져오기, 생성, 업데이트, 삭제합니다. - Contacts: 연락처를 나열, 가져오기, 검색, 생성, 업데이트합니다. - Planner: 계획을 나열, 생성하고 버킷과 작업을 관리합니다. - Teams: 채널을 나열하고, 채널과 채팅에 메시지를 보내며, 채널 메시지를 소프트 삭제합니다. - SharePoint: 사이트를 나열/검색하고, 사이트 세부 정보를 가져오며, 목록과 목록 항목을 관리하고, 파일을 관리(나열, 가져오기, 업로드)합니다. - OneDrive: 파일을 나열, 가져오기, 업로드, 제하고 폴더를 생성합니다. - Loop: 작업 영역과 페이지를 나열하고, 페이지를 다운로드/내보내기, 제하며, 파일을 업로드하고 더를 생성합니다. 전역 플래그에는 --json, --plain, --profile, --dry-run, --verbose가 있습니다. 이 도구는 파일이나 표준 입력에서 간접 값을 지원하여 비즈니스 텐츠를 프로세스 인수에 남기지 않는 것을 강조합니다. 안전 규칙은 하드코딩되어 있으며 쓰기 보호, 캘린더 관련 규칙(예: 시간대 검증, 중복 감지, 참석자 수 보호), 메일 안전(예: 보내기에 --confirm, 수신자 수 보호), 토큰 안전(보안 저장, 출력 노출 없음)을 다룹니다. AI 에이전트 통합을 위해 --json 출력은 구조화된 데이터를 제공합니다. 에이전트는 M365 콘텐츠를 신뢰할 수 없는 데이터로 취급하고, 명령에 대해 명시적 허용 목록을 사용하며, 부작용에 대해 확인 플래그를 사용하도록 권장됩니다. 오류 처리는 표준 Unix 종료 코드를 사용하고 오류는 stderr에 출력됩니다.