@agentikos/omega-os 0.19.17 → 0.19.18
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__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +77 -20
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/package.json +1 -1
|
Binary file
|
|
Binary file
|
|
@@ -231,42 +231,99 @@ def spawn_worker(project: str, task: str, *,
|
|
|
231
231
|
return name
|
|
232
232
|
|
|
233
233
|
|
|
234
|
+
def _ensure_chat_context_dir(home: Path, label: str,
|
|
235
|
+
persona_md_path: Path) -> Path:
|
|
236
|
+
"""Create (idempotent) a dedicated Claude Code project dir for an
|
|
237
|
+
OmegaOS chat session.
|
|
238
|
+
|
|
239
|
+
Drops ``CLAUDE.md`` (the persona) so Claude Code auto-loads it as
|
|
240
|
+
project context when the user runs `claude` in this dir. Returns
|
|
241
|
+
the path.
|
|
242
|
+
"""
|
|
243
|
+
ctx_dir = home / "Agentik_Coding" / "chat-contexts" / label
|
|
244
|
+
ctx_dir.mkdir(parents=True, exist_ok=True)
|
|
245
|
+
target = ctx_dir / "CLAUDE.md"
|
|
246
|
+
if persona_md_path.is_file():
|
|
247
|
+
# Mirror the upstream persona file so refreshes propagate.
|
|
248
|
+
target.write_text(persona_md_path.read_text())
|
|
249
|
+
elif not target.exists():
|
|
250
|
+
target.write_text(
|
|
251
|
+
f"# {label} chat context\n\n"
|
|
252
|
+
f"(no persona file found — using default Claude Code behaviour)\n"
|
|
253
|
+
)
|
|
254
|
+
# Also drop a .gitignore so this transient dir never gets committed
|
|
255
|
+
# by accident if the user `git init`s it.
|
|
256
|
+
gi = ctx_dir / ".gitignore"
|
|
257
|
+
if not gi.exists():
|
|
258
|
+
gi.write_text("*\n!.gitignore\n!CLAUDE.md\n")
|
|
259
|
+
return ctx_dir
|
|
260
|
+
|
|
261
|
+
|
|
234
262
|
def spawn_aisb_chat(omega_home: str | Path | None = None) -> str:
|
|
235
|
-
"""Spawn the AISB master chat tmux session.
|
|
263
|
+
"""Spawn the AISB master chat tmux session — REAL Claude Code TUI.
|
|
264
|
+
|
|
265
|
+
v0.19.18 — instead of running our Python REPL (`omega aisb chat-loop`),
|
|
266
|
+
we now run the canonical `claude` CLI inside a dedicated project dir
|
|
267
|
+
seeded with the AISB master persona (``Agentik_SSOT/agents/aisb/CLAUDE.md``).
|
|
268
|
+
User sees the SAME interactive Claude Code TUI they get with bare
|
|
269
|
+
`claude`, but pre-loaded with AISB's identity, the L3 orchestrator
|
|
270
|
+
role, and full OmegaOS context.
|
|
236
271
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
attaches to (v0.19.15+).
|
|
272
|
+
Auth: Claude Max OAuth (inherited from the user's shell env, no env
|
|
273
|
+
override needed — `claude` reads `~/.claude/.credentials.json`).
|
|
240
274
|
|
|
241
|
-
|
|
242
|
-
the
|
|
243
|
-
|
|
244
|
-
subprocess (including `claude -p`) crashed with
|
|
245
|
-
"The current working directory was deleted".
|
|
275
|
+
cwd=$HOME is the legacy crash fix (spawn() default would inherit
|
|
276
|
+
the npm/_npx cache dir which can disappear); the `claude` process
|
|
277
|
+
itself runs with cwd = the context dir we just created.
|
|
246
278
|
"""
|
|
247
279
|
name = "AISB-chat"
|
|
248
280
|
home = Path(omega_home or os.environ.get("OMEGA_HOME")
|
|
249
281
|
or Path.home() / "Omega")
|
|
250
|
-
|
|
251
|
-
|
|
282
|
+
persona = home / "Agentik_SSOT" / "agents" / "aisb" / "CLAUDE.md"
|
|
283
|
+
ctx_dir = _ensure_chat_context_dir(home, "aisb-master", persona)
|
|
284
|
+
spawn(name, command=f"cd {ctx_dir} && exec claude",
|
|
252
285
|
cwd=str(Path.home()))
|
|
253
286
|
return name
|
|
254
287
|
|
|
255
288
|
|
|
256
289
|
def spawn_hermes_chat(omega_home: str | Path | None = None) -> str:
|
|
257
|
-
"""Spawn the Hermès
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
290
|
+
"""Spawn the Hermès chat tmux session — REAL Claude Code TUI, but on
|
|
291
|
+
Anthropic API (Hermès's own paid key, budget-isolated from Max OAuth).
|
|
292
|
+
|
|
293
|
+
Mirrors ``spawn_aisb_chat`` for the L2 companion: drops a Hermès
|
|
294
|
+
persona ``CLAUDE.md`` into a dedicated context dir, then runs
|
|
295
|
+
`claude` there with ``ANTHROPIC_API_KEY`` exported from the vault.
|
|
296
|
+
Setting the env var makes Claude Code use the API key instead of
|
|
297
|
+
the Max OAuth — same TUI, different billing surface.
|
|
263
298
|
"""
|
|
264
299
|
name = "Hermes-chat"
|
|
265
300
|
home = Path(omega_home or os.environ.get("OMEGA_HOME")
|
|
266
301
|
or Path.home() / "Omega")
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
302
|
+
persona = home / "Agentik_SSOT" / "docs" / "LAYERS.md" # Hermès reads architecture as persona
|
|
303
|
+
ctx_dir = _ensure_chat_context_dir(home, "hermes", persona)
|
|
304
|
+
# Resolve Anthropic key from vault → fallback to existing env.
|
|
305
|
+
try:
|
|
306
|
+
from omega_engine.vault import vault_read
|
|
307
|
+
api_key = (vault_read(home, "ANTHROPIC_API_KEY_HERMES") or "").strip()
|
|
308
|
+
except Exception: # noqa: BLE001
|
|
309
|
+
api_key = ""
|
|
310
|
+
if not api_key:
|
|
311
|
+
api_key = (os.environ.get("ANTHROPIC_API_KEY") or "").strip()
|
|
312
|
+
# If no key, fall back to Max OAuth (Hermès will share AISB's
|
|
313
|
+
# billing — not ideal but better than failing). Surface a marker
|
|
314
|
+
# file in the context dir so the user sees the warning on first launch.
|
|
315
|
+
if not api_key:
|
|
316
|
+
(ctx_dir / "NO_ANTHROPIC_KEY.md").write_text(
|
|
317
|
+
"# Hermès — no Anthropic API key wired\n\n"
|
|
318
|
+
"Set `ANTHROPIC_API_KEY_HERMES` in the vault to use Hermès's\n"
|
|
319
|
+
"own paid Anthropic budget instead of the AISB Max OAuth.\n\n"
|
|
320
|
+
" omega vault write ANTHROPIC_API_KEY_HERMES sk-ant-...\n"
|
|
321
|
+
)
|
|
322
|
+
cmd = f"cd {ctx_dir} && exec claude"
|
|
323
|
+
else:
|
|
324
|
+
cmd = (f"cd {ctx_dir} && "
|
|
325
|
+
f"ANTHROPIC_API_KEY={api_key} exec claude")
|
|
326
|
+
spawn(name, command=cmd, cwd=str(Path.home()))
|
|
270
327
|
return name
|
|
271
328
|
|
|
272
329
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.19.
|
|
1
|
+
0.19.18
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentikos/omega-os",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.18",
|
|
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"
|