oh-my-opencode 5.1.45 → 5.1.46

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 (352) hide show
  1. package/.agents/command/publish.md +9 -9
  2. package/.agents/skills/publish/SKILL.md +9 -9
  3. package/.opencode/command/publish.md +9 -9
  4. package/README.de.md +0 -5
  5. package/README.es.md +0 -5
  6. package/README.fr.md +0 -5
  7. package/README.it.md +0 -5
  8. package/README.ja.md +0 -5
  9. package/README.ko.md +0 -5
  10. package/README.md +4 -5
  11. package/README.pt-br.md +0 -5
  12. package/README.ru.md +0 -6
  13. package/README.zh-cn.md +0 -5
  14. package/dist/cli/index.js +76 -156
  15. package/dist/cli-node/index.js +76 -156
  16. package/dist/config-migration/index.d.ts +2 -2
  17. package/dist/config-migration/migration-plans.d.ts +0 -10
  18. package/dist/index.js +1166 -1203
  19. package/dist/skills/ast-grep/AGENTS.md +1 -1
  20. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  21. package/dist/skills/frontend/ATTRIBUTION.md +2 -2
  22. package/dist/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  23. package/dist/skills/ulw-research/AGENTS.md +14 -2
  24. package/dist/skills/ulw-research/SKILL.md +37 -12
  25. package/dist/skills/ulw-research/references/deliverable-phase.md +73 -13
  26. package/dist/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  27. package/dist/skills/ulw-research/references/fact-ledger.md +95 -0
  28. package/dist/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  29. package/dist/skills/ulw-research/references/report-gates.md +21 -4
  30. package/dist/skills/ulw-research/references/report-visualization.md +2 -0
  31. package/dist/skills/ulw-research/references/unit-rules.md +157 -0
  32. package/dist/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  33. package/dist/skills/ulw-research/scripts/claim-kinds.test.ts +193 -0
  34. package/dist/skills/ulw-research/scripts/cli-support.mjs +19 -5
  35. package/dist/skills/ulw-research/scripts/cli-support.test.ts +13 -2
  36. package/dist/skills/ulw-research/scripts/contracts.mjs +27 -6
  37. package/dist/skills/ulw-research/scripts/contracts.test.ts +3 -0
  38. package/dist/skills/ulw-research/scripts/copy-returns.test.ts +183 -0
  39. package/dist/skills/ulw-research/scripts/delivery-barrier.test.ts +245 -0
  40. package/dist/skills/ulw-research/scripts/fact-commands-meaning.mjs +191 -0
  41. package/dist/skills/ulw-research/scripts/fact-commands-verify.mjs +164 -0
  42. package/dist/skills/ulw-research/scripts/fact-commands.mjs +239 -0
  43. package/dist/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  44. package/dist/skills/ulw-research/scripts/fact-derive.test.ts +375 -0
  45. package/dist/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  46. package/dist/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  47. package/dist/skills/ulw-research/scripts/fact-fill.test.ts +221 -0
  48. package/dist/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +9 -2
  49. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  50. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +18 -3
  51. package/dist/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +160 -0
  52. package/dist/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  53. package/dist/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  54. package/dist/skills/ulw-research/scripts/fact-ledger.test.ts +2 -0
  55. package/dist/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  56. package/dist/skills/ulw-research/scripts/fact-locate.test.ts +118 -0
  57. package/dist/skills/ulw-research/scripts/fact-pairs.mjs +187 -0
  58. package/dist/skills/ulw-research/scripts/fact-pairs.test.ts +167 -0
  59. package/dist/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  60. package/dist/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +409 -0
  61. package/dist/skills/ulw-research/scripts/fact-unit-rules.test.ts +388 -0
  62. package/dist/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  63. package/dist/skills/ulw-research/scripts/fidelity-binding.test.ts +81 -0
  64. package/dist/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  65. package/dist/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  66. package/dist/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  67. package/dist/skills/ulw-research/scripts/fidelity-lexicon.test.ts +117 -0
  68. package/dist/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  69. package/dist/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  70. package/dist/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  71. package/dist/skills/ulw-research/scripts/fidelity-trace.test.ts +58 -0
  72. package/dist/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  73. package/dist/skills/ulw-research/scripts/fidelity-values.test.ts +270 -0
  74. package/dist/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  75. package/dist/skills/ulw-research/scripts/gates-fidelity.test.ts +73 -0
  76. package/dist/skills/ulw-research/scripts/gates-static.mjs +28 -8
  77. package/dist/skills/ulw-research/scripts/html-lite.mjs +2 -2
  78. package/dist/skills/ulw-research/scripts/html-markup.mjs +182 -0
  79. package/dist/skills/ulw-research/scripts/md-lite.mjs +193 -0
  80. package/dist/skills/ulw-research/scripts/md-lite.test.ts +271 -0
  81. package/dist/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  82. package/dist/skills/ulw-research/scripts/meaning-check.test.ts +228 -0
  83. package/dist/skills/ulw-research/scripts/outcome.mjs +6 -5
  84. package/dist/skills/ulw-research/scripts/placeholder.mjs +184 -0
  85. package/dist/skills/ulw-research/scripts/placeholder.test.ts +77 -0
  86. package/dist/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  87. package/dist/skills/ulw-research/scripts/polish-apply.test.ts +363 -0
  88. package/dist/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  89. package/dist/skills/ulw-research/scripts/polish-diff.test.ts +168 -0
  90. package/dist/skills/ulw-research/scripts/polish-markup.test.ts +187 -0
  91. package/dist/skills/ulw-research/scripts/polish-project.mjs +125 -0
  92. package/dist/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  93. package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  94. package/dist/skills/ulw-research/scripts/report-tools.mjs +15 -0
  95. package/dist/skills/ulw-research/scripts/report-tools.test.ts +458 -2
  96. package/dist/skills/ulw-research/scripts/source-commands.mjs +140 -0
  97. package/dist/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  98. package/dist/skills/ulw-research/scripts/source-snapshot.test.ts +113 -0
  99. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/assets/share.csv +3 -0
  100. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/gen-legacy-dev.mjs +89 -0
  101. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-basic.json +223 -0
  102. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-legacy-dev.json +859 -0
  103. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-verify.json +420 -0
  104. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/report-bad.html +19 -0
  105. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/report-good.html +39 -0
  106. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/acronyms.json +3 -0
  107. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/meta.json +9 -0
  108. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/sentences.jsonl +7 -0
  109. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/text.txt +7 -0
  110. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4.html +19 -0
  111. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/acronyms.json +1 -0
  112. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/meta.json +9 -0
  113. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/sentences.jsonl +1 -0
  114. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/text.txt +1 -0
  115. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S9.txt +1 -0
  116. package/dist/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  117. package/dist/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  118. package/dist/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  119. package/dist/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  120. package/dist/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  121. package/dist/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  122. package/dist/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  123. package/dist/skills/ulw-research/scripts/units.mjs +4 -4
  124. package/dist/testing/module-mock-lifecycle.d.ts +1 -1
  125. package/dist/tui.js +32 -34
  126. package/package.json +13 -13
  127. package/packages/lsp-core/src/mcp-protocol-pin.test.ts +29 -0
  128. package/packages/lsp-core/src/mcp.ts +5 -2
  129. package/packages/lsp-daemon/dist/cli.js +3 -3
  130. package/packages/lsp-daemon/dist/client.js +3 -3
  131. package/packages/lsp-daemon/dist/index.js +3 -3
  132. package/packages/lsp-tools-mcp/dist/cli.js +3 -3
  133. package/packages/lsp-tools-mcp/dist/mcp.js +3 -3
  134. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  135. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +22 -12
  136. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  137. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  138. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  139. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  140. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  141. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  142. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  143. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  145. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  146. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  147. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  148. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  149. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  150. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  151. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  153. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  155. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  156. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  157. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  158. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  159. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  160. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  161. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  162. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  163. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  164. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  165. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  166. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  167. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  168. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  169. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  170. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  171. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  172. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  173. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  174. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  175. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  176. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  177. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  178. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  179. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  180. package/packages/omo-codex/plugin/package-lock.json +12 -12
  181. package/packages/omo-codex/plugin/package.json +1 -1
  182. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +8 -3
  183. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +0 -2
  184. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +1 -1
  185. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  186. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +2 -2
  187. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  188. package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +14 -2
  189. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +36 -11
  190. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +73 -13
  191. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  192. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger.md +95 -0
  193. package/packages/omo-codex/plugin/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  194. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +21 -4
  195. package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +2 -0
  196. package/packages/omo-codex/plugin/skills/ulw-research/references/unit-rules.md +157 -0
  197. package/packages/omo-codex/plugin/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  198. package/packages/omo-codex/plugin/skills/ulw-research/scripts/cli-support.mjs +19 -5
  199. package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +27 -6
  200. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-meaning.mjs +191 -0
  201. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-verify.mjs +164 -0
  202. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands.mjs +239 -0
  203. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  204. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  205. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  206. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  207. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  208. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  209. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  210. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-pairs.mjs +187 -0
  211. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  212. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  213. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  214. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  215. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  216. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  217. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  218. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  219. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  220. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  221. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +28 -8
  222. package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-lite.mjs +2 -2
  223. package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-markup.mjs +182 -0
  224. package/packages/omo-codex/plugin/skills/ulw-research/scripts/md-lite.mjs +193 -0
  225. package/packages/omo-codex/plugin/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  226. package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +6 -5
  227. package/packages/omo-codex/plugin/skills/ulw-research/scripts/placeholder.mjs +184 -0
  228. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  229. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  230. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-project.mjs +125 -0
  231. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  232. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  233. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools.mjs +15 -0
  234. package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +140 -0
  235. package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  236. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  237. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  238. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  239. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  240. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  241. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  242. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  243. package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +4 -4
  244. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +19 -0
  245. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -3
  246. package/packages/omo-codex/scripts/install-dist/install-local.mjs +26 -16
  247. package/packages/shared-skills/skills/ast-grep/AGENTS.md +1 -1
  248. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  249. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +2 -2
  250. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  251. package/packages/shared-skills/skills/ulw-research/AGENTS.md +14 -2
  252. package/packages/shared-skills/skills/ulw-research/SKILL.md +37 -12
  253. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +73 -13
  254. package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  255. package/packages/shared-skills/skills/ulw-research/references/fact-ledger.md +95 -0
  256. package/packages/shared-skills/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  257. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +21 -4
  258. package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +2 -0
  259. package/packages/shared-skills/skills/ulw-research/references/unit-rules.md +157 -0
  260. package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  261. package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.test.ts +193 -0
  262. package/packages/shared-skills/skills/ulw-research/scripts/cli-support.mjs +19 -5
  263. package/packages/shared-skills/skills/ulw-research/scripts/cli-support.test.ts +13 -2
  264. package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +27 -6
  265. package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +3 -0
  266. package/packages/shared-skills/skills/ulw-research/scripts/copy-returns.test.ts +183 -0
  267. package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier.test.ts +245 -0
  268. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-meaning.mjs +191 -0
  269. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-verify.mjs +164 -0
  270. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands.mjs +239 -0
  271. package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  272. package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.test.ts +375 -0
  273. package/packages/shared-skills/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  274. package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  275. package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.test.ts +221 -0
  276. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +9 -2
  277. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  278. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +18 -3
  279. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +160 -0
  280. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  281. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  282. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.test.ts +2 -0
  283. package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  284. package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.test.ts +118 -0
  285. package/packages/shared-skills/skills/ulw-research/scripts/fact-pairs.mjs +187 -0
  286. package/packages/shared-skills/skills/ulw-research/scripts/fact-pairs.test.ts +167 -0
  287. package/packages/shared-skills/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  288. package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +409 -0
  289. package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-rules.test.ts +388 -0
  290. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  291. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-binding.test.ts +81 -0
  292. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  293. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  294. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  295. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.test.ts +117 -0
  296. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  297. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  298. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  299. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.test.ts +58 -0
  300. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  301. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.test.ts +270 -0
  302. package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  303. package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.test.ts +73 -0
  304. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +28 -8
  305. package/packages/shared-skills/skills/ulw-research/scripts/html-lite.mjs +2 -2
  306. package/packages/shared-skills/skills/ulw-research/scripts/html-markup.mjs +182 -0
  307. package/packages/shared-skills/skills/ulw-research/scripts/md-lite.mjs +193 -0
  308. package/packages/shared-skills/skills/ulw-research/scripts/md-lite.test.ts +271 -0
  309. package/packages/shared-skills/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  310. package/packages/shared-skills/skills/ulw-research/scripts/meaning-check.test.ts +228 -0
  311. package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +6 -5
  312. package/packages/shared-skills/skills/ulw-research/scripts/placeholder.mjs +184 -0
  313. package/packages/shared-skills/skills/ulw-research/scripts/placeholder.test.ts +77 -0
  314. package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  315. package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.test.ts +363 -0
  316. package/packages/shared-skills/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  317. package/packages/shared-skills/skills/ulw-research/scripts/polish-diff.test.ts +168 -0
  318. package/packages/shared-skills/skills/ulw-research/scripts/polish-markup.test.ts +187 -0
  319. package/packages/shared-skills/skills/ulw-research/scripts/polish-project.mjs +125 -0
  320. package/packages/shared-skills/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  321. package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  322. package/packages/shared-skills/skills/ulw-research/scripts/report-tools.mjs +15 -0
  323. package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +458 -2
  324. package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +140 -0
  325. package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  326. package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.test.ts +113 -0
  327. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/assets/share.csv +3 -0
  328. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/gen-legacy-dev.mjs +89 -0
  329. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-basic.json +223 -0
  330. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-legacy-dev.json +859 -0
  331. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-verify.json +420 -0
  332. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/report-bad.html +19 -0
  333. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/report-good.html +39 -0
  334. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/acronyms.json +3 -0
  335. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/meta.json +9 -0
  336. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/sentences.jsonl +7 -0
  337. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/text.txt +7 -0
  338. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4.html +19 -0
  339. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/acronyms.json +1 -0
  340. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/meta.json +9 -0
  341. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/sentences.jsonl +1 -0
  342. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/text.txt +1 -0
  343. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S9.txt +1 -0
  344. package/packages/shared-skills/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  345. package/packages/shared-skills/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  346. package/packages/shared-skills/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  347. package/packages/shared-skills/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  348. package/packages/shared-skills/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  349. package/packages/shared-skills/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  350. package/packages/shared-skills/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  351. package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +4 -4
  352. package/dist/config-migration/dori-section-rename.d.ts +0 -3
package/dist/tui.js CHANGED
@@ -70189,6 +70189,7 @@ var init_memory = __esm(() => {
70189
70189
  merge: _enum(["auto", "integration"]).default("auto"),
70190
70190
  category: string2().min(1).default("quick"),
70191
70191
  timeout_minutes: number2().int().positive().default(15),
70192
+ max_concurrent_runs: number2().int().positive().default(1),
70192
70193
  sandbox: _enum(["auto", "required", "off"]).default("auto")
70193
70194
  }).strict();
70194
70195
  OmoMemorySyncSchema = object({
@@ -70260,6 +70261,7 @@ var init_memory = __esm(() => {
70260
70261
  merge: _enum(["auto", "integration"]).optional(),
70261
70262
  category: string2().min(1).optional(),
70262
70263
  timeout_minutes: number2().int().positive().optional(),
70264
+ max_concurrent_runs: number2().int().positive().optional(),
70263
70265
  sandbox: _enum(["auto", "required", "off"]).optional()
70264
70266
  }).strict();
70265
70267
  OmoMemorySyncLayerSchema = object({
@@ -70324,7 +70326,7 @@ var init_memory = __esm(() => {
70324
70326
  OmoMemoryAgentOverridesSchema = object({
70325
70327
  enabled: boolean2().optional(),
70326
70328
  agent: string2().min(1).optional(),
70327
- reflection: OmoMemoryReflectionLayerSchema.optional(),
70329
+ reflection: OmoMemoryReflectionLayerSchema.omit({ max_concurrent_runs: true }).optional(),
70328
70330
  nudge: OmoMemoryNudgeLayerSchema.optional(),
70329
70331
  facts: OmoMemoryFactsLayerSchema.optional(),
70330
70332
  dream: OmoMemoryDreamLayerSchema.optional(),
@@ -70349,6 +70351,7 @@ var init_memory = __esm(() => {
70349
70351
  merge: "auto",
70350
70352
  category: "quick",
70351
70353
  timeout_minutes: 15,
70354
+ max_concurrent_runs: 1,
70352
70355
  sandbox: "auto"
70353
70356
  }),
70354
70357
  nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
@@ -70723,13 +70726,6 @@ var init_format_on_mutation = __esm(() => {
70723
70726
  }).strict();
70724
70727
  });
70725
70728
 
70726
- // packages/omo-config-core/src/schema/dori.ts
70727
- var OmoDoriSectionSchema;
70728
- var init_dori = __esm(() => {
70729
- init_zod();
70730
- OmoDoriSectionSchema = record(string2(), unknown()).describe("Chat-surface dori settings, owned and validated by a separately installed dori package. omo accepts the key and never reads it.");
70731
- });
70732
-
70733
70729
  // packages/omo-config-core/src/schema/provenance.ts
70734
70730
  var OmoProvenanceSettingsSchema;
70735
70731
  var init_provenance = __esm(() => {
@@ -70759,7 +70755,6 @@ var init_config = __esm(() => {
70759
70755
  init_team();
70760
70756
  init_telemetry();
70761
70757
  init_format_on_mutation();
70762
- init_dori();
70763
70758
  init_provenance();
70764
70759
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
70765
70760
  OmoDisabledSkillsSchema = array(string2());
@@ -70767,7 +70762,6 @@ var init_config = __esm(() => {
70767
70762
  OmoTypedHarnessConfigSchema = object({
70768
70763
  provenance: OmoProvenanceSettingsSchema.optional(),
70769
70764
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70770
- dori: OmoDoriSectionSchema.optional(),
70771
70765
  categories: OmoCategoriesConfigSchema.optional(),
70772
70766
  agents: OmoAgentsConfigSchema.optional(),
70773
70767
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -70786,7 +70780,6 @@ var init_config = __esm(() => {
70786
70780
  OmoConfigProfileSchema = object({
70787
70781
  provenance: OmoProvenanceSettingsSchema.optional(),
70788
70782
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70789
- dori: OmoDoriSectionSchema.optional(),
70790
70783
  categories: OmoCategoriesConfigSchema.optional(),
70791
70784
  agents: OmoAgentsConfigSchema.optional(),
70792
70785
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -70809,7 +70802,6 @@ var init_config = __esm(() => {
70809
70802
  OmoConfigSchema = object({
70810
70803
  provenance: OmoProvenanceSettingsSchema.optional(),
70811
70804
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
70812
- dori: OmoDoriSectionSchema.optional(),
70813
70805
  $schema: string2().optional(),
70814
70806
  categories: OmoCategoriesConfigSchema.optional(),
70815
70807
  agents: OmoAgentsConfigSchema.optional(),
@@ -70836,7 +70828,6 @@ var init_config = __esm(() => {
70836
70828
  OmoConfigLayerSchema = object({
70837
70829
  provenance: OmoProvenanceSettingsSchema.optional(),
70838
70830
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
70839
- dori: OmoDoriSectionSchema.optional(),
70840
70831
  $schema: string2().optional(),
70841
70832
  categories: OmoCategoriesConfigSchema.optional(),
70842
70833
  agents: OmoAgentsConfigSchema.optional(),
@@ -70972,9 +70963,6 @@ var init_legacy_harness_names = __esm(() => {
70972
70963
  init_harness();
70973
70964
  });
70974
70965
 
70975
- // packages/omo-config-core/src/schema/legacy-dori-section.ts
70976
- var init_legacy_dori_section = () => {};
70977
-
70978
70966
  // packages/omo-config-core/src/schema/index.ts
70979
70967
  var init_schema = __esm(() => {
70980
70968
  init_agent();
@@ -70982,12 +70970,10 @@ var init_schema = __esm(() => {
70982
70970
  init_config();
70983
70971
  init_fallback_models();
70984
70972
  init_format_on_mutation();
70985
- init_dori();
70986
70973
  init_git_master();
70987
70974
  init_harness();
70988
70975
  init_legacy_category_names();
70989
70976
  init_legacy_harness_names();
70990
- init_legacy_dori_section();
70991
70977
  init_memory();
70992
70978
  init_model_catalog();
70993
70979
  init_model_profile();
@@ -71258,6 +71244,7 @@ function pruneInvalidConfigPaths(config, issues, validate, maxPasses = MAX_PRUNE
71258
71244
  var MAX_PRUNE_PASSES = 32;
71259
71245
 
71260
71246
  // packages/omo-config-core/src/loader/layer-validation.ts
71247
+ import { createHash } from "crypto";
71261
71248
  function validationDiagnostic(path, issues) {
71262
71249
  const issuePaths = issues.map((issue) => issue.path.map((segment) => String(segment)).join("."));
71263
71250
  return {
@@ -71281,6 +71268,9 @@ function unrecognizedKeyIssues(issues) {
71281
71268
  function isRecord11(value) {
71282
71269
  return typeof value === "object" && value !== null && !Array.isArray(value);
71283
71270
  }
71271
+ function isRetiredSection(key) {
71272
+ return RETIRED_SECTION_DIGESTS.has(createHash("sha256").update(key.toLowerCase()).digest("hex"));
71273
+ }
71284
71274
  function sanitizeUnsafeKeys(value, path = []) {
71285
71275
  if (Array.isArray(value)) {
71286
71276
  const issues = [];
@@ -71299,6 +71289,9 @@ function sanitizeUnsafeKeys(value, path = []) {
71299
71289
  }
71300
71290
  const sanitized = {};
71301
71291
  for (const [key, entry] of Object.entries(value)) {
71292
+ const isConfigContainer = path.length === 0 || path.length === 1 && HARNESS_BLOCKS.has(path[0] ?? "") || path.length === 2 && path[0] === "profiles" || path.length === 3 && path[0] === "profiles" && HARNESS_BLOCKS.has(path[2] ?? "");
71293
+ if (isConfigContainer && isRetiredSection(key))
71294
+ continue;
71302
71295
  if (isUnsafeObjectKey2(key)) {
71303
71296
  issues.push({ keys: [key], path });
71304
71297
  continue;
@@ -71385,13 +71378,18 @@ function validateConfigLayer(path, data) {
71385
71378
  return rejected;
71386
71379
  return { loaded: true, diagnostics: [...diagnostics, ...invalidValueDiagnostics(path, pruned.dropped)], value: pruned.config };
71387
71380
  }
71388
- var validateLayerRecord = (record) => {
71381
+ var RETIRED_SECTION_DIGESTS, HARNESS_BLOCKS, validateLayerRecord = (record) => {
71389
71382
  const parsed = OmoConfigLayerSchema.safeParse(record);
71390
71383
  return parsed.success ? { success: true } : { success: false, issues: parsed.error.issues };
71391
71384
  };
71392
71385
  var init_layer_validation = __esm(() => {
71393
71386
  init_schema();
71394
71387
  init_merge();
71388
+ RETIRED_SECTION_DIGESTS = new Set([
71389
+ "447f75a8ebdbdb79a57f0b8cebbfba183820cf54a8119ac01449b30499e5ef0e",
71390
+ "4ea5ee68fea05586106890ded5733820bb77d919cda27bc4b8139b7cd33b8889"
71391
+ ]);
71392
+ HARNESS_BLOCKS = new Set(["[opencode]", "[native]", "[senpi]", "[codex]"]);
71395
71393
  });
71396
71394
 
71397
71395
  // packages/omo-config-core/src/internal/posix-path.ts
@@ -75523,7 +75521,7 @@ init_shared();
75523
75521
  // package.json
75524
75522
  var package_default = {
75525
75523
  name: "oh-my-opencode",
75526
- version: "5.1.45",
75524
+ version: "5.1.46",
75527
75525
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
75528
75526
  main: "./dist/index.js",
75529
75527
  types: "dist/index.d.ts",
@@ -75769,18 +75767,18 @@ var package_default = {
75769
75767
  typescript: "^7.0.2"
75770
75768
  },
75771
75769
  optionalDependencies: {
75772
- "oh-my-opencode-darwin-arm64": "5.1.45",
75773
- "oh-my-opencode-darwin-x64": "5.1.45",
75774
- "oh-my-opencode-darwin-x64-baseline": "5.1.45",
75775
- "oh-my-opencode-linux-arm64": "5.1.45",
75776
- "oh-my-opencode-linux-arm64-musl": "5.1.45",
75777
- "oh-my-opencode-linux-x64": "5.1.45",
75778
- "oh-my-opencode-linux-x64-baseline": "5.1.45",
75779
- "oh-my-opencode-linux-x64-musl": "5.1.45",
75780
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.45",
75781
- "oh-my-opencode-windows-arm64": "5.1.45",
75782
- "oh-my-opencode-windows-x64": "5.1.45",
75783
- "oh-my-opencode-windows-x64-baseline": "5.1.45"
75770
+ "oh-my-opencode-darwin-arm64": "5.1.46",
75771
+ "oh-my-opencode-darwin-x64": "5.1.46",
75772
+ "oh-my-opencode-darwin-x64-baseline": "5.1.46",
75773
+ "oh-my-opencode-linux-arm64": "5.1.46",
75774
+ "oh-my-opencode-linux-arm64-musl": "5.1.46",
75775
+ "oh-my-opencode-linux-x64": "5.1.46",
75776
+ "oh-my-opencode-linux-x64-baseline": "5.1.46",
75777
+ "oh-my-opencode-linux-x64-musl": "5.1.46",
75778
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.46",
75779
+ "oh-my-opencode-windows-arm64": "5.1.46",
75780
+ "oh-my-opencode-windows-x64": "5.1.46",
75781
+ "oh-my-opencode-windows-x64-baseline": "5.1.46"
75784
75782
  },
75785
75783
  overrides: {
75786
75784
  hono: "^4.13.8",
@@ -76187,7 +76185,7 @@ import { mkdirSync as mkdirSync7, readFileSync as readFileSync6 } from "fs";
76187
76185
  init_write_file_atomically();
76188
76186
 
76189
76187
  // packages/omo-opencode/src/features/tui-sidebar/mirror-path.ts
76190
- import { createHash } from "crypto";
76188
+ import { createHash as createHash2 } from "crypto";
76191
76189
  import { realpathSync as realpathSync4 } from "fs";
76192
76190
  import { homedir as homedir4 } from "os";
76193
76191
  import { join as join11, resolve as resolve4 } from "path";
@@ -76205,7 +76203,7 @@ function canonicalProjectDir(projectDir) {
76205
76203
  }
76206
76204
  }
76207
76205
  function mirrorFilePath(projectDir) {
76208
- const projectHash = createHash("sha1").update(canonicalProjectDir(projectDir)).digest("hex").slice(0, 16);
76206
+ const projectHash = createHash2("sha1").update(canonicalProjectDir(projectDir)).digest("hex").slice(0, 16);
76209
76207
  return join11(mirrorStorageDir(), `${projectHash}.json`);
76210
76208
  }
76211
76209
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -246,18 +246,18 @@
246
246
  "typescript": "^7.0.2"
247
247
  },
248
248
  "optionalDependencies": {
249
- "oh-my-opencode-darwin-arm64": "5.1.45",
250
- "oh-my-opencode-darwin-x64": "5.1.45",
251
- "oh-my-opencode-darwin-x64-baseline": "5.1.45",
252
- "oh-my-opencode-linux-arm64": "5.1.45",
253
- "oh-my-opencode-linux-arm64-musl": "5.1.45",
254
- "oh-my-opencode-linux-x64": "5.1.45",
255
- "oh-my-opencode-linux-x64-baseline": "5.1.45",
256
- "oh-my-opencode-linux-x64-musl": "5.1.45",
257
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.45",
258
- "oh-my-opencode-windows-arm64": "5.1.45",
259
- "oh-my-opencode-windows-x64": "5.1.45",
260
- "oh-my-opencode-windows-x64-baseline": "5.1.45"
249
+ "oh-my-opencode-darwin-arm64": "5.1.46",
250
+ "oh-my-opencode-darwin-x64": "5.1.46",
251
+ "oh-my-opencode-darwin-x64-baseline": "5.1.46",
252
+ "oh-my-opencode-linux-arm64": "5.1.46",
253
+ "oh-my-opencode-linux-arm64-musl": "5.1.46",
254
+ "oh-my-opencode-linux-x64": "5.1.46",
255
+ "oh-my-opencode-linux-x64-baseline": "5.1.46",
256
+ "oh-my-opencode-linux-x64-musl": "5.1.46",
257
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.46",
258
+ "oh-my-opencode-windows-arm64": "5.1.46",
259
+ "oh-my-opencode-windows-x64": "5.1.46",
260
+ "oh-my-opencode-windows-x64-baseline": "5.1.46"
261
261
  },
262
262
  "overrides": {
263
263
  "hono": "^4.13.8",
@@ -3,6 +3,35 @@ import { Readable, Writable } from "node:stream";
3
3
  import { handleLspMcpRequest, runMcpStdioServer } from "./mcp";
4
4
 
5
5
  describe("lsp MCP protocol pins", () => {
6
+ for (const [requested, expected] of [
7
+ ["2025-06-18", "2025-06-18"],
8
+ ["2025-03-26", "2025-03-26"],
9
+ ["2024-11-05", "2024-11-05"],
10
+ ["2026-07-28", "2025-06-18"],
11
+ ["2025-11-25", "2025-06-18"],
12
+ ["unknown", "2025-06-18"],
13
+ ["", "2025-06-18"],
14
+ [null, "2025-06-18"],
15
+ [42, "2025-06-18"],
16
+ [undefined, "2025-06-18"],
17
+ ] as const) {
18
+ it(`negotiates ${String(requested)} as ${expected} over stdio`, async () => {
19
+ const out: string[] = [];
20
+ await runMcpStdioServer(Readable.from([`${JSON.stringify({
21
+ jsonrpc: "2.0", id: 7, method: "initialize",
22
+ params: { protocolVersion: requested },
23
+ })}\n`]), collectingWritable(out));
24
+ expect(JSON.parse(out.join(""))).toEqual({
25
+ jsonrpc: "2.0", id: 7,
26
+ result: {
27
+ capabilities: { tools: { listChanged: false } },
28
+ serverInfo: { name: "lsp", version: "0.1.0" },
29
+ protocolVersion: expected,
30
+ },
31
+ });
32
+ });
33
+ }
34
+
6
35
  it("#given initialize request #when handled #then exact server info and capabilities stay stable", async () => {
7
36
  const response = await handleLspMcpRequest({
8
37
  jsonrpc: "2.0",
@@ -19,6 +19,7 @@ export type { JsonRpcError, JsonRpcId, JsonRpcResponse, JsonRpcResult, McpToolDe
19
19
 
20
20
  const SERVER_NAME = "lsp";
21
21
  const SERVER_VERSION = "0.1.0";
22
+ const PROTOCOL_VERSIONS: readonly string[] = ["2025-06-18", "2025-03-26", "2024-11-05"];
22
23
 
23
24
  export interface HandleLspMcpRequestOptions {
24
25
  readonly signal?: AbortSignal;
@@ -114,6 +115,8 @@ function describeTool(tool: (typeof LSP_MCP_TOOLS)[number]): McpToolDescriptor {
114
115
  }
115
116
 
116
117
  function requestedProtocolVersion(params: unknown): string {
117
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string") return "2024-11-05";
118
- return params["protocolVersion"];
118
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
119
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested)
120
+ ? requested
121
+ : "2025-06-18";
119
122
  }
@@ -6299,6 +6299,7 @@ function coerceToolArguments(value) {
6299
6299
  // ../lsp-core/src/mcp.ts
6300
6300
  var SERVER_NAME = "lsp";
6301
6301
  var SERVER_VERSION = "0.1.0";
6302
+ var PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
6302
6303
  async function handleLspMcpRequest(input, options = {}) {
6303
6304
  if (!isPlainRecord(input)) {
6304
6305
  return errorResponse(null, -32600, "Invalid Request");
@@ -6355,9 +6356,8 @@ function describeTool(tool) {
6355
6356
  };
6356
6357
  }
6357
6358
  function requestedProtocolVersion(params) {
6358
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string")
6359
- return "2024-11-05";
6360
- return params["protocolVersion"];
6359
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
6360
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested) ? requested : "2025-06-18";
6361
6361
  }
6362
6362
 
6363
6363
  // src/daemon-client.ts
@@ -6535,6 +6535,7 @@ function coerceToolArguments(value) {
6535
6535
  // ../lsp-core/src/mcp.ts
6536
6536
  var SERVER_NAME = "lsp";
6537
6537
  var SERVER_VERSION = "0.1.0";
6538
+ var PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
6538
6539
  async function handleLspMcpRequest(input, options = {}) {
6539
6540
  if (!isPlainRecord(input)) {
6540
6541
  return errorResponse(null, -32600, "Invalid Request");
@@ -6591,9 +6592,8 @@ function describeTool(tool) {
6591
6592
  };
6592
6593
  }
6593
6594
  function requestedProtocolVersion(params) {
6594
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string")
6595
- return "2024-11-05";
6596
- return params["protocolVersion"];
6595
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
6596
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested) ? requested : "2025-06-18";
6597
6597
  }
6598
6598
 
6599
6599
  // src/request-routing.ts
@@ -6530,6 +6530,7 @@ function coerceToolArguments(value) {
6530
6530
  // ../lsp-core/src/mcp.ts
6531
6531
  var SERVER_NAME = "lsp";
6532
6532
  var SERVER_VERSION = "0.1.0";
6533
+ var PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
6533
6534
  async function handleLspMcpRequest(input, options = {}) {
6534
6535
  if (!isPlainRecord(input)) {
6535
6536
  return errorResponse(null, -32600, "Invalid Request");
@@ -6586,9 +6587,8 @@ function describeTool(tool) {
6586
6587
  };
6587
6588
  }
6588
6589
  function requestedProtocolVersion(params) {
6589
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string")
6590
- return "2024-11-05";
6591
- return params["protocolVersion"];
6590
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
6591
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested) ? requested : "2025-06-18";
6592
6592
  }
6593
6593
 
6594
6594
  // src/request-routing.ts
@@ -5868,6 +5868,7 @@ function coerceToolArguments(value) {
5868
5868
  // ../lsp-core/src/mcp.ts
5869
5869
  var SERVER_NAME = "lsp";
5870
5870
  var SERVER_VERSION = "0.1.0";
5871
+ var PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
5871
5872
  async function handleLspMcpRequest(input, options = {}) {
5872
5873
  if (!isPlainRecord(input)) {
5873
5874
  return errorResponse(null, -32600, "Invalid Request");
@@ -5935,9 +5936,8 @@ function describeTool(tool) {
5935
5936
  };
5936
5937
  }
5937
5938
  function requestedProtocolVersion(params) {
5938
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string")
5939
- return "2024-11-05";
5940
- return params["protocolVersion"];
5939
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
5940
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested) ? requested : "2025-06-18";
5941
5941
  }
5942
5942
  // src/cli.ts
5943
5943
  async function main() {
@@ -5864,6 +5864,7 @@ function coerceToolArguments(value) {
5864
5864
  // ../lsp-core/src/mcp.ts
5865
5865
  var SERVER_NAME = "lsp";
5866
5866
  var SERVER_VERSION = "0.1.0";
5867
+ var PROTOCOL_VERSIONS = ["2025-06-18", "2025-03-26", "2024-11-05"];
5867
5868
  async function handleLspMcpRequest(input, options = {}) {
5868
5869
  if (!isPlainRecord(input)) {
5869
5870
  return errorResponse(null, -32600, "Invalid Request");
@@ -5931,9 +5932,8 @@ function describeTool(tool) {
5931
5932
  };
5932
5933
  }
5933
5934
  function requestedProtocolVersion(params) {
5934
- if (!isPlainRecord(params) || typeof params["protocolVersion"] !== "string")
5935
- return "2024-11-05";
5936
- return params["protocolVersion"];
5935
+ const requested = isPlainRecord(params) ? params["protocolVersion"] : undefined;
5936
+ return typeof requested === "string" && PROTOCOL_VERSIONS.includes(requested) ? requested : "2025-06-18";
5937
5937
  }
5938
5938
  export {
5939
5939
  handleLspMcpRequest,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -7147,6 +7147,7 @@ var OmoMemoryReflectionSchema = object({
7147
7147
  merge: _enum(["auto", "integration"]).default("auto"),
7148
7148
  category: string2().min(1).default("quick"),
7149
7149
  timeout_minutes: number2().int().positive().default(15),
7150
+ max_concurrent_runs: number2().int().positive().default(1),
7150
7151
  sandbox: _enum(["auto", "required", "off"]).default("auto")
7151
7152
  }).strict();
7152
7153
  var OmoMemorySyncSchema = object({
@@ -7218,6 +7219,7 @@ var OmoMemoryReflectionLayerSchema = object({
7218
7219
  merge: _enum(["auto", "integration"]).optional(),
7219
7220
  category: string2().min(1).optional(),
7220
7221
  timeout_minutes: number2().int().positive().optional(),
7222
+ max_concurrent_runs: number2().int().positive().optional(),
7221
7223
  sandbox: _enum(["auto", "required", "off"]).optional()
7222
7224
  }).strict();
7223
7225
  var OmoMemorySyncLayerSchema = object({
@@ -7282,7 +7284,7 @@ var OmoMemoryProjectionLayerSchema = object({
7282
7284
  var OmoMemoryAgentOverridesSchema = object({
7283
7285
  enabled: boolean2().optional(),
7284
7286
  agent: string2().min(1).optional(),
7285
- reflection: OmoMemoryReflectionLayerSchema.optional(),
7287
+ reflection: OmoMemoryReflectionLayerSchema.omit({ max_concurrent_runs: true }).optional(),
7286
7288
  nudge: OmoMemoryNudgeLayerSchema.optional(),
7287
7289
  facts: OmoMemoryFactsLayerSchema.optional(),
7288
7290
  dream: OmoMemoryDreamLayerSchema.optional(),
@@ -7307,6 +7309,7 @@ var OmoMemorySettingsSchema = object({
7307
7309
  merge: "auto",
7308
7310
  category: "quick",
7309
7311
  timeout_minutes: 15,
7312
+ max_concurrent_runs: 1,
7310
7313
  sandbox: "auto"
7311
7314
  }),
7312
7315
  nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
@@ -7650,9 +7653,6 @@ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
7650
7653
  timeoutMs: number2().int().positive().default(3000)
7651
7654
  }).strict();
7652
7655
 
7653
- // ../../omo-config-core/src/schema/dori.ts
7654
- var OmoDoriSectionSchema = record(string2(), unknown()).describe("Chat-surface dori settings, owned and validated by a separately installed dori package. omo accepts the key and never reads it.");
7655
-
7656
7656
  // ../../omo-config-core/src/schema/provenance.ts
7657
7657
  var OmoProvenanceSettingsSchema = object({
7658
7658
  workspaces: array(object({
@@ -7669,7 +7669,6 @@ var OmoExcludedModelsSchema = array(string2());
7669
7669
  var OmoTypedHarnessConfigSchema = object({
7670
7670
  provenance: OmoProvenanceSettingsSchema.optional(),
7671
7671
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7672
- dori: OmoDoriSectionSchema.optional(),
7673
7672
  categories: OmoCategoriesConfigSchema.optional(),
7674
7673
  agents: OmoAgentsConfigSchema.optional(),
7675
7674
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -7688,7 +7687,6 @@ var OmoTypedHarnessConfigSchema = object({
7688
7687
  var OmoConfigProfileSchema = object({
7689
7688
  provenance: OmoProvenanceSettingsSchema.optional(),
7690
7689
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7691
- dori: OmoDoriSectionSchema.optional(),
7692
7690
  categories: OmoCategoriesConfigSchema.optional(),
7693
7691
  agents: OmoAgentsConfigSchema.optional(),
7694
7692
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -7711,7 +7709,6 @@ var OmoConfigProfileSchema = object({
7711
7709
  var OmoConfigSchema = object({
7712
7710
  provenance: OmoProvenanceSettingsSchema.optional(),
7713
7711
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
7714
- dori: OmoDoriSectionSchema.optional(),
7715
7712
  $schema: string2().optional(),
7716
7713
  categories: OmoCategoriesConfigSchema.optional(),
7717
7714
  agents: OmoAgentsConfigSchema.optional(),
@@ -7738,7 +7735,6 @@ var OmoConfigSchema = object({
7738
7735
  var OmoConfigLayerSchema = object({
7739
7736
  provenance: OmoProvenanceSettingsSchema.optional(),
7740
7737
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
7741
- dori: OmoDoriSectionSchema.optional(),
7742
7738
  $schema: string2().optional(),
7743
7739
  categories: OmoCategoriesConfigSchema.optional(),
7744
7740
  agents: OmoAgentsConfigSchema.optional(),
@@ -8762,6 +8758,9 @@ function printParseErrorCode(code) {
8762
8758
  return "<unknown ParseErrorCode>";
8763
8759
  }
8764
8760
 
8761
+ // ../../omo-config-core/src/loader/layer-validation.ts
8762
+ import { createHash as createHash3 } from "node:crypto";
8763
+
8765
8764
  // ../../omo-config-core/src/loader/merge.ts
8766
8765
  var DANGEROUS_KEYS = new Set(["__proto__", "constructor", "prototype"]);
8767
8766
  function isUnsafeObjectKey(key) {
@@ -8935,6 +8934,14 @@ function unrecognizedKeyIssues(issues) {
8935
8934
  function isRecord9(value) {
8936
8935
  return typeof value === "object" && value !== null && !Array.isArray(value);
8937
8936
  }
8937
+ var RETIRED_SECTION_DIGESTS = new Set([
8938
+ "447f75a8ebdbdb79a57f0b8cebbfba183820cf54a8119ac01449b30499e5ef0e",
8939
+ "4ea5ee68fea05586106890ded5733820bb77d919cda27bc4b8139b7cd33b8889"
8940
+ ]);
8941
+ function isRetiredSection(key) {
8942
+ return RETIRED_SECTION_DIGESTS.has(createHash3("sha256").update(key.toLowerCase()).digest("hex"));
8943
+ }
8944
+ var HARNESS_BLOCKS = new Set(["[opencode]", "[native]", "[senpi]", "[codex]"]);
8938
8945
  function sanitizeUnsafeKeys(value, path = []) {
8939
8946
  if (Array.isArray(value)) {
8940
8947
  const issues = [];
@@ -8953,6 +8960,9 @@ function sanitizeUnsafeKeys(value, path = []) {
8953
8960
  }
8954
8961
  const sanitized = {};
8955
8962
  for (const [key, entry] of Object.entries(value)) {
8963
+ const isConfigContainer = path.length === 0 || path.length === 1 && HARNESS_BLOCKS.has(path[0] ?? "") || path.length === 2 && path[0] === "profiles" || path.length === 3 && path[0] === "profiles" && HARNESS_BLOCKS.has(path[2] ?? "");
8964
+ if (isConfigContainer && isRetiredSection(key))
8965
+ continue;
8956
8966
  if (isUnsafeObjectKey(key)) {
8957
8967
  issues.push({ keys: [key], path });
8958
8968
  continue;
@@ -10502,7 +10512,7 @@ function nodeErrorCode2(error) {
10502
10512
  }
10503
10513
 
10504
10514
  // ../src/install/default-agent-role.ts
10505
- import { createHash as createHash3 } from "node:crypto";
10515
+ import { createHash as createHash4 } from "node:crypto";
10506
10516
  import { lstat as lstat5, readFile as readFile7, rm as rm7 } from "node:fs/promises";
10507
10517
  import { join as join13 } from "node:path";
10508
10518
 
@@ -10670,7 +10680,7 @@ async function readIfPresent(path) {
10670
10680
  }
10671
10681
  }
10672
10682
  function hash(content) {
10673
- return createHash3("sha256").update(content).digest("hex");
10683
+ return createHash4("sha256").update(content).digest("hex");
10674
10684
  }
10675
10685
 
10676
10686
  // ../src/install/link-cached-plugin-agents.ts
@@ -12081,7 +12091,7 @@ async function stampGitBashMcpEnv(input) {
12081
12091
  }
12082
12092
 
12083
12093
  // ../src/install/codex-hook-trust.ts
12084
- import { createHash as createHash4 } from "node:crypto";
12094
+ import { createHash as createHash5 } from "node:crypto";
12085
12095
  import { readFile as readFile15 } from "node:fs/promises";
12086
12096
  import { join as join22 } from "node:path";
12087
12097
  var EVENT_LABELS = new Map([
@@ -12173,7 +12183,7 @@ function commandHookHash(eventName, matcher, handler, command) {
12173
12183
  if (typeof matcher === "string")
12174
12184
  identity.matcher = matcher;
12175
12185
  const canonical = JSON.stringify(canonicalJson(identity));
12176
- return `sha256:${createHash4("sha256").update(canonical).digest("hex")}`;
12186
+ return `sha256:${createHash5("sha256").update(canonical).digest("hex")}`;
12177
12187
  }
12178
12188
  function canonicalJson(value) {
12179
12189
  if (Array.isArray(value))
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.45) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.1.46) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.1.45) Checking Comments"
11
+ "statusMessage": "(OmO 5.1.46) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.45) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.1.46) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.45) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.1.46) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.45) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.1.46) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",