@agentikos/omega-os 0.19.53 → 0.19.55
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/bootstrap/lib/__pycache__/claude-code-settings.cpython-313.pyc +0 -0
- package/bootstrap/lib/claude-code-settings.py +10 -0
- package/bootstrap/lib/steps.sh +29 -16
- package/omega/Agentik_Engine/omega_engine/__init__.py +1 -1
- package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cli.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tui.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/cli.py +21 -4
- package/omega/Agentik_Engine/omega_engine/tui.py +53 -0
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/package.json +1 -1
|
Binary file
|
|
@@ -116,6 +116,11 @@ def apply_settings(
|
|
|
116
116
|
agent_teams = bool(cfg.get("experimental_agent_teams", True))
|
|
117
117
|
bypass = bool(cfg.get("bypass_permissions", True))
|
|
118
118
|
audit_gate = bool(cfg.get("audit_gate", True))
|
|
119
|
+
# v0.19.55 — default model is OPUS (was: whatever the user had —
|
|
120
|
+
# which on fresh Claude Code installs is sonnet). Gareth's CLAUDE.md
|
|
121
|
+
# is explicit: "Always opus — unlimited." For Max OAuth there's no
|
|
122
|
+
# per-call cost, so opus everywhere is the right default.
|
|
123
|
+
default_model = cfg.get("default_model", "opus")
|
|
119
124
|
|
|
120
125
|
settings_file.parent.mkdir(parents=True, exist_ok=True)
|
|
121
126
|
if settings_file.exists():
|
|
@@ -142,6 +147,11 @@ def apply_settings(
|
|
|
142
147
|
# We previously set it; revert to "default" so the per-tool dialog returns.
|
|
143
148
|
perms["defaultMode"] = "default"
|
|
144
149
|
|
|
150
|
+
# 2b. Default model — opus by default (Gareth's "Always opus" rule).
|
|
151
|
+
# Operator can override via manifest: `default_model: sonnet|haiku`.
|
|
152
|
+
if default_model and isinstance(default_model, str):
|
|
153
|
+
settings["model"] = default_model
|
|
154
|
+
|
|
145
155
|
# 3. Stop hook.
|
|
146
156
|
hooks = _ensure_dict(settings, "hooks")
|
|
147
157
|
stop_entries = _ensure_list(hooks, "Stop")
|
package/bootstrap/lib/steps.sh
CHANGED
|
@@ -427,6 +427,15 @@ step_claude_code_settings() {
|
|
|
427
427
|
}
|
|
428
428
|
|
|
429
429
|
step_engine() {
|
|
430
|
+
# v0.19.54 — neutralize broken claude-mem here too, NOT just in
|
|
431
|
+
# step_claude_plugins. The plugins step can be skipped/idempotent on
|
|
432
|
+
# re-install, but step_engine ALWAYS re-runs on version drift (it's
|
|
433
|
+
# in the force-rerun list). This guarantees the broken plugin is
|
|
434
|
+
# disabled on every upgrade, even if step 45 is somehow skipped.
|
|
435
|
+
if declare -f _disable_broken_claude_plugins >/dev/null 2>&1; then
|
|
436
|
+
_disable_broken_claude_plugins
|
|
437
|
+
fi
|
|
438
|
+
|
|
430
439
|
local uv_bin; uv_bin="$(command -v uv || echo "$HOME/.local/bin/uv")"
|
|
431
440
|
[ -x "$uv_bin" ] || { err "uv not found after step 10"; return 1; }
|
|
432
441
|
cd "$OMEGA_HOME/Agentik_Engine" || { err "engine block missing"; return 1; }
|
|
@@ -1103,27 +1112,31 @@ _disable_broken_claude_plugins() {
|
|
|
1103
1112
|
esac
|
|
1104
1113
|
# Disable if EITHER signal fires.
|
|
1105
1114
|
if [ "$broken_by_content" = "1" ] || [ "$broken_by_version" = "1" ]; then
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1115
|
+
# v0.19.55 — NUKE the plugin dir entirely (rm -rf), not just rename.
|
|
1116
|
+
# Renaming wasn't enough: Claude Code's marketplace re-resolver was
|
|
1117
|
+
# finding the renamed dir as a "stale ghost" and re-loading it. With
|
|
1118
|
+
# a complete delete + a .do-not-install marker, Claude Code can no
|
|
1119
|
+
# longer load it from cache. User can re-install via the marketplace
|
|
1120
|
+
# when upstream ships the zod 4 fix.
|
|
1121
|
+
if rm -rf "$cm" 2>/dev/null; then
|
|
1122
|
+
local reason=""
|
|
1123
|
+
[ "$broken_by_content" = "1" ] && reason="zod/v3 import"
|
|
1124
|
+
[ "$broken_by_version" = "1" ] && reason="${reason:+$reason + }known-broken 13.x"
|
|
1125
|
+
info " removed claude-mem $version_dir ($reason)"
|
|
1126
|
+
info " → SessionStart hook will no longer crash on \`claude\` start"
|
|
1127
|
+
# Drop a marker so we can detect if claude re-installs it
|
|
1128
|
+
# automatically and tell the user.
|
|
1129
|
+
mkdir -p "${HOME}/.claude/plugins" 2>/dev/null
|
|
1130
|
+
touch "${HOME}/.claude/plugins/.claude-mem-disabled-by-omegaos"
|
|
1131
|
+
found=1
|
|
1118
1132
|
else
|
|
1119
|
-
|
|
1133
|
+
warn " could not remove claude-mem at $cm — manual: \`rm -rf $cm\`"
|
|
1120
1134
|
fi
|
|
1121
1135
|
fi
|
|
1122
1136
|
done
|
|
1123
1137
|
if [ "$found" = "1" ]; then
|
|
1124
|
-
info " → re-
|
|
1125
|
-
info "
|
|
1126
|
-
info " ${cache_dir}/thedotmack/claude-mem/<version>"
|
|
1138
|
+
info " → re-install when upstream ships zod 4 fix:"
|
|
1139
|
+
info " claude plugin install claude-mem@thedotmack"
|
|
1127
1140
|
fi
|
|
1128
1141
|
return 0
|
|
1129
1142
|
}
|
|
@@ -27,7 +27,7 @@ from __future__ import annotations
|
|
|
27
27
|
import importlib
|
|
28
28
|
from typing import Any
|
|
29
29
|
|
|
30
|
-
__version__ = "0.19.
|
|
30
|
+
__version__ = "0.19.55"
|
|
31
31
|
|
|
32
32
|
# Public-name → (module_path, attribute_name) map.
|
|
33
33
|
# ``attribute_name = None`` means "return the whole module" (used for the
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2949,11 +2949,28 @@ def _attach_or_spawn_chat(session_name: str, *,
|
|
|
2949
2949
|
print(f" could not spawn {label}: {exc}")
|
|
2950
2950
|
print(f" try manually: tmux new -d -s {session_name}")
|
|
2951
2951
|
return 2
|
|
2952
|
-
# Inside tmux already?
|
|
2952
|
+
# Inside tmux already? Do the switch ourselves — v0.19.54 fix.
|
|
2953
|
+
# Previously we PRINTED instructions ("Switch with: tmux switch-client
|
|
2954
|
+
# -t Omega:hermes") and exited, leaving the user staring at a useless
|
|
2955
|
+
# hint. Same bug pattern as cmd_menu had in v0.19.40 (fixed v0.19.41).
|
|
2956
|
+
# tmux switch-client works fine from inside a tmux client and is
|
|
2957
|
+
# exactly what the user wants.
|
|
2953
2958
|
if os.environ.get("TMUX"):
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2959
|
+
import subprocess as _sp
|
|
2960
|
+
# Window of Omega session, or standalone session — try
|
|
2961
|
+
# select-window first (for Omega:<name>), then switch-client.
|
|
2962
|
+
if ":" in session_name:
|
|
2963
|
+
sess, win = session_name.split(":", 1)
|
|
2964
|
+
rc = _sp.run(["tmux", "select-window", "-t", session_name],
|
|
2965
|
+
capture_output=True).returncode
|
|
2966
|
+
if rc != 0:
|
|
2967
|
+
_sp.run(["tmux", "switch-client", "-t", sess],
|
|
2968
|
+
capture_output=True)
|
|
2969
|
+
_sp.run(["tmux", "select-window", "-t", session_name],
|
|
2970
|
+
capture_output=True)
|
|
2971
|
+
else:
|
|
2972
|
+
_sp.run(["tmux", "switch-client", "-t", session_name],
|
|
2973
|
+
capture_output=True)
|
|
2957
2974
|
return 0
|
|
2958
2975
|
# Outside tmux — replace this process with `tmux attach`.
|
|
2959
2976
|
print(f" attaching to {label} ({session_name})…")
|
|
@@ -615,6 +615,19 @@ def _arrow_menu() -> int:
|
|
|
615
615
|
|
|
616
616
|
items.append(("", "__sep__"))
|
|
617
617
|
|
|
618
|
+
# ── + NEW LLM SESSION ──────────────────────────────────────────
|
|
619
|
+
# v0.19.55 — direct access to every supported LLM CLI.
|
|
620
|
+
items.append((_section("+ NEW LLM SESSION"), "__sep__"))
|
|
621
|
+
items.append((_label("+ Claude Code", "Anthropic · Max OAuth"), "open:llm:claude_code"))
|
|
622
|
+
items.append((_label("+ Gemini CLI", "Google AI"), "open:llm:gemini_cli"))
|
|
623
|
+
items.append((_label("+ Codex", "OpenAI"), "open:llm:codex"))
|
|
624
|
+
items.append((_label("+ GLM", "Zhipu (zhipuai SDK)"), "open:llm:glm_sdk"))
|
|
625
|
+
items.append((_label("+ Qwen Code", "Alibaba"), "open:llm:qwen_code"))
|
|
626
|
+
items.append((_label("+ OpenCode", "multi-provider gateway"), "open:llm:opencode"))
|
|
627
|
+
items.append((_label("+ Aider", "AI pair programmer"), "open:llm:aider"))
|
|
628
|
+
items.append((_label("+ Continue.dev", "VS Code-style"), "open:llm:continue_dev"))
|
|
629
|
+
items.append(("", "__sep__"))
|
|
630
|
+
|
|
618
631
|
# ── QUICK ACTIONS ───────────────────────────────────────────────
|
|
619
632
|
items.append((_section("QUICK ACTIONS"), "__sep__"))
|
|
620
633
|
items.append((_label("+ New AISB chat", "fresh session"), "open:aisb:new"))
|
|
@@ -665,6 +678,10 @@ def _arrow_menu() -> int:
|
|
|
665
678
|
(_label("Accounts", "Claude Max pool"), "accounts:menu"),
|
|
666
679
|
(_label("Vault", "encrypted secrets"), "vault:menu"),
|
|
667
680
|
("", "__sep__"),
|
|
681
|
+
# v0.19.55 — Telegram bot setup wizard.
|
|
682
|
+
(_label("Telegram bot", "configure bot token + webhook"), "telegram:setup"),
|
|
683
|
+
(_label("Hermès API key", "set ANTHROPIC_API_KEY_HERMES"), "hermes:setkey"),
|
|
684
|
+
("", "__sep__"),
|
|
668
685
|
(_label("← back"), "back"),
|
|
669
686
|
]
|
|
670
687
|
if name == "infra":
|
|
@@ -895,6 +912,42 @@ def _arrow_menu() -> int:
|
|
|
895
912
|
if audit_id:
|
|
896
913
|
_run_inline([OMEGA_BIN, "audit", audit_id])
|
|
897
914
|
continue
|
|
915
|
+
# v0.19.55 — generic LLM spawn: open:llm:<cli_id>
|
|
916
|
+
if action.startswith("open:llm:"):
|
|
917
|
+
llm_id = action.split(":", 2)[2]
|
|
918
|
+
# Map LLM id → bin name (matches bootstrap/lib/llm-clis.py catalog)
|
|
919
|
+
_LLM_BIN = {
|
|
920
|
+
"claude_code": "claude", "gemini_cli": "gemini",
|
|
921
|
+
"codex": "codex", "glm_sdk": "python3 -c 'import zhipuai'",
|
|
922
|
+
"qwen_code": "qwen", "opencode": "opencode",
|
|
923
|
+
"aider": "aider", "continue_dev": "cn",
|
|
924
|
+
}
|
|
925
|
+
bin_cmd = _LLM_BIN.get(llm_id, llm_id)
|
|
926
|
+
if not shutil.which(bin_cmd.split()[0]):
|
|
927
|
+
_run_inline(
|
|
928
|
+
f"echo ' {llm_id} ({bin_cmd}) not installed. Run:' && "
|
|
929
|
+
f"echo ' {OMEGA_BIN} tool install {llm_id}'",
|
|
930
|
+
shell=True,
|
|
931
|
+
)
|
|
932
|
+
continue
|
|
933
|
+
# Spawn as Omega window with the CLI's persona context dir.
|
|
934
|
+
persona = HOME / "Agentik_SSOT" / "agents" / "aisb" / "CLAUDE.md"
|
|
935
|
+
ctx_dir = tmux._ensure_chat_context_dir(HOME, llm_id, persona)
|
|
936
|
+
tmux.spawn_chat_in_omega(
|
|
937
|
+
llm_id, ctx_dir=ctx_dir, run_command=bin_cmd,
|
|
938
|
+
force_replace=False,
|
|
939
|
+
)
|
|
940
|
+
subprocess.run(["tmux", "select-window", "-t", f"Omega:{llm_id}"])
|
|
941
|
+
continue
|
|
942
|
+
if action == "telegram:setup":
|
|
943
|
+
_run_inline([OMEGA_BIN, "telegram", "setup"])
|
|
944
|
+
continue
|
|
945
|
+
if action == "hermes:setkey":
|
|
946
|
+
key = _prompt("ANTHROPIC_API_KEY_HERMES (sk-ant-…)")
|
|
947
|
+
if key:
|
|
948
|
+
_run_inline([OMEGA_BIN, "vault", "write",
|
|
949
|
+
"ANTHROPIC_API_KEY_HERMES", key])
|
|
950
|
+
continue
|
|
898
951
|
# (v0.19.31 open:aisb / open:hermes legacy handlers removed in
|
|
899
952
|
# v0.19.39 — the new unified handlers above (which accept both
|
|
900
953
|
# plain and `:new` variants) cover the same surface.)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.55
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.55",
|
|
4
4
|
"description": "Omega OS — installable agentic operating system with verified-completion orchestration. Event-sourced engine, 8-block rack, autonomous agents, MCP.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"omega-os": "bin/omega-os.js"
|