From 71aa80d1444d9b7aa41c3d90beb3082cac9d05e8 Mon Sep 17 00:00:00 2001 From: Variet Worker Date: Wed, 11 Mar 2026 00:01:26 +0900 Subject: [PATCH] =?UTF-8?q?fix(extension):=20v0.3.9=20=E2=80=94=20SDK=20JS?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20VSIX=20=ED=8F=AC=ED=95=A8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20+=20start=5Fbot.bat=20conda=20Python=20=EC=9A=B0?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agents/references/known-issues.md | 13 ++++++++++++- .deps_installed | 1 + docs/devlog/2026-03-10.md | 1 + extension/package-lock.json | 29 +++-------------------------- extension/package.json | 4 ++-- start_bot.bat | 10 +++++----- 6 files changed, 24 insertions(+), 34 deletions(-) create mode 100644 .deps_installed diff --git a/.agents/references/known-issues.md b/.agents/references/known-issues.md index ba0ae9c..62f50ac 100644 --- a/.agents/references/known-issues.md +++ b/.agents/references/known-issues.md @@ -357,9 +357,20 @@ - **해결**: AG 완전 종료 → 재실행 (Full restart). Reload Window로는 해결 불가 - **주의**: Extension 코드 변경 후 배포 시 Reload Window 대신 Full restart 권장. 이건 AG LS 내부 동작이라 사용자 측에서 수정 불가 +### [2026-03-10] start_bot.bat — Windows Store Python 스텁 우선 실행 +- **증상**: `start_bot.bat` 실행 시 `'...' is not recognized` 에러 후 `Python`만 출력되고 즉시 종료 +- **원인**: `where python`이 Windows Store의 Python 스텁(AppAlias)을 먼저 찾음. 이 스텁은 실제 Python이 아니라 Store 페이지로 리다이렉트하는 더미 +- **해결**: conda 경로(`C:\ProgramData\miniforge3\envs\gravity_control\python.exe`)를 `where python`보다 먼저 확인하도록 순서 변경 +- **주의**: Windows 10/11에서 App Aliases의 `python.exe`가 PATH에 기본 포함됨. 항상 구체적 경로 우선 확인 필요 + +### [2026-03-10] VSIX 빌드 — SDK JS 파일 미포함 (require 실패) +- **증상**: Extension 활성화 후 `SDK not initialized`, `gravityBridge.connect` 클릭 시 에러. `extension.log`에 SDK init 성공 로그 없음 +- **원인**: `src/sdk/index.js`는 순수 JavaScript 파일. TypeScript 컴파일러(`tsc`)는 `.ts`만 변환하고 **`.js` 파일을 `out/`에 복사하지 않음**. `require('./sdk/index')`가 `out/sdk/index.js`를 찾지 못해 SDK 로드 실패 +- **해결**: `package.json`의 `compile` 스크립트에 `tsc` 후 `node -e "..."` 복사 단계 추가 (`src/sdk/` → `out/sdk/`) +- **주의**: VSIX 패키징은 `.vscodeignore`의 `!out/**` 규칙으로 `out/sdk/`를 포함함. **문제는 빌드 단계에서 복사 누락**이므로 `npm run compile` 후 `out/sdk/` 존재 여부 반드시 확인 + ### [2026-03-10] SDK _findLSProcess — 대소문자 구분 workspace hint 매칭 실패 - **증상**: variet-agent AG에서 활성 대화 진행 중인데 Discord에 신호 미도달. extension.log에 `[SESSION-FILTER] NO session matched! total=11` - **원인**: SDK `_findLSProcess()`가 workspace hint(`desktop_variet_agent`, 소문자)를 LS 프로세스 command line의 `Desktop_variet_agent`(대문자 D)과 `String.includes()`(대소문자 구분)로 비교 → 매치 실패 → 첫 번째 LS(gravity_control)로 fallback → variet-agent 세션 없음. 각 AG 창은 **별도의 LS 프로세스**를 가지며(workspace_id로 구분), SDK가 잘못된 LS에 연결하면 해당 창의 세션을 볼 수 없음 - **해결**: `extension.ts`에 `fixLSConnection()` 함수 추가. SDK init 후 PowerShell로 모든 LS 프로세스를 조회, `--workspace_id`를 **대소문자 무시 비교**하여 올바른 LS 발견 → `sdk.ls.setConnection(port, csrfToken)`으로 재연결 - **주의**: 각 AG 창마다 별도 LS 프로세스 존재 확인됨 (workspace_id로 구분). SDK `_getWorkspaceHint()`는 `.toLowerCase()` 적용하지만 검색 대상(LS command line)은 원본 대소문자를 유지하여 불일치 발생. 이 fix는 모든 multi-window AG 환경에서 필수 - diff --git a/.deps_installed b/.deps_installed new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/.deps_installed @@ -0,0 +1 @@ + diff --git a/docs/devlog/2026-03-10.md b/docs/devlog/2026-03-10.md index 5eef548..3cb5b73 100644 --- a/docs/devlog/2026-03-10.md +++ b/docs/devlog/2026-03-10.md @@ -16,3 +16,4 @@ | 012 | 19:30~20:35 | 크로스 프로젝트 response watcher 우회 수정 + file_permission write 도구 3-button 매핑 | `3b834e0` | ✅ | | 013 | 21:04~22:19 | Deriva 신호 진단 + RUNNING 세션 우선 선택 + IDLE 채널 자동 생성 제거 | `6179c4d` | ✅ | | 014 | 22:23~22:47 | SDK LS 프로세스 대소문자 매칭 버그 수정 — variet-agent 신호 미도달 해결 | `21fd309` | ✅ | +| 015 | 23:46~23:57 | v0.3.9 — SDK JS 파일 VSIX 미포함 수정 + start_bot.bat Python 경로 우선순위 | — | ✅ | diff --git a/extension/package-lock.json b/extension/package-lock.json index 4a37c82..dd525fb 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,15 +1,12 @@ { "name": "gravity-bridge", - "version": "0.2.0", + "version": "0.3.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gravity-bridge", - "version": "0.2.0", - "dependencies": { - "antigravity-sdk": "^1.6.0" - }, + "version": "0.3.8", "devDependencies": { "@types/node": "^20.0.0", "@types/vscode": "^1.100.0", @@ -33,27 +30,7 @@ "version": "1.100.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.100.0.tgz", "integrity": "sha512-4uNyvzHoraXEeCamR3+fzcBlh7Afs4Ifjs4epINyUX/jvdk0uzLnwiDY35UKDKnkCHP5Nu3dljl2H8lR6s+rQw==", - "license": "MIT" - }, - "node_modules/antigravity-sdk": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/antigravity-sdk/-/antigravity-sdk-1.6.0.tgz", - "integrity": "sha512-VdaLlSujbr+9WNCxs57N8nkuWdSmUT4tD5BsO1XGjAKD6f1aPMCtqeMBYP6iWHRUGZZjtGvSQaUGBt/WR/9iAA==", - "license": "AGPL-3.0-or-later", - "dependencies": { - "sql.js": "^1.14.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@types/vscode": "^1.85.0" - } - }, - "node_modules/sql.js": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.14.1.tgz", - "integrity": "sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==", + "dev": true, "license": "MIT" }, "node_modules/typescript": { diff --git a/extension/package.json b/extension/package.json index 228b803..8a4c077 100644 --- a/extension/package.json +++ b/extension/package.json @@ -2,7 +2,7 @@ "name": "gravity-bridge", "displayName": "Gravity Bridge", "description": "Antigravity ↔ Discord 브리지 연동 확장", - "version": "0.3.8", + "version": "0.3.9", "publisher": "variet", "engines": { "vscode": "^1.100.0" @@ -16,7 +16,7 @@ ], "main": "./out/extension.js", "scripts": { - "compile": "tsc -p ./", + "compile": "tsc -p ./ && node -e \"const fs=require('fs'),p=require('path');const s=p.join('src','sdk'),d=p.join('out','sdk');if(fs.existsSync(s)){fs.mkdirSync(d,{recursive:true});fs.readdirSync(s).forEach(f=>fs.copyFileSync(p.join(s,f),p.join(d,f)));console.log('SDK copied to out/sdk')};\"", "watch": "tsc -watch -p ./" }, "devDependencies": { diff --git a/start_bot.bat b/start_bot.bat index 7e5e37d..844ba08 100644 --- a/start_bot.bat +++ b/start_bot.bat @@ -7,13 +7,13 @@ echo ║ Gravity Bridge Bot Launcher ║ echo ╚══════════════════════════════════════╝ echo. -REM — Find Python +REM — Find Python (conda first, then system) set PYTHON= -where python >nul 2>&1 && set PYTHON=python +if exist "C:\ProgramData\miniforge3\envs\gravity_control\python.exe" ( + set PYTHON=C:\ProgramData\miniforge3\envs\gravity_control\python.exe +) if "%PYTHON%"=="" ( - if exist "C:\ProgramData\miniforge3\envs\gravity_control\python.exe" ( - set PYTHON=C:\ProgramData\miniforge3\envs\gravity_control\python.exe - ) + where python >nul 2>&1 && set PYTHON=python ) if "%PYTHON%"=="" ( echo [ERROR] Python not found. Install Python 3.10+ or set path.