Variet Worker
3fcf4f7037
docs: 세션 종료 — AGENT.md 검증 규칙 + known-issues 3건 + devlog
...
AGENT.md:
- NEVER #8-9: 실제 E2E 테스트 없이 '구현 완료' 금지
- ALWAYS #7-8: 실행 검증 필수, '구현'과 '검증' 구분 보고
known-issues 3건:
- Collector 동기→aiohttp 전환 기록
- Extension fs.watch response 감지 누락 (미해결)
- rejectAgentStep 미등록 (미해결)
2026-03-12 00:00:30 +09:00
Variet Worker
d7ed454332
fix: 나노 검증 — health URL/response polling/startup 상태변경 3건 수정
...
1. health_check: /../health → /health (URL 해석 오류)
2. response polling: startup pending 제외 (불필요한 HTTP 요청 방지)
3. startup pending 상태변경: pending→skip, auto_resolved/expired→forward
2026-03-11 23:01:24 +09:00
Variet Worker
1bf41ceee3
refactor: 아키텍처 수정 — 동기HTTP→aiohttp + 연결 모니터링 + 재시도큐
...
#1 동기 HTTP → async aiohttp (Critical)
- RemoteTransport: urllib.request → aiohttp.ClientSession
- 모든 HTTP 요청이 non-blocking으로 전환
- 이벤트 루프 블로킹 문제 해결
#2 연결 상태 모니터링
- RemoteTransport: connected 플래그 + 연속 실패 카운터
- Collector: 30초마다 health check → 실패 시 경고 로그
- 연결 복구 시 '✅ Gateway connected' 메시지
#3 실패 재시도 큐
- RemoteTransport: _retry_queue (최대 100건)
- POST 실패 시 큐에 저장, 연결 복구 후 자동 재전송
- Collector: 10초마다 retry flush
2026-03-11 22:55:54 +09:00
Variet Worker
d2a477e12e
fix(collector): MERGE + auto_resolved/expired 상태 변경 감지
...
- pending 파일 콘텐츠 해시 추적 (_pending_hashes)
- 내용 변경 시 Gateway에 재전달 (MERGE: command 업데이트, status 변경)
- _startup_pending으로 시작 시 기존 파일과 신규 파일 분리
2026-03-11 22:48:47 +09:00
Variet Worker
58a421f5a6
fix: 전체 시스템 감사 — 6건 수정 (보안 + 안정성)
...
Bug 1 (만료됨 스팸): Collector 시작 시 기존 pending skip
Bug 2 (pending 미삭제): Gateway에서 response 소비 시 pending도 삭제
Bug 3 (재시작 중복): Bug 1로 해결
Security 1: API 요청 1MB 크기 제한 (client_max_size)
Security 2: IP별 rate limiting (10 req/s)
Security 3: _commands 메모리 누수 방지 (TTL 30분)
2026-03-11 22:42:05 +09:00
Variet Worker
7eca0763c9
fix(collector): 기능 누락 3건 수정 — Discord 명령어/채팅/등록 중계
...
Gap 1: Discord→Extension 명령어 깨짐
- bot.py: _write_command() 래퍼 — gateway.push_command()도 호출
- main.py: bot.gateway 연결
- 슬래시 명령어 + on_message 모두 _write_command 사용
Gap 2: Chat snapshot 미전달
- collector.py: _forward_chat_snapshots_loop 추가
Gap 3: Session registration 미전달
- collector.py: _forward_registrations_loop 추가
2026-03-11 22:31:08 +09:00
Variet Worker
3d75825bba
feat(collector): brain event 중계 추가 — Watcher 이벤트를 Gateway로 전달
...
- collector.py: _forward_events_loop — BrainEvent를 JSON으로 serialize하여 /api/event POST
- gateway.py: /api/event 엔드포인트 — 수신한 이벤트를 bot event_queue에 주입
- main.py: event_queue를 CollectorBridge에 전달
이제 task.md, implementation_plan, walkthrough 변경사항이 Collector→Gateway→Discord 경로로 전달됨
2026-03-11 22:24:48 +09:00
Variet Worker
7e36db5191
fix(docker): Dockerfile에 parser.py 등 누락 — COPY *.py로 수정
2026-03-11 21:24:09 +09:00
Variet Worker
c60d14e408
docs: devlog 2026-03-11 항목 006~009 커밋 해시 및 추가 기록
2026-03-11 20:18:36 +09:00
Variet Worker
95c2905e14
feat(collector): RemoteTransport + CollectorBridge 구현 — Collector↔Gateway HTTP 통신 완성
...
- bridge.py RemoteTransport: HTTP 클라이언트, API Key auth, Gateway API 매핑
- collector.py CollectorBridge: 3개 async loop (pending 전달, response 폴링, commands 폴링)
- main.py: BOT_MODE=remote → CollectorBridge 실행 (Discord bot 없이)
- config.py: GATEWAY_API_KEY 설정
- .env.example: 모든 설정 항목 업데이트
2026-03-11 20:10:45 +09:00
Variet Worker
95da3e9307
feat(gateway): API Key 인증 + HTTPS (Caddy) 보안 강화
...
- gateway.py: auth middleware — /api/* 엔드포인트에 Bearer token 필수
- Caddyfile: Let's Encrypt 자동 HTTPS 리버스 프록시
- docker-compose.yml: Caddy 추가, Gateway 포트 내부 전용
- config.py: GATEWAY_API_KEY 설정 추가
- .env: 키 생성 명령어 가이드 포함
2026-03-11 19:49:24 +09:00
Variet Worker
6dbbb57fa7
feat(gateway): Docker Gateway 봇 + HTTP API 구현 #task-311
...
- gateway.py: Collector↔Gateway HTTP API (pending, response, chat, register, commands)
- Dockerfile + docker-compose.yml: BOT_MODE=gateway, port 8585
- main.py: gateway 모드 (watcher 비활성, GatewayAPI 시작)
- config.py: gateway 모드 BRAIN_PATH 검증 스킵
- requirements.txt: aiohttp 추가
- docs/usage-guide.md: Docker 배포 섹션 추가
- Extension VSIX v0.3.9 빌드 (auto-approve 포함)
2026-03-11 19:38:26 +09:00
Variet Worker
c1303999cf
feat(bot,bridge): P1 !auto 토글 자동승인 + P2 BridgeTransport 추상화 #task-304 #task-305
...
P1: !auto 토글 (bot.py + extension.ts)
- auto_approve_projects set으로 프로젝트별 상태 관리
- !auto → on/off 토글, pending 자동 승인 + 🤖 자동 승인됨 embed
- Extension step_probe에서 autoApproveEnabled 시 직접 tryApprovalStrategies
P2: BridgeTransport 추상화 (bridge.py)
- BridgeTransport ABC + LocalTransport (기존 동작 100% 호환)
- RemoteTransport 스켈레톤 (multi-PC 대비)
- config.py BOT_MODE/REMOTE_BRIDGE_URL, main.py transport 주입
docs: usage-guide.md + tech-stack.md Python 경로 기록
2026-03-11 19:25:40 +09:00
Variet Worker
1696a2976b
fix(config,extension): BRAIN_PATH 빈문자열 버그 + 크로스프로젝트 DEDUP MERGE 수정
...
- config.py: os.getenv BRAIN_PATH 빈값 시 CWD 해석 → or 패턴으로 수정
- extension.ts: writePendingApproval DEDUP에 project_name 가드 3곳 추가
- extension.ts: HTTP /pending file_permission dedup에도 project_name 가드
- known-issues: 2건 추가 (BRAIN_PATH, DEDUP MERGE)
- devlog: 2026-03-11 생성
2026-03-11 09:36:55 +09:00
Variet Worker
71aa80d144
fix(extension): v0.3.9 — SDK JS 파일 VSIX 포함 수정 + start_bot.bat conda Python 우선
2026-03-11 00:01:26 +09:00
ff559bc6ee
chore: .agents 워크플로우/레퍼런스/가이드 전체 추가 (.gitignore 규칙 제거)
2026-03-10 23:29:28 +09:00
a0d46f1ff3
fix(extension): SDK LS 대소문자 매칭 버그 수정 — fixLSConnection() 추가 (멀티프로젝트 신호 누락 해결)
2026-03-10 22:51:02 +09:00
4d780ec5e7
docs: devlog 013 + known-issues (Reload Window stale session, RUNNING 우선 선택, IDLE 채널)
2026-03-10 22:21:32 +09:00
6179c4d242
fix(bridge): RUNNING 세션 우선 선택 + IDLE 채널 자동 생성 제거
...
- extension: bestSession 선택에 2단계 비교 (RUNNING > IDLE, then modTime)
- extension: [SESSION-FILTER] 진단 로그 + [projectName] 로그 접두사
- bot: pending_approval_scanner의 IDLE 프로젝트 자동 채널 생성 제거
- known-issues: 2개 항목 추가 (IDLE 고착, 채널 증식)
2026-03-10 21:56:46 +09:00
5a3217d31a
fix(extension): 크로스 프로젝트 response watcher 우회 수정 + file_permission write 도구 3-button 매핑
...
- response watcher: pending 삭제 후 response data의 project_name으로 fallback 필터
- processResponseFile: sessionId를 pending에서 우선 사용 (activeSessionId 대신)
- logToFile: [projectName] 접두사 추가 (공유 로그 구분)
- file_permission 리스트에 replace_file_content, write_to_file, multi_replace_file_content 추가
- UserResponse에 project_name 필드 추가 + bot.py 4곳 전파
- known-issues: 2건 추가, devlog 012
2026-03-10 21:02:06 +09:00
08c5cb461b
docs: devlog 011 + known-issues (workspace URI 세션 격리)
2026-03-10 19:33:39 +09:00
ae91134ff2
fix(extension): v0.3.8 — workspace URI 기반 세션 필터링 (멀티프로젝트 격리)
2026-03-10 19:28:32 +09:00
c9524fc8a8
fix(extension): v0.3.7 — file_permission 3-button 주입 + active_project.lock 제거
...
- writePendingApproval()에서 step_type=file_permission일 때 자동 3-button 주입
- active_project.lock 메커니즘 제거 (멀티 프로젝트 동시 사용 지원)
- step_probe auto-resolve에 project_name 필터 추가
- known-issues 2건 추가
2026-03-10 18:48:51 +09:00
11a4730873
docs: devlog 008-009 (project lock, stale reject, v0.3.6 release)
2026-03-10 17:50:00 +09:00
bd46beabb1
release: v0.3.6 — deployment package (VSIX + bot launcher + stale response filter + project lock)
2026-03-10 17:44:24 +09:00
95d4f854f5
fix: skip stale timeout responses (>2min old reject) to prevent phantom REJECT duplicates
2026-03-10 17:23:47 +09:00
186875ad0b
feat: single active project lock — warns if another project already connected to Discord
2026-03-10 17:13:20 +09:00
99f3f264ed
docs: devlog entries 006-007 (diff review relay, step_type passthrough, file_permission auto-detect)
2026-03-10 15:56:14 +09:00
d1586c5e97
fix: auto-detect file_permission for file-related tools in step_probe + always check cmd for allow
2026-03-10 15:50:01 +09:00
4dcb78c1ce
fix: focus dirty files before executing agentAcceptAllInFile command
2026-03-10 15:34:37 +09:00
0470c03ab3
fix: add step_type to default approve/reject/timeout callbacks (not just multi-choice)
2026-03-10 15:29:55 +09:00
26c19fb6be
fix: add step_type to ApprovalRequest (was being filtered out by known-fields logic)
2026-03-10 15:16:18 +09:00
c4dfbcad67
fix: increase pending timeout to 30min, pass step_type through response
2026-03-10 15:07:36 +09:00
7982263fcd
fix: pass step_type through response file for diff_review routing
2026-03-10 15:02:24 +09:00
8fbf6bf6b7
fix: diff review uses cumulative file tracking instead of IDLE-time step scan
2026-03-10 14:44:16 +09:00
f8f9ce8f5f
fix: init lastUserInputStepIdx + lastResponseCaptureStep on session change (prevents stale replay)
2026-03-10 14:35:56 +09:00
82b727a1e6
fix: skip echo relay for Discord-origin user messages
2026-03-10 14:31:47 +09:00
c15b0f676f
feat: diff review Discord relay — Accept/Reject all via VS Code commands
2026-03-10 14:28:01 +09:00
8a6428efa8
docs: devlog 004-005 entries (auto_resolved sync + #253 relay)
2026-03-10 14:10:23 +09:00
b50012075e
feat: full conversation relay #253 — user messages + error notifications to Discord
2026-03-10 14:08:14 +09:00
514c0f2738
fix: extract user message from userInput.userResponse field (discovered via step dump)
2026-03-10 14:05:22 +09:00
17dd6654f1
feat: relay AG-side user messages to Discord via chat_snapshots
2026-03-10 13:58:19 +09:00
048ffd90a3
feat: auto_resolved sync + expired card update + DOM step_index
2026-03-10 13:52:27 +09:00
93439d2f1c
docs: devlog index 002+003, known-issues update (verbosity + file_permission), Vikunja #276 #277 done
2026-03-10 13:46:43 +09:00
a440868101
docs: devlog 20260310-003 — approval flow improvements summary
2026-03-10 13:42:52 +09:00
47dbd38c7c
fix: show actual arg values (paths, queries) instead of parameter names in approval
2026-03-10 13:30:01 +09:00
e107b70510
fix: dedup file_permission pendings (10s window) + clean description text
2026-03-10 13:21:18 +09:00
bec38f9a6a
fix: filter DOM Observer Run-only pendings when step_probe already has pending
2026-03-10 13:08:50 +09:00
14d2acf6c4
feat: 3-button file permission UX (Allow Once / Allow This Conversation / Deny)
2026-03-10 12:45:12 +09:00
c9b4fd4722
fix: route file_permission scope by cmd (once=1, conversation=2)
2026-03-10 11:20:55 +09:00