@buzzni/saycode-cli 0.1.0 → 0.1.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 +38 -9
- package/THIRD-PARTY-NOTICES.md +1 -29
- package/index.mjs +709 -2040
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,9 +31,10 @@ saycode # 터미널이면 탐색기, 파이프면 도움말
|
|
|
31
31
|
| `r` | 새로고침 |
|
|
32
32
|
| `q` / `Ctrl+C` | 종료 |
|
|
33
33
|
|
|
34
|
-
대화 목록 맨 위의 **`+ New conversation
|
|
35
|
-
경로를 다시 입력할 필요가 없습니다.
|
|
36
|
-
|
|
34
|
+
프로젝트에 원격 작업 경로가 기록돼 있으면 대화 목록 맨 위의 **`+ New conversation`**으로 새 대화를
|
|
35
|
+
시작할 수 있습니다 — 경로를 다시 입력할 필요가 없습니다. 경로가 없는 예전 프로젝트에서는 실패하는
|
|
36
|
+
항목을 보여주지 않으며, 필요하면 `chat -m <machine> -d <path>`를 사용하세요. 기존 대화에 들어가면
|
|
37
|
+
직전 대화가 먼저 재생된 뒤 이어서 입력할 수 있습니다.
|
|
37
38
|
|
|
38
39
|
`saycode watch`에서도 `Enter`로 그 세션에 바로 들어갈 수 있습니다.
|
|
39
40
|
|
|
@@ -64,12 +65,25 @@ saycode login # email/password → ~/.saycode/credentials.v1.json (권한 60
|
|
|
64
65
|
saycode logout
|
|
65
66
|
```
|
|
66
67
|
|
|
68
|
+
비밀번호는 화면에 표시되지 않으며, 비밀번호 관리자에서 붙여넣은 뒤 Enter를 함께 입력해도 정상 처리됩니다.
|
|
69
|
+
|
|
67
70
|
| 환경변수 | 용도 |
|
|
68
71
|
|---|---|
|
|
69
72
|
| `SAYCODE_HAPPY_HOME` | 특정 Happy 홈을 지정 — 저장된 로그인보다 **우선** |
|
|
70
73
|
| `SAYCODE_SERVER_URL` | 다른 서버 지정 (기본 `https://saycode.ai`) |
|
|
71
74
|
| `NO_COLOR` / `FORCE_COLOR` | 색 출력 강제 해제/설정 |
|
|
72
75
|
|
|
76
|
+
## 실시간 연결 문제
|
|
77
|
+
|
|
78
|
+
대화를 열 때 CLI는 `https://saycode.ai/v1/updates`의 WebSocket 연결을 사용합니다. 첫 handshake가
|
|
79
|
+
멈추면 기존 15초 예산 안에서 최대 3회 새로 연결하며, 같은 워크스페이스의 탐색기에서는 성공한
|
|
80
|
+
연결을 다음 대화에도 재사용합니다.
|
|
81
|
+
|
|
82
|
+
최종 오류가 `Realtime WebSocket /v1/updates`를 가리키면 채팅 이력이나 프로젝트 목록이 아니라
|
|
83
|
+
실시간 연결 단계가 실패한 것입니다. 한 번 다시 시도하고, 반복되면 VPN·프록시·회사 네트워크가
|
|
84
|
+
WebSocket을 막는지 확인하세요. CLI는 sticky session이 없는 서버에서 깨지는 Socket.IO polling으로
|
|
85
|
+
강등하지 않습니다.
|
|
86
|
+
|
|
73
87
|
## 사용
|
|
74
88
|
|
|
75
89
|
```bash
|
|
@@ -89,15 +103,22 @@ saycode chat -s <session> # 기존 세션 이어서 대화 (직전 20개
|
|
|
89
103
|
|
|
90
104
|
## 대화에서 나가기
|
|
91
105
|
|
|
92
|
-
|
|
106
|
+
채팅 하단 상태가 현재 입력 가능 여부를 그대로 나타냅니다.
|
|
93
107
|
|
|
94
108
|
```
|
|
95
|
-
|
|
109
|
+
● Ready — you can type
|
|
110
|
+
› 다음 작업을 진행해줘
|
|
111
|
+
● Agent is responding — input locked · Ctrl+C for options
|
|
96
112
|
⏺ Bash(npm test)
|
|
97
113
|
│ running tests...
|
|
98
114
|
^C [Enter] keep watching · [d] detach, agent keeps working · [s] stop the response
|
|
99
115
|
```
|
|
100
116
|
|
|
117
|
+
`Agent is responding` 동안 stdin은 raw/no-echo로 잠겨 일반 문자와 Enter가 화면에 나타나거나 다음
|
|
118
|
+
프롬프트에 쌓이지 않습니다. 권한 요청 때만 `◆ Action required — permission response only`로 바뀌고
|
|
119
|
+
해당 선택 입력을 받습니다. 에이전트 턴이 끝나 `Ready`가 표시된 뒤에만 일반 프롬프트가 열립니다.
|
|
120
|
+
|
|
121
|
+
에이전트가 작업 중일 때 **`Ctrl+C`를 누르면 선택지가 뜹니다.**
|
|
101
122
|
한 글자만 누르면 됩니다 (Enter 불필요). `Ctrl+C`를 한 번 더 누르면 `d`와 같습니다 —
|
|
102
123
|
반복해서 누르는 건 "빨리 나가자"는 뜻이고, 나가는 건 되돌릴 수 있지만 작업을 죽이는 건
|
|
103
124
|
되돌릴 수 없기 때문입니다.
|
|
@@ -114,9 +135,17 @@ saycode chat -s <session> # 기존 세션 이어서 대화 (직전 20개
|
|
|
114
135
|
**어느 경우에도 원격 세션은 죽지 않습니다.** 데스크탑이나 다른 터미널에서 하던 작업을
|
|
115
136
|
CLI를 닫았다는 이유로 파괴하지 않습니다.
|
|
116
137
|
|
|
117
|
-
응답이 오래 걸릴 때
|
|
138
|
+
응답이 오래 걸릴 때 `Ctrl+C` → `d`로 빠져나와 `saycode watch`로 진행만 지켜보다가,
|
|
118
139
|
끝나면 `saycode chat -s <id>`로 돌아오는 흐름을 의도했습니다.
|
|
119
140
|
|
|
141
|
+
## 답변 표시
|
|
142
|
+
|
|
143
|
+
에이전트 답변의 제목·목록·인용·굵게·기울임·취소선·인라인 코드·링크·fenced code block을
|
|
144
|
+
터미널 표현으로 바꾸고, 현재 터미널 폭에서 좌우 여백을 뺀 최대 100열로 줄바꿈합니다. 한글과
|
|
145
|
+
emoji의 표시 폭도 반영합니다. 링크는 파이프 출력에서도 목적지를 잃지 않도록 URL을 함께 남깁니다.
|
|
146
|
+
긴 도구 stdout은 첫 3줄까지만 표시하고 종료 시 생략한 줄 수와 마지막 줄을 요약하며, stderr는
|
|
147
|
+
숨기지 않습니다. `NO_COLOR`이거나 파이프로 출력해도 `◆`, `•`, `│`, `┌─` 같은 구조 표시는 남습니다.
|
|
148
|
+
|
|
120
149
|
## 권한 승인
|
|
121
150
|
|
|
122
151
|
에이전트가 권한을 요청하면 인라인으로 물어봅니다.
|
|
@@ -140,11 +169,11 @@ GitHub Actions 가 태그로 발행합니다 (`.github/workflows/publish-saycode
|
|
|
140
169
|
|
|
141
170
|
```bash
|
|
142
171
|
# 1. 버전 올리기 — 데스크탑 앱 버전과 무관합니다
|
|
143
|
-
vi cli/manifest.json # "version": "0.1.
|
|
172
|
+
vi cli/manifest.json # "version": "0.1.2"
|
|
144
173
|
|
|
145
174
|
# 2. 커밋하고 태그를 밀면 끝
|
|
146
|
-
git tag saycode-cli-v0.1.
|
|
147
|
-
git push origin saycode-cli-v0.1.
|
|
175
|
+
git tag saycode-cli-v0.1.2
|
|
176
|
+
git push origin saycode-cli-v0.1.2
|
|
148
177
|
```
|
|
149
178
|
|
|
150
179
|
워크플로는 발행 전에 이 순서로 막습니다:
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
The `saycode` binary is distributed as a single bundled file. The packages
|
|
4
4
|
below are compiled into it and remain under their own licenses.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
12 package(s).
|
|
7
7
|
|
|
8
8
|
## @socket.io/component-emitter@3.1.2
|
|
9
9
|
|
|
@@ -164,34 +164,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
164
164
|
SOFTWARE.
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
## react@19.2.7
|
|
168
|
-
|
|
169
|
-
License: MIT
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
MIT License
|
|
173
|
-
|
|
174
|
-
Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
175
|
-
|
|
176
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
177
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
178
|
-
in the Software without restriction, including without limitation the rights
|
|
179
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
180
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
181
|
-
furnished to do so, subject to the following conditions:
|
|
182
|
-
|
|
183
|
-
The above copyright notice and this permission notice shall be included in all
|
|
184
|
-
copies or substantial portions of the Software.
|
|
185
|
-
|
|
186
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
187
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
188
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
189
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
190
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
191
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
192
|
-
SOFTWARE.
|
|
193
|
-
```
|
|
194
|
-
|
|
195
167
|
## socket.io-client@4.8.3
|
|
196
168
|
|
|
197
169
|
License: MIT
|