@trac3r/oh-my-god 2.2.11
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/CHANGELOG.md +188 -0
- package/INSTALL-VERIFICATION-INDEX.md +51 -0
- package/LICENSE +21 -0
- package/OMG-setup.sh +2549 -0
- package/QUICK-REFERENCE.md +58 -0
- package/README.md +207 -0
- package/agents/__init__.py +1 -0
- package/agents/__pycache__/model_roles.cpython-313.pyc +0 -0
- package/agents/_model_roles.yaml +26 -0
- package/agents/designer.md +67 -0
- package/agents/explore.md +60 -0
- package/agents/model_roles.py +196 -0
- package/agents/omg-api-builder.md +23 -0
- package/agents/omg-architect-mode.md +41 -0
- package/agents/omg-architect.md +13 -0
- package/agents/omg-backend-engineer.md +41 -0
- package/agents/omg-critic.md +16 -0
- package/agents/omg-database-engineer.md +41 -0
- package/agents/omg-escalation-router.md +17 -0
- package/agents/omg-executor.md +12 -0
- package/agents/omg-frontend-designer.md +41 -0
- package/agents/omg-implement-mode.md +49 -0
- package/agents/omg-infra-engineer.md +41 -0
- package/agents/omg-qa-tester.md +16 -0
- package/agents/omg-research-mode.md +41 -0
- package/agents/omg-security-auditor.md +41 -0
- package/agents/omg-testing-engineer.md +41 -0
- package/agents/plan.md +80 -0
- package/agents/quick_task.md +64 -0
- package/agents/reviewer.md +83 -0
- package/agents/task.md +71 -0
- package/bin/omg +41 -0
- package/commands/OMG:ai-commit.md +113 -0
- package/commands/OMG:api-twin.md +22 -0
- package/commands/OMG:arch.md +313 -0
- package/commands/OMG:browser.md +29 -0
- package/commands/OMG:ccg.md +22 -0
- package/commands/OMG:compat.md +57 -0
- package/commands/OMG:cost.md +181 -0
- package/commands/OMG:crazy.md +125 -0
- package/commands/OMG:create-agent.md +183 -0
- package/commands/OMG:deep-plan.md +18 -0
- package/commands/OMG:deps.md +248 -0
- package/commands/OMG:diagnose-plugins.md +33 -0
- package/commands/OMG:doctor.md +37 -0
- package/commands/OMG:domain-init.md +11 -0
- package/commands/OMG:escalate.md +52 -0
- package/commands/OMG:forge.md +103 -0
- package/commands/OMG:health-check.md +48 -0
- package/commands/OMG:init.md +134 -0
- package/commands/OMG:issue.md +56 -0
- package/commands/OMG:mode.md +44 -0
- package/commands/OMG:playwright.md +17 -0
- package/commands/OMG:preflight.md +26 -0
- package/commands/OMG:preset.md +49 -0
- package/commands/OMG:profile-review.md +58 -0
- package/commands/OMG:project-init.md +11 -0
- package/commands/OMG:ralph-start.md +43 -0
- package/commands/OMG:ralph-stop.md +23 -0
- package/commands/OMG:security-check.md +28 -0
- package/commands/OMG:session-branch.md +101 -0
- package/commands/OMG:session-fork.md +57 -0
- package/commands/OMG:session-merge.md +138 -0
- package/commands/OMG:setup.md +82 -0
- package/commands/OMG:ship.md +18 -0
- package/commands/OMG:stats.md +225 -0
- package/commands/OMG:teams.md +54 -0
- package/commands/OMG:theme.md +44 -0
- package/commands/OMG:validate.md +59 -0
- package/commands/__init__.py +1 -0
- package/docs/command-surface.md +55 -0
- package/docs/install/claude-code.md +53 -0
- package/docs/install/codex.md +45 -0
- package/docs/install/gemini.md +43 -0
- package/docs/install/github-action.md +81 -0
- package/docs/install/github-app-required-checks.md +107 -0
- package/docs/install/github-app.md +161 -0
- package/docs/install/kimi.md +43 -0
- package/docs/install/opencode.md +38 -0
- package/docs/proof.md +182 -0
- package/hooks/__init__.py +0 -0
- package/hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_agent_registry.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_analytics.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_budget.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_common.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_compression_optimizer.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_cost_ledger.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_learnings.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_memory.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_post_write.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_protected_context.cpython-313.pyc +0 -0
- package/hooks/__pycache__/_token_counter.cpython-313.pyc +0 -0
- package/hooks/__pycache__/branch_manager.cpython-313.pyc +0 -0
- package/hooks/__pycache__/budget_governor.cpython-313.pyc +0 -0
- package/hooks/__pycache__/circuit-breaker.cpython-313.pyc +0 -0
- package/hooks/__pycache__/compression_feedback.cpython-313.pyc +0 -0
- package/hooks/__pycache__/config-guard.cpython-313.pyc +0 -0
- package/hooks/__pycache__/context_pressure.cpython-313.pyc +0 -0
- package/hooks/__pycache__/credential_store.cpython-313.pyc +0 -0
- package/hooks/__pycache__/fetch-rate-limits.cpython-313.pyc +0 -0
- package/hooks/__pycache__/firewall.cpython-313.pyc +0 -0
- package/hooks/__pycache__/hashline-formatter-bridge.cpython-313.pyc +0 -0
- package/hooks/__pycache__/hashline-injector.cpython-313.pyc +0 -0
- package/hooks/__pycache__/hashline-validator.cpython-313.pyc +0 -0
- package/hooks/__pycache__/idle-detector.cpython-313.pyc +0 -0
- package/hooks/__pycache__/instructions-loaded.cpython-313.pyc +0 -0
- package/hooks/__pycache__/intentgate-keyword-detector.cpython-313.pyc +0 -0
- package/hooks/__pycache__/magic-keyword-router.cpython-313.pyc +0 -0
- package/hooks/__pycache__/policy_engine.cpython-313.pyc +0 -0
- package/hooks/__pycache__/post-tool-failure.cpython-313.pyc +0 -0
- package/hooks/__pycache__/post-write.cpython-313.pyc +0 -0
- package/hooks/__pycache__/post_write.cpython-313.pyc +0 -0
- package/hooks/__pycache__/pre-compact.cpython-313.pyc +0 -0
- package/hooks/__pycache__/pre-tool-inject.cpython-313.pyc +0 -0
- package/hooks/__pycache__/prompt-enhancer.cpython-313.pyc +0 -0
- package/hooks/__pycache__/quality-runner.cpython-313.pyc +0 -0
- package/hooks/__pycache__/query.cpython-313.pyc +0 -0
- package/hooks/__pycache__/secret-guard.cpython-313.pyc +0 -0
- package/hooks/__pycache__/secret_audit.cpython-313.pyc +0 -0
- package/hooks/__pycache__/security_validators.cpython-313.pyc +0 -0
- package/hooks/__pycache__/session-end-capture.cpython-313.pyc +0 -0
- package/hooks/__pycache__/session-start.cpython-313.pyc +0 -0
- package/hooks/__pycache__/setup_wizard.cpython-313.pyc +0 -0
- package/hooks/__pycache__/shadow_manager.cpython-313.pyc +0 -0
- package/hooks/__pycache__/state_migration.cpython-313.pyc +0 -0
- package/hooks/__pycache__/stop-gate.cpython-313.pyc +0 -0
- package/hooks/__pycache__/stop_dispatcher.cpython-313.pyc +0 -0
- package/hooks/__pycache__/tdd-gate.cpython-313.pyc +0 -0
- package/hooks/__pycache__/terms-guard.cpython-313.pyc +0 -0
- package/hooks/__pycache__/test-validator.cpython-313.pyc +0 -0
- package/hooks/__pycache__/test_generator_hook.cpython-313.pyc +0 -0
- package/hooks/__pycache__/todo-state-tracker.cpython-313.pyc +0 -0
- package/hooks/__pycache__/tool-ledger.cpython-313.pyc +0 -0
- package/hooks/__pycache__/trust_review.cpython-313.pyc +0 -0
- package/hooks/__pycache__/user-prompt-submit.cpython-313.pyc +0 -0
- package/hooks/_agent_registry.py +481 -0
- package/hooks/_analytics.py +291 -0
- package/hooks/_budget.py +31 -0
- package/hooks/_common.py +761 -0
- package/hooks/_compression_optimizer.py +119 -0
- package/hooks/_cost_ledger.py +176 -0
- package/hooks/_learnings.py +126 -0
- package/hooks/_memory.py +103 -0
- package/hooks/_post_write.py +46 -0
- package/hooks/_protected_context.py +150 -0
- package/hooks/_token_counter.py +221 -0
- package/hooks/branch_manager.py +255 -0
- package/hooks/budget_governor.py +326 -0
- package/hooks/circuit-breaker.py +270 -0
- package/hooks/compression_feedback.py +254 -0
- package/hooks/config-guard.py +193 -0
- package/hooks/context_pressure.py +119 -0
- package/hooks/credential_store.py +970 -0
- package/hooks/fetch-rate-limits.py +212 -0
- package/hooks/firewall.py +323 -0
- package/hooks/hashline-formatter-bridge.py +224 -0
- package/hooks/hashline-injector.py +273 -0
- package/hooks/hashline-validator.py +216 -0
- package/hooks/idle-detector.py +97 -0
- package/hooks/instructions-loaded.py +26 -0
- package/hooks/intentgate-keyword-detector.py +200 -0
- package/hooks/magic-keyword-router.py +195 -0
- package/hooks/policy_engine.py +767 -0
- package/hooks/post-tool-failure.py +19 -0
- package/hooks/post-write.py +233 -0
- package/hooks/pre-compact.py +470 -0
- package/hooks/pre-tool-inject.py +98 -0
- package/hooks/prompt-enhancer.py +879 -0
- package/hooks/quality-runner.py +191 -0
- package/hooks/query.py +512 -0
- package/hooks/secret-guard.py +120 -0
- package/hooks/secret_audit.py +144 -0
- package/hooks/security_validators.py +93 -0
- package/hooks/session-end-capture.py +505 -0
- package/hooks/session-start.py +261 -0
- package/hooks/setup_wizard.py +1101 -0
- package/hooks/shadow_manager.py +476 -0
- package/hooks/state_migration.py +228 -0
- package/hooks/stop-gate.py +7 -0
- package/hooks/stop_dispatcher.py +1259 -0
- package/hooks/tdd-gate.py +10 -0
- package/hooks/terms-guard.py +98 -0
- package/hooks/test-validator.py +462 -0
- package/hooks/test_generator_hook.py +123 -0
- package/hooks/todo-state-tracker.py +114 -0
- package/hooks/tool-ledger.py +165 -0
- package/hooks/trust_review.py +662 -0
- package/hooks/user-prompt-submit.py +12 -0
- package/hud/omg-hud.mjs +1571 -0
- package/lab/__init__.py +1 -0
- package/lab/__pycache__/__init__.cpython-313.pyc +0 -0
- package/lab/__pycache__/axolotl_adapter.cpython-313.pyc +0 -0
- package/lab/__pycache__/forge_runner.cpython-313.pyc +0 -0
- package/lab/__pycache__/gazebo_adapter.cpython-313.pyc +0 -0
- package/lab/__pycache__/isaac_gym_adapter.cpython-313.pyc +0 -0
- package/lab/__pycache__/mock_isaac_env.cpython-313.pyc +0 -0
- package/lab/__pycache__/pipeline.cpython-313.pyc +0 -0
- package/lab/__pycache__/policies.cpython-313.pyc +0 -0
- package/lab/__pycache__/pybullet_adapter.cpython-313.pyc +0 -0
- package/lab/axolotl_adapter.py +531 -0
- package/lab/forge_runner.py +103 -0
- package/lab/gazebo_adapter.py +168 -0
- package/lab/isaac_gym_adapter.py +190 -0
- package/lab/mock_isaac_env.py +47 -0
- package/lab/pipeline.py +712 -0
- package/lab/policies.py +52 -0
- package/lab/pybullet_adapter.py +192 -0
- package/package.json +61 -0
- package/plugins/README.md +78 -0
- package/plugins/__init__.py +1 -0
- package/plugins/__pycache__/__init__.cpython-313.pyc +0 -0
- package/plugins/advanced/commands/OMG-code-review.md +114 -0
- package/plugins/advanced/commands/OMG-deep-plan.md +266 -0
- package/plugins/advanced/commands/OMG-handoff.md +115 -0
- package/plugins/advanced/commands/OMG-learn.md +110 -0
- package/plugins/advanced/commands/OMG-maintainer.md +31 -0
- package/plugins/advanced/commands/OMG-ralph-start.md +43 -0
- package/plugins/advanced/commands/OMG-ralph-stop.md +23 -0
- package/plugins/advanced/commands/OMG-security-review.md +16 -0
- package/plugins/advanced/commands/OMG-sequential-thinking.md +20 -0
- package/plugins/advanced/commands/OMG-ship.md +46 -0
- package/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/plugins/advanced/commands/OMG:deep-plan.md +266 -0
- package/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/plugins/advanced/commands/OMG:learn.md +110 -0
- package/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/plugins/advanced/commands/OMG:ship.md +46 -0
- package/plugins/advanced/plugin.json +104 -0
- package/plugins/core/plugin.json +204 -0
- package/plugins/dephealth/__init__.py +0 -0
- package/plugins/dephealth/__pycache__/__init__.cpython-313.pyc +0 -0
- package/plugins/dephealth/__pycache__/cve_scanner.cpython-313.pyc +0 -0
- package/plugins/dephealth/__pycache__/license_checker.cpython-313.pyc +0 -0
- package/plugins/dephealth/__pycache__/manifest_detector.cpython-313.pyc +0 -0
- package/plugins/dephealth/__pycache__/vuln_analyzer.cpython-313.pyc +0 -0
- package/plugins/dephealth/cve_scanner.py +279 -0
- package/plugins/dephealth/license_checker.py +135 -0
- package/plugins/dephealth/manifest_detector.py +423 -0
- package/plugins/dephealth/vuln_analyzer.py +176 -0
- package/plugins/testgen/__init__.py +0 -0
- package/plugins/testgen/__pycache__/__init__.cpython-313.pyc +0 -0
- package/plugins/testgen/__pycache__/codamosa_engine.cpython-313.pyc +0 -0
- package/plugins/testgen/__pycache__/edge_case_synthesizer.cpython-313.pyc +0 -0
- package/plugins/testgen/__pycache__/framework_detector.cpython-313.pyc +0 -0
- package/plugins/testgen/__pycache__/skeleton_generator.cpython-313.pyc +0 -0
- package/plugins/testgen/codamosa_engine.py +402 -0
- package/plugins/testgen/edge_case_synthesizer.py +184 -0
- package/plugins/testgen/framework_detector.py +271 -0
- package/plugins/testgen/skeleton_generator.py +219 -0
- package/plugins/viz/__init__.py +0 -0
- package/plugins/viz/__pycache__/__init__.cpython-313.pyc +0 -0
- package/plugins/viz/__pycache__/ast_parser.cpython-313.pyc +0 -0
- package/plugins/viz/__pycache__/diagram_generator.cpython-313.pyc +0 -0
- package/plugins/viz/__pycache__/graph_builder.cpython-313.pyc +0 -0
- package/plugins/viz/__pycache__/native_parsers.cpython-313.pyc +0 -0
- package/plugins/viz/__pycache__/regex_parser.cpython-313.pyc +0 -0
- package/plugins/viz/ast_parser.py +139 -0
- package/plugins/viz/diagram_generator.py +192 -0
- package/plugins/viz/graph_builder.py +444 -0
- package/plugins/viz/native_parsers.py +259 -0
- package/plugins/viz/regex_parser.py +112 -0
- package/pyproject.toml +143 -0
- package/registry/__init__.py +1 -0
- package/registry/__pycache__/__init__.cpython-313.pyc +0 -0
- package/registry/__pycache__/approval_artifact.cpython-313.pyc +0 -0
- package/registry/__pycache__/verify_artifact.cpython-313.pyc +0 -0
- package/registry/approval_artifact.py +236 -0
- package/registry/bundles/algorithms.yaml +45 -0
- package/registry/bundles/api-twin.yaml +48 -0
- package/registry/bundles/ast-pack.yaml +80 -0
- package/registry/bundles/claim-judge.yaml +49 -0
- package/registry/bundles/control-plane.yaml +192 -0
- package/registry/bundles/data-lineage.yaml +47 -0
- package/registry/bundles/delta-classifier.yaml +47 -0
- package/registry/bundles/eval-gate.yaml +47 -0
- package/registry/bundles/hash-edit.yaml +73 -0
- package/registry/bundles/health.yaml +45 -0
- package/registry/bundles/hook-governor.yaml +101 -0
- package/registry/bundles/incident-replay.yaml +47 -0
- package/registry/bundles/lsp-pack.yaml +80 -0
- package/registry/bundles/mcp-fabric.yaml +53 -0
- package/registry/bundles/plan-council.yaml +56 -0
- package/registry/bundles/preflight.yaml +48 -0
- package/registry/bundles/proof-gate.yaml +49 -0
- package/registry/bundles/remote-supervisor.yaml +49 -0
- package/registry/bundles/robotics.yaml +45 -0
- package/registry/bundles/secure-worktree-pipeline.yaml +69 -0
- package/registry/bundles/security-check.yaml +50 -0
- package/registry/bundles/terminal-lane.yaml +61 -0
- package/registry/bundles/test-intent-lock.yaml +49 -0
- package/registry/bundles/tracebank.yaml +47 -0
- package/registry/bundles/vision.yaml +45 -0
- package/registry/omg-capability.schema.json +378 -0
- package/registry/policy-packs/airgapped.lock.json +11 -0
- package/registry/policy-packs/airgapped.signature.json +10 -0
- package/registry/policy-packs/airgapped.yaml +16 -0
- package/registry/policy-packs/fintech.lock.json +11 -0
- package/registry/policy-packs/fintech.signature.json +10 -0
- package/registry/policy-packs/fintech.yaml +15 -0
- package/registry/policy-packs/locked-prod.lock.json +11 -0
- package/registry/policy-packs/locked-prod.signature.json +10 -0
- package/registry/policy-packs/locked-prod.yaml +18 -0
- package/registry/trusted_signers.json +44 -0
- package/registry/verify_artifact.py +493 -0
- package/runtime/__init__.py +36 -0
- package/runtime/__pycache__/__init__.cpython-313.pyc +0 -0
- package/runtime/__pycache__/adoption.cpython-313.pyc +0 -0
- package/runtime/__pycache__/agent_selector.cpython-313.pyc +0 -0
- package/runtime/__pycache__/api_twin.cpython-313.pyc +0 -0
- package/runtime/__pycache__/architecture_signal.cpython-313.pyc +0 -0
- package/runtime/__pycache__/artifact_parsers.cpython-313.pyc +0 -0
- package/runtime/__pycache__/asset_loader.cpython-313.pyc +0 -0
- package/runtime/__pycache__/background_verification.cpython-313.pyc +0 -0
- package/runtime/__pycache__/budget_envelopes.cpython-313.pyc +0 -0
- package/runtime/__pycache__/business_workflow.cpython-313.pyc +0 -0
- package/runtime/__pycache__/canonical_surface.cpython-313.pyc +0 -0
- package/runtime/__pycache__/canonical_taxonomy.cpython-313.pyc +0 -0
- package/runtime/__pycache__/claim_judge.cpython-313.pyc +0 -0
- package/runtime/__pycache__/cli_provider.cpython-313.pyc +0 -0
- package/runtime/__pycache__/compat.cpython-313.pyc +0 -0
- package/runtime/__pycache__/complexity_scorer.cpython-313.pyc +0 -0
- package/runtime/__pycache__/compliance_governor.cpython-313.pyc +0 -0
- package/runtime/__pycache__/config_transaction.cpython-313.pyc +0 -0
- package/runtime/__pycache__/context_compiler.cpython-313.pyc +0 -0
- package/runtime/__pycache__/context_engine.cpython-313.pyc +0 -0
- package/runtime/__pycache__/context_limits.cpython-313.pyc +0 -0
- package/runtime/__pycache__/contract_compiler.cpython-313.pyc +0 -0
- package/runtime/__pycache__/custom_agent_loader.cpython-313.pyc +0 -0
- package/runtime/__pycache__/data_lineage.cpython-313.pyc +0 -0
- package/runtime/__pycache__/defense_state.cpython-313.pyc +0 -0
- package/runtime/__pycache__/delta_classifier.cpython-313.pyc +0 -0
- package/runtime/__pycache__/dispatcher.cpython-313.pyc +0 -0
- package/runtime/__pycache__/doc_generator.cpython-313.pyc +0 -0
- package/runtime/__pycache__/domain_packs.cpython-313.pyc +0 -0
- package/runtime/__pycache__/ecosystem.cpython-313.pyc +0 -0
- package/runtime/__pycache__/equalizer.cpython-313.pyc +0 -0
- package/runtime/__pycache__/eval_gate.cpython-313.pyc +0 -0
- package/runtime/__pycache__/evidence_narrator.cpython-313.pyc +0 -0
- package/runtime/__pycache__/evidence_query.cpython-313.pyc +0 -0
- package/runtime/__pycache__/evidence_registry.cpython-313.pyc +0 -0
- package/runtime/__pycache__/evidence_requirements.cpython-313.pyc +0 -0
- package/runtime/__pycache__/exec_kernel.cpython-313.pyc +0 -0
- package/runtime/__pycache__/explainer_formatter.cpython-313.pyc +0 -0
- package/runtime/__pycache__/feature_registry.cpython-313.pyc +0 -0
- package/runtime/__pycache__/forge_agents.cpython-313.pyc +0 -0
- package/runtime/__pycache__/forge_contracts.cpython-313.pyc +0 -0
- package/runtime/__pycache__/forge_domains.cpython-313.pyc +0 -0
- package/runtime/__pycache__/forge_run_id.cpython-313.pyc +0 -0
- package/runtime/__pycache__/github_integration.cpython-313.pyc +0 -0
- package/runtime/__pycache__/github_review_bot.cpython-313.pyc +0 -0
- package/runtime/__pycache__/github_review_contract.cpython-313.pyc +0 -0
- package/runtime/__pycache__/github_review_formatter.cpython-313.pyc +0 -0
- package/runtime/__pycache__/guide_assert.cpython-313.pyc +0 -0
- package/runtime/__pycache__/hook_governor.cpython-313.pyc +0 -0
- package/runtime/__pycache__/host_parity.cpython-313.pyc +0 -0
- package/runtime/__pycache__/incident_replay.cpython-313.pyc +0 -0
- package/runtime/__pycache__/install_planner.cpython-313.pyc +0 -0
- package/runtime/__pycache__/interaction_journal.cpython-313.pyc +0 -0
- package/runtime/__pycache__/issue_surface.cpython-313.pyc +0 -0
- package/runtime/__pycache__/legacy_compat.cpython-313.pyc +0 -0
- package/runtime/__pycache__/mcp_config_writers.cpython-313.pyc +0 -0
- package/runtime/__pycache__/mcp_lifecycle.cpython-313.pyc +0 -0
- package/runtime/__pycache__/mcp_memory_server.cpython-313.pyc +0 -0
- package/runtime/__pycache__/memory_store.cpython-313.pyc +0 -0
- package/runtime/__pycache__/merge_writer.cpython-313.pyc +0 -0
- package/runtime/__pycache__/music_omr_testbed.cpython-313.pyc +0 -0
- package/runtime/__pycache__/mutation_gate.cpython-313.pyc +0 -0
- package/runtime/__pycache__/omc_compat.cpython-313.pyc +0 -0
- package/runtime/__pycache__/omg_browser_cli.cpython-313.pyc +0 -0
- package/runtime/__pycache__/omg_mcp_server.cpython-313.pyc +0 -0
- package/runtime/__pycache__/opus_plan.cpython-313.pyc +0 -0
- package/runtime/__pycache__/playwright_adapter.cpython-313.pyc +0 -0
- package/runtime/__pycache__/playwright_pack.cpython-313.pyc +0 -0
- package/runtime/__pycache__/plugin_diagnostics.cpython-313.pyc +0 -0
- package/runtime/__pycache__/plugin_interop.cpython-313.pyc +0 -0
- package/runtime/__pycache__/policy_pack_loader.cpython-313.pyc +0 -0
- package/runtime/__pycache__/preflight.cpython-313.pyc +0 -0
- package/runtime/__pycache__/profile_io.cpython-313.pyc +0 -0
- package/runtime/__pycache__/prompt_compiler.cpython-313.pyc +0 -0
- package/runtime/__pycache__/proof_chain.cpython-313.pyc +0 -0
- package/runtime/__pycache__/proof_gate.cpython-313.pyc +0 -0
- package/runtime/__pycache__/provider_parity_eval.cpython-313.pyc +0 -0
- package/runtime/__pycache__/release_artifact_audit.cpython-313.pyc +0 -0
- package/runtime/__pycache__/release_run_coordinator.cpython-313.pyc +0 -0
- package/runtime/__pycache__/release_surface_compiler.cpython-313.pyc +0 -0
- package/runtime/__pycache__/release_surface_registry.cpython-313.pyc +0 -0
- package/runtime/__pycache__/release_surfaces.cpython-313.pyc +0 -0
- package/runtime/__pycache__/remote_supervisor.cpython-313.pyc +0 -0
- package/runtime/__pycache__/repro_pack.cpython-313.pyc +0 -0
- package/runtime/__pycache__/rollback_manifest.cpython-313.pyc +0 -0
- package/runtime/__pycache__/router_critics.cpython-313.pyc +0 -0
- package/runtime/__pycache__/router_executor.cpython-313.pyc +0 -0
- package/runtime/__pycache__/router_selector.cpython-313.pyc +0 -0
- package/runtime/__pycache__/runtime_contracts.cpython-313.pyc +0 -0
- package/runtime/__pycache__/runtime_profile.cpython-313.pyc +0 -0
- package/runtime/__pycache__/security_check.cpython-313.pyc +0 -0
- package/runtime/__pycache__/session_health.cpython-313.pyc +0 -0
- package/runtime/__pycache__/skill_evolution.cpython-313.pyc +0 -0
- package/runtime/__pycache__/skill_registry.cpython-313.pyc +0 -0
- package/runtime/__pycache__/subagent_dispatcher.cpython-313.pyc +0 -0
- package/runtime/__pycache__/subscription_tiers.cpython-313.pyc +0 -0
- package/runtime/__pycache__/team_router.cpython-313.pyc +0 -0
- package/runtime/__pycache__/test_intent_lock.cpython-313-pytest-9.0.2.pyc +0 -0
- package/runtime/__pycache__/test_intent_lock.cpython-313.pyc +0 -0
- package/runtime/__pycache__/tmux_session_manager.cpython-313.pyc +0 -0
- package/runtime/__pycache__/tool_fabric.cpython-313.pyc +0 -0
- package/runtime/__pycache__/tool_plan_gate.cpython-313.pyc +0 -0
- package/runtime/__pycache__/tool_relevance.cpython-313.pyc +0 -0
- package/runtime/__pycache__/tracebank.cpython-313.pyc +0 -0
- package/runtime/__pycache__/untrusted_content.cpython-313.pyc +0 -0
- package/runtime/__pycache__/validate.cpython-313.pyc +0 -0
- package/runtime/__pycache__/verdict_schema.cpython-313.pyc +0 -0
- package/runtime/__pycache__/verification_controller.cpython-313.pyc +0 -0
- package/runtime/__pycache__/verification_loop.cpython-313.pyc +0 -0
- package/runtime/__pycache__/vision_artifacts.cpython-313.pyc +0 -0
- package/runtime/__pycache__/vision_cache.cpython-313.pyc +0 -0
- package/runtime/__pycache__/vision_jobs.cpython-313.pyc +0 -0
- package/runtime/__pycache__/worker_watchdog.cpython-313.pyc +0 -0
- package/runtime/adapters/__init__.py +13 -0
- package/runtime/adapters/__pycache__/__init__.cpython-313.pyc +0 -0
- package/runtime/adapters/__pycache__/claude.cpython-313.pyc +0 -0
- package/runtime/adapters/__pycache__/gpt.cpython-313.pyc +0 -0
- package/runtime/adapters/__pycache__/local.cpython-313.pyc +0 -0
- package/runtime/adapters/claude.py +63 -0
- package/runtime/adapters/gpt.py +56 -0
- package/runtime/adapters/local.py +56 -0
- package/runtime/adoption.py +280 -0
- package/runtime/api_twin.py +450 -0
- package/runtime/architecture_signal.py +226 -0
- package/runtime/artifact_parsers.py +161 -0
- package/runtime/asset_loader.py +62 -0
- package/runtime/background_verification.py +178 -0
- package/runtime/budget_envelopes.py +398 -0
- package/runtime/business_workflow.py +234 -0
- package/runtime/canonical_surface.py +53 -0
- package/runtime/canonical_taxonomy.py +27 -0
- package/runtime/claim_judge.py +648 -0
- package/runtime/cli_provider.py +105 -0
- package/runtime/compat.py +2222 -0
- package/runtime/complexity_scorer.py +148 -0
- package/runtime/compliance_governor.py +505 -0
- package/runtime/config_transaction.py +304 -0
- package/runtime/context_compiler.py +131 -0
- package/runtime/context_engine.py +708 -0
- package/runtime/context_limits.py +363 -0
- package/runtime/contract_compiler.py +3664 -0
- package/runtime/custom_agent_loader.py +366 -0
- package/runtime/data_lineage.py +244 -0
- package/runtime/defense_state.py +261 -0
- package/runtime/delta_classifier.py +231 -0
- package/runtime/dispatcher.py +47 -0
- package/runtime/doc_generator.py +319 -0
- package/runtime/domain_packs.py +75 -0
- package/runtime/ecosystem.py +371 -0
- package/runtime/equalizer.py +268 -0
- package/runtime/eval_gate.py +96 -0
- package/runtime/evidence_narrator.py +147 -0
- package/runtime/evidence_query.py +303 -0
- package/runtime/evidence_registry.py +16 -0
- package/runtime/evidence_requirements.py +157 -0
- package/runtime/exec_kernel.py +267 -0
- package/runtime/explainer_formatter.py +82 -0
- package/runtime/feature_registry.py +109 -0
- package/runtime/forge_agents.py +915 -0
- package/runtime/forge_contracts.py +519 -0
- package/runtime/forge_domains.py +68 -0
- package/runtime/forge_run_id.py +86 -0
- package/runtime/guide_assert.py +135 -0
- package/runtime/hook_governor.py +156 -0
- package/runtime/host_parity.py +373 -0
- package/runtime/incident_replay.py +310 -0
- package/runtime/install_planner.py +617 -0
- package/runtime/interaction_journal.py +566 -0
- package/runtime/issue_surface.py +472 -0
- package/runtime/legacy_compat.py +7 -0
- package/runtime/mcp_config_writers.py +360 -0
- package/runtime/mcp_lifecycle.py +175 -0
- package/runtime/mcp_memory_server.py +220 -0
- package/runtime/memory_parsers/__init__.py +0 -0
- package/runtime/memory_parsers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/__pycache__/chatgpt_parser.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/__pycache__/claude_import.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/__pycache__/export.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/__pycache__/gemini_import.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/__pycache__/kimi_import.cpython-313.pyc +0 -0
- package/runtime/memory_parsers/chatgpt_parser.py +257 -0
- package/runtime/memory_parsers/claude_import.py +107 -0
- package/runtime/memory_parsers/export.py +97 -0
- package/runtime/memory_parsers/gemini_import.py +91 -0
- package/runtime/memory_parsers/kimi_import.py +91 -0
- package/runtime/memory_store.py +1182 -0
- package/runtime/merge_writer.py +445 -0
- package/runtime/music_omr_testbed.py +336 -0
- package/runtime/mutation_gate.py +320 -0
- package/runtime/omc_compat.py +7 -0
- package/runtime/omg_browser_cli.py +95 -0
- package/runtime/omg_compat_contract_snapshot.json +936 -0
- package/runtime/omg_contract_snapshot.json +936 -0
- package/runtime/omg_mcp_server.py +306 -0
- package/runtime/playwright_adapter.py +39 -0
- package/runtime/playwright_pack.py +253 -0
- package/runtime/plugin_diagnostics.py +308 -0
- package/runtime/plugin_interop.py +1060 -0
- package/runtime/policy_pack_loader.py +147 -0
- package/runtime/preflight.py +135 -0
- package/runtime/profile_io.py +328 -0
- package/runtime/proof_chain.py +472 -0
- package/runtime/proof_gate.py +442 -0
- package/runtime/provider_parity_eval.py +109 -0
- package/runtime/providers/__init__.py +0 -0
- package/runtime/providers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/runtime/providers/__pycache__/codex_provider.cpython-313.pyc +0 -0
- package/runtime/providers/__pycache__/gemini_provider.cpython-313.pyc +0 -0
- package/runtime/providers/__pycache__/kimi_provider.cpython-313.pyc +0 -0
- package/runtime/providers/__pycache__/opencode_provider.cpython-313.pyc +0 -0
- package/runtime/providers/codex_provider.py +129 -0
- package/runtime/providers/gemini_provider.py +143 -0
- package/runtime/providers/kimi_provider.py +167 -0
- package/runtime/providers/opencode_provider.py +99 -0
- package/runtime/release_artifact_audit.py +556 -0
- package/runtime/release_run_coordinator.py +574 -0
- package/runtime/release_surface_compiler.py +643 -0
- package/runtime/release_surface_registry.py +283 -0
- package/runtime/release_surfaces.py +320 -0
- package/runtime/remote_supervisor.py +79 -0
- package/runtime/repro_pack.py +398 -0
- package/runtime/rollback_manifest.py +143 -0
- package/runtime/router_critics.py +229 -0
- package/runtime/router_executor.py +142 -0
- package/runtime/router_selector.py +99 -0
- package/runtime/runtime_contracts.py +292 -0
- package/runtime/runtime_profile.py +133 -0
- package/runtime/security_check.py +1094 -0
- package/runtime/session_health.py +546 -0
- package/runtime/skill_evolution.py +221 -0
- package/runtime/skill_registry.py +53 -0
- package/runtime/subagent_dispatcher.py +604 -0
- package/runtime/subscription_tiers.py +258 -0
- package/runtime/team_router.py +1399 -0
- package/runtime/test_intent_lock.py +543 -0
- package/runtime/tmux_session_manager.py +172 -0
- package/runtime/tool_fabric.py +570 -0
- package/runtime/tool_plan_gate.py +460 -0
- package/runtime/tracebank.py +125 -0
- package/runtime/untrusted_content.py +360 -0
- package/runtime/validate.py +293 -0
- package/runtime/verdict_schema.py +198 -0
- package/runtime/verification_controller.py +235 -0
- package/runtime/verification_loop.py +73 -0
- package/runtime/vision_artifacts.py +31 -0
- package/runtime/vision_cache.py +38 -0
- package/runtime/vision_jobs.py +92 -0
- package/runtime/worker_watchdog.py +526 -0
- package/scripts/__pycache__/audit-published-artifact.cpython-313.pyc +0 -0
- package/scripts/__pycache__/check-doc-parity.cpython-313.pyc +0 -0
- package/scripts/__pycache__/check-omg-standalone-clean.cpython-313.pyc +0 -0
- package/scripts/__pycache__/github_review_helpers.cpython-313.pyc +0 -0
- package/scripts/__pycache__/omg.cpython-313.pyc +0 -0
- package/scripts/__pycache__/prepare-release-proof-fixtures.cpython-313.pyc +0 -0
- package/scripts/__pycache__/sync-release-identity.cpython-313.pyc +0 -0
- package/scripts/__pycache__/validate-release-identity.cpython-313.pyc +0 -0
- package/scripts/audit-published-artifact.py +59 -0
- package/scripts/check-omg-compat-contract-snapshot.py +137 -0
- package/scripts/check-omg-contract-snapshot.py +12 -0
- package/scripts/check-omg-public-ready.py +273 -0
- package/scripts/check-omg-standalone-clean.py +133 -0
- package/scripts/emit_host_parity.py +72 -0
- package/scripts/legacy_to_omg_migrate.py +29 -0
- package/scripts/migrate-legacy.py +464 -0
- package/scripts/omc_to_omg_migrate.py +12 -0
- package/scripts/omg.py +2962 -0
- package/scripts/pre-release-check.sh +38 -0
- package/scripts/prepare-release-proof-fixtures.py +602 -0
- package/scripts/print-canonical-version.py +80 -0
- package/scripts/settings-merge.py +289 -0
- package/scripts/sync-release-identity.py +481 -0
- package/scripts/validate-release-identity.py +632 -0
- package/scripts/verify-no-omc.sh +5 -0
- package/scripts/verify-standalone.sh +35 -0
- package/settings.json +751 -0
- package/tools/__init__.py +2 -0
- package/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- package/tools/__pycache__/browser_consent.cpython-313.pyc +0 -0
- package/tools/__pycache__/browser_stealth.cpython-313.pyc +0 -0
- package/tools/__pycache__/browser_tool.cpython-313.pyc +0 -0
- package/tools/__pycache__/changelog_generator.cpython-313.pyc +0 -0
- package/tools/__pycache__/commit_splitter.cpython-313.pyc +0 -0
- package/tools/__pycache__/config_discovery.cpython-313.pyc +0 -0
- package/tools/__pycache__/config_merger.cpython-313.pyc +0 -0
- package/tools/__pycache__/dashboard_generator.cpython-313.pyc +0 -0
- package/tools/__pycache__/git_inspector.cpython-313.pyc +0 -0
- package/tools/__pycache__/lsp_client.cpython-313.pyc +0 -0
- package/tools/__pycache__/lsp_operations.cpython-313.pyc +0 -0
- package/tools/__pycache__/pr_generator.cpython-313.pyc +0 -0
- package/tools/__pycache__/python_repl.cpython-313.pyc +0 -0
- package/tools/__pycache__/python_sandbox.cpython-313.pyc +0 -0
- package/tools/__pycache__/session_snapshot.cpython-313.pyc +0 -0
- package/tools/__pycache__/ssh_manager.cpython-313.pyc +0 -0
- package/tools/__pycache__/theme_engine.cpython-313.pyc +0 -0
- package/tools/__pycache__/theme_selector.cpython-313.pyc +0 -0
- package/tools/__pycache__/web_search.cpython-313.pyc +0 -0
- package/tools/browser_consent.py +289 -0
- package/tools/browser_stealth.py +481 -0
- package/tools/browser_tool.py +448 -0
- package/tools/changelog_generator.py +347 -0
- package/tools/commit_splitter.py +749 -0
- package/tools/config_discovery.py +151 -0
- package/tools/config_merger.py +449 -0
- package/tools/dashboard_generator.py +300 -0
- package/tools/git_inspector.py +298 -0
- package/tools/lsp_client.py +275 -0
- package/tools/lsp_discovery.py +231 -0
- package/tools/lsp_operations.py +392 -0
- package/tools/pr_generator.py +404 -0
- package/tools/python_repl.py +712 -0
- package/tools/python_sandbox.py +768 -0
- package/tools/search_providers/__init__.py +77 -0
- package/tools/search_providers/__pycache__/__init__.cpython-313.pyc +0 -0
- package/tools/search_providers/__pycache__/brave.cpython-313.pyc +0 -0
- package/tools/search_providers/__pycache__/exa.cpython-313.pyc +0 -0
- package/tools/search_providers/__pycache__/jina.cpython-313.pyc +0 -0
- package/tools/search_providers/__pycache__/perplexity.cpython-313.pyc +0 -0
- package/tools/search_providers/__pycache__/synthetic.cpython-313.pyc +0 -0
- package/tools/search_providers/brave.py +115 -0
- package/tools/search_providers/exa.py +116 -0
- package/tools/search_providers/jina.py +104 -0
- package/tools/search_providers/perplexity.py +139 -0
- package/tools/search_providers/synthetic.py +74 -0
- package/tools/session_snapshot.py +851 -0
- package/tools/ssh_manager.py +912 -0
- package/tools/theme_engine.py +296 -0
- package/tools/theme_selector.py +137 -0
- package/tools/web_search.py +675 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Scan project dependencies for CVEs, license issues, and outdated packages."
|
|
3
|
+
allowed-tools: Read, Bash(python*:*), Grep
|
|
4
|
+
argument-hint: "[cves|licenses|outdated]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:deps — Dependency Health
|
|
8
|
+
|
|
9
|
+
Scan project dependencies for CVEs, license compatibility issues, and outdated packages.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/OMG:deps
|
|
15
|
+
/OMG:deps cves
|
|
16
|
+
/OMG:deps licenses
|
|
17
|
+
/OMG:deps outdated
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Sub-Commands
|
|
21
|
+
|
|
22
|
+
### `/OMG:deps` (default)
|
|
23
|
+
|
|
24
|
+
Full dependency health report combining CVE scan, license check, and outdated package detection.
|
|
25
|
+
|
|
26
|
+
Detects manifest files (package.json, requirements.txt, Cargo.toml, go.mod, Gemfile, pyproject.toml), then runs all three checks and prints a unified summary.
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
from plugins.dephealth.manifest_detector import detect_manifests
|
|
30
|
+
from plugins.dephealth.cve_scanner import scan_for_cves
|
|
31
|
+
from plugins.dephealth.license_checker import check_license_compatibility
|
|
32
|
+
from plugins.dephealth.vuln_analyzer import analyze_reachability
|
|
33
|
+
|
|
34
|
+
deps = detect_manifests(".")
|
|
35
|
+
dep_dicts = [{"name": p.name, "version": p.version, "ecosystem": p.ecosystem} for p in deps.packages]
|
|
36
|
+
|
|
37
|
+
# CVE scan
|
|
38
|
+
cve_result = scan_for_cves(dep_dicts, ".")
|
|
39
|
+
reachability = analyze_reachability(cve_result, ".")
|
|
40
|
+
|
|
41
|
+
# License check
|
|
42
|
+
license_result = check_license_compatibility(dep_dicts, ".")
|
|
43
|
+
|
|
44
|
+
# Summary
|
|
45
|
+
print(f"Manifests: {len(deps.manifests)} detected")
|
|
46
|
+
print(f"Packages: {len(deps.packages)} total")
|
|
47
|
+
print(f"CVEs found: {cve_result.get('total_vulns', 0)}")
|
|
48
|
+
print(f" Critical: {cve_result.get('by_severity', {}).get('CRITICAL', 0)}")
|
|
49
|
+
print(f" High: {cve_result.get('by_severity', {}).get('HIGH', 0)}")
|
|
50
|
+
print(f"Reachable: {sum(1 for v in reachability.get('results', []) if v.get('reachability') == 'direct')}")
|
|
51
|
+
print(f"License issues: {license_result.get('issue_count', 0)}")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### `/OMG:deps cves`
|
|
55
|
+
|
|
56
|
+
CVE scan results only. Queries the OSV batch API for known vulnerabilities in project dependencies.
|
|
57
|
+
|
|
58
|
+
Results include severity classification (CRITICAL/HIGH/MODERATE/LOW) and reachability analysis showing whether vulnerable code paths are actually imported.
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from plugins.dephealth.manifest_detector import detect_manifests
|
|
62
|
+
from plugins.dephealth.cve_scanner import scan_for_cves
|
|
63
|
+
from plugins.dephealth.vuln_analyzer import analyze_reachability
|
|
64
|
+
|
|
65
|
+
deps = detect_manifests(".")
|
|
66
|
+
dep_dicts = [{"name": p.name, "version": p.version, "ecosystem": p.ecosystem} for p in deps.packages]
|
|
67
|
+
|
|
68
|
+
cve_result = scan_for_cves(dep_dicts, ".")
|
|
69
|
+
reachability = analyze_reachability(cve_result, ".")
|
|
70
|
+
|
|
71
|
+
print(f"Packages scanned: {len(dep_dicts)}")
|
|
72
|
+
print(f"Vulnerabilities: {cve_result.get('total_vulns', 0)}")
|
|
73
|
+
print()
|
|
74
|
+
|
|
75
|
+
for vuln in cve_result.get("vulnerabilities", []):
|
|
76
|
+
reach = next((r for r in reachability.get("results", []) if r.get("cve_id") == vuln.get("id")), {})
|
|
77
|
+
reach_label = reach.get("reachability", "unknown")
|
|
78
|
+
risk = reach.get("risk", "unknown")
|
|
79
|
+
print(f" [{vuln.get('severity', 'UNKNOWN')}] {vuln.get('id')}")
|
|
80
|
+
print(f" Package: {vuln.get('package')}")
|
|
81
|
+
print(f" Fixed in: {vuln.get('fixed_version', 'N/A')}")
|
|
82
|
+
print(f" Reachability: {reach_label}")
|
|
83
|
+
print(f" Risk: {risk}")
|
|
84
|
+
if reach.get("recommendation"):
|
|
85
|
+
print(f" Action: {reach['recommendation']}")
|
|
86
|
+
print()
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `/OMG:deps licenses`
|
|
90
|
+
|
|
91
|
+
License compatibility report only. Checks each dependency's license against a tiered compatibility model.
|
|
92
|
+
|
|
93
|
+
Tiers: permissive (MIT, Apache-2.0, BSD) > weak-copyleft (LGPL, MPL) > copyleft (GPL, AGPL). Flags packages with copyleft or unknown licenses.
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from plugins.dephealth.manifest_detector import detect_manifests
|
|
97
|
+
from plugins.dephealth.license_checker import check_license_compatibility
|
|
98
|
+
|
|
99
|
+
deps = detect_manifests(".")
|
|
100
|
+
dep_dicts = [{"name": p.name, "version": p.version, "ecosystem": p.ecosystem} for p in deps.packages]
|
|
101
|
+
|
|
102
|
+
result = check_license_compatibility(dep_dicts, ".")
|
|
103
|
+
|
|
104
|
+
print(f"Packages checked: {len(dep_dicts)}")
|
|
105
|
+
print(f"License issues: {result.get('issue_count', 0)}")
|
|
106
|
+
print()
|
|
107
|
+
|
|
108
|
+
for pkg in result.get("packages", []):
|
|
109
|
+
tier = pkg.get("tier", "unknown")
|
|
110
|
+
marker = "!!" if tier in ("copyleft", "unknown") else " "
|
|
111
|
+
print(f" {marker} {pkg.get('name')}: {pkg.get('license', 'UNKNOWN')} ({tier})")
|
|
112
|
+
|
|
113
|
+
if result.get("issues"):
|
|
114
|
+
print()
|
|
115
|
+
print("Issues:")
|
|
116
|
+
for issue in result["issues"]:
|
|
117
|
+
print(f" - {issue}")
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### `/OMG:deps outdated`
|
|
121
|
+
|
|
122
|
+
List packages with newer versions available. Compares locked versions against latest published versions.
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
from plugins.dephealth.manifest_detector import detect_manifests
|
|
126
|
+
|
|
127
|
+
deps = detect_manifests(".")
|
|
128
|
+
|
|
129
|
+
print(f"Manifests: {len(deps.manifests)}")
|
|
130
|
+
print(f"Packages: {len(deps.packages)}")
|
|
131
|
+
print()
|
|
132
|
+
|
|
133
|
+
print(f"{'Package':<40} {'Current':>12} {'Ecosystem':<12}")
|
|
134
|
+
print("-" * 66)
|
|
135
|
+
for pkg in deps.packages:
|
|
136
|
+
version = pkg.version or "unpinned"
|
|
137
|
+
print(f" {pkg.name:<38} {version:>12} {pkg.ecosystem:<12}")
|
|
138
|
+
|
|
139
|
+
print()
|
|
140
|
+
print("Note: Outdated detection requires network access to registry APIs.")
|
|
141
|
+
print("Packages listed above are from detected manifests.")
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Feature Flag
|
|
145
|
+
|
|
146
|
+
- **Flag name**: `OMG_DEP_HEALTH_ENABLED`
|
|
147
|
+
- **Default**: `False` (disabled)
|
|
148
|
+
- **Enable**: `export OMG_DEP_HEALTH_ENABLED=1`
|
|
149
|
+
|
|
150
|
+
Or set in `settings.json`:
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"_omg": {
|
|
155
|
+
"features": {
|
|
156
|
+
"DEP_HEALTH": true
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Output Example
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
============================================================
|
|
166
|
+
OMG Dependency Health Report
|
|
167
|
+
============================================================
|
|
168
|
+
|
|
169
|
+
Manifests: 3 detected
|
|
170
|
+
- package.json (npm)
|
|
171
|
+
- requirements.txt (pip)
|
|
172
|
+
- pyproject.toml (pip)
|
|
173
|
+
|
|
174
|
+
Packages: 87 total
|
|
175
|
+
|
|
176
|
+
CVEs found: 4
|
|
177
|
+
Critical: 1
|
|
178
|
+
High: 2
|
|
179
|
+
Moderate: 1
|
|
180
|
+
Low: 0
|
|
181
|
+
|
|
182
|
+
Reachable: 2 of 4 (direct import detected)
|
|
183
|
+
|
|
184
|
+
License issues: 1
|
|
185
|
+
!! node-ipc: UNKNOWN (unknown)
|
|
186
|
+
|
|
187
|
+
============================================================
|
|
188
|
+
|
|
189
|
+
[CRITICAL] GHSA-xxxx-yyyy-zzzz
|
|
190
|
+
Package: lodash@4.17.20
|
|
191
|
+
Fixed in: 4.17.21
|
|
192
|
+
Reachability: direct
|
|
193
|
+
Risk: high
|
|
194
|
+
Action: Upgrade lodash to >=4.17.21
|
|
195
|
+
|
|
196
|
+
[HIGH] GHSA-aaaa-bbbb-cccc
|
|
197
|
+
Package: requests@2.25.0
|
|
198
|
+
Fixed in: 2.31.0
|
|
199
|
+
Reachability: transitive
|
|
200
|
+
Risk: medium
|
|
201
|
+
Action: Upgrade requests to >=2.31.0
|
|
202
|
+
|
|
203
|
+
============================================================
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Supported Manifests
|
|
207
|
+
|
|
208
|
+
| Manifest | Ecosystem | Parser |
|
|
209
|
+
|----------|-----------|--------|
|
|
210
|
+
| `package.json` | npm | JSON dependencies + devDependencies |
|
|
211
|
+
| `requirements.txt` | pip | PEP 508 lines |
|
|
212
|
+
| `pyproject.toml` | pip | `[project.dependencies]` + `[tool.poetry.dependencies]` |
|
|
213
|
+
| `Cargo.toml` | crates.io | `[dependencies]` + `[dev-dependencies]` |
|
|
214
|
+
| `go.mod` | Go | `require` directives |
|
|
215
|
+
| `Gemfile` | RubyGems | `gem` declarations |
|
|
216
|
+
|
|
217
|
+
## Safety
|
|
218
|
+
|
|
219
|
+
- **Read-only**: All sub-commands only read manifest files and query external APIs
|
|
220
|
+
- **Feature-gated**: Requires `DEP_HEALTH` flag enabled
|
|
221
|
+
- **No mutations**: Never modifies dependency files, lock files, or project code
|
|
222
|
+
- **Crash-isolated**: All operations exit 0 on failure (graceful error handling)
|
|
223
|
+
- **Cache**: CVE scan results cached to `.omg/state/dephealth/cve-cache.json` (1-hour TTL)
|
|
224
|
+
- **Network**: `/deps cves` requires internet access for OSV API queries
|
|
225
|
+
|
|
226
|
+
## API
|
|
227
|
+
|
|
228
|
+
```python
|
|
229
|
+
from plugins.dephealth.manifest_detector import detect_manifests, DependencyList
|
|
230
|
+
from plugins.dephealth.cve_scanner import scan_for_cves
|
|
231
|
+
from plugins.dephealth.license_checker import check_license_compatibility
|
|
232
|
+
from plugins.dephealth.vuln_analyzer import analyze_reachability
|
|
233
|
+
|
|
234
|
+
# Detect all manifest files and parse dependencies
|
|
235
|
+
deps: DependencyList = detect_manifests(".")
|
|
236
|
+
|
|
237
|
+
# Convert to dicts for scanner/checker APIs
|
|
238
|
+
dep_dicts = [{"name": p.name, "version": p.version, "ecosystem": p.ecosystem} for p in deps.packages]
|
|
239
|
+
|
|
240
|
+
# CVE scan via OSV batch API
|
|
241
|
+
cve_result = scan_for_cves(dep_dicts, ".")
|
|
242
|
+
|
|
243
|
+
# Reachability analysis (import tracing)
|
|
244
|
+
reachability = analyze_reachability(cve_result, ".")
|
|
245
|
+
|
|
246
|
+
# License compatibility check
|
|
247
|
+
license_result = check_license_compatibility(dep_dicts, ".")
|
|
248
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Diagnose plugin interoperability and conflict status across OMG-supported hosts
|
|
3
|
+
allowed-tools: Bash(python3:*), Read, Grep, Glob
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /OMG:diagnose-plugins
|
|
7
|
+
|
|
8
|
+
Run `python3 scripts/omg.py diagnose-plugins --format json` and report the diagnostics result.
|
|
9
|
+
|
|
10
|
+
## Output Schema
|
|
11
|
+
|
|
12
|
+
- `schema`: `PluginDiagnosticsResult`
|
|
13
|
+
- `status`: `ok` | `warn` | `error`
|
|
14
|
+
- `records`: discovered plugin records
|
|
15
|
+
- `conflicts`: classified conflict entries
|
|
16
|
+
- `approval_states`: plugin approval states by plugin id
|
|
17
|
+
- `summary`: totals for records, conflicts, and severity buckets
|
|
18
|
+
- `next_actions`: top recommended remediations
|
|
19
|
+
- `elapsed_ms`: total diagnostic runtime
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
python3 scripts/omg.py diagnose-plugins --format json
|
|
25
|
+
python3 scripts/omg.py diagnose-plugins --format text
|
|
26
|
+
python3 scripts/omg.py diagnose-plugins approve --source mcp:filesystem --host claude --reason "trusted" --format json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Notes
|
|
30
|
+
|
|
31
|
+
- Base diagnostics command is read-only.
|
|
32
|
+
- Static mode is default; live probing must be explicit via `--live`.
|
|
33
|
+
- `approve` currently returns a pending stub response.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Canonical install and runtime verification for OMG
|
|
3
|
+
allowed-tools: Bash(python3:*), Read, Grep, Glob
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /OMG:doctor
|
|
7
|
+
|
|
8
|
+
Run `python3 scripts/omg.py doctor --format json` and report results.
|
|
9
|
+
|
|
10
|
+
## Required Checks
|
|
11
|
+
|
|
12
|
+
1. **python_version**: Python >= 3.10 installed and active.
|
|
13
|
+
2. **fastmcp**: `fastmcp` package importable (needed for MCP server).
|
|
14
|
+
3. **omg_control_reachable**: `.mcp.json` contains `omg-control` with stdio transport.
|
|
15
|
+
4. **policy_files**: `commands/` directory or `.omg/policy.yaml` exists.
|
|
16
|
+
5. **metadata_drift**: All public version surfaces match `CANONICAL_VERSION`.
|
|
17
|
+
|
|
18
|
+
## Optional Checks
|
|
19
|
+
|
|
20
|
+
6. **compiled_bundles**: `dist/` contains compiled channel bundles.
|
|
21
|
+
7. **host_compatibility**: Host config directory (e.g. `~/.claude`) exists.
|
|
22
|
+
8. **memory_reachable**: HTTP `omg-memory` configured (never required).
|
|
23
|
+
9. **managed_runtime**: Managed venv at `$CLAUDE_DIR/omg-runtime/.venv` exists.
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
|
|
27
|
+
Each check reports `name`, `status` (`ok` | `blocker` | `warning`), and `message`.
|
|
28
|
+
|
|
29
|
+
Exit code 0 when all **required** checks pass. Non-zero otherwise.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
python3 scripts/omg.py doctor --format json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Legacy Compat
|
|
36
|
+
|
|
37
|
+
`omg compat run --skill omg-doctor` routes to the same engine.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Alias for /OMG:init [domain-name]. Use /OMG:init instead."
|
|
3
|
+
allowed-tools: Read, Write, Edit, MultiEdit, Bash(mkdir:*), Bash(cat:*), Bash(find:*), Bash(ls:*), Bash(head:*), Bash(grep:*), Bash(tree:*), Bash(node:*), Bash(python*:*), Bash(tee:*), Grep, Glob
|
|
4
|
+
argument-hint: "[domain name, e.g. 'payment' or 'user-profile']"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:domain-init → Redirects to /OMG:init [domain]
|
|
8
|
+
|
|
9
|
+
This command is now part of `/OMG:init`. Execute `/OMG:init [domain-name]` (domain scaffolding mode).
|
|
10
|
+
|
|
11
|
+
Follow the **MODE B: DOMAIN INIT** instructions in /OMG:init.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Auto-route to Codex or Gemini using OMG standalone internal router.
|
|
3
|
+
allowed-tools: Read, Grep, Glob, Bash(git:*), Bash(rg:*), Bash(find:*), Bash(cat:*), Bash(python3:*)
|
|
4
|
+
argument-hint: "[codex|gemini|ccg|auto] 'task description' or just 'problem'"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:escalate — Standalone Smart Escalation
|
|
8
|
+
|
|
9
|
+
## Auto-Routing
|
|
10
|
+
If no model specified:
|
|
11
|
+
- backend/security/debug/performance → `codex`
|
|
12
|
+
- ui/ux/layout/responsive → `gemini`
|
|
13
|
+
- full-stack/architecture/review-all → `ccg`
|
|
14
|
+
|
|
15
|
+
## Context package
|
|
16
|
+
Build from OMG canonical state:
|
|
17
|
+
- `.omg/state/profile.yaml`
|
|
18
|
+
- `.omg/state/ledger/failure-tracker.json`
|
|
19
|
+
- relevant files (`git diff --name-only`)
|
|
20
|
+
|
|
21
|
+
## Runtime entrypoint
|
|
22
|
+
Use the portable runtime installed by `OMG-setup.sh` (`~/.claude/omg-runtime/scripts/omg.py`).
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
OMG_CLI="${OMG_CLI_PATH:-$HOME/.claude/omg-runtime/scripts/omg.py}"
|
|
26
|
+
if [ ! -f "$OMG_CLI" ] && [ -f "scripts/omg.py" ]; then OMG_CLI="scripts/omg.py"; fi
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Execute
|
|
30
|
+
```bash
|
|
31
|
+
python3 "$OMG_CLI" teams --target auto --problem "[problem]"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Explicit target:
|
|
35
|
+
```bash
|
|
36
|
+
python3 "$OMG_CLI" teams --target codex --problem "[problem]"
|
|
37
|
+
python3 "$OMG_CLI" teams --target gemini --problem "[problem]"
|
|
38
|
+
python3 "$OMG_CLI" ccg --problem "[problem]"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Output
|
|
42
|
+
Returns `TeamDispatchResult` with:
|
|
43
|
+
- findings
|
|
44
|
+
- action plan
|
|
45
|
+
- evidence metadata
|
|
46
|
+
|
|
47
|
+
Evidence now includes provider health details (`cli_health`) with:
|
|
48
|
+
- binary availability
|
|
49
|
+
- auth readiness (`auth status` probe)
|
|
50
|
+
- `live_connection` boolean per provider
|
|
51
|
+
|
|
52
|
+
No external legacy plugin is required.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "FORGE — Labs-only domain-model prototyping and evaluation orchestration. Routes into the lab pipeline with policy enforcement."
|
|
3
|
+
allowed-tools: Read, Bash
|
|
4
|
+
argument-hint: "[job file path]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:forge — Labs-Only Domain Prototyping
|
|
8
|
+
|
|
9
|
+
> **Availability**: `labs` preset only. Blocked on `safe`, `balanced`, and `interop` presets.
|
|
10
|
+
|
|
11
|
+
## What It Does
|
|
12
|
+
|
|
13
|
+
Forge orchestrates domain-model prototyping and evaluation through the existing lab pipeline (`lab/pipeline.py`). It validates jobs against lab policies (`lab/policies.py`), runs the staged pipeline (data → refine → train/distill → evaluate → regression), and emits structured evidence.
|
|
14
|
+
|
|
15
|
+
Forge does **not**:
|
|
16
|
+
- Train frontier models or perform research-scale model training
|
|
17
|
+
- Bypass lab policy gates (license checks, source validation)
|
|
18
|
+
- Operate outside the `labs` preset boundary
|
|
19
|
+
|
|
20
|
+
## Policy Enforcement
|
|
21
|
+
|
|
22
|
+
Every forge job is validated through `lab.policies.validate_job_request()` before pipeline execution:
|
|
23
|
+
|
|
24
|
+
1. **Dataset license** must be in `ALLOWED_LICENSES`: `apache-2.0`, `mit`, `bsd-3-clause`, `cc-by-4.0`
|
|
25
|
+
2. **Dataset source** must not contain blocked tokens: `unknown`, `leaked`, `stolen`, `unauthorized`, `pirated`
|
|
26
|
+
3. **Model source** must not contain blocked tokens
|
|
27
|
+
4. **Model distillation** must be explicitly allowed (`allow_distill: true`)
|
|
28
|
+
|
|
29
|
+
Jobs that fail policy checks are blocked with a structured reason before any pipeline stage runs.
|
|
30
|
+
|
|
31
|
+
## CLI Usage
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Run a forge job from a JSON file (domain required)
|
|
35
|
+
python3 scripts/omg.py forge run --job path/to/job.json
|
|
36
|
+
|
|
37
|
+
# Run with explicit preset (default: labs)
|
|
38
|
+
python3 scripts/omg.py forge run --job path/to/job.json --preset labs
|
|
39
|
+
|
|
40
|
+
# Run inline with domain-aware job JSON
|
|
41
|
+
python3 scripts/omg.py forge run --preset labs --job-json '{"domain":"vision","dataset":{"name":"vision-agent","license":"apache-2.0","source":"internal-curated"},"base_model":{"name":"distill-base-v1","source":"approved-registry","allow_distill":true},"target_metric":0.8,"simulated_metric":0.9,"specialists":["data-curator","training-architect","simulator-engineer"]}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Job File Format
|
|
45
|
+
|
|
46
|
+
Every forge job **must** include an explicit `domain` field. Valid canonical domains: `vision`, `robotics`, `algorithms`, `health`, `cybersecurity`. The alias `vision-agent` is accepted and canonicalized to `vision`.
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"domain": "vision",
|
|
51
|
+
"dataset": {
|
|
52
|
+
"name": "vision-agent",
|
|
53
|
+
"license": "apache-2.0",
|
|
54
|
+
"source": "internal-curated"
|
|
55
|
+
},
|
|
56
|
+
"base_model": {
|
|
57
|
+
"name": "distill-base-v1",
|
|
58
|
+
"source": "approved-registry",
|
|
59
|
+
"allow_distill": true
|
|
60
|
+
},
|
|
61
|
+
"target_metric": 0.85,
|
|
62
|
+
"simulated_metric": 0.90,
|
|
63
|
+
"specialists": ["data-curator", "training-architect", "simulator-engineer"],
|
|
64
|
+
"evaluation_notes": "Domain adaptation for vision agent"
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Output
|
|
69
|
+
|
|
70
|
+
Forge returns structured JSON with pipeline results. Domain-aware jobs with specialists also include a `specialist_dispatch` block:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"status": "ready",
|
|
75
|
+
"stage": "complete",
|
|
76
|
+
"stages": [
|
|
77
|
+
{"name": "data_prepare", "status": "ok"},
|
|
78
|
+
{"name": "synthetic_refine", "status": "ok"},
|
|
79
|
+
{"name": "train_distill", "status": "ok"},
|
|
80
|
+
{"name": "evaluate", "status": "ok"},
|
|
81
|
+
{"name": "regression_test", "status": "ok"}
|
|
82
|
+
],
|
|
83
|
+
"published": false,
|
|
84
|
+
"evaluation_report": {
|
|
85
|
+
"metric": 0.90,
|
|
86
|
+
"target_metric": 0.85,
|
|
87
|
+
"passed": true
|
|
88
|
+
},
|
|
89
|
+
"specialist_dispatch": {
|
|
90
|
+
"status": "ok",
|
|
91
|
+
"specialists_dispatched": ["data-curator", "training-architect", "simulator-engineer"]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Scope Boundary
|
|
97
|
+
|
|
98
|
+
Forge is a **domain-prototyping** surface, not a model-training research tool. It stays within:
|
|
99
|
+
|
|
100
|
+
- The lab pipeline's staged execution model
|
|
101
|
+
- Lab policy validation for all dataset and model sources
|
|
102
|
+
- The `labs` preset boundary — no forge operations run without labs enabled
|
|
103
|
+
- Domain-pack contracts (`runtime/domain_packs.py`) for domain-specific prototyping
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Verify project setup, context health, and tool integration
|
|
3
|
+
allowed-tools: Bash(ls:*), Bash(cat:*), Bash(find:*), Bash(grep:*), Bash(git:*), Bash(which:*), Bash(head:*), Bash(wc:*), Bash(stat:*), Bash(npm run:*), Bash(npx:*), Bash(pnpm run:*), Bash(yarn run:*), Bash(pytest:*), Bash(python3:*), Read, Grep, Glob
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /OMG:health-check
|
|
7
|
+
|
|
8
|
+
Run all checks silently, report only issues:
|
|
9
|
+
|
|
10
|
+
1. **Profile**: .omg/state/profile.yaml exists and has required fields (name, language, framework)?
|
|
11
|
+
- FAIL if missing. WARN if key fields empty.
|
|
12
|
+
|
|
13
|
+
2. **Knowledge**: .omg/knowledge/ has content? Any decision files older than 30 days?
|
|
14
|
+
- WARN if empty. WARN if stale files (suggest review).
|
|
15
|
+
|
|
16
|
+
3. **Quality Gate**: .omg/state/quality-gate.json exists and configured commands are runnable?
|
|
17
|
+
- Check each command with `which` or `--version` where possible.
|
|
18
|
+
- If execution is restricted, report WARN (not FAIL) with "cannot verify — restricted permissions".
|
|
19
|
+
- If command found but fails: report FAIL with exit code.
|
|
20
|
+
|
|
21
|
+
4. **Secrets**: No .env committed to git? No API keys in tracked files?
|
|
22
|
+
- `git ls-files | grep -i '\.env'` (exclude .env.example/.sample/.template).
|
|
23
|
+
- FAIL if real .env files tracked.
|
|
24
|
+
|
|
25
|
+
5. **Tools**: Hooks installed? OMG team aliases available? MCP servers listed?
|
|
26
|
+
- Check ~/.claude/hooks/.omg-version exists.
|
|
27
|
+
- Check if Claude sees OMG through plugin-managed skills/surfaces rather than legacy `~/.claude/commands/` files:
|
|
28
|
+
- `~/.claude/plugins/known_marketplaces.json` contains `omg`
|
|
29
|
+
- `~/.claude/plugins/cache/omg/omg/<version>/.claude-plugin/plugin.json` exists
|
|
30
|
+
- WARN if only legacy command files exist without the plugin-managed surface
|
|
31
|
+
- List MCP servers from .mcp.json (informational).
|
|
32
|
+
|
|
33
|
+
6. **Failures**: Stale failure patterns in failure-tracker.json?
|
|
34
|
+
- WARN if any pattern older than 24h. Suggest `/OMG:handoff` or manual reset.
|
|
35
|
+
|
|
36
|
+
7. **Context Size**: Estimate total injection from session-start + prompt-enhancer.
|
|
37
|
+
- Sum: profile.yaml lines + working-memory.md lines + handoff.md lines.
|
|
38
|
+
- WARN if >80 lines total.
|
|
39
|
+
|
|
40
|
+
**Report format:**
|
|
41
|
+
```
|
|
42
|
+
PASS [N] | WARN [N] | FAIL [N]
|
|
43
|
+
|
|
44
|
+
FAIL profile: .omg/state/profile.yaml not found → run /OMG:init
|
|
45
|
+
WARN quality: prettier not found → install or remove from quality-gate.json
|
|
46
|
+
PASS secrets: no .env files tracked
|
|
47
|
+
...
|
|
48
|
+
```
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Unified initializer — auto-detects: project setup (if no .omg/state), domain scaffolding (if argument given), or health check."
|
|
3
|
+
allowed-tools: Read, Write, Edit, MultiEdit, Bash(mkdir:*), Bash(cat:*), Bash(find:*), Bash(ls:*), Bash(head:*), Bash(grep:*), Bash(tree:*), Bash(node:*), Bash(python*:*), Bash(tee:*), Grep, Glob
|
|
4
|
+
argument-hint: "[optional: domain name like 'payment', or 'check' for health check]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /OMG:init — Unified Project & Domain Initializer
|
|
8
|
+
|
|
9
|
+
## Auto-Detection Logic
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
if argument is a domain name (e.g. "payment", "user-profile"):
|
|
13
|
+
→ DOMAIN INIT (create new domain from existing patterns)
|
|
14
|
+
elif .omg/state directory does not exist:
|
|
15
|
+
→ PROJECT INIT (first-time project setup)
|
|
16
|
+
elif .omg/state/profile.yaml exists:
|
|
17
|
+
→ HEALTH CHECK (verify everything works, offer upgrades)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## MODE A: PROJECT INIT (no .omg/state found)
|
|
23
|
+
|
|
24
|
+
### Step 1: Create .omg/state/profile.yaml (MOST IMPORTANT)
|
|
25
|
+
Detect from code. Ask user for anything undetectable.
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
# .omg/state/profile.yaml — injected every session (keep under 20 lines)
|
|
29
|
+
name: "[from package.json/Cargo.toml/pyproject.toml]"
|
|
30
|
+
description: "[1 sentence]"
|
|
31
|
+
repo: "[from git remote -v]"
|
|
32
|
+
|
|
33
|
+
language: "[detect]"
|
|
34
|
+
framework: "[detect]"
|
|
35
|
+
database: "[detect or ask]"
|
|
36
|
+
infra: "[detect from Dockerfile/terraform/etc]"
|
|
37
|
+
key_deps: "[top 5]"
|
|
38
|
+
|
|
39
|
+
conventions:
|
|
40
|
+
naming: "[detect: camelCase/snake_case]"
|
|
41
|
+
test_cmd: "[detect: npm test/pytest/cargo test]"
|
|
42
|
+
lint_cmd: "[detect: eslint/ruff/clippy]"
|
|
43
|
+
|
|
44
|
+
ai_behavior:
|
|
45
|
+
communication: "[ask user: language preference]"
|
|
46
|
+
when_stuck: "Ask user after 2 failed attempts"
|
|
47
|
+
testing: "User-journey focused, not boilerplate"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Step 2: Create knowledge structure + OMG v1 contract dirs
|
|
51
|
+
```
|
|
52
|
+
mkdir -p .omg/state/ledger .omg/knowledge/decisions .omg/knowledge/patterns .omg/knowledge/rules
|
|
53
|
+
mkdir -p .omg/trust .omg/evidence .omg/shadow .omg/migrations
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Copy OMG v1 templates when missing:
|
|
57
|
+
- `.omg/idea.yml`
|
|
58
|
+
- `.omg/policy.yaml`
|
|
59
|
+
- `.omg/runtime.yaml`
|
|
60
|
+
|
|
61
|
+
### Step 3: Auto-detect quality gate
|
|
62
|
+
```json
|
|
63
|
+
// .omg/state/quality-gate.json — only include commands that exist
|
|
64
|
+
{
|
|
65
|
+
"format": "[detect: prettier/black/gofmt or null]",
|
|
66
|
+
"lint": "[detect: eslint/ruff/clippy or null]",
|
|
67
|
+
"typecheck": "[detect: tsc/mypy or null]",
|
|
68
|
+
"test": "[detect: npm test/pytest/cargo test or null]"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Step 4: Copy relevant contextual rules
|
|
73
|
+
Based on detected project type, copy relevant rules from templates:
|
|
74
|
+
- Web project → security-domains.md, code-hygiene.md
|
|
75
|
+
- Backend → infra-safety.md, dependency-safety.md
|
|
76
|
+
- DDD project → ddd-sdd.md, outside-in.md
|
|
77
|
+
|
|
78
|
+
### Step 5: Verify
|
|
79
|
+
Run `/OMG:health-check` to confirm setup.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## MODE B: DOMAIN INIT (argument = domain name)
|
|
84
|
+
|
|
85
|
+
### Step 1: Find Reference Pattern
|
|
86
|
+
```bash
|
|
87
|
+
find . -type f -name "*.ts" -o -name "*.py" | sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -10
|
|
88
|
+
```
|
|
89
|
+
Read the most complete existing domain. Extract:
|
|
90
|
+
- Directory structure (routes, services, models, tests)
|
|
91
|
+
- Naming conventions, error handling, data flow patterns
|
|
92
|
+
|
|
93
|
+
### Step 2: Define the New Domain
|
|
94
|
+
Ask the user:
|
|
95
|
+
- "What entities does [domain] have?"
|
|
96
|
+
- "What actions can be performed?"
|
|
97
|
+
- "What external services does it talk to?"
|
|
98
|
+
- "What are the business rules?"
|
|
99
|
+
|
|
100
|
+
### Step 3: Generate Domain Structure
|
|
101
|
+
Match the reference pattern EXACTLY. Create:
|
|
102
|
+
```
|
|
103
|
+
src/[domain]/
|
|
104
|
+
├── [domain].model.ts
|
|
105
|
+
├── [domain].service.ts
|
|
106
|
+
├── [domain].repository.ts
|
|
107
|
+
├── [domain].controller.ts (or routes)
|
|
108
|
+
├── [domain].types.ts
|
|
109
|
+
└── __tests__/
|
|
110
|
+
└── [domain].service.test.ts
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Step 4: Document the Pattern
|
|
114
|
+
Save to `.omg/knowledge/patterns/[domain]-pattern.md`
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## MODE C: HEALTH CHECK (already initialized)
|
|
119
|
+
|
|
120
|
+
Run `/OMG:health-check` and additionally:
|
|
121
|
+
- Verify profile.yaml is up-to-date with current project state
|
|
122
|
+
- Check if new contextual rules should be added
|
|
123
|
+
- Offer to update quality-gate.json if tools changed
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## File Write Method
|
|
128
|
+
Use `Write` tool first. If it fails (file exists), fall back to:
|
|
129
|
+
```bash
|
|
130
|
+
cat > .omg/state/profile.yaml << 'EOF'
|
|
131
|
+
[content]
|
|
132
|
+
EOF
|
|
133
|
+
```
|
|
134
|
+
Always READ the file after writing to confirm.
|