{"_id":"openshell","name":"openshell","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"openshell","version":"0.1.0","description":"Telegram bridge bot to run local Codex/Claude CLIs","license":"MIT","author":{"name":"Jason"},"type":"module","bin":{"openshell":"bin/openshell.js"},"engines":{"node":">=18"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsc -p tsconfig.json","check":"tsc -p tsconfig.json --noEmit","prepack":"npm run build","start":"node dist/index.js"},"dependencies":{"dotenv":"^16.5.0","telegraf":"^4.16.3"},"devDependencies":{"@types/node":"^22.15.18","tsx":"^4.19.4","typescript":"^5.8.3"},"gitHead":"5c7e1e771e9f125c76097c68af998a08b9b5fb90","_id":"openshell@0.1.0","_nodeVersion":"24.12.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-B7jLewH+d73hraWcrSFgNOjvd+frW5JPejkTpqgj2EJBjX/Yk1Y4blgP5pDl4FwrBxfmwsTKR08Uwgrdo+xpSg==","shasum":"a7803ad701cc64b6afe2dcad2384e842e0b553c2","tarball":"https://registry.npmjs.org/openshell/-/openshell-0.1.0.tgz","fileCount":21,"unpackedSize":62832,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFna48HBEjFSzohqMccBxgHUbzmfRrzc/S2E0rlsWpLxAiEA8bdag7hsu5Ad1Z7E6ApYbl4XanwK/9N9/dWyoHY8KGU="}]},"_npmUser":{"name":"jason026386","email":"jason026386@gmail.com"},"directories":{},"maintainers":[{"name":"jason026386","email":"jason026386@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openshell_0.1.0_1771553815696_0.2795500674517566"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-20T02:16:55.695Z","0.1.0":"2026-02-20T02:16:55.834Z","modified":"2026-02-20T02:16:56.018Z"},"maintainers":[{"name":"jason026386","email":"jason026386@gmail.com"}],"description":"Telegram bridge bot to run local Codex/Claude CLIs","author":{"name":"Jason"},"license":"MIT","readme":"# OpenShell\n\nOpenShell은 Telegram 메시지를 로컬 CLI(`codex`, `claude`)에 연결하는 브리지 봇입니다.\n\n- `codex` provider: 로컬 `codex exec --json` 사용\n- `claude` provider: 로컬 `claude -p --output-format stream-json` 사용\n\nCLI 스트림 이벤트를 받아 같은 메시지를 계속 `edit`하므로 답변이 실시간으로 갱신됩니다.\n\n## 1. 설치\n\n```bash\nnpm install\n```\n\n## 2. 최소 설정\n\n`.env.example`를 복사해 `.env`를 만들고, 아래 1개만 채우면 실행됩니다.\n\n```bash\ncp .env.example .env\n```\n\n```dotenv\nTELEGRAM_BOT_TOKEN=your_telegram_bot_token\n```\n\n처음 실행 후 Telegram에서 봇과 대화를 열고 `/init`을 1번 실행해 소유자(1인)를 등록해야 합니다.\n\n필수 조건:\n\n- 로컬 CLI 최소 1개 설치: `codex` 또는 `claude`\n- 해당 CLI 로그인 완료 (`codex login`, `claude setup-token` 등)\n\n## 3. 실행\n\n개발 모드:\n\n```bash\nnpm run dev\n```\n\n빌드 후 실행:\n\n```bash\nnpm run build\nnpm run start\n```\n\n## 4. Telegram 사용법\n\n- 일반 메시지: 그대로 질문\n- `/init` (최초 1회, 소유자 등록)\n- `/model codex` 또는 `/model claude` (provider 전환)\n- `/model [codex|claude] [effort|default]` (모델 변경)\n- `/models` (매번 새로 조회)\n- `/reset`\n- `/uid`\n- `/help`\n\n모델/effort 예시:\n\n- `/model codex` (Codex로 전환)\n- `/model codex gpt-5.3-codex xhigh` (Codex 모델 + effort 설정)\n- `/model codex gpt-5.3-codex default` (Codex 모델 설정 + effort override 해제)\n- `/model codex default` (Codex 모델/effort override 모두 해제)\n- `/model claude` (Claude로 전환)\n- `/model claude sonnet` (Claude 모델 설정)\n\nCodex effort 지원값:\n\n- `none`, `minimal`, `low`, `medium`, `high`, `xhigh`\n\n참고:\n\n- provider를 생략하면 현재 provider 기준으로 처리됩니다.\n- Claude CLI는 effort 단계 선택을 지원하지 않습니다. (`xhigh` 같은 인자는 무시)\n- `/models`는 실행 시마다 로컬 파일/바이너리에서 목록을 다시 읽습니다. (Codex는 `~/.codex/models_cache.json`)\n- 계정 권한/플랜에 따라 일부 모델은 실제 실행 시 거부될 수 있습니다.\n\n## 참고\n\n- `/init`은 현재 사용자를 소유자(1인)로 등록하고 `.openshell/owner.json`에 저장합니다. (`SESSION_STORE_PATH`와 같은 폴더)\n- OpenShell은 Codex/Claude CLI를 권한 확인 없이 실행하도록 구성되어 있어 위험합니다. 신뢰 가능한 환경에서만 사용하세요.\n- `codex`는 `~/.codex/models_cache.json`에서 모델 목록을 읽습니다.\n- `claude`는 로컬 CLI 바이너리에서 모델 식별자를 추출해 목록을 만듭니다.\n- 모델/effort override와 대화 히스토리는 채팅 단위로 저장되며, 재시작 후 자동 복구됩니다.\n- 세션 저장 파일 위치는 `SESSION_STORE_PATH`로 변경할 수 있습니다.\n- 답글(reply)로 질문하면 원본 메시지 텍스트를 함께 참고합니다.\n- 긴 응답은 Telegram 길이 제한(4096)으로 잘려 표시될 수 있습니다.\n- 동일 채팅에서 여러 질문을 연속 전송하면 내부적으로 순차 처리(큐)되어 응답 꼬임을 줄입니다.\n","readmeFilename":"README.md","_rev":"1-15c200978b9317c2d91cb9d71f619426"}