@agentikos/omega-os 0.19.48 → 0.19.50
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/steps.sh +26 -0
- 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__/tui.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/tui.py +10 -4
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_Engine/tests/__pycache__/test_tui_runtime.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tui_runtime.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/test_tui_runtime.py +35 -14
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/package.json +1 -1
package/bootstrap/lib/steps.sh
CHANGED
|
@@ -444,6 +444,32 @@ step_engine() {
|
|
|
444
444
|
mkdir -p "$OMEGA_HOME/Agentik_Tools/bin"
|
|
445
445
|
ln -sf "$OMEGA_HOME/Agentik_Engine/.venv/bin/omega" "$OMEGA_HOME/Agentik_Tools/bin/omega"
|
|
446
446
|
ok "engine installed — omega CLI at Agentik_Tools/bin/omega"
|
|
447
|
+
|
|
448
|
+
# v0.19.49 — also drop a GLOBAL symlink so `omega` works in any shell
|
|
449
|
+
# without depending on the PATH wire to ~/.zshrc / ~/.bashrc. Try
|
|
450
|
+
# /usr/local/bin first (preferred, default macOS PATH), then ~/.local/bin
|
|
451
|
+
# (no sudo needed), then ~/bin. Skip if none writable — the PATH wire
|
|
452
|
+
# still provides the command, just requires a shell reload.
|
|
453
|
+
local global_target=""
|
|
454
|
+
if [ -d /usr/local/bin ] && [ -w /usr/local/bin ]; then
|
|
455
|
+
global_target=/usr/local/bin/omega
|
|
456
|
+
elif sudo -n true 2>/dev/null && [ -d /usr/local/bin ]; then
|
|
457
|
+
# Have passwordless sudo — install globally for the whole machine.
|
|
458
|
+
sudo ln -sf "$OMEGA_HOME/Agentik_Tools/bin/omega" /usr/local/bin/omega \
|
|
459
|
+
&& global_target=/usr/local/bin/omega
|
|
460
|
+
elif [ -d "$HOME/.local/bin" ] || mkdir -p "$HOME/.local/bin"; then
|
|
461
|
+
global_target="$HOME/.local/bin/omega"
|
|
462
|
+
fi
|
|
463
|
+
if [ -n "$global_target" ]; then
|
|
464
|
+
# /usr/local/bin path may need sudo if not writable by user — we
|
|
465
|
+
# already checked write access above, so this is safe.
|
|
466
|
+
if [ -w "$(dirname "$global_target")" ]; then
|
|
467
|
+
ln -sf "$OMEGA_HOME/Agentik_Tools/bin/omega" "$global_target"
|
|
468
|
+
ok "global symlink: $global_target → $OMEGA_HOME/Agentik_Tools/bin/omega"
|
|
469
|
+
fi
|
|
470
|
+
else
|
|
471
|
+
info "could not install a global symlink (none of /usr/local/bin, ~/.local/bin writable) — use PATH wire from .zshrc"
|
|
472
|
+
fi
|
|
447
473
|
# The engine is now importable — initialise the vault while we're here.
|
|
448
474
|
python3 "$OMEGA_REPO/bootstrap/lib/manifest-helpers.py" init-vault "$OMEGA_HOME" \
|
|
449
475
|
| sed 's/^/ /' || true
|
|
Binary file
|
|
Binary file
|
|
@@ -528,11 +528,17 @@ def _arrow_menu() -> int:
|
|
|
528
528
|
3. MENU — sub-menus (audits, setup, infra, health)
|
|
529
529
|
4. EXIT
|
|
530
530
|
"""
|
|
531
|
+
# v0.19.50 — DO NOT call tmux during menu render. Tmux probes
|
|
532
|
+
# were hanging on macOS during server initialization (cold-start
|
|
533
|
+
# tmux client → server fork → config load → potentially slow on
|
|
534
|
+
# APFS). The user pressed Ctrl-C every time. Render the menu
|
|
535
|
+
# IMMEDIATELY with no status dots, then actions can probe tmux
|
|
536
|
+
# if needed (after the user picks one).
|
|
531
537
|
provider = _active_provider()
|
|
532
|
-
aisb_alive =
|
|
533
|
-
hermes_alive =
|
|
534
|
-
oracles, workers =
|
|
535
|
-
paperclip_alive, paperclip_hint =
|
|
538
|
+
aisb_alive = False # rendered as ○ until user opens; cheap
|
|
539
|
+
hermes_alive = False
|
|
540
|
+
oracles, workers = [], []
|
|
541
|
+
paperclip_alive, paperclip_hint = False, ""
|
|
536
542
|
|
|
537
543
|
items: list[tuple[str, str]] = []
|
|
538
544
|
|
package/omega/Agentik_Engine/tests/__pycache__/test_tui_runtime.cpython-313-pytest-8.4.2.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -245,28 +245,49 @@ class TestChatFirstRedesign(unittest.TestCase):
|
|
|
245
245
|
"switch-client" in src or "select-window" in src,
|
|
246
246
|
"attach handler must use tmux select-window / switch-client")
|
|
247
247
|
|
|
248
|
-
def
|
|
249
|
-
"""
|
|
250
|
-
|
|
251
|
-
|
|
248
|
+
def test_menu_does_not_call_tmux_during_render(self):
|
|
249
|
+
"""v0.19.50 — RENAMED from test_omega_window_alive_helper_used.
|
|
250
|
+
|
|
251
|
+
Previously the menu called tmux.omega_window_alive() on every
|
|
252
|
+
render to set the ●/○ status dots. On macOS this hung for many
|
|
253
|
+
seconds during cold-start tmux server initialization, and the
|
|
254
|
+
user Ctrl-C'd every time. v0.19.50 removes those probes — the
|
|
255
|
+
menu MUST render instantly with no tmux calls."""
|
|
252
256
|
import inspect
|
|
253
257
|
from omega_engine.tui import _arrow_menu
|
|
254
258
|
src = inspect.getsource(_arrow_menu)
|
|
255
|
-
|
|
256
|
-
|
|
259
|
+
# Look at the _build_items function specifically — that's the
|
|
260
|
+
# hot path called on every render.
|
|
261
|
+
m_start = src.find("def _build_items")
|
|
262
|
+
self.assertGreater(m_start, 0, "_build_items function must exist")
|
|
263
|
+
m_end = src.find("def ", m_start + 10) # next def OR end
|
|
264
|
+
body = src[m_start:m_end if m_end > 0 else len(src)]
|
|
265
|
+
# CRITICAL: no synchronous tmux calls in the render hot path.
|
|
266
|
+
for forbidden in ("tmux.omega_window_alive",
|
|
267
|
+
"tmux.list_sessions",
|
|
268
|
+
"_active_oracles_and_workers()"):
|
|
269
|
+
self.assertNotIn(forbidden, body,
|
|
270
|
+
f"_build_items MUST NOT call {forbidden} — it hangs the "
|
|
271
|
+
f"menu on cold-start tmux. v0.19.50 removed it for "
|
|
272
|
+
"instant render.")
|
|
273
|
+
# Belt-and-suspenders: the existing helper still exists in the
|
|
274
|
+
# tmux module (some other code path may call it), just not
|
|
275
|
+
# during menu render.
|
|
276
|
+
from omega_engine.tmux import omega_window_alive
|
|
277
|
+
self.assertTrue(callable(omega_window_alive),
|
|
278
|
+
"tmux.omega_window_alive must remain callable (used "
|
|
257
279
|
"AISB / Hermès status dots")
|
|
258
280
|
|
|
259
|
-
def
|
|
260
|
-
"""
|
|
261
|
-
|
|
262
|
-
|
|
281
|
+
def test_paperclip_dashboard_entry_in_main_menu(self):
|
|
282
|
+
"""v0.19.50 — paperclip dashboard entry must exist in the menu.
|
|
283
|
+
The status dot has been removed (it was a sync probe that could
|
|
284
|
+
hang) — replaced with a fixed ○ that becomes ● only after the
|
|
285
|
+
user picks the action and we know paperclip is up."""
|
|
263
286
|
import inspect
|
|
264
287
|
from omega_engine.tui import _arrow_menu
|
|
265
288
|
src = inspect.getsource(_arrow_menu)
|
|
266
|
-
self.assertIn("
|
|
267
|
-
"menu must
|
|
268
|
-
# Must integrate the new chantier-4 is_running() probe.
|
|
269
|
-
self.assertIn("paperclip_bridge", src)
|
|
289
|
+
self.assertIn("paperclip:dashboard", src,
|
|
290
|
+
"menu must wire paperclip:dashboard as an action key")
|
|
270
291
|
|
|
271
292
|
|
|
272
293
|
class TestPixelPalette(unittest.TestCase):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.50
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.50",
|
|
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"
|