@trac3er/oh-my-god 2.0.5 → 2.0.7
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/.agents/skills/omg/AGENTS.fragment.md +57 -4
- package/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/.agents/skills/omg/codex-rules.md +33 -0
- package/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/.claude-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/scripts/uninstall.sh +1 -1
- package/.mcp.json +0 -22
- package/CHANGELOG.md +13 -0
- package/OMG-setup.sh +64 -14
- package/OMG_COMPAT_CONTRACT.md +1 -1
- package/README.md +8 -6
- package/agents/omg-security-auditor.md +1 -1
- package/artifacts/release/.agents/skills/omg/AGENTS.fragment.md +52 -0
- package/artifacts/release/.agents/skills/omg/algorithms/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/algorithms/openai.yaml +11 -0
- package/artifacts/release/.agents/skills/omg/api-twin/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/api-twin/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/codex-mcp.toml +4 -0
- package/artifacts/release/.agents/skills/omg/codex-rules.md +29 -0
- package/artifacts/release/.agents/skills/omg/control-plane/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/control-plane/openai.yaml +14 -0
- package/artifacts/release/.agents/skills/omg/data-lineage/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/data-lineage/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/eval-gate/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/eval-gate/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/health/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/health/openai.yaml +11 -0
- package/artifacts/release/.agents/skills/omg/hook-governor/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/hook-governor/openai.yaml +11 -0
- package/artifacts/release/.agents/skills/omg/incident-replay/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/incident-replay/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
- package/artifacts/release/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
- package/artifacts/release/.agents/skills/omg/preflight/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/preflight/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/robotics/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/robotics/openai.yaml +11 -0
- package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/security-check/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/security-check/openai.yaml +13 -0
- package/artifacts/release/.agents/skills/omg/tracebank/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/tracebank/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/vision/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/vision/openai.yaml +11 -0
- package/artifacts/release/.claude-plugin/marketplace.json +36 -0
- package/artifacts/release/.claude-plugin/plugin.json +23 -0
- package/artifacts/release/.mcp.json +40 -0
- package/artifacts/release/OMG_COMPAT_CONTRACT.md +92 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +52 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-mcp.toml +4 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +29 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/openai.yaml +14 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/openai.yaml +13 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/openai.yaml +11 -0
- package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +92 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +45 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +48 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +151 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +47 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +47 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +47 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +45 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +97 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +47 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +48 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +53 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +48 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +49 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +45 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +54 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +50 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +47 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +45 -0
- package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +296 -0
- package/artifacts/release/dist/enterprise/manifest.json +243 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +7 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-mcp.toml +4 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/openai.yaml +14 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/openai.yaml +13 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +11 -0
- package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +36 -0
- package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +23 -0
- package/artifacts/release/dist/public/bundle/.mcp.json +40 -0
- package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +92 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +45 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +48 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +151 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +47 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +47 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +47 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +45 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +97 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +47 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +48 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +53 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +48 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +49 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +45 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +54 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +50 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +47 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +45 -0
- package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +296 -0
- package/artifacts/release/dist/public/bundle/settings.json +526 -0
- package/artifacts/release/dist/public/manifest.json +255 -0
- package/artifacts/release/registry/bundles/algorithms.yaml +45 -0
- package/artifacts/release/registry/bundles/api-twin.yaml +48 -0
- package/artifacts/release/registry/bundles/control-plane.yaml +151 -0
- package/artifacts/release/registry/bundles/data-lineage.yaml +47 -0
- package/artifacts/release/registry/bundles/delta-classifier.yaml +47 -0
- package/artifacts/release/registry/bundles/eval-gate.yaml +47 -0
- package/artifacts/release/registry/bundles/health.yaml +45 -0
- package/artifacts/release/registry/bundles/hook-governor.yaml +97 -0
- package/artifacts/release/registry/bundles/incident-replay.yaml +47 -0
- package/artifacts/release/registry/bundles/lsp-pack.yaml +48 -0
- package/artifacts/release/registry/bundles/mcp-fabric.yaml +53 -0
- package/artifacts/release/registry/bundles/preflight.yaml +48 -0
- package/artifacts/release/registry/bundles/remote-supervisor.yaml +49 -0
- package/artifacts/release/registry/bundles/robotics.yaml +45 -0
- package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +54 -0
- package/artifacts/release/registry/bundles/security-check.yaml +50 -0
- package/artifacts/release/registry/bundles/tracebank.yaml +47 -0
- package/artifacts/release/registry/bundles/vision.yaml +45 -0
- package/artifacts/release/registry/omg-capability.schema.json +296 -0
- package/artifacts/release/settings.json +594 -0
- package/build/lib/agents/__init__.py +1 -0
- package/build/lib/agents/designer.md +67 -0
- package/build/lib/agents/explore.md +60 -0
- package/build/lib/agents/model_roles.py +196 -0
- package/build/lib/agents/omg-api-builder.md +23 -0
- package/build/lib/agents/omg-architect-mode.md +41 -0
- package/build/lib/agents/omg-architect.md +13 -0
- package/build/lib/agents/omg-backend-engineer.md +41 -0
- package/build/lib/agents/omg-critic.md +16 -0
- package/build/lib/agents/omg-database-engineer.md +41 -0
- package/build/lib/agents/omg-escalation-router.md +17 -0
- package/build/lib/agents/omg-executor.md +12 -0
- package/build/lib/agents/omg-frontend-designer.md +41 -0
- package/build/lib/agents/omg-implement-mode.md +49 -0
- package/build/lib/agents/omg-infra-engineer.md +41 -0
- package/build/lib/agents/omg-qa-tester.md +16 -0
- package/build/lib/agents/omg-research-mode.md +41 -0
- package/build/lib/agents/omg-security-auditor.md +41 -0
- package/build/lib/agents/omg-testing-engineer.md +41 -0
- package/build/lib/agents/plan.md +80 -0
- package/build/lib/agents/quick_task.md +64 -0
- package/build/lib/agents/reviewer.md +83 -0
- package/build/lib/agents/task.md +71 -0
- package/build/lib/commands/OMG:ai-commit.md +113 -0
- package/build/lib/commands/OMG:api-twin.md +22 -0
- package/build/lib/commands/OMG:arch.md +313 -0
- package/build/lib/commands/OMG:ccg.md +22 -0
- package/build/lib/commands/OMG:compat.md +57 -0
- package/build/lib/commands/OMG:cost.md +181 -0
- package/build/lib/commands/OMG:crazy.md +125 -0
- package/build/lib/commands/OMG:create-agent.md +183 -0
- package/build/lib/commands/OMG:deps.md +248 -0
- package/build/lib/commands/OMG:doctor.md +37 -0
- package/build/lib/commands/OMG:domain-init.md +11 -0
- package/build/lib/commands/OMG:escalate.md +52 -0
- package/build/lib/commands/OMG:health-check.md +45 -0
- package/build/lib/commands/OMG:init.md +134 -0
- package/build/lib/commands/OMG:mode.md +44 -0
- package/build/lib/commands/OMG:preflight.md +26 -0
- package/build/lib/commands/OMG:project-init.md +11 -0
- package/build/lib/commands/OMG:ralph-start.md +43 -0
- package/build/lib/commands/OMG:ralph-stop.md +23 -0
- package/build/lib/commands/OMG:security-check.md +28 -0
- package/build/lib/commands/OMG:session-branch.md +85 -0
- package/build/lib/commands/OMG:session-fork.md +53 -0
- package/build/lib/commands/OMG:session-merge.md +134 -0
- package/build/lib/commands/OMG:setup.md +78 -0
- package/build/lib/commands/OMG:stats.md +225 -0
- package/build/lib/commands/OMG:teams.md +39 -0
- package/build/lib/commands/OMG:theme.md +44 -0
- package/build/lib/commands/__init__.py +1 -0
- package/build/lib/control_plane/__init__.py +2 -0
- package/build/lib/control_plane/openapi.yaml +260 -0
- package/build/lib/control_plane/server.py +147 -0
- package/build/lib/control_plane/service.py +222 -0
- package/build/lib/hooks/__init__.py +0 -0
- package/build/lib/hooks/_agent_registry.py +423 -0
- package/build/lib/hooks/_analytics.py +291 -0
- package/build/lib/hooks/_budget.py +31 -0
- package/build/lib/hooks/_common.py +569 -0
- package/build/lib/hooks/_compression_optimizer.py +119 -0
- package/build/lib/hooks/_cost_ledger.py +176 -0
- package/build/lib/hooks/_learnings.py +126 -0
- package/build/lib/hooks/_memory.py +103 -0
- package/build/lib/hooks/_protected_context.py +150 -0
- package/build/lib/hooks/_token_counter.py +221 -0
- package/build/lib/hooks/branch_manager.py +236 -0
- package/build/lib/hooks/budget_governor.py +232 -0
- package/build/lib/hooks/circuit-breaker.py +270 -0
- package/build/lib/hooks/compression_feedback.py +254 -0
- package/build/lib/hooks/config-guard.py +216 -0
- package/build/lib/hooks/context_pressure.py +53 -0
- package/build/lib/hooks/credential_store.py +1020 -0
- package/build/lib/hooks/fetch-rate-limits.py +212 -0
- package/build/lib/hooks/firewall.py +48 -0
- package/build/lib/hooks/hashline-formatter-bridge.py +224 -0
- package/build/lib/hooks/hashline-injector.py +273 -0
- package/build/lib/hooks/hashline-validator.py +216 -0
- package/build/lib/hooks/idle-detector.py +95 -0
- package/build/lib/hooks/intentgate-keyword-detector.py +188 -0
- package/build/lib/hooks/magic-keyword-router.py +195 -0
- package/build/lib/hooks/policy_engine.py +641 -0
- package/build/lib/hooks/post-tool-failure.py +19 -0
- package/build/lib/hooks/post-write.py +219 -0
- package/build/lib/hooks/post_write.py +46 -0
- package/build/lib/hooks/pre-compact.py +398 -0
- package/build/lib/hooks/pre-tool-inject.py +98 -0
- package/build/lib/hooks/prompt-enhancer.py +672 -0
- package/build/lib/hooks/quality-runner.py +191 -0
- package/build/lib/hooks/query.py +512 -0
- package/build/lib/hooks/secret-guard.py +61 -0
- package/build/lib/hooks/secret_audit.py +144 -0
- package/build/lib/hooks/security_validators.py +75 -0
- package/build/lib/hooks/session-end-capture.py +137 -0
- package/build/lib/hooks/session-start.py +277 -0
- package/build/lib/hooks/setup_wizard.py +646 -0
- package/build/lib/hooks/shadow_manager.py +344 -0
- package/build/lib/hooks/state_migration.py +225 -0
- package/build/lib/hooks/stop-gate.py +7 -0
- package/build/lib/hooks/stop_dispatcher.py +945 -0
- package/build/lib/hooks/test-validator.py +361 -0
- package/build/lib/hooks/test_generator_hook.py +123 -0
- package/build/lib/hooks/todo-state-tracker.py +114 -0
- package/build/lib/hooks/tool-ledger.py +149 -0
- package/build/lib/hooks/trust_review.py +585 -0
- package/build/lib/plugins/README.md +60 -0
- package/build/lib/plugins/__init__.py +1 -0
- package/build/lib/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/build/lib/plugins/advanced/commands/OMG:deep-plan.md +265 -0
- package/build/lib/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/build/lib/plugins/advanced/commands/OMG:learn.md +110 -0
- package/build/lib/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/build/lib/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/build/lib/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/build/lib/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/build/lib/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/build/lib/plugins/advanced/commands/OMG:ship.md +46 -0
- package/build/lib/plugins/advanced/plugin.json +87 -0
- package/build/lib/plugins/core/plugin.json +145 -0
- package/build/lib/plugins/dephealth/__init__.py +0 -0
- package/build/lib/plugins/dephealth/cve_scanner.py +188 -0
- package/build/lib/plugins/dephealth/license_checker.py +135 -0
- package/build/lib/plugins/dephealth/manifest_detector.py +423 -0
- package/build/lib/plugins/dephealth/vuln_analyzer.py +169 -0
- package/build/lib/plugins/testgen/__init__.py +0 -0
- package/build/lib/plugins/testgen/codamosa_engine.py +402 -0
- package/build/lib/plugins/testgen/edge_case_synthesizer.py +184 -0
- package/build/lib/plugins/testgen/framework_detector.py +271 -0
- package/build/lib/plugins/testgen/skeleton_generator.py +219 -0
- package/build/lib/plugins/viz/__init__.py +0 -0
- package/build/lib/plugins/viz/ast_parser.py +139 -0
- package/build/lib/plugins/viz/diagram_generator.py +192 -0
- package/build/lib/plugins/viz/graph_builder.py +444 -0
- package/build/lib/plugins/viz/native_parsers.py +259 -0
- package/build/lib/plugins/viz/regex_parser.py +112 -0
- package/build/lib/registry/__init__.py +1 -0
- package/build/lib/registry/bundles/algorithms.yaml +45 -0
- package/build/lib/registry/bundles/api-twin.yaml +48 -0
- package/build/lib/registry/bundles/claim-judge.yaml +49 -0
- package/build/lib/registry/bundles/control-plane.yaml +151 -0
- package/build/lib/registry/bundles/data-lineage.yaml +47 -0
- package/build/lib/registry/bundles/delta-classifier.yaml +47 -0
- package/build/lib/registry/bundles/eval-gate.yaml +47 -0
- package/build/lib/registry/bundles/health.yaml +45 -0
- package/build/lib/registry/bundles/hook-governor.yaml +97 -0
- package/build/lib/registry/bundles/incident-replay.yaml +47 -0
- package/build/lib/registry/bundles/lsp-pack.yaml +48 -0
- package/build/lib/registry/bundles/mcp-fabric.yaml +53 -0
- package/build/lib/registry/bundles/plan-council.yaml +51 -0
- package/build/lib/registry/bundles/preflight.yaml +48 -0
- package/build/lib/registry/bundles/proof-gate.yaml +49 -0
- package/build/lib/registry/bundles/remote-supervisor.yaml +49 -0
- package/build/lib/registry/bundles/robotics.yaml +45 -0
- package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +54 -0
- package/build/lib/registry/bundles/security-check.yaml +50 -0
- package/build/lib/registry/bundles/test-intent-lock.yaml +49 -0
- package/build/lib/registry/bundles/tracebank.yaml +47 -0
- package/build/lib/registry/bundles/vision.yaml +45 -0
- package/build/lib/registry/omg-capability.schema.json +296 -0
- package/build/lib/registry/verify_artifact.py +90 -0
- package/build/lib/runtime/__init__.py +32 -0
- package/build/lib/runtime/adapters/__init__.py +13 -0
- package/build/lib/runtime/adapters/claude.py +63 -0
- package/build/lib/runtime/adapters/gpt.py +56 -0
- package/build/lib/runtime/adapters/local.py +56 -0
- package/build/lib/runtime/adoption.py +212 -0
- package/build/lib/runtime/api_twin.py +450 -0
- package/build/lib/runtime/asset_loader.py +62 -0
- package/build/lib/runtime/business_workflow.py +234 -0
- package/build/lib/runtime/claim_judge.py +95 -0
- package/build/lib/runtime/cli_provider.py +85 -0
- package/build/lib/runtime/compat.py +1459 -0
- package/build/lib/runtime/contract_compiler.py +1918 -0
- package/build/lib/runtime/custom_agent_loader.py +366 -0
- package/build/lib/runtime/data_lineage.py +73 -0
- package/build/lib/runtime/delta_classifier.py +81 -0
- package/build/lib/runtime/dispatcher.py +47 -0
- package/build/lib/runtime/domain_packs.py +46 -0
- package/build/lib/runtime/ecosystem.py +371 -0
- package/build/lib/runtime/eval_gate.py +96 -0
- package/build/lib/runtime/guide_assert.py +45 -0
- package/build/lib/runtime/incident_replay.py +47 -0
- package/build/lib/runtime/legacy_compat.py +7 -0
- package/build/lib/runtime/mcp_config_writers.py +233 -0
- package/build/lib/runtime/mcp_lifecycle.py +175 -0
- package/build/lib/runtime/mcp_memory_server.py +135 -0
- package/build/lib/runtime/memory_parsers/__init__.py +0 -0
- package/build/lib/runtime/memory_parsers/chatgpt_parser.py +257 -0
- package/build/lib/runtime/memory_parsers/claude_import.py +107 -0
- package/build/lib/runtime/memory_parsers/export.py +97 -0
- package/build/lib/runtime/memory_parsers/gemini_import.py +91 -0
- package/build/lib/runtime/memory_parsers/kimi_import.py +91 -0
- package/build/lib/runtime/memory_store.py +215 -0
- package/build/lib/runtime/omc_compat.py +7 -0
- package/build/lib/runtime/omg_compat_contract_snapshot.json +916 -0
- package/build/lib/runtime/omg_contract_snapshot.json +916 -0
- package/build/lib/runtime/omg_mcp_server.py +212 -0
- package/build/lib/runtime/playwright_pack.py +169 -0
- package/build/lib/runtime/preflight.py +117 -0
- package/build/lib/runtime/proof_chain.py +228 -0
- package/build/lib/runtime/proof_gate.py +163 -0
- package/build/lib/runtime/providers/__init__.py +0 -0
- package/build/lib/runtime/providers/codex_provider.py +102 -0
- package/build/lib/runtime/providers/gemini_provider.py +109 -0
- package/build/lib/runtime/providers/kimi_provider.py +132 -0
- package/build/lib/runtime/remote_supervisor.py +64 -0
- package/build/lib/runtime/runtime_profile.py +61 -0
- package/build/lib/runtime/security_check.py +965 -0
- package/build/lib/runtime/subagent_dispatcher.py +469 -0
- package/build/lib/runtime/team_router.py +1167 -0
- package/build/lib/runtime/test_intent_lock.py +91 -0
- package/build/lib/runtime/tmux_session_manager.py +169 -0
- package/build/lib/runtime/tracebank.py +95 -0
- package/build/lib/runtime/untrusted_content.py +269 -0
- package/commands/OMG:doctor.md +37 -0
- package/commands/OMG:preflight.md +1 -1
- package/control_plane/openapi.yaml +33 -1
- package/control_plane/server.py +26 -2
- package/control_plane/service.py +37 -0
- package/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +50 -3
- package/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +29 -0
- package/dist/enterprise/bundle/.claude-plugin/marketplace.json +5 -5
- package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +1 -1
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:deep-plan.md +221 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
- package/dist/enterprise/bundle/plugins/advanced/plugin.json +87 -0
- package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +91 -1
- package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
- package/dist/enterprise/bundle/registry/omg-capability.schema.json +217 -1
- package/dist/enterprise/bundle/settings.json +219 -6
- package/dist/enterprise/manifest.json +73 -25
- package/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +50 -3
- package/dist/public/bundle/.agents/skills/omg/codex-rules.md +29 -0
- package/dist/public/bundle/.claude-plugin/marketplace.json +5 -5
- package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +1 -1
- package/dist/public/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:deep-plan.md +221 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/dist/public/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
- package/dist/public/bundle/plugins/advanced/plugin.json +87 -0
- package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
- package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
- package/dist/public/bundle/registry/bundles/control-plane.yaml +91 -1
- package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/dist/public/bundle/registry/bundles/health.yaml +1 -1
- package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
- package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
- package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
- package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
- package/dist/public/bundle/registry/omg-capability.schema.json +217 -1
- package/dist/public/bundle/settings.json +218 -3
- package/dist/public/manifest.json +73 -25
- package/docs/proof.md +16 -6
- package/docs/release-checklist.md +2 -0
- package/hooks/policy_engine.py +122 -17
- package/hooks/setup_wizard.py +52 -12
- package/hooks/shadow_manager.py +21 -0
- package/package.json +2 -2
- package/plugins/README.md +5 -1
- package/plugins/advanced/commands/OMG:deep-plan.md +50 -6
- package/plugins/advanced/commands/OMG:ship.md +1 -1
- package/plugins/advanced/plugin.json +1 -10
- package/plugins/core/plugin.json +7 -1
- package/pyproject.toml +2 -2
- package/registry/bundles/algorithms.yaml +1 -1
- package/registry/bundles/api-twin.yaml +1 -1
- package/registry/bundles/claim-judge.yaml +49 -0
- package/registry/bundles/control-plane.yaml +91 -1
- package/registry/bundles/data-lineage.yaml +1 -1
- package/registry/bundles/delta-classifier.yaml +1 -1
- package/registry/bundles/eval-gate.yaml +1 -1
- package/registry/bundles/health.yaml +1 -1
- package/registry/bundles/hook-governor.yaml +1 -1
- package/registry/bundles/incident-replay.yaml +1 -1
- package/registry/bundles/lsp-pack.yaml +1 -1
- package/registry/bundles/mcp-fabric.yaml +1 -1
- package/registry/bundles/plan-council.yaml +51 -0
- package/registry/bundles/preflight.yaml +1 -1
- package/registry/bundles/proof-gate.yaml +49 -0
- package/registry/bundles/remote-supervisor.yaml +1 -1
- package/registry/bundles/robotics.yaml +1 -1
- package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/registry/bundles/security-check.yaml +1 -1
- package/registry/bundles/test-intent-lock.yaml +49 -0
- package/registry/bundles/tracebank.yaml +1 -1
- package/registry/bundles/vision.yaml +1 -1
- package/registry/omg-capability.schema.json +217 -1
- package/runtime/adoption.py +1 -1
- package/runtime/api_twin.py +279 -8
- package/runtime/business_workflow.py +14 -0
- package/runtime/claim_judge.py +95 -0
- package/runtime/compat.py +139 -0
- package/runtime/contract_compiler.py +1099 -28
- package/runtime/ecosystem.py +1 -1
- package/runtime/eval_gate.py +48 -2
- package/runtime/mcp_config_writers.py +12 -0
- package/runtime/mcp_lifecycle.py +31 -9
- package/runtime/mcp_memory_server.py +1 -1
- package/runtime/omg_compat_contract_snapshot.json +1 -1
- package/runtime/omg_contract_snapshot.json +1 -1
- package/runtime/omg_mcp_server.py +13 -8
- package/runtime/playwright_pack.py +169 -0
- package/runtime/preflight.py +45 -1
- package/runtime/proof_chain.py +228 -0
- package/runtime/proof_gate.py +163 -0
- package/runtime/security_check.py +523 -22
- package/runtime/team_router.py +6 -6
- package/runtime/test_intent_lock.py +91 -0
- package/runtime/tracebank.py +43 -1
- package/runtime/untrusted_content.py +172 -5
- package/scripts/check-omg-public-ready.py +77 -0
- package/scripts/omg.py +28 -9
- package/scripts/verify-standalone.sh +7 -0
- package/settings.json +219 -6
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Stop Ralph autonomous loop — deactivates the state file."
|
|
3
|
+
allowed-tools: Read, Write, Edit, Bash
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:ralph-stop — Stop Ralph Autonomous Loop
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
Stops an active Ralph loop by deactivating the state file.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
```
|
|
14
|
+
/OMG:ralph-stop
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## How it Works
|
|
18
|
+
1. Read `.omg/state/ralph-loop.json`
|
|
19
|
+
2. Set `active: false` in the state file (preserve iteration count for review)
|
|
20
|
+
3. Report: "Ralph loop stopped after N iterations. Gomg was: [original_prompt]"
|
|
21
|
+
|
|
22
|
+
## If No Active Loop
|
|
23
|
+
Report: "No active Ralph loop found. Nothing to stop."
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Deprecated alias to OMG's canonical security-check pipeline.
|
|
3
|
+
allowed-tools: Read, Grep, Glob, Bash(python3:*), Bash(rg:*)
|
|
4
|
+
argument-hint: "[path or '.' for the current project]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:security-review — Deprecated Alias
|
|
8
|
+
|
|
9
|
+
`/OMG:security-review` remains available only for compatibility.
|
|
10
|
+
|
|
11
|
+
Use `/OMG:security-check` instead. The canonical pipeline now owns:
|
|
12
|
+
|
|
13
|
+
- normalized security findings
|
|
14
|
+
- dependency and AST enrichment
|
|
15
|
+
- evidence-ready provenance and trust scores
|
|
16
|
+
- reuse across CLI, compat routing, control plane, MCP, and ship flows
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Structured multi-step reasoning using sequential-thinking tool for complex debugging and planning.
|
|
3
|
+
allowed-tools: sequential-thinking_sequentialthinking, Read, Grep, Glob
|
|
4
|
+
argument-hint: "[problem statement to reason through]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:sequential-thinking
|
|
8
|
+
|
|
9
|
+
Use the sequential-thinking tool when the task needs explicit step-by-step reasoning,
|
|
10
|
+
branching, and hypothesis verification.
|
|
11
|
+
|
|
12
|
+
Execution contract:
|
|
13
|
+
- Start with an initial thought budget
|
|
14
|
+
- Revise or branch when new evidence appears
|
|
15
|
+
- End only when a verified conclusion is reached
|
|
16
|
+
|
|
17
|
+
Output contract:
|
|
18
|
+
- Return final conclusion
|
|
19
|
+
- Return key assumptions
|
|
20
|
+
- Return verification steps used
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Ship pipeline — Idea -> Plan -> Execute -> Evidence -> PR-ready summary
|
|
3
|
+
allowed-tools: Read, Write, Edit, MultiEdit, Grep, Glob, Bash(git:*), Bash(rg:*), Bash(find:*), Bash(cat:*), Bash(python3:*), Bash(pytest:*), Bash(npm test:*), Bash(go test:*), Bash(cargo test:*), Bash(jest:*), Bash(vitest:*)
|
|
4
|
+
argument-hint: "[goal or optional path to .omg/idea.yml]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:ship — Idea -> Evidence -> PR
|
|
8
|
+
|
|
9
|
+
## Step 1: Load idea contract
|
|
10
|
+
- Prefer `.omg/idea.yml`.
|
|
11
|
+
- If missing, scaffold from `~/.claude/templates/omg/idea.yml` and ask user for minimum fields:
|
|
12
|
+
- `goal`, `constraints`, `acceptance`, `risk`, `evidence_required`.
|
|
13
|
+
|
|
14
|
+
## Step 2: Convert idea to execution plan
|
|
15
|
+
- Consume plan artifacts generated by `/OMG:deep-plan`.
|
|
16
|
+
- Require `.omg/plans/deep-plan.md` and `.omg/plans/deep-plan.json` to already encode the business workflow contract.
|
|
17
|
+
- If missing, invoke `/OMG:deep-plan` first and return after those artifacts are created.
|
|
18
|
+
- Use the deep-plan workflow path and task metadata as the execution source of truth.
|
|
19
|
+
|
|
20
|
+
## Step 3: Execute with Shadow + Evidence discipline
|
|
21
|
+
- Implement changes.
|
|
22
|
+
- Run verification commands.
|
|
23
|
+
- Build an evidence pack at `.omg/evidence/<run-id>.json` containing:
|
|
24
|
+
- `tests[]`, `security_scans[]`, `diff_summary`, `reproducibility`, `unresolved_risks[]`.
|
|
25
|
+
|
|
26
|
+
## Step 4: Security and trust checks
|
|
27
|
+
- Run `/OMG:security-check` for auth/payment/database/sensitive changes.
|
|
28
|
+
- If config/hook/MCP changes are involved, ensure trust manifest is updated at `.omg/trust/manifest.lock.json`.
|
|
29
|
+
|
|
30
|
+
## Step 5: PR-ready output
|
|
31
|
+
Return:
|
|
32
|
+
1. Goal and scope delivered
|
|
33
|
+
2. Files changed
|
|
34
|
+
3. Verification evidence (command + exit code)
|
|
35
|
+
4. Risks/unknowns
|
|
36
|
+
5. Suggested PR title + body
|
|
37
|
+
|
|
38
|
+
## Full-power sub-agent protocol
|
|
39
|
+
- Prefer parallel background sub-agent launches for independent workstreams.
|
|
40
|
+
- Do not finalize until every launched track is collected via `background_output`.
|
|
41
|
+
- Use `sequential-thinking` to reconcile conflicts and enforce execution order.
|
|
42
|
+
|
|
43
|
+
## Anti-patterns
|
|
44
|
+
- Do not claim done without evidence.
|
|
45
|
+
- Do not edit tests to hide product bugs.
|
|
46
|
+
- Do not skip trust review for `.claude/.omg` or MCP changes.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "omg-advanced",
|
|
3
|
+
"version": "2.0.7",
|
|
4
|
+
"description": "Advanced OMG commands - deep planning, learning, code review, and specialized workflows",
|
|
5
|
+
"type": "omg-plugin",
|
|
6
|
+
"commands": {
|
|
7
|
+
"deep-plan": {
|
|
8
|
+
"path": "commands/OMG:deep-plan.md",
|
|
9
|
+
"description": "Deep strategic planning with domain awareness",
|
|
10
|
+
"category": "planning"
|
|
11
|
+
},
|
|
12
|
+
"learn": {
|
|
13
|
+
"path": "commands/OMG:learn.md",
|
|
14
|
+
"description": "Create reusable skills from patterns",
|
|
15
|
+
"category": "knowledge"
|
|
16
|
+
},
|
|
17
|
+
"code-review": {
|
|
18
|
+
"path": "commands/OMG:code-review.md",
|
|
19
|
+
"description": "Deep code review with line-by-line analysis",
|
|
20
|
+
"category": "quality"
|
|
21
|
+
},
|
|
22
|
+
"ship": {
|
|
23
|
+
"path": "commands/OMG:ship.md",
|
|
24
|
+
"description": "Ship pipeline - idea to PR-ready summary",
|
|
25
|
+
"category": "delivery"
|
|
26
|
+
},
|
|
27
|
+
"handoff": {
|
|
28
|
+
"path": "commands/OMG:handoff.md",
|
|
29
|
+
"description": "Intelligent session transfer",
|
|
30
|
+
"category": "collaboration"
|
|
31
|
+
},
|
|
32
|
+
"maintainer": {
|
|
33
|
+
"path": "commands/OMG:maintainer.md",
|
|
34
|
+
"description": "Open-source maintainer workflows",
|
|
35
|
+
"category": "oss"
|
|
36
|
+
},
|
|
37
|
+
"sequential-thinking": {
|
|
38
|
+
"path": "commands/OMG:sequential-thinking.md",
|
|
39
|
+
"description": "Structured multi-step reasoning",
|
|
40
|
+
"category": "thinking"
|
|
41
|
+
},
|
|
42
|
+
"ralph-start": {
|
|
43
|
+
"path": "commands/OMG:ralph-start.md",
|
|
44
|
+
"description": "Start Ralph autonomous loop",
|
|
45
|
+
"category": "automation"
|
|
46
|
+
},
|
|
47
|
+
"ralph-stop": {
|
|
48
|
+
"path": "commands/OMG:ralph-stop.md",
|
|
49
|
+
"description": "Stop Ralph autonomous loop",
|
|
50
|
+
"category": "automation"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"categories": {
|
|
54
|
+
"planning": {
|
|
55
|
+
"description": "Strategic planning and architecture",
|
|
56
|
+
"commands": ["deep-plan"]
|
|
57
|
+
},
|
|
58
|
+
"quality": {
|
|
59
|
+
"description": "Code quality and review",
|
|
60
|
+
"commands": ["code-review"]
|
|
61
|
+
},
|
|
62
|
+
"knowledge": {
|
|
63
|
+
"description": "Learning and skill creation",
|
|
64
|
+
"commands": ["learn"]
|
|
65
|
+
},
|
|
66
|
+
"delivery": {
|
|
67
|
+
"description": "Shipping and release workflows",
|
|
68
|
+
"commands": ["ship"]
|
|
69
|
+
},
|
|
70
|
+
"collaboration": {
|
|
71
|
+
"description": "Team collaboration and handoff",
|
|
72
|
+
"commands": ["handoff"]
|
|
73
|
+
},
|
|
74
|
+
"automation": {
|
|
75
|
+
"description": "Autonomous execution modes",
|
|
76
|
+
"commands": ["ralph-start", "ralph-stop"]
|
|
77
|
+
},
|
|
78
|
+
"thinking": {
|
|
79
|
+
"description": "Structured thinking tools",
|
|
80
|
+
"commands": ["sequential-thinking"]
|
|
81
|
+
},
|
|
82
|
+
"oss": {
|
|
83
|
+
"description": "Open source maintainer tools",
|
|
84
|
+
"commands": ["maintainer"]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "omg-core",
|
|
3
|
+
"version": "2.0.7",
|
|
4
|
+
"description": "Core OMG commands - native setup, routing, orchestration, and verification surfaces",
|
|
5
|
+
"type": "omg-plugin",
|
|
6
|
+
"commands": {
|
|
7
|
+
"setup": {
|
|
8
|
+
"path": "commands/OMG:setup.md",
|
|
9
|
+
"description": "Native OMG setup and adoption flow for supported hosts",
|
|
10
|
+
"category": "setup"
|
|
11
|
+
},
|
|
12
|
+
"init": {
|
|
13
|
+
"path": "commands/OMG:init.md",
|
|
14
|
+
"description": "Unified initializer for project setup and domain scaffolding",
|
|
15
|
+
"category": "setup"
|
|
16
|
+
},
|
|
17
|
+
"escalate": {
|
|
18
|
+
"path": "commands/OMG:escalate.md",
|
|
19
|
+
"description": "Auto-route to Codex or Gemini",
|
|
20
|
+
"category": "routing"
|
|
21
|
+
},
|
|
22
|
+
"teams": {
|
|
23
|
+
"path": "commands/OMG:teams.md",
|
|
24
|
+
"description": "Internal team routing for standalone operation",
|
|
25
|
+
"category": "routing"
|
|
26
|
+
},
|
|
27
|
+
"ccg": {
|
|
28
|
+
"path": "commands/OMG:ccg.md",
|
|
29
|
+
"description": "CCG mode - tri-track synthesis (Claude+Codex+Gemini)",
|
|
30
|
+
"category": "routing"
|
|
31
|
+
},
|
|
32
|
+
"crazy": {
|
|
33
|
+
"path": "commands/OMG:crazy.md",
|
|
34
|
+
"description": "CRAZY mode - parallel multi-agent orchestration",
|
|
35
|
+
"category": "orchestration"
|
|
36
|
+
},
|
|
37
|
+
"compat": {
|
|
38
|
+
"path": "commands/OMG:compat.md",
|
|
39
|
+
"description": "Legacy skill compatibility dispatcher",
|
|
40
|
+
"category": "compatibility"
|
|
41
|
+
},
|
|
42
|
+
"security-check": {
|
|
43
|
+
"path": "commands/OMG:security-check.md",
|
|
44
|
+
"description": "Canonical security pipeline with normalized findings and evidence",
|
|
45
|
+
"category": "security"
|
|
46
|
+
},
|
|
47
|
+
"api-twin": {
|
|
48
|
+
"path": "commands/OMG:api-twin.md",
|
|
49
|
+
"description": "Contract replay and fixture-based API simulation",
|
|
50
|
+
"category": "contracts"
|
|
51
|
+
},
|
|
52
|
+
"preflight": {
|
|
53
|
+
"path": "commands/OMG:preflight.md",
|
|
54
|
+
"description": "Structured routing and evidence planning before execution",
|
|
55
|
+
"category": "routing"
|
|
56
|
+
},
|
|
57
|
+
"health-check": {
|
|
58
|
+
"path": "commands/OMG:health-check.md",
|
|
59
|
+
"description": "Verify project setup and tool integration",
|
|
60
|
+
"category": "setup"
|
|
61
|
+
},
|
|
62
|
+
"mode": {
|
|
63
|
+
"path": "commands/OMG:mode.md",
|
|
64
|
+
"description": "Set cognitive mode for the session",
|
|
65
|
+
"category": "config"
|
|
66
|
+
},
|
|
67
|
+
"domain-init": {
|
|
68
|
+
"path": "commands/OMG:domain-init.md",
|
|
69
|
+
"description": "Alias for domain scaffolding (use init instead)",
|
|
70
|
+
"category": "setup",
|
|
71
|
+
"deprecated": true
|
|
72
|
+
},
|
|
73
|
+
"project-init": {
|
|
74
|
+
"path": "commands/OMG:project-init.md",
|
|
75
|
+
"description": "Alias for project setup (use init instead)",
|
|
76
|
+
"category": "setup",
|
|
77
|
+
"deprecated": true
|
|
78
|
+
},
|
|
79
|
+
"cost": {
|
|
80
|
+
"path": "commands/OMG:cost.md",
|
|
81
|
+
"description": "Display session cost tracking, budget status, and usage history",
|
|
82
|
+
"category": "observability"
|
|
83
|
+
},
|
|
84
|
+
"stats": {
|
|
85
|
+
"path": "commands/OMG:stats.md",
|
|
86
|
+
"description": "Display session analytics, tool usage trends, file heatmaps, and failure patterns",
|
|
87
|
+
"category": "observability"
|
|
88
|
+
},
|
|
89
|
+
"deps": {
|
|
90
|
+
"path": "commands/OMG:deps.md",
|
|
91
|
+
"description": "Scan project dependencies for CVEs, license issues, and outdated packages",
|
|
92
|
+
"category": "observability"
|
|
93
|
+
},
|
|
94
|
+
"arch": {
|
|
95
|
+
"path": "commands/OMG:arch.md",
|
|
96
|
+
"description": "Codebase visualization — dependency graphs and architecture diagrams",
|
|
97
|
+
"category": "visualization",
|
|
98
|
+
"feature_flag": "CODEBASE_VIZ"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"categories": {
|
|
102
|
+
"setup": {
|
|
103
|
+
"description": "Project initialization and setup",
|
|
104
|
+
"commands": ["setup", "init", "health-check"]
|
|
105
|
+
},
|
|
106
|
+
"routing": {
|
|
107
|
+
"description": "Model routing and escalation",
|
|
108
|
+
"commands": ["escalate", "teams", "ccg", "preflight"]
|
|
109
|
+
},
|
|
110
|
+
"orchestration": {
|
|
111
|
+
"description": "Multi-agent orchestration modes",
|
|
112
|
+
"commands": ["crazy"]
|
|
113
|
+
},
|
|
114
|
+
"compatibility": {
|
|
115
|
+
"description": "Legacy compatibility",
|
|
116
|
+
"commands": ["compat"]
|
|
117
|
+
},
|
|
118
|
+
"config": {
|
|
119
|
+
"description": "Configuration and settings",
|
|
120
|
+
"commands": ["mode"]
|
|
121
|
+
},
|
|
122
|
+
"observability": {
|
|
123
|
+
"description": "Cost tracking and session observability",
|
|
124
|
+
"commands": ["cost", "stats", "deps"]
|
|
125
|
+
},
|
|
126
|
+
"security": {
|
|
127
|
+
"description": "Canonical security and trust checks",
|
|
128
|
+
"commands": ["security-check"]
|
|
129
|
+
},
|
|
130
|
+
"contracts": {
|
|
131
|
+
"description": "Contract replay and API simulation",
|
|
132
|
+
"commands": ["api-twin"]
|
|
133
|
+
},
|
|
134
|
+
"visualization": {
|
|
135
|
+
"description": "Codebase visualization and architecture diagrams",
|
|
136
|
+
"commands": ["arch"]
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"roles": {
|
|
140
|
+
"plan-council": {
|
|
141
|
+
"description": "Canonical council-style planning role",
|
|
142
|
+
"bundle": "plan-council"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
from datetime import datetime, timedelta, timezone
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
import urllib.error
|
|
9
|
+
import urllib.request
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
OSV_BATCH_URL = "https://api.osv.dev/v1/querybatch"
|
|
13
|
+
CACHE_REL_PATH = Path(".omg") / "state" / "cve-cache.json"
|
|
14
|
+
CACHE_TTL_HOURS = 24
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _dep_health_enabled() -> bool:
|
|
18
|
+
env_val = os.environ.get("OMG_DEP_HEALTH_ENABLED", "").lower()
|
|
19
|
+
if env_val in ("1", "true", "yes"):
|
|
20
|
+
return True
|
|
21
|
+
if env_val in ("0", "false", "no"):
|
|
22
|
+
return False
|
|
23
|
+
try:
|
|
24
|
+
import sys
|
|
25
|
+
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
26
|
+
from hooks._common import get_feature_flag
|
|
27
|
+
return get_feature_flag("DEP_HEALTH", default=False)
|
|
28
|
+
except Exception:
|
|
29
|
+
return False
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def scan_for_cves(dependency_list: list[dict[str, str]], project_dir: str = ".") -> dict[str, Any]:
|
|
33
|
+
if not _dep_health_enabled():
|
|
34
|
+
return {"results": {}, "cached": False, "scan_ts": datetime.now(timezone.utc).isoformat()}
|
|
35
|
+
|
|
36
|
+
now = datetime.now(timezone.utc)
|
|
37
|
+
cache_path = Path(project_dir) / CACHE_REL_PATH
|
|
38
|
+
cached_payload = _load_cache(cache_path)
|
|
39
|
+
|
|
40
|
+
if not dependency_list:
|
|
41
|
+
return {
|
|
42
|
+
"results": {},
|
|
43
|
+
"cached": False,
|
|
44
|
+
"scan_ts": now.isoformat(),
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if cached_payload and _is_cache_fresh(cached_payload.get("scan_ts")):
|
|
48
|
+
return {
|
|
49
|
+
"results": cached_payload.get("results", {}),
|
|
50
|
+
"cached": True,
|
|
51
|
+
"scan_ts": cached_payload.get("scan_ts", now.isoformat()),
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
try:
|
|
55
|
+
osv_response = _query_osv_batch(dependency_list)
|
|
56
|
+
except urllib.error.URLError:
|
|
57
|
+
if cached_payload:
|
|
58
|
+
return {
|
|
59
|
+
"results": cached_payload.get("results", {}),
|
|
60
|
+
"cached": True,
|
|
61
|
+
"scan_ts": cached_payload.get("scan_ts", now.isoformat()),
|
|
62
|
+
}
|
|
63
|
+
return {"status": "offline", "results": {}, "cached": False}
|
|
64
|
+
|
|
65
|
+
structured_results = _normalize_results(dependency_list, osv_response)
|
|
66
|
+
scan_result = {
|
|
67
|
+
"results": structured_results,
|
|
68
|
+
"cached": False,
|
|
69
|
+
"scan_ts": now.isoformat(),
|
|
70
|
+
}
|
|
71
|
+
_save_cache(cache_path, scan_result)
|
|
72
|
+
return scan_result
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _query_osv_batch(dependency_list: list[dict[str, str]]) -> dict[str, Any]:
|
|
76
|
+
payload = {
|
|
77
|
+
"queries": [
|
|
78
|
+
{
|
|
79
|
+
"package": {
|
|
80
|
+
"name": dependency["name"],
|
|
81
|
+
"ecosystem": dependency["ecosystem"],
|
|
82
|
+
},
|
|
83
|
+
"version": dependency["version"],
|
|
84
|
+
}
|
|
85
|
+
for dependency in dependency_list
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
request = urllib.request.Request(
|
|
90
|
+
OSV_BATCH_URL,
|
|
91
|
+
data=json.dumps(payload).encode("utf-8"),
|
|
92
|
+
headers={"Content-Type": "application/json"},
|
|
93
|
+
method="POST",
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
with urllib.request.urlopen(request) as response:
|
|
97
|
+
body = response.read().decode("utf-8")
|
|
98
|
+
return json.loads(body)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def _normalize_results(
|
|
102
|
+
dependency_list: list[dict[str, str]], osv_response: dict[str, Any]
|
|
103
|
+
) -> dict[str, list[dict[str, Any]]]:
|
|
104
|
+
output: dict[str, list[dict[str, Any]]] = {}
|
|
105
|
+
response_results = osv_response.get("results", [])
|
|
106
|
+
|
|
107
|
+
for index, dependency in enumerate(dependency_list):
|
|
108
|
+
pkg_name = dependency.get("name", "")
|
|
109
|
+
query_result = response_results[index] if index < len(response_results) else {}
|
|
110
|
+
vulns = query_result.get("vulns", [])
|
|
111
|
+
|
|
112
|
+
normalized_vulns: list[dict[str, Any]] = []
|
|
113
|
+
for vuln in vulns:
|
|
114
|
+
affected_versions, fixed_version = _extract_affected(vuln)
|
|
115
|
+
normalized_vulns.append(
|
|
116
|
+
{
|
|
117
|
+
"id": vuln.get("id", ""),
|
|
118
|
+
"severity": _extract_severity(vuln),
|
|
119
|
+
"summary": vuln.get("summary", ""),
|
|
120
|
+
"affected_versions": affected_versions,
|
|
121
|
+
"fixed_version": fixed_version,
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
output[pkg_name] = normalized_vulns
|
|
126
|
+
|
|
127
|
+
return output
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def _extract_severity(vuln: dict[str, Any]) -> str:
|
|
131
|
+
severities = vuln.get("severity") or []
|
|
132
|
+
if severities and isinstance(severities[0], dict):
|
|
133
|
+
score = severities[0].get("score")
|
|
134
|
+
if score:
|
|
135
|
+
return str(score)
|
|
136
|
+
return "UNKNOWN"
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def _extract_affected(vuln: dict[str, Any]) -> tuple[list[str], str]:
|
|
140
|
+
affected_versions: list[str] = []
|
|
141
|
+
fixed_version = ""
|
|
142
|
+
|
|
143
|
+
for affected in vuln.get("affected", []) or []:
|
|
144
|
+
for version in affected.get("versions", []) or []:
|
|
145
|
+
affected_versions.append(str(version))
|
|
146
|
+
|
|
147
|
+
for version_range in affected.get("ranges", []) or []:
|
|
148
|
+
for event in version_range.get("events", []) or []:
|
|
149
|
+
introduced = event.get("introduced")
|
|
150
|
+
fixed = event.get("fixed")
|
|
151
|
+
if introduced:
|
|
152
|
+
affected_versions.append(str(introduced))
|
|
153
|
+
if fixed and not fixed_version:
|
|
154
|
+
fixed_version = str(fixed)
|
|
155
|
+
|
|
156
|
+
deduped_versions = list(dict.fromkeys(affected_versions))
|
|
157
|
+
return deduped_versions, fixed_version
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _load_cache(cache_path: Path) -> dict[str, Any] | None:
|
|
161
|
+
if not cache_path.exists():
|
|
162
|
+
return None
|
|
163
|
+
try:
|
|
164
|
+
return json.loads(cache_path.read_text(encoding="utf-8"))
|
|
165
|
+
except (OSError, json.JSONDecodeError):
|
|
166
|
+
return None
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def _save_cache(cache_path: Path, payload: dict[str, Any]) -> None:
|
|
170
|
+
try:
|
|
171
|
+
cache_path.parent.mkdir(parents=True, exist_ok=True)
|
|
172
|
+
cache_path.write_text(json.dumps(payload, separators=(",", ":")), encoding="utf-8")
|
|
173
|
+
except OSError:
|
|
174
|
+
return
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def _is_cache_fresh(scan_ts: str | None) -> bool:
|
|
178
|
+
if not scan_ts:
|
|
179
|
+
return False
|
|
180
|
+
try:
|
|
181
|
+
scanned_at = datetime.fromisoformat(scan_ts)
|
|
182
|
+
except ValueError:
|
|
183
|
+
return False
|
|
184
|
+
|
|
185
|
+
if scanned_at.tzinfo is None:
|
|
186
|
+
scanned_at = scanned_at.replace(tzinfo=timezone.utc)
|
|
187
|
+
|
|
188
|
+
return datetime.now(timezone.utc) - scanned_at < timedelta(hours=CACHE_TTL_HOURS)
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""License compatibility checker for dependency health analysis.
|
|
2
|
+
|
|
3
|
+
Checks whether project dependencies have licenses compatible with
|
|
4
|
+
the project's own license using a static compatibility matrix.
|
|
5
|
+
No network access required.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
import os
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
# License categories (restrictiveness increases top to bottom)
|
|
13
|
+
_PERMISSIVE = frozenset({
|
|
14
|
+
"MIT", "BSD-2-Clause", "BSD-3-Clause", "ISC", "Unlicense", "CC0-1.0",
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
_WEAK_COPYLEFT = frozenset({
|
|
18
|
+
"Apache-2.0", "LGPL-2.1", "LGPL-3.0", "MPL-2.0",
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
_STRONG_COPYLEFT = frozenset({
|
|
22
|
+
"GPL-2.0", "GPL-3.0",
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
_NETWORK_COPYLEFT = frozenset({
|
|
26
|
+
"AGPL-3.0",
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
_ALL_KNOWN = _PERMISSIVE | _WEAK_COPYLEFT | _STRONG_COPYLEFT | _NETWORK_COPYLEFT
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _dep_health_enabled() -> bool:
|
|
33
|
+
env_val = os.environ.get("OMG_DEP_HEALTH_ENABLED", "").lower()
|
|
34
|
+
if env_val in ("1", "true", "yes"):
|
|
35
|
+
return True
|
|
36
|
+
if env_val in ("0", "false", "no"):
|
|
37
|
+
return False
|
|
38
|
+
try:
|
|
39
|
+
import sys
|
|
40
|
+
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
41
|
+
from hooks._common import get_feature_flag
|
|
42
|
+
return get_feature_flag("DEP_HEALTH", default=False)
|
|
43
|
+
except Exception:
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _license_tier(license_id: str) -> int:
|
|
48
|
+
"""Return restrictiveness tier: 0=permissive, 1=weak, 2=strong, 3=network."""
|
|
49
|
+
if license_id in _PERMISSIVE:
|
|
50
|
+
return 0
|
|
51
|
+
if license_id in _WEAK_COPYLEFT:
|
|
52
|
+
return 1
|
|
53
|
+
if license_id in _STRONG_COPYLEFT:
|
|
54
|
+
return 2
|
|
55
|
+
if license_id in _NETWORK_COPYLEFT:
|
|
56
|
+
return 3
|
|
57
|
+
return -1 # unknown
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def check_license_compatibility(
|
|
61
|
+
project_license: str,
|
|
62
|
+
dependencies: list[dict[str, Any]],
|
|
63
|
+
) -> dict[str, list[dict[str, str]]]:
|
|
64
|
+
"""Check license compatibility between project and its dependencies.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
project_license: SPDX identifier for the project license (e.g. "MIT").
|
|
68
|
+
dependencies: List of dicts with "name" and "license" keys.
|
|
69
|
+
License may be None or "UNKNOWN".
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
Dict with three lists:
|
|
73
|
+
compatible: [{"pkg": str, "license": str}]
|
|
74
|
+
incompatible: [{"pkg": str, "license": str, "reason": str}]
|
|
75
|
+
unknown: [{"pkg": str}]
|
|
76
|
+
"""
|
|
77
|
+
if not _dep_health_enabled():
|
|
78
|
+
return {"compatible": [], "incompatible": [], "unknown": []}
|
|
79
|
+
|
|
80
|
+
compatible: list[dict[str, str]] = []
|
|
81
|
+
incompatible: list[dict[str, str]] = []
|
|
82
|
+
unknown: list[dict[str, str]] = []
|
|
83
|
+
|
|
84
|
+
project_tier = _license_tier(project_license)
|
|
85
|
+
|
|
86
|
+
for dep in dependencies:
|
|
87
|
+
name = dep.get("name", "")
|
|
88
|
+
dep_license = dep.get("license")
|
|
89
|
+
|
|
90
|
+
# Unknown / missing license
|
|
91
|
+
if not dep_license or dep_license == "UNKNOWN":
|
|
92
|
+
unknown.append({"pkg": name})
|
|
93
|
+
continue
|
|
94
|
+
|
|
95
|
+
dep_tier = _license_tier(dep_license)
|
|
96
|
+
|
|
97
|
+
# Unrecognized license string
|
|
98
|
+
if dep_tier == -1:
|
|
99
|
+
unknown.append({"pkg": name})
|
|
100
|
+
continue
|
|
101
|
+
|
|
102
|
+
# AGPL dep in non-AGPL project is always incompatible
|
|
103
|
+
if dep_tier == 3 and project_tier != 3:
|
|
104
|
+
incompatible.append({
|
|
105
|
+
"pkg": name,
|
|
106
|
+
"license": dep_license,
|
|
107
|
+
"reason": (
|
|
108
|
+
f"AGPL-3.0 dependency in {project_license} project: "
|
|
109
|
+
f"network copyleft requires entire project to be AGPL-3.0"
|
|
110
|
+
),
|
|
111
|
+
})
|
|
112
|
+
continue
|
|
113
|
+
|
|
114
|
+
# Strong copyleft dep in permissive/weak-copyleft project
|
|
115
|
+
if dep_tier == 2 and project_tier < 2:
|
|
116
|
+
incompatible.append({
|
|
117
|
+
"pkg": name,
|
|
118
|
+
"license": dep_license,
|
|
119
|
+
"reason": (
|
|
120
|
+
f"{dep_license} dependency in {project_license} project: "
|
|
121
|
+
f"copyleft contamination requires project to adopt {dep_license}"
|
|
122
|
+
),
|
|
123
|
+
})
|
|
124
|
+
continue
|
|
125
|
+
|
|
126
|
+
# Everything else: permissive deps are always OK,
|
|
127
|
+
# weak copyleft in permissive is OK (dynamic linking),
|
|
128
|
+
# same-tier or higher-tier project can use lower-tier deps
|
|
129
|
+
compatible.append({"pkg": name, "license": dep_license})
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
"compatible": compatible,
|
|
133
|
+
"incompatible": incompatible,
|
|
134
|
+
"unknown": unknown,
|
|
135
|
+
}
|