@inetafrica/open-claudia 3.4.4 → 3.4.5

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v3.4.5 — Astra on the picker, two shortcuts fewer
4
+
5
+ - **gpt-6-astra is offered by the codex provider.** OpenAI rolled GPT-6 (Astra) out to ChatGPT-plan Codex accounts on 2026-09-05 — the earlier 400 (`not supported when using Codex with a ChatGPT account`) was a staged rollout, not client staleness. It sits first in `CODEX_MODELS`, so it appears as a `/model` button; the typed form `/model gpt-6-astra` already worked because the typed path never validated against the list. The default model is unchanged (`gpt-5.6-sol` unless `CODEX_MODEL` is set).
6
+ - **`/claude` and `/codex` are gone.** They were one-line aliases of `/backend claude|codex`, and the `/model` picker switches the backend by itself, so three ways to do one thing became one. `/backend` stays.
7
+ - **Codex CLI: the Dockerfile installs `@openai/codex` unpinned, so every image build bakes the then-latest CLI; a running pod keeps whatever its image carried until the next build + roll.** This release's image picks up 0.153.4.
8
+
3
9
  ## v3.4.4 — The room's model was saved, shown, and never once used
4
10
 
5
11
  - **A model pinned in a room was silently ignored by every turn in it.** `/model` wrote the choice to the room, `/status` read it back from the room, and the picker highlighted it — all three already room-aware. Only the code that actually launches the provider was not: `captureRunContext` read `state.providerSettings[provider]`, the *speaker's* own bucket, so the room's pinned model was never consulted. The setting looked applied everywhere a human could look while every turn ran the personal default.
package/Dockerfile CHANGED
@@ -8,7 +8,7 @@ FROM ${BASE_IMAGE}
8
8
  RUN curl -fsSL https://claude.ai/install.sh | sh || \
9
9
  npm install -g @anthropic-ai/claude-code
10
10
 
11
- # Install OpenAI Codex CLI for the /codex backend
11
+ # Install OpenAI Codex CLI for the codex backend (unpinned: each image build bakes the then-latest CLI)
12
12
  RUN npm install -g @openai/codex
13
13
 
14
14
  # Browser automation for the agent: vercel-labs agent-browser (Rust CLI, token-efficient,
package/README.md CHANGED
@@ -8,7 +8,7 @@ Send text, voice notes, screenshots, and files from your phone. Open Claudia run
8
8
 
9
9
  ### Channels & providers
10
10
  - **Multi-channel** — run the same bot on Telegram, Kazee Chat, or both at once (`CHANNELS=telegram,kazee`). Each channel renders keyboards, files, voice notes, and edits natively
11
- - **Multi-provider** — switch between Claude Code and OpenAI Codex on the fly (`/claude`, `/codex`); each keeps its own project-scoped session state
11
+ - **Multi-provider** — switch between Claude Code and OpenAI Codex on the fly (`/backend claude|codex`, or pick a model in `/model`); each keeps its own project-scoped session state
12
12
  - **Multi-user / team mode** — one bot serves multiple authorized users in parallel, each with their own conversations, settings, model, provider, and usage counters
13
13
  - **Multi-project sessions** — switch between workspace projects; per-project conversation history auto-resumes
14
14
 
@@ -137,8 +137,6 @@ If installed as a background service, the bot starts automatically on login and
137
137
 
138
138
  | Command | Description |
139
139
  |---------|-------------|
140
- | `/claude` | Switch to the Claude Code provider |
141
- | `/codex` | Switch to the OpenAI Codex provider |
142
140
  | `/backend` | Show the current provider with picker |
143
141
 
144
142
  Each provider keeps its own persistent project session. Switching doesn't lose your place — you can go back and forth freely.
package/core/handlers.js CHANGED
@@ -1537,30 +1537,6 @@ register({
1537
1537
  },
1538
1538
  });
1539
1539
 
1540
- async function switchProviderCommand(env, providerId) {
1541
- if (!authorized(env)) return;
1542
- const provider = providerFromRegistry(providerId);
1543
- if (!provider) return send(`Unknown provider: ${providerId}`);
1544
- if (!providerAvailability(provider)) {
1545
- return send(`${provider.label} is unavailable. Install its CLI or configure its path, then run /doctor.`);
1546
- }
1547
- const state = currentState();
1548
- const switched = switchProviderState(provider.id, { state });
1549
- if (!switched.ok) return send(`Could not switch provider: ${switched.error.message}`);
1550
- const session = switched.sessionId ? `\nSession: ${switched.sessionId.slice(0, 8)}...` : "\nNew session.";
1551
- return send(`Switched to ${provider.label}.${session}`);
1552
- }
1553
-
1554
- register({
1555
- name: "claude", description: "Switch to Claude Code provider",
1556
- handler: async (env) => switchProviderCommand(env, "claude"),
1557
- });
1558
-
1559
- register({
1560
- name: "codex", description: "Switch to OpenAI Codex provider",
1561
- handler: async (env) => switchProviderCommand(env, "codex"),
1562
- });
1563
-
1564
1540
  register({
1565
1541
  name: "backend", description: "Show/switch active provider", args: "[claude|codex]",
1566
1542
  handler: async (env, { tail }) => {
@@ -7,7 +7,8 @@ const { createCodexParserState, normalizeCodexEvent } = require("./codex-events"
7
7
  const { createCodexHookTransport } = require("./codex-hook");
8
8
 
9
9
  // gpt-5.6-sol-pro is rejected on ChatGPT-plan auth (400 from the API); it needs API-key billing.
10
- const CODEX_MODELS = Object.freeze(["gpt-5.6-sol", "gpt-5.6-sol-pro", "gpt-5.6-terra", "gpt-5.6-luna"]);
10
+ // gpt-6-astra (GPT-6) reached ChatGPT-plan accounts on 2026-09-05; verified live with codex 0.153.
11
+ const CODEX_MODELS = Object.freeze(["gpt-6-astra", "gpt-5.6-sol", "gpt-5.6-sol-pro", "gpt-5.6-terra", "gpt-5.6-luna"]);
11
12
  // max + ultra verified live against codex 0.144 (ultra = proactive multi-agent behavior).
12
13
  const CODEX_EFFORT_VALUES = Object.freeze(["minimal", "low", "medium", "high", "xhigh", "max", "ultra"]);
13
14
  const REQUIRED_EXEC_HELP_FLAGS = Object.freeze(["--config", "--json", "--sandbox", "--image", "--model", "--skip-git-repo-check"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inetafrica/open-claudia",
3
- "version": "3.4.4",
3
+ "version": "3.4.5",
4
4
  "description": "An always-on, provider-agnostic coding-agent harness for Claude Code and OpenAI Codex via chat",
5
5
  "main": "bot.js",
6
6
  "bin": {
@@ -46,7 +46,7 @@ assert.strictEqual(provider.label, "OpenAI Codex");
46
46
  assert.strictEqual(provider.isAvailable(), true);
47
47
  assert.strictEqual(provider.executable(), "/fixture/codex");
48
48
  assert.strictEqual(provider.defaultModel(), "gpt-5-codex");
49
- assert.deepStrictEqual(provider.modelChoices(), ["gpt-5.6-sol", "gpt-5.6-sol-pro", "gpt-5.6-terra", "gpt-5.6-luna"]);
49
+ assert.deepStrictEqual(provider.modelChoices(), ["gpt-6-astra", "gpt-5.6-sol", "gpt-5.6-sol-pro", "gpt-5.6-terra", "gpt-5.6-luna"]);
50
50
  assert.ok(!provider.modelChoices().includes("o4-mini"));
51
51
  assert.deepStrictEqual(provider.compatibilityStatus(), {
52
52
  state: "compatible",
@@ -449,7 +449,14 @@ assert.match(pkg.description, /provider-agnostic coding-agent harness/i);
449
449
  // code with exactly the reported symptom. Also ships the Kazee inbound
450
450
  // dedupe: chat-central fans message:new to both the chat room and each user
451
451
  // room, and v3.4.2's room join put the bot in both, so it replied twice.
452
- assert.strictEqual(pkg.version, "3.4.4", "release version must remain unchanged without explicit approval");
452
+ // 3.4.5 approved by Sumeet 2026-09-05 ("Can you update open Claudia model
453
+ // picker /model ... /codex probably worth getting rid off. Then I think let's
454
+ // upgrade the CLI to the latest"): gpt-6-astra reached ChatGPT-plan accounts
455
+ // on 2026-09-05 (the 400 was a staged rollout, not client staleness), so it
456
+ // joins CODEX_MODELS first; the /claude and /codex shortcuts go — /backend and
457
+ // the /model picker already switch providers; Codex CLI bumped to 0.153.4 on
458
+ // the operator host and the image (unpinned install) picks it up at build.
459
+ assert.strictEqual(pkg.version, "3.4.5", "release version must remain unchanged without explicit approval");
453
460
  for (const keyword of ["claude", "codex", "coding-agent", "provider-agnostic"]) {
454
461
  assert.ok(pkg.keywords.includes(keyword), `package keyword missing: ${keyword}`);
455
462
  }
@@ -139,10 +139,12 @@ function restartProbe() {
139
139
 
140
140
  function commandRegistrationProbe() {
141
141
  const names = new Set(commands.list().map((command) => command.name));
142
- for (const name of ["new", "end", "continue", "backend", "claude", "codex"]) assert.ok(names.has(name), `/${name} registered`);
142
+ for (const name of ["new", "end", "continue", "backend"]) assert.ok(names.has(name), `/${name} registered`);
143
+ // v3.4.5: the /claude and /codex aliases were removed — /backend and the /model picker switch providers.
144
+ for (const name of ["claude", "codex"]) assert.ok(!names.has(name), `/${name} must no longer be registered`);
143
145
  const source = fs.readFileSync(path.join(root, "core", "handlers.js"), "utf8");
144
- assert.match(source, /name: "claude"[\s\S]*switchProviderCommand\(env, "claude"/);
145
- assert.match(source, /name: "codex"[\s\S]*switchProviderCommand\(env, "codex"/);
146
+ assert.doesNotMatch(source, /switchProviderCommand/, "the per-provider shortcut helper went with the aliases");
147
+ assert.match(source, /name: "backend"[\s\S]*switchProviderState\(descriptor\.id\)/);
146
148
  assert.match(source, /name: "continue"[\s\S]*activeContinueOptions/);
147
149
  const actions = fs.readFileSync(path.join(root, "core", "actions.js"), "utf8");
148
150
  assert.match(actions, /switchProviderState/);