요약
현재 cli-jaw는 telegram.enabled=true와 discord.enabled=true를 동시에 설정할 수 있지만, 실제 런타임에서 활성화되는 remote transport는 settings.json의 단일 값인 channel 하나만 따릅니다.
이 때문에 Telegram 설정이 정상이고 Bot API 직접 전송도 성공하는데도, channel=discord 상태에서는 로컬 엔드포인트 POST /api/telegram/send가 Telegram not connected를 반환합니다.
재현 환경
{
"channel": "discord",
"telegram": {
"enabled": true,
"allowedChatIds": [222022825]
},
"discord": {
"enabled": true
}
}
실제 동작
- Telegram token과
allowedChatIds가 설정되어 있음
- Telegram Bot API
getMe, getChat, sendMessage는 성공함
- 하지만 cli-jaw 로컬 엔드포인트는 실패함
POST http://localhost:3457/api/telegram/send
응답:
{
"error": "Telegram not connected"
}
원인은 channel=discord일 때 Telegram transport가 초기화되지 않아 telegramBot이 null 상태로 남기 때문으로 보입니다.
기대 동작 / 개선 제안
선택지는 몇 가지가 있을 것 같습니다.
1. 다중 active remote channel 지원
예:
{
"channels": ["telegram", "discord"]
}
이 경우 Telegram과 Discord transport가 모두 초기화되고, 둘 다 입력/출력 채널로 사용할 수 있습니다.
2. active input channel은 하나로 유지하되 send endpoint는 독립 동작
현재 설계가 “one active remote runtime at a time”이라면, 입력 채널은 하나만 유지하더라도 명시적 send endpoint는 설정된 transport를 사용할 수 있으면 좋겠습니다.
예:
channel=discord → Discord가 기본 대화 채널
telegram.enabled=true → /api/telegram/send는 알림/파일 전달용으로 사용 가능
이 방식이면 heartbeat, report delivery, backup notification처럼 “대화 채널과 알림 채널이 다른” 사용례를 지원할 수 있습니다.
3. 최소 개선: doctor/status에서 명확히 경고
현재는 설정만 보면 Telegram이 켜져 있는 것처럼 보이지만, 실제로는 inactive transport입니다. 그래서 doctor나 status에서 아래처럼 알려주면 좋겠습니다.
Telegram is configured but inactive because channel=discord.
/api/telegram/send will return Telegram not connected until channel=telegram or multi-channel runtime is supported.
관련 기존 이슈
두 이슈 모두 “one active remote runtime at a time”을 전제로 하고 있어서, 이 요청은 버그라기보다는 follow-up enhancement에 가깝다고 생각합니다.
사용 사례
- Discord를 기본 대화 채널로 쓰면서 Telegram으로 알림만 받고 싶음
- Telegram을 백업 채널이나 파일 전달 채널로 유지하고 싶음
- heartbeat/report 결과를 Telegram으로 보내되, 평소 대화는 Discord에서 하고 싶음
- 설정상
telegram.enabled=true인데 /api/telegram/send가 실패하는 혼란을 줄이고 싶음
요약
현재
cli-jaw는telegram.enabled=true와discord.enabled=true를 동시에 설정할 수 있지만, 실제 런타임에서 활성화되는 remote transport는settings.json의 단일 값인channel하나만 따릅니다.이 때문에 Telegram 설정이 정상이고 Bot API 직접 전송도 성공하는데도,
channel=discord상태에서는 로컬 엔드포인트POST /api/telegram/send가Telegram not connected를 반환합니다.재현 환경
2.0.5{ "channel": "discord", "telegram": { "enabled": true, "allowedChatIds": [222022825] }, "discord": { "enabled": true } }실제 동작
allowedChatIds가 설정되어 있음getMe,getChat,sendMessage는 성공함응답:
{ "error": "Telegram not connected" }원인은
channel=discord일 때 Telegram transport가 초기화되지 않아telegramBot이 null 상태로 남기 때문으로 보입니다.기대 동작 / 개선 제안
선택지는 몇 가지가 있을 것 같습니다.
1. 다중 active remote channel 지원
예:
{ "channels": ["telegram", "discord"] }이 경우 Telegram과 Discord transport가 모두 초기화되고, 둘 다 입력/출력 채널로 사용할 수 있습니다.
2. active input channel은 하나로 유지하되 send endpoint는 독립 동작
현재 설계가 “one active remote runtime at a time”이라면, 입력 채널은 하나만 유지하더라도 명시적 send endpoint는 설정된 transport를 사용할 수 있으면 좋겠습니다.
예:
channel=discord→ Discord가 기본 대화 채널telegram.enabled=true→/api/telegram/send는 알림/파일 전달용으로 사용 가능이 방식이면 heartbeat, report delivery, backup notification처럼 “대화 채널과 알림 채널이 다른” 사용례를 지원할 수 있습니다.
3. 최소 개선: doctor/status에서 명확히 경고
현재는 설정만 보면 Telegram이 켜져 있는 것처럼 보이지만, 실제로는 inactive transport입니다. 그래서
doctor나status에서 아래처럼 알려주면 좋겠습니다.관련 기존 이슈
두 이슈 모두 “one active remote runtime at a time”을 전제로 하고 있어서, 이 요청은 버그라기보다는 follow-up enhancement에 가깝다고 생각합니다.
사용 사례
telegram.enabled=true인데/api/telegram/send가 실패하는 혼란을 줄이고 싶음