@trac3er/oh-my-god 2.0.5 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/.agents/skills/omg/AGENTS.fragment.md +57 -4
  2. package/.agents/skills/omg/claim-judge/SKILL.md +11 -0
  3. package/.agents/skills/omg/claim-judge/openai.yaml +13 -0
  4. package/.agents/skills/omg/codex-rules.md +33 -0
  5. package/.agents/skills/omg/plan-council/SKILL.md +11 -0
  6. package/.agents/skills/omg/plan-council/openai.yaml +12 -0
  7. package/.agents/skills/omg/proof-gate/SKILL.md +11 -0
  8. package/.agents/skills/omg/proof-gate/openai.yaml +13 -0
  9. package/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
  10. package/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
  11. package/.claude-plugin/marketplace.json +5 -5
  12. package/.claude-plugin/plugin.json +1 -1
  13. package/.claude-plugin/scripts/uninstall.sh +1 -1
  14. package/.mcp.json +0 -22
  15. package/CHANGELOG.md +13 -0
  16. package/OMG-setup.sh +64 -14
  17. package/OMG_COMPAT_CONTRACT.md +1 -1
  18. package/README.md +8 -6
  19. package/agents/omg-security-auditor.md +1 -1
  20. package/artifacts/release/.agents/skills/omg/AGENTS.fragment.md +52 -0
  21. package/artifacts/release/.agents/skills/omg/algorithms/SKILL.md +11 -0
  22. package/artifacts/release/.agents/skills/omg/algorithms/openai.yaml +11 -0
  23. package/artifacts/release/.agents/skills/omg/api-twin/SKILL.md +11 -0
  24. package/artifacts/release/.agents/skills/omg/api-twin/openai.yaml +12 -0
  25. package/artifacts/release/.agents/skills/omg/codex-mcp.toml +4 -0
  26. package/artifacts/release/.agents/skills/omg/codex-rules.md +29 -0
  27. package/artifacts/release/.agents/skills/omg/control-plane/SKILL.md +11 -0
  28. package/artifacts/release/.agents/skills/omg/control-plane/openai.yaml +14 -0
  29. package/artifacts/release/.agents/skills/omg/data-lineage/SKILL.md +11 -0
  30. package/artifacts/release/.agents/skills/omg/data-lineage/openai.yaml +12 -0
  31. package/artifacts/release/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
  32. package/artifacts/release/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
  33. package/artifacts/release/.agents/skills/omg/eval-gate/SKILL.md +11 -0
  34. package/artifacts/release/.agents/skills/omg/eval-gate/openai.yaml +12 -0
  35. package/artifacts/release/.agents/skills/omg/health/SKILL.md +11 -0
  36. package/artifacts/release/.agents/skills/omg/health/openai.yaml +11 -0
  37. package/artifacts/release/.agents/skills/omg/hook-governor/SKILL.md +11 -0
  38. package/artifacts/release/.agents/skills/omg/hook-governor/openai.yaml +11 -0
  39. package/artifacts/release/.agents/skills/omg/incident-replay/SKILL.md +11 -0
  40. package/artifacts/release/.agents/skills/omg/incident-replay/openai.yaml +12 -0
  41. package/artifacts/release/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
  42. package/artifacts/release/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
  43. package/artifacts/release/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
  44. package/artifacts/release/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
  45. package/artifacts/release/.agents/skills/omg/preflight/SKILL.md +11 -0
  46. package/artifacts/release/.agents/skills/omg/preflight/openai.yaml +12 -0
  47. package/artifacts/release/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
  48. package/artifacts/release/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
  49. package/artifacts/release/.agents/skills/omg/robotics/SKILL.md +11 -0
  50. package/artifacts/release/.agents/skills/omg/robotics/openai.yaml +11 -0
  51. package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
  52. package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
  53. package/artifacts/release/.agents/skills/omg/security-check/SKILL.md +11 -0
  54. package/artifacts/release/.agents/skills/omg/security-check/openai.yaml +13 -0
  55. package/artifacts/release/.agents/skills/omg/tracebank/SKILL.md +11 -0
  56. package/artifacts/release/.agents/skills/omg/tracebank/openai.yaml +12 -0
  57. package/artifacts/release/.agents/skills/omg/vision/SKILL.md +11 -0
  58. package/artifacts/release/.agents/skills/omg/vision/openai.yaml +11 -0
  59. package/artifacts/release/.claude-plugin/marketplace.json +36 -0
  60. package/artifacts/release/.claude-plugin/plugin.json +23 -0
  61. package/artifacts/release/.mcp.json +40 -0
  62. package/artifacts/release/OMG_COMPAT_CONTRACT.md +92 -0
  63. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +52 -0
  64. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/SKILL.md +11 -0
  65. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/openai.yaml +11 -0
  66. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/SKILL.md +11 -0
  67. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/openai.yaml +12 -0
  68. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-mcp.toml +4 -0
  69. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +29 -0
  70. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/SKILL.md +11 -0
  71. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/openai.yaml +14 -0
  72. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/SKILL.md +11 -0
  73. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/openai.yaml +12 -0
  74. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
  75. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
  76. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/SKILL.md +11 -0
  77. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/openai.yaml +12 -0
  78. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/SKILL.md +11 -0
  79. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/openai.yaml +11 -0
  80. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/SKILL.md +11 -0
  81. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/openai.yaml +11 -0
  82. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/SKILL.md +11 -0
  83. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/openai.yaml +12 -0
  84. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
  85. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
  86. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
  87. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
  88. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/SKILL.md +11 -0
  89. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/openai.yaml +12 -0
  90. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
  91. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
  92. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/SKILL.md +11 -0
  93. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/openai.yaml +11 -0
  94. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
  95. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
  96. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/SKILL.md +11 -0
  97. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/openai.yaml +13 -0
  98. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/SKILL.md +11 -0
  99. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/openai.yaml +12 -0
  100. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/SKILL.md +11 -0
  101. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/openai.yaml +11 -0
  102. package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +92 -0
  103. package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +45 -0
  104. package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +48 -0
  105. package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +151 -0
  106. package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +47 -0
  107. package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +47 -0
  108. package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +47 -0
  109. package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +45 -0
  110. package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +97 -0
  111. package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +47 -0
  112. package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +48 -0
  113. package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +53 -0
  114. package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +48 -0
  115. package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +49 -0
  116. package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +45 -0
  117. package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +54 -0
  118. package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +50 -0
  119. package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +47 -0
  120. package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +45 -0
  121. package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +296 -0
  122. package/artifacts/release/dist/enterprise/manifest.json +243 -0
  123. package/artifacts/release/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +7 -0
  124. package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/SKILL.md +11 -0
  125. package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/openai.yaml +11 -0
  126. package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/SKILL.md +11 -0
  127. package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/openai.yaml +12 -0
  128. package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-mcp.toml +4 -0
  129. package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/SKILL.md +11 -0
  130. package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/openai.yaml +14 -0
  131. package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/SKILL.md +11 -0
  132. package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/openai.yaml +12 -0
  133. package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/SKILL.md +11 -0
  134. package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/openai.yaml +12 -0
  135. package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/SKILL.md +11 -0
  136. package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/openai.yaml +12 -0
  137. package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/SKILL.md +11 -0
  138. package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/openai.yaml +11 -0
  139. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/SKILL.md +11 -0
  140. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/openai.yaml +11 -0
  141. package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/SKILL.md +11 -0
  142. package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/openai.yaml +12 -0
  143. package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/SKILL.md +11 -0
  144. package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/openai.yaml +11 -0
  145. package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +11 -0
  146. package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +13 -0
  147. package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/SKILL.md +11 -0
  148. package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/openai.yaml +12 -0
  149. package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +11 -0
  150. package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +12 -0
  151. package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/SKILL.md +11 -0
  152. package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/openai.yaml +11 -0
  153. package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +11 -0
  154. package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +12 -0
  155. package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/SKILL.md +11 -0
  156. package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/openai.yaml +13 -0
  157. package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/SKILL.md +11 -0
  158. package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/openai.yaml +12 -0
  159. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +11 -0
  160. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +11 -0
  161. package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +36 -0
  162. package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +23 -0
  163. package/artifacts/release/dist/public/bundle/.mcp.json +40 -0
  164. package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +92 -0
  165. package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +45 -0
  166. package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +48 -0
  167. package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +151 -0
  168. package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +47 -0
  169. package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +47 -0
  170. package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +47 -0
  171. package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +45 -0
  172. package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +97 -0
  173. package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +47 -0
  174. package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +48 -0
  175. package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +53 -0
  176. package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +48 -0
  177. package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +49 -0
  178. package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +45 -0
  179. package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +54 -0
  180. package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +50 -0
  181. package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +47 -0
  182. package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +45 -0
  183. package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +296 -0
  184. package/artifacts/release/dist/public/bundle/settings.json +526 -0
  185. package/artifacts/release/dist/public/manifest.json +255 -0
  186. package/artifacts/release/registry/bundles/algorithms.yaml +45 -0
  187. package/artifacts/release/registry/bundles/api-twin.yaml +48 -0
  188. package/artifacts/release/registry/bundles/control-plane.yaml +151 -0
  189. package/artifacts/release/registry/bundles/data-lineage.yaml +47 -0
  190. package/artifacts/release/registry/bundles/delta-classifier.yaml +47 -0
  191. package/artifacts/release/registry/bundles/eval-gate.yaml +47 -0
  192. package/artifacts/release/registry/bundles/health.yaml +45 -0
  193. package/artifacts/release/registry/bundles/hook-governor.yaml +97 -0
  194. package/artifacts/release/registry/bundles/incident-replay.yaml +47 -0
  195. package/artifacts/release/registry/bundles/lsp-pack.yaml +48 -0
  196. package/artifacts/release/registry/bundles/mcp-fabric.yaml +53 -0
  197. package/artifacts/release/registry/bundles/preflight.yaml +48 -0
  198. package/artifacts/release/registry/bundles/remote-supervisor.yaml +49 -0
  199. package/artifacts/release/registry/bundles/robotics.yaml +45 -0
  200. package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +54 -0
  201. package/artifacts/release/registry/bundles/security-check.yaml +50 -0
  202. package/artifacts/release/registry/bundles/tracebank.yaml +47 -0
  203. package/artifacts/release/registry/bundles/vision.yaml +45 -0
  204. package/artifacts/release/registry/omg-capability.schema.json +296 -0
  205. package/artifacts/release/settings.json +594 -0
  206. package/build/lib/agents/__init__.py +1 -0
  207. package/build/lib/agents/designer.md +67 -0
  208. package/build/lib/agents/explore.md +60 -0
  209. package/build/lib/agents/model_roles.py +196 -0
  210. package/build/lib/agents/omg-api-builder.md +23 -0
  211. package/build/lib/agents/omg-architect-mode.md +41 -0
  212. package/build/lib/agents/omg-architect.md +13 -0
  213. package/build/lib/agents/omg-backend-engineer.md +41 -0
  214. package/build/lib/agents/omg-critic.md +16 -0
  215. package/build/lib/agents/omg-database-engineer.md +41 -0
  216. package/build/lib/agents/omg-escalation-router.md +17 -0
  217. package/build/lib/agents/omg-executor.md +12 -0
  218. package/build/lib/agents/omg-frontend-designer.md +41 -0
  219. package/build/lib/agents/omg-implement-mode.md +49 -0
  220. package/build/lib/agents/omg-infra-engineer.md +41 -0
  221. package/build/lib/agents/omg-qa-tester.md +16 -0
  222. package/build/lib/agents/omg-research-mode.md +41 -0
  223. package/build/lib/agents/omg-security-auditor.md +41 -0
  224. package/build/lib/agents/omg-testing-engineer.md +41 -0
  225. package/build/lib/agents/plan.md +80 -0
  226. package/build/lib/agents/quick_task.md +64 -0
  227. package/build/lib/agents/reviewer.md +83 -0
  228. package/build/lib/agents/task.md +71 -0
  229. package/build/lib/commands/OMG:ai-commit.md +113 -0
  230. package/build/lib/commands/OMG:api-twin.md +22 -0
  231. package/build/lib/commands/OMG:arch.md +313 -0
  232. package/build/lib/commands/OMG:ccg.md +22 -0
  233. package/build/lib/commands/OMG:compat.md +57 -0
  234. package/build/lib/commands/OMG:cost.md +181 -0
  235. package/build/lib/commands/OMG:crazy.md +125 -0
  236. package/build/lib/commands/OMG:create-agent.md +183 -0
  237. package/build/lib/commands/OMG:deps.md +248 -0
  238. package/build/lib/commands/OMG:doctor.md +37 -0
  239. package/build/lib/commands/OMG:domain-init.md +11 -0
  240. package/build/lib/commands/OMG:escalate.md +52 -0
  241. package/build/lib/commands/OMG:health-check.md +45 -0
  242. package/build/lib/commands/OMG:init.md +134 -0
  243. package/build/lib/commands/OMG:mode.md +44 -0
  244. package/build/lib/commands/OMG:preflight.md +26 -0
  245. package/build/lib/commands/OMG:project-init.md +11 -0
  246. package/build/lib/commands/OMG:ralph-start.md +43 -0
  247. package/build/lib/commands/OMG:ralph-stop.md +23 -0
  248. package/build/lib/commands/OMG:security-check.md +28 -0
  249. package/build/lib/commands/OMG:session-branch.md +85 -0
  250. package/build/lib/commands/OMG:session-fork.md +53 -0
  251. package/build/lib/commands/OMG:session-merge.md +134 -0
  252. package/build/lib/commands/OMG:setup.md +78 -0
  253. package/build/lib/commands/OMG:stats.md +225 -0
  254. package/build/lib/commands/OMG:teams.md +39 -0
  255. package/build/lib/commands/OMG:theme.md +44 -0
  256. package/build/lib/commands/__init__.py +1 -0
  257. package/build/lib/control_plane/__init__.py +2 -0
  258. package/build/lib/control_plane/openapi.yaml +260 -0
  259. package/build/lib/control_plane/server.py +147 -0
  260. package/build/lib/control_plane/service.py +222 -0
  261. package/build/lib/hooks/__init__.py +0 -0
  262. package/build/lib/hooks/_agent_registry.py +423 -0
  263. package/build/lib/hooks/_analytics.py +291 -0
  264. package/build/lib/hooks/_budget.py +31 -0
  265. package/build/lib/hooks/_common.py +569 -0
  266. package/build/lib/hooks/_compression_optimizer.py +119 -0
  267. package/build/lib/hooks/_cost_ledger.py +176 -0
  268. package/build/lib/hooks/_learnings.py +126 -0
  269. package/build/lib/hooks/_memory.py +103 -0
  270. package/build/lib/hooks/_protected_context.py +150 -0
  271. package/build/lib/hooks/_token_counter.py +221 -0
  272. package/build/lib/hooks/branch_manager.py +236 -0
  273. package/build/lib/hooks/budget_governor.py +232 -0
  274. package/build/lib/hooks/circuit-breaker.py +270 -0
  275. package/build/lib/hooks/compression_feedback.py +254 -0
  276. package/build/lib/hooks/config-guard.py +216 -0
  277. package/build/lib/hooks/context_pressure.py +53 -0
  278. package/build/lib/hooks/credential_store.py +1020 -0
  279. package/build/lib/hooks/fetch-rate-limits.py +212 -0
  280. package/build/lib/hooks/firewall.py +48 -0
  281. package/build/lib/hooks/hashline-formatter-bridge.py +224 -0
  282. package/build/lib/hooks/hashline-injector.py +273 -0
  283. package/build/lib/hooks/hashline-validator.py +216 -0
  284. package/build/lib/hooks/idle-detector.py +95 -0
  285. package/build/lib/hooks/intentgate-keyword-detector.py +188 -0
  286. package/build/lib/hooks/magic-keyword-router.py +195 -0
  287. package/build/lib/hooks/policy_engine.py +641 -0
  288. package/build/lib/hooks/post-tool-failure.py +19 -0
  289. package/build/lib/hooks/post-write.py +219 -0
  290. package/build/lib/hooks/post_write.py +46 -0
  291. package/build/lib/hooks/pre-compact.py +398 -0
  292. package/build/lib/hooks/pre-tool-inject.py +98 -0
  293. package/build/lib/hooks/prompt-enhancer.py +672 -0
  294. package/build/lib/hooks/quality-runner.py +191 -0
  295. package/build/lib/hooks/query.py +512 -0
  296. package/build/lib/hooks/secret-guard.py +61 -0
  297. package/build/lib/hooks/secret_audit.py +144 -0
  298. package/build/lib/hooks/security_validators.py +75 -0
  299. package/build/lib/hooks/session-end-capture.py +137 -0
  300. package/build/lib/hooks/session-start.py +277 -0
  301. package/build/lib/hooks/setup_wizard.py +646 -0
  302. package/build/lib/hooks/shadow_manager.py +344 -0
  303. package/build/lib/hooks/state_migration.py +225 -0
  304. package/build/lib/hooks/stop-gate.py +7 -0
  305. package/build/lib/hooks/stop_dispatcher.py +945 -0
  306. package/build/lib/hooks/test-validator.py +361 -0
  307. package/build/lib/hooks/test_generator_hook.py +123 -0
  308. package/build/lib/hooks/todo-state-tracker.py +114 -0
  309. package/build/lib/hooks/tool-ledger.py +149 -0
  310. package/build/lib/hooks/trust_review.py +585 -0
  311. package/build/lib/plugins/README.md +60 -0
  312. package/build/lib/plugins/__init__.py +1 -0
  313. package/build/lib/plugins/advanced/commands/OMG:code-review.md +114 -0
  314. package/build/lib/plugins/advanced/commands/OMG:deep-plan.md +265 -0
  315. package/build/lib/plugins/advanced/commands/OMG:handoff.md +115 -0
  316. package/build/lib/plugins/advanced/commands/OMG:learn.md +110 -0
  317. package/build/lib/plugins/advanced/commands/OMG:maintainer.md +31 -0
  318. package/build/lib/plugins/advanced/commands/OMG:ralph-start.md +43 -0
  319. package/build/lib/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
  320. package/build/lib/plugins/advanced/commands/OMG:security-review.md +16 -0
  321. package/build/lib/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
  322. package/build/lib/plugins/advanced/commands/OMG:ship.md +46 -0
  323. package/build/lib/plugins/advanced/plugin.json +87 -0
  324. package/build/lib/plugins/core/plugin.json +145 -0
  325. package/build/lib/plugins/dephealth/__init__.py +0 -0
  326. package/build/lib/plugins/dephealth/cve_scanner.py +188 -0
  327. package/build/lib/plugins/dephealth/license_checker.py +135 -0
  328. package/build/lib/plugins/dephealth/manifest_detector.py +423 -0
  329. package/build/lib/plugins/dephealth/vuln_analyzer.py +169 -0
  330. package/build/lib/plugins/testgen/__init__.py +0 -0
  331. package/build/lib/plugins/testgen/codamosa_engine.py +402 -0
  332. package/build/lib/plugins/testgen/edge_case_synthesizer.py +184 -0
  333. package/build/lib/plugins/testgen/framework_detector.py +271 -0
  334. package/build/lib/plugins/testgen/skeleton_generator.py +219 -0
  335. package/build/lib/plugins/viz/__init__.py +0 -0
  336. package/build/lib/plugins/viz/ast_parser.py +139 -0
  337. package/build/lib/plugins/viz/diagram_generator.py +192 -0
  338. package/build/lib/plugins/viz/graph_builder.py +444 -0
  339. package/build/lib/plugins/viz/native_parsers.py +259 -0
  340. package/build/lib/plugins/viz/regex_parser.py +112 -0
  341. package/build/lib/registry/__init__.py +1 -0
  342. package/build/lib/registry/bundles/algorithms.yaml +45 -0
  343. package/build/lib/registry/bundles/api-twin.yaml +48 -0
  344. package/build/lib/registry/bundles/claim-judge.yaml +49 -0
  345. package/build/lib/registry/bundles/control-plane.yaml +151 -0
  346. package/build/lib/registry/bundles/data-lineage.yaml +47 -0
  347. package/build/lib/registry/bundles/delta-classifier.yaml +47 -0
  348. package/build/lib/registry/bundles/eval-gate.yaml +47 -0
  349. package/build/lib/registry/bundles/health.yaml +45 -0
  350. package/build/lib/registry/bundles/hook-governor.yaml +97 -0
  351. package/build/lib/registry/bundles/incident-replay.yaml +47 -0
  352. package/build/lib/registry/bundles/lsp-pack.yaml +48 -0
  353. package/build/lib/registry/bundles/mcp-fabric.yaml +53 -0
  354. package/build/lib/registry/bundles/plan-council.yaml +51 -0
  355. package/build/lib/registry/bundles/preflight.yaml +48 -0
  356. package/build/lib/registry/bundles/proof-gate.yaml +49 -0
  357. package/build/lib/registry/bundles/remote-supervisor.yaml +49 -0
  358. package/build/lib/registry/bundles/robotics.yaml +45 -0
  359. package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +54 -0
  360. package/build/lib/registry/bundles/security-check.yaml +50 -0
  361. package/build/lib/registry/bundles/test-intent-lock.yaml +49 -0
  362. package/build/lib/registry/bundles/tracebank.yaml +47 -0
  363. package/build/lib/registry/bundles/vision.yaml +45 -0
  364. package/build/lib/registry/omg-capability.schema.json +296 -0
  365. package/build/lib/registry/verify_artifact.py +90 -0
  366. package/build/lib/runtime/__init__.py +32 -0
  367. package/build/lib/runtime/adapters/__init__.py +13 -0
  368. package/build/lib/runtime/adapters/claude.py +63 -0
  369. package/build/lib/runtime/adapters/gpt.py +56 -0
  370. package/build/lib/runtime/adapters/local.py +56 -0
  371. package/build/lib/runtime/adoption.py +212 -0
  372. package/build/lib/runtime/api_twin.py +450 -0
  373. package/build/lib/runtime/asset_loader.py +62 -0
  374. package/build/lib/runtime/business_workflow.py +234 -0
  375. package/build/lib/runtime/claim_judge.py +95 -0
  376. package/build/lib/runtime/cli_provider.py +85 -0
  377. package/build/lib/runtime/compat.py +1459 -0
  378. package/build/lib/runtime/contract_compiler.py +1918 -0
  379. package/build/lib/runtime/custom_agent_loader.py +366 -0
  380. package/build/lib/runtime/data_lineage.py +73 -0
  381. package/build/lib/runtime/delta_classifier.py +81 -0
  382. package/build/lib/runtime/dispatcher.py +47 -0
  383. package/build/lib/runtime/domain_packs.py +46 -0
  384. package/build/lib/runtime/ecosystem.py +371 -0
  385. package/build/lib/runtime/eval_gate.py +96 -0
  386. package/build/lib/runtime/guide_assert.py +45 -0
  387. package/build/lib/runtime/incident_replay.py +47 -0
  388. package/build/lib/runtime/legacy_compat.py +7 -0
  389. package/build/lib/runtime/mcp_config_writers.py +233 -0
  390. package/build/lib/runtime/mcp_lifecycle.py +175 -0
  391. package/build/lib/runtime/mcp_memory_server.py +135 -0
  392. package/build/lib/runtime/memory_parsers/__init__.py +0 -0
  393. package/build/lib/runtime/memory_parsers/chatgpt_parser.py +257 -0
  394. package/build/lib/runtime/memory_parsers/claude_import.py +107 -0
  395. package/build/lib/runtime/memory_parsers/export.py +97 -0
  396. package/build/lib/runtime/memory_parsers/gemini_import.py +91 -0
  397. package/build/lib/runtime/memory_parsers/kimi_import.py +91 -0
  398. package/build/lib/runtime/memory_store.py +215 -0
  399. package/build/lib/runtime/omc_compat.py +7 -0
  400. package/build/lib/runtime/omg_compat_contract_snapshot.json +916 -0
  401. package/build/lib/runtime/omg_contract_snapshot.json +916 -0
  402. package/build/lib/runtime/omg_mcp_server.py +212 -0
  403. package/build/lib/runtime/playwright_pack.py +169 -0
  404. package/build/lib/runtime/preflight.py +117 -0
  405. package/build/lib/runtime/proof_chain.py +228 -0
  406. package/build/lib/runtime/proof_gate.py +163 -0
  407. package/build/lib/runtime/providers/__init__.py +0 -0
  408. package/build/lib/runtime/providers/codex_provider.py +102 -0
  409. package/build/lib/runtime/providers/gemini_provider.py +109 -0
  410. package/build/lib/runtime/providers/kimi_provider.py +132 -0
  411. package/build/lib/runtime/remote_supervisor.py +64 -0
  412. package/build/lib/runtime/runtime_profile.py +61 -0
  413. package/build/lib/runtime/security_check.py +965 -0
  414. package/build/lib/runtime/subagent_dispatcher.py +469 -0
  415. package/build/lib/runtime/team_router.py +1167 -0
  416. package/build/lib/runtime/test_intent_lock.py +91 -0
  417. package/build/lib/runtime/tmux_session_manager.py +169 -0
  418. package/build/lib/runtime/tracebank.py +95 -0
  419. package/build/lib/runtime/untrusted_content.py +269 -0
  420. package/commands/OMG:doctor.md +37 -0
  421. package/commands/OMG:preflight.md +1 -1
  422. package/control_plane/openapi.yaml +33 -1
  423. package/control_plane/server.py +26 -2
  424. package/control_plane/service.py +37 -0
  425. package/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +50 -3
  426. package/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +29 -0
  427. package/dist/enterprise/bundle/.claude-plugin/marketplace.json +5 -5
  428. package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  429. package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  430. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
  431. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:deep-plan.md +221 -0
  432. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
  433. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
  434. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
  435. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
  436. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
  437. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
  438. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
  439. package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
  440. package/dist/enterprise/bundle/plugins/advanced/plugin.json +87 -0
  441. package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  442. package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  443. package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +91 -1
  444. package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  445. package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  446. package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  447. package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  448. package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
  449. package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  450. package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  451. package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  452. package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  453. package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  454. package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  455. package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  456. package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  457. package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  458. package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
  459. package/dist/enterprise/bundle/registry/omg-capability.schema.json +217 -1
  460. package/dist/enterprise/bundle/settings.json +219 -6
  461. package/dist/enterprise/manifest.json +73 -25
  462. package/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +50 -3
  463. package/dist/public/bundle/.agents/skills/omg/codex-rules.md +29 -0
  464. package/dist/public/bundle/.claude-plugin/marketplace.json +5 -5
  465. package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  466. package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  467. package/dist/public/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
  468. package/dist/public/bundle/plugins/advanced/commands/OMG:deep-plan.md +221 -0
  469. package/dist/public/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
  470. package/dist/public/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
  471. package/dist/public/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
  472. package/dist/public/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
  473. package/dist/public/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
  474. package/dist/public/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
  475. package/dist/public/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
  476. package/dist/public/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
  477. package/dist/public/bundle/plugins/advanced/plugin.json +87 -0
  478. package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  479. package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  480. package/dist/public/bundle/registry/bundles/control-plane.yaml +91 -1
  481. package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  482. package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  483. package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  484. package/dist/public/bundle/registry/bundles/health.yaml +1 -1
  485. package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
  486. package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  487. package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  488. package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  489. package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  490. package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  491. package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  492. package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  493. package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  494. package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  495. package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
  496. package/dist/public/bundle/registry/omg-capability.schema.json +217 -1
  497. package/dist/public/bundle/settings.json +218 -3
  498. package/dist/public/manifest.json +73 -25
  499. package/docs/proof.md +16 -6
  500. package/docs/release-checklist.md +2 -0
  501. package/hooks/policy_engine.py +122 -17
  502. package/hooks/setup_wizard.py +52 -12
  503. package/hooks/shadow_manager.py +21 -0
  504. package/package.json +2 -2
  505. package/plugins/README.md +5 -1
  506. package/plugins/advanced/commands/OMG:deep-plan.md +50 -6
  507. package/plugins/advanced/commands/OMG:ship.md +1 -1
  508. package/plugins/advanced/plugin.json +1 -10
  509. package/plugins/core/plugin.json +7 -1
  510. package/pyproject.toml +2 -2
  511. package/registry/bundles/algorithms.yaml +1 -1
  512. package/registry/bundles/api-twin.yaml +1 -1
  513. package/registry/bundles/claim-judge.yaml +49 -0
  514. package/registry/bundles/control-plane.yaml +91 -1
  515. package/registry/bundles/data-lineage.yaml +1 -1
  516. package/registry/bundles/delta-classifier.yaml +1 -1
  517. package/registry/bundles/eval-gate.yaml +1 -1
  518. package/registry/bundles/health.yaml +1 -1
  519. package/registry/bundles/hook-governor.yaml +1 -1
  520. package/registry/bundles/incident-replay.yaml +1 -1
  521. package/registry/bundles/lsp-pack.yaml +1 -1
  522. package/registry/bundles/mcp-fabric.yaml +1 -1
  523. package/registry/bundles/plan-council.yaml +51 -0
  524. package/registry/bundles/preflight.yaml +1 -1
  525. package/registry/bundles/proof-gate.yaml +49 -0
  526. package/registry/bundles/remote-supervisor.yaml +1 -1
  527. package/registry/bundles/robotics.yaml +1 -1
  528. package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  529. package/registry/bundles/security-check.yaml +1 -1
  530. package/registry/bundles/test-intent-lock.yaml +49 -0
  531. package/registry/bundles/tracebank.yaml +1 -1
  532. package/registry/bundles/vision.yaml +1 -1
  533. package/registry/omg-capability.schema.json +217 -1
  534. package/runtime/adoption.py +1 -1
  535. package/runtime/api_twin.py +279 -8
  536. package/runtime/business_workflow.py +14 -0
  537. package/runtime/claim_judge.py +95 -0
  538. package/runtime/compat.py +139 -0
  539. package/runtime/contract_compiler.py +1099 -28
  540. package/runtime/ecosystem.py +1 -1
  541. package/runtime/eval_gate.py +48 -2
  542. package/runtime/mcp_config_writers.py +12 -0
  543. package/runtime/mcp_lifecycle.py +31 -9
  544. package/runtime/mcp_memory_server.py +1 -1
  545. package/runtime/omg_compat_contract_snapshot.json +1 -1
  546. package/runtime/omg_contract_snapshot.json +1 -1
  547. package/runtime/omg_mcp_server.py +13 -8
  548. package/runtime/playwright_pack.py +169 -0
  549. package/runtime/preflight.py +45 -1
  550. package/runtime/proof_chain.py +228 -0
  551. package/runtime/proof_gate.py +163 -0
  552. package/runtime/security_check.py +523 -22
  553. package/runtime/team_router.py +6 -6
  554. package/runtime/test_intent_lock.py +91 -0
  555. package/runtime/tracebank.py +43 -1
  556. package/runtime/untrusted_content.py +172 -5
  557. package/scripts/check-omg-public-ready.py +77 -0
  558. package/scripts/omg.py +28 -9
  559. package/scripts/verify-standalone.sh +7 -0
  560. package/settings.json +219 -6
@@ -8,7 +8,7 @@ import subprocess
8
8
  from typing import Any
9
9
 
10
10
  ECOSYSTEM_SCHEMA = "OmgEcosystemCatalog"
11
- ECOSYSTEM_CATALOG_VERSION = "2.0.5"
11
+ ECOSYSTEM_CATALOG_VERSION = "2.0.7"
12
12
  ECOSYSTEM_LOCK_SCHEMA = "OmgEcosystemLock"
13
13
  DEFAULT_ECOSYSTEM_REPO_DIR = ".omg/ecosystem/repos"
14
14
  DEFAULT_ECOSYSTEM_LOCK_PATH = ".omg/state/ecosystem-lock.json"
@@ -2,33 +2,60 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  from datetime import datetime, timezone
5
+ import getpass
5
6
  import json
7
+ import os
6
8
  from pathlib import Path
9
+ import platform
10
+ import socket
7
11
  from typing import Any
12
+ from uuid import uuid4
8
13
 
9
14
 
10
15
  EVAL_GATE_LATEST_REL_PATH = Path(".omg") / "evals" / "latest.json"
11
16
  EVAL_GATE_HISTORY_REL_PATH = Path(".omg") / "evals" / "history.jsonl"
17
+ EVAL_GATE_TRACE_LINKS_REL_PATH = Path(".omg") / "evals" / "trace-links.jsonl"
12
18
 
13
19
 
14
20
  def _now() -> str:
15
21
  return datetime.now(timezone.utc).isoformat()
16
22
 
17
23
 
24
+ def _executor() -> dict[str, str | int]:
25
+ return {
26
+ "user": getpass.getuser(),
27
+ "pid": os.getpid(),
28
+ }
29
+
30
+
31
+ def _environment() -> dict[str, str]:
32
+ return {
33
+ "hostname": socket.gethostname(),
34
+ "platform": platform.platform(),
35
+ }
36
+
37
+
18
38
  def evaluate_trace(
19
39
  project_dir: str,
20
40
  *,
21
41
  trace_id: str,
22
42
  suites: list[str],
23
43
  metrics: dict[str, float],
44
+ lineage: dict[str, Any] | None = None,
24
45
  regression_threshold: float = 0.95,
25
46
  ) -> dict[str, Any]:
47
+ eval_id = f"eval-{uuid4().hex}"
26
48
  scorecard = {name: float(metrics.get(name, 0.0)) for name in suites}
27
49
  regressed = any(score < regression_threshold for score in scorecard.values())
28
50
  result = {
29
51
  "schema": "EvalGateResult",
52
+ "eval_id": eval_id,
30
53
  "trace_id": trace_id,
54
+ "lineage": lineage or {},
31
55
  "evaluated_at": _now(),
56
+ "timestamp": _now(),
57
+ "executor": _executor(),
58
+ "environment": _environment(),
32
59
  "status": "fail" if regressed else "ok",
33
60
  "suites": suites,
34
61
  "metrics": scorecard,
@@ -40,11 +67,30 @@ def evaluate_trace(
40
67
 
41
68
  latest_path = Path(project_dir) / EVAL_GATE_LATEST_REL_PATH
42
69
  latest_path.parent.mkdir(parents=True, exist_ok=True)
43
- latest_path.write_text(json.dumps(result, indent=2, ensure_ascii=True) + "\n", encoding="utf-8")
70
+ _ = latest_path.write_text(json.dumps(result, indent=2, ensure_ascii=True) + "\n", encoding="utf-8")
71
+
72
+ _ = link_trace(project_dir, eval_id=eval_id, trace_id=trace_id)
44
73
 
45
74
  history_path = Path(project_dir) / EVAL_GATE_HISTORY_REL_PATH
46
75
  with history_path.open("a", encoding="utf-8") as handle:
47
- handle.write(json.dumps(result, ensure_ascii=True) + "\n")
76
+ _ = handle.write(json.dumps(result, ensure_ascii=True) + "\n")
48
77
 
49
78
  result["path"] = EVAL_GATE_LATEST_REL_PATH.as_posix()
50
79
  return result
80
+
81
+
82
+ def link_trace(project_dir: str, *, eval_id: str, trace_id: str) -> dict[str, Any]:
83
+ link = {
84
+ "schema": "EvalTraceLink",
85
+ "eval_id": eval_id,
86
+ "trace_id": trace_id,
87
+ "timestamp": _now(),
88
+ "executor": _executor(),
89
+ "environment": _environment(),
90
+ }
91
+ path = Path(project_dir) / EVAL_GATE_TRACE_LINKS_REL_PATH
92
+ path.parent.mkdir(parents=True, exist_ok=True)
93
+ with path.open("a", encoding="utf-8") as handle:
94
+ _ = handle.write(json.dumps(link, ensure_ascii=True) + "\n")
95
+ link["path"] = EVAL_GATE_TRACE_LINKS_REL_PATH.as_posix()
96
+ return link
@@ -35,6 +35,18 @@ def _write_json(path: Path, data: dict[str, object]) -> None:
35
35
  _atomic_write_text(path, json.dumps(data, indent=2) + "\n")
36
36
 
37
37
 
38
+ def get_managed_python_path(claude_config_dir: str | None = None) -> str:
39
+ """Return the absolute path to the managed OMG venv Python interpreter.
40
+
41
+ Falls back to ``CLAUDE_CONFIG_DIR`` env var, then ``~/.claude``.
42
+ """
43
+ if claude_config_dir is None:
44
+ claude_config_dir = os.environ.get(
45
+ "CLAUDE_CONFIG_DIR", str(Path.home() / ".claude")
46
+ )
47
+ return str(Path(claude_config_dir) / "omg-runtime" / ".venv" / "bin" / "python")
48
+
49
+
38
50
  def _validated_server_input(server_url: str, server_name: str) -> tuple[str, str]:
39
51
  return validate_server_url(server_url), validate_server_name(server_name)
40
52
 
@@ -87,16 +87,24 @@ def start_memory_server() -> dict[str, Any]:
87
87
  stderr=subprocess.DEVNULL,
88
88
  )
89
89
 
90
- pid_path.write_text(str(proc.pid))
91
-
92
90
  health_url = get_server_url().replace("/mcp", "/health")
93
91
  if _wait_for_health(health_url):
92
+ pid_path.write_text(str(proc.pid))
94
93
  return {"status": "started", "pid": proc.pid, "url": get_server_url()}
95
- else:
96
- return {
97
- "status": "error",
98
- "message": "Server did not respond within timeout",
99
- }
94
+ try:
95
+ proc.terminate()
96
+ proc.wait(timeout=2)
97
+ except Exception:
98
+ try:
99
+ proc.kill()
100
+ except Exception:
101
+ pass
102
+ if pid_path.exists():
103
+ pid_path.unlink()
104
+ return {
105
+ "status": "error",
106
+ "message": "Server did not respond within timeout",
107
+ }
100
108
  except Exception as exc:
101
109
  return {"status": "error", "message": str(exc)}
102
110
 
@@ -141,13 +149,27 @@ def check_memory_server() -> dict[str, Any]:
141
149
  }
142
150
 
143
151
 
152
+ _HTTP_MEMORY_RESTRICTED_PRESETS = frozenset({"safe", "balanced"})
153
+
154
+
155
+ def _get_current_preset() -> str:
156
+ return os.environ.get("OMG_PRESET", "safe")
157
+
158
+
144
159
  def ensure_memory_server() -> dict[str, Any]:
145
- """Ensure the memory server is running (idempotent)."""
160
+ """Ensure the memory server is running (idempotent).
161
+
162
+ Skips startup when the active preset is ``safe`` or ``balanced`` —
163
+ HTTP memory is an opt-in surface starting at the ``interop`` tier.
164
+ """
165
+ preset = _get_current_preset()
166
+ if preset in _HTTP_MEMORY_RESTRICTED_PRESETS:
167
+ return {"status": "skipped", "reason": f"HTTP memory disabled for preset '{preset}'"}
146
168
  if is_server_running():
147
169
  return {"status": "already_running", "url": get_server_url()}
148
170
  return start_memory_server()
149
171
 
150
172
 
151
- # Feature flag: auto-start on import
173
+ # Feature flag: auto-start on import (respects preset restrictions)
152
174
  if os.environ.get("OMG_MEMORY_AUTOSTART") == "1":
153
175
  ensure_memory_server()
@@ -66,7 +66,7 @@ mcp = FastMCP("OMG Memory Server", lifespan=lifespan)
66
66
 
67
67
  @mcp.custom_route("/health", methods=["GET"])
68
68
  async def health(_: Request) -> JSONResponse:
69
- return JSONResponse({"status": "ok", "version": "2.0.5"})
69
+ return JSONResponse({"status": "ok", "version": "2.0.7"})
70
70
 
71
71
 
72
72
  @mcp.tool()
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "OmgCompatContractSnapshot",
3
- "contract_version": "2.0.5",
3
+ "contract_version": "2.0.7",
4
4
  "count": 47,
5
5
  "contracts": [
6
6
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "OmgCompatContractSnapshot",
3
- "contract_version": "2.0.5",
3
+ "contract_version": "2.0.7",
4
4
  "count": 47,
5
5
  "contracts": [
6
6
  {
@@ -9,12 +9,14 @@ from typing import Any
9
9
 
10
10
  from runtime.asset_loader import resolve_asset
11
11
 
12
- _MCP_IMPORT_ERROR: ModuleNotFoundError | None = None
12
+ _mcp_import_error: ModuleNotFoundError | None = None
13
+ _FastMCP: Any
13
14
 
14
15
  try:
15
- from fastmcp import FastMCP
16
+ from fastmcp import FastMCP as _ImportedFastMCP
17
+ _FastMCP = _ImportedFastMCP
16
18
  except ModuleNotFoundError as exc:
17
- _MCP_IMPORT_ERROR = exc
19
+ _mcp_import_error = exc
18
20
 
19
21
  def _passthrough_decorator(*_args: Any, **_kwargs: Any):
20
22
  def decorator(func: Any) -> Any:
@@ -36,9 +38,9 @@ except ModuleNotFoundError as exc:
36
38
  mime_type: str
37
39
  handler: Any
38
40
 
39
- class FastMCP: # type: ignore[override]
41
+ class _StubFastMCP: # type: ignore[override]
40
42
  def __init__(self, *_args: Any, **_kwargs: Any) -> None:
41
- self._import_error = _MCP_IMPORT_ERROR
43
+ self._import_error = _mcp_import_error
42
44
  self.instructions = str(_kwargs.get("instructions", ""))
43
45
  self._prompts: list[_StubPrompt] = []
44
46
  self._resources: dict[str, _StubResource] = {}
@@ -86,7 +88,10 @@ except ModuleNotFoundError as exc:
86
88
  def run(self, *_args: Any, **_kwargs: Any) -> None:
87
89
  raise RuntimeError("fastmcp is required to run the OMG MCP server") from self._import_error
88
90
 
89
- FastMCP.__module__ = "fastmcp"
91
+ _StubFastMCP.__module__ = "fastmcp"
92
+ _FastMCP = _StubFastMCP
93
+
94
+ FastMCP = _FastMCP
90
95
 
91
96
  from control_plane.service import ControlPlaneService
92
97
 
@@ -164,8 +169,8 @@ def omg_runtime_dispatch(runtime: str, idea: dict[str, Any]) -> dict[str, Any]:
164
169
 
165
170
 
166
171
  @mcp.tool()
167
- def omg_security_check(scope: str = ".", include_live_enrichment: bool = False) -> dict[str, Any]:
168
- _status, payload = _service().security_check({"scope": scope, "include_live_enrichment": include_live_enrichment})
172
+ def omg_security_check(scope: str = ".", include_live_enrichment: bool = False, external_inputs: list[dict[str, Any]] | None = None, waivers: list[str] | None = None) -> dict[str, Any]:
173
+ _status, payload = _service().security_check({"scope": scope, "include_live_enrichment": include_live_enrichment, "external_inputs": external_inputs, "waivers": waivers})
169
174
  return payload
170
175
 
171
176
 
@@ -0,0 +1,169 @@
1
+ """Playwright-based browser evidence pack under isolated execution."""
2
+ from __future__ import annotations
3
+
4
+ import json
5
+ from datetime import datetime, timezone
6
+ from hashlib import sha256
7
+ from pathlib import Path
8
+ from typing import Any
9
+
10
+ from runtime.untrusted_content import (
11
+ TRUST_TIER_CONFIG,
12
+ TrustTier,
13
+ get_untrusted_content_state,
14
+ )
15
+
16
+
17
+ class IsolationError(Exception):
18
+ """Raised when browser execution is attempted without proper isolation or trust tier."""
19
+ pass
20
+
21
+
22
+ class PlaywrightPack:
23
+ """Canonical browser pack with isolated execution and evidence emission.
24
+
25
+ Emits a proof-ready trace pack contract consumed by proof-gate / claim-judge:
26
+ artifacts — trace.zip, junit.xml, screenshot paths
27
+ metadata — isolated, timestamp, project_dir, trust_tier
28
+ """
29
+
30
+ def __init__(self, project_dir: str | Path = ".", isolated: bool = False):
31
+ self.project_dir = Path(project_dir).resolve()
32
+ self.isolated = isolated
33
+
34
+ def check_isolation(self) -> None:
35
+ """Ensure execution is isolated or browser trust tier is active."""
36
+ if self.isolated:
37
+ return
38
+
39
+ state = get_untrusted_content_state(str(self.project_dir))
40
+ if not state.get("active"):
41
+ raise IsolationError("Browser execution requires isolated mode or active BROWSER trust tier")
42
+
43
+ last_tier = state.get("last_trust_tier")
44
+ if last_tier == TrustTier.BROWSER.value:
45
+ return
46
+
47
+ raise IsolationError(f"Browser execution requires BROWSER trust tier, got {last_tier}")
48
+
49
+ def _resolve_trust_tier(self) -> str:
50
+ if self.isolated:
51
+ return TrustTier.BROWSER.value
52
+ state = get_untrusted_content_state(str(self.project_dir))
53
+ return str(state.get("last_trust_tier", TrustTier.BROWSER.value))
54
+
55
+ def emit_artifacts(self, output_dir: str | Path) -> dict[str, Any]:
56
+ """Emit mock Playwright artifacts (trace.zip, screenshots, junit.xml)."""
57
+ out_path = Path(output_dir)
58
+ out_path.mkdir(parents=True, exist_ok=True)
59
+
60
+ screenshots_dir = out_path / "screenshots"
61
+ screenshots_dir.mkdir(exist_ok=True)
62
+
63
+ trace_path = out_path / "trace.zip"
64
+ trace_path.write_bytes(b"PK\x03\x04mock_trace_data")
65
+
66
+ screenshot_path = screenshots_dir / "smoke_test.png"
67
+ screenshot_path.write_bytes(b"\x89PNG\r\n\x1a\nmock_png_data")
68
+
69
+ junit_path = out_path / "junit.xml"
70
+ junit_path.write_text(
71
+ '<?xml version="1.0" encoding="utf-8"?>\n'
72
+ '<testsuites>\n'
73
+ ' <testsuite name="browser_smoke" tests="1" failures="0" errors="0">\n'
74
+ ' <testcase name="smoke_test" classname="PlaywrightPack" time="0.1" />\n'
75
+ ' </testsuite>\n'
76
+ '</testsuites>\n',
77
+ encoding="utf-8",
78
+ )
79
+
80
+ return {
81
+ "trace": str(trace_path),
82
+ "screenshots": [str(screenshot_path)],
83
+ "junit": str(junit_path),
84
+ }
85
+
86
+ def _build_metadata(self, *, timestamp: str | None = None) -> dict[str, Any]:
87
+ ts = timestamp or datetime.now(timezone.utc).isoformat()
88
+ trust_tier = self._resolve_trust_tier()
89
+ tier_config = TRUST_TIER_CONFIG.get(
90
+ TrustTier(trust_tier),
91
+ TRUST_TIER_CONFIG[TrustTier.BROWSER],
92
+ )
93
+ return {
94
+ "isolated": self.isolated,
95
+ "timestamp": ts,
96
+ "project_dir": str(self.project_dir),
97
+ "trust_tier": trust_tier,
98
+ "trust_label": tier_config.label,
99
+ "trust_score": tier_config.score,
100
+ }
101
+
102
+ def run_smoke(self, fixture_path: str | Path, output_dir: str | Path | None = None) -> dict[str, Any]:
103
+ """Run smoke test against a local HTML fixture and emit proof-ready artifacts.
104
+
105
+ Returns a dict consumable by proof-gate / claim-judge:
106
+ status — "success"
107
+ fixture — resolved fixture path
108
+ artifacts — {trace, junit, screenshots}
109
+ metadata — {isolated, timestamp, project_dir, trust_tier, trust_label, trust_score}
110
+ """
111
+ self.check_isolation()
112
+
113
+ fixture = Path(fixture_path)
114
+ if not fixture.exists():
115
+ raise FileNotFoundError(f"Smoke fixture not found: {fixture}")
116
+
117
+ if output_dir is None:
118
+ output_dir = self.project_dir / ".omg" / "evidence" / "browser"
119
+
120
+ timestamp = datetime.now(timezone.utc).isoformat()
121
+
122
+ artifacts = self.emit_artifacts(output_dir)
123
+ metadata = self._build_metadata(timestamp=timestamp)
124
+
125
+ evidence_dir = Path(output_dir)
126
+ _write_browser_evidence(
127
+ evidence_dir,
128
+ fixture=fixture,
129
+ artifacts=artifacts,
130
+ metadata=metadata,
131
+ )
132
+
133
+ return {
134
+ "status": "success",
135
+ "fixture": str(fixture),
136
+ "artifacts": artifacts,
137
+ "metadata": metadata,
138
+ }
139
+
140
+
141
+ def _write_browser_evidence(
142
+ output_dir: Path,
143
+ *,
144
+ fixture: Path,
145
+ artifacts: dict[str, Any],
146
+ metadata: dict[str, Any],
147
+ ) -> str:
148
+ output_dir.mkdir(parents=True, exist_ok=True)
149
+ evidence_path = output_dir / "browser-evidence.json"
150
+
151
+ fixture_bytes = fixture.read_bytes() if fixture.exists() else b""
152
+ fixture_hash = sha256(fixture_bytes).hexdigest()
153
+
154
+ payload = {
155
+ "schema": "BrowserEvidence",
156
+ "generated_at": metadata.get("timestamp", ""),
157
+ "fixture": str(fixture),
158
+ "fixture_hash": fixture_hash,
159
+ "artifacts": artifacts,
160
+ "metadata": metadata,
161
+ "trust_tier": metadata.get("trust_tier", "browser"),
162
+ "trust_label": metadata.get("trust_label", "UNTRUSTED_EXTERNAL_CONTENT"),
163
+ "trust_score": metadata.get("trust_score", 0.0),
164
+ }
165
+ evidence_path.write_text(
166
+ json.dumps(payload, indent=2, ensure_ascii=True) + "\n",
167
+ encoding="utf-8",
168
+ )
169
+ return str(evidence_path)
@@ -6,6 +6,36 @@ from runtime.tracebank import record_trace
6
6
  from typing import Any
7
7
 
8
8
 
9
+ _HIGH_RISK_DELTA_TOKENS = (
10
+ "auth",
11
+ "payment",
12
+ "billing",
13
+ "checkout",
14
+ "db",
15
+ "database",
16
+ "schema",
17
+ "migration",
18
+ "infra",
19
+ "terraform",
20
+ ".tf",
21
+ "helm",
22
+ "k8s",
23
+ "docker",
24
+ "manifest",
25
+ "manifests",
26
+ "package.json",
27
+ "requirements.txt",
28
+ "pyproject.toml",
29
+ "cargo.toml",
30
+ "go.mod",
31
+ "gemfile",
32
+ "policy",
33
+ "policies",
34
+ "config",
35
+ "configs",
36
+ )
37
+
38
+
9
39
  def run_preflight(project_dir: str, *, goal: str) -> dict[str, Any]:
10
40
  lowered = goal.lower()
11
41
  task_class = "implementation"
@@ -13,9 +43,10 @@ def run_preflight(project_dir: str, *, goal: str) -> dict[str, Any]:
13
43
  route = "teams"
14
44
  delta = classify_project_changes(project_dir, goal=goal)
15
45
  categories = set(delta["categories"])
46
+ requires_security_check = _requires_security_check(delta)
16
47
  domain_packs = [category for category in delta["categories"] if category in {"robotics", "vision", "algorithms", "health"}]
17
48
 
18
- if categories & {"auth", "payment", "health", "compliance"}:
49
+ if requires_security_check:
19
50
  task_class = "security"
20
51
  risk_class = "high"
21
52
  route = "security-check"
@@ -47,6 +78,7 @@ def run_preflight(project_dir: str, *, goal: str) -> dict[str, Any]:
47
78
  "task_class": task_class,
48
79
  "risk_class": risk_class,
49
80
  "route": route,
81
+ "requires_security_check": requires_security_check,
50
82
  "required_tools": _required_tools(route),
51
83
  "required_mcps": ["omg-control"] if route in {"security-check", "api-twin", "crazy"} else [],
52
84
  "missing_constraints": [],
@@ -57,6 +89,18 @@ def run_preflight(project_dir: str, *, goal: str) -> dict[str, Any]:
57
89
  }
58
90
 
59
91
 
92
+ def _requires_security_check(delta: dict[str, Any]) -> bool:
93
+ categories = {str(item).lower() for item in delta.get("categories", [])}
94
+ if categories & {"auth", "payment", "db", "infra", "compliance", "health", "security"}:
95
+ return True
96
+
97
+ touched_files = [str(path).lower() for path in delta.get("touched_files", [])]
98
+ for file_path in touched_files:
99
+ if any(token in file_path for token in _HIGH_RISK_DELTA_TOKENS):
100
+ return True
101
+ return False
102
+
103
+
60
104
  def _required_tools(route: str) -> list[str]:
61
105
  return {
62
106
  "security-check": ["security"],