@trac3er/oh-my-god 2.1.7 → 2.1.9

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 (1043) hide show
  1. package/.agents/skills/omg/AGENTS.fragment.md +2 -0
  2. package/.agents/skills/omg/codex-rules.md +5 -0
  3. package/.agents/skills/omg/vision/SKILL.md +1 -1
  4. package/.agents/skills/omg/vision/openai.yaml +1 -1
  5. package/.claude-plugin/marketplace.json +3 -3
  6. package/.claude-plugin/plugin.json +1 -1
  7. package/.claude-plugin/scripts/install.sh +49 -0
  8. package/.claude-plugin/scripts/update.sh +65 -35
  9. package/.gemini/settings.json +2 -2
  10. package/.kimi/mcp.json +2 -2
  11. package/CHANGELOG.md +1 -1
  12. package/CLI-ADAPTER-MAP.md +4 -5
  13. package/OMG-setup.sh +20 -5
  14. package/OMG_COMPAT_CONTRACT.md +3 -1
  15. package/README.md +1 -1
  16. package/RELEASING.md +83 -0
  17. package/artifacts/release/.agents/skills/omg/AGENTS.fragment.md +2 -0
  18. package/artifacts/release/.agents/skills/omg/codex-rules.md +5 -0
  19. package/artifacts/release/.agents/skills/omg/vision/SKILL.md +1 -1
  20. package/artifacts/release/.agents/skills/omg/vision/openai.yaml +1 -1
  21. package/artifacts/release/.claude-plugin/marketplace.json +3 -3
  22. package/artifacts/release/.claude-plugin/plugin.json +1 -1
  23. package/artifacts/release/OMG_COMPAT_CONTRACT.md +3 -1
  24. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  25. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +6 -6
  26. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  27. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  28. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  29. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  30. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  31. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  32. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  33. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  34. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  35. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  36. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  37. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  38. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  39. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  40. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  41. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +6 -6
  42. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  43. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  44. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  45. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  46. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  47. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  48. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  49. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  50. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  51. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  52. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  53. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  54. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  55. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  56. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  57. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  58. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  59. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  60. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  61. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  62. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  63. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  64. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  65. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  66. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  67. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  68. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  69. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  70. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  71. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  72. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  73. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  74. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  75. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  76. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  77. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  78. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  79. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  80. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  81. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  82. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  83. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  84. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  85. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  86. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  87. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  88. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  89. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  90. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  91. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  92. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  93. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  94. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  95. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  96. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  97. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  98. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  99. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  100. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  101. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  102. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  103. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  104. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  105. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  106. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  107. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  108. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  109. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  110. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  111. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  112. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  113. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  114. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  115. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +6 -6
  116. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  117. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +6 -6
  118. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  119. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  120. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  121. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  122. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  123. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  124. package/artifacts/release/dist/enterprise/attestations/bundle/.mcp.json.minisig +3 -3
  125. package/artifacts/release/dist/enterprise/attestations/bundle/.mcp.json.statement.json +5 -5
  126. package/artifacts/release/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  127. package/artifacts/release/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  128. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  129. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  130. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  131. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  132. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  133. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  134. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  135. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  136. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  137. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  138. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  139. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  140. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  141. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  142. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  143. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  144. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  145. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  146. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  147. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  148. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  149. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  150. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  151. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  152. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  153. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  154. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  155. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  156. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  157. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  158. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  159. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  160. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  161. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  162. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  163. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  164. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  165. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  166. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  167. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  168. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  169. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  170. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  171. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  172. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  173. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  174. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  175. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  176. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  177. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  178. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  179. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  180. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  181. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  182. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  183. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  184. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  185. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  186. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  187. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  188. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  189. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  190. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  191. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  192. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  193. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  194. package/artifacts/release/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  195. package/artifacts/release/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  196. package/artifacts/release/dist/enterprise/attestations/bundle/settings.json.minisig +3 -3
  197. package/artifacts/release/dist/enterprise/attestations/bundle/settings.json.statement.json +6 -6
  198. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +2 -0
  199. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +5 -0
  200. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/SKILL.md +1 -1
  201. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/openai.yaml +1 -1
  202. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  203. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  204. package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +3 -1
  205. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/plugin.json +1 -1
  206. package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  207. package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  208. package/artifacts/release/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  209. package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  210. package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  211. package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  212. package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  213. package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  214. package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +12 -16
  215. package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  216. package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  217. package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  218. package/artifacts/release/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  219. package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  220. package/artifacts/release/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  221. package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  222. package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  223. package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  224. package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  225. package/artifacts/release/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  226. package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  227. package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +2 -2
  228. package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  229. package/artifacts/release/dist/enterprise/bundle/settings.json +27 -27
  230. package/artifacts/release/dist/enterprise/manifest.json +120 -120
  231. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  232. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +6 -6
  233. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  234. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  235. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  236. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  237. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  238. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  239. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  240. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  241. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  242. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  243. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  244. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  245. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  246. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  247. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  248. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +6 -6
  249. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  250. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  251. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  252. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  253. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  254. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  255. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  256. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  257. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  258. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  259. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  260. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  261. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  262. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  263. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  264. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  265. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  266. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  267. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  268. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  269. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  270. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  271. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  272. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  273. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  274. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  275. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  276. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  277. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  278. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  279. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  280. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  281. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  282. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  283. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  284. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  285. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  286. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  287. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  288. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  289. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  290. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  291. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  292. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  293. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  294. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  295. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  296. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  297. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  298. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  299. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  300. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  301. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  302. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  303. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  304. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  305. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  306. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  307. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  308. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  309. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  310. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  311. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  312. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  313. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  314. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  315. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  316. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  317. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  318. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  319. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  320. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  321. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  322. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +6 -6
  323. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  324. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +6 -6
  325. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  326. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  327. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  328. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  329. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  330. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  331. package/artifacts/release/dist/public/attestations/bundle/.mcp.json.minisig +3 -3
  332. package/artifacts/release/dist/public/attestations/bundle/.mcp.json.statement.json +5 -5
  333. package/artifacts/release/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  334. package/artifacts/release/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  335. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  336. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  337. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  338. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  339. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  340. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  341. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  342. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  343. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  344. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  345. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  346. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  347. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  348. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  349. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  350. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  351. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  352. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  353. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  354. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  355. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  356. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  357. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  358. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  359. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  360. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  361. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  362. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  363. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  364. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  365. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  366. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  367. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  368. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  369. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  370. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  371. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  372. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  373. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  374. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  375. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  376. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  377. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  378. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  379. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  380. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  381. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  382. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  383. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  384. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  385. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  386. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  387. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  388. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  389. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  390. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  391. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  392. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  393. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  394. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  395. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  396. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  397. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  398. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  399. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  400. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  401. package/artifacts/release/dist/public/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  402. package/artifacts/release/dist/public/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  403. package/artifacts/release/dist/public/attestations/bundle/settings.json.minisig +3 -3
  404. package/artifacts/release/dist/public/attestations/bundle/settings.json.statement.json +6 -6
  405. package/artifacts/release/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +2 -0
  406. package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-rules.md +5 -0
  407. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +1 -1
  408. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +1 -1
  409. package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  410. package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  411. package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +3 -1
  412. package/artifacts/release/dist/public/bundle/plugins/advanced/plugin.json +1 -1
  413. package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  414. package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  415. package/artifacts/release/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  416. package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  417. package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  418. package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  419. package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  420. package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +1 -1
  421. package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +12 -16
  422. package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  423. package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  424. package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  425. package/artifacts/release/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  426. package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  427. package/artifacts/release/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  428. package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  429. package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  430. package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  431. package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  432. package/artifacts/release/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  433. package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  434. package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +2 -2
  435. package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  436. package/artifacts/release/dist/public/bundle/settings.json +27 -27
  437. package/artifacts/release/dist/public/manifest.json +120 -120
  438. package/artifacts/release/plugins/advanced/plugin.json +1 -1
  439. package/artifacts/release/registry/bundles/algorithms.yaml +1 -1
  440. package/artifacts/release/registry/bundles/api-twin.yaml +1 -1
  441. package/artifacts/release/registry/bundles/claim-judge.yaml +1 -1
  442. package/artifacts/release/registry/bundles/control-plane.yaml +1 -1
  443. package/artifacts/release/registry/bundles/data-lineage.yaml +1 -1
  444. package/artifacts/release/registry/bundles/delta-classifier.yaml +1 -1
  445. package/artifacts/release/registry/bundles/eval-gate.yaml +1 -1
  446. package/artifacts/release/registry/bundles/health.yaml +1 -1
  447. package/artifacts/release/registry/bundles/hook-governor.yaml +12 -16
  448. package/artifacts/release/registry/bundles/incident-replay.yaml +1 -1
  449. package/artifacts/release/registry/bundles/lsp-pack.yaml +1 -1
  450. package/artifacts/release/registry/bundles/mcp-fabric.yaml +1 -1
  451. package/artifacts/release/registry/bundles/plan-council.yaml +1 -1
  452. package/artifacts/release/registry/bundles/preflight.yaml +1 -1
  453. package/artifacts/release/registry/bundles/proof-gate.yaml +1 -1
  454. package/artifacts/release/registry/bundles/remote-supervisor.yaml +1 -1
  455. package/artifacts/release/registry/bundles/robotics.yaml +1 -1
  456. package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  457. package/artifacts/release/registry/bundles/security-check.yaml +1 -1
  458. package/artifacts/release/registry/bundles/test-intent-lock.yaml +1 -1
  459. package/artifacts/release/registry/bundles/tracebank.yaml +1 -1
  460. package/artifacts/release/registry/bundles/vision.yaml +2 -2
  461. package/artifacts/release/registry/omg-capability.schema.json +1 -1
  462. package/artifacts/release/settings.json +27 -27
  463. package/build/lib/commands/OMG:health-check.md +4 -1
  464. package/build/lib/commands/OMG:preset.md +49 -0
  465. package/build/lib/commands/OMG:profile-review.md +15 -0
  466. package/build/lib/commands/OMG:setup.md +2 -1
  467. package/build/lib/commands/OMG:validate.md +1 -1
  468. package/build/lib/control_plane/openapi.yaml +17 -0
  469. package/build/lib/control_plane/server.py +2 -0
  470. package/build/lib/control_plane/service.py +40 -0
  471. package/build/lib/hooks/_common.py +57 -0
  472. package/build/lib/hooks/firewall.py +7 -4
  473. package/build/lib/hooks/pre-compact.py +17 -8
  474. package/build/lib/hooks/prompt-enhancer.py +43 -3
  475. package/build/lib/hooks/secret-guard.py +8 -4
  476. package/build/lib/hooks/session-start.py +11 -7
  477. package/build/lib/hooks/setup_wizard.py +24 -8
  478. package/build/lib/hooks/stop_dispatcher.py +10 -2
  479. package/build/lib/plugins/advanced/plugin.json +1 -1
  480. package/build/lib/plugins/core/plugin.json +8 -2
  481. package/build/lib/registry/approval_artifact.py +4 -2
  482. package/build/lib/registry/bundles/algorithms.yaml +1 -1
  483. package/build/lib/registry/bundles/api-twin.yaml +1 -1
  484. package/build/lib/registry/bundles/claim-judge.yaml +1 -1
  485. package/build/lib/registry/bundles/control-plane.yaml +1 -1
  486. package/build/lib/registry/bundles/data-lineage.yaml +1 -1
  487. package/build/lib/registry/bundles/delta-classifier.yaml +1 -1
  488. package/build/lib/registry/bundles/eval-gate.yaml +1 -1
  489. package/build/lib/registry/bundles/health.yaml +1 -1
  490. package/build/lib/registry/bundles/hook-governor.yaml +12 -16
  491. package/build/lib/registry/bundles/incident-replay.yaml +1 -1
  492. package/build/lib/registry/bundles/lsp-pack.yaml +1 -1
  493. package/build/lib/registry/bundles/mcp-fabric.yaml +1 -1
  494. package/build/lib/registry/bundles/plan-council.yaml +1 -1
  495. package/build/lib/registry/bundles/preflight.yaml +1 -1
  496. package/build/lib/registry/bundles/proof-gate.yaml +1 -1
  497. package/build/lib/registry/bundles/remote-supervisor.yaml +1 -1
  498. package/build/lib/registry/bundles/robotics.yaml +1 -1
  499. package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  500. package/build/lib/registry/bundles/security-check.yaml +1 -1
  501. package/build/lib/registry/bundles/test-intent-lock.yaml +1 -1
  502. package/build/lib/registry/bundles/tracebank.yaml +1 -1
  503. package/build/lib/registry/bundles/vision.yaml +2 -2
  504. package/build/lib/registry/omg-capability.schema.json +1 -1
  505. package/build/lib/registry/verify_artifact.py +18 -3
  506. package/build/lib/runtime/__init__.py +4 -0
  507. package/build/lib/runtime/adoption.py +1 -1
  508. package/build/lib/runtime/claim_judge.py +31 -0
  509. package/build/lib/runtime/cli_provider.py +23 -3
  510. package/build/lib/runtime/compliance_governor.py +6 -1
  511. package/build/lib/runtime/context_engine.py +29 -1
  512. package/build/lib/runtime/contract_compiler.py +13 -6
  513. package/build/lib/runtime/data_lineage.py +172 -1
  514. package/build/lib/runtime/domain_packs.py +1 -1
  515. package/build/lib/runtime/evidence_query.py +35 -2
  516. package/build/lib/runtime/evidence_requirements.py +27 -0
  517. package/build/lib/runtime/forge_agents.py +236 -25
  518. package/build/lib/runtime/forge_contracts.py +176 -31
  519. package/build/lib/runtime/forge_run_id.py +27 -0
  520. package/build/lib/runtime/interaction_journal.py +5 -2
  521. package/build/lib/runtime/mcp_memory_server.py +102 -17
  522. package/build/lib/runtime/memory_store.py +942 -108
  523. package/build/lib/runtime/mutation_gate.py +39 -3
  524. package/build/lib/runtime/omg_compat_contract_snapshot.json +1 -1
  525. package/build/lib/runtime/plugin_interop.py +1 -1
  526. package/build/lib/runtime/profile_io.py +34 -0
  527. package/build/lib/runtime/providers/codex_provider.py +11 -2
  528. package/build/lib/runtime/providers/gemini_provider.py +11 -2
  529. package/build/lib/runtime/providers/kimi_provider.py +13 -2
  530. package/build/lib/runtime/providers/opencode_provider.py +6 -1
  531. package/build/lib/runtime/release_run_coordinator.py +28 -5
  532. package/build/lib/runtime/release_surfaces.py +10 -0
  533. package/build/lib/runtime/runtime_contracts.py +13 -0
  534. package/build/lib/runtime/session_health.py +127 -0
  535. package/build/lib/runtime/subagent_dispatcher.py +21 -0
  536. package/build/lib/runtime/team_router.py +28 -5
  537. package/build/lib/runtime/test_intent_lock.py +9 -3
  538. package/build/lib/runtime/tmux_session_manager.py +7 -4
  539. package/build/lib/runtime/tool_plan_gate.py +35 -127
  540. package/build/lib/runtime/untrusted_content.py +25 -0
  541. package/build/lib/runtime/validate.py +5 -1
  542. package/build/lib/runtime/vision_artifacts.py +31 -0
  543. package/build/lib/runtime/vision_cache.py +38 -0
  544. package/build/lib/runtime/vision_jobs.py +89 -0
  545. package/commands/OMG:health-check.md +4 -1
  546. package/commands/OMG:preset.md +49 -0
  547. package/commands/OMG:setup.md +2 -1
  548. package/commands/OMG:validate.md +1 -1
  549. package/control_plane/openapi.yaml +17 -0
  550. package/control_plane/server.py +2 -0
  551. package/control_plane/service.py +40 -0
  552. package/dist/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +12 -16
  553. package/dist/dist/public/bundle/registry/bundles/hook-governor.yaml +12 -16
  554. package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  555. package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +6 -6
  556. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  557. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  558. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  559. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  560. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  561. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  562. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  563. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  564. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  565. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  566. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  567. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  568. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  569. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  570. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  571. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +6 -6
  572. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  573. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  574. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  575. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  576. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  577. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  578. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  579. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  580. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  581. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  582. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  583. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  584. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  585. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  586. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  587. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  588. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  589. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  590. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  591. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  592. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  593. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  594. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  595. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  596. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  597. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  598. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  599. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  600. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  601. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  602. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  603. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  604. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  605. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  606. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  607. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  608. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  609. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  610. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  611. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  612. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  613. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  614. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  615. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  616. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  617. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  618. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  619. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  620. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  621. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  622. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  623. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  624. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  625. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  626. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  627. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  628. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  629. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  630. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  631. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  632. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  633. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  634. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  635. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  636. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  637. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  638. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  639. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  640. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  641. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  642. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  643. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  644. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  645. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +6 -6
  646. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  647. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +6 -6
  648. package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  649. package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  650. package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  651. package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  652. package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  653. package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  654. package/dist/enterprise/attestations/bundle/.mcp.json.minisig +3 -3
  655. package/dist/enterprise/attestations/bundle/.mcp.json.statement.json +5 -5
  656. package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  657. package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  658. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  659. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  660. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  661. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  662. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  663. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  664. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  665. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  666. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  667. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  668. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  669. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  670. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  671. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  672. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  673. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  674. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  675. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  676. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  677. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  678. package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  679. package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  680. package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  681. package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  682. package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  683. package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  684. package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  685. package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  686. package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  687. package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  688. package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  689. package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  690. package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  691. package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  692. package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  693. package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  694. package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  695. package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  696. package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  697. package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  698. package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  699. package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  700. package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  701. package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  702. package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  703. package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  704. package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  705. package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  706. package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  707. package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  708. package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  709. package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  710. package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  711. package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  712. package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  713. package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  714. package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  715. package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  716. package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  717. package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  718. package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  719. package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  720. package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  721. package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  722. package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  723. package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  724. package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  725. package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  726. package/dist/enterprise/attestations/bundle/settings.json.minisig +3 -3
  727. package/dist/enterprise/attestations/bundle/settings.json.statement.json +6 -6
  728. package/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +2 -0
  729. package/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +5 -0
  730. package/dist/enterprise/bundle/.agents/skills/omg/vision/SKILL.md +1 -1
  731. package/dist/enterprise/bundle/.agents/skills/omg/vision/openai.yaml +1 -1
  732. package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  733. package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  734. package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +3 -1
  735. package/dist/enterprise/bundle/plugins/advanced/plugin.json +1 -1
  736. package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  737. package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  738. package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  739. package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  740. package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  741. package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  742. package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  743. package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  744. package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +12 -16
  745. package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  746. package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  747. package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  748. package/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  749. package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  750. package/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  751. package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  752. package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  753. package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  754. package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  755. package/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  756. package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  757. package/dist/enterprise/bundle/registry/bundles/vision.yaml +2 -2
  758. package/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  759. package/dist/enterprise/bundle/settings.json +27 -27
  760. package/dist/enterprise/manifest.json +120 -120
  761. package/dist/oh_my_god-2.1.8-py3-none-any.whl +0 -0
  762. package/dist/oh_my_god-2.1.9-py3-none-any.whl +0 -0
  763. package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  764. package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +6 -6
  765. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  766. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  767. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  768. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  769. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  770. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  771. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  772. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  773. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  774. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  775. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  776. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  777. package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  778. package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  779. package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  780. package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +6 -6
  781. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  782. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  783. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  784. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  785. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  786. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  787. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  788. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  789. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  790. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  791. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  792. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  793. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  794. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  795. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  796. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  797. package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  798. package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  799. package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  800. package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  801. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  802. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  803. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  804. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  805. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  806. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  807. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  808. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  809. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  810. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  811. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  812. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  813. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  814. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  815. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  816. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  817. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  818. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  819. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  820. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  821. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  822. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  823. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  824. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  825. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  826. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  827. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  828. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  829. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  830. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  831. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  832. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  833. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  834. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  835. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  836. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  837. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  838. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  839. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  840. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  841. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  842. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  843. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  844. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  845. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  846. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  847. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  848. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  849. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  850. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  851. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  852. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  853. package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  854. package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +6 -6
  855. package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  856. package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +6 -6
  857. package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  858. package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  859. package/dist/public/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  860. package/dist/public/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  861. package/dist/public/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  862. package/dist/public/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  863. package/dist/public/attestations/bundle/.mcp.json.minisig +3 -3
  864. package/dist/public/attestations/bundle/.mcp.json.statement.json +5 -5
  865. package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  866. package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  867. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  868. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  869. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  870. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  871. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  872. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  873. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  874. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  875. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  876. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  877. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  878. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  879. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  880. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  881. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  882. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  883. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  884. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  885. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  886. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  887. package/dist/public/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  888. package/dist/public/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  889. package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  890. package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  891. package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  892. package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  893. package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  894. package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  895. package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  896. package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  897. package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  898. package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  899. package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  900. package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  901. package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  902. package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  903. package/dist/public/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  904. package/dist/public/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  905. package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  906. package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  907. package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  908. package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  909. package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  910. package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  911. package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  912. package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  913. package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  914. package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  915. package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  916. package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  917. package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  918. package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  919. package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  920. package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  921. package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  922. package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  923. package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  924. package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  925. package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  926. package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  927. package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  928. package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  929. package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  930. package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  931. package/dist/public/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  932. package/dist/public/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  933. package/dist/public/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  934. package/dist/public/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  935. package/dist/public/attestations/bundle/settings.json.minisig +3 -3
  936. package/dist/public/attestations/bundle/settings.json.statement.json +6 -6
  937. package/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +2 -0
  938. package/dist/public/bundle/.agents/skills/omg/codex-rules.md +5 -0
  939. package/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +1 -1
  940. package/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +1 -1
  941. package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  942. package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  943. package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +3 -1
  944. package/dist/public/bundle/plugins/advanced/plugin.json +1 -1
  945. package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  946. package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  947. package/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  948. package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  949. package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  950. package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  951. package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  952. package/dist/public/bundle/registry/bundles/health.yaml +1 -1
  953. package/dist/public/bundle/registry/bundles/hook-governor.yaml +12 -16
  954. package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  955. package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  956. package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  957. package/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  958. package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  959. package/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  960. package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  961. package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  962. package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  963. package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  964. package/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  965. package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  966. package/dist/public/bundle/registry/bundles/vision.yaml +2 -2
  967. package/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  968. package/dist/public/bundle/settings.json +27 -27
  969. package/dist/public/manifest.json +120 -120
  970. package/dist/registry/bundles/hook-governor.yaml +12 -16
  971. package/docs/install/claude-code.md +6 -0
  972. package/docs/install/codex.md +2 -0
  973. package/hooks/_common.py +57 -0
  974. package/hooks/firewall.py +7 -4
  975. package/hooks/pre-compact.py +17 -8
  976. package/hooks/prompt-enhancer.py +8 -7
  977. package/hooks/secret-guard.py +8 -4
  978. package/hooks/session-start.py +11 -7
  979. package/hooks/setup_wizard.py +24 -8
  980. package/hooks/stop_dispatcher.py +10 -2
  981. package/hud/omg-hud.mjs +78 -10
  982. package/lab/pipeline.py +20 -2
  983. package/package.json +1 -1
  984. package/plugins/advanced/plugin.json +1 -1
  985. package/plugins/core/plugin.json +8 -2
  986. package/pyproject.toml +1 -1
  987. package/registry/approval_artifact.py +4 -2
  988. package/registry/bundles/algorithms.yaml +1 -1
  989. package/registry/bundles/api-twin.yaml +1 -1
  990. package/registry/bundles/claim-judge.yaml +1 -1
  991. package/registry/bundles/control-plane.yaml +1 -1
  992. package/registry/bundles/data-lineage.yaml +1 -1
  993. package/registry/bundles/delta-classifier.yaml +1 -1
  994. package/registry/bundles/eval-gate.yaml +1 -1
  995. package/registry/bundles/health.yaml +1 -1
  996. package/registry/bundles/hook-governor.yaml +12 -16
  997. package/registry/bundles/incident-replay.yaml +1 -1
  998. package/registry/bundles/lsp-pack.yaml +1 -1
  999. package/registry/bundles/mcp-fabric.yaml +1 -1
  1000. package/registry/bundles/plan-council.yaml +1 -1
  1001. package/registry/bundles/preflight.yaml +1 -1
  1002. package/registry/bundles/proof-gate.yaml +1 -1
  1003. package/registry/bundles/remote-supervisor.yaml +1 -1
  1004. package/registry/bundles/robotics.yaml +1 -1
  1005. package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  1006. package/registry/bundles/security-check.yaml +1 -1
  1007. package/registry/bundles/test-intent-lock.yaml +1 -1
  1008. package/registry/bundles/tracebank.yaml +1 -1
  1009. package/registry/bundles/vision.yaml +2 -2
  1010. package/registry/omg-capability.schema.json +1 -1
  1011. package/registry/verify_artifact.py +18 -3
  1012. package/runtime/__init__.py +4 -0
  1013. package/runtime/adoption.py +1 -1
  1014. package/runtime/cli_provider.py +23 -3
  1015. package/runtime/compliance_governor.py +6 -1
  1016. package/runtime/contract_compiler.py +13 -6
  1017. package/runtime/domain_packs.py +1 -1
  1018. package/runtime/interaction_journal.py +5 -2
  1019. package/runtime/mcp_memory_server.py +37 -14
  1020. package/runtime/memory_store.py +29 -19
  1021. package/runtime/mutation_gate.py +18 -2
  1022. package/runtime/omg_compat_contract_snapshot.json +1 -1
  1023. package/runtime/plugin_interop.py +1 -1
  1024. package/runtime/providers/codex_provider.py +11 -2
  1025. package/runtime/providers/gemini_provider.py +11 -2
  1026. package/runtime/providers/kimi_provider.py +13 -2
  1027. package/runtime/providers/opencode_provider.py +6 -1
  1028. package/runtime/release_run_coordinator.py +28 -5
  1029. package/runtime/release_surfaces.py +10 -0
  1030. package/runtime/runtime_contracts.py +13 -0
  1031. package/runtime/team_router.py +28 -5
  1032. package/runtime/tmux_session_manager.py +7 -4
  1033. package/runtime/vision_artifacts.py +31 -0
  1034. package/runtime/vision_cache.py +38 -0
  1035. package/runtime/vision_jobs.py +89 -0
  1036. package/scripts/check-omg-public-ready.py +4 -3
  1037. package/scripts/migrate-legacy.py +14 -14
  1038. package/scripts/omg.py +51 -0
  1039. package/scripts/pre-release-check.sh +38 -0
  1040. package/scripts/prepare-release-proof-fixtures.py +57 -4
  1041. package/scripts/sync-release-identity.py +5 -0
  1042. package/scripts/verify-standalone.sh +2 -2
  1043. package/settings.json +27 -27
@@ -1,19 +1,31 @@
1
- """MemoryStore — CRUD + JSON persistence for shared memory across CLI providers."""
2
-
3
1
  from __future__ import annotations
4
2
 
5
3
  import json
6
4
  import os
5
+ import re
6
+ import sqlite3
7
7
  import uuid
8
- from datetime import datetime, timezone
8
+ import base64
9
+ import hashlib
10
+ import socket
11
+ from datetime import datetime, timedelta, timezone
9
12
  from pathlib import Path
10
13
  from typing import Any
11
14
 
12
15
  from runtime.profile_io import classify_preference_section, is_destructive_preference
13
16
 
17
+ try:
18
+ from cryptography.fernet import Fernet, InvalidToken
19
+
20
+ _has_fernet = True
21
+ except ModuleNotFoundError:
22
+ Fernet = None # type: ignore[assignment]
23
+ InvalidToken = Exception # type: ignore[assignment]
24
+ _has_fernet = False
25
+
14
26
 
15
27
  class MemoryStoreFullError(Exception):
16
- """Raised when adding to a store that has reached the 10,000 item limit."""
28
+ pass
17
29
 
18
30
 
19
31
  _MAX_ITEMS = 10_000
@@ -24,38 +36,63 @@ _PREFERENCE_ALLOWED_FIELDS = (
24
36
  "preferences.constraints.",
25
37
  "user_vector.tags",
26
38
  )
27
-
28
- # Type alias for memory items — JSON-like dicts.
39
+ _INLINE_METADATA_MAX = 512
40
+ _DEFAULT_NAMESPACE = "default"
41
+ _DEFAULT_MEMORY_HOST = "127.0.0.1"
42
+ _ENCRYPTED_PREFIX = "enc:v1:"
43
+ _JSON_ENVELOPE_FORMAT = "omg.memory.json.v1"
44
+ _PII_PATTERNS: tuple[tuple[re.Pattern[str], str], ...] = (
45
+ (re.compile(r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"), "[REDACTED:EMAIL]"),
46
+ (re.compile(r"\b(?:\+?1[-.\s]?)?(?:\(?\d{3}\)?[-.\s]?)\d{3}[-.\s]?\d{4}\b"), "[REDACTED:PHONE]"),
47
+ (re.compile(r"\b\d{3}-\d{2}-\d{4}\b"), "[REDACTED:SSN]"),
48
+ )
29
49
  _Item = dict[str, Any] # pyright: ignore[reportExplicitAny]
30
50
 
31
51
 
32
52
  class MemoryStore:
33
- """Thread-unsafe, file-backed key/content store with JSON persistence.
34
-
35
- Each item follows the schema::
36
-
37
- {
38
- "id": str, # UUID4
39
- "key": str, # user-defined key
40
- "content": str, # the memory text
41
- "source_cli": str, # originating CLI name
42
- "tags": list[str], # optional tags
43
- "created_at": str, # ISO 8601 UTC
44
- "updated_at": str, # ISO 8601 UTC
45
- }
46
-
47
- Persistence uses atomic writes (tmp file + ``os.replace``).
48
- """
49
-
50
53
  def __init__(self, store_path: str | None = None) -> None:
51
54
  if store_path is None:
52
- store_path = str(Path.home() / ".omg" / "shared-memory" / "store.json")
53
- self.store_path: str = store_path
54
- self._items: list[_Item] = self._load()
55
+ store_path = str(Path.home() / ".omg" / "shared-memory" / "store.sqlite3")
56
+ self._memory_host = (os.environ.get("OMG_MEMORY_HOST", _DEFAULT_MEMORY_HOST).strip() or _DEFAULT_MEMORY_HOST)
57
+ self._conn: sqlite3.Connection | None = None
58
+ self._fts_enabled = False
59
+ self._items: list[_Item] = []
60
+ self._store_path = ""
61
+ self._backend = "json"
62
+
63
+ self.store_path = store_path
64
+
65
+ @property
66
+ def store_path(self) -> str:
67
+ return self._store_path
55
68
 
56
- # ------------------------------------------------------------------
57
- # Public API
58
- # ------------------------------------------------------------------
69
+ @store_path.setter
70
+ def store_path(self, store_path: str) -> None:
71
+ normalized_path = str(store_path)
72
+ if normalized_path == self._store_path:
73
+ return
74
+
75
+ self.close()
76
+ self._store_path = normalized_path
77
+ self._backend = "json" if Path(normalized_path).suffix.lower() == ".json" else "sqlite"
78
+ self._items = []
79
+ self._fts_enabled = False
80
+
81
+ if self._backend == "json":
82
+ self._items = self._load_json_items()
83
+ else:
84
+ self._init_sqlite()
85
+
86
+ def close(self) -> None:
87
+ if self._conn is not None:
88
+ self._conn.close()
89
+ self._conn = None
90
+
91
+ def __del__(self) -> None:
92
+ try:
93
+ self.close()
94
+ except Exception:
95
+ return
59
96
 
60
97
  def add(
61
98
  self,
@@ -63,12 +100,12 @@ class MemoryStore:
63
100
  content: str,
64
101
  source_cli: str,
65
102
  tags: list[str] | None = None,
103
+ *,
104
+ run_id: str = "",
105
+ profile_id: str = "",
106
+ namespace: str = _DEFAULT_NAMESPACE,
107
+ retention_days: int | None = None,
66
108
  ) -> _Item:
67
- """Create a new memory item and persist to disk.
68
-
69
- Raises ``MemoryStoreFullError`` when the store already holds
70
- ``_MAX_ITEMS`` entries.
71
- """
72
109
  if self.count() >= _MAX_ITEMS:
73
110
  raise MemoryStoreFullError(
74
111
  f"Memory store is full ({_MAX_ITEMS} items). "
@@ -76,25 +113,69 @@ class MemoryStore:
76
113
  )
77
114
 
78
115
  now = _utc_now_iso()
116
+ canonical_namespace = _qualify_namespace(namespace)
117
+ canonical_retention_days = _normalize_retention_days(retention_days)
118
+ expires_at = _compute_expires_at(now, canonical_retention_days)
119
+ redacted_content = _redact_pii(content)
79
120
  item: _Item = {
80
121
  "id": str(uuid.uuid4()),
81
122
  "key": key,
82
- "content": content,
123
+ "content": redacted_content,
83
124
  "source_cli": source_cli,
84
125
  "tags": tags if tags is not None else [],
126
+ "run_id": run_id,
127
+ "profile_id": profile_id,
128
+ "namespace": canonical_namespace,
129
+ "retention_days": canonical_retention_days,
130
+ "expires_at": expires_at,
85
131
  "created_at": now,
86
132
  "updated_at": now,
133
+ "quarantined": False,
87
134
  }
88
- self._items.append(item)
89
- self._save()
135
+ if self._backend == "json":
136
+ self._items.append(item)
137
+ self._save_json_items()
138
+ return item
139
+
140
+ conn = self._sqlite_conn()
141
+ conn.execute(
142
+ """
143
+ INSERT INTO memories(
144
+ id, key, content, source_cli, tags_json, run_id, profile_id,
145
+ namespace, retention_days, expires_at, created_at, updated_at
146
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
147
+ """,
148
+ (
149
+ item["id"],
150
+ item["key"],
151
+ self._encrypt_text(item["content"], purpose="sqlite-content"),
152
+ item["source_cli"],
153
+ json.dumps(item["tags"], ensure_ascii=True),
154
+ run_id,
155
+ profile_id,
156
+ canonical_namespace,
157
+ canonical_retention_days,
158
+ expires_at,
159
+ now,
160
+ now,
161
+ ),
162
+ )
163
+ self._upsert_fts(item)
164
+ conn.commit()
90
165
  return item
91
166
 
92
167
  def get(self, item_id: str) -> _Item | None:
93
- """Return the item with *item_id*, or ``None`` if not found."""
94
- for item in self._items:
95
- if item["id"] == item_id:
96
- return item
97
- return None
168
+ if self._backend == "json":
169
+ for item in self._items:
170
+ if item["id"] == item_id:
171
+ return item
172
+ return None
173
+
174
+ row = self._sqlite_conn().execute(
175
+ "SELECT * FROM memories WHERE id = ?",
176
+ (item_id,),
177
+ ).fetchone()
178
+ return self._row_to_item(row) if row is not None else None
98
179
 
99
180
  def update(
100
181
  self,
@@ -102,100 +183,491 @@ class MemoryStore:
102
183
  content: str | None = None,
103
184
  tags: list[str] | None = None,
104
185
  ) -> _Item | None:
105
- """Update *content* and/or *tags* for an existing item.
186
+ if self._backend == "json":
187
+ item = self.get(item_id)
188
+ if item is None:
189
+ return None
190
+
191
+ if content is not None:
192
+ item["content"] = content
193
+ if tags is not None:
194
+ item["tags"] = tags
195
+ item["updated_at"] = _utc_now_iso()
196
+ self._save_json_items()
197
+ return item
106
198
 
107
- Returns the updated item, or ``None`` if *item_id* is not found.
108
- """
109
199
  item = self.get(item_id)
110
200
  if item is None:
111
201
  return None
112
-
113
- if content is not None:
114
- item["content"] = content
115
- if tags is not None:
116
- item["tags"] = tags
117
- item["updated_at"] = _utc_now_iso()
118
- self._save()
119
- return item
202
+ new_content = content if content is not None else str(item.get("content", ""))
203
+ new_tags = tags if tags is not None else item.get("tags", [])
204
+ updated_at = _utc_now_iso()
205
+ self._sqlite_conn().execute(
206
+ "UPDATE memories SET content = ?, tags_json = ?, updated_at = ? WHERE id = ?",
207
+ (self._encrypt_text(new_content, purpose="sqlite-content"), json.dumps(new_tags, ensure_ascii=True), updated_at, item_id),
208
+ )
209
+ updated = {
210
+ **item,
211
+ "content": new_content,
212
+ "tags": new_tags,
213
+ "updated_at": updated_at,
214
+ }
215
+ self._upsert_fts(updated)
216
+ self._sqlite_conn().commit()
217
+ return updated
120
218
 
121
219
  def delete(self, item_id: str) -> bool:
122
- """Remove the item with *item_id*.
123
-
124
- Returns ``True`` if deleted, ``False`` if not found.
125
- """
126
- for idx, item in enumerate(self._items):
127
- if item["id"] == item_id:
128
- del self._items[idx]
129
- self._save()
130
- return True
131
- return False
220
+ if self._backend == "json":
221
+ for idx, item in enumerate(self._items):
222
+ if item["id"] == item_id:
223
+ del self._items[idx]
224
+ self._save_json_items()
225
+ return True
226
+ return False
227
+
228
+ cur = self._sqlite_conn().execute("DELETE FROM memories WHERE id = ?", (item_id,))
229
+ self._delete_fts(item_id)
230
+ self._sqlite_conn().commit()
231
+ return cur.rowcount > 0
132
232
 
133
233
  def search(
134
234
  self,
135
235
  query: str,
136
236
  source_cli: str | None = None,
237
+ *,
238
+ namespace: str | None = None,
239
+ include_quarantined: bool = False,
137
240
  ) -> list[_Item]:
138
- """Keyword search across key, content, and tags (case-insensitive).
241
+ if self._backend == "json":
242
+ q = query.lower()
243
+ results: list[_Item] = []
244
+ canonical_namespace = _qualify_namespace(namespace) if namespace is not None else None
245
+ for item in self._items:
246
+ normalized_item = _normalize_item(item)
247
+ if _is_expired(normalized_item):
248
+ continue
249
+ if source_cli is not None and item["source_cli"] != source_cli:
250
+ continue
251
+ if canonical_namespace is not None and normalized_item.get("namespace") != canonical_namespace:
252
+ continue
253
+ if not include_quarantined and bool(normalized_item.get("quarantined", False)):
254
+ continue
255
+ key_str = str(item.get("key", "")).lower()
256
+ content_str = str(item.get("content", "")).lower()
257
+ tags_raw = item.get("tags", [])
258
+ tags_str = " ".join(str(t).lower() for t in tags_raw) if isinstance(tags_raw, list) else ""
259
+ if q in key_str or q in content_str or q in tags_str:
260
+ results.append(normalized_item)
261
+ return results
139
262
 
140
- Optionally filtered by *source_cli*.
141
- """
263
+ rows = self.list_all(
264
+ source_cli=source_cli,
265
+ namespace=namespace,
266
+ include_quarantined=include_quarantined,
267
+ )
142
268
  q = query.lower()
143
- results: list[_Item] = []
144
- for item in self._items:
145
- if source_cli is not None and item["source_cli"] != source_cli:
146
- continue
269
+ matches: list[_Item] = []
270
+ for item in rows:
147
271
  key_str = str(item.get("key", "")).lower()
148
272
  content_str = str(item.get("content", "")).lower()
149
273
  tags_raw = item.get("tags", [])
150
274
  tags_str = " ".join(str(t).lower() for t in tags_raw) if isinstance(tags_raw, list) else ""
151
275
  if q in key_str or q in content_str or q in tags_str:
152
- results.append(item)
153
- return results
276
+ matches.append(item)
277
+ return matches
154
278
 
155
- def list_all(self, source_cli: str | None = None) -> list[_Item]:
156
- """Return all items, optionally filtered by *source_cli*."""
157
- if source_cli is None:
158
- return list(self._items)
159
- return [i for i in self._items if i["source_cli"] == source_cli]
279
+ def list_all(
280
+ self,
281
+ source_cli: str | None = None,
282
+ *,
283
+ run_id: str | None = None,
284
+ profile_id: str | None = None,
285
+ namespace: str | None = None,
286
+ include_quarantined: bool = False,
287
+ ) -> list[_Item]:
288
+ if self._backend == "json":
289
+ out = [_normalize_item(item) for item in self._items if not _is_expired(item)]
290
+ if source_cli is not None:
291
+ out = [i for i in out if i.get("source_cli") == source_cli]
292
+ if run_id is not None:
293
+ out = [i for i in out if str(i.get("run_id", "")) == run_id]
294
+ if profile_id is not None:
295
+ out = [i for i in out if str(i.get("profile_id", "")) == profile_id]
296
+ if namespace is not None:
297
+ canonical_namespace = _qualify_namespace(namespace)
298
+ out = [i for i in out if str(i.get("namespace", "")) == canonical_namespace]
299
+ if not include_quarantined:
300
+ out = [i for i in out if not bool(i.get("quarantined", False))]
301
+ return out
160
302
 
161
- def export_all(self) -> list[_Item]:
162
- """Return a copy of all items as a list."""
163
- return list(self._items)
303
+ where: list[str] = []
304
+ params: list[Any] = []
305
+ if source_cli is not None:
306
+ where.append("source_cli = ?")
307
+ params.append(source_cli)
308
+ if run_id is not None:
309
+ where.append("run_id = ?")
310
+ params.append(run_id)
311
+ if profile_id is not None:
312
+ where.append("profile_id = ?")
313
+ params.append(profile_id)
314
+ if namespace is not None:
315
+ where.append("namespace = ?")
316
+ params.append(_qualify_namespace(namespace))
317
+ if not include_quarantined:
318
+ where.append("quarantined = 0")
319
+ where.append("(expires_at IS NULL OR expires_at = '' OR expires_at > ?)")
320
+ params.append(_utc_now_iso())
164
321
 
165
- def import_items(self, items: list[_Item]) -> int:
166
- """Bulk import items, skipping any whose ``id`` already exists.
322
+ sql = "SELECT * FROM memories"
323
+ if where:
324
+ sql += " WHERE " + " AND ".join(where)
325
+ sql += " ORDER BY updated_at DESC"
326
+ rows = self._sqlite_conn().execute(sql, tuple(params)).fetchall()
327
+ return [self._row_to_item(row) for row in rows]
167
328
 
168
- Returns the number of items actually added.
169
- """
170
- existing_ids = {str(i["id"]) for i in self._items}
329
+ def export_all(self, *, include_quarantined: bool = False) -> list[_Item]:
330
+ return self.list_all(include_quarantined=include_quarantined)
331
+
332
+ def import_items(self, items: list[_Item], *, quarantined: bool = False) -> int:
333
+ if self._backend == "json":
334
+ existing_ids = {str(i["id"]) for i in self._items}
335
+ added = 0
336
+ for item in items:
337
+ item_id = str(item.get("id", ""))
338
+ if item_id and item_id not in existing_ids:
339
+ normalized = _normalize_item(item)
340
+ normalized["quarantined"] = bool(quarantined)
341
+ self._items.append(normalized)
342
+ existing_ids.add(item_id)
343
+ added += 1
344
+ if added:
345
+ self._save_json_items()
346
+ return added
347
+
348
+ conn = self._sqlite_conn()
171
349
  added = 0
172
350
  for item in items:
173
- item_id = str(item.get("id", ""))
174
- if item_id and item_id not in existing_ids:
175
- self._items.append(item)
176
- existing_ids.add(item_id)
177
- added += 1
351
+ item_id = str(item.get("id", "")).strip()
352
+ if not item_id:
353
+ continue
354
+ existing = conn.execute("SELECT 1 FROM memories WHERE id = ?", (item_id,)).fetchone()
355
+ if existing is not None:
356
+ continue
357
+ key = str(item.get("key", ""))
358
+ content = str(item.get("content", ""))
359
+ source_cli = str(item.get("source_cli", ""))
360
+ tags = item.get("tags") if isinstance(item.get("tags"), list) else []
361
+ created_at = str(item.get("created_at", "")) or _utc_now_iso()
362
+ updated_at = str(item.get("updated_at", "")) or created_at
363
+ namespace = _qualify_namespace(item.get("namespace", _DEFAULT_NAMESPACE))
364
+ retention_days = _normalize_retention_days(item.get("retention_days"))
365
+ expires_at = str(item.get("expires_at", "")).strip() or _compute_expires_at(created_at, retention_days)
366
+ redacted_content = _redact_pii(content)
367
+ run_id = str(item.get("run_id", ""))
368
+ profile_id = str(item.get("profile_id", ""))
369
+ quarantined_flag = bool(quarantined)
370
+ conn.execute(
371
+ """
372
+ INSERT INTO memories(
373
+ id, key, content, source_cli, tags_json, run_id, profile_id,
374
+ namespace, retention_days, expires_at, created_at, updated_at, quarantined
375
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
376
+ """,
377
+ (
378
+ item_id,
379
+ key,
380
+ self._encrypt_text(redacted_content, purpose="sqlite-content"),
381
+ source_cli,
382
+ json.dumps(tags, ensure_ascii=True),
383
+ run_id,
384
+ profile_id,
385
+ namespace,
386
+ retention_days,
387
+ expires_at,
388
+ created_at,
389
+ updated_at,
390
+ 1 if quarantined_flag else 0,
391
+ ),
392
+ )
393
+ self._upsert_fts(
394
+ {
395
+ "id": item_id,
396
+ "key": key,
397
+ "content": redacted_content,
398
+ "tags": tags,
399
+ }
400
+ )
401
+ added += 1
178
402
  if added:
179
- self._save()
403
+ conn.commit()
180
404
  return added
181
405
 
182
406
  def count(self) -> int:
183
- """Return the total number of stored items."""
184
- return len(self._items)
407
+ if self._backend == "json":
408
+ return len(self._items)
409
+ row = self._sqlite_conn().execute("SELECT COUNT(*) AS n FROM memories").fetchone()
410
+ if row is None:
411
+ return 0
412
+ return int(row["n"])
185
413
 
186
414
  def clear(self) -> int:
187
- """Delete all items and return the count of deleted items."""
188
- n = len(self._items)
189
- self._items.clear()
190
- self._save()
415
+ n = self.count()
416
+ if self._backend == "json":
417
+ self._items.clear()
418
+ self._save_json_items()
419
+ return n
420
+
421
+ conn = self._sqlite_conn()
422
+ conn.execute("DELETE FROM memories")
423
+ conn.execute("DELETE FROM artifacts")
424
+ conn.execute("DELETE FROM lineage_edges")
425
+ if self._fts_enabled:
426
+ conn.execute("DELETE FROM memories_fts")
427
+ conn.commit()
191
428
  return n
192
429
 
193
- # ------------------------------------------------------------------
194
- # Internal helpers
195
- # ------------------------------------------------------------------
430
+ def promote_item(self, item_id: str) -> bool:
431
+ if self._backend == "json":
432
+ item = self.get(item_id)
433
+ if item is None:
434
+ return False
435
+ if bool(item.get("quarantined", False)):
436
+ item["quarantined"] = False
437
+ item["updated_at"] = _utc_now_iso()
438
+ self._save_json_items()
439
+ return True
440
+
441
+ cur = self._sqlite_conn().execute(
442
+ "UPDATE memories SET quarantined = 0, updated_at = ? WHERE id = ?",
443
+ (_utc_now_iso(), item_id),
444
+ )
445
+ self._sqlite_conn().commit()
446
+ return cur.rowcount > 0
447
+
448
+ def query_scoped(
449
+ self,
450
+ query: str,
451
+ *,
452
+ run_id: str,
453
+ profile_id: str,
454
+ limit: int = 20,
455
+ ) -> list[_Item]:
456
+ bounded_limit = max(1, min(int(limit), 200))
457
+ if self._backend == "json":
458
+ rows = self.search(query)
459
+ scoped = [
460
+ row
461
+ for row in rows
462
+ if str(row.get("run_id", "")) == run_id
463
+ and str(row.get("profile_id", "")) == profile_id
464
+ ]
465
+ return scoped[:bounded_limit]
466
+
467
+ q = f"%{query.lower()}%"
468
+ rows = self._sqlite_conn().execute(
469
+ """
470
+ SELECT * FROM memories
471
+ WHERE run_id = ?
472
+ AND profile_id = ?
473
+ AND quarantined = 0
474
+ AND (lower(key) LIKE ? OR lower(content) LIKE ? OR lower(tags_json) LIKE ?)
475
+ ORDER BY updated_at DESC
476
+ LIMIT ?
477
+ """,
478
+ (run_id, profile_id, q, q, q, bounded_limit),
479
+ ).fetchall()
480
+ return [self._row_to_item(row) for row in rows]
196
481
 
197
- def _load(self) -> list[_Item]:
198
- """Load items from the JSON file. Returns empty list if missing."""
482
+ def hybrid_retrieve(
483
+ self,
484
+ query: str,
485
+ *,
486
+ run_id: str,
487
+ profile_id: str,
488
+ limit: int = 10,
489
+ ) -> list[dict[str, Any]]:
490
+ bounded_limit = max(1, min(int(limit), 100))
491
+ if self._backend == "json":
492
+ rows = self.query_scoped(query, run_id=run_id, profile_id=profile_id, limit=bounded_limit)
493
+ return [
494
+ {
495
+ **row,
496
+ "score": float(_token_overlap_score(query, row)),
497
+ }
498
+ for row in rows
499
+ ]
500
+
501
+ candidates: list[tuple[_Item, float]] = []
502
+ conn = self._sqlite_conn()
503
+ if self._fts_enabled:
504
+ rows = conn.execute(
505
+ """
506
+ SELECT m.*, bm25(memories_fts) AS rank
507
+ FROM memories_fts
508
+ JOIN memories AS m ON m.id = memories_fts.id
509
+ WHERE memories_fts MATCH ?
510
+ AND m.run_id = ?
511
+ AND m.profile_id = ?
512
+ ORDER BY rank ASC
513
+ LIMIT ?
514
+ """,
515
+ (_fts_query(query), run_id, profile_id, bounded_limit),
516
+ ).fetchall()
517
+ for row in rows:
518
+ item = self._row_to_item(row)
519
+ rank = row["rank"] if isinstance(row["rank"], (int, float)) else 0.0
520
+ keyword_score = 1.0 / (1.0 + max(float(rank), 0.0))
521
+ semantic_score = _token_overlap_score(query, item)
522
+ candidates.append((item, (0.7 * keyword_score) + (0.3 * semantic_score)))
523
+
524
+ if not candidates:
525
+ for item in self.query_scoped(query, run_id=run_id, profile_id=profile_id, limit=bounded_limit):
526
+ candidates.append((item, _token_overlap_score(query, item)))
527
+
528
+ candidates.sort(key=lambda pair: pair[1], reverse=True)
529
+ return [{**item, "score": round(score, 6)} for item, score in candidates[:bounded_limit]]
530
+
531
+ def index_artifact(
532
+ self,
533
+ *,
534
+ run_id: str,
535
+ profile_id: str,
536
+ kind: str,
537
+ path: str,
538
+ summary: str,
539
+ size_bytes: int = 0,
540
+ metadata: dict[str, Any] | None = None,
541
+ ) -> dict[str, Any]:
542
+ now = _utc_now_iso()
543
+ artifact_id = f"artifact-{uuid.uuid4().hex}"
544
+ clean_metadata = _sanitize_metadata(metadata or {})
545
+ handle = {
546
+ "artifact_id": artifact_id,
547
+ "run_id": run_id,
548
+ "profile_id": profile_id,
549
+ "kind": kind,
550
+ "path": path,
551
+ "summary": summary,
552
+ "size_bytes": int(size_bytes),
553
+ "metadata": clean_metadata,
554
+ "created_at": now,
555
+ }
556
+
557
+ if self._backend == "json":
558
+ payload = {
559
+ "field": "artifact.handle",
560
+ "value": json.dumps(handle, ensure_ascii=True),
561
+ "source": "artifact_index",
562
+ "project_scope": "",
563
+ "run_id": run_id,
564
+ "profile_id": profile_id,
565
+ "updated_at": now,
566
+ }
567
+ self.add(
568
+ key=f"artifact:{artifact_id}",
569
+ content=json.dumps(payload, ensure_ascii=True),
570
+ source_cli="runtime",
571
+ tags=[f"artifact_kind:{kind}"],
572
+ run_id=run_id,
573
+ profile_id=profile_id,
574
+ )
575
+ return handle
576
+
577
+ self._sqlite_conn().execute(
578
+ """
579
+ INSERT INTO artifacts(
580
+ artifact_id, run_id, profile_id, kind, path, summary, size_bytes, metadata_json, created_at
581
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
582
+ """,
583
+ (
584
+ artifact_id,
585
+ run_id,
586
+ profile_id,
587
+ kind,
588
+ path,
589
+ summary,
590
+ int(size_bytes),
591
+ json.dumps(clean_metadata, ensure_ascii=True),
592
+ now,
593
+ ),
594
+ )
595
+ self._sqlite_conn().commit()
596
+ return handle
597
+
598
+ def query_artifacts(
599
+ self,
600
+ *,
601
+ run_id: str,
602
+ profile_id: str | None = None,
603
+ kind: str | None = None,
604
+ limit: int = 50,
605
+ ) -> list[dict[str, Any]]:
606
+ bounded_limit = max(1, min(int(limit), 200))
607
+ if self._backend == "json":
608
+ handles: list[dict[str, Any]] = []
609
+ for item in self.list_all(run_id=run_id, profile_id=profile_id):
610
+ key = str(item.get("key", ""))
611
+ if not key.startswith("artifact:"):
612
+ continue
613
+ try:
614
+ payload = json.loads(str(item.get("content", "")))
615
+ except (TypeError, ValueError, json.JSONDecodeError):
616
+ continue
617
+ value_raw = payload.get("value")
618
+ if not isinstance(value_raw, str):
619
+ continue
620
+ try:
621
+ handle = json.loads(value_raw)
622
+ except (TypeError, ValueError, json.JSONDecodeError):
623
+ continue
624
+ if not isinstance(handle, dict):
625
+ continue
626
+ if profile_id is not None and str(handle.get("profile_id", "")) != profile_id:
627
+ continue
628
+ if kind is not None and str(handle.get("kind", "")) != kind:
629
+ continue
630
+ handles.append(_sanitize_artifact_handle(handle))
631
+ return handles[:bounded_limit]
632
+
633
+ where = ["run_id = ?"]
634
+ params: list[Any] = [run_id]
635
+ if profile_id is not None:
636
+ where.append("profile_id = ?")
637
+ params.append(profile_id)
638
+ if kind is not None:
639
+ where.append("kind = ?")
640
+ params.append(kind)
641
+ params.append(bounded_limit)
642
+ rows = self._sqlite_conn().execute(
643
+ f"""
644
+ SELECT artifact_id, run_id, profile_id, kind, path, summary, size_bytes, metadata_json, created_at
645
+ FROM artifacts
646
+ WHERE {' AND '.join(where)}
647
+ ORDER BY created_at DESC
648
+ LIMIT ?
649
+ """,
650
+ tuple(params),
651
+ ).fetchall()
652
+ handles: list[dict[str, Any]] = []
653
+ for row in rows:
654
+ metadata = _parse_json_object(row["metadata_json"])
655
+ handles.append(
656
+ {
657
+ "artifact_id": row["artifact_id"],
658
+ "run_id": row["run_id"],
659
+ "profile_id": row["profile_id"],
660
+ "kind": row["kind"],
661
+ "path": row["path"],
662
+ "summary": row["summary"],
663
+ "size_bytes": int(row["size_bytes"]),
664
+ "metadata": _sanitize_metadata(metadata),
665
+ "created_at": row["created_at"],
666
+ }
667
+ )
668
+ return handles
669
+
670
+ def _load_json_items(self) -> list[_Item]:
199
671
  path = Path(self.store_path)
200
672
  if not path.exists():
201
673
  return []
@@ -203,18 +675,205 @@ class MemoryStore:
203
675
  raw = json.loads(path.read_text())
204
676
  if isinstance(raw, list):
205
677
  return raw # type: ignore[return-value]
678
+ if isinstance(raw, dict) and str(raw.get("format", "")) == _JSON_ENVELOPE_FORMAT:
679
+ encrypted_payload = str(raw.get("payload", ""))
680
+ integrity = raw.get("integrity", {})
681
+ expected_sha = ""
682
+ if isinstance(integrity, dict):
683
+ expected_sha = str(integrity.get("sha256", ""))
684
+ if not encrypted_payload or hashlib.sha256(encrypted_payload.encode("utf-8")).hexdigest() != expected_sha:
685
+ return []
686
+ decrypted = self._decrypt_text(encrypted_payload, purpose="json-at-rest")
687
+ if not decrypted:
688
+ return []
689
+ payload = json.loads(decrypted)
690
+ if isinstance(payload, list):
691
+ return payload # type: ignore[return-value]
206
692
  return []
207
693
  except (json.JSONDecodeError, ValueError):
208
694
  return []
209
695
 
210
- def _save(self) -> None:
211
- """Persist items to disk with atomic write (tmp + os.replace)."""
696
+ def _save_json_items(self) -> None:
212
697
  path = Path(self.store_path)
213
698
  path.parent.mkdir(parents=True, exist_ok=True)
214
699
  tmp_path = path.with_name(f"{path.name}.tmp")
215
- _ = tmp_path.write_text(json.dumps(self._items, indent=2) + "\n")
700
+ _ = tmp_path.write_text(json.dumps(self._items, indent=2, ensure_ascii=True) + "\n")
216
701
  _ = os.replace(tmp_path, path)
217
702
 
703
+ def _sqlite_conn(self) -> sqlite3.Connection:
704
+ if self._conn is None:
705
+ raise RuntimeError("SQLite backend is not initialized")
706
+ return self._conn
707
+
708
+ def _init_sqlite(self) -> None:
709
+ path = Path(self.store_path)
710
+ path.parent.mkdir(parents=True, exist_ok=True)
711
+ conn = sqlite3.connect(path)
712
+ conn.row_factory = sqlite3.Row
713
+ conn.execute("PRAGMA journal_mode=WAL")
714
+ conn.execute("PRAGMA foreign_keys=ON")
715
+ conn.execute(
716
+ """
717
+ CREATE TABLE IF NOT EXISTS memories (
718
+ id TEXT PRIMARY KEY,
719
+ key TEXT NOT NULL,
720
+ content TEXT NOT NULL,
721
+ source_cli TEXT NOT NULL,
722
+ tags_json TEXT NOT NULL,
723
+ run_id TEXT NOT NULL DEFAULT '',
724
+ profile_id TEXT NOT NULL DEFAULT '',
725
+ namespace TEXT NOT NULL DEFAULT '127.0.0.1:default',
726
+ retention_days INTEGER,
727
+ expires_at TEXT,
728
+ created_at TEXT NOT NULL,
729
+ updated_at TEXT NOT NULL,
730
+ quarantined INTEGER NOT NULL DEFAULT 0
731
+ )
732
+ """
733
+ )
734
+ _ensure_memory_columns(conn)
735
+ conn.execute("CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(run_id, profile_id, updated_at)")
736
+ conn.execute(
737
+ """
738
+ CREATE TABLE IF NOT EXISTS artifacts (
739
+ artifact_id TEXT PRIMARY KEY,
740
+ run_id TEXT NOT NULL,
741
+ profile_id TEXT NOT NULL,
742
+ kind TEXT NOT NULL,
743
+ path TEXT NOT NULL,
744
+ summary TEXT NOT NULL,
745
+ size_bytes INTEGER NOT NULL DEFAULT 0,
746
+ metadata_json TEXT NOT NULL DEFAULT '{}',
747
+ created_at TEXT NOT NULL
748
+ )
749
+ """
750
+ )
751
+ conn.execute("CREATE INDEX IF NOT EXISTS idx_artifacts_scope ON artifacts(run_id, profile_id, created_at)")
752
+ conn.execute(
753
+ """
754
+ CREATE TABLE IF NOT EXISTS lineage_edges (
755
+ edge_id INTEGER PRIMARY KEY AUTOINCREMENT,
756
+ parent_node TEXT NOT NULL,
757
+ child_node TEXT NOT NULL,
758
+ edge_type TEXT NOT NULL,
759
+ run_id TEXT NOT NULL,
760
+ profile_id TEXT NOT NULL,
761
+ metadata_json TEXT NOT NULL DEFAULT '{}',
762
+ created_at TEXT NOT NULL
763
+ )
764
+ """
765
+ )
766
+ conn.execute(
767
+ """
768
+ CREATE INDEX IF NOT EXISTS idx_lineage_scope
769
+ ON lineage_edges(run_id, profile_id, parent_node, child_node)
770
+ """
771
+ )
772
+
773
+ try:
774
+ conn.execute(
775
+ """
776
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts
777
+ USING fts5(id UNINDEXED, key, content, tags)
778
+ """
779
+ )
780
+ self._fts_enabled = True
781
+ except sqlite3.OperationalError:
782
+ self._fts_enabled = False
783
+
784
+ self._conn = conn
785
+ self._rebuild_fts_if_available()
786
+ conn.commit()
787
+
788
+ def _rebuild_fts_if_available(self) -> None:
789
+ if not self._fts_enabled:
790
+ return
791
+ conn = self._sqlite_conn()
792
+ conn.execute("DELETE FROM memories_fts")
793
+ rows = conn.execute("SELECT id, key, content, tags_json FROM memories").fetchall()
794
+ for row in rows:
795
+ tags = _parse_json_array(row["tags_json"])
796
+ conn.execute(
797
+ "INSERT INTO memories_fts(id, key, content, tags) VALUES (?, ?, ?, ?)",
798
+ (row["id"], row["key"], row["content"], " ".join(str(t) for t in tags)),
799
+ )
800
+
801
+ def _upsert_fts(self, item: _Item) -> None:
802
+ if not self._fts_enabled:
803
+ return
804
+ conn = self._sqlite_conn()
805
+ conn.execute("DELETE FROM memories_fts WHERE id = ?", (item["id"],))
806
+ tags = item.get("tags", [])
807
+ tags_text = " ".join(str(tag) for tag in tags) if isinstance(tags, list) else ""
808
+ conn.execute(
809
+ "INSERT INTO memories_fts(id, key, content, tags) VALUES (?, ?, ?, ?)",
810
+ (item["id"], str(item.get("key", "")), str(item.get("content", "")), tags_text),
811
+ )
812
+
813
+ def _delete_fts(self, item_id: str) -> None:
814
+ if not self._fts_enabled:
815
+ return
816
+ self._sqlite_conn().execute("DELETE FROM memories_fts WHERE id = ?", (item_id,))
817
+
818
+ def _row_to_item(self, row: sqlite3.Row) -> _Item:
819
+ raw_expires_at = row["expires_at"] if "expires_at" in row.keys() else None
820
+ expires_at = _normalize_expires_at(raw_expires_at)
821
+ return {
822
+ "id": row["id"],
823
+ "key": row["key"],
824
+ "content": self._decrypt_text(str(row["content"]), purpose="sqlite-content"),
825
+ "source_cli": row["source_cli"],
826
+ "tags": _parse_json_array(row["tags_json"]),
827
+ "run_id": row["run_id"],
828
+ "profile_id": row["profile_id"],
829
+ "namespace": _qualify_namespace(row["namespace"] if "namespace" in row.keys() else _DEFAULT_NAMESPACE),
830
+ "retention_days": _normalize_retention_days(row["retention_days"] if "retention_days" in row.keys() else None),
831
+ "expires_at": expires_at,
832
+ "created_at": row["created_at"],
833
+ "updated_at": row["updated_at"],
834
+ "quarantined": bool(row["quarantined"] if "quarantined" in row.keys() else 0),
835
+ }
836
+
837
+ def _derive_key_bytes(self, *, purpose: str) -> bytes:
838
+ secret_seed = os.environ.get("OMG_MEMORY_SECRET", "").strip()
839
+ if not secret_seed:
840
+ secret_seed = f"{os.path.expanduser('~')}|{self._memory_host}|{socket.gethostname()}"
841
+ material = f"{secret_seed}|{self._memory_host}|{purpose}".encode("utf-8")
842
+ return hashlib.sha256(material).digest()
843
+
844
+ def _encrypt_text(self, text: str, *, purpose: str) -> str:
845
+ if text.startswith(_ENCRYPTED_PREFIX):
846
+ return text
847
+ key_bytes = self._derive_key_bytes(purpose=purpose)
848
+ if _has_fernet and Fernet is not None:
849
+ fernet_key = base64.urlsafe_b64encode(key_bytes)
850
+ token = Fernet(fernet_key).encrypt(text.encode("utf-8")).decode("utf-8")
851
+ return f"{_ENCRYPTED_PREFIX}{token}"
852
+ encoded = text.encode("utf-8")
853
+ cipher = bytes(byte ^ key_bytes[idx % len(key_bytes)] for idx, byte in enumerate(encoded))
854
+ return f"{_ENCRYPTED_PREFIX}{base64.urlsafe_b64encode(cipher).decode('ascii')}"
855
+
856
+ def _decrypt_text(self, text: str, *, purpose: str) -> str:
857
+ if not text.startswith(_ENCRYPTED_PREFIX):
858
+ return text
859
+ payload = text[len(_ENCRYPTED_PREFIX) :]
860
+ key_bytes = self._derive_key_bytes(purpose=purpose)
861
+ if _has_fernet and Fernet is not None:
862
+ try:
863
+ fernet_key = base64.urlsafe_b64encode(key_bytes)
864
+ return Fernet(fernet_key).decrypt(payload.encode("utf-8")).decode("utf-8")
865
+ except InvalidToken:
866
+ return ""
867
+ try:
868
+ cipher = base64.urlsafe_b64decode(payload.encode("ascii"))
869
+ except ValueError:
870
+ return ""
871
+ plain = bytes(byte ^ key_bytes[idx % len(key_bytes)] for idx, byte in enumerate(cipher))
872
+ try:
873
+ return plain.decode("utf-8")
874
+ except UnicodeDecodeError:
875
+ return ""
876
+
218
877
 
219
878
  def project_preference_signals(
220
879
  project_dir: str,
@@ -222,13 +881,18 @@ def project_preference_signals(
222
881
  store_path: str | None = None,
223
882
  max_signals: int = _PREFERENCE_SIGNAL_LIMIT,
224
883
  ) -> list[dict[str, Any]]:
225
- """Return bounded preference signals scoped to *project_dir*."""
226
884
  canonical_project = os.path.realpath(project_dir)
227
885
  if not canonical_project:
228
886
  return []
229
887
 
230
888
  limit = max(1, min(int(max_signals), _PREFERENCE_SIGNAL_LIMIT))
231
- store = MemoryStore(store_path=store_path)
889
+ resolved_store_path = store_path
890
+ if resolved_store_path is None:
891
+ legacy_json_path = Path.home() / ".omg" / "shared-memory" / "store.json"
892
+ if legacy_json_path.exists():
893
+ resolved_store_path = str(legacy_json_path)
894
+
895
+ store = MemoryStore(store_path=resolved_store_path)
232
896
  items = list(reversed(store.list_all()))
233
897
  results: list[dict[str, Any]] = []
234
898
  seen: set[tuple[str, str, str, str]] = set()
@@ -340,8 +1004,178 @@ def _clamp_confidence(raw: Any) -> float:
340
1004
  return round(score, 3)
341
1005
 
342
1006
 
1007
+ def _token_overlap_score(query: str, item: dict[str, Any]) -> float:
1008
+ query_tokens = {token for token in query.lower().split() if token}
1009
+ if not query_tokens:
1010
+ return 0.0
1011
+ tags_value = item.get("tags", [])
1012
+ tags_text = " ".join(str(tag) for tag in tags_value) if isinstance(tags_value, list) else ""
1013
+ corpus = " ".join([str(item.get("key", "")), str(item.get("content", "")), tags_text]).lower()
1014
+ corpus_tokens = {token for token in corpus.split() if token}
1015
+ if not corpus_tokens:
1016
+ return 0.0
1017
+ overlap = len(query_tokens.intersection(corpus_tokens))
1018
+ return float(overlap) / float(len(query_tokens))
1019
+
1020
+
1021
+ def _fts_query(query: str) -> str:
1022
+ tokens = [token for token in query.replace('"', " ").split() if token]
1023
+ if not tokens:
1024
+ return ""
1025
+ return " AND ".join(tokens)
1026
+
1027
+
1028
+ def _parse_json_array(raw: object) -> list[Any]:
1029
+ if isinstance(raw, list):
1030
+ return raw
1031
+ if not isinstance(raw, str):
1032
+ return []
1033
+ try:
1034
+ payload = json.loads(raw)
1035
+ except (TypeError, ValueError, json.JSONDecodeError):
1036
+ return []
1037
+ return payload if isinstance(payload, list) else []
1038
+
1039
+
1040
+ def _parse_json_object(raw: object) -> dict[str, Any]:
1041
+ if isinstance(raw, dict):
1042
+ return raw
1043
+ if not isinstance(raw, str):
1044
+ return {}
1045
+ try:
1046
+ payload = json.loads(raw)
1047
+ except (TypeError, ValueError, json.JSONDecodeError):
1048
+ return {}
1049
+ return payload if isinstance(payload, dict) else {}
1050
+
1051
+
1052
+ def _sanitize_metadata(metadata: dict[str, Any]) -> dict[str, Any]:
1053
+ clean: dict[str, Any] = {}
1054
+ omitted_payload = False
1055
+ for key, value in metadata.items():
1056
+ key_text = str(key)
1057
+ if key_text == "payload":
1058
+ omitted_payload = True
1059
+ continue
1060
+ if isinstance(value, str) and len(value) > _INLINE_METADATA_MAX:
1061
+ clean[key_text] = value[:_INLINE_METADATA_MAX] + "..."
1062
+ continue
1063
+ clean[key_text] = value
1064
+ if omitted_payload:
1065
+ clean["omitted_payload"] = True
1066
+ return clean
1067
+
1068
+
1069
+ def _sanitize_artifact_handle(handle: dict[str, Any]) -> dict[str, Any]:
1070
+ sanitized = dict(handle)
1071
+ metadata_raw = sanitized.get("metadata")
1072
+ metadata = metadata_raw if isinstance(metadata_raw, dict) else {}
1073
+ sanitized["metadata"] = _sanitize_metadata(metadata)
1074
+ sanitized.pop("payload", None)
1075
+ return sanitized
1076
+
1077
+
1078
+ def _normalize_item(item: _Item) -> _Item:
1079
+ normalized = dict(item)
1080
+ normalized["content"] = _redact_pii(str(item.get("content", "")))
1081
+ normalized["namespace"] = _qualify_namespace(item.get("namespace", _DEFAULT_NAMESPACE))
1082
+ normalized["retention_days"] = _normalize_retention_days(item.get("retention_days"))
1083
+ created_at = str(item.get("created_at", "")).strip() or _utc_now_iso()
1084
+ normalized_expires_at = _normalize_expires_at(item.get("expires_at"))
1085
+ normalized["expires_at"] = normalized_expires_at or _compute_expires_at(created_at, normalized["retention_days"])
1086
+ normalized["quarantined"] = bool(item.get("quarantined", False))
1087
+ return normalized
1088
+
1089
+
1090
+ def _redact_pii(content: str) -> str:
1091
+ redacted = content
1092
+ for pattern, token in _PII_PATTERNS:
1093
+ redacted = pattern.sub(token, redacted)
1094
+ return redacted
1095
+
1096
+
1097
+ def _qualify_namespace(namespace: object) -> str:
1098
+ text = str(namespace or "").strip()
1099
+ if not text:
1100
+ text = _DEFAULT_NAMESPACE
1101
+ if ":" in text:
1102
+ host, local = text.split(":", 1)
1103
+ if host.strip() and local.strip():
1104
+ return f"{host.strip()}:{local.strip()}"
1105
+ host = os.environ.get("OMG_MEMORY_HOST", _DEFAULT_MEMORY_HOST).strip() or _DEFAULT_MEMORY_HOST
1106
+ return f"{host}:{text}"
1107
+
1108
+
1109
+ def _normalize_retention_days(raw: object) -> int | None:
1110
+ if raw is None or raw == "":
1111
+ return None
1112
+ value = int(str(raw).strip())
1113
+ if value < 0:
1114
+ raise ValueError("retention_days must be >= 0")
1115
+ return value
1116
+
1117
+
1118
+ def _compute_expires_at(created_at: str, retention_days: int | None) -> str | None:
1119
+ if retention_days is None:
1120
+ return None
1121
+ try:
1122
+ created_dt = datetime.fromisoformat(created_at)
1123
+ except ValueError:
1124
+ created_dt = datetime.now(timezone.utc)
1125
+ if created_dt.tzinfo is None:
1126
+ created_dt = created_dt.replace(tzinfo=timezone.utc)
1127
+ return (created_dt + timedelta(days=retention_days)).isoformat()
1128
+
1129
+
1130
+ def _is_expired(item: _Item) -> bool:
1131
+ expires_at = _normalize_expires_at(item.get("expires_at")) or ""
1132
+ if not expires_at:
1133
+ return False
1134
+ try:
1135
+ expires_dt = datetime.fromisoformat(expires_at)
1136
+ except ValueError:
1137
+ return False
1138
+ if expires_dt.tzinfo is None:
1139
+ expires_dt = expires_dt.replace(tzinfo=timezone.utc)
1140
+ return expires_dt <= datetime.now(timezone.utc)
1141
+
1142
+
1143
+ def _normalize_expires_at(raw: object) -> str | None:
1144
+ if raw is None:
1145
+ return None
1146
+ text = str(raw).strip()
1147
+ if not text or text.lower() == "none":
1148
+ return None
1149
+ return text
1150
+
1151
+
1152
+ def _ensure_memory_columns(conn: sqlite3.Connection) -> None:
1153
+ columns = {
1154
+ str(row["name"]): str(row["name"])
1155
+ for row in conn.execute("PRAGMA table_info(memories)").fetchall()
1156
+ }
1157
+ if "namespace" not in columns:
1158
+ _safe_add_memory_column(
1159
+ conn,
1160
+ "ALTER TABLE memories ADD COLUMN namespace TEXT NOT NULL DEFAULT '127.0.0.1:default'",
1161
+ )
1162
+ if "retention_days" not in columns:
1163
+ _safe_add_memory_column(conn, "ALTER TABLE memories ADD COLUMN retention_days INTEGER")
1164
+ if "expires_at" not in columns:
1165
+ _safe_add_memory_column(conn, "ALTER TABLE memories ADD COLUMN expires_at TEXT")
1166
+ if "quarantined" not in columns:
1167
+ _safe_add_memory_column(conn, "ALTER TABLE memories ADD COLUMN quarantined INTEGER NOT NULL DEFAULT 0")
1168
+
1169
+
1170
+ def _safe_add_memory_column(conn: sqlite3.Connection, ddl: str) -> None:
1171
+ try:
1172
+ conn.execute(ddl)
1173
+ except sqlite3.OperationalError as exc:
1174
+ if "duplicate column name" not in str(exc).lower():
1175
+ raise
1176
+
1177
+
343
1178
  def _utc_now_iso() -> str:
344
- """Return current UTC time as ISO 8601 string."""
345
1179
  return datetime.now(timezone.utc).isoformat()
346
1180
 
347
1181