@inetafrica/open-claudia 2.2.18 → 2.2.19

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/.env.example CHANGED
@@ -16,6 +16,8 @@ KAZEE_DEBUG_EVENTS=
16
16
 
17
17
  WORKSPACE=/path/to/your/workspace
18
18
  CLAUDE_PATH=/path/to/claude
19
+ # Default Claude Code model when users haven't selected one with /model.
20
+ CLAUDE_MODEL=claude-opus-4-8
19
21
  CURSOR_PATH=
20
22
  CODEX_PATH=
21
23
  AUTO_COMPACT_TOKENS=280000
package/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## v2.2.19
4
+ - Add Claude Opus 4.8 (`claude-opus-4-8`) to the Claude model picker and make it the default Claude Code model used when no per-user model override is selected. The default can still be overridden with `CLAUDE_MODEL`, now documented in `.env.example`.
5
+
3
6
  ## v2.2.18
4
7
  - Fix the legacy Telegram send/edit path so replies default to Telegram HTML parse mode and go through the shared formatter, preventing raw `<b>`, `<a>`, and related tags from leaking in chat.
5
8
  - Preserve safe Telegram HTML tags before Markdown conversion, so underscores inside link URLs such as Higgsfield `wan2_2_video` are not misread as italics and do not break rendered links.
package/bot-agent.js CHANGED
@@ -78,6 +78,7 @@ const CHAT_ID = CHAT_IDS[0]; // Primary owner chat for crons/notifications
78
78
  const WORKSPACE = config.WORKSPACE;
79
79
  const CLAUDE_PATH = config.CLAUDE_PATH;
80
80
  const CURSOR_PATH = config.CURSOR_PATH || null;
81
+ const DEFAULT_CLAUDE_MODEL = config.CLAUDE_MODEL || process.env.CLAUDE_MODEL || "claude-opus-4-8";
81
82
 
82
83
  // Resolve Cursor Agent CLI (optional)
83
84
  let resolvedCursorPath = CURSOR_PATH;
@@ -1148,7 +1149,7 @@ function buildClaudeArgs(prompt, opts = {}) {
1148
1149
  "--append-system-prompt", buildSystemPrompt()];
1149
1150
  if (opts.continueSession) args.push("--continue");
1150
1151
  else if (lastSessionId && !opts.fresh) args.push("--resume", lastSessionId);
1151
- if (settings.model) args.push("--model", settings.model);
1152
+ args.push("--model", settings.model || DEFAULT_CLAUDE_MODEL);
1152
1153
  if (settings.effort) args.push("--effort", settings.effort);
1153
1154
  if (settings.budget) args.push("--max-budget-usd", String(settings.budget));
1154
1155
  if (settings.permissionMode) args.push("--permission-mode", settings.permissionMode);
@@ -1195,7 +1196,7 @@ async function runClaudeChat(prompt, cwd, replyToMsgId) {
1195
1196
  const args = ["-p", "--verbose", "--output-format", "stream-json",
1196
1197
  "--append-system-prompt", buildSystemPrompt(),
1197
1198
  "--dangerously-skip-permissions"];
1198
- if (settings.model) args.push("--model", settings.model);
1199
+ args.push("--model", settings.model || DEFAULT_CLAUDE_MODEL);
1199
1200
  args.push(contextPrompt);
1200
1201
 
1201
1202
  const proc = spawn(CLAUDE_PATH, args, {
@@ -1660,7 +1661,8 @@ bot.onText(/\/model$/, (msg) => {
1660
1661
  [{ text: "GPT-5.4", callback_data: "m:gpt-5.4-medium" }, { text: "GPT-5.4 High", callback_data: "m:gpt-5.4-high" }],
1661
1662
  [{ text: "Auto", callback_data: "m:auto" }, { text: "Default", callback_data: "m:default" }],
1662
1663
  ] : [
1663
- [{ text: "Opus", callback_data: "m:opus" }, { text: "Sonnet", callback_data: "m:sonnet" }, { text: "Haiku", callback_data: "m:haiku" }],
1664
+ [{ text: "Opus 4.8", callback_data: "m:claude-opus-4-8" }, { text: "Opus 4.7", callback_data: "m:claude-opus-4-7" }],
1665
+ [{ text: "Sonnet", callback_data: "m:sonnet" }, { text: "Haiku", callback_data: "m:haiku" }],
1664
1666
  [{ text: "Default", callback_data: "m:default" }],
1665
1667
  ];
1666
1668
  const label = settings.backend === "cursor" ? "Cursor Agent" : "Claude Code";
package/core/config.js CHANGED
@@ -47,6 +47,7 @@ const WORKSPACE = config.WORKSPACE;
47
47
  const CLAUDE_PATH = config.CLAUDE_PATH;
48
48
  const CURSOR_PATH = config.CURSOR_PATH || null;
49
49
  const CODEX_PATH = config.CODEX_PATH || null;
50
+ const DEFAULT_CLAUDE_MODEL = config.CLAUDE_MODEL || process.env.CLAUDE_MODEL || "claude-opus-4-8";
50
51
  const AUTO_COMPACT_TOKENS = parseInt(config.AUTO_COMPACT_TOKENS || process.env.AUTO_COMPACT_TOKENS || "380000", 10);
51
52
  const MIN_COMPACT_INTERVAL_MS = parseInt(config.MIN_COMPACT_INTERVAL_MS || process.env.MIN_COMPACT_INTERVAL_MS || "1800000", 10);
52
53
  const PROJECT_TRANSCRIPTS = configTruthy(config.PROJECT_TRANSCRIPTS || process.env.PROJECT_TRANSCRIPTS, true);
@@ -187,6 +188,7 @@ module.exports = {
187
188
  TOKEN, CHAT_IDS, CHAT_ID,
188
189
  WORKSPACE,
189
190
  CLAUDE_PATH,
191
+ DEFAULT_CLAUDE_MODEL,
190
192
  CURSOR_PATH,
191
193
  CODEX_PATH,
192
194
  resolvedCursorPath,
package/core/handlers.js CHANGED
@@ -9,7 +9,7 @@ const { execSync } = require("child_process");
9
9
  const {
10
10
  WORKSPACE, FULL_PATH, AUTO_COMPACT_TOKENS, CONFIG_DIR,
11
11
  config, saveEnvKey,
12
- CHAT_ID, resolvedCursorPath, resolvedCodexPath, SOUL_FILE,
12
+ CHAT_ID, DEFAULT_CLAUDE_MODEL, resolvedCursorPath, resolvedCodexPath, SOUL_FILE,
13
13
  } = require("./config");
14
14
  const { register } = require("./commands");
15
15
  const { send, deleteMessage } = require("./io");
@@ -535,8 +535,11 @@ register({
535
535
  const rows = [];
536
536
  rows.push([{ text: "── Claude ──", callback_data: "noop" }]);
537
537
  rows.push([
538
+ { text: "Opus 4.8", callback_data: "mb:claude:claude-opus-4-8" },
538
539
  { text: "Opus 4.7", callback_data: "mb:claude:claude-opus-4-7" },
539
540
  { text: "Opus 4.6", callback_data: "mb:claude:claude-opus-4-6" },
541
+ ]);
542
+ rows.push([
540
543
  { text: "Sonnet 4.6", callback_data: "mb:claude:claude-sonnet-4-6" },
541
544
  { text: "Haiku", callback_data: "mb:claude:claude-haiku-4-5-20251001" },
542
545
  ]);
@@ -563,7 +566,7 @@ register({
563
566
  { text: "o4-mini", callback_data: "mb:codex:o4-mini" },
564
567
  ]);
565
568
  }
566
- rows.push([{ text: "Default (current backend)", callback_data: "m:default" }]);
569
+ rows.push([{ text: `Default (Claude: ${DEFAULT_CLAUDE_MODEL})`, callback_data: "m:default" }]);
567
570
  const beLabel = settings.backend === "cursor" ? "Cursor" : settings.backend === "codex" ? "Codex" : "Claude";
568
571
  send(`Current: ${beLabel} · ${settings.model || "default"}\n\nPick a model — backend switches automatically.\nOr type /model <name>.`, { keyboard: { inline_keyboard: rows } });
569
572
  },
package/core/runner.js CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  const { spawn } = require("child_process");
7
7
  const {
8
- CLAUDE_PATH, resolvedCursorPath, resolvedCodexPath,
8
+ CLAUDE_PATH, DEFAULT_CLAUDE_MODEL, resolvedCursorPath, resolvedCodexPath,
9
9
  AUTO_COMPACT_TOKENS, MIN_COMPACT_INTERVAL_MS, MAX_PROCESS_TIMEOUT, COMPACT_SUMMARY_TIMEOUT, botSubprocessEnv,
10
10
  } = require("./config");
11
11
  const { currentState, saveState, recordSession, userOwnsClaudeSession } = require("./state");
@@ -124,7 +124,7 @@ function buildClaudeArgs(prompt, opts = {}) {
124
124
  state.lastSessionId = null;
125
125
  }
126
126
  }
127
- if (settings.model) args.push("--model", settings.model);
127
+ args.push("--model", settings.model || DEFAULT_CLAUDE_MODEL);
128
128
  if (settings.effort) args.push("--effort", settings.effort);
129
129
  if (settings.budget) args.push("--max-budget-usd", String(settings.budget));
130
130
  if (settings.permissionMode) args.push("--permission-mode", settings.permissionMode);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inetafrica/open-claudia",
3
- "version": "2.2.18",
3
+ "version": "2.2.19",
4
4
  "description": "Your always-on AI coding assistant — Claude Code, Cursor Agent, and OpenAI Codex via Telegram or Kazee Chat",
5
5
  "main": "bot.js",
6
6
  "bin": {