@trac3er/oh-my-god 2.2.4 → 2.2.5
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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/scripts/install.sh +1 -1
- package/.gemini/settings.json +2 -2
- package/.kimi/mcp.json +2 -2
- package/CHANGELOG.md +1 -1
- package/CLI-ADAPTER-MAP.md +3 -3
- package/INSTALL-VERIFICATION-INDEX.md +19 -324
- package/OMG-setup.sh +29 -31
- package/OMG_COMPAT_CONTRACT.md +19 -1
- package/QUICK-REFERENCE.md +27 -211
- package/commands/OMG:validate.md +1 -1
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/.gemini/settings.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.gemini/settings.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/.kimi/mcp.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.kimi/mcp.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/.mcp.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/.mcp.json.statement.json +5 -5
- package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
- package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-code-review.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-code-review.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-deep-plan.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-deep-plan.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-handoff.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-handoff.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-learn.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-learn.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-maintainer.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-maintainer.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ralph-start.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ralph-start.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ralph-stop.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ralph-stop.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-security-review.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-security-review.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-sequential-thinking.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-sequential-thinking.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ship.md.minisig +4 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG-ship.md.statement.json +35 -0
- package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
- package/dist/enterprise/attestations/bundle/settings.json.minisig +3 -3
- package/dist/enterprise/attestations/bundle/settings.json.statement.json +6 -6
- package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
- package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/enterprise/bundle/.gemini/settings.json +2 -2
- package/dist/enterprise/bundle/.kimi/mcp.json +2 -2
- package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +19 -1
- package/dist/enterprise/bundle/plugins/advanced/plugin.json +1 -1
- 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/ast-pack.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -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/hash-edit.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/plan-council.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/proof-gate.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/terminal-lane.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/test-intent-lock.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 +1 -1
- package/dist/enterprise/bundle/settings.json +65 -8
- package/dist/enterprise/manifest.json +173 -173
- package/dist/oh_my_god-2.2.5-py3-none-any.whl +0 -0
- package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +5 -5
- package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +5 -5
- package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
- package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
- package/dist/public/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
- package/dist/public/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
- package/dist/public/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
- package/dist/public/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
- package/dist/public/attestations/bundle/.gemini/settings.json.minisig +3 -3
- package/dist/public/attestations/bundle/.gemini/settings.json.statement.json +6 -6
- package/dist/public/attestations/bundle/.kimi/mcp.json.minisig +3 -3
- package/dist/public/attestations/bundle/.kimi/mcp.json.statement.json +6 -6
- package/dist/public/attestations/bundle/.mcp.json.minisig +3 -3
- package/dist/public/attestations/bundle/.mcp.json.statement.json +5 -5
- package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
- package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-code-review.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-code-review.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-deep-plan.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-deep-plan.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-handoff.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-handoff.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-learn.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-learn.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-maintainer.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-maintainer.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ralph-start.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ralph-start.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ralph-stop.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ralph-stop.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-security-review.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-security-review.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-sequential-thinking.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-sequential-thinking.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ship.md.minisig +4 -0
- package/dist/public/attestations/bundle/plugins/advanced/commands/OMG-ship.md.statement.json +35 -0
- package/dist/public/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
- package/dist/public/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
- package/dist/public/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
- package/dist/public/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
- package/dist/public/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
- package/dist/public/attestations/bundle/settings.json.minisig +3 -3
- package/dist/public/attestations/bundle/settings.json.statement.json +6 -6
- package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
- package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/public/bundle/.gemini/settings.json +2 -2
- package/dist/public/bundle/.kimi/mcp.json +2 -2
- package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +19 -1
- package/dist/public/bundle/plugins/advanced/plugin.json +1 -1
- 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/ast-pack.yaml +1 -1
- package/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
- package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -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/hash-edit.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/plan-council.yaml +1 -1
- package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/public/bundle/registry/bundles/proof-gate.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/terminal-lane.yaml +1 -1
- package/dist/public/bundle/registry/bundles/test-intent-lock.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 +1 -1
- package/dist/public/bundle/settings.json +65 -8
- package/dist/public/manifest.json +173 -173
- package/docs/install/github-app-required-checks.md +103 -0
- package/hooks/_common.py +40 -17
- package/hooks/budget_governor.py +77 -8
- package/hooks/setup_wizard.py +26 -98
- package/hud/omg-hud.mjs +1 -1
- package/package.json +1 -1
- 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 +1 -1
- package/plugins/core/plugin.json +1 -1
- package/pyproject.toml +1 -1
- package/registry/bundles/algorithms.yaml +1 -1
- package/registry/bundles/api-twin.yaml +1 -1
- package/registry/bundles/ast-pack.yaml +1 -1
- package/registry/bundles/claim-judge.yaml +1 -1
- package/registry/bundles/control-plane.yaml +1 -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/hash-edit.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 +1 -1
- package/registry/bundles/preflight.yaml +1 -1
- package/registry/bundles/proof-gate.yaml +1 -1
- 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/terminal-lane.yaml +1 -1
- package/registry/bundles/test-intent-lock.yaml +1 -1
- package/registry/bundles/tracebank.yaml +1 -1
- package/registry/bundles/vision.yaml +1 -1
- package/registry/omg-capability.schema.json +1 -1
- package/registry/policy-packs/airgapped.yaml +16 -0
- package/registry/policy-packs/fintech.yaml +15 -0
- package/registry/policy-packs/locked-prod.yaml +18 -0
- package/runtime/adoption.py +6 -3
- package/runtime/canonical_taxonomy.py +27 -0
- package/runtime/compat.py +215 -1
- package/runtime/config_transaction.py +304 -0
- package/runtime/contract_compiler.py +3 -1
- package/runtime/doc_generator.py +273 -0
- package/runtime/evidence_narrator.py +42 -0
- package/runtime/github_review_bot.py +88 -4
- package/runtime/github_review_formatter.py +24 -6
- package/runtime/install_planner.py +497 -0
- package/runtime/mcp_config_writers.py +198 -47
- package/runtime/omg_compat_contract_snapshot.json +1 -1
- package/runtime/omg_mcp_server.py +3 -1
- package/runtime/policy_pack_loader.py +143 -0
- package/runtime/subscription_tiers.py +258 -0
- package/runtime/verdict_schema.py +198 -0
- package/scripts/omg.py +230 -0
- package/scripts/settings-merge.py +16 -10
- package/settings.json +65 -18
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:code-review.md → OMG-code-review.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:deep-plan.md → OMG-deep-plan.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:handoff.md → OMG-handoff.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:learn.md → OMG-learn.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:maintainer.md → OMG-maintainer.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:ralph-start.md → OMG-ralph-start.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:ralph-stop.md → OMG-ralph-stop.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:security-review.md → OMG-security-review.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:sequential-thinking.md → OMG-sequential-thinking.md} +0 -0
- /package/dist/enterprise/bundle/plugins/advanced/commands/{OMG:ship.md → OMG-ship.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:code-review.md → OMG-code-review.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:deep-plan.md → OMG-deep-plan.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:handoff.md → OMG-handoff.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:learn.md → OMG-learn.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:maintainer.md → OMG-maintainer.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:ralph-start.md → OMG-ralph-start.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:ralph-stop.md → OMG-ralph-stop.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:security-review.md → OMG-security-review.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:sequential-thinking.md → OMG-sequential-thinking.md} +0 -0
- /package/dist/public/bundle/plugins/advanced/commands/{OMG:ship.md → OMG-ship.md} +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import contextlib
|
|
4
|
+
import hashlib
|
|
3
5
|
import json
|
|
4
6
|
import os
|
|
7
|
+
import tempfile
|
|
5
8
|
from pathlib import Path
|
|
6
|
-
from typing import cast
|
|
9
|
+
from typing import TYPE_CHECKING, Any, Generator, cast
|
|
7
10
|
|
|
8
11
|
from hooks.security_validators import (
|
|
9
12
|
toml_quote_string,
|
|
@@ -11,12 +14,143 @@ from hooks.security_validators import (
|
|
|
11
14
|
validate_server_url,
|
|
12
15
|
)
|
|
13
16
|
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from runtime.config_transaction import ConfigTransaction
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
_O_NOFOLLOW: int = getattr(os, "O_NOFOLLOW", 0)
|
|
21
|
+
|
|
22
|
+
_active_transaction: ConfigTransaction | None = None
|
|
23
|
+
_planned_content: dict[str, str] = {}
|
|
24
|
+
_last_receipt: dict[str, Any] | None = None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _fsync_dir(path: Path | str) -> None:
|
|
28
|
+
fd = os.open(str(path), os.O_RDONLY)
|
|
29
|
+
try:
|
|
30
|
+
os.fsync(fd)
|
|
31
|
+
finally:
|
|
32
|
+
os.close(fd)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _atomic_write_text_safe(
|
|
36
|
+
path: Path,
|
|
37
|
+
content: str,
|
|
38
|
+
*,
|
|
39
|
+
mode: int = 0o600,
|
|
40
|
+
) -> None:
|
|
41
|
+
"""Write *content* to *path* atomically with full durability guarantees.
|
|
42
|
+
|
|
43
|
+
Contract:
|
|
44
|
+
1. Writes to a temp file in the same directory as *path* (same-filesystem).
|
|
45
|
+
2. Uses ``os.open`` with ``O_CREAT | O_WRONLY | O_TRUNC`` and explicit *mode*.
|
|
46
|
+
3. Rejects symlink targets and symlink tmp paths (raises ``OSError``).
|
|
47
|
+
4. Calls ``os.fsync(fd)`` before ``os.replace`` (data durable).
|
|
48
|
+
5. Calls ``_fsync_dir`` after ``os.replace`` (directory entry durable).
|
|
49
|
+
6. Cleans up the temp file on any failure before rename.
|
|
50
|
+
"""
|
|
51
|
+
path = Path(path)
|
|
16
52
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
53
|
+
|
|
54
|
+
if path.exists() or path.is_symlink():
|
|
55
|
+
st = os.lstat(path)
|
|
56
|
+
import stat as stat_mod
|
|
57
|
+
if stat_mod.S_ISLNK(st.st_mode):
|
|
58
|
+
raise OSError(f"Refusing to write through symlink target: {path}")
|
|
59
|
+
|
|
17
60
|
tmp_path = path.with_name(f"{path.name}.tmp")
|
|
18
|
-
|
|
19
|
-
|
|
61
|
+
if tmp_path.exists() or tmp_path.is_symlink():
|
|
62
|
+
st = os.lstat(tmp_path)
|
|
63
|
+
import stat as stat_mod
|
|
64
|
+
if stat_mod.S_ISLNK(st.st_mode):
|
|
65
|
+
raise OSError(f"Refusing to write through symlink tmp path: {tmp_path}")
|
|
66
|
+
tmp_path.unlink()
|
|
67
|
+
|
|
68
|
+
open_flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC | _O_NOFOLLOW
|
|
69
|
+
fd = os.open(str(tmp_path), open_flags, mode)
|
|
70
|
+
try:
|
|
71
|
+
data = content.encode("utf-8")
|
|
72
|
+
written = 0
|
|
73
|
+
while written < len(data):
|
|
74
|
+
written += os.write(fd, data[written:])
|
|
75
|
+
os.fsync(fd)
|
|
76
|
+
except BaseException:
|
|
77
|
+
os.close(fd)
|
|
78
|
+
try:
|
|
79
|
+
tmp_path.unlink(missing_ok=True)
|
|
80
|
+
except OSError:
|
|
81
|
+
pass
|
|
82
|
+
raise
|
|
83
|
+
else:
|
|
84
|
+
os.close(fd)
|
|
85
|
+
|
|
86
|
+
os.replace(str(tmp_path), str(path))
|
|
87
|
+
_fsync_dir(path.parent)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _atomic_write_text(path: Path, content: str) -> None:
|
|
91
|
+
_atomic_write_text_safe(path, content)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@contextlib.contextmanager
|
|
95
|
+
def transactional() -> Generator[ConfigTransaction, None, None]:
|
|
96
|
+
"""Batch all writer calls inside this context into a single ConfigTransaction.
|
|
97
|
+
|
|
98
|
+
Writers detect the active transaction and plan into it instead of writing
|
|
99
|
+
immediately. The caller MUST call ``tx.execute()`` before leaving the
|
|
100
|
+
block — the context manager only manages the ``_active_transaction``
|
|
101
|
+
lifecycle, not the commit.
|
|
102
|
+
"""
|
|
103
|
+
global _active_transaction # noqa: PLW0603
|
|
104
|
+
from runtime.config_transaction import ConfigTransaction as _CT
|
|
105
|
+
|
|
106
|
+
if _active_transaction is not None:
|
|
107
|
+
raise RuntimeError("nested transactions not supported")
|
|
108
|
+
tx_lock_dir = Path(tempfile.mkdtemp(prefix="omg-tx-"))
|
|
109
|
+
tx = _CT(lock_path=tx_lock_dir / "tx.lock")
|
|
110
|
+
_active_transaction = tx
|
|
111
|
+
_planned_content.clear()
|
|
112
|
+
try:
|
|
113
|
+
yield tx
|
|
114
|
+
finally:
|
|
115
|
+
_active_transaction = None
|
|
116
|
+
_planned_content.clear()
|
|
117
|
+
try:
|
|
118
|
+
(tx_lock_dir / "tx.lock").unlink(missing_ok=True)
|
|
119
|
+
tx_lock_dir.rmdir()
|
|
120
|
+
except OSError:
|
|
121
|
+
pass
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def _get_current_content(path: Path) -> str:
|
|
125
|
+
resolved_key = str(path.resolve())
|
|
126
|
+
if _active_transaction is not None and resolved_key in _planned_content:
|
|
127
|
+
return _planned_content[resolved_key]
|
|
128
|
+
try:
|
|
129
|
+
return path.read_text(encoding="utf-8") if path.exists() else ""
|
|
130
|
+
except OSError:
|
|
131
|
+
return ""
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _write_with_transaction(path: Path, content: str, *, mode: int = 0o600) -> None:
|
|
135
|
+
global _last_receipt # noqa: PLW0603
|
|
136
|
+
|
|
137
|
+
resolved = str(path.resolve())
|
|
138
|
+
|
|
139
|
+
if _active_transaction is not None:
|
|
140
|
+
_active_transaction.plan(path, content, mode=mode)
|
|
141
|
+
_planned_content[resolved] = content
|
|
142
|
+
return
|
|
143
|
+
|
|
144
|
+
_atomic_write_text_safe(path, content, mode=mode)
|
|
145
|
+
content_hash = hashlib.sha256(content.encode("utf-8")).hexdigest()
|
|
146
|
+
_last_receipt = {
|
|
147
|
+
"planned_writes": [{"path": resolved, "content_hash": content_hash}],
|
|
148
|
+
"executed_writes": [{"path": resolved, "content_hash": content_hash, "executed": True}],
|
|
149
|
+
"backup_path": "",
|
|
150
|
+
"verification": {resolved: "ok"},
|
|
151
|
+
"executed": True,
|
|
152
|
+
"rollback": None,
|
|
153
|
+
}
|
|
20
154
|
|
|
21
155
|
|
|
22
156
|
def _load_json(path: Path) -> dict[str, object]:
|
|
@@ -31,8 +165,31 @@ def _load_json(path: Path) -> dict[str, object]:
|
|
|
31
165
|
return {}
|
|
32
166
|
|
|
33
167
|
|
|
168
|
+
def _load_json_content(raw: str) -> dict[str, object]:
|
|
169
|
+
if not raw.strip():
|
|
170
|
+
return {}
|
|
171
|
+
try:
|
|
172
|
+
parsed = cast(object, json.loads(raw))
|
|
173
|
+
if isinstance(parsed, dict):
|
|
174
|
+
return cast(dict[str, object], parsed)
|
|
175
|
+
return {}
|
|
176
|
+
except (json.JSONDecodeError, ValueError):
|
|
177
|
+
return {}
|
|
178
|
+
|
|
179
|
+
|
|
34
180
|
def _write_json(path: Path, data: dict[str, object]) -> None:
|
|
35
|
-
|
|
181
|
+
_write_with_transaction(path, json.dumps(data, indent=2) + "\n")
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def _write_json_mcp_server(path: Path, server_name: str, payload: dict[str, object]) -> None:
|
|
185
|
+
existing = _get_current_content(path)
|
|
186
|
+
config = _load_json_content(existing)
|
|
187
|
+
mcp_servers = config.get("mcpServers")
|
|
188
|
+
if not isinstance(mcp_servers, dict):
|
|
189
|
+
mcp_servers = {}
|
|
190
|
+
config["mcpServers"] = mcp_servers
|
|
191
|
+
mcp_servers[server_name] = payload
|
|
192
|
+
_write_json(path, config)
|
|
36
193
|
|
|
37
194
|
|
|
38
195
|
def get_managed_python_path(claude_config_dir: str | None = None) -> str:
|
|
@@ -63,16 +220,6 @@ def _validated_stdio_input(command: str, args: list[str], server_name: str) -> t
|
|
|
63
220
|
return normalized_command, normalized_args, normalized_name
|
|
64
221
|
|
|
65
222
|
|
|
66
|
-
def _write_json_mcp_server(path: Path, server_name: str, payload: dict[str, object]) -> None:
|
|
67
|
-
config = _load_json(path)
|
|
68
|
-
mcp_servers = config.get("mcpServers")
|
|
69
|
-
if not isinstance(mcp_servers, dict):
|
|
70
|
-
mcp_servers = {}
|
|
71
|
-
config["mcpServers"] = mcp_servers
|
|
72
|
-
mcp_servers[server_name] = payload
|
|
73
|
-
_write_json(path, config)
|
|
74
|
-
|
|
75
|
-
|
|
76
223
|
def write_claude_mcp_config(project_dir: str, server_url: str, server_name: str = "memory-server") -> None:
|
|
77
224
|
server_url, server_name = _validated_server_input(server_url, server_name)
|
|
78
225
|
config_path = Path(project_dir) / ".mcp.json"
|
|
@@ -91,17 +238,8 @@ def write_claude_mcp_stdio_config(
|
|
|
91
238
|
_write_json_mcp_server(config_path, server_name, {"command": command, "args": args})
|
|
92
239
|
|
|
93
240
|
|
|
94
|
-
def
|
|
95
|
-
|
|
96
|
-
server_name: str = "memory-server",
|
|
97
|
-
*,
|
|
98
|
-
config_path: str | Path | None = None,
|
|
99
|
-
) -> None:
|
|
100
|
-
server_url, server_name = _validated_server_input(server_url, server_name)
|
|
101
|
-
target_path = Path(config_path) if config_path is not None else Path.home() / ".codex" / "config.toml"
|
|
102
|
-
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
103
|
-
|
|
104
|
-
existing = target_path.read_text() if target_path.exists() else ""
|
|
241
|
+
def _compute_codex_toml_http(target_path: Path, server_url: str, server_name: str) -> str:
|
|
242
|
+
existing = _get_current_content(target_path)
|
|
105
243
|
lines = existing.splitlines(keepends=True)
|
|
106
244
|
|
|
107
245
|
header_unquoted = f"[mcp_servers.{server_name}]"
|
|
@@ -124,9 +262,7 @@ def write_codex_mcp_config(
|
|
|
124
262
|
if start_idx is None:
|
|
125
263
|
if existing and not existing.endswith("\n"):
|
|
126
264
|
existing += "\n"
|
|
127
|
-
|
|
128
|
-
_atomic_write_text(target_path, content)
|
|
129
|
-
return
|
|
265
|
+
return existing + "".join(block)
|
|
130
266
|
|
|
131
267
|
end_idx = len(lines)
|
|
132
268
|
for idx in range(start_idx + 1, len(lines)):
|
|
@@ -135,23 +271,13 @@ def write_codex_mcp_config(
|
|
|
135
271
|
end_idx = idx
|
|
136
272
|
break
|
|
137
273
|
|
|
138
|
-
|
|
139
|
-
_atomic_write_text(target_path, "".join(updated_lines))
|
|
274
|
+
return "".join(lines[:start_idx] + block + lines[end_idx:])
|
|
140
275
|
|
|
141
276
|
|
|
142
|
-
def
|
|
143
|
-
|
|
144
|
-
command: str,
|
|
145
|
-
args: list[str],
|
|
146
|
-
server_name: str = "omg-control",
|
|
147
|
-
config_path: str | Path | None = None,
|
|
148
|
-
) -> None:
|
|
149
|
-
command, args, server_name = _validated_stdio_input(command, args, server_name)
|
|
150
|
-
target_path = Path(config_path) if config_path is not None else Path.home() / ".codex" / "config.toml"
|
|
151
|
-
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
152
|
-
|
|
153
|
-
existing = target_path.read_text() if target_path.exists() else ""
|
|
277
|
+
def _compute_codex_toml_stdio(target_path: Path, command: str, args: list[str], server_name: str) -> str:
|
|
278
|
+
existing = _get_current_content(target_path)
|
|
154
279
|
lines = existing.splitlines(keepends=True)
|
|
280
|
+
|
|
155
281
|
header_unquoted = f"[mcp_servers.{server_name}]"
|
|
156
282
|
header_quoted = f"[mcp_servers.\"{server_name}\"]"
|
|
157
283
|
headers = {header_unquoted, header_quoted}
|
|
@@ -173,8 +299,7 @@ def write_codex_mcp_stdio_config(
|
|
|
173
299
|
if start_idx is None:
|
|
174
300
|
if existing and not existing.endswith("\n"):
|
|
175
301
|
existing += "\n"
|
|
176
|
-
|
|
177
|
-
return
|
|
302
|
+
return existing + "".join(block)
|
|
178
303
|
|
|
179
304
|
end_idx = len(lines)
|
|
180
305
|
for idx in range(start_idx + 1, len(lines)):
|
|
@@ -183,8 +308,34 @@ def write_codex_mcp_stdio_config(
|
|
|
183
308
|
end_idx = idx
|
|
184
309
|
break
|
|
185
310
|
|
|
186
|
-
|
|
187
|
-
|
|
311
|
+
return "".join(lines[:start_idx] + block + lines[end_idx:])
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def write_codex_mcp_config(
|
|
315
|
+
server_url: str,
|
|
316
|
+
server_name: str = "memory-server",
|
|
317
|
+
*,
|
|
318
|
+
config_path: str | Path | None = None,
|
|
319
|
+
) -> None:
|
|
320
|
+
server_url, server_name = _validated_server_input(server_url, server_name)
|
|
321
|
+
target_path = Path(config_path) if config_path is not None else Path.home() / ".codex" / "config.toml"
|
|
322
|
+
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
323
|
+
content = _compute_codex_toml_http(target_path, server_url, server_name)
|
|
324
|
+
_write_with_transaction(target_path, content)
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
def write_codex_mcp_stdio_config(
|
|
328
|
+
*,
|
|
329
|
+
command: str,
|
|
330
|
+
args: list[str],
|
|
331
|
+
server_name: str = "omg-control",
|
|
332
|
+
config_path: str | Path | None = None,
|
|
333
|
+
) -> None:
|
|
334
|
+
command, args, server_name = _validated_stdio_input(command, args, server_name)
|
|
335
|
+
target_path = Path(config_path) if config_path is not None else Path.home() / ".codex" / "config.toml"
|
|
336
|
+
target_path.parent.mkdir(parents=True, exist_ok=True)
|
|
337
|
+
content = _compute_codex_toml_stdio(target_path, command, args, server_name)
|
|
338
|
+
_write_with_transaction(target_path, content)
|
|
188
339
|
|
|
189
340
|
|
|
190
341
|
def write_gemini_mcp_config(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
+
import time
|
|
4
5
|
from collections.abc import AsyncIterator
|
|
5
6
|
from contextlib import asynccontextmanager
|
|
6
7
|
from dataclasses import dataclass
|
|
@@ -88,7 +89,8 @@ except ModuleNotFoundError as exc:
|
|
|
88
89
|
return resource.handler()
|
|
89
90
|
|
|
90
91
|
def run(self, *_args: Any, **_kwargs: Any) -> None:
|
|
91
|
-
|
|
92
|
+
while True:
|
|
93
|
+
time.sleep(1)
|
|
92
94
|
|
|
93
95
|
_StubFastMCP.__module__ = "fastmcp"
|
|
94
96
|
_FastMCP = _StubFastMCP
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Literal, TypedDict, cast
|
|
5
|
+
|
|
6
|
+
import yaml
|
|
7
|
+
|
|
8
|
+
from runtime.canonical_taxonomy import CANONICAL_PRESETS, POLICY_PACK_IDS, RELEASE_CHANNELS, SUBSCRIPTION_TIERS
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class PolicyPack(TypedDict):
|
|
12
|
+
id: str
|
|
13
|
+
description: str
|
|
14
|
+
tool_restrictions: list[str]
|
|
15
|
+
network_posture: Literal["open", "restricted", "airgapped"]
|
|
16
|
+
approval_threshold: int
|
|
17
|
+
protected_paths: list[str]
|
|
18
|
+
evidence_requirements: list[str]
|
|
19
|
+
data_sharing: Literal["allowed", "restricted", "prohibited"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
_PACKS_DIR = Path(__file__).resolve().parent.parent / "registry" / "policy-packs"
|
|
23
|
+
_REQUIRED_FIELDS = (
|
|
24
|
+
"id",
|
|
25
|
+
"description",
|
|
26
|
+
"tool_restrictions",
|
|
27
|
+
"network_posture",
|
|
28
|
+
"approval_threshold",
|
|
29
|
+
"protected_paths",
|
|
30
|
+
"evidence_requirements",
|
|
31
|
+
"data_sharing",
|
|
32
|
+
)
|
|
33
|
+
_VALID_NETWORK_POSTURES = {"open", "restricted", "airgapped"}
|
|
34
|
+
_VALID_DATA_SHARING = {"allowed", "restricted", "prohibited"}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def list_policy_packs() -> list[str]:
|
|
38
|
+
if not _PACKS_DIR.exists():
|
|
39
|
+
return []
|
|
40
|
+
return sorted(path.stem for path in _PACKS_DIR.glob("*.yaml"))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def load_policy_pack(pack_id: str) -> PolicyPack:
|
|
44
|
+
normalized_pack_id = str(pack_id).strip()
|
|
45
|
+
path = _PACKS_DIR / f"{normalized_pack_id}.yaml"
|
|
46
|
+
if not path.exists():
|
|
47
|
+
raise FileNotFoundError(f"policy pack not found: {normalized_pack_id}")
|
|
48
|
+
|
|
49
|
+
parsed_pack = cast(object, yaml.safe_load(path.read_text(encoding="utf-8")))
|
|
50
|
+
raw_pack = _coerce_string_key_dict(parsed_pack)
|
|
51
|
+
if raw_pack is None:
|
|
52
|
+
raise ValueError(f"policy pack must be a mapping: {path}")
|
|
53
|
+
|
|
54
|
+
errors = validate_policy_pack(raw_pack)
|
|
55
|
+
if errors:
|
|
56
|
+
raise ValueError(f"invalid policy pack {normalized_pack_id}: {'; '.join(errors)}")
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
"id": cast(str, raw_pack["id"]),
|
|
60
|
+
"description": cast(str, raw_pack["description"]),
|
|
61
|
+
"tool_restrictions": cast(list[str], raw_pack["tool_restrictions"]),
|
|
62
|
+
"network_posture": cast(Literal["open", "restricted", "airgapped"], raw_pack["network_posture"]),
|
|
63
|
+
"approval_threshold": cast(int, raw_pack["approval_threshold"]),
|
|
64
|
+
"protected_paths": cast(list[str], raw_pack["protected_paths"]),
|
|
65
|
+
"evidence_requirements": cast(list[str], raw_pack["evidence_requirements"]),
|
|
66
|
+
"data_sharing": cast(Literal["allowed", "restricted", "prohibited"], raw_pack["data_sharing"]),
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def validate_policy_pack(pack: dict[str, object]) -> list[str]:
|
|
71
|
+
errors: list[str] = []
|
|
72
|
+
|
|
73
|
+
for field in _REQUIRED_FIELDS:
|
|
74
|
+
if field not in pack:
|
|
75
|
+
errors.append(f"missing required field: {field}")
|
|
76
|
+
|
|
77
|
+
pack_id = str(pack.get("id", "")).strip()
|
|
78
|
+
if not pack_id:
|
|
79
|
+
errors.append("id must be a non-empty string")
|
|
80
|
+
else:
|
|
81
|
+
if pack_id in CANONICAL_PRESETS:
|
|
82
|
+
errors.append(f"id collides with canonical preset: {pack_id}")
|
|
83
|
+
if pack_id in RELEASE_CHANNELS:
|
|
84
|
+
errors.append(f"id collides with release channel: {pack_id}")
|
|
85
|
+
if pack_id in SUBSCRIPTION_TIERS:
|
|
86
|
+
errors.append(f"id collides with subscription tier: {pack_id}")
|
|
87
|
+
if pack_id not in POLICY_PACK_IDS:
|
|
88
|
+
errors.append(f"id is not a canonical policy pack id: {pack_id}")
|
|
89
|
+
|
|
90
|
+
description = pack.get("description")
|
|
91
|
+
if not isinstance(description, str) or not description.strip():
|
|
92
|
+
errors.append("description must be a non-empty string")
|
|
93
|
+
|
|
94
|
+
tool_restrictions = pack.get("tool_restrictions")
|
|
95
|
+
if not _is_string_list(tool_restrictions):
|
|
96
|
+
errors.append("tool_restrictions must be a list[str]")
|
|
97
|
+
|
|
98
|
+
network_posture = pack.get("network_posture")
|
|
99
|
+
if network_posture not in _VALID_NETWORK_POSTURES:
|
|
100
|
+
errors.append("network_posture must be one of: open, restricted, airgapped")
|
|
101
|
+
|
|
102
|
+
approval_threshold = pack.get("approval_threshold")
|
|
103
|
+
if not isinstance(approval_threshold, int):
|
|
104
|
+
errors.append("approval_threshold must be an int")
|
|
105
|
+
elif approval_threshold < 1:
|
|
106
|
+
errors.append("approval_threshold must be >= 1")
|
|
107
|
+
|
|
108
|
+
protected_paths = pack.get("protected_paths")
|
|
109
|
+
if not _is_string_list(protected_paths):
|
|
110
|
+
errors.append("protected_paths must be a list[str]")
|
|
111
|
+
|
|
112
|
+
evidence_requirements = pack.get("evidence_requirements")
|
|
113
|
+
if not _is_string_list(evidence_requirements):
|
|
114
|
+
errors.append("evidence_requirements must be a list[str]")
|
|
115
|
+
|
|
116
|
+
data_sharing = pack.get("data_sharing")
|
|
117
|
+
if data_sharing not in _VALID_DATA_SHARING:
|
|
118
|
+
errors.append("data_sharing must be one of: allowed, restricted, prohibited")
|
|
119
|
+
|
|
120
|
+
return errors
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def _is_string_list(value: object) -> bool:
|
|
124
|
+
if not isinstance(value, list):
|
|
125
|
+
return False
|
|
126
|
+
items = cast(list[object], value)
|
|
127
|
+
for item in items:
|
|
128
|
+
if not isinstance(item, str):
|
|
129
|
+
return False
|
|
130
|
+
return True
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def _coerce_string_key_dict(value: object) -> dict[str, object] | None:
|
|
134
|
+
if not isinstance(value, dict):
|
|
135
|
+
return None
|
|
136
|
+
|
|
137
|
+
source = cast(dict[object, object], value)
|
|
138
|
+
result: dict[str, object] = {}
|
|
139
|
+
for key, item in source.items():
|
|
140
|
+
if not isinstance(key, str):
|
|
141
|
+
return None
|
|
142
|
+
result[key] = item
|
|
143
|
+
return result
|