@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,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-link
|
|
3
|
+
description: Health checker for the LINK AISB agent. Validates message delivery confirmation, content match, authorization, secret leak detection, rate limiting, and file delivery.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: LINK -- Operator (Telegram Communication Bridge)
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for LINK outputs.
|
|
10
|
+
> LINK sends messages, files, and notifications via Telegram. It bridges AISB agents with the user.
|
|
11
|
+
> The Checker verifies delivery, content accuracy, authorization, and security.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. Message Delivery Confirmation
|
|
18
|
+
|
|
19
|
+
Every Telegram API call must return a success response.
|
|
20
|
+
|
|
21
|
+
**How to verify:**
|
|
22
|
+
- Check the curl/API response from the send operation
|
|
23
|
+
- HTTP 200 + `"ok": true` + `message_id` present = delivered
|
|
24
|
+
- HTTP 4xx/5xx or `"ok": false` = delivery failed
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Verify delivery by checking the API response
|
|
28
|
+
# LINK should have logged the response. Look for:
|
|
29
|
+
# {"ok":true,"result":{"message_id":XXXXX,...}}
|
|
30
|
+
|
|
31
|
+
# If response was not logged, re-test:
|
|
32
|
+
curl -s "https://api.telegram.org/bot$(jq -r '.bot.token' $HOME/.claude/config/telegram.json)/getUpdates?limit=5" | jq '.result[-1]'
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- Message ID returned = PASS
|
|
36
|
+
- Error response or no message ID = FAIL
|
|
37
|
+
|
|
38
|
+
### 2. Content Match
|
|
39
|
+
|
|
40
|
+
What was actually sent must match what was requested.
|
|
41
|
+
|
|
42
|
+
**How to verify:**
|
|
43
|
+
- Read the original request (what should have been sent)
|
|
44
|
+
- Read the message content that LINK actually sent
|
|
45
|
+
- Compare for accuracy:
|
|
46
|
+
- Key information preserved (no missing details)
|
|
47
|
+
- No fabricated content added
|
|
48
|
+
- Format appropriate (plain text vs markdown vs HTML)
|
|
49
|
+
- If a summary was requested, it actually summarizes correctly
|
|
50
|
+
|
|
51
|
+
Flag:
|
|
52
|
+
- Missing critical information from the original request
|
|
53
|
+
- Added content not in the original request
|
|
54
|
+
- Garbled or truncated messages
|
|
55
|
+
|
|
56
|
+
### 3. Authorization Check
|
|
57
|
+
|
|
58
|
+
Messages must ONLY be sent to authorized chat IDs.
|
|
59
|
+
|
|
60
|
+
**How to verify:**
|
|
61
|
+
```bash
|
|
62
|
+
# Read the authorized users list
|
|
63
|
+
jq '.authorized_users' $HOME/.claude/config/telegram.json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
- Compare the target chat_id against the authorized list
|
|
67
|
+
- Flag any message sent to an unauthorized chat_id
|
|
68
|
+
- Verify no broadcast was sent outside the authorized list
|
|
69
|
+
|
|
70
|
+
| Check | Expected |
|
|
71
|
+
|-------|----------|
|
|
72
|
+
| Target chat_id in authorized_users | YES |
|
|
73
|
+
| Broadcast recipients all authorized | YES |
|
|
74
|
+
| No messages to unknown chat_ids | YES |
|
|
75
|
+
|
|
76
|
+
### 4. No Secrets Leaked
|
|
77
|
+
|
|
78
|
+
Message content must NEVER contain sensitive data.
|
|
79
|
+
|
|
80
|
+
**How to verify:**
|
|
81
|
+
- Scan the message content for secret patterns:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Check message content for leaked secrets
|
|
85
|
+
echo "{message_content}" | grep -Ei "(sk_live|sk_test|ghp_|github_pat_|token|password|secret|api[_-]?key|Bearer|Authorization)" 2>/dev/null
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
| Pattern | Type |
|
|
89
|
+
|---------|------|
|
|
90
|
+
| `sk_live_*`, `sk_test_*` | Stripe API keys |
|
|
91
|
+
| `ghp_*`, `github_pat_*` | GitHub tokens |
|
|
92
|
+
| `lin_api_*` | Linear API keys |
|
|
93
|
+
| `vcp_*` | Vercel tokens |
|
|
94
|
+
| `CLERK_SECRET_KEY` | Clerk secrets |
|
|
95
|
+
| `password`, `secret`, `token` (as values) | Generic secrets |
|
|
96
|
+
| `Bearer *` | Auth tokens |
|
|
97
|
+
|
|
98
|
+
- ANY match = automatic FAIL
|
|
99
|
+
- No matches = PASS
|
|
100
|
+
|
|
101
|
+
### 5. Rate Limiting
|
|
102
|
+
|
|
103
|
+
LINK must not exceed Telegram Bot API rate limits.
|
|
104
|
+
|
|
105
|
+
**Telegram API limits:**
|
|
106
|
+
| Scope | Limit |
|
|
107
|
+
|-------|-------|
|
|
108
|
+
| Per chat | 1 message/second |
|
|
109
|
+
| Per group | 20 messages/minute |
|
|
110
|
+
| Bulk sends | 30 messages/second total |
|
|
111
|
+
|
|
112
|
+
**How to verify:**
|
|
113
|
+
- Check timestamps of recent sends
|
|
114
|
+
- If multiple messages were sent in rapid succession (< 1s apart to same chat), flag it
|
|
115
|
+
- If LINK sent a bulk notification, verify spacing
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Check recent Telegram send timestamps in logs
|
|
119
|
+
grep -i "telegram\|send\|notify" ~/.telos/knowledge/private/link/feedback.jsonl 2>/dev/null | tail -10
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 6. File Delivery (if applicable)
|
|
123
|
+
|
|
124
|
+
If LINK sent a file, verify it was delivered correctly.
|
|
125
|
+
|
|
126
|
+
**How to verify:**
|
|
127
|
+
- Confirm the file exists at the stated path before sending
|
|
128
|
+
- Confirm the Telegram API returned success for the file upload
|
|
129
|
+
- Verify file caption matches what was requested
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Verify file exists
|
|
133
|
+
ls -la {file_path}
|
|
134
|
+
|
|
135
|
+
# Check file size (Telegram limit: 50MB for bots)
|
|
136
|
+
stat -c%s {file_path} 2>/dev/null
|
|
137
|
+
# Must be < 52428800 bytes (50MB)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- File delivered with correct caption = PASS
|
|
141
|
+
- File not found, too large, or delivery failed = FAIL
|
|
142
|
+
|
|
143
|
+
### 7. Session Context (if multi-message interaction)
|
|
144
|
+
|
|
145
|
+
If LINK is handling a conversational exchange (not just one-shot notifications), verify context is maintained.
|
|
146
|
+
|
|
147
|
+
**How to verify:**
|
|
148
|
+
- Read the sequence of messages
|
|
149
|
+
- Confirm replies reference the correct context
|
|
150
|
+
- Confirm LINK is not confusing separate conversations
|
|
151
|
+
- Check that incoming messages from the user were processed in order
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Verification Commands
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# 1. Check Telegram config
|
|
159
|
+
jq '.' $HOME/.claude/config/telegram.json
|
|
160
|
+
|
|
161
|
+
# 2. Check authorized users
|
|
162
|
+
jq '.authorized_users' $HOME/.claude/config/telegram.json
|
|
163
|
+
|
|
164
|
+
# 3. Test bot connectivity
|
|
165
|
+
curl -s "https://api.telegram.org/bot$(jq -r '.bot.token' $HOME/.claude/config/telegram.json)/getMe" | jq '.ok'
|
|
166
|
+
|
|
167
|
+
# 4. Check recent messages sent (last 5 updates)
|
|
168
|
+
curl -s "https://api.telegram.org/bot$(jq -r '.bot.token' $HOME/.claude/config/telegram.json)/getUpdates?limit=5&offset=-5" | jq '.result | length'
|
|
169
|
+
|
|
170
|
+
# 5. Scan message content for secrets
|
|
171
|
+
echo "{message_content}" | grep -Ei "(sk_|ghp_|github_pat|lin_api|vcp_|Bearer|password|secret|api.?key)" 2>/dev/null
|
|
172
|
+
|
|
173
|
+
# 6. Check file size for Telegram limit
|
|
174
|
+
stat -c%s {file_path} 2>/dev/null
|
|
175
|
+
# Must be < 52428800 (50MB)
|
|
176
|
+
|
|
177
|
+
# 7. Check LINK feedback log
|
|
178
|
+
tail -20 ~/.telos/knowledge/private/link/feedback.jsonl 2>/dev/null
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## PASS Criteria
|
|
184
|
+
|
|
185
|
+
All of the following must be true:
|
|
186
|
+
- Telegram API returned HTTP 200 with `"ok": true` and a `message_id` for every send
|
|
187
|
+
- Message content accurately reflects what was requested (no missing info, no fabrication)
|
|
188
|
+
- All target chat_ids are in the authorized_users list
|
|
189
|
+
- Message content contains zero secrets or tokens
|
|
190
|
+
- Rate limits were respected (no rapid-fire sends to same chat)
|
|
191
|
+
- Files delivered successfully with correct captions (if applicable)
|
|
192
|
+
|
|
193
|
+
## FAIL Triggers
|
|
194
|
+
|
|
195
|
+
Any of the following triggers an automatic FAIL:
|
|
196
|
+
- Telegram API returned an error (`"ok": false` or HTTP 4xx/5xx)
|
|
197
|
+
- Message sent to an unauthorized chat_id
|
|
198
|
+
- Secret or token found in message content (ANY match on secret patterns)
|
|
199
|
+
- File delivery failed (file not found, over 50MB limit, API error)
|
|
200
|
+
- Content mismatch: critical information missing or fabricated compared to the request
|
|
201
|
+
- Rapid-fire rate limit violation (5+ messages to same chat within 5 seconds)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
*Companion to checker-common.md -- read that file first for universal checks.*
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-merovingian
|
|
3
|
+
description: Health checker for the MEROVINGIAN AISB agent. Validates duplicate detection, correct categorization, index consistency, attribution, data loss prevention, format consistency, freshness metadata, and cross-references.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: MEROVINGIAN -- Information Broker / Knowledge Curator
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for MEROVINGIAN outputs.
|
|
10
|
+
> MEROVINGIAN curates the shared knowledge layer at `~/.telos/knowledge/`, adding decisions, patterns, and error solutions.
|
|
11
|
+
> He must never introduce duplicates, never lose existing data, and always maintain index consistency.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. No Duplicates
|
|
18
|
+
|
|
19
|
+
New entries must not duplicate information already present in the knowledge layer.
|
|
20
|
+
|
|
21
|
+
**How to verify:**
|
|
22
|
+
- For each new entry MEROVINGIAN added, extract its core concept (the key insight, decision, or pattern)
|
|
23
|
+
- Search the knowledge files for similar content using Grep with relevant keywords
|
|
24
|
+
- Flag any new entry that conveys the same information as an existing entry, even if worded differently
|
|
25
|
+
- Check both the specific knowledge file (e.g., `patterns.md`) and the index for pre-existing coverage
|
|
26
|
+
- Tolerance: minor overlap in context is acceptable, but the core insight must be unique
|
|
27
|
+
|
|
28
|
+
### 2. Correct Categorization
|
|
29
|
+
|
|
30
|
+
Entries must be placed in the appropriate knowledge file based on their type.
|
|
31
|
+
|
|
32
|
+
**How to verify:**
|
|
33
|
+
- Read each new entry and classify it:
|
|
34
|
+
|
|
35
|
+
| Entry Type | Correct File |
|
|
36
|
+
|-----------|-------------|
|
|
37
|
+
| Architectural decision, technology choice, trade-off resolution | `decisions.md` |
|
|
38
|
+
| Reusable coding pattern, workflow, best practice | `patterns.md` |
|
|
39
|
+
| Bug fix, error solution, troubleshooting steps | `errors.md` |
|
|
40
|
+
| Agent interaction log, task outcome | `work-log.jsonl` |
|
|
41
|
+
|
|
42
|
+
- Flag any entry in the wrong file (e.g., a bug fix in `decisions.md`, or a pattern in `errors.md`)
|
|
43
|
+
- If an entry spans categories (e.g., a decision that also establishes a pattern), verify it is in the primary category with a cross-reference to the secondary
|
|
44
|
+
|
|
45
|
+
### 3. Index Consistency
|
|
46
|
+
|
|
47
|
+
The knowledge index (`~/.telos/knowledge/index.md`) must accurately reflect the actual contents of the knowledge directory.
|
|
48
|
+
|
|
49
|
+
**How to verify:**
|
|
50
|
+
- Read `~/.telos/knowledge/index.md`
|
|
51
|
+
- List actual files in `~/.telos/knowledge/shared/` and `~/.telos/knowledge/private/`
|
|
52
|
+
- Flag orphan index entries: entries in the index that reference files that do not exist
|
|
53
|
+
- Flag missing index entries: files that exist on disk but are not in the index
|
|
54
|
+
- Verify entry counts in the index match actual entry counts in each file (approximate check)
|
|
55
|
+
|
|
56
|
+
### 4. Attribution
|
|
57
|
+
|
|
58
|
+
Every knowledge entry must attribute its source: which agent produced it, during which task, and when.
|
|
59
|
+
|
|
60
|
+
**How to verify:**
|
|
61
|
+
- Read each new entry and check for attribution metadata:
|
|
62
|
+
|
|
63
|
+
| Required Attribution | Example |
|
|
64
|
+
|---------------------|---------|
|
|
65
|
+
| Source agent | "Source: SERAPH" |
|
|
66
|
+
| Task context | "During: Kommu auth audit" |
|
|
67
|
+
| Timestamp | "Added: 2026-03-02" |
|
|
68
|
+
|
|
69
|
+
- Flag entries with no attribution (anonymous knowledge)
|
|
70
|
+
- Flag entries with vague attribution (e.g., "Source: AISB" without specifying which agent)
|
|
71
|
+
- Verify the attributed agent and task are plausible (SERAPH producing audit findings, not LINK)
|
|
72
|
+
|
|
73
|
+
### 5. No Data Loss
|
|
74
|
+
|
|
75
|
+
Curation operations must never delete or overwrite important existing entries.
|
|
76
|
+
|
|
77
|
+
**How to verify:**
|
|
78
|
+
- If MEROVINGIAN modified existing files, compare before and after states
|
|
79
|
+
- Check that no existing entries were removed unless explicitly marked as superseded or obsolete
|
|
80
|
+
- Verify "cleanup" or "consolidation" operations preserved all unique information (merging is fine, deleting is not)
|
|
81
|
+
- Flag any reduction in total entry count that is not explained by deduplication of truly identical entries
|
|
82
|
+
|
|
83
|
+
### 6. Format Consistency
|
|
84
|
+
|
|
85
|
+
Entries must follow the established format in each knowledge file.
|
|
86
|
+
|
|
87
|
+
**How to verify:**
|
|
88
|
+
- Read the first 2-3 existing entries in each modified knowledge file to establish the format
|
|
89
|
+
- Compare new entries against this format
|
|
90
|
+
- Check for consistent use of:
|
|
91
|
+
- Headers/section markers
|
|
92
|
+
- Date format (ISO 8601 preferred)
|
|
93
|
+
- Entry separators (horizontal rules, blank lines)
|
|
94
|
+
- Metadata fields (Source, Date, Context)
|
|
95
|
+
- Flag entries that break the established format (different structure, missing fields, inconsistent separators)
|
|
96
|
+
|
|
97
|
+
### 7. Freshness Metadata
|
|
98
|
+
|
|
99
|
+
Entries must have timestamps to enable lifecycle management (aging out stale knowledge).
|
|
100
|
+
|
|
101
|
+
**How to verify:**
|
|
102
|
+
- Check that every new entry has a date or timestamp
|
|
103
|
+
- Verify timestamps are in a parseable format (ISO 8601: `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SS`)
|
|
104
|
+
- Flag entries with no temporal metadata
|
|
105
|
+
- For JSONL entries (`work-log.jsonl`), verify the timestamp field exists and is valid
|
|
106
|
+
|
|
107
|
+
### 8. Cross-References
|
|
108
|
+
|
|
109
|
+
Related entries across different knowledge files should reference each other.
|
|
110
|
+
|
|
111
|
+
**How to verify:**
|
|
112
|
+
- Read new entries and identify any that relate to existing entries in other files
|
|
113
|
+
- For example: a new pattern in `patterns.md` that arose from an error in `errors.md` should reference the error entry
|
|
114
|
+
- A decision in `decisions.md` that establishes a new pattern should reference the corresponding `patterns.md` entry
|
|
115
|
+
- Flag entries that are clearly related to existing entries but have no cross-reference
|
|
116
|
+
- Tolerance: not every entry needs cross-references, only those with clear connections
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Verification Commands
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Verify knowledge directory structure
|
|
124
|
+
ls -la ~/.telos/knowledge/shared/ 2>/dev/null
|
|
125
|
+
ls -la ~/.telos/knowledge/private/ 2>/dev/null
|
|
126
|
+
|
|
127
|
+
# Read the knowledge index
|
|
128
|
+
cat ~/.telos/knowledge/index.md 2>/dev/null || echo "No index.md found"
|
|
129
|
+
|
|
130
|
+
# Check index vs actual files (orphan/missing detection)
|
|
131
|
+
echo "=== Files on disk ==="
|
|
132
|
+
find ~/.telos/knowledge/shared/ -type f 2>/dev/null | sort
|
|
133
|
+
echo "=== Private dirs ==="
|
|
134
|
+
ls -d ~/.telos/knowledge/private/*/ 2>/dev/null | sort
|
|
135
|
+
|
|
136
|
+
# Search for potential duplicates before confirming additions
|
|
137
|
+
grep -ri "{new_entry_keyword}" ~/.telos/knowledge/shared/patterns.md 2>/dev/null
|
|
138
|
+
grep -ri "{new_entry_keyword}" ~/.telos/knowledge/shared/decisions.md 2>/dev/null
|
|
139
|
+
grep -ri "{new_entry_keyword}" ~/.telos/knowledge/shared/errors.md 2>/dev/null
|
|
140
|
+
|
|
141
|
+
# Validate work-log.jsonl format
|
|
142
|
+
python3 -c "
|
|
143
|
+
import json, sys
|
|
144
|
+
path = '$HOME/.telos/knowledge/shared/work-log.jsonl'
|
|
145
|
+
errors = 0
|
|
146
|
+
total = 0
|
|
147
|
+
try:
|
|
148
|
+
with open(path) as f:
|
|
149
|
+
for i, line in enumerate(f, 1):
|
|
150
|
+
line = line.strip()
|
|
151
|
+
if not line: continue
|
|
152
|
+
total += 1
|
|
153
|
+
try:
|
|
154
|
+
entry = json.loads(line)
|
|
155
|
+
if 'timestamp' not in entry and 'date' not in entry:
|
|
156
|
+
print(f' LINE {i}: missing timestamp')
|
|
157
|
+
except:
|
|
158
|
+
errors += 1
|
|
159
|
+
print(f' LINE {i}: INVALID JSON')
|
|
160
|
+
print(f'Total entries: {total}, Errors: {errors}')
|
|
161
|
+
except FileNotFoundError:
|
|
162
|
+
print('work-log.jsonl not found')
|
|
163
|
+
"
|
|
164
|
+
|
|
165
|
+
# Check for entries without attribution in a knowledge file
|
|
166
|
+
python3 -c "
|
|
167
|
+
import re
|
|
168
|
+
path = '$HOME/.telos/knowledge/shared/patterns.md'
|
|
169
|
+
try:
|
|
170
|
+
with open(path) as f:
|
|
171
|
+
content = f.read()
|
|
172
|
+
entries = re.split(r'\n---\n|\n## ', content)
|
|
173
|
+
no_source = 0
|
|
174
|
+
for i, entry in enumerate(entries):
|
|
175
|
+
if entry.strip() and 'Source:' not in entry and 'source:' not in entry:
|
|
176
|
+
no_source += 1
|
|
177
|
+
print(f'Entries without Source attribution: {no_source}/{len(entries)}')
|
|
178
|
+
except FileNotFoundError:
|
|
179
|
+
print('patterns.md not found')
|
|
180
|
+
"
|
|
181
|
+
|
|
182
|
+
# Count entries per file (approximate)
|
|
183
|
+
for f in ~/.telos/knowledge/shared/*.md; do
|
|
184
|
+
if [ -f "$f" ]; then
|
|
185
|
+
count=$(grep -c '^\(## \|---\)' "$f" 2>/dev/null || echo 0)
|
|
186
|
+
echo "$(basename "$f"): ~$count entries"
|
|
187
|
+
fi
|
|
188
|
+
done
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## PASS Criteria
|
|
194
|
+
|
|
195
|
+
All of the following must be true:
|
|
196
|
+
- No new entry duplicates an existing entry's core insight
|
|
197
|
+
- Every new entry is in the correct knowledge file for its type
|
|
198
|
+
- The knowledge index matches the actual directory contents (no orphans, no missing entries)
|
|
199
|
+
- Every new entry has attribution (source agent, task context, timestamp)
|
|
200
|
+
- No existing entries were deleted without explicit justification
|
|
201
|
+
- New entries follow the established format of their target file
|
|
202
|
+
- Every new entry has a parseable timestamp
|
|
203
|
+
- Clearly related entries cross-reference each other
|
|
204
|
+
|
|
205
|
+
## FAIL Triggers
|
|
206
|
+
|
|
207
|
+
Any of the following triggers an automatic FAIL:
|
|
208
|
+
- A new entry is a near-duplicate of an existing entry (same core insight, different wording)
|
|
209
|
+
- An entry is in the wrong file (e.g., error solution in `decisions.md`)
|
|
210
|
+
- The index references files that do not exist on disk (orphan index entries)
|
|
211
|
+
- Files exist on disk that are not in the index (missing index entries)
|
|
212
|
+
- An existing entry was deleted during curation without explanation or archival
|
|
213
|
+
- New entries have no attribution (no source agent, no timestamp)
|
|
214
|
+
- JSONL entries are not valid JSON (corrupt `work-log.jsonl`)
|
|
215
|
+
- A major curation operation reduced total knowledge without deduplication justification
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
*Companion to checker-common.md -- read that file first for universal checks.*
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-morpheus
|
|
3
|
+
description: Health checker for the MORPHEUS AISB agent. Validates TypeScript compilation, lint compliance, build success, code quality, file scope, browser/UI rendering, sub-agent LMC compliance, and regression safety.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: MORPHEUS -- Daemon Commander
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for MORPHEUS outputs.
|
|
10
|
+
> MORPHEUS is the executor -- it implements code, modifies files, and supervises worker sub-agents.
|
|
11
|
+
> Every deliverable must compile, pass lint, render correctly, and stay within scope.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. TypeScript Compilation
|
|
18
|
+
|
|
19
|
+
All modified/created TypeScript files must compile without errors.
|
|
20
|
+
|
|
21
|
+
**How to verify:**
|
|
22
|
+
```bash
|
|
23
|
+
cd {project_root} && npx tsc --noEmit 2>&1 | head -50
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
- 0 errors = PASS
|
|
27
|
+
- Type errors in files MORPHEUS modified = FAIL
|
|
28
|
+
- Pre-existing type errors in files MORPHEUS did NOT touch = note but not FAIL
|
|
29
|
+
|
|
30
|
+
### 2. Lint Compliance
|
|
31
|
+
|
|
32
|
+
If the project has ESLint configured, all modified files must pass lint.
|
|
33
|
+
|
|
34
|
+
**How to verify:**
|
|
35
|
+
```bash
|
|
36
|
+
cd {project_root} && npx eslint {modified_files} --quiet 2>&1 | head -50
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- 0 errors = PASS
|
|
40
|
+
- Lint errors in modified files = FAIL
|
|
41
|
+
- Warnings-only = PASS with notes
|
|
42
|
+
- No ESLint config = skip this check
|
|
43
|
+
|
|
44
|
+
### 3. Build Success
|
|
45
|
+
|
|
46
|
+
If the project is buildable (Next.js, Expo, etc.), the build must succeed.
|
|
47
|
+
|
|
48
|
+
**How to verify:**
|
|
49
|
+
```bash
|
|
50
|
+
cd {project_root} && npm run build 2>&1 | tail -30
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- Build succeeds = PASS
|
|
54
|
+
- Build fails on MORPHEUS's changes = FAIL
|
|
55
|
+
- Build fails on pre-existing issues = note but not FAIL (check git blame)
|
|
56
|
+
|
|
57
|
+
### 4. Code Quality
|
|
58
|
+
|
|
59
|
+
Read each modified file and check for quality violations:
|
|
60
|
+
|
|
61
|
+
| Check | Threshold |
|
|
62
|
+
|-------|-----------|
|
|
63
|
+
| `any` type usage | 0 new instances (existing are acceptable) |
|
|
64
|
+
| `@ts-ignore` / `@ts-expect-error` | Must have inline justification comment |
|
|
65
|
+
| `console.log` in production code | 0 instances (OK in test files, dev-only code) |
|
|
66
|
+
| Hardcoded secrets | 0 instances (API keys, tokens, passwords in code) |
|
|
67
|
+
| TODO/FIXME without ticket | Should reference a ticket or have clear context |
|
|
68
|
+
| Dead code (commented-out blocks) | Should be removed, not left commented |
|
|
69
|
+
|
|
70
|
+
**How to verify:**
|
|
71
|
+
```bash
|
|
72
|
+
# Check for `any` types in modified files
|
|
73
|
+
grep -n ": any" {modified_files}
|
|
74
|
+
grep -n "as any" {modified_files}
|
|
75
|
+
|
|
76
|
+
# Check for ts-ignore without justification
|
|
77
|
+
grep -n "@ts-ignore" {modified_files}
|
|
78
|
+
grep -n "@ts-expect-error" {modified_files}
|
|
79
|
+
|
|
80
|
+
# Check for console.log in production
|
|
81
|
+
grep -n "console.log" {modified_files}
|
|
82
|
+
|
|
83
|
+
# Check for hardcoded secrets
|
|
84
|
+
grep -Eni "(sk_|ghp_|token|password|secret|api_key)\s*[:=]" {modified_files}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 5. File Scope Match
|
|
88
|
+
|
|
89
|
+
MORPHEUS should only modify files relevant to the task. No scope creep.
|
|
90
|
+
|
|
91
|
+
**How to verify:**
|
|
92
|
+
- Get the list of modified files from MORPHEUS's output (ARTIFACTS field)
|
|
93
|
+
- Compare against the task description
|
|
94
|
+
- Flag any modified file that has no clear connection to the task
|
|
95
|
+
- Flag any NEW files that weren't requested
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# List all files MORPHEUS changed
|
|
99
|
+
git diff --name-only HEAD~1 HEAD 2>/dev/null
|
|
100
|
+
# Or read the ARTIFACTS field from MORPHEUS's output
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 6. Browser/UI Verification (if UI changes)
|
|
104
|
+
|
|
105
|
+
If MORPHEUS modified frontend components, pages, or styles, verify visually.
|
|
106
|
+
|
|
107
|
+
**How to verify:**
|
|
108
|
+
```bash
|
|
109
|
+
# Navigate to the page
|
|
110
|
+
mcp__playwright__browser_navigate(url="{test_url}")
|
|
111
|
+
|
|
112
|
+
# Check console for errors
|
|
113
|
+
mcp__playwright__browser_console_messages(level="error")
|
|
114
|
+
|
|
115
|
+
# Take screenshots at 3 breakpoints
|
|
116
|
+
mcp__playwright__browser_resize(width=1440, height=900)
|
|
117
|
+
mcp__playwright__browser_take_screenshot()
|
|
118
|
+
|
|
119
|
+
mcp__playwright__browser_resize(width=768, height=1024)
|
|
120
|
+
mcp__playwright__browser_take_screenshot()
|
|
121
|
+
|
|
122
|
+
mcp__playwright__browser_resize(width=375, height=812)
|
|
123
|
+
mcp__playwright__browser_take_screenshot()
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
- 0 JS errors in console = PASS
|
|
127
|
+
- No broken layout / overflow = PASS
|
|
128
|
+
- Responsive renders correctly = PASS
|
|
129
|
+
- JS errors or visual breakage on MORPHEUS's pages = FAIL
|
|
130
|
+
|
|
131
|
+
### 7. Sub-Agent LMC Compliance
|
|
132
|
+
|
|
133
|
+
If MORPHEUS spawned sub-agents (workers), each worker's output must have been validated through LMC.
|
|
134
|
+
|
|
135
|
+
**How to verify:**
|
|
136
|
+
- Check if MORPHEUS mentions spawning workers
|
|
137
|
+
- If workers were used: verify each worker had a Checker pass (look for DECISION: PASS in worker outputs)
|
|
138
|
+
- If no LMC was applied to workers: FAIL (MORPHEUS must enforce quality on its workers)
|
|
139
|
+
|
|
140
|
+
### 8. Regression Check
|
|
141
|
+
|
|
142
|
+
MORPHEUS's changes must not break existing functionality.
|
|
143
|
+
|
|
144
|
+
**How to verify:**
|
|
145
|
+
```bash
|
|
146
|
+
# Run existing tests if present
|
|
147
|
+
cd {project_root} && npm test 2>&1 | tail -30
|
|
148
|
+
|
|
149
|
+
# Check that previously working imports still resolve
|
|
150
|
+
cd {project_root} && npx tsc --noEmit 2>&1 | grep -c "error"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Verification Commands
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Full verification sequence
|
|
159
|
+
cd {project_root}
|
|
160
|
+
|
|
161
|
+
# 1. TypeScript
|
|
162
|
+
npx tsc --noEmit 2>&1 | head -50
|
|
163
|
+
|
|
164
|
+
# 2. Lint (if available)
|
|
165
|
+
npx eslint {modified_files} --quiet 2>&1 | head -30
|
|
166
|
+
|
|
167
|
+
# 3. Build
|
|
168
|
+
npm run build 2>&1 | tail -30
|
|
169
|
+
|
|
170
|
+
# 4. Code quality scans
|
|
171
|
+
grep -rn ": any\|as any" {modified_files} 2>/dev/null
|
|
172
|
+
grep -rn "console\.log" {modified_files} 2>/dev/null
|
|
173
|
+
grep -rn "@ts-ignore\|@ts-expect-error" {modified_files} 2>/dev/null
|
|
174
|
+
grep -rEni "(sk_|ghp_|token|password|secret|api_key)\s*[:=]" {modified_files} 2>/dev/null
|
|
175
|
+
|
|
176
|
+
# 5. Scope check
|
|
177
|
+
git diff --name-only HEAD~1 HEAD 2>/dev/null
|
|
178
|
+
|
|
179
|
+
# 6. Tests (if available)
|
|
180
|
+
npm test 2>&1 | tail -20
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## PASS Criteria
|
|
186
|
+
|
|
187
|
+
All of the following must be true:
|
|
188
|
+
- TypeScript compiles with 0 new errors (`npx tsc --noEmit`)
|
|
189
|
+
- Lint passes on modified files (or no ESLint configured)
|
|
190
|
+
- Build succeeds (or project is not buildable)
|
|
191
|
+
- No new `any` types, no unjustified `@ts-ignore`, no `console.log` in production code
|
|
192
|
+
- No hardcoded secrets in modified files
|
|
193
|
+
- Only task-relevant files were modified (no scope creep)
|
|
194
|
+
- UI renders correctly with 0 JS console errors (if frontend changes)
|
|
195
|
+
- All sub-agent outputs passed LMC (if workers were used)
|
|
196
|
+
- No regressions in existing tests
|
|
197
|
+
|
|
198
|
+
## FAIL Triggers
|
|
199
|
+
|
|
200
|
+
Any of the following triggers an automatic FAIL:
|
|
201
|
+
- TypeScript compilation errors in files MORPHEUS modified
|
|
202
|
+
- Build failure caused by MORPHEUS's changes
|
|
203
|
+
- Hardcoded secrets (API keys, tokens, passwords) in any modified file
|
|
204
|
+
- Scope creep: significant files modified that are unrelated to the task
|
|
205
|
+
- UI changes that produce JS console errors or broken layout
|
|
206
|
+
- Sub-agents used without LMC validation
|
|
207
|
+
- Existing tests broken by the changes
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
*Companion to checker-common.md -- read that file first for universal checks.*
|