visual-remote 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Visual Remote Dev Bridge
2
2
 
3
3
  실행 중인 개발 화면에서 요소나 영역을 선택하고 자연어 요청을 보내면, 해당 Git
4
- 작업 트리에서 Codex가 소스를 수정하도록 연결하는 저장소 전용 개발 브리지입니다.
4
+ 작업 트리에서 선택한 코딩 에이전트가 소스를 수정하도록 연결하는 저장소 전용 개발
5
+ 브리지입니다.
5
6
  브라우저에서 진행 상태, 변경 파일, 차이, 검증 결과를 확인하고 변경을 유지하거나
6
7
  되돌릴 수 있습니다.
7
8
 
@@ -9,7 +10,7 @@
9
10
 
10
11
  - Node.js 24.18.0
11
12
  - Git
12
- - 인증을 마친 `codex` 명령줄 도구
13
+ - 인증을 마친 `codex` 또는 `claude` 명령줄 도구
13
14
  - Corepack으로 실행하는 pnpm 10.34.5
14
15
  - 외부 접속이 필요하면 Portr와 같은 HTTP/WebSocket 터널
15
16
 
@@ -83,15 +84,15 @@ corepack pnpm build
83
84
  node apps/cli/dist/index.js doctor
84
85
  ```
85
86
 
86
- `doctor`에서 Git 작업 트리, 현재 프로젝트 설정과 Codex 실행 환경을 확인합니다.
87
+ `doctor`에서 Git 작업 트리, 현재 프로젝트 설정과 선택한 에이전트 실행 환경을 확인합니다.
87
88
 
88
- Codex 작업 중 `pwd`, 버전 확인, 파일 읽기·검색과 read-only Git 명령은 Bridge가
89
+ 에이전트 작업 중 `pwd`, 버전 확인, 파일 읽기·검색과 read-only Git 명령은 Bridge가
89
90
  등록한 구조화 도구로 실행합니다. 이 경로는 명령을 `argv` 배열과 등록된 workspace
90
91
  `cwd`로 전달하고 `shell: false`로 실행하며, 지원되는 명령은 RTK로 자동 압축합니다.
91
92
  직접 실행기는 명령별 읽기 전용 문법만 허용하고 경로·symlink를 Git worktree 안으로
92
93
  제한하며, 타임아웃 시 하위 프로세스까지 종료합니다. 명령 소요 시간, RTK 사용,
93
- 출력 축약 여부와 Codex가 제공하는 토큰 사용량은 작업 로그에 함께 기록됩니다.
94
- 파일 수정, 테스트·빌드 또는 파이프처럼 셸 문법이 필요한 작업만 Codex의 sandbox
94
+ 출력 축약 여부와 에이전트가 제공하는 토큰 사용량은 작업 로그에 함께 기록됩니다.
95
+ 파일 수정, 테스트·빌드 또는 파이프처럼 셸 문법이 필요한 작업만 에이전트의 sandbox
95
96
  명령 실행기로 보냅니다.
96
97
 
97
98
  ## 자동화 셸에서 Node.js 24 사용
@@ -142,7 +143,12 @@ upstream:
142
143
 
143
144
  agent:
144
145
  adapter: codex
146
+ # profile: proxy
147
+ # model: gpt-5.6-sol
148
+ # reasoningEffort: medium
149
+ # inheritEnv: [CUSTOM_PROVIDER_KEY]
145
150
  maxRunMs: 900000
151
+ resumeMode: auto
146
152
 
147
153
  verification:
148
154
  hmrWaitMs: 12000
@@ -171,9 +177,38 @@ paths:
171
177
  - dist/**
172
178
  ```
173
179
 
180
+ `agent.model`과 `agent.reasoningEffort`를 지정하면 새 작업과 재개 작업에 동일하게
181
+ 적용됩니다. Codex effort는 `minimal`, `low`, `medium`, `high`, `xhigh`를, Claude
182
+ effort는 `low`, `medium`, `high`, `xhigh`, `max`를 지원합니다. 값을 생략하면 선택한
183
+ CLI의 현재 기본 설정을 사용합니다.
184
+
185
+ Claude를 사용하려면 `adapter: claude`로 변경합니다. Visual Remote는 Claude를
186
+ `acceptEdits` 권한으로 실행하고 사용자 MCP를 로드하지 않습니다. Linux에서 Bash
187
+ sandbox까지 사용하려면 `bwrap`과 `socat`이 모두 필요하며 `visual doctor`가 설치
188
+ 상태를 표시합니다.
189
+
190
+ Codex의 OpenAI-compatible provider는 사용자 Codex profile에 정의하고
191
+ `agent.profile`로 선택합니다. provider는 Responses API streaming을 지원해야 합니다.
192
+ 예를 들어 `$CODEX_HOME/proxy.config.toml`은 다음처럼 작성합니다.
193
+
194
+ ```toml
195
+ model_provider = "proxy"
196
+
197
+ [model_providers.proxy]
198
+ name = "OpenAI-compatible proxy"
199
+ base_url = "https://proxy.example.com/v1"
200
+ wire_api = "responses"
201
+ env_key = "CUSTOM_PROVIDER_KEY"
202
+ ```
203
+
204
+ API key 값은 YAML에 기록하지 않습니다. `agent.inheritEnv`에는 부모 프로세스에서
205
+ Codex 또는 Claude로 전달할 환경변수 이름만 작성하며, 누락된 변수는 `visual doctor`가
206
+ 실패로 보고합니다. 개인별 선택은 Git에서 제외되는
207
+ `.visualdev/config.local.yaml`에 둘 수 있습니다.
208
+
174
209
  `project.workspace`, `paths.allowed`, `paths.denied`는 설정 파일이 가리키는 앱 workspace
175
210
  기준입니다. 모노레포의 `apps/web`에서 `init`했다면 `src/**`는
176
- `apps/web/src/**`로 안전하게 정규화되고 Codex의 기본 cwd도 `apps/web`이 됩니다.
211
+ `apps/web/src/**`로 안전하게 정규화되고 에이전트의 기본 cwd도 `apps/web`이 됩니다.
177
212
 
178
213
  Vite 플러그인 또는 Next.js 설정 래퍼가 개발 서버와 함께 내부 Bridge를 시작합니다.
179
214
  `visual dev`가 Bridge를 먼저 소유한 경우 자식 Vite 플러그인은 runtime registry의
@@ -238,7 +273,7 @@ visual doctor
238
273
  - `attach`: 기본 명령의 명시적 이름이며 기존 사용법과 호환됩니다.
239
274
  - `dev`: `init` 설정을 사용해 앱과 브리지를 함께 실행하는 선택 명령입니다.
240
275
  - `status`: 현재 Git 작업 트리의 브리지 실행 상태를 확인합니다.
241
- - `doctor`: Git, 설정 파일, 개발 명령과 Codex 사용 가능 여부를 점검합니다.
276
+ - `doctor`: Git, 설정 파일, 개발 명령과 선택한 에이전트 사용 가능 여부를 점검합니다.
242
277
 
243
278
  ## 개발 및 검증
244
279
 
@@ -623,6 +623,110 @@ async function executeReadOnlyBatch(request, options) {
623
623
  return { results, stoppedEarly };
624
624
  }
625
625
 
626
+ // ../../package.json
627
+ var package_default = {
628
+ name: "visual-remote",
629
+ version: "0.3.2",
630
+ description: "Visual bridge from a running web UI to a coding agent in its Git worktree",
631
+ type: "module",
632
+ packageManager: "pnpm@10.34.5",
633
+ repository: {
634
+ type: "git",
635
+ url: "git+https://github.com/elicie/visual-remote.git"
636
+ },
637
+ homepage: "https://github.com/elicie/visual-remote#readme",
638
+ bugs: {
639
+ url: "https://github.com/elicie/visual-remote/issues"
640
+ },
641
+ files: [
642
+ "apps/cli/dist/index.js",
643
+ "apps/cli/dist/direct-exec-mcp.js",
644
+ "apps/cli/dist/vite.js",
645
+ "apps/cli/dist/next.js",
646
+ "apps/cli/dist/next-client.js",
647
+ "apps/cli/vite.d.ts",
648
+ "apps/cli/next.d.ts",
649
+ "apps/cli/next-client.d.ts",
650
+ "packages/overlay/dist/client.js",
651
+ "packages/overlay/dist/viewer.js"
652
+ ],
653
+ bin: {
654
+ visual: "./apps/cli/dist/index.js",
655
+ "visual-remote": "./apps/cli/dist/index.js"
656
+ },
657
+ exports: {
658
+ "./vite": {
659
+ types: "./apps/cli/vite.d.ts",
660
+ import: "./apps/cli/dist/vite.js"
661
+ },
662
+ "./next": {
663
+ types: "./apps/cli/next.d.ts",
664
+ import: "./apps/cli/dist/next.js",
665
+ default: "./apps/cli/dist/next.js"
666
+ },
667
+ "./next/client": {
668
+ types: "./apps/cli/next-client.d.ts",
669
+ import: "./apps/cli/dist/next-client.js",
670
+ default: "./apps/cli/dist/next-client.js"
671
+ }
672
+ },
673
+ publishConfig: {
674
+ access: "public",
675
+ registry: "https://registry.npmjs.org"
676
+ },
677
+ engines: {
678
+ node: ">=24"
679
+ },
680
+ scripts: {
681
+ build: "corepack pnpm run build:overlay && corepack pnpm run build:server",
682
+ "build:overlay": "corepack pnpm --filter @visual-remote/overlay build",
683
+ "build:server": "corepack pnpm --filter @visual-remote/cli build",
684
+ dev: "corepack pnpm run build:overlay && tsx apps/cli/src/index.ts",
685
+ test: "vitest run",
686
+ "test:e2e": "corepack pnpm build && corepack pnpm exec playwright test --config tests/e2e/playwright.config.ts",
687
+ "test:watch": "vitest",
688
+ typecheck: "corepack pnpm -r --if-present typecheck && tsc --noEmit -p tsconfig.tests.json",
689
+ prepack: "corepack pnpm build"
690
+ },
691
+ dependencies: {
692
+ commander: "^15.0.0",
693
+ "http-proxy": "^1.18.1",
694
+ ws: "^8.21.1",
695
+ yaml: "^2.9.0",
696
+ zod: "^4.4.3"
697
+ },
698
+ peerDependencies: {
699
+ vite: ">=5"
700
+ },
701
+ peerDependenciesMeta: {
702
+ vite: {
703
+ optional: true
704
+ }
705
+ },
706
+ devDependencies: {
707
+ "@playwright/test": "^1.62.1",
708
+ "@types/http-proxy": "^1.17.17",
709
+ "@types/node": "^26.1.2",
710
+ "@types/ws": "^8.18.1",
711
+ "@visual-remote/bridge-core": "workspace:*",
712
+ "@visual-remote/cli": "workspace:*",
713
+ "@visual-remote/gateway": "workspace:*",
714
+ "@visual-remote/overlay": "workspace:*",
715
+ "@visual-remote/protocol": "workspace:*",
716
+ esbuild: "^0.28.1",
717
+ next: "15.5.16",
718
+ react: "19.1.0",
719
+ "react-dom": "19.1.0",
720
+ tsx: "^4.23.1",
721
+ typescript: "^7.0.2",
722
+ vite: "^8.1.5",
723
+ vitest: "^4.1.10"
724
+ }
725
+ };
726
+
727
+ // src/version.ts
728
+ var VISUAL_REMOTE_VERSION = package_default.version;
729
+
626
730
  // src/direct-exec-mcp.ts
627
731
  var TOOL_NAME = "run_readonly";
628
732
  function recordOf(value) {
@@ -739,7 +843,10 @@ async function handleRequest(request, options) {
739
843
  result(request.id, {
740
844
  protocolVersion: typeof params?.protocolVersion === "string" ? params.protocolVersion : "2024-11-05",
741
845
  capabilities: { tools: { listChanged: false } },
742
- serverInfo: { name: "visual-remote-direct-exec", version: "0.3.1" }
846
+ serverInfo: {
847
+ name: "visual-remote-direct-exec",
848
+ version: VISUAL_REMOTE_VERSION
849
+ }
743
850
  });
744
851
  return;
745
852
  }