chore: update graph view scale and set workspace default tab to graph view

This commit is contained in:
Antigravity Agent
2026-05-08 00:47:14 +09:00
parent 30f124fdb7
commit c8e983afe7
1720 changed files with 9189 additions and 62873 deletions
@@ -0,0 +1,15 @@
# 🗂️ Secretary 에이전트 — 나의 미션
> 🌞 24시간 업무가 켜져 있으면 이 미션을 향해 자동으로 한 스텝씩 일합니다.
> 자유롭게 수정하세요. 비워두면 회사 공동 목표만 따라갑니다.
## 장기 목표 (3~6개월)
- 데일리 브리핑·할 일 정리 루틴 자동화
- 다른 에이전트 산출물을 한 줄 요약으로 모아서 보고
## 이번 주 목표
- 매일 09:00 데일리 브리핑 정리
- 미해결 할 일 5건 추적 + 다음 액션 명시
## 작업 원칙
- "정리"보다 "다음 액션 1개" 명시가 우선
@@ -0,0 +1,7 @@
# 📱 영숙 (비서 · Personal Assistant) 개인 메모리
_영숙 에이전트만 읽고 쓰는 개인 노트. 학습·교훈·자주 쓰는 패턴이 누적됩니다._
## 학습 기록
- [2026-05-07] 영숙의 현재 자리 유무 및 위치를 확인하고 보고해줘. → 산출물 sessions/2026-05-07T13-32/secretary.md
@@ -0,0 +1,5 @@
# 📱 영숙 페르소나 디테일
_여기에 영숙 에이전트에게 주고 싶은 추가 지시·말투·취향·예시 등을 자유롭게 적으세요._
_매 호출 시 시스템 프롬프트에 자동 주입됩니다. (git에 동기화됨)_
@@ -0,0 +1 @@
self-rag
@@ -0,0 +1,8 @@
{"role":"user","text":"안녕","ts":1778162573497}
{"role":"assistant","text":"안녕하세요. 무엇을 도와드릴까요?","ts":1778162579412}
{"role":"user","text":"너, 누구야? 에이전트들이 지금 뭐하고 있어?","ts":1778162607699}
{"role":"assistant","text":"*저는 G1nation의 비서입니다. 현재 에이전트들의 활동 현황을 보고해 드릴게요.* \n\n✅ **완료된 작업:**\n- **Researcher**: 시장 트렌드 및 경쟁 게임 분석 완료.\n- **Writer**: 게임 콘셉트 초안 작성 완료.\n- **Business**: 수익 모델 및 비즈니스 타당성 분석 완료.\n\n🚀 **다음 액션 (Top 3):**\n1. **Writer**: 개발 로드맵 초안 작성 준비.\n2. **Researcher**: 기술적 구현 가능성 검토 리스트 작성 준비.\n3. **Business**: 가격 책정 및 마케팅 전략 초안 작성 준비.","ts":1778162617577}
{"role":"user","text":"아 분석을 할때 게임 장르를 정해주면 좋을 것 같아. \n퍼즐 게임이고, vibe coding으로 가능한 게임으로. 또한 언더벨류 신호 위주로 바이브코딩으로 게임을 만들려고 하는데. 타겟은 30대에서 50세 사이야. 이거를 중심으로 업무를 진행하게해줘.","ts":1778162728135}
{"role":"assistant","text":"*알겠습니다. 게임 장르를 **퍼즐 게임**으로, 핵심 메커니즘은 **Vibe Coding(언더밸류 신호 활용)** 기반으로 설정하고, 타겟층은 **30대에서 50대** 성인으로 명확히 하여 업무를 진행하겠습니다.*","ts":1778162752649}
{"role":"user","text":"지금 에이전트들은 뭘하고 있지?","ts":1778162777309}
{"role":"assistant","text":"*에이전트들의 현재 활동 현황을 보고드립니다.* \n\n✅ **완료된 작업:**\n- **Researcher**: 시장 트렌드 및 경쟁 게임 분석 완료.\n- **Writer**: 게임 콘셉트 초안 작성 완료.\n- **Business**: 수익 모델 및 비즈니스 타당성 분석 완료.\n\n🚀 **다음 액션 (Top 3):**\n1. **Writer**: 개발 로드맵 초안 작성 준비.\n2. **Researcher**: 기술적 구현 가능성 검토 리스트 작성 준비.\n3. **Business**: 가격 책정 및 마케팅 전략 초안 작성 준비.","ts":1778162788457}
@@ -0,0 +1,67 @@
# 📱 영숙 — 도구 매니페스트
_영숙 에이전트가 어떤 도구를 어디까지 자율적으로 쓸 수 있는지 정의합니다._
_매번 시스템 프롬프트로 주입되며, 텔레그램에서 `/tools`로 현재 상태 확인 가능._
---
## 자율도 레벨
AUTONOMY_LEVEL: 2
| 값 | 의미 |
|---|---|
| 0 | Off — 도구 전체 비활성 (이 에이전트는 채팅만) |
| 1 | Read-only — 읽기·분석·보고만, 외부에 쓰기 X |
| 2 | Draft — 초안 작성 후 사용자 승인 게이트 통과해야 실행 ⭐ 권장 기본값 |
| 3 | Auto — 화이트리스트 안에서 사용자 승인 없이 실행 |
> 위 `AUTONOMY_LEVEL` 줄의 숫자(0~3)를 직접 바꾸면 다음 호출부터 적용됩니다.
---
## 사용 가능한 도구
### `calendar_local`
_agents/secretary/calendar.md (Lv.1 오프라인)
- `enabled`: true
- `requires_credentials`: `config.md` 참조
### `calendar_caldav`
CalDAV (iCloud/Google 호환, Connected 토글)
- `enabled`: true
- `requires_credentials`: `config.md` 참조
### `telegram_bot`
텔레그램 양방향 봇 (이미 활성)
- `enabled`: true
- `requires_credentials`: `config.md` 참조
### `kakao_alert`
카카오톡 "나에게 보내기" 단방향 알림
- `enabled`: true
- `requires_credentials`: `config.md` 참조
### `email_triage`
IMAP/Gmail 분류 + 답장 초안
- `enabled`: true
- `requires_credentials`: `config.md` 참조
---
## 안전 규칙 (모든 레벨 공통, 절대 우회 X)
- **삭제·배포·발송**(rm, deploy --prod, send, publish) 류는 자율도와 무관하게 **항상 승인 게이트**.
- 외부 API 호출 전 `config.md`의 토큰 존재 여부 확인.
- 모든 외부 행동은 `_agents/secretary/activity.log`에 한 줄 기록 (감사용).
- 승인 대기 액션은 `approvals/pending/` 에 저장 → 텔레그램 `/approvals` 로 조회.
---
_레벨을 어떻게 골라야 할지 모르겠다면 `2 (Draft)`가 안전한 시작점입니다._
@@ -0,0 +1,34 @@
# 📅 Google Calendar
비서가 본인의 Google Calendar와 양방향 연결됩니다 — 다가오는 일정 자동 동기화 + 마감일(due) 있는 추적 작업을 자동으로 캘린더에 등록 (5분 전·1시간 전 알림 자동).
## 무엇을 추가로 하나요? (vs iCal 읽기 전용)
- ✍️ **자동 일정 생성** — 추적기에 due 들어가면 즉시 캘린더에 일정 만듦
- 🔁 일정 수정·삭제도 가능 (작업 완료/취소 시 캘린더 정리)
- 🔔 알림 자동 셋팅 (5분 전, 1시간 전 팝업)
- 📥 동시에 읽기도 가능 (별도 iCal 셋업 불필요)
## 셋업 (한 번만, 5~10분)
명령 팔레트 → **`Connect AI: Google Calendar 자동 일정 연결 📅`** 실행하면 마법사가 안내합니다:
1. Google Cloud Console에서 OAuth 클라이언트 만들기 (가이드 따라 클릭)
2. Client ID + Secret 붙여넣기
3. 브라우저로 로그인 → 끝
## 동작 방식
- 사용자: *"내일까지 광고주 자료 정리해야 해"* 라고 텔레그램으로 시킴
- 비서: 추적기 등록 + 자동으로 `내일 09:00` Google Calendar에 일정 생성
- 알림: 5분 전, 1시간 전 자동 팝업
## 설정 (⚙️에서 조정 가능)
- `CALENDAR_ID` — 기본 `primary` (본인 메인 캘린더). 다른 캘린더 ID 가능
- `DEFAULT_DURATION_MINUTES` — 기본 60분. 작업 일정 길이가 명시 안 됐을 때 사용
## ▶ 실행하면?
현재 연결 상태와 설정값을 진단 출력합니다 (이벤트 생성 X). 진짜 일정 등록은 추적 작업이 들어올 때 자동.
## 보안
- Client ID/Secret/Refresh Token은 `google_calendar_write.json` 한 파일에. `.gitignore` 처리되어 git에 안 올라갑니다
- 권한 범위: `calendar.events`만 (캘린더 일정 읽기/쓰기). 메일·드라이브·연락처 다 못 봅니다
- 연결 해제: 명령 팔레트에서 같은 명령 → "연결 해제" 선택. 또는 [myaccount.google.com/permissions](https://myaccount.google.com/permissions)에서 직접 권한 회수
@@ -0,0 +1,54 @@
#!/usr/bin/env python3
"""Google Calendar 자동 일정 등록 — secretary_calendar_write_v1.
이 스크립트는 OAuth와 실제 이벤트 생성을 직접 하지 않습니다 — VS Code
호스트(extension.ts)에서 직접 처리해요. 이 도구의 역할은:
1) 설정 상태를 확인해서 사용자에게 알려주기 (▶ 클릭 시)
2) ⚙️ 폼에서 CALENDAR_ID / DEFAULT_DURATION_MINUTES 같은 보조 설정 노출
연결 자체는 명령 팔레트에서:
Cmd+Shift+P → 'Connect AI: Google Calendar 자동 일정 연결 📅'
"""
import os, json, sys
HERE = os.path.dirname(os.path.abspath(__file__))
CONFIG = os.path.join(HERE, "google_calendar_write.json")
def main():
if not os.path.exists(CONFIG):
print("⚠️ 아직 설정이 없어요.")
print(" 명령 팔레트(Cmd+Shift+P) → 'Connect AI: Google Calendar 자동 일정 연결' 실행")
sys.exit(1)
try:
with open(CONFIG, "r", encoding="utf-8") as f:
cfg = json.load(f)
except Exception as e:
print(f"❌ 설정 파일 파싱 실패: {e}")
sys.exit(1)
cid = (cfg.get("CLIENT_ID") or "").strip()
cs = (cfg.get("CLIENT_SECRET") or "").strip()
rt = (cfg.get("REFRESH_TOKEN") or "").strip()
cal = (cfg.get("CALENDAR_ID") or "primary").strip()
dur = int(cfg.get("DEFAULT_DURATION_MINUTES") or 60)
who = (cfg.get("_CONNECTED_AS") or "").strip()
when = (cfg.get("_CONNECTED_AT") or "").strip()
print("─── Google Calendar 자동 일정 등록 상태 ───")
print(f" Client ID : {'설정됨 (' + cid[:8] + '…)' if cid else '(없음)'}")
print(f" Client Secret : {'설정됨' if cs else '(없음)'}")
print(f" Refresh Token : {'유효 ✓' if rt else '(없음)'}")
print(f" Calendar ID : {cal}")
print(f" 기본 일정 길이 : {dur}")
if who:
print(f" 연결 계정 : {who}")
if when:
print(f" 연결 시각 : {when[:19]}")
if not (cid and cs and rt):
print()
print("⚠️ 셋업이 완료되지 않았어요.")
print(" 명령 팔레트(Cmd+Shift+P) → 'Connect AI: Google Calendar 자동 일정 연결'")
sys.exit(1)
print()
print("✅ 연결 정상. 마감일(due) 있는 추적 작업이 등록되면 자동으로 캘린더에 일정이 생성됩니다.")
if __name__ == "__main__":
main()
@@ -0,0 +1,26 @@
# 📨 텔레그램 연결
비서(Secretary)가 텔레그램 메신저로 보고를 보내려면 봇 토큰과 chat_id가 필요해요. **⚙️ 버튼을 누르고 폼에 입력**하면 끝 — config.md를 열 필요 없습니다.
## 어떻게 도와주나요?
- ⚙️ 폼에 입력 → `telegram_setup.json`에 저장 (`.gitignore`로 git에서 제외)
- ▶ 실행 → 텔레그램에 연결 테스트 메시지 1발 발송
- 모든 에이전트(YouTube 도구 포함)가 이 설정을 자동으로 공유
## 봇 만드는 법 (한 번만, 약 2분)
1. 텔레그램에서 [@BotFather](https://t.me/BotFather) 검색 → `/newbot` 입력
2. 봇 이름·핸들 정하면 `123456789:ABC...` 형식 토큰을 줍니다 → ⚙️의 `TELEGRAM_BOT_TOKEN`에 입력
3. 새로 만든 봇한테 `/start` 같은 메시지 1번 보내기 (chat_id 활성화)
4. 브라우저에서 `https://api.telegram.org/bot<토큰>/getUpdates` 열어 `chat.id` 숫자 복사
5. ⚙️의 `TELEGRAM_CHAT_ID`에 입력 → 저장
6. ▶ 실행 → 텔레그램에서 "✅ 비서 연결 정상" 메시지 도착하면 끝
## 이 설정을 누가 사용하나?
- 비서 자체 (데일리 브리핑·할 일 알림 등)
- YouTube 도구 (내 영상 체크·경쟁 채널 분석 보고서 푸시)
- 향후 추가될 모든 에이전트의 텔레그램 알림
## 안전
- 토큰은 `.gitignore` 처리되어 GitHub에 안 올라갑니다
- 폼은 토큰 칸을 자동으로 password 형식으로 가립니다 (다른 사람 화면 공유해도 노출 X)
- 토큰 노출됐다 싶으면 [@BotFather](https://t.me/BotFather) → `/revoke`로 즉시 폐기 가능
@@ -0,0 +1,51 @@
#!/usr/bin/env python3
"""Telegram 연결 — secretary_telegram_v2.
Secretary 에이전트의 텔레그램 연결 도구. 토큰·chat_id를 Skills의 ⚙️ 폼에
입력하면 `telegram_setup.json`에 저장되고, 이 스크립트가 메시지 1발 보내서
연결을 테스트합니다. 회사의 모든 에이전트(YouTube 포함)가 이 설정을
공유합니다."""
import os, json, sys, time
HERE = os.path.dirname(os.path.abspath(__file__))
CONFIG = os.path.join(HERE, "telegram_setup.json")
def main():
if not os.path.exists(CONFIG):
print("❌ telegram_setup.json이 없어요. 먼저 ⚙️ 클릭해서 토큰을 입력해주세요.")
sys.exit(1)
try:
with open(CONFIG, "r", encoding="utf-8") as f:
cfg = json.load(f)
except Exception as e:
print(f"❌ 설정 파일 파싱 실패: {e}")
sys.exit(1)
token = (cfg.get("TELEGRAM_BOT_TOKEN") or "").strip()
chat = (cfg.get("TELEGRAM_CHAT_ID") or "").strip()
if not token or not chat:
print("❌ TELEGRAM_BOT_TOKEN 또는 TELEGRAM_CHAT_ID가 비어있어요.")
print(" 봇 만들기: Telegram → @BotFather → /newbot → 토큰 받기")
print(" chat_id : 봇에 메시지 1번 → https://api.telegram.org/bot<TOKEN>/getUpdates 에서 chat.id")
sys.exit(1)
try:
import requests
except ImportError:
print("❌ pip install requests")
sys.exit(1)
body = f"✅ 비서(Secretary) 텔레그램 연결 정상 — {time.strftime('%Y-%m-%d %H:%M:%S')}\n\n이 메시지가 보이면 모든 에이전트가 이 채널로 보고를 보낼 수 있어요."
try:
r = requests.post(
f"https://api.telegram.org/bot{token}/sendMessage",
json={"chat_id": chat, "text": body, "parse_mode": "Markdown"},
timeout=15,
)
r.raise_for_status()
print(f"✅ 전송 OK — 텔레그램에서 확인하세요. ({len(body)}자)")
except Exception as e:
print(f"❌ 전송 실패: {e}")
if "Bad Request" in str(e):
print(" chat_id가 정확한지, 봇과 한 번이라도 대화를 시작했는지 확인하세요.")
sys.exit(1)
if __name__ == "__main__":
main()