@agentikos/omega-os 0.19.55 → 0.19.56

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.
@@ -101,7 +101,7 @@ run_step() {
101
101
  # from refreshing cli.py — the bug the user hit on v0.19.43.
102
102
  local _force_step=0
103
103
  case "$name" in
104
- *structure*|*aisb-suite*|*audit-skills*|*engine*|*personas*|*claude-plugins*|*tmux-config*)
104
+ *structure*|*aisb-suite*|*audit-skills*|*engine*|*personas*|*claude-plugins*|*tmux-config*|*claude-code-settings*)
105
105
  local _installed_v=""
106
106
  [ -f "$OMEGA_HOME/Agentik_SSOT/VERSION" ] \
107
107
  && _installed_v="$(cat "$OMEGA_HOME/Agentik_SSOT/VERSION" 2>/dev/null || echo '')"
@@ -1112,31 +1112,74 @@ _disable_broken_claude_plugins() {
1112
1112
  esac
1113
1113
  # Disable if EITHER signal fires.
1114
1114
  if [ "$broken_by_content" = "1" ] || [ "$broken_by_version" = "1" ]; then
1115
- # v0.19.55NUKE 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.
1115
+ # v0.19.56rm -rf wasn't enough either: Claude Code re-downloads
1116
+ # the plugin at startup if it's still registered in settings.json
1117
+ # / marketplaces.json. We MUST also remove the registration.
1121
1118
  if rm -rf "$cm" 2>/dev/null; then
1122
1119
  local reason=""
1123
1120
  [ "$broken_by_content" = "1" ] && reason="zod/v3 import"
1124
1121
  [ "$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"
1122
+ info " removed cache: claude-mem $version_dir ($reason)"
1131
1123
  found=1
1132
1124
  else
1133
- warn " could not remove claude-mem at $cm — manual: \`rm -rf $cm\`"
1125
+ warn " could not remove $cm — manual: \`rm -rf $cm\`"
1134
1126
  fi
1135
1127
  fi
1136
1128
  done
1129
+ # v0.19.56 — also unregister from Claude Code so it doesn't re-download.
1137
1130
  if [ "$found" = "1" ]; then
1131
+ # 1. Try the official `claude plugin disable` if claude binary is on PATH.
1132
+ if have claude; then
1133
+ claude plugin disable claude-mem 2>/dev/null \
1134
+ && info " unregistered: claude plugin disable claude-mem" \
1135
+ || true
1136
+ fi
1137
+ # 2. Surgically edit settings.json + marketplaces.json to remove
1138
+ # claude-mem entries (Claude Code reads these on every startup).
1139
+ python3 - "$HOME" <<'PY' || true
1140
+ import json, os, sys
1141
+ home = sys.argv[1]
1142
+ removed = []
1143
+ for rel in (".claude/settings.json", ".claude/plugins/marketplaces.json",
1144
+ ".claude/plugins/registry.json"):
1145
+ p = os.path.join(home, rel)
1146
+ if not os.path.isfile(p): continue
1147
+ try:
1148
+ with open(p) as f:
1149
+ data = json.load(f)
1150
+ except Exception:
1151
+ continue
1152
+ def strip(obj):
1153
+ if isinstance(obj, dict):
1154
+ for k in list(obj.keys()):
1155
+ v = obj[k]
1156
+ if isinstance(v, (str,)) and "claude-mem" in v.lower():
1157
+ obj.pop(k, None); removed.append(f"{rel}:{k}")
1158
+ elif isinstance(v, (dict, list)):
1159
+ strip(v)
1160
+ if "claude-mem" in k.lower():
1161
+ obj.pop(k, None); removed.append(f"{rel}:{k}")
1162
+ elif isinstance(obj, list):
1163
+ for item in obj[:]:
1164
+ if isinstance(item, str) and "claude-mem" in item.lower():
1165
+ obj.remove(item); removed.append(f"{rel}[]:{item[:30]}")
1166
+ elif isinstance(item, dict):
1167
+ strip(item)
1168
+ try:
1169
+ strip(data)
1170
+ with open(p, "w") as f:
1171
+ json.dump(data, f, indent=2); f.write("\n")
1172
+ except Exception:
1173
+ pass
1174
+ if removed:
1175
+ print(f" unregistered {len(removed)} claude-mem entries from claude config")
1176
+ PY
1177
+ # 3. Drop the do-not-reinstall marker for ourselves.
1178
+ mkdir -p "${HOME}/.claude/plugins" 2>/dev/null
1179
+ touch "${HOME}/.claude/plugins/.claude-mem-disabled-by-omegaos"
1180
+ info " → SessionStart hook will no longer crash"
1138
1181
  info " → re-install when upstream ships zod 4 fix:"
1139
- info " claude plugin install claude-mem@thedotmack"
1182
+ info " claude plugin install claude-mem@thedotmack"
1140
1183
  fi
1141
1184
  return 0
1142
1185
  }
@@ -27,7 +27,7 @@ from __future__ import annotations
27
27
  import importlib
28
28
  from typing import Any
29
29
 
30
- __version__ = "0.19.55"
30
+ __version__ = "0.19.56"
31
31
 
32
32
  # Public-name → (module_path, attribute_name) map.
33
33
  # ``attribute_name = None`` means "return the whole module" (used for the
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "omega-engine"
3
- version = "0.19.55"
3
+ version = "0.19.56"
4
4
  description = "The Omega OS orchestration engine — event-sourced, verified-completion agent graphs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1 +1 @@
1
- 0.19.55
1
+ 0.19.56
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentikos/omega-os",
3
- "version": "0.19.55",
3
+ "version": "0.19.56",
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"