@inetafrica/open-claudia 1.19.1 → 1.19.3
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/CHANGELOG.md +7 -0
- package/Dockerfile +3 -0
- package/README.md +4 -0
- package/bot-agent.js +7 -1
- package/bot.js +7 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.19.3
|
|
4
|
+
- Owner-only auth commands now recognize chats marked as `isOwner: true` in `auth.json`, not only the first `TELEGRAM_CHAT_ID`. This fixes owner-authenticated Telegram chats being blocked from `/codex_login` and `/codex_setup_token`.
|
|
5
|
+
|
|
6
|
+
## v1.19.2
|
|
7
|
+
- Docker images now bake in the OpenAI Codex CLI (`@openai/codex`), so `/codex` and Codex auth commands are available in container/Kubernetes deployments after rollout.
|
|
8
|
+
- Documented that direct npm installs still need optional backend CLIs installed on the host, while Docker images include the Codex CLI.
|
|
9
|
+
|
|
3
10
|
## v1.19.1
|
|
4
11
|
- `/auth` requests now send the owner Telegram Approve/Deny buttons, while preserving the existing `auth.json` and CLI approval flow.
|
|
5
12
|
|
package/Dockerfile
CHANGED
|
@@ -11,6 +11,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
11
11
|
RUN curl -fsSL https://claude.ai/install.sh | sh || \
|
|
12
12
|
npm install -g @anthropic-ai/claude-code
|
|
13
13
|
|
|
14
|
+
# Install OpenAI Codex CLI for the /codex backend
|
|
15
|
+
RUN npm install -g @openai/codex
|
|
16
|
+
|
|
14
17
|
# Create non-root user (Claude Code refuses --dangerously-skip-permissions as root)
|
|
15
18
|
# node:20-slim already has uid/gid 1000 (node user). Create claudia with different IDs.
|
|
16
19
|
RUN groupadd -g 1001 claudia && useradd -u 1001 -g 1001 -m -d /data claudia
|
package/README.md
CHANGED
|
@@ -66,6 +66,8 @@ codex login # Opens browser to authenticate
|
|
|
66
66
|
codex --version # Verify it works
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
Docker images include the Codex CLI. Direct npm installs still need optional backend CLIs installed on the host.
|
|
70
|
+
|
|
69
71
|
> **Important**: Claude Code can use macOS Keychain when you log in interactively, but a launchd/background bot may not be able to read that Keychain session. Open Claudia v1.14.0 adds Telegram auth helpers and supports `CLAUDE_CODE_OAUTH_TOKEN` for non-interactive Claude runs. Prefer `/setup_token` then `/use_oauth_token` if Telegram shows Claude auth/keychain errors.
|
|
70
72
|
|
|
71
73
|
### 2. Install Open Claudia
|
|
@@ -347,6 +349,8 @@ Send `/upgrade` to update. The bot will:
|
|
|
347
349
|
2. Go offline briefly
|
|
348
350
|
3. Restart and notify you it's back
|
|
349
351
|
|
|
352
|
+
For direct npm installs, `/upgrade` updates Open Claudia itself and does not install optional backend CLIs such as Codex or Cursor Agent. Container deployments should roll out a new Docker image when bundled CLI tools change.
|
|
353
|
+
|
|
350
354
|
## Cron Jobs
|
|
351
355
|
|
|
352
356
|
Schedule recurring tasks:
|
package/bot-agent.js
CHANGED
|
@@ -328,7 +328,13 @@ function isAuthorized(msg) {
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
function isOwner(msg) {
|
|
331
|
-
|
|
331
|
+
const chatId = String(msg.chat.id);
|
|
332
|
+
if (chatId === CHAT_ID) return true;
|
|
333
|
+
try {
|
|
334
|
+
const auth = JSON.parse(fs.readFileSync(AUTH_FILE, "utf-8"));
|
|
335
|
+
return Array.isArray(auth.authorized) && auth.authorized.some((a) => String(a.chatId) === chatId && a.isOwner === true);
|
|
336
|
+
} catch (e) {}
|
|
337
|
+
return false;
|
|
332
338
|
}
|
|
333
339
|
|
|
334
340
|
function loadAuth() {
|
package/bot.js
CHANGED
|
@@ -659,7 +659,13 @@ function isAuthorized(msg) {
|
|
|
659
659
|
}
|
|
660
660
|
|
|
661
661
|
function isOwner(msg) {
|
|
662
|
-
|
|
662
|
+
const chatId = String(msg.chat.id);
|
|
663
|
+
if (chatId === CHAT_ID) return true;
|
|
664
|
+
try {
|
|
665
|
+
const auth = JSON.parse(fs.readFileSync(AUTH_FILE, "utf-8"));
|
|
666
|
+
return Array.isArray(auth.authorized) && auth.authorized.some((a) => String(a.chatId) === chatId && a.isOwner === true);
|
|
667
|
+
} catch (e) {}
|
|
668
|
+
return false;
|
|
663
669
|
}
|
|
664
670
|
|
|
665
671
|
function loadAuth() {
|