@agentikos/omega-os 0.19.25 → 0.19.26
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/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/cli.py +103 -98
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
@@ -2856,15 +2856,16 @@ def cmd_menu(_args: argparse.Namespace) -> int:
|
|
|
2856
2856
|
|
|
2857
2857
|
|
|
2858
2858
|
def cmd_menu_tui(_args: argparse.Namespace) -> int:
|
|
2859
|
-
"""`omega menu-tui` — the fzf action picker
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2859
|
+
"""`omega menu-tui` — the fzf action picker for the Omega session.
|
|
2860
|
+
|
|
2861
|
+
v0.19.26 — actions now run INLINE in the menu pane (not in dead
|
|
2862
|
+
background tmux windows). After every action, "press Enter to
|
|
2863
|
+
return to menu". Sessions (AISB/Hermes) still spawn as separate
|
|
2864
|
+
tmux sessions because they're meant to be talked to long-running.
|
|
2865
|
+
|
|
2866
|
+
Bug fix: previous version used fzf with leading-space labels,
|
|
2867
|
+
then `pick.strip()` killed the spaces, so display matching failed
|
|
2868
|
+
and every pick became a no-op. Both sides stripped now.
|
|
2868
2869
|
"""
|
|
2869
2870
|
import os
|
|
2870
2871
|
import shlex
|
|
@@ -2881,102 +2882,101 @@ def cmd_menu_tui(_args: argparse.Namespace) -> int:
|
|
|
2881
2882
|
"(macOS) or `apt install fzf` (Linux)")
|
|
2882
2883
|
return 2
|
|
2883
2884
|
|
|
2884
|
-
# The menu actions. Each entry: (label, action_key).
|
|
2885
|
-
# Actions are dispatched in the if/elif block below.
|
|
2886
2885
|
def _build_menu() -> list[tuple[str, str]]:
|
|
2887
2886
|
active = _active_provider()
|
|
2888
2887
|
sessions = tmux.list_sessions(HOME)
|
|
2889
|
-
|
|
2890
|
-
("CHAT",
|
|
2891
|
-
(f"
|
|
2892
|
-
(f"
|
|
2893
|
-
(f"
|
|
2894
|
-
("PROJECTS",
|
|
2895
|
-
(f"
|
|
2896
|
-
(f"
|
|
2897
|
-
("AUDITS & MISSIONS",
|
|
2898
|
-
(f"
|
|
2899
|
-
(f"
|
|
2900
|
-
("INFRASTRUCTURE",
|
|
2901
|
-
(f"
|
|
2902
|
-
(f"
|
|
2903
|
-
(f"
|
|
2904
|
-
("HEALTH",
|
|
2905
|
-
(f"
|
|
2906
|
-
(f"
|
|
2907
|
-
("SCRAPE & SEARCH",
|
|
2908
|
-
(f"
|
|
2909
|
-
(f"
|
|
2910
|
-
("",
|
|
2911
|
-
(f"
|
|
2912
|
-
(f"
|
|
2888
|
+
return [
|
|
2889
|
+
("── CHAT ─────────────────────", "__sep__"),
|
|
2890
|
+
(f"AISB master chat (Claude Max OAuth)", "open:aisb"),
|
|
2891
|
+
(f"Hermès meta-companion (Anthropic API)", "open:hermes"),
|
|
2892
|
+
(f"Switch LLM provider [{active}]", "switch:provider"),
|
|
2893
|
+
("── PROJECTS ─────────────────", "__sep__"),
|
|
2894
|
+
(f"New project (Genesis pipeline)", "genesis:new"),
|
|
2895
|
+
(f"Open project shell", "project:open"),
|
|
2896
|
+
("── AUDITS & MISSIONS ────────", "__sep__"),
|
|
2897
|
+
(f"Run a mission", "run:mission"),
|
|
2898
|
+
(f"Quality Arsenal — list audits", "audit:menu"),
|
|
2899
|
+
("── INFRASTRUCTURE ───────────", "__sep__"),
|
|
2900
|
+
(f"Sessions ({len(sessions)} active) — pick to attach", "sessions:list"),
|
|
2901
|
+
(f"Accounts — Claude Max + per-provider auth", "accounts:menu"),
|
|
2902
|
+
(f"Vault — secrets", "vault:menu"),
|
|
2903
|
+
("── HEALTH ───────────────────", "__sep__"),
|
|
2904
|
+
(f"omega doctor", "cmd:doctor"),
|
|
2905
|
+
(f"omega status", "cmd:status"),
|
|
2906
|
+
("── SCRAPE & SEARCH ──────────", "__sep__"),
|
|
2907
|
+
(f"Stealth scrape a URL (CloakBrowser)", "scrape:cloak"),
|
|
2908
|
+
(f"Fast scrape a URL (Scrapling)", "scrape:scrapling"),
|
|
2909
|
+
("── EXIT ─────────────────────", "__sep__"),
|
|
2910
|
+
(f"Detach (Ctrl-b d also works)", "detach"),
|
|
2911
|
+
(f"Quit Omega session (kills the tmux session)", "quit:kill"),
|
|
2913
2912
|
]
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
tmux._tmux("send-keys", "-t", f"Omega:{window}", command, "Enter")
|
|
2913
|
+
|
|
2914
|
+
def _run_inline(cmd_argv: list[str] | str, *, shell: bool = False) -> None:
|
|
2915
|
+
"""Run a command in the current pane, stream stdout/stderr,
|
|
2916
|
+
then prompt the user to return to the menu."""
|
|
2917
|
+
os.system("clear")
|
|
2918
|
+
print(f" Ω › running: {cmd_argv if shell else ' '.join(cmd_argv)}")
|
|
2919
|
+
print(" " + "─" * 60)
|
|
2920
|
+
if shell:
|
|
2921
|
+
subprocess.run(cmd_argv, shell=True)
|
|
2924
2922
|
else:
|
|
2925
|
-
|
|
2926
|
-
|
|
2923
|
+
subprocess.run(cmd_argv)
|
|
2924
|
+
print()
|
|
2925
|
+
print(" " + "─" * 60)
|
|
2926
|
+
try:
|
|
2927
|
+
input(" press Enter to return to Omega menu… ")
|
|
2928
|
+
except (EOFError, KeyboardInterrupt):
|
|
2929
|
+
pass
|
|
2930
|
+
|
|
2931
|
+
def _prompt(label: str) -> str:
|
|
2932
|
+
try:
|
|
2933
|
+
return input(f" {label}: ").strip()
|
|
2934
|
+
except (EOFError, KeyboardInterrupt):
|
|
2935
|
+
return ""
|
|
2927
2936
|
|
|
2928
|
-
print(f"\n Omega v{__version__} — type a number to refresh, Ctrl-c to exit.\n")
|
|
2929
2937
|
while True:
|
|
2930
2938
|
items = _build_menu()
|
|
2931
|
-
|
|
2932
|
-
lines = []
|
|
2933
|
-
for label, key in items:
|
|
2934
|
-
if key == "__separator__":
|
|
2935
|
-
# Visual section header line.
|
|
2936
|
-
lines.append(f"── {label} " + "─" * max(0, 50 - len(label)))
|
|
2937
|
-
else:
|
|
2938
|
-
lines.append(label)
|
|
2939
|
+
lines = [label for label, _ in items]
|
|
2939
2940
|
fzf_input = "\n".join(lines)
|
|
2940
2941
|
try:
|
|
2941
2942
|
proc = subprocess.run(
|
|
2942
2943
|
["fzf",
|
|
2943
2944
|
"--prompt=Ω › ",
|
|
2944
|
-
"--header=Omega
|
|
2945
|
+
"--header=Omega — Enter to pick, Esc to refresh, "
|
|
2946
|
+
"Ctrl-c to exit",
|
|
2945
2947
|
"--layout=reverse",
|
|
2946
2948
|
"--height=100%",
|
|
2947
2949
|
"--border=rounded",
|
|
2948
2950
|
"--no-multi",
|
|
2949
|
-
"--info=inline"
|
|
2951
|
+
"--info=inline",
|
|
2952
|
+
"--ansi"],
|
|
2950
2953
|
input=fzf_input, capture_output=True, text=True,
|
|
2951
2954
|
)
|
|
2952
2955
|
except KeyboardInterrupt:
|
|
2953
2956
|
return 0
|
|
2954
2957
|
if proc.returncode != 0:
|
|
2955
|
-
# Esc
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
except (EOFError, KeyboardInterrupt):
|
|
2961
|
-
return 0
|
|
2962
|
-
pick = proc.stdout.strip()
|
|
2958
|
+
# Esc → refresh.
|
|
2959
|
+
continue
|
|
2960
|
+
# FIX (v0.19.26): match label EXACTLY, no strip — fzf returns the
|
|
2961
|
+
# full line including any chars we put in. Just trim trailing \n.
|
|
2962
|
+
pick = proc.stdout.rstrip("\n")
|
|
2963
2963
|
action = None
|
|
2964
2964
|
for label, key in items:
|
|
2965
|
-
|
|
2966
|
-
if key == "__separator__" else label)
|
|
2967
|
-
if display == pick and key != "__separator__":
|
|
2965
|
+
if label == pick and key != "__sep__":
|
|
2968
2966
|
action = key
|
|
2969
2967
|
break
|
|
2970
2968
|
if action is None:
|
|
2971
2969
|
continue
|
|
2972
2970
|
|
|
2973
|
-
# Dispatch
|
|
2971
|
+
# === Dispatch ===
|
|
2974
2972
|
if action == "detach":
|
|
2975
2973
|
subprocess.run(["tmux", "detach-client"])
|
|
2976
2974
|
return 0
|
|
2977
2975
|
if action == "quit:kill":
|
|
2978
2976
|
subprocess.run(["tmux", "kill-session", "-t", "Omega"])
|
|
2979
2977
|
return 0
|
|
2978
|
+
|
|
2979
|
+
# Chat sessions — switch tmux client to the chat session.
|
|
2980
2980
|
if action == "open:aisb":
|
|
2981
2981
|
tmux.spawn_aisb_chat(HOME, force_replace=False)
|
|
2982
2982
|
subprocess.run(["tmux", "switch-client", "-t", "AISB-chat"])
|
|
@@ -2985,57 +2985,62 @@ def cmd_menu_tui(_args: argparse.Namespace) -> int:
|
|
|
2985
2985
|
tmux.spawn_hermes_chat(HOME, force_replace=False)
|
|
2986
2986
|
subprocess.run(["tmux", "switch-client", "-t", "Hermes-chat"])
|
|
2987
2987
|
continue
|
|
2988
|
+
|
|
2989
|
+
# Inline actions — run in the menu pane, prompt to return.
|
|
2988
2990
|
if action == "switch:provider":
|
|
2989
|
-
|
|
2991
|
+
_run_inline([OMEGA_BIN, "switch"])
|
|
2990
2992
|
continue
|
|
2991
2993
|
if action == "genesis:new":
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
+
slug = _prompt("project slug (alphanumeric, _-)")
|
|
2995
|
+
if slug:
|
|
2996
|
+
_run_inline([OMEGA_BIN, "genesis", "new", slug])
|
|
2994
2997
|
continue
|
|
2995
2998
|
if action == "project:open":
|
|
2996
|
-
|
|
2999
|
+
_run_inline("ls -la ~/Omega/Agentik_Coding/projects/ 2>/dev/null "
|
|
3000
|
+
"&& echo && echo '(cd into one to start working)'",
|
|
3001
|
+
shell=True)
|
|
2997
3002
|
continue
|
|
2998
3003
|
if action == "run:mission":
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3004
|
+
intent = _prompt("mission intent (free-form)")
|
|
3005
|
+
if intent:
|
|
3006
|
+
_run_inline([OMEGA_BIN, "run", intent])
|
|
3002
3007
|
continue
|
|
3003
3008
|
if action == "audit:menu":
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3009
|
+
_run_inline(
|
|
3010
|
+
"echo 'Quality Arsenal — 17 forensic audits:' && "
|
|
3011
|
+
"echo ' /codeaudit /uiuxaudit /flowaudit /debugaudit' && "
|
|
3012
|
+
"echo ' /featureaudit /perfaudit /secaudit /a11yaudit' && "
|
|
3013
|
+
"echo ' /seoaudit /dataaudit /apiaudit /copyaudit' && "
|
|
3014
|
+
"echo ' /dxaudit /motionaudit /automationaudit' && "
|
|
3015
|
+
"echo ' /logicaudit /retentionaudit /refontaudit' && "
|
|
3016
|
+
"echo && echo 'invoke from any claude session, or:' && "
|
|
3017
|
+
f"echo ' {OMEGA_BIN} audit <id>'",
|
|
3018
|
+
shell=True)
|
|
3012
3019
|
continue
|
|
3013
3020
|
if action == "sessions:list":
|
|
3014
|
-
|
|
3021
|
+
_run_inline("tmux ls", shell=True)
|
|
3015
3022
|
continue
|
|
3016
3023
|
if action == "accounts:menu":
|
|
3017
|
-
|
|
3018
|
-
f"{shlex.quote(OMEGA_BIN)} account list")
|
|
3024
|
+
_run_inline([OMEGA_BIN, "account", "list"])
|
|
3019
3025
|
continue
|
|
3020
3026
|
if action == "vault:menu":
|
|
3021
|
-
|
|
3022
|
-
f"{shlex.quote(OMEGA_BIN)} vault status")
|
|
3027
|
+
_run_inline([OMEGA_BIN, "vault", "status"])
|
|
3023
3028
|
continue
|
|
3024
3029
|
if action == "cmd:doctor":
|
|
3025
|
-
|
|
3030
|
+
_run_inline([OMEGA_BIN, "doctor"])
|
|
3026
3031
|
continue
|
|
3027
3032
|
if action == "cmd:status":
|
|
3028
|
-
|
|
3033
|
+
_run_inline([OMEGA_BIN, "status"])
|
|
3029
3034
|
continue
|
|
3030
3035
|
if action == "scrape:cloak":
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3036
|
+
url = _prompt("URL")
|
|
3037
|
+
if url:
|
|
3038
|
+
_run_inline([OMEGA_BIN, "scrape", url])
|
|
3034
3039
|
continue
|
|
3035
3040
|
if action == "scrape:scrapling":
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3041
|
+
url = _prompt("URL")
|
|
3042
|
+
if url:
|
|
3043
|
+
_run_inline([OMEGA_BIN, "scrape", url, "--engine", "scrapling"])
|
|
3039
3044
|
continue
|
|
3040
3045
|
|
|
3041
3046
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.26
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.26",
|
|
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"
|