@agentikos/omega-os 0.2.0 → 0.19.6
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/README.md +33 -3
- package/bootstrap/lib/__pycache__/claude-code-settings.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/llm-clis.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/manifest-helpers.cpython-313.pyc +0 -0
- package/bootstrap/lib/claude-code-settings.py +176 -0
- package/bootstrap/lib/common.sh +457 -1
- package/bootstrap/lib/llm-clis.py +341 -0
- package/bootstrap/lib/manifest-helpers.py +384 -0
- package/bootstrap/lib/steps.sh +790 -21
- package/bootstrap/manifest.example.yaml +87 -1
- package/bootstrap/templates/aisb/CLAUDE.md +305 -0
- package/bootstrap/templates/aisb/architect.md +204 -0
- package/bootstrap/templates/aisb/checkers/CLAUDE.md +9 -0
- package/bootstrap/templates/aisb/checkers/checker-architect.md +151 -0
- package/bootstrap/templates/aisb/checkers/checker-common.md +171 -0
- package/bootstrap/templates/aisb/checkers/checker-construct.md +129 -0
- package/bootstrap/templates/aisb/checkers/checker-keymaker.md +204 -0
- package/bootstrap/templates/aisb/checkers/checker-link.md +205 -0
- package/bootstrap/templates/aisb/checkers/checker-merovingian.md +219 -0
- package/bootstrap/templates/aisb/checkers/checker-morpheus.md +211 -0
- package/bootstrap/templates/aisb/checkers/checker-neo.md +177 -0
- package/bootstrap/templates/aisb/checkers/checker-niobe.md +156 -0
- package/bootstrap/templates/aisb/checkers/checker-oracle.md +164 -0
- package/bootstrap/templates/aisb/checkers/checker-seraph.md +187 -0
- package/bootstrap/templates/aisb/checkers/checker-smith.md +195 -0
- package/bootstrap/templates/aisb/checkers/checker-zion.md +113 -0
- package/bootstrap/templates/aisb/construct.md +135 -0
- package/bootstrap/templates/aisb/keymaker.md +227 -0
- package/bootstrap/templates/aisb/link.md +170 -0
- package/bootstrap/templates/aisb/lmc-protocol.md +57 -0
- package/bootstrap/templates/aisb/merovingian.md +159 -0
- package/bootstrap/templates/aisb/morpheus.md +243 -0
- package/bootstrap/templates/aisb/neo.md +147 -0
- package/bootstrap/templates/aisb/niobe.md +197 -0
- package/bootstrap/templates/aisb/oracle.md +244 -0
- package/bootstrap/templates/aisb/protocols/handoff-templates.md +204 -0
- package/bootstrap/templates/aisb/protocols/shared-protocol.md +248 -0
- package/bootstrap/templates/aisb/pythia.md +153 -0
- package/bootstrap/templates/aisb/seraph.md +315 -0
- package/bootstrap/templates/aisb/smith.md +202 -0
- package/bootstrap/templates/aisb/zion.md +172 -0
- package/bootstrap/templates/autonomous/audit-patrol.yaml +41 -0
- package/bootstrap/templates/autonomous/smith-reflect.yaml +43 -0
- package/bootstrap/templates/autonomous/ssh-key-rotate.yaml +46 -0
- package/bootstrap/templates/autonomous/support-agent.yaml +38 -0
- package/docs/AUDITS.md +85 -0
- package/docs/GAP-ANALYSIS.md +214 -0
- package/docs/INSTALL.md +47 -9
- package/docs/MCP-AND-PLUGINS.md +31 -4
- package/docs/SIMULATION.md +171 -0
- package/docs/simulate.sh +211 -0
- package/install.sh +164 -17
- package/omega/Agentik_Engine/README.md +4 -2
- package/omega/Agentik_Engine/omega_engine/__init__.py +147 -1
- package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/agent_messages.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_diff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/auto_update.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/backup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/barrier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/bus.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/classifier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cleanup.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__/completions.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/costs.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/done_signal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/events.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_bootstrap.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/learning.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/memory.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prompts.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/provider.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prune.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/pursue.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/smoke.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/store.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/supervisor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/task.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tools.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/understand_anything.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/updater.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/validate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/webhooks.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/worker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/account.py +28 -31
- package/omega/Agentik_Engine/omega_engine/agent_messages.py +167 -0
- package/omega/Agentik_Engine/omega_engine/aisb_chat.py +128 -0
- package/omega/Agentik_Engine/omega_engine/audit_diff.py +99 -0
- package/omega/Agentik_Engine/omega_engine/audit_gate.py +149 -0
- package/omega/Agentik_Engine/omega_engine/audits/__init__.py +60 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/batcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/dispatcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/generator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/batcher.py +218 -0
- package/omega/Agentik_Engine/omega_engine/audits/dispatcher.py +92 -0
- package/omega/Agentik_Engine/omega_engine/audits/generator.py +234 -0
- package/omega/Agentik_Engine/omega_engine/audits/history.py +168 -0
- package/omega/Agentik_Engine/omega_engine/audits/pipeline.py +198 -0
- package/omega/Agentik_Engine/omega_engine/auto_update.py +339 -0
- package/omega/Agentik_Engine/omega_engine/backup.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cadence.py +158 -0
- package/omega/Agentik_Engine/omega_engine/classifier.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cleanup.py +673 -0
- package/omega/Agentik_Engine/omega_engine/cli.py +4156 -86
- package/omega/Agentik_Engine/omega_engine/completions.py +260 -0
- package/omega/Agentik_Engine/omega_engine/costs.py +100 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/engine.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/engine.py +53 -4
- package/omega/Agentik_Engine/omega_engine/daemons/telegram.py +101 -17
- package/omega/Agentik_Engine/omega_engine/done_signal.py +154 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/artifact.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/automation.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/claudecode.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/connection.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/coworker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/loop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/prompt.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/skill.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/envelope.py +219 -0
- package/omega/Agentik_Engine/omega_engine/executor.py +149 -10
- package/omega/Agentik_Engine/omega_engine/genesis/__init__.py +134 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/phases.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/stack.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/state.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/orchestrator.py +262 -0
- package/omega/Agentik_Engine/omega_engine/genesis/phases.py +950 -0
- package/omega/Agentik_Engine/omega_engine/genesis/stack.py +324 -0
- package/omega/Agentik_Engine/omega_engine/genesis/state.py +353 -0
- package/omega/Agentik_Engine/omega_engine/handoff.py +459 -0
- package/omega/Agentik_Engine/omega_engine/hermes.py +426 -0
- package/omega/Agentik_Engine/omega_engine/hermes_bootstrap.py +382 -0
- package/omega/Agentik_Engine/omega_engine/hermes_desktop.py +469 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__init__.py +30 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/graphify.py +234 -0
- package/omega/Agentik_Engine/omega_engine/learning.py +268 -0
- package/omega/Agentik_Engine/omega_engine/managed_agent.py +467 -0
- package/omega/Agentik_Engine/omega_engine/memory.py +271 -0
- package/omega/Agentik_Engine/omega_engine/menu.py +1065 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__init__.py +144 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/v0_14_0.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/v0_14_0.py +29 -0
- package/omega/Agentik_Engine/omega_engine/mission.py +16 -13
- package/omega/Agentik_Engine/omega_engine/plan.py +846 -0
- package/omega/Agentik_Engine/omega_engine/prompts.py +158 -0
- package/omega/Agentik_Engine/omega_engine/provider.py +161 -12
- package/omega/Agentik_Engine/omega_engine/prune.py +151 -0
- package/omega/Agentik_Engine/omega_engine/pursue.py +205 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/agentic.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/corrective.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/graph.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/hybrid.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/multimodal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/router.py +28 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__init__.py +48 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/auditor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/finder.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/installer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/marketplaces.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/auditor.py +232 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/finder.py +94 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/installer.py +129 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/marketplaces.py +80 -0
- package/omega/Agentik_Engine/omega_engine/skill_routing.py +388 -0
- package/omega/Agentik_Engine/omega_engine/smoke.py +81 -0
- package/omega/Agentik_Engine/omega_engine/store.py +88 -41
- package/omega/Agentik_Engine/omega_engine/sync.py +142 -1
- package/omega/Agentik_Engine/omega_engine/telegram_history.py +260 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +526 -0
- package/omega/Agentik_Engine/omega_engine/understand_anything.py +275 -0
- package/omega/Agentik_Engine/omega_engine/updater.py +70 -0
- package/omega/Agentik_Engine/omega_engine/validate.py +186 -0
- package/omega/Agentik_Engine/omega_engine/vault.py +342 -0
- package/omega/Agentik_Engine/omega_engine/webhooks.py +262 -0
- package/omega/Agentik_Engine/omega_engine/worker.py +526 -0
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/test_account.py +8 -3
- package/omega/Agentik_Engine/tests/test_adversarial.py +351 -0
- package/omega/Agentik_Engine/tests/test_agents_envelope.py +274 -0
- package/omega/Agentik_Engine/tests/test_audits_pipeline.py +348 -0
- package/omega/Agentik_Engine/tests/test_auto_update_and_migrations.py +394 -0
- package/omega/Agentik_Engine/tests/test_genesis_and_plan.py +573 -0
- package/omega/Agentik_Engine/tests/test_graphify.py +190 -0
- package/omega/Agentik_Engine/tests/test_handoff.py +311 -0
- package/omega/Agentik_Engine/tests/test_hermes_and_ua.py +387 -0
- package/omega/Agentik_Engine/tests/test_hermes_bootstrap_and_desktop.py +358 -0
- package/omega/Agentik_Engine/tests/test_install_steps.py +359 -0
- package/omega/Agentik_Engine/tests/test_install_ux.py +151 -0
- package/omega/Agentik_Engine/tests/test_installer_wiring.py +496 -0
- package/omega/Agentik_Engine/tests/test_intelligence.py +285 -0
- package/omega/Agentik_Engine/tests/test_llm_clis_and_uninstall.py +228 -0
- package/omega/Agentik_Engine/tests/test_managed_agent.py +363 -0
- package/omega/Agentik_Engine/tests/test_max_provider_and_menu.py +231 -0
- package/omega/Agentik_Engine/tests/test_menu_coverage.py +72 -0
- package/omega/Agentik_Engine/tests/test_pursue_cadence.py +217 -0
- package/omega/Agentik_Engine/tests/test_role_aliases_and_ssot.py +207 -0
- package/omega/Agentik_Engine/tests/test_skill_discovery_and_gate.py +337 -0
- package/omega/Agentik_Engine/tests/test_skill_power.py +259 -0
- package/omega/Agentik_Engine/tests/test_skill_routing.py +189 -0
- package/omega/Agentik_Engine/tests/test_telegram_history.py +209 -0
- package/omega/Agentik_Engine/tests/test_tmux_and_aisb_chat.py +223 -0
- package/omega/Agentik_Engine/tests/test_v06_features.py +370 -0
- package/omega/Agentik_Engine/tests/test_vault.py +173 -0
- package/omega/Agentik_Engine/tests/test_webhooks_and_readiness.py +277 -0
- package/omega/Agentik_Engine/tests/test_worker_and_cleanup.py +541 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-key +3 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-pub +1 -0
- package/omega/Agentik_Runtime/audits.db +0 -0
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/omega/Agentik_SSOT/claude-plugins/claude-plugins.yaml +100 -0
- package/omega/Agentik_SSOT/docs/LAYERS.md +90 -0
- package/omega/Agentik_SSOT/docs/USER-JOURNEY.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-INTERCONNECTIONS.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-ORCHESTRATION-PLAYBOOK.md +364 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/AUDIT-VERIFICATION-CONTRACT.md +272 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/QUALITY-ARSENAL-PREAMBLE.md +462 -0
- package/omega/Agentik_SSOT/marketplaces/design-discipline.yaml +86 -0
- package/omega/Agentik_SSOT/skills/a11yaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/apiaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/audit-orchestrator.md +212 -0
- package/omega/Agentik_SSOT/skills/audit-pilot.md +466 -0
- package/omega/Agentik_SSOT/skills/audit-tracker.md +147 -0
- package/omega/Agentik_SSOT/skills/automationaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/cadence/SKILL.md +76 -0
- package/omega/Agentik_SSOT/skills/codeaudit/SKILL.md +153 -0
- package/omega/Agentik_SSOT/skills/copyaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dataaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/debugaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dispatch/SKILL.md +79 -0
- package/omega/Agentik_SSOT/skills/dxaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/featureaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/flowaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/genesis/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/handoff/SKILL.md +117 -0
- package/omega/Agentik_SSOT/skills/logicaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/motionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/newcmd.md +300 -0
- package/omega/Agentik_SSOT/skills/perfaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/plan/SKILL.md +127 -0
- package/omega/Agentik_SSOT/skills/pursue/SKILL.md +68 -0
- package/omega/Agentik_SSOT/skills/quality-arsenal.md +180 -0
- package/omega/Agentik_SSOT/skills/rag-route.md +9 -0
- package/omega/Agentik_SSOT/skills/refontaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/retentionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/secaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/seoaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/skill-auditor/SKILL.md +83 -0
- package/omega/Agentik_SSOT/skills/skill-finder/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/uiuxaudit/SKILL.md +165 -0
- package/package.json +2 -2
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# OmegaOS — Concurrent-mission simulation results
|
|
2
|
+
|
|
3
|
+
Run from the isolated sandbox at `~/VibeCoding/work/OmegaOS-sandbox/`.
|
|
4
|
+
The live `~/Omega/` and `~/.claude/` were never touched. All install state
|
|
5
|
+
landed under `$SANDBOX/Omega/` and `$SANDBOX/home/.claude/`.
|
|
6
|
+
|
|
7
|
+
## What was verified
|
|
8
|
+
|
|
9
|
+
### Phase 1 — three concurrent `omega run` missions
|
|
10
|
+
|
|
11
|
+
Three `omega run` calls fired in parallel against the same engine.
|
|
12
|
+
SQLite WAL serialised the writes; no corruption, no missing events.
|
|
13
|
+
|
|
14
|
+
| Mission | Intent | Result |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| 1 | `implement the login endpoint with email + password validation` | `completed` |
|
|
17
|
+
| 2 | `add the password reset flow with secure token generation` | `completed` |
|
|
18
|
+
| 3 | `write the API contract tests for the user profile endpoint` | `completed` |
|
|
19
|
+
|
|
20
|
+
Total elapsed for all three: **12 seconds**. The event log shows 66
|
|
21
|
+
total events across the 3 distinct missions:
|
|
22
|
+
|
|
23
|
+
| Event type | Count |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `task.created` | 9 (3 missions × 3 tasks: 1 oracle + 2 workers) |
|
|
26
|
+
| `task.dispatched` | 9 |
|
|
27
|
+
| `task.started` | 9 |
|
|
28
|
+
| `task.claimed_done` | 9 |
|
|
29
|
+
| `task.verifying` | 9 |
|
|
30
|
+
| `task.verified` | 9 |
|
|
31
|
+
| `task.completed` | 9 |
|
|
32
|
+
| `scope.joinable` | 3 (one per Oracle when its workers finished) |
|
|
33
|
+
| **Total** | **66** |
|
|
34
|
+
|
|
35
|
+
Every task lifecycle fired cleanly. No partial scopes, no failed transitions.
|
|
36
|
+
|
|
37
|
+
### Phase 2 — `omega pursue` with a real verify_cmd
|
|
38
|
+
|
|
39
|
+
A real shell verify_cmd (`test -f <sentinel> || (touch <sentinel> && exit 1)`)
|
|
40
|
+
was used. First iteration: sentinel missing → verify exits 1 + creates the
|
|
41
|
+
sentinel. Second iteration: sentinel exists → verify exits 0 → SUCCESS.
|
|
42
|
+
|
|
43
|
+
* `pursue` exit code: `0` (done_clean)
|
|
44
|
+
* Iterations to converge: 2
|
|
45
|
+
* Sentinel file on disk: **created**
|
|
46
|
+
* `.done.json` written with `status=done_clean`
|
|
47
|
+
|
|
48
|
+
### Phase 3 — artifacts on disk
|
|
49
|
+
|
|
50
|
+
7 `.done.json` files written, all `status=done_clean`:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
pur-05718e3c/.done.json ← omega pursue
|
|
54
|
+
t-5da292e5/.done.json ← worker
|
|
55
|
+
t-2fb03932/.done.json ← worker
|
|
56
|
+
t-b89b7ab0/.done.json ← worker
|
|
57
|
+
t-42fc308d/.done.json ← worker
|
|
58
|
+
t-12642563/.done.json ← worker
|
|
59
|
+
t-751d007b/.done.json ← worker
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Phase 4 — `omega status`
|
|
63
|
+
|
|
64
|
+
Reports 9 tasks (3 dispatchers `d-*` + 6 executors `t-*`), all `completed`.
|
|
65
|
+
|
|
66
|
+
### Phase 5 — `omega doctor`
|
|
67
|
+
|
|
68
|
+
Verdict: **PASS with warnings** (the warnings are all minimal-profile
|
|
69
|
+
expectations: no Telegram token, no service units, no audit-history rows
|
|
70
|
+
yet because the simple AuditGate handled this run).
|
|
71
|
+
|
|
72
|
+
### Phase 6 — Stop-hook gate intervention
|
|
73
|
+
|
|
74
|
+
A synthetic failed `.done.json` was planted:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"status": "failed",
|
|
79
|
+
"summary": "intentional failure to exercise the gate",
|
|
80
|
+
"errors": ["the verify_cmd never passed", "exited 1 on every attempt"]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`omega audit gate` was fed the hook JSON
|
|
85
|
+
`{"session_id":"test-failure","cwd":"/tmp"}` on stdin. Result:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
exit code: 2 (= deny the Stop)
|
|
89
|
+
decision: deny
|
|
90
|
+
reason: worker reported status=failed in .done.json
|
|
91
|
+
(the verify_cmd never passed, exited 1 on every attempt).
|
|
92
|
+
Resume the task or revise.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**This is the killer feature working end-to-end.** When Claude tries to
|
|
96
|
+
Stop with a failing `.done.json`, the hook intercepts and forces it to
|
|
97
|
+
keep working.
|
|
98
|
+
|
|
99
|
+
## What this proves
|
|
100
|
+
|
|
101
|
+
| Capability | Demonstrated |
|
|
102
|
+
|---|---|
|
|
103
|
+
| Multiple Oracles dispatched concurrently | ✓ 3 missions ran in parallel, all completed |
|
|
104
|
+
| Each Oracle spawns its own workers | ✓ 9 total tasks across 3 missions |
|
|
105
|
+
| Event-sourced lifecycle (created → verified → completed) | ✓ All 7 event types fired per task, in order |
|
|
106
|
+
| SQLite WAL handles concurrent writes | ✓ 66 events, no corruption, all 3 missions distinct |
|
|
107
|
+
| `.done.json` schema produced + read | ✓ 7 files written, all valid JSON, all `done_clean` |
|
|
108
|
+
| `omega pursue` actually iterates with real shell verification | ✓ 2 iterations to converge, sentinel file actually created |
|
|
109
|
+
| Stop-hook gate denies completion on failed audit | ✓ Exit 2 + `permissionDecision: deny` payload |
|
|
110
|
+
| Sandbox isolation (no live-system contamination) | ✓ `~/Omega/` and `~/.claude/` untouched |
|
|
111
|
+
|
|
112
|
+
## Sandbox layout
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
~/VibeCoding/work/OmegaOS-sandbox/
|
|
116
|
+
├── home/ ← fake $HOME (per-install setup)
|
|
117
|
+
│ └── .claude/
|
|
118
|
+
│ └── settings.json ← Stop hook + Agent Teams + bypass wired here
|
|
119
|
+
├── Omega/ ← isolated $OMEGA_HOME
|
|
120
|
+
│ ├── Agentik_SSOT/
|
|
121
|
+
│ ├── Agentik_Engine/
|
|
122
|
+
│ ├── Agentik_Coding/
|
|
123
|
+
│ ├── Agentik_Runtime/
|
|
124
|
+
│ │ ├── eventlog/omega.db
|
|
125
|
+
│ │ ├── audits.db
|
|
126
|
+
│ │ └── sessions/
|
|
127
|
+
│ │ ├── pur-*/
|
|
128
|
+
│ │ └── t-*/
|
|
129
|
+
│ └── ...
|
|
130
|
+
├── sim-logs/
|
|
131
|
+
│ ├── mission-1.log
|
|
132
|
+
│ ├── mission-2.log
|
|
133
|
+
│ ├── mission-3.log
|
|
134
|
+
│ └── pursue.log
|
|
135
|
+
├── sim-artifacts/
|
|
136
|
+
│ └── created-by-pursue.txt ← real file created by pursue's loop
|
|
137
|
+
├── simulate.sh
|
|
138
|
+
└── SIMULATION-RESULTS.md (this file)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## How to re-run
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
cd ~/VibeCoding/work/OmegaOS
|
|
145
|
+
# 1. Fresh sandbox install
|
|
146
|
+
SANDBOX=~/VibeCoding/work/OmegaOS-sandbox
|
|
147
|
+
rm -rf "$SANDBOX/Omega" "$SANDBOX/home/.claude"
|
|
148
|
+
HOME="$SANDBOX/home" OMEGA_HOME="$SANDBOX/Omega" \
|
|
149
|
+
CLAUDE_OAUTH_max_primary="sk-test-mock-primary" \
|
|
150
|
+
bash install.sh --profile minimal \
|
|
151
|
+
--manifest bootstrap/manifest.example.yaml \
|
|
152
|
+
--non-interactive --force
|
|
153
|
+
|
|
154
|
+
# 2. Run the simulation
|
|
155
|
+
"$SANDBOX/simulate.sh"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## npm package status
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
name: @agentikos/omega-os
|
|
162
|
+
version: 0.3.0
|
|
163
|
+
size: 728 KB compressed / 2.0 MB unpacked
|
|
164
|
+
files: 291
|
|
165
|
+
bin: bin/omega-os.js
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Ready for `npm publish` whenever you give the go-ahead. The package
|
|
169
|
+
publishes publicly today; to make it private requires either an npm
|
|
170
|
+
paid-org plan or unpublishing the existing `0.2.0` first (which requires
|
|
171
|
+
2FA OTP from your account).
|
package/docs/simulate.sh
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# OmegaOS — concurrent-mission simulation harness
|
|
3
|
+
#
|
|
4
|
+
# Spins up 3 `omega run` missions in parallel + 1 `omega pursue` with a
|
|
5
|
+
# real verify_cmd, then reports on:
|
|
6
|
+
#
|
|
7
|
+
# * event log entries per mission (SQLite WAL handles concurrent writes)
|
|
8
|
+
# * audit history rows recorded
|
|
9
|
+
# * .done.json artefacts written
|
|
10
|
+
# * omega status + omega doctor
|
|
11
|
+
#
|
|
12
|
+
# Runs entirely in the sandbox — never touches the live ~/Omega or
|
|
13
|
+
# ~/.claude.
|
|
14
|
+
|
|
15
|
+
set -u
|
|
16
|
+
SANDBOX="${SANDBOX:-/home/hacker/VibeCoding/work/OmegaOS-sandbox}"
|
|
17
|
+
export HOME="$SANDBOX/home"
|
|
18
|
+
export OMEGA_HOME="$SANDBOX/Omega"
|
|
19
|
+
OMEGA="$OMEGA_HOME/Agentik_Tools/bin/omega"
|
|
20
|
+
LOG_DIR="$SANDBOX/sim-logs"
|
|
21
|
+
mkdir -p "$LOG_DIR"
|
|
22
|
+
rm -f "$LOG_DIR"/*.log
|
|
23
|
+
|
|
24
|
+
if [ ! -x "$OMEGA" ]; then
|
|
25
|
+
echo "ERROR: $OMEGA not found — run install.sh into the sandbox first"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
echo "=========================================================="
|
|
30
|
+
echo " OmegaOS — concurrent-mission simulation"
|
|
31
|
+
echo " sandbox: $SANDBOX"
|
|
32
|
+
echo " omega: $OMEGA"
|
|
33
|
+
echo " log dir: $LOG_DIR"
|
|
34
|
+
echo "=========================================================="
|
|
35
|
+
echo
|
|
36
|
+
|
|
37
|
+
# ----------------------------------------------------------------------
|
|
38
|
+
# PHASE 1 — three concurrent `omega run` missions
|
|
39
|
+
# ----------------------------------------------------------------------
|
|
40
|
+
echo "[phase 1] dispatching 3 concurrent missions in parallel"
|
|
41
|
+
echo
|
|
42
|
+
|
|
43
|
+
# Each mission writes to its own log; SQLite WAL serialises writes to the
|
|
44
|
+
# event store. The whole graph (Oracle → workers → verifier → COMPLETED)
|
|
45
|
+
# runs synchronously per call, but the 3 calls themselves race.
|
|
46
|
+
|
|
47
|
+
declare -a PIDS
|
|
48
|
+
declare -a INTENTS=(
|
|
49
|
+
"implement the login endpoint with email + password validation"
|
|
50
|
+
"add the password reset flow with secure token generation"
|
|
51
|
+
"write the API contract tests for the user profile endpoint"
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
t0=$(date +%s)
|
|
55
|
+
for i in 0 1 2; do
|
|
56
|
+
intent="${INTENTS[$i]}"
|
|
57
|
+
log="$LOG_DIR/mission-$((i + 1)).log"
|
|
58
|
+
echo " → mission $((i + 1)): \"$intent\""
|
|
59
|
+
( "$OMEGA" run "$intent" > "$log" 2>&1 ) &
|
|
60
|
+
PIDS+=($!)
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
echo
|
|
64
|
+
echo " waiting for all 3 missions to finish..."
|
|
65
|
+
for pid in "${PIDS[@]}"; do
|
|
66
|
+
wait "$pid"
|
|
67
|
+
done
|
|
68
|
+
t1=$(date +%s)
|
|
69
|
+
echo " all 3 missions complete (elapsed: $((t1 - t0))s)"
|
|
70
|
+
echo
|
|
71
|
+
|
|
72
|
+
# ----------------------------------------------------------------------
|
|
73
|
+
# PHASE 2 — `omega pursue` with a real verify_cmd
|
|
74
|
+
# ----------------------------------------------------------------------
|
|
75
|
+
echo "[phase 2] omega pursue with a real verify_cmd (file-creation loop)"
|
|
76
|
+
echo
|
|
77
|
+
|
|
78
|
+
# Goal: a file at $SANDBOX/sim-artifacts/created-by-pursue.txt must exist.
|
|
79
|
+
# The first iteration's verify_cmd will FAIL. We use a sentinel pattern:
|
|
80
|
+
# the verify_cmd creates the file on first miss and exits 1, then the
|
|
81
|
+
# second iteration's verify_cmd sees the file and exits 0.
|
|
82
|
+
mkdir -p "$SANDBOX/sim-artifacts"
|
|
83
|
+
sentinel="$SANDBOX/sim-artifacts/created-by-pursue.txt"
|
|
84
|
+
rm -f "$sentinel"
|
|
85
|
+
verify_cmd="test -f $sentinel || (echo 'creating sentinel...' && touch $sentinel && exit 1)"
|
|
86
|
+
|
|
87
|
+
"$OMEGA" pursue "$verify_cmd" "create the sentinel artifact" \
|
|
88
|
+
--max-iters 3 --cwd "$SANDBOX/sim-artifacts" > "$LOG_DIR/pursue.log" 2>&1
|
|
89
|
+
pursue_rc=$?
|
|
90
|
+
echo " pursue exit: $pursue_rc"
|
|
91
|
+
echo " sentinel exists: $(test -f "$sentinel" && echo yes || echo no)"
|
|
92
|
+
echo
|
|
93
|
+
|
|
94
|
+
# ----------------------------------------------------------------------
|
|
95
|
+
# PHASE 3 — verification: event log, audit history, .done.json files
|
|
96
|
+
# ----------------------------------------------------------------------
|
|
97
|
+
echo "[phase 3] verification — what landed in the system"
|
|
98
|
+
echo
|
|
99
|
+
|
|
100
|
+
eventlog="$OMEGA_HOME/Agentik_Runtime/eventlog/omega.db"
|
|
101
|
+
echo " event log @ $eventlog:"
|
|
102
|
+
if [ -f "$eventlog" ]; then
|
|
103
|
+
python3 - <<PY
|
|
104
|
+
import sqlite3, sys
|
|
105
|
+
conn = sqlite3.connect("$eventlog")
|
|
106
|
+
total = conn.execute("SELECT COUNT(*) FROM events").fetchone()[0]
|
|
107
|
+
missions = conn.execute(
|
|
108
|
+
"SELECT DISTINCT json_extract(payload, '\$.mission_id') as m FROM events "
|
|
109
|
+
"WHERE json_extract(payload, '\$.mission_id') IS NOT NULL"
|
|
110
|
+
).fetchall()
|
|
111
|
+
states = conn.execute(
|
|
112
|
+
"SELECT type, COUNT(*) FROM events GROUP BY type ORDER BY 2 DESC"
|
|
113
|
+
).fetchall()
|
|
114
|
+
print(f" total events: {total}")
|
|
115
|
+
print(f" distinct missions: {len([m for m in missions if m[0]])}")
|
|
116
|
+
print(f" top event types:")
|
|
117
|
+
for typ, n in states[:8]:
|
|
118
|
+
print(f" {typ:<22} {n}")
|
|
119
|
+
conn.close()
|
|
120
|
+
PY
|
|
121
|
+
else
|
|
122
|
+
echo " (no event store yet)"
|
|
123
|
+
fi
|
|
124
|
+
echo
|
|
125
|
+
|
|
126
|
+
auditdb="$OMEGA_HOME/Agentik_Runtime/audits.db"
|
|
127
|
+
echo " audit history @ $auditdb:"
|
|
128
|
+
if [ -f "$auditdb" ]; then
|
|
129
|
+
python3 - <<PY
|
|
130
|
+
import sqlite3
|
|
131
|
+
conn = sqlite3.connect("$auditdb")
|
|
132
|
+
runs = conn.execute(
|
|
133
|
+
"SELECT audit_id, score, verified FROM audit_runs ORDER BY timestamp DESC LIMIT 10"
|
|
134
|
+
).fetchall()
|
|
135
|
+
print(f" {len(runs)} run(s) on file:")
|
|
136
|
+
for aid, score, ver in runs:
|
|
137
|
+
mark = "ok" if ver else "FAIL"
|
|
138
|
+
print(f" [{mark}] {aid:<22} score={score}")
|
|
139
|
+
conn.close()
|
|
140
|
+
PY
|
|
141
|
+
else
|
|
142
|
+
echo " (no audit history yet — the gate uses the simple AuditGate by default)"
|
|
143
|
+
fi
|
|
144
|
+
echo
|
|
145
|
+
|
|
146
|
+
echo " .done.json artefacts written:"
|
|
147
|
+
done_files=$(find "$OMEGA_HOME/Agentik_Runtime/sessions" -name ".done.json" 2>/dev/null | head -10)
|
|
148
|
+
if [ -z "$done_files" ]; then
|
|
149
|
+
echo " (none)"
|
|
150
|
+
else
|
|
151
|
+
echo "$done_files" | while read -r f; do
|
|
152
|
+
status=$(python3 -c "import json; print(json.load(open('$f'))['status'])" 2>/dev/null)
|
|
153
|
+
echo " $f → $status"
|
|
154
|
+
done
|
|
155
|
+
fi
|
|
156
|
+
echo
|
|
157
|
+
|
|
158
|
+
# ----------------------------------------------------------------------
|
|
159
|
+
# PHASE 4 — omega status + omega doctor
|
|
160
|
+
# ----------------------------------------------------------------------
|
|
161
|
+
echo "[phase 4] omega status"
|
|
162
|
+
echo
|
|
163
|
+
"$OMEGA" status 2>&1 | head -15
|
|
164
|
+
echo
|
|
165
|
+
|
|
166
|
+
echo "[phase 5] omega doctor (verdict line only)"
|
|
167
|
+
"$OMEGA" doctor 2>&1 | tail -3
|
|
168
|
+
echo
|
|
169
|
+
|
|
170
|
+
# ----------------------------------------------------------------------
|
|
171
|
+
# PHASE 6 — simulate the Stop hook intervention
|
|
172
|
+
# ----------------------------------------------------------------------
|
|
173
|
+
echo "[phase 6] Stop-hook gate intervention test"
|
|
174
|
+
echo
|
|
175
|
+
|
|
176
|
+
# Force a failed .done.json so the gate denies.
|
|
177
|
+
fake_session="$OMEGA_HOME/Agentik_Runtime/sessions/test-failure"
|
|
178
|
+
mkdir -p "$fake_session"
|
|
179
|
+
cat > "$fake_session/.done.json" <<'JSON'
|
|
180
|
+
{
|
|
181
|
+
"status": "failed",
|
|
182
|
+
"summary": "intentional failure to exercise the gate",
|
|
183
|
+
"errors": ["the verify_cmd never passed", "exited 1 on every attempt"]
|
|
184
|
+
}
|
|
185
|
+
JSON
|
|
186
|
+
|
|
187
|
+
# Call `omega audit gate` directly with the hook JSON on stdin.
|
|
188
|
+
echo " feeding the gate a hook payload with session_id=test-failure..."
|
|
189
|
+
gate_output=$(echo '{"session_id":"test-failure","cwd":"/tmp"}' \
|
|
190
|
+
| "$OMEGA" audit gate 2>&1)
|
|
191
|
+
gate_rc=$?
|
|
192
|
+
echo " exit code: $gate_rc (expected 2 = deny)"
|
|
193
|
+
if echo "$gate_output" | python3 -c "
|
|
194
|
+
import json, sys
|
|
195
|
+
try:
|
|
196
|
+
data = json.loads(sys.stdin.read())
|
|
197
|
+
print(' decision:', data.get('hookSpecificOutput', {}).get('permissionDecision', '?'))
|
|
198
|
+
print(' reason:', data.get('hookSpecificOutput', {}).get('permissionDecisionReason', '')[:120])
|
|
199
|
+
except Exception as e:
|
|
200
|
+
print(' (gate emitted non-JSON or nothing)')
|
|
201
|
+
" 2>/dev/null; then
|
|
202
|
+
:
|
|
203
|
+
fi
|
|
204
|
+
|
|
205
|
+
# Cleanup the fake failure.
|
|
206
|
+
rm -rf "$fake_session"
|
|
207
|
+
|
|
208
|
+
echo
|
|
209
|
+
echo "=========================================================="
|
|
210
|
+
echo " simulation complete"
|
|
211
|
+
echo "=========================================================="
|
package/install.sh
CHANGED
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
# Usage:
|
|
5
5
|
# bash install.sh [--profile vps|workstation|minimal]
|
|
6
6
|
# [--manifest FILE] [--non-interactive] [--force]
|
|
7
|
+
# [--no-path-setup]
|
|
8
|
+
# [--user NAME | --create-user [NAME]]
|
|
9
|
+
#
|
|
10
|
+
# User modes (modular, on top of any of the flags above):
|
|
11
|
+
# (default) install for the current user under $HOME/Omega
|
|
12
|
+
# --user NAME install for an existing user NAME (we re-exec as them)
|
|
13
|
+
# --create-user [NAME] create a system user (Linux only) and install as them.
|
|
14
|
+
# NAME defaults to "omega" if omitted.
|
|
7
15
|
#
|
|
8
16
|
# Idempotent and resumable: completed steps are recorded; re-running resumes.
|
|
9
17
|
set -euo pipefail
|
|
@@ -15,40 +23,179 @@ source "$REPO_DIR/bootstrap/lib/common.sh"
|
|
|
15
23
|
source "$REPO_DIR/bootstrap/lib/steps.sh"
|
|
16
24
|
|
|
17
25
|
PROFILE="vps"; MANIFEST=""; NONINTERACTIVE=0; FORCE=0
|
|
26
|
+
USER_REQUESTED=""; CREATE_USER=0; CREATE_USER_NAME=""
|
|
27
|
+
PROFILE_EXPLICIT=0; NO_PATH_SETUP=0; DRY_RUN=0
|
|
18
28
|
[ "$(uname -s)" = "Darwin" ] && PROFILE="workstation"
|
|
19
29
|
|
|
20
30
|
while [ $# -gt 0 ]; do
|
|
21
31
|
case "$1" in
|
|
22
|
-
--profile) PROFILE="${2:?}"; shift 2 ;;
|
|
23
|
-
--manifest) MANIFEST="${2:?}"; NONINTERACTIVE=1; shift 2
|
|
32
|
+
--profile) PROFILE="${2:?}"; PROFILE_EXPLICIT=1; shift 2 ;;
|
|
33
|
+
--manifest) MANIFEST="${2:?}"; NONINTERACTIVE=1; shift 2
|
|
34
|
+
# Resolve to absolute path so later steps that cd
|
|
35
|
+
# somewhere else still find the file.
|
|
36
|
+
case "$MANIFEST" in
|
|
37
|
+
/*) ;;
|
|
38
|
+
*) MANIFEST="$(cd "$(dirname "$MANIFEST")" && pwd)/$(basename "$MANIFEST")" ;;
|
|
39
|
+
esac ;;
|
|
24
40
|
--non-interactive) NONINTERACTIVE=1; shift ;;
|
|
25
41
|
--force) FORCE=1; shift ;;
|
|
26
|
-
-
|
|
42
|
+
--no-path-setup) NO_PATH_SETUP=1; shift ;;
|
|
43
|
+
--dry-run) DRY_RUN=1; shift ;;
|
|
44
|
+
--user) USER_REQUESTED="${2:?}"; shift 2 ;;
|
|
45
|
+
--create-user)
|
|
46
|
+
CREATE_USER=1
|
|
47
|
+
# Optional inline name: --create-user -> default "omega"
|
|
48
|
+
# --create-user agentik -> "agentik"
|
|
49
|
+
if [ $# -ge 2 ] && [ -n "${2:-}" ] && [ "${2:0:1}" != "-" ]; then
|
|
50
|
+
CREATE_USER_NAME="$2"; shift 2
|
|
51
|
+
else
|
|
52
|
+
shift
|
|
53
|
+
fi
|
|
54
|
+
;;
|
|
55
|
+
-h|--help) awk 'NR==1 && /^#!/ {next} /^#/ {sub(/^#[ ]?/, ""); print; next} {exit}' "$0"; exit 0 ;;
|
|
27
56
|
*) die "unknown argument: $1" ;;
|
|
28
57
|
esac
|
|
29
58
|
done
|
|
30
|
-
|
|
59
|
+
|
|
60
|
+
# Stable wall-clock start (used for elapsed in step + final card).
|
|
61
|
+
export INSTALL_START_TS="$(date +%s)"
|
|
62
|
+
|
|
63
|
+
# Reconstruct a clean argv (without --user / --create-user) for the re-exec.
|
|
64
|
+
INSTALL_CLEAN_ARGS=("--profile" "$PROFILE")
|
|
65
|
+
[ -n "$MANIFEST" ] && INSTALL_CLEAN_ARGS+=("--manifest" "$MANIFEST")
|
|
66
|
+
[ "$NONINTERACTIVE" = "1" ] && INSTALL_CLEAN_ARGS+=("--non-interactive")
|
|
67
|
+
[ "$FORCE" = "1" ] && INSTALL_CLEAN_ARGS+=("--force")
|
|
68
|
+
[ "$NO_PATH_SETUP" = "1" ] && INSTALL_CLEAN_ARGS+=("--no-path-setup")
|
|
69
|
+
|
|
70
|
+
export PROFILE MANIFEST NONINTERACTIVE FORCE NO_PATH_SETUP PROFILE_EXPLICIT \
|
|
71
|
+
DRY_RUN USER_REQUESTED CREATE_USER CREATE_USER_NAME \
|
|
72
|
+
OMEGA_REPO="$REPO_DIR"
|
|
31
73
|
|
|
32
74
|
detect_os
|
|
75
|
+
|
|
76
|
+
# Resolve the target user. If a switch is needed, this `exec`s into the new
|
|
77
|
+
# user and never returns. Otherwise it sets OMEGA_USER and we continue.
|
|
78
|
+
resolve_target_user
|
|
79
|
+
|
|
80
|
+
# OMEGA_HOME (re)anchors to the resolved user's home. resolve_target_user
|
|
81
|
+
# may have changed identity via exec; if we're here, we're already the right
|
|
82
|
+
# user and $HOME is theirs.
|
|
83
|
+
OMEGA_HOME="${OMEGA_HOME:-$HOME/Omega}"
|
|
84
|
+
STATE_DIR="$OMEGA_HOME/Agentik_Extra/var"
|
|
85
|
+
STATE_FILE="$STATE_DIR/.install-state"
|
|
86
|
+
LOG_FILE="$STATE_DIR/logs/install.log"
|
|
33
87
|
mkdir -p "$STATE_DIR/logs"
|
|
88
|
+
|
|
89
|
+
# Bundled version — used to detect state drift across upgrades. We read it
|
|
90
|
+
# from the SSOT VERSION file shipped in the package, falling back to the
|
|
91
|
+
# engine's pyproject.toml so a partially-installed system still works.
|
|
92
|
+
OMEGA_BUNDLED_VERSION="$(
|
|
93
|
+
cat "$REPO_DIR/omega/Agentik_SSOT/VERSION" 2>/dev/null \
|
|
94
|
+
|| grep -E '^version' "$REPO_DIR/omega/Agentik_Engine/pyproject.toml" 2>/dev/null \
|
|
95
|
+
| head -1 | sed -E 's/.*"([^"]+)".*/\1/' \
|
|
96
|
+
|| echo "unknown"
|
|
97
|
+
)"
|
|
98
|
+
export OMEGA_BUNDLED_VERSION
|
|
99
|
+
|
|
34
100
|
[ "$FORCE" = "1" ] && reset_state
|
|
101
|
+
# Auto-reset state if the previous install was a different version.
|
|
102
|
+
# This is the difference between "old stale state silently skips every
|
|
103
|
+
# new step" and "upgrade re-runs the new steps, leaving the old marker
|
|
104
|
+
# rotated to .install-state.bak.<ts>".
|
|
105
|
+
if [ -f "$STATE_FILE" ] && state_version_drift; then
|
|
106
|
+
_prev_v="$(cat "$STATE_DIR/.install-version" 2>/dev/null || echo 'unversioned')"
|
|
107
|
+
ts="$(date +%Y%m%d-%H%M%S)"
|
|
108
|
+
cp "$STATE_FILE" "$STATE_FILE.bak.$ts" 2>/dev/null || true
|
|
109
|
+
reset_state
|
|
110
|
+
log "${C_YELLOW}!${C_RST} previous install state was from ${C_BOLD}${_prev_v}${C_RST}, current is ${C_BOLD}${OMEGA_BUNDLED_VERSION}${C_RST}"
|
|
111
|
+
log " rotated old state -> ${C_DIM}${STATE_FILE}.bak.${ts}${C_RST}"
|
|
112
|
+
log " running all steps fresh so the upgrade actually applies"
|
|
113
|
+
echo
|
|
114
|
+
fi
|
|
35
115
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
116
|
+
# ───── UX header ─────
|
|
117
|
+
install_banner
|
|
118
|
+
preflight_card
|
|
119
|
+
|
|
120
|
+
# Interactive profile picker if the operator did not pass --profile.
|
|
121
|
+
pick_profile_interactive
|
|
122
|
+
|
|
123
|
+
# Final pre-run summary (one tight line so the operator knows what they
|
|
124
|
+
# confirmed).
|
|
125
|
+
log "${C_DIM}::${C_RST} starting install — profile=${C_BOLD}$PROFILE${C_RST} os=$OMEGA_OS user=$OMEGA_USER home=$OMEGA_HOME"
|
|
39
126
|
echo
|
|
40
127
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
128
|
+
# Define the sequence ONCE so we can count it for the progress header.
|
|
129
|
+
STEPS=(
|
|
130
|
+
"00-preflight:step_preflight"
|
|
131
|
+
"10-system-deps:step_system_deps"
|
|
132
|
+
"15-llm-clis:step_llm_clis"
|
|
133
|
+
"20-structure:step_structure"
|
|
134
|
+
"25-aisb-suite:step_aisb_suite"
|
|
135
|
+
"27-audit-skills:step_audit_skills"
|
|
136
|
+
"30-engine:step_engine"
|
|
137
|
+
"33-claude-code-settings:step_claude_code_settings"
|
|
138
|
+
"32-accounts:step_accounts"
|
|
139
|
+
"35-providers:step_providers"
|
|
140
|
+
"36-tmux-config:step_tmux_config"
|
|
141
|
+
"37-hermes-brief:step_hermes_brief"
|
|
142
|
+
"40-mcp:step_mcp"
|
|
143
|
+
"45-claude-plugins:step_claude_plugins"
|
|
144
|
+
)
|
|
46
145
|
if [ "$PROFILE" != "minimal" ]; then
|
|
47
|
-
|
|
146
|
+
STEPS+=("50-telegram:step_telegram")
|
|
48
147
|
fi
|
|
49
|
-
|
|
50
|
-
|
|
148
|
+
STEPS+=(
|
|
149
|
+
"55-autonomous:step_autonomous"
|
|
150
|
+
"57-rag:step_rag"
|
|
151
|
+
"58-first-project:step_first_project"
|
|
152
|
+
"59-hermes-session:step_hermes_session"
|
|
153
|
+
"60-services:step_services"
|
|
154
|
+
"70-doctor:step_doctor"
|
|
155
|
+
)
|
|
156
|
+
export STEP_TOTAL="${#STEPS[@]}"
|
|
157
|
+
export STEP_COUNT=0
|
|
51
158
|
|
|
159
|
+
# ───── Plan mode ─────
|
|
160
|
+
# Show every step BEFORE running anything — same shape as Claude Code's
|
|
161
|
+
# plan mode: the operator sees the full sequence + can abort cleanly
|
|
162
|
+
# with --dry-run, or just hit Enter to proceed.
|
|
163
|
+
echo
|
|
164
|
+
log "${C_DIM}─── Install plan (${STEP_TOTAL} steps, ~2-3 min total) ───${C_RST}"
|
|
165
|
+
_idx=0
|
|
166
|
+
for entry in "${STEPS[@]}"; do
|
|
167
|
+
_idx=$((_idx + 1))
|
|
168
|
+
_name="${entry%%:*}"
|
|
169
|
+
log " ${C_DIM}${_idx}/${STEP_TOTAL}${C_RST} ${_name}"
|
|
170
|
+
done
|
|
171
|
+
log "${C_DIM}─────────────────────────────────────────${C_RST}"
|
|
52
172
|
echo
|
|
53
|
-
|
|
54
|
-
|
|
173
|
+
|
|
174
|
+
if [ "${DRY_RUN:-0}" = "1" ]; then
|
|
175
|
+
ok "dry-run — exiting without running any step"
|
|
176
|
+
exit 0
|
|
177
|
+
fi
|
|
178
|
+
if [ "${NONINTERACTIVE:-0}" != "1" ] && [ -t 0 ]; then
|
|
179
|
+
if ! prompt_yes_no "Proceed with the install?" "yes"; then
|
|
180
|
+
log "aborted by operator — no changes made"
|
|
181
|
+
exit 0
|
|
182
|
+
fi
|
|
183
|
+
fi
|
|
184
|
+
|
|
185
|
+
for entry in "${STEPS[@]}"; do
|
|
186
|
+
name="${entry%%:*}"
|
|
187
|
+
fn="${entry##*:}"
|
|
188
|
+
step_progress_header "$name"
|
|
189
|
+
run_step "$name" "$fn"
|
|
190
|
+
done
|
|
191
|
+
|
|
192
|
+
# Wire PATH + OMEGA_HOME into the user's shellrc (idempotent).
|
|
193
|
+
path_setup_user_rc
|
|
194
|
+
|
|
195
|
+
# Record the version that owns this state file so the next upgrade can
|
|
196
|
+
# detect drift and auto-reset. Done before the card so even if doctor
|
|
197
|
+
# trips the marker is correct.
|
|
198
|
+
record_state_version
|
|
199
|
+
|
|
200
|
+
# Final boxed celebration + verdict from `omega doctor --json`.
|
|
201
|
+
post_install_card
|
|
@@ -32,16 +32,18 @@ with verified completion. *Who* is an oracle and *which* topology runs lives in
|
|
|
32
32
|
| `rag/` | multi-RAG — Hybrid, Graph, Agentic, Corrective, Multimodal + Router |
|
|
33
33
|
| `tools.py` | tool registry + `install_from_catalog` |
|
|
34
34
|
| `sync.py` | SST → provider native projection (`ClaudeCodeAdapter`) |
|
|
35
|
+
| `integrations/` | thin opt-in wrappers — `graphify` (codebase knowledge graph → Graph RAG) |
|
|
35
36
|
| `daemons/` | the 24/7 service layer — `omega daemon engine\|telegram\|autonomous` |
|
|
36
37
|
| `supervisor.py` | the deadman / watchdog — stall → `task.failed` |
|
|
37
38
|
| `cli.py` | the `omega` CLI — `run`, `project`, `doctor`, `status`, `account *`, `billing`, `tool *`, `sync`, `daemon *` |
|
|
38
39
|
|
|
39
|
-
## Tests —
|
|
40
|
+
## Tests — 87 across 14 files, all green
|
|
40
41
|
|
|
41
42
|
```bash
|
|
42
43
|
cd Agentik_Engine
|
|
43
44
|
for t in reducer executor progress project audit_arsenal snapshot_partial \
|
|
44
|
-
educators rag account autonomous tools_and_sync
|
|
45
|
+
educators rag account autonomous tools_and_sync graphify \
|
|
46
|
+
report mission; do
|
|
45
47
|
python3 tests/test_$t.py
|
|
46
48
|
done
|
|
47
49
|
```
|