@agentikos/omega-os 0.19.31 → 0.19.32
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/__pycache__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/cli.py +85 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +11 -3
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/omega/Agentik_SSOT/claude-plugins/claude-plugins.yaml +9 -2
- package/omega/Agentik_SSOT/clis/clis-catalog.yaml +15 -5
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2606,6 +2606,88 @@ def cmd_tmux(args: argparse.Namespace) -> int:
|
|
|
2606
2606
|
print(f"no such session: {args.name}")
|
|
2607
2607
|
return 1
|
|
2608
2608
|
|
|
2609
|
+
if sub == "switcher":
|
|
2610
|
+
# v0.19.32 — fzf-based tmux session picker.
|
|
2611
|
+
# Bound to Option+/ in the pro tmux config. Lists ALL live
|
|
2612
|
+
# tmux sessions (Omega, AISB-chat, Hermes-chat, per-project
|
|
2613
|
+
# oracles, workers, ...) with metadata, lets the user pick
|
|
2614
|
+
# one, and switches the client to it.
|
|
2615
|
+
import shlex, shutil, subprocess
|
|
2616
|
+
from omega_engine import __version__
|
|
2617
|
+
if not shutil.which("fzf"):
|
|
2618
|
+
print(" fzf not on PATH — install `brew install fzf` "
|
|
2619
|
+
"or `apt install fzf`")
|
|
2620
|
+
return 2
|
|
2621
|
+
sessions = tmux.list_sessions(home)
|
|
2622
|
+
if not sessions:
|
|
2623
|
+
print(" no tmux sessions yet — type `omega` to spawn the master")
|
|
2624
|
+
return 0
|
|
2625
|
+
sessions.sort(key=lambda s: -int(s.created))
|
|
2626
|
+
|
|
2627
|
+
def _age(ts: int) -> str:
|
|
2628
|
+
import time as _t
|
|
2629
|
+
delta = max(0, int(_t.time()) - int(ts))
|
|
2630
|
+
if delta < 60: return "now"
|
|
2631
|
+
if delta < 3600: return f"{delta // 60}m"
|
|
2632
|
+
if delta < 86400: return f"{delta // 3600}h"
|
|
2633
|
+
return f"{delta // 86400}d"
|
|
2634
|
+
|
|
2635
|
+
ORANGE = "\033[38;2;217;119;87m"
|
|
2636
|
+
MUTED = "\033[38;2;136;131;122m"
|
|
2637
|
+
BOLD = "\033[1m"
|
|
2638
|
+
DIM = "\033[2m"
|
|
2639
|
+
RST = "\033[0m"
|
|
2640
|
+
|
|
2641
|
+
lines = []
|
|
2642
|
+
keys = []
|
|
2643
|
+
for s in sessions:
|
|
2644
|
+
mark = f"{ORANGE}▶{RST}" if s.attached else " "
|
|
2645
|
+
project = f"[{s.project}]" if s.project else ""
|
|
2646
|
+
line = (
|
|
2647
|
+
f" {mark} {BOLD}{s.name:<32}{RST} "
|
|
2648
|
+
f"{DIM}{s.category:<10}{RST} "
|
|
2649
|
+
f"{MUTED}{s.windows}w {_age(s.created):<5}{RST} "
|
|
2650
|
+
f"{DIM}{project}{RST}"
|
|
2651
|
+
)
|
|
2652
|
+
lines.append(line)
|
|
2653
|
+
keys.append(s.name)
|
|
2654
|
+
|
|
2655
|
+
header = (
|
|
2656
|
+
f"{ORANGE}{BOLD}Ω Sessions{RST} "
|
|
2657
|
+
f"{MUTED}• ↑↓ navigate • ↵ switch-client • Esc cancel{RST}"
|
|
2658
|
+
)
|
|
2659
|
+
try:
|
|
2660
|
+
proc = subprocess.run(
|
|
2661
|
+
["fzf", "--ansi", "--no-multi",
|
|
2662
|
+
"--prompt=session › ",
|
|
2663
|
+
f"--header={header}",
|
|
2664
|
+
"--header-first",
|
|
2665
|
+
"--layout=reverse",
|
|
2666
|
+
"--height=60%",
|
|
2667
|
+
"--border=rounded",
|
|
2668
|
+
"--padding=1,2",
|
|
2669
|
+
"--info=hidden",
|
|
2670
|
+
"--pointer=▶",
|
|
2671
|
+
"--color="
|
|
2672
|
+
"bg:#FAFAF7,fg:#3D3929,"
|
|
2673
|
+
"bg+:#E5E2DD,fg+:#D97757,"
|
|
2674
|
+
"hl:#D97757,hl+:#D97757,"
|
|
2675
|
+
"prompt:#D97757,pointer:#D97757,"
|
|
2676
|
+
"header:#88837A,border:#A8A29E,info:#88837A,"
|
|
2677
|
+
"gutter:#FAFAF7"],
|
|
2678
|
+
input="\n".join(lines), capture_output=True, text=True,
|
|
2679
|
+
)
|
|
2680
|
+
except (KeyboardInterrupt, subprocess.SubprocessError):
|
|
2681
|
+
return 0
|
|
2682
|
+
if proc.returncode != 0:
|
|
2683
|
+
return 0
|
|
2684
|
+
pick = proc.stdout.rstrip("\n")
|
|
2685
|
+
for line, name in zip(lines, keys):
|
|
2686
|
+
if line == pick:
|
|
2687
|
+
subprocess.run(["tmux", "switch-client", "-t", name])
|
|
2688
|
+
return 0
|
|
2689
|
+
return 0
|
|
2690
|
+
|
|
2609
2691
|
if sub == "spawn":
|
|
2610
2692
|
kind = args.kind
|
|
2611
2693
|
name = args.name
|
|
@@ -4510,6 +4592,9 @@ def _build_parser() -> argparse.ArgumentParser:
|
|
|
4510
4592
|
p_tcl.add_argument("--yes", action="store_true",
|
|
4511
4593
|
help="apply (default is dry-run)")
|
|
4512
4594
|
tx_sub.add_parser("menu", help="interactive whiptail picker (use under tmux for prefix+Z)")
|
|
4595
|
+
tx_sub.add_parser("switcher",
|
|
4596
|
+
help="fzf session switcher — list all live tmux sessions and "
|
|
4597
|
+
"switch-client to one (bound to Option+/ in the pro config)")
|
|
4513
4598
|
p_tcfg = tx_sub.add_parser("config",
|
|
4514
4599
|
help="write the recommended tmux.conf to Agentik_Tools/")
|
|
4515
4600
|
p_tcfg.add_argument("--profile", choices=["minimal", "pro"],
|
|
@@ -572,9 +572,10 @@ bind-key Z display-popup -E -w 80% -h 80% "omega tmux menu"
|
|
|
572
572
|
# Prefix+S — native session list (tmux's built-in choose-tree)
|
|
573
573
|
bind-key S choose-tree -Zs
|
|
574
574
|
|
|
575
|
-
#
|
|
575
|
+
# Option+/ → session switcher (fzf popup, pick any live tmux session)
|
|
576
|
+
# Option+z → Omega action menu (spawn Omega if missing + switch-client)
|
|
576
577
|
# macOS Option key → enable "Use Option as Meta" in your terminal.
|
|
577
|
-
bind-key -n M-/
|
|
578
|
+
bind-key -n M-/ display-popup -E -h 80% -w 90% "omega tmux switcher"
|
|
578
579
|
bind-key -n M-z run-shell -b "tmux has-session -t Omega 2>/dev/null || tmux new-session -d -s Omega -n menu -c $HOME 'omega menu-tui'; tmux switch-client -t Omega"
|
|
579
580
|
|
|
580
581
|
# ════════════════════════════════════════════════════════════════════
|
|
@@ -686,7 +687,14 @@ bind-key r source-file ~/.tmux.conf \\; display-message "tmux.conf reloaded"
|
|
|
686
687
|
# IMPORTANT — for Option key to work on macOS terminals, enable
|
|
687
688
|
# "Use Option as Meta key" (iTerm2: Profile → Keys → Left/Right Option
|
|
688
689
|
# Key → Esc+). Otherwise the binding stays inactive.
|
|
689
|
-
|
|
690
|
+
# ────────────────────────────────────────────────────────────────────
|
|
691
|
+
# Option+/ → SESSION SWITCHER (fzf — pick any live tmux session)
|
|
692
|
+
# Option+z → OMEGA ACTION MENU (the v0.19.30 fzf menu of actions)
|
|
693
|
+
# ────────────────────────────────────────────────────────────────────
|
|
694
|
+
# popup -E runs the command in a tmux popup overlay (modal). The popup
|
|
695
|
+
# closes when the command exits, returning the user to their previous
|
|
696
|
+
# pane. -h 80% / -w 90% sizes the popup.
|
|
697
|
+
bind-key -n M-/ display-popup -E -h 80% -w 90% "omega tmux switcher"
|
|
690
698
|
bind-key -n M-z run-shell -b "tmux has-session -t Omega 2>/dev/null || tmux new-session -d -s Omega -n menu -c $HOME 'omega menu-tui'; tmux switch-client -t Omega"
|
|
691
699
|
|
|
692
700
|
# ════════════════════════════════════════════════════════════════════
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.32
|
|
@@ -53,11 +53,18 @@ catalog:
|
|
|
53
53
|
|
|
54
54
|
- id: claude-mem
|
|
55
55
|
name: claude-mem
|
|
56
|
-
description:
|
|
56
|
+
description: |
|
|
57
|
+
Long-term memory + observation system across sessions.
|
|
58
|
+
KNOWN ISSUE (2026-05-25): claude-mem 13.3.0 ships a stop-hook
|
|
59
|
+
worker-service.cjs that imports `zod/v3` (doesn't exist in zod 4+).
|
|
60
|
+
Under Bun the hook crashes with "Cannot find module 'zod/v3'". The
|
|
61
|
+
plugin still installs — only the stop hook breaks.
|
|
62
|
+
Marked opt-in until upstream fixes. Install manually with:
|
|
63
|
+
claude plugin install claude-mem@thedotmack
|
|
57
64
|
category: memory
|
|
58
65
|
marketplace: thedotmack
|
|
59
66
|
scope: user
|
|
60
|
-
recommended:
|
|
67
|
+
recommended: false
|
|
61
68
|
|
|
62
69
|
- id: frontend-design
|
|
63
70
|
name: frontend-design
|
|
@@ -76,11 +76,21 @@ native:
|
|
|
76
76
|
|
|
77
77
|
- id: paperclipai
|
|
78
78
|
name: Paperclip (orchestration UI — agent teams, org charts, governance)
|
|
79
|
-
# Node.js + React app from paperclipai/paperclip.
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
79
|
+
# Node.js + React app from paperclipai/paperclip.
|
|
80
|
+
#
|
|
81
|
+
# STATUS (v0.19.32) — honest disclosure:
|
|
82
|
+
# - The binary installs cleanly (`npx -y paperclipai onboard --yes`).
|
|
83
|
+
# - There is NO native OmegaOS↔Paperclip bridge yet. Paperclip's
|
|
84
|
+
# own docs list Claude Code, Codex, Cursor, OpenClaw — Hermès is
|
|
85
|
+
# NOT in their supported-agents list, and OmegaOS isn't either.
|
|
86
|
+
# - To make Paperclip "understand" our agents I'd need to:
|
|
87
|
+
# a) Write a Paperclip agent profile pointing at omega's
|
|
88
|
+
# claude/hermes subprocess invocations
|
|
89
|
+
# b) Add a heartbeat sender from our tmux sessions
|
|
90
|
+
# c) Map Paperclip's org-chart concepts to our 4-level model
|
|
91
|
+
# That's real work, scheduled for v0.20.x — not done yet.
|
|
92
|
+
# For now: install it if you want the standalone Paperclip UI, but
|
|
93
|
+
# treat it as a parallel system, not an OmegaOS bridge.
|
|
84
94
|
install: { npm_global: "paperclipai" }
|
|
85
95
|
binary: paperclip
|
|
86
96
|
secrets: []
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.32",
|
|
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"
|