@agentikos/omega-os 0.19.8 → 0.19.10

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.
@@ -35,25 +35,75 @@ step_system_deps() {
35
35
 
36
36
  # PyYAML — required by every install-side helper that reads the manifest
37
37
  # or audit YAMLs (bootstrap/lib/llm-clis.py, manifest-helpers.py, audit
38
- # generator). apt/dnf already deliver it via the system package above;
39
- # brew on macOS does NOT, so we install it here with a fallback chain
40
- # robust to PEP-668 (externally-managed) macOS Pythons.
38
+ # generator). apt/dnf already deliver it via the system package above.
39
+ #
40
+ # macOS Tahoe / Sonoma ship externally-managed Pythons (PEP 668) AND
41
+ # often deny `pip install --user --break-system-packages` for security
42
+ # policy reasons. The 100% reliable path is a dedicated venv that we
43
+ # own, isolated from system Python rules.
44
+ #
45
+ # We prepend the venv's bin/ to PATH so every subsequent `python3 ...`
46
+ # call (37 sites across steps.sh) automatically uses this isolated
47
+ # Python WITHOUT touching the user's system Python or site-packages.
48
+ local installer_venv="$STATE_DIR/installer-venv"
41
49
  if ! python3 -c "import yaml" 2>/dev/null; then
42
- info "installing pyyaml (required by install helpers)"
43
- if python3 -m pip install --user --quiet pyyaml 2>>"$LOG_FILE"; then
44
- ok "pyyaml installed (--user)"
45
- elif python3 -m pip install --user --quiet --break-system-packages pyyaml 2>>"$LOG_FILE"; then
46
- ok "pyyaml installed (--user --break-system-packages macOS Tahoe path)"
47
- elif have pipx && pipx install pyyaml 2>>"$LOG_FILE"; then
48
- ok "pyyaml installed via pipx"
50
+ # On macOS Tahoe (and any Python without working `ensurepip` /
51
+ # broken venv) the stdlib `python3 -m venv` crashes. Astral's `uv`
52
+ # creates venvs reliably from any Python and is the canonical path.
53
+ # We make it the PRIMARY method; stdlib venv is only a fallback for
54
+ # boxes where uv isn't installed yet.
55
+ #
56
+ # Bootstrap order: uv was added to step_system_deps later in this
57
+ # very function, but most Macs already have it. If neither uv nor
58
+ # working stdlib venv is available, we install uv first then loop.
59
+ if [ ! -f "$installer_venv/bin/python3" ]; then
60
+ info "creating installer venv (PEP-668-safe path for install helpers)"
61
+
62
+ # 1. Pre-install uv if it's missing — it's the safest venv tool.
63
+ if ! have uv && [ ! -x "$HOME/.local/bin/uv" ]; then
64
+ info " → installing uv (Astral package manager) first"
65
+ curl -LsSf https://astral.sh/uv/install.sh 2>>"$LOG_FILE" | sh >>"$LOG_FILE" 2>&1 \
66
+ || info " (uv install failed — will try python3 -m venv as fallback)"
67
+ fi
68
+ local uv_bin="$(command -v uv || echo "$HOME/.local/bin/uv")"
69
+
70
+ # 2. Try uv first (works on Tahoe + any PEP-668 Python).
71
+ if [ -x "$uv_bin" ] && "$uv_bin" venv "$installer_venv" \
72
+ --python python3 --quiet 2>>"$LOG_FILE"; then
73
+ ok " installer venv created via uv"
74
+ elif python3 -m venv "$installer_venv" 2>>"$LOG_FILE"; then
75
+ ok " installer venv created via python3 -m venv"
76
+ else
77
+ err "venv creation failed by both uv AND python3 -m venv — see $LOG_FILE"
78
+ err "diagnose:"
79
+ err " $uv_bin venv $installer_venv --python python3"
80
+ err " python3 -m venv $installer_venv"
81
+ return 1
82
+ fi
83
+ fi
84
+
85
+ # 3. Install pyyaml into the venv. Two methods, uv first.
86
+ local uv_bin="$(command -v uv || echo "$HOME/.local/bin/uv")"
87
+ if [ -x "$uv_bin" ] && "$uv_bin" pip install --quiet \
88
+ --python "$installer_venv/bin/python3" pyyaml 2>>"$LOG_FILE"; then
89
+ ok " pyyaml installed via uv pip"
90
+ elif "$installer_venv/bin/pip" install --quiet pyyaml 2>>"$LOG_FILE"; then
91
+ ok " pyyaml installed via venv pip"
49
92
  else
50
- err "pyyaml install failed across all paths — see $LOG_FILE"
51
- err "manual fix: python3 -m pip install --user --break-system-packages pyyaml"
93
+ err "pyyaml install failed in venv — see $LOG_FILE"
94
+ err "diagnose: $installer_venv/bin/pip install pyyaml"
52
95
  return 1
53
96
  fi
54
- # Sanity re-check
97
+ ok "installer venv ready: $installer_venv"
98
+ fi
99
+ # PATH prepend — persists for the rest of install.sh because steps are
100
+ # called as bash functions in the SAME shell. We do this on every run,
101
+ # not only when we just created the venv, so a resumed install with a
102
+ # pre-existing venv still gets `python3 -c "import yaml"` resolving here.
103
+ if [ -x "$installer_venv/bin/python3" ]; then
104
+ export PATH="$installer_venv/bin:$PATH"
55
105
  if ! python3 -c "import yaml" 2>/dev/null; then
56
- err "pyyaml still not importable after install PATH issue?"
106
+ err "venv python3 on PATH but yaml not importable — corrupted venv?"
57
107
  return 1
58
108
  fi
59
109
  fi
package/install.sh CHANGED
@@ -86,6 +86,14 @@ STATE_FILE="$STATE_DIR/.install-state"
86
86
  LOG_FILE="$STATE_DIR/logs/install.log"
87
87
  mkdir -p "$STATE_DIR/logs"
88
88
 
89
+ # Installer-venv guard — if a previous run created the PEP-668-safe venv,
90
+ # prepend it to PATH NOW so subsequent steps that get skipped as
91
+ # "already done" (step 10) still pick up its python3 with pyyaml. Without
92
+ # this, a resumed install skips step 10 → step 15 hits "no module yaml".
93
+ if [ -x "$STATE_DIR/installer-venv/bin/python3" ]; then
94
+ export PATH="$STATE_DIR/installer-venv/bin:$PATH"
95
+ fi
96
+
89
97
  # Bundled version — used to detect state drift across upgrades. We read it
90
98
  # from the SSOT VERSION file shipped in the package, falling back to the
91
99
  # engine's pyproject.toml so a partially-installed system still works.
@@ -188,7 +188,7 @@ from omega_engine.genesis import (
188
188
  )
189
189
  from omega_engine import plan as plan_v7
190
190
 
191
- __version__ = "0.19.8"
191
+ __version__ = "0.19.10"
192
192
 
193
193
  __all__ = [
194
194
  "__version__",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "omega-engine"
3
- version = "0.19.8"
3
+ version = "0.19.10"
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.8
1
+ 0.19.10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentikos/omega-os",
3
- "version": "0.19.8",
3
+ "version": "0.19.10",
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"