@trac3er/oh-my-god 2.0.0-beta.6 → 2.0.1

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.
Files changed (235) hide show
  1. package/.claude-plugin/marketplace.json +8 -8
  2. package/.claude-plugin/plugin.json +5 -4
  3. package/.claude-plugin/scripts/uninstall.sh +74 -3
  4. package/.claude-plugin/scripts/update.sh +78 -3
  5. package/.coveragerc +26 -0
  6. package/.mcp.json +4 -4
  7. package/OMG-setup.sh +1201 -355
  8. package/README.md +83 -55
  9. package/agents/__init__.py +1 -0
  10. package/agents/model_roles.py +196 -0
  11. package/agents/omg-architect-mode.md +3 -5
  12. package/agents/omg-backend-engineer.md +3 -5
  13. package/agents/omg-database-engineer.md +3 -5
  14. package/agents/omg-frontend-designer.md +4 -5
  15. package/agents/omg-implement-mode.md +4 -5
  16. package/agents/omg-infra-engineer.md +3 -5
  17. package/agents/omg-research-mode.md +4 -6
  18. package/agents/omg-security-auditor.md +3 -5
  19. package/agents/omg-testing-engineer.md +3 -5
  20. package/build/lib/yaml.py +321 -0
  21. package/commands/OMG:ai-commit.md +101 -14
  22. package/commands/OMG:arch.md +302 -19
  23. package/commands/OMG:ccg.md +12 -7
  24. package/commands/OMG:compat.md +25 -17
  25. package/commands/OMG:cost.md +173 -13
  26. package/commands/OMG:crazy.md +1 -1
  27. package/commands/OMG:create-agent.md +170 -20
  28. package/commands/OMG:deps.md +235 -17
  29. package/commands/OMG:domain-init.md +1 -1
  30. package/commands/OMG:escalate.md +41 -12
  31. package/commands/OMG:health-check.md +37 -13
  32. package/commands/OMG:init.md +122 -14
  33. package/commands/OMG:project-init.md +1 -1
  34. package/commands/OMG:session-branch.md +76 -9
  35. package/commands/OMG:session-fork.md +42 -5
  36. package/commands/OMG:session-merge.md +124 -8
  37. package/commands/OMG:setup.md +61 -12
  38. package/commands/OMG:stats.md +215 -14
  39. package/commands/OMG:teams.md +19 -10
  40. package/config/lsp_languages.yaml +8 -0
  41. package/hooks/__init__.py +0 -0
  42. package/hooks/_agent_registry.py +423 -0
  43. package/hooks/_analytics.py +291 -0
  44. package/hooks/_budget.py +31 -0
  45. package/hooks/_common.py +569 -0
  46. package/hooks/_compression_optimizer.py +119 -0
  47. package/hooks/_cost_ledger.py +176 -0
  48. package/hooks/_learnings.py +126 -0
  49. package/hooks/_memory.py +103 -0
  50. package/hooks/_protected_context.py +150 -0
  51. package/hooks/_token_counter.py +221 -0
  52. package/hooks/branch_manager.py +236 -0
  53. package/hooks/budget_governor.py +232 -0
  54. package/hooks/circuit-breaker.py +270 -0
  55. package/hooks/compression_feedback.py +254 -0
  56. package/hooks/config-guard.py +216 -0
  57. package/hooks/context_pressure.py +53 -0
  58. package/hooks/credential_store.py +1020 -0
  59. package/hooks/fetch-rate-limits.py +212 -0
  60. package/hooks/firewall.py +48 -0
  61. package/hooks/hashline-formatter-bridge.py +224 -0
  62. package/hooks/hashline-injector.py +273 -0
  63. package/hooks/hashline-validator.py +216 -0
  64. package/hooks/idle-detector.py +95 -0
  65. package/hooks/intentgate-keyword-detector.py +188 -0
  66. package/hooks/magic-keyword-router.py +195 -0
  67. package/hooks/policy_engine.py +505 -0
  68. package/hooks/post-tool-failure.py +19 -0
  69. package/hooks/post-write.py +219 -0
  70. package/hooks/post_write.py +46 -0
  71. package/hooks/pre-compact.py +398 -0
  72. package/hooks/pre-tool-inject.py +98 -0
  73. package/hooks/prompt-enhancer.py +672 -0
  74. package/hooks/quality-runner.py +191 -0
  75. package/hooks/query.py +512 -0
  76. package/hooks/secret-guard.py +61 -0
  77. package/hooks/secret_audit.py +144 -0
  78. package/hooks/session-end-capture.py +137 -0
  79. package/hooks/session-start.py +277 -0
  80. package/hooks/setup_wizard.py +582 -0
  81. package/hooks/shadow_manager.py +297 -0
  82. package/hooks/state_migration.py +225 -0
  83. package/hooks/stop-gate.py +7 -0
  84. package/hooks/stop_dispatcher.py +945 -0
  85. package/hooks/test-validator.py +361 -0
  86. package/hooks/test_generator_hook.py +123 -0
  87. package/hooks/todo-state-tracker.py +114 -0
  88. package/hooks/tool-ledger.py +149 -0
  89. package/hooks/trust_review.py +585 -0
  90. package/hud/omg-hud.mjs +1 -1
  91. package/lab/__init__.py +1 -0
  92. package/lab/pipeline.py +75 -0
  93. package/lab/policies.py +52 -0
  94. package/package.json +4 -15
  95. package/plugins/README.md +30 -63
  96. package/plugins/advanced/commands/OMG:deep-plan.md +3 -3
  97. package/plugins/advanced/commands/OMG:learn.md +1 -1
  98. package/plugins/advanced/commands/OMG:security-review.md +3 -3
  99. package/plugins/advanced/commands/OMG:ship.md +1 -1
  100. package/plugins/core/plugin.json +8 -3
  101. package/plugins/dephealth/__init__.py +0 -0
  102. package/plugins/dephealth/cve_scanner.py +188 -0
  103. package/plugins/dephealth/license_checker.py +135 -0
  104. package/plugins/dephealth/manifest_detector.py +423 -0
  105. package/plugins/dephealth/vuln_analyzer.py +169 -0
  106. package/plugins/testgen/__init__.py +0 -0
  107. package/plugins/testgen/codamosa_engine.py +402 -0
  108. package/plugins/testgen/edge_case_synthesizer.py +184 -0
  109. package/plugins/testgen/framework_detector.py +271 -0
  110. package/plugins/testgen/skeleton_generator.py +219 -0
  111. package/plugins/viz/__init__.py +0 -0
  112. package/plugins/viz/ast_parser.py +139 -0
  113. package/plugins/viz/diagram_generator.py +192 -0
  114. package/plugins/viz/graph_builder.py +444 -0
  115. package/plugins/viz/native_parsers.py +259 -0
  116. package/plugins/viz/regex_parser.py +112 -0
  117. package/pyproject.toml +81 -0
  118. package/rules/contextual/write-verify.md +2 -2
  119. package/rules/core/00-truth.md +1 -1
  120. package/rules/core/01-surgical.md +1 -1
  121. package/rules/core/02-circuit-breaker.md +2 -2
  122. package/rules/core/03-ensemble.md +3 -3
  123. package/rules/core/04-testing.md +3 -3
  124. package/runtime/__init__.py +32 -0
  125. package/runtime/adapters/__init__.py +13 -0
  126. package/runtime/adapters/claude.py +60 -0
  127. package/runtime/adapters/gpt.py +53 -0
  128. package/runtime/adapters/local.py +53 -0
  129. package/runtime/adoption.py +212 -0
  130. package/runtime/business_workflow.py +220 -0
  131. package/runtime/cli_provider.py +85 -0
  132. package/runtime/compat.py +1299 -0
  133. package/runtime/custom_agent_loader.py +366 -0
  134. package/runtime/dispatcher.py +47 -0
  135. package/runtime/ecosystem.py +371 -0
  136. package/runtime/legacy_compat.py +7 -0
  137. package/runtime/mcp_config_writers.py +115 -0
  138. package/runtime/mcp_lifecycle.py +153 -0
  139. package/runtime/mcp_memory_server.py +135 -0
  140. package/runtime/memory_parsers/__init__.py +0 -0
  141. package/runtime/memory_parsers/chatgpt_parser.py +257 -0
  142. package/runtime/memory_parsers/claude_import.py +107 -0
  143. package/runtime/memory_parsers/export.py +97 -0
  144. package/runtime/memory_parsers/gemini_import.py +91 -0
  145. package/runtime/memory_parsers/kimi_import.py +91 -0
  146. package/runtime/memory_store.py +215 -0
  147. package/runtime/omc_compat.py +7 -0
  148. package/runtime/providers/__init__.py +0 -0
  149. package/runtime/providers/codex_provider.py +112 -0
  150. package/runtime/providers/gemini_provider.py +128 -0
  151. package/runtime/providers/kimi_provider.py +151 -0
  152. package/runtime/providers/opencode_provider.py +144 -0
  153. package/runtime/subagent_dispatcher.py +362 -0
  154. package/runtime/team_router.py +1167 -0
  155. package/runtime/tmux_session_manager.py +169 -0
  156. package/scripts/check-omg-compat-contract-snapshot.py +137 -0
  157. package/scripts/check-omg-contract-snapshot.py +12 -0
  158. package/scripts/check-omg-standalone-clean.py +103 -0
  159. package/scripts/legacy_to_omg_migrate.py +29 -0
  160. package/scripts/migrate-legacy.py +464 -0
  161. package/scripts/omc_to_omg_migrate.py +12 -0
  162. package/scripts/omg.py +492 -0
  163. package/scripts/settings-merge.py +283 -0
  164. package/scripts/verify-standalone.sh +8 -4
  165. package/settings.json +113 -36
  166. package/templates/profile.yaml +1 -1
  167. package/tools/__init__.py +2 -0
  168. package/tools/browser_consent.py +289 -0
  169. package/tools/browser_stealth.py +481 -0
  170. package/tools/browser_tool.py +448 -0
  171. package/tools/changelog_generator.py +347 -0
  172. package/tools/commit_splitter.py +746 -0
  173. package/tools/config_discovery.py +151 -0
  174. package/tools/config_merger.py +449 -0
  175. package/tools/dashboard_generator.py +300 -0
  176. package/tools/git_inspector.py +298 -0
  177. package/tools/lsp_client.py +275 -0
  178. package/tools/lsp_discovery.py +231 -0
  179. package/tools/lsp_operations.py +392 -0
  180. package/tools/pr_generator.py +404 -0
  181. package/tools/python_repl.py +656 -0
  182. package/tools/python_sandbox.py +609 -0
  183. package/tools/search_providers/__init__.py +77 -0
  184. package/tools/search_providers/brave.py +115 -0
  185. package/tools/search_providers/exa.py +116 -0
  186. package/tools/search_providers/jina.py +104 -0
  187. package/tools/search_providers/perplexity.py +139 -0
  188. package/tools/search_providers/synthetic.py +74 -0
  189. package/tools/session_snapshot.py +736 -0
  190. package/tools/ssh_manager.py +912 -0
  191. package/tools/theme_engine.py +294 -0
  192. package/tools/theme_selector.py +137 -0
  193. package/tools/web_search.py +622 -0
  194. package/yaml.py +321 -0
  195. package/bun.lock +0 -23
  196. package/bunfig.toml +0 -3
  197. package/hooks/_budget.ts +0 -1
  198. package/hooks/_common.ts +0 -63
  199. package/hooks/circuit-breaker.ts +0 -101
  200. package/hooks/config-guard.ts +0 -4
  201. package/hooks/firewall.ts +0 -20
  202. package/hooks/policy_engine.ts +0 -156
  203. package/hooks/post-tool-failure.ts +0 -22
  204. package/hooks/post-write.ts +0 -4
  205. package/hooks/pre-tool-inject.ts +0 -4
  206. package/hooks/prompt-enhancer.ts +0 -46
  207. package/hooks/quality-runner.ts +0 -24
  208. package/hooks/secret-guard.ts +0 -4
  209. package/hooks/session-end-capture.ts +0 -19
  210. package/hooks/session-start.ts +0 -19
  211. package/hooks/shadow_manager.ts +0 -81
  212. package/hooks/stop-gate.ts +0 -22
  213. package/hooks/stop_dispatcher.ts +0 -147
  214. package/hooks/test-generator-hook.ts +0 -4
  215. package/hooks/tool-ledger.ts +0 -27
  216. package/hooks/trust_review.ts +0 -175
  217. package/lab/pipeline.ts +0 -75
  218. package/lab/policies.ts +0 -68
  219. package/runtime/common.ts +0 -111
  220. package/runtime/compat.ts +0 -174
  221. package/runtime/dispatcher.ts +0 -25
  222. package/runtime/ecosystem.ts +0 -186
  223. package/runtime/provider_bootstrap.ts +0 -100
  224. package/runtime/provider_smoke.ts +0 -34
  225. package/runtime/release_readiness.ts +0 -48
  226. package/runtime/team_router.ts +0 -144
  227. package/scripts/check-omg-compat-contract-snapshot.ts +0 -20
  228. package/scripts/check-omg-standalone-clean.ts +0 -12
  229. package/scripts/check-runtime-clean.ts +0 -90
  230. package/scripts/omg.ts +0 -352
  231. package/scripts/settings-merge.ts +0 -64
  232. package/tools/commit_splitter.ts +0 -23
  233. package/tools/git_inspector.ts +0 -18
  234. package/tools/session_snapshot.ts +0 -47
  235. package/tsconfig.json +0 -15
@@ -1,20 +1,20 @@
1
1
  {
2
- "name": "oh-advanced-layer",
2
+ "name": "omg",
3
3
  "description": "Marketplace metadata for the OMG Claude plugin",
4
4
  "owner": {
5
5
  "name": "trac3er00"
6
6
  },
7
7
  "metadata": {
8
- "description": "OMG Bun runtime for Claude Code",
9
- "version": "2.0.0-beta.6",
8
+ "description": "OMG - Oh-My-God for Claude Code",
9
+ "version": "2.0.1",
10
10
  "homepage": "https://github.com/trac3er00/OMG",
11
- "repository": "git@github.com:trac3er00/OMG.git"
11
+ "repository": "https://github.com/trac3er00/OMG"
12
12
  },
13
13
  "plugins": [
14
14
  {
15
15
  "name": "omg",
16
- "description": "OMG Bun runtime orchestration layer for Claude Code",
17
- "version": "2.0.0-beta.6",
16
+ "description": "OMG plugin layer for Claude Code with native setup, orchestration, and interop.",
17
+ "version": "2.0.1",
18
18
  "source": "./",
19
19
  "author": {
20
20
  "name": "trac3er00"
@@ -28,9 +28,9 @@
28
28
  "omg",
29
29
  "codex",
30
30
  "gemini",
31
- "bun"
31
+ "crazy-mode"
32
32
  ]
33
33
  }
34
34
  ],
35
- "version": "2.0.0-beta.6"
35
+ "version": "2.0.1"
36
36
  }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "omg",
3
- "version": "2.0.0-beta.6",
4
- "description": "OMG Bun runtime for Claude Code orchestration and multi-agent workflows",
3
+ "version": "2.0.1",
4
+ "description": "OMG plugin layer for Claude Code with native setup, orchestration, and interop.",
5
5
  "author": {
6
6
  "name": "trac3er00"
7
7
  },
8
- "repository": "git@github.com:trac3er00/OMG.git",
8
+ "repository": "https://github.com/trac3er00/OMG",
9
9
  "homepage": "https://github.com/trac3er00/OMG",
10
10
  "license": "MIT",
11
11
  "keywords": [
@@ -16,7 +16,8 @@
16
16
  "omg",
17
17
  "codex",
18
18
  "gemini",
19
- "bun"
19
+ "crazy-mode",
20
+ "escalation"
20
21
  ],
21
22
  "mcpServers": "./.mcp.json"
22
23
  }
@@ -1,9 +1,80 @@
1
1
  #!/bin/bash
2
- set -euo pipefail
2
+ # OMG Plugin Uninstall Script
3
+ # This script is called by Claude Code when user uninstalls the plugin
4
+
5
+ set -e
6
+
7
+ # Colors
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[1;33m'
11
+ BLUE='\033[0;34m'
12
+ NC='\033[0m'
13
+
14
+ info() { echo -e "${BLUE}ℹ${NC} $1"; }
15
+ success() { echo -e "${GREEN}✓${NC} $1"; }
16
+ warning() { echo -e "${YELLOW}⚠${NC} $1"; }
17
+ error() { echo -e "${RED}✗${NC} $1"; }
18
+
19
+ echo ""
20
+ echo -e "${BLUE}╔═══════════════════════════════════════════════════════════════╗${NC}"
21
+ echo -e "${BLUE}║ ║${NC}"
22
+ echo -e "${BLUE}║ OMG Plugin Uninstaller v1.0.0 ║${NC}"
23
+ echo -e "${BLUE}║ ║${NC}"
24
+ echo -e "${BLUE}╚═══════════════════════════════════════════════════════════════╝${NC}"
25
+ echo ""
3
26
 
4
27
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
28
  PLUGIN_DIR="$(dirname "$SCRIPT_DIR")"
6
29
  OMG_ROOT="$(dirname "$PLUGIN_DIR")"
7
30
 
8
- echo "Uninstalling OMG Bun plugin..."
9
- exec bash "$OMG_ROOT/OMG-setup.sh" uninstall --non-interactive
31
+ # Check if OMG-setup.sh exists
32
+ if [ -f "$OMG_ROOT/OMG-setup.sh" ]; then
33
+ info "Running uninstall via OMG-setup.sh..."
34
+ echo ""
35
+ bash "$OMG_ROOT/OMG-setup.sh" uninstall
36
+ else
37
+ warning "OMG-setup.sh not found, performing manual cleanup..."
38
+
39
+ CLAUDE_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}"
40
+
41
+ # Remove OMG files manually
42
+ rm -f "$CLAUDE_DIR"/commands/OMG:*.md 2>/dev/null || true
43
+ rm -f "$CLAUDE_DIR"/agents/omg-*.md 2>/dev/null || true
44
+ rm -f "$CLAUDE_DIR"/hooks/.omg-version 2>/dev/null || true
45
+ rm -f "$CLAUDE_DIR"/hooks/session-start.py 2>/dev/null || true
46
+ rm -f "$CLAUDE_DIR"/hooks/session-end-capture.py 2>/dev/null || true
47
+ rm -f "$CLAUDE_DIR"/hooks/prompt-enhancer.py 2>/dev/null || true
48
+ rm -f "$CLAUDE_DIR"/hooks/circuit-breaker.py 2>/dev/null || true
49
+ rm -f "$CLAUDE_DIR"/hooks/test-validator.py 2>/dev/null || true
50
+ rm -f "$CLAUDE_DIR"/hooks/firewall.py 2>/dev/null || true
51
+ rm -f "$CLAUDE_DIR"/hooks/secret-guard.py 2>/dev/null || true
52
+ rm -f "$CLAUDE_DIR"/hooks/tool-ledger.py 2>/dev/null || true
53
+ rm -f "$CLAUDE_DIR"/hooks/post-write.py 2>/dev/null || true
54
+ rm -f "$CLAUDE_DIR"/hooks/quality-runner.py 2>/dev/null || true
55
+ rm -f "$CLAUDE_DIR"/hooks/stop-gate.py 2>/dev/null || true
56
+ rm -f "$CLAUDE_DIR"/hooks/stop_dispatcher.py 2>/dev/null || true
57
+ rm -f "$CLAUDE_DIR"/hooks/pre-compact.py 2>/dev/null || true
58
+ rm -f "$CLAUDE_DIR"/hooks/pre-tool-inject.py 2>/dev/null || true
59
+ rm -f "$CLAUDE_DIR"/hooks/post-tool-failure.py 2>/dev/null || true
60
+ rm -f "$CLAUDE_DIR"/hooks/config-guard.py 2>/dev/null || true
61
+ rm -f "$CLAUDE_DIR"/hooks/policy_engine.py 2>/dev/null || true
62
+ rm -f "$CLAUDE_DIR"/hooks/trust_review.py 2>/dev/null || true
63
+ rm -f "$CLAUDE_DIR"/hooks/shadow_manager.py 2>/dev/null || true
64
+ rm -rf "$CLAUDE_DIR"/hooks/__pycache__ 2>/dev/null || true
65
+ rm -f "$CLAUDE_DIR"/hooks/_common.py 2>/dev/null || true
66
+ rm -f "$CLAUDE_DIR"/hooks/_budget.py 2>/dev/null || true
67
+ rm -f "$CLAUDE_DIR"/hooks/_memory.py 2>/dev/null || true
68
+ rm -f "$CLAUDE_DIR"/hooks/_learnings.py 2>/dev/null || true
69
+ rm -f "$CLAUDE_DIR"/hooks/_agent_registry.py 2>/dev/null || true
70
+ rm -f "$CLAUDE_DIR"/hooks/state_migration.py 2>/dev/null || true
71
+ rm -f "$CLAUDE_DIR"/hooks/fetch-rate-limits.py 2>/dev/null || true
72
+ rm -f "$CLAUDE_DIR"/.omg-manifest 2>/dev/null || true
73
+ rm -rf "$CLAUDE_DIR"/omg-runtime 2>/dev/null || true
74
+ rm -rf "$CLAUDE_DIR"/templates/omg 2>/dev/null || true
75
+ rm -f "$CLAUDE_DIR"/rules/0[0-4]-*.md 2>/dev/null || true
76
+ fi
77
+
78
+ echo ""
79
+ success "OMG Plugin uninstalled successfully!"
80
+ echo ""
@@ -1,9 +1,84 @@
1
1
  #!/bin/bash
2
- set -euo pipefail
2
+ # OMG Plugin Update Script
3
+ # Simplified version for Claude Code plugin system
3
4
 
5
+ set -e
6
+
7
+ echo "Updating OMG plugin..."
8
+
9
+ # Find OMG root - prioritize git repo if we're in one
4
10
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
11
  PLUGIN_DIR="$(dirname "$SCRIPT_DIR")"
6
12
  OMG_ROOT="$(dirname "$PLUGIN_DIR")"
7
13
 
8
- echo "Updating OMG Bun plugin..."
9
- exec bash "$OMG_ROOT/OMG-setup.sh" update --install-as-plugin --non-interactive
14
+ # Check if running from source git repo
15
+ if [ -d "$OMG_ROOT/.git" ]; then
16
+ echo "Found git repository at: $OMG_ROOT"
17
+ cd "$OMG_ROOT"
18
+
19
+ # Check for local changes
20
+ STASHED=false
21
+ if [ -n "$(git status --porcelain 2>/dev/null)" ]; then
22
+ echo "Stashing local changes..."
23
+ if git stash push -m "Auto-stash before update"; then
24
+ STASHED=true
25
+ fi
26
+ fi
27
+
28
+ # Pull latest
29
+ echo "Pulling latest changes..."
30
+ git pull origin main
31
+
32
+ # Restore stashed changes
33
+ if $STASHED; then
34
+ echo "Restoring stashed changes..."
35
+ git stash pop || echo "Warning: Could not restore stashed changes. Run 'git stash pop' manually."
36
+ fi
37
+
38
+ NEW_VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "")
39
+ if [ -n "$NEW_VERSION" ]; then
40
+ python3 - "$NEW_VERSION" <<'PY'
41
+ import json
42
+ import sys
43
+ from pathlib import Path
44
+
45
+ new_version = sys.argv[1]
46
+ plugin_path = Path('.claude-plugin/plugin.json')
47
+ marketplace_path = Path('.claude-plugin/marketplace.json')
48
+
49
+ plugin = json.loads(plugin_path.read_text(encoding='utf-8'))
50
+ plugin['version'] = new_version
51
+ plugin_path.write_text(json.dumps(plugin, indent=2) + '\n', encoding='utf-8')
52
+
53
+ marketplace = json.loads(marketplace_path.read_text(encoding='utf-8'))
54
+ marketplace['version'] = new_version
55
+ if isinstance(marketplace.get('metadata'), dict):
56
+ marketplace['metadata']['version'] = new_version
57
+ plugins = marketplace.get('plugins')
58
+ if isinstance(plugins, list) and plugins:
59
+ if isinstance(plugins[0], dict):
60
+ plugins[0]['version'] = new_version
61
+ marketplace_path.write_text(json.dumps(marketplace, indent=2) + '\n', encoding='utf-8')
62
+ PY
63
+ echo "Synced manifest versions to $NEW_VERSION"
64
+ else
65
+ echo "Skipped manifest version sync (no git tag found)"
66
+ fi
67
+
68
+ echo "Update complete!"
69
+ echo ""
70
+ echo "Note: Changes are immediately active (symlinked installation)"
71
+ else
72
+ # Running from cache - run OMG-setup.sh
73
+ if [ -f "$OMG_ROOT/OMG-setup.sh" ]; then
74
+ echo "Running OMG-setup.sh update..."
75
+ bash "$OMG_ROOT/OMG-setup.sh" update
76
+ else
77
+ echo "ERROR: Could not find OMG-setup.sh"
78
+ exit 1
79
+ fi
80
+ fi
81
+
82
+ echo ""
83
+ echo "✓ OMG updated successfully"
84
+ echo " Restart Claude Code if you see new commands"
package/.coveragerc ADDED
@@ -0,0 +1,26 @@
1
+ [run]
2
+ source = .
3
+ omit =
4
+ tests/*
5
+ */__pycache__/*
6
+ .venv/*
7
+ setup.py
8
+ */site-packages/*
9
+
10
+ [report]
11
+ exclude_lines =
12
+ pragma: no cover
13
+ def __repr__
14
+ raise AssertionError
15
+ raise NotImplementedError
16
+ if __name__ == .__main__.:
17
+ if TYPE_CHECKING:
18
+ @abstractmethod
19
+ @abc.abstractmethod
20
+ pass
21
+
22
+ precision = 2
23
+ show_missing = True
24
+
25
+ [html]
26
+ directory = htmlcov
package/.mcp.json CHANGED
@@ -2,19 +2,19 @@
2
2
  "mcpServers": {
3
3
  "context7": {
4
4
  "command": "npx",
5
- "args": ["-y", "@upstash/context7-mcp"]
5
+ "args": ["@upstash/context7-mcp@2.1.3"]
6
6
  },
7
7
  "filesystem": {
8
8
  "command": "npx",
9
- "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
9
+ "args": ["@modelcontextprotocol/server-filesystem@2026.1.14", "."]
10
10
  },
11
11
  "websearch": {
12
12
  "command": "npx",
13
- "args": ["-y", "@zhafron/mcp-web-search"]
13
+ "args": ["@zhafron/mcp-web-search@1.2.2"]
14
14
  },
15
15
  "chrome-devtools": {
16
16
  "command": "npx",
17
- "args": ["-y", "chrome-devtools-mcp@latest"]
17
+ "args": ["chrome-devtools-mcp@0.19.0"]
18
18
  },
19
19
  "omg-memory": {
20
20
  "type": "http",