@agentikos/omega-os 0.19.16 → 0.19.17
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 +46 -21
- 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__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +12 -3
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/package.json +1 -1
package/bootstrap/lib/steps.sh
CHANGED
|
@@ -365,49 +365,74 @@ step_engine() {
|
|
|
365
365
|
|
|
366
366
|
# --- 36 -----------------------------------------------------------------------
|
|
367
367
|
#
|
|
368
|
-
# step_tmux_config — install the
|
|
368
|
+
# step_tmux_config — install the canonical `tmux-claude` setup.
|
|
369
369
|
#
|
|
370
|
-
#
|
|
371
|
-
#
|
|
372
|
-
#
|
|
370
|
+
# The canonical OmegaVPS tmux UX lives at github.com/agentik-os/tmux-claude:
|
|
371
|
+
# session manager popup (Ctrl+l, Ctrl+b z, Option+z), per-session metrics
|
|
372
|
+
# (RAM/age/git/Claude/AISB progress), project auto-discovery, dev-server
|
|
373
|
+
# port management, mobile-friendly scroll, theme-neutral status bar.
|
|
373
374
|
#
|
|
374
|
-
#
|
|
375
|
-
#
|
|
376
|
-
#
|
|
375
|
+
# We run the upstream installer (curl|bash). It writes ~/.tmux.conf plus
|
|
376
|
+
# ~/.tmux/scripts/ and ~/.config/tmux-claude/. Idempotent — re-running is a
|
|
377
|
+
# safe no-op once the marker file is present.
|
|
377
378
|
#
|
|
378
|
-
#
|
|
379
|
-
#
|
|
380
|
-
# clipboard. This matches the live OmegaVPS UX the operator already uses.
|
|
379
|
+
# Fallback: when curl is unavailable or the network is down, we drop our
|
|
380
|
+
# bundled "pro" config so the user still has a sane tmux conf.
|
|
381
381
|
step_tmux_config() {
|
|
382
382
|
if ! have tmux; then
|
|
383
383
|
err "tmux not installed — step_system_deps should have caught this"
|
|
384
384
|
return 1
|
|
385
385
|
fi
|
|
386
|
+
local marker="$HOME/.tmux/scripts/session-manager.sh"
|
|
387
|
+
local installer_url="https://raw.githubusercontent.com/agentik-os/tmux-claude/main/install.sh"
|
|
388
|
+
|
|
389
|
+
if [ -f "$marker" ]; then
|
|
390
|
+
info "tmux-claude already installed at $marker — skipping"
|
|
391
|
+
elif have curl; then
|
|
392
|
+
info "installing canonical tmux-claude setup (agentik-os/tmux-claude)…"
|
|
393
|
+
# We pipe through `bash -s -- --no-prompt` so the install doesn't ask
|
|
394
|
+
# for confirmation. If the upstream installer doesn't support that
|
|
395
|
+
# flag it just ignores it.
|
|
396
|
+
if curl -fsSL "$installer_url" 2>>"$LOG_FILE" \
|
|
397
|
+
| bash -s -- --no-prompt >>"$LOG_FILE" 2>&1; then
|
|
398
|
+
ok "tmux-claude installed (~/.tmux/scripts/, ~/.tmux.conf)"
|
|
399
|
+
else
|
|
400
|
+
err "tmux-claude install failed — falling back to bundled pro profile"
|
|
401
|
+
_tmux_fallback_pro_config
|
|
402
|
+
fi
|
|
403
|
+
else
|
|
404
|
+
info "curl missing — falling back to bundled pro profile"
|
|
405
|
+
_tmux_fallback_pro_config
|
|
406
|
+
fi
|
|
407
|
+
|
|
408
|
+
# Always also drop the bundled config under $OMEGA_HOME so `omega tmux
|
|
409
|
+
# install --profile pro` later remains a working manual recovery path.
|
|
410
|
+
PYTHONPATH="$OMEGA_HOME/Agentik_Engine" python3 - <<PY 2>>"$LOG_FILE"
|
|
411
|
+
import os
|
|
412
|
+
os.environ["OMEGA_HOME"] = "$OMEGA_HOME"
|
|
413
|
+
from omega_engine.tmux import write_default_config
|
|
414
|
+
bundled = write_default_config(profile="pro")
|
|
415
|
+
print(f" bundled fallback config also at: {bundled}")
|
|
416
|
+
PY
|
|
417
|
+
return 0
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
_tmux_fallback_pro_config() {
|
|
386
421
|
PYTHONPATH="$OMEGA_HOME/Agentik_Engine" python3 - <<PY 2>>"$LOG_FILE"
|
|
387
422
|
import os
|
|
388
423
|
os.environ["OMEGA_HOME"] = "$OMEGA_HOME"
|
|
389
424
|
from pathlib import Path
|
|
390
425
|
from omega_engine.tmux import write_default_config, install_into_home_tmux_conf
|
|
391
|
-
|
|
392
|
-
# 1. Always write the bundled "pro" config — single source of truth.
|
|
393
426
|
bundled = write_default_config(profile="pro")
|
|
394
|
-
print(f" tmux bundled config: {bundled} (pro profile)")
|
|
395
|
-
|
|
396
|
-
# 2. Skip ~/.tmux.conf rewrite when it already matches the bundled content
|
|
397
|
-
# (otherwise re-runs spam timestamped backups for no reason).
|
|
398
427
|
home_conf = Path.home() / ".tmux.conf"
|
|
399
428
|
bundled_content = Path(bundled).read_text()
|
|
400
429
|
existing = home_conf.read_text() if home_conf.exists() else ""
|
|
401
|
-
if existing
|
|
402
|
-
print(f" ~/.tmux.conf already matches pro profile — nothing to do")
|
|
403
|
-
else:
|
|
430
|
+
if existing != bundled_content:
|
|
404
431
|
res = install_into_home_tmux_conf(profile="pro", backup=True)
|
|
405
432
|
if res["backup_path"]:
|
|
406
433
|
print(f" backed up previous ~/.tmux.conf -> {res['backup_path']}")
|
|
407
434
|
print(f" wrote pro profile to {res['written']}")
|
|
408
|
-
print(f" reload in-session: tmux source-file ~/.tmux.conf")
|
|
409
435
|
PY
|
|
410
|
-
return $?
|
|
411
436
|
}
|
|
412
437
|
|
|
413
438
|
# --- 37 -----------------------------------------------------------------------
|
|
Binary file
|
|
Binary file
|
|
@@ -237,12 +237,19 @@ def spawn_aisb_chat(omega_home: str | Path | None = None) -> str:
|
|
|
237
237
|
Runs ``omega aisb chat-loop`` inside — REPL conversation with the
|
|
238
238
|
AISB master agent on Claude Max OAuth. This is what bare `omega`
|
|
239
239
|
attaches to (v0.19.15+).
|
|
240
|
+
|
|
241
|
+
v0.19.17 — explicitly cwd=$HOME. Without this the session inherited
|
|
242
|
+
the parent process's cwd, which could be the npm/_npx cache dir; if
|
|
243
|
+
that dir got cleaned (or `rm -rf ~/Omega` happened later), every
|
|
244
|
+
subprocess (including `claude -p`) crashed with
|
|
245
|
+
"The current working directory was deleted".
|
|
240
246
|
"""
|
|
241
247
|
name = "AISB-chat"
|
|
242
248
|
home = Path(omega_home or os.environ.get("OMEGA_HOME")
|
|
243
249
|
or Path.home() / "Omega")
|
|
244
250
|
omega_bin = home / "Agentik_Tools" / "bin" / "omega"
|
|
245
|
-
spawn(name, command=f"{omega_bin} aisb chat-loop"
|
|
251
|
+
spawn(name, command=f"{omega_bin} aisb chat-loop",
|
|
252
|
+
cwd=str(Path.home()))
|
|
246
253
|
return name
|
|
247
254
|
|
|
248
255
|
|
|
@@ -251,13 +258,15 @@ def spawn_hermes_chat(omega_home: str | Path | None = None) -> str:
|
|
|
251
258
|
|
|
252
259
|
Runs ``omega hermes chat-loop`` — REPL conversation with Hermès on
|
|
253
260
|
Anthropic API (separate budget from AISB's Max OAuth). This is what
|
|
254
|
-
`omega hermes` attaches to (v0.19.15+).
|
|
261
|
+
`omega hermes` attaches to (v0.19.15+). Spawned with cwd=$HOME for
|
|
262
|
+
the same reason as ``spawn_aisb_chat`` (avoid deleted-cwd crash).
|
|
255
263
|
"""
|
|
256
264
|
name = "Hermes-chat"
|
|
257
265
|
home = Path(omega_home or os.environ.get("OMEGA_HOME")
|
|
258
266
|
or Path.home() / "Omega")
|
|
259
267
|
omega_bin = home / "Agentik_Tools" / "bin" / "omega"
|
|
260
|
-
spawn(name, command=f"{omega_bin} hermes chat-loop"
|
|
268
|
+
spawn(name, command=f"{omega_bin} hermes chat-loop",
|
|
269
|
+
cwd=str(Path.home()))
|
|
261
270
|
return name
|
|
262
271
|
|
|
263
272
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.17
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.17",
|
|
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"
|