oh-my-opencode 5.1.45 → 5.1.47

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 (370) hide show
  1. package/.agents/command/publish.md +12 -13
  2. package/.agents/skills/publish/SKILL.md +12 -13
  3. package/.opencode/command/publish.md +12 -13
  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/agents/atlas/agent.d.ts +3 -2
  15. package/dist/agents/sisyphus/index.d.ts +1 -0
  16. package/dist/agents/sisyphus/kimi-k3-1.d.ts +9 -0
  17. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  18. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  19. package/dist/agents/sisyphus-junior/index.d.ts +1 -0
  20. package/dist/agents/sisyphus-junior/kimi-k3-1.d.ts +6 -0
  21. package/dist/agents/types.d.ts +2 -2
  22. package/dist/cli/index.js +91 -163
  23. package/dist/cli/service-auth/keystore.d.ts +8 -3
  24. package/dist/cli-node/index.js +91 -163
  25. package/dist/config-migration/index.d.ts +2 -2
  26. package/dist/config-migration/migration-plans.d.ts +0 -10
  27. package/dist/index.js +1784 -1204
  28. package/dist/skills/ast-grep/AGENTS.md +1 -1
  29. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  30. package/dist/skills/frontend/ATTRIBUTION.md +2 -2
  31. package/dist/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  32. package/dist/skills/ulw-research/AGENTS.md +14 -2
  33. package/dist/skills/ulw-research/SKILL.md +37 -12
  34. package/dist/skills/ulw-research/references/deliverable-phase.md +81 -14
  35. package/dist/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  36. package/dist/skills/ulw-research/references/fact-ledger.md +95 -0
  37. package/dist/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  38. package/dist/skills/ulw-research/references/report-gates.md +21 -4
  39. package/dist/skills/ulw-research/references/report-visualization.md +2 -0
  40. package/dist/skills/ulw-research/references/unit-rules.md +157 -0
  41. package/dist/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  42. package/dist/skills/ulw-research/scripts/claim-kinds.test.ts +193 -0
  43. package/dist/skills/ulw-research/scripts/cli-support.mjs +19 -5
  44. package/dist/skills/ulw-research/scripts/cli-support.test.ts +13 -2
  45. package/dist/skills/ulw-research/scripts/contracts.mjs +27 -6
  46. package/dist/skills/ulw-research/scripts/contracts.test.ts +3 -0
  47. package/dist/skills/ulw-research/scripts/copy-returns-polish.test.ts +209 -0
  48. package/dist/skills/ulw-research/scripts/copy-returns.test.ts +183 -0
  49. package/dist/skills/ulw-research/scripts/delivery-barrier.test.ts +245 -0
  50. package/dist/skills/ulw-research/scripts/fact-commands-meaning.mjs +176 -0
  51. package/dist/skills/ulw-research/scripts/fact-commands-polish.mjs +127 -0
  52. package/dist/skills/ulw-research/scripts/fact-commands-verify.mjs +183 -0
  53. package/dist/skills/ulw-research/scripts/fact-commands.mjs +241 -0
  54. package/dist/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  55. package/dist/skills/ulw-research/scripts/fact-derive.test.ts +375 -0
  56. package/dist/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  57. package/dist/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  58. package/dist/skills/ulw-research/scripts/fact-fill.test.ts +221 -0
  59. package/dist/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +9 -2
  60. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  61. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +18 -3
  62. package/dist/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +160 -0
  63. package/dist/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  64. package/dist/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  65. package/dist/skills/ulw-research/scripts/fact-ledger.test.ts +2 -0
  66. package/dist/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  67. package/dist/skills/ulw-research/scripts/fact-locate.test.ts +118 -0
  68. package/dist/skills/ulw-research/scripts/fact-pairs.mjs +185 -0
  69. package/dist/skills/ulw-research/scripts/fact-pairs.test.ts +151 -0
  70. package/dist/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  71. package/dist/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +409 -0
  72. package/dist/skills/ulw-research/scripts/fact-unit-rules.test.ts +388 -0
  73. package/dist/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  74. package/dist/skills/ulw-research/scripts/fidelity-binding.test.ts +81 -0
  75. package/dist/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  76. package/dist/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  77. package/dist/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  78. package/dist/skills/ulw-research/scripts/fidelity-lexicon.test.ts +117 -0
  79. package/dist/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  80. package/dist/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  81. package/dist/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  82. package/dist/skills/ulw-research/scripts/fidelity-trace.test.ts +58 -0
  83. package/dist/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  84. package/dist/skills/ulw-research/scripts/fidelity-values.test.ts +270 -0
  85. package/dist/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  86. package/dist/skills/ulw-research/scripts/gates-fidelity.test.ts +73 -0
  87. package/dist/skills/ulw-research/scripts/gates-static.mjs +28 -8
  88. package/dist/skills/ulw-research/scripts/html-lite.mjs +2 -2
  89. package/dist/skills/ulw-research/scripts/html-markup.mjs +182 -0
  90. package/dist/skills/ulw-research/scripts/md-lite.mjs +193 -0
  91. package/dist/skills/ulw-research/scripts/md-lite.test.ts +271 -0
  92. package/dist/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  93. package/dist/skills/ulw-research/scripts/meaning-check.test.ts +228 -0
  94. package/dist/skills/ulw-research/scripts/outcome.mjs +6 -5
  95. package/dist/skills/ulw-research/scripts/placeholder.mjs +184 -0
  96. package/dist/skills/ulw-research/scripts/placeholder.test.ts +77 -0
  97. package/dist/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  98. package/dist/skills/ulw-research/scripts/polish-apply.test.ts +363 -0
  99. package/dist/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  100. package/dist/skills/ulw-research/scripts/polish-diff.test.ts +168 -0
  101. package/dist/skills/ulw-research/scripts/polish-markup.test.ts +187 -0
  102. package/dist/skills/ulw-research/scripts/polish-project.mjs +125 -0
  103. package/dist/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  104. package/dist/skills/ulw-research/scripts/references-fences.test.ts +25 -0
  105. package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  106. package/dist/skills/ulw-research/scripts/report-tools.mjs +15 -0
  107. package/dist/skills/ulw-research/scripts/report-tools.test.ts +545 -2
  108. package/dist/skills/ulw-research/scripts/source-commands.mjs +140 -0
  109. package/dist/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  110. package/dist/skills/ulw-research/scripts/source-snapshot.test.ts +113 -0
  111. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/assets/share.csv +3 -0
  112. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/gen-legacy-dev.mjs +89 -0
  113. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-basic.json +223 -0
  114. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-legacy-dev.json +859 -0
  115. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-verify.json +420 -0
  116. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/polish-edits.json +12 -0
  117. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/report-bad.html +19 -0
  118. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/report-good.html +39 -0
  119. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/acronyms.json +3 -0
  120. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/meta.json +9 -0
  121. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/sentences.jsonl +7 -0
  122. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/text.txt +7 -0
  123. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4.html +19 -0
  124. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/acronyms.json +1 -0
  125. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/meta.json +9 -0
  126. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/sentences.jsonl +1 -0
  127. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/text.txt +1 -0
  128. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S9.txt +1 -0
  129. package/dist/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  130. package/dist/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  131. package/dist/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  132. package/dist/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  133. package/dist/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  134. package/dist/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  135. package/dist/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  136. package/dist/skills/ulw-research/scripts/units.mjs +4 -4
  137. package/dist/testing/module-mock-lifecycle.d.ts +1 -1
  138. package/dist/tui.js +32 -34
  139. package/package.json +13 -13
  140. package/packages/lsp-core/src/mcp-protocol-pin.test.ts +29 -0
  141. package/packages/lsp-core/src/mcp.ts +5 -2
  142. package/packages/lsp-daemon/dist/cli.js +3 -3
  143. package/packages/lsp-daemon/dist/client.js +3 -3
  144. package/packages/lsp-daemon/dist/index.js +3 -3
  145. package/packages/lsp-tools-mcp/dist/cli.js +3 -3
  146. package/packages/lsp-tools-mcp/dist/mcp.js +3 -3
  147. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  148. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +23 -14
  149. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  150. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  151. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  153. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  154. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  155. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  156. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  157. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  158. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  159. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  160. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  161. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  162. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  163. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  164. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  165. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  166. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  167. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  168. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  169. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  170. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  171. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  172. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  173. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  174. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  175. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  176. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  177. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  178. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  179. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  180. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  181. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  182. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  183. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  184. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  185. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  186. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  187. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  188. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  189. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  190. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  191. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  192. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  193. package/packages/omo-codex/plugin/package-lock.json +12 -12
  194. package/packages/omo-codex/plugin/package.json +1 -1
  195. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +8 -3
  196. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +0 -2
  197. package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +1 -1
  198. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  199. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +2 -2
  200. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  201. package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +14 -2
  202. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +36 -11
  203. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +81 -14
  204. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  205. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger.md +95 -0
  206. package/packages/omo-codex/plugin/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  207. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +21 -4
  208. package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +2 -0
  209. package/packages/omo-codex/plugin/skills/ulw-research/references/unit-rules.md +157 -0
  210. package/packages/omo-codex/plugin/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  211. package/packages/omo-codex/plugin/skills/ulw-research/scripts/cli-support.mjs +19 -5
  212. package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +27 -6
  213. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-meaning.mjs +176 -0
  214. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-polish.mjs +127 -0
  215. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-verify.mjs +183 -0
  216. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands.mjs +241 -0
  217. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  218. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  219. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  220. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  221. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  222. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  223. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  224. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-pairs.mjs +185 -0
  225. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  226. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  227. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  228. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  229. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  230. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  231. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  232. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  233. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  234. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  235. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +28 -8
  236. package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-lite.mjs +2 -2
  237. package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-markup.mjs +182 -0
  238. package/packages/omo-codex/plugin/skills/ulw-research/scripts/md-lite.mjs +193 -0
  239. package/packages/omo-codex/plugin/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  240. package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +6 -5
  241. package/packages/omo-codex/plugin/skills/ulw-research/scripts/placeholder.mjs +184 -0
  242. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  243. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  244. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-project.mjs +125 -0
  245. package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  246. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  247. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools.mjs +15 -0
  248. package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +140 -0
  249. package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  250. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  251. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  252. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  253. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  254. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  255. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  256. package/packages/omo-codex/plugin/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  257. package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +4 -4
  258. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +19 -0
  259. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -3
  260. package/packages/omo-codex/scripts/install-dist/install-local.mjs +28 -19
  261. package/packages/shared-skills/skills/ast-grep/AGENTS.md +1 -1
  262. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  263. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +2 -2
  264. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +1 -1
  265. package/packages/shared-skills/skills/ulw-research/AGENTS.md +14 -2
  266. package/packages/shared-skills/skills/ulw-research/SKILL.md +37 -12
  267. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +81 -14
  268. package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +19 -1
  269. package/packages/shared-skills/skills/ulw-research/references/fact-ledger.md +95 -0
  270. package/packages/shared-skills/skills/ulw-research/references/fidelity-claim-kinds.md +19 -0
  271. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +21 -4
  272. package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +2 -0
  273. package/packages/shared-skills/skills/ulw-research/references/unit-rules.md +157 -0
  274. package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.mjs +116 -0
  275. package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.test.ts +193 -0
  276. package/packages/shared-skills/skills/ulw-research/scripts/cli-support.mjs +19 -5
  277. package/packages/shared-skills/skills/ulw-research/scripts/cli-support.test.ts +13 -2
  278. package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +27 -6
  279. package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +3 -0
  280. package/packages/shared-skills/skills/ulw-research/scripts/copy-returns-polish.test.ts +209 -0
  281. package/packages/shared-skills/skills/ulw-research/scripts/copy-returns.test.ts +183 -0
  282. package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier.test.ts +245 -0
  283. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-meaning.mjs +176 -0
  284. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-polish.mjs +127 -0
  285. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-verify.mjs +183 -0
  286. package/packages/shared-skills/skills/ulw-research/scripts/fact-commands.mjs +241 -0
  287. package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.mjs +66 -0
  288. package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.test.ts +375 -0
  289. package/packages/shared-skills/skills/ulw-research/scripts/fact-expr.mjs +108 -0
  290. package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.mjs +194 -0
  291. package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.test.ts +221 -0
  292. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +9 -2
  293. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +127 -13
  294. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +18 -3
  295. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +160 -0
  296. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.mjs +33 -16
  297. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.mjs +29 -9
  298. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.test.ts +2 -0
  299. package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.mjs +231 -0
  300. package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.test.ts +118 -0
  301. package/packages/shared-skills/skills/ulw-research/scripts/fact-pairs.mjs +185 -0
  302. package/packages/shared-skills/skills/ulw-research/scripts/fact-pairs.test.ts +151 -0
  303. package/packages/shared-skills/skills/ulw-research/scripts/fact-recompute.mjs +89 -0
  304. package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +409 -0
  305. package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-rules.test.ts +388 -0
  306. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-binding.mjs +130 -0
  307. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-binding.test.ts +81 -0
  308. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.mjs +5 -0
  309. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-claims.mjs +89 -0
  310. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.mjs +145 -0
  311. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.test.ts +117 -0
  312. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-records.mjs +163 -0
  313. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.mjs +2 -1
  314. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.mjs +85 -0
  315. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.test.ts +58 -0
  316. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.mjs +229 -0
  317. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.test.ts +270 -0
  318. package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.mjs +113 -0
  319. package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.test.ts +73 -0
  320. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +28 -8
  321. package/packages/shared-skills/skills/ulw-research/scripts/html-lite.mjs +2 -2
  322. package/packages/shared-skills/skills/ulw-research/scripts/html-markup.mjs +182 -0
  323. package/packages/shared-skills/skills/ulw-research/scripts/md-lite.mjs +193 -0
  324. package/packages/shared-skills/skills/ulw-research/scripts/md-lite.test.ts +271 -0
  325. package/packages/shared-skills/skills/ulw-research/scripts/meaning-check.mjs +196 -0
  326. package/packages/shared-skills/skills/ulw-research/scripts/meaning-check.test.ts +228 -0
  327. package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +6 -5
  328. package/packages/shared-skills/skills/ulw-research/scripts/placeholder.mjs +184 -0
  329. package/packages/shared-skills/skills/ulw-research/scripts/placeholder.test.ts +77 -0
  330. package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.mjs +115 -0
  331. package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.test.ts +363 -0
  332. package/packages/shared-skills/skills/ulw-research/scripts/polish-diff.mjs +31 -0
  333. package/packages/shared-skills/skills/ulw-research/scripts/polish-diff.test.ts +168 -0
  334. package/packages/shared-skills/skills/ulw-research/scripts/polish-markup.test.ts +187 -0
  335. package/packages/shared-skills/skills/ulw-research/scripts/polish-project.mjs +125 -0
  336. package/packages/shared-skills/skills/ulw-research/scripts/polish-rules.mjs +170 -0
  337. package/packages/shared-skills/skills/ulw-research/scripts/references-fences.test.ts +25 -0
  338. package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +19 -8
  339. package/packages/shared-skills/skills/ulw-research/scripts/report-tools.mjs +15 -0
  340. package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +545 -2
  341. package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +140 -0
  342. package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.mjs +176 -0
  343. package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.test.ts +113 -0
  344. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/assets/share.csv +3 -0
  345. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/gen-legacy-dev.mjs +89 -0
  346. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-basic.json +223 -0
  347. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-legacy-dev.json +859 -0
  348. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/ledger-verify.json +420 -0
  349. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/polish-edits.json +12 -0
  350. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/report-bad.html +19 -0
  351. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/report-good.html +39 -0
  352. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/acronyms.json +3 -0
  353. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/meta.json +9 -0
  354. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/sentences.jsonl +7 -0
  355. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4/text.txt +7 -0
  356. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S4.html +19 -0
  357. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/acronyms.json +1 -0
  358. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/meta.json +9 -0
  359. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/sentences.jsonl +1 -0
  360. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S5/text.txt +1 -0
  361. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/sources/S9.txt +1 -0
  362. package/packages/shared-skills/skills/ulw-research/scripts/unit-algebra.mjs +101 -0
  363. package/packages/shared-skills/skills/ulw-research/scripts/unit-errors.mjs +23 -0
  364. package/packages/shared-skills/skills/ulw-research/scripts/unit-metadata.mjs +31 -0
  365. package/packages/shared-skills/skills/ulw-research/scripts/unit-pairs.mjs +72 -0
  366. package/packages/shared-skills/skills/ulw-research/scripts/unit-precision.mjs +44 -0
  367. package/packages/shared-skills/skills/ulw-research/scripts/unit-rules-shapes.mjs +64 -0
  368. package/packages/shared-skills/skills/ulw-research/scripts/unit-rules.mjs +173 -0
  369. package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +4 -4
  370. package/dist/config-migration/dori-section-rename.d.ts +0 -3
@@ -2133,7 +2133,7 @@ var package_default;
2133
2133
  var init_package = __esm(() => {
2134
2134
  package_default = {
2135
2135
  name: "oh-my-opencode",
2136
- version: "5.1.45",
2136
+ version: "5.1.47",
2137
2137
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2138
2138
  main: "./dist/index.js",
2139
2139
  types: "dist/index.d.ts",
@@ -2379,18 +2379,18 @@ var init_package = __esm(() => {
2379
2379
  typescript: "^7.0.2"
2380
2380
  },
2381
2381
  optionalDependencies: {
2382
- "oh-my-opencode-darwin-arm64": "5.1.45",
2383
- "oh-my-opencode-darwin-x64": "5.1.45",
2384
- "oh-my-opencode-darwin-x64-baseline": "5.1.45",
2385
- "oh-my-opencode-linux-arm64": "5.1.45",
2386
- "oh-my-opencode-linux-arm64-musl": "5.1.45",
2387
- "oh-my-opencode-linux-x64": "5.1.45",
2388
- "oh-my-opencode-linux-x64-baseline": "5.1.45",
2389
- "oh-my-opencode-linux-x64-musl": "5.1.45",
2390
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.45",
2391
- "oh-my-opencode-windows-arm64": "5.1.45",
2392
- "oh-my-opencode-windows-x64": "5.1.45",
2393
- "oh-my-opencode-windows-x64-baseline": "5.1.45"
2382
+ "oh-my-opencode-darwin-arm64": "5.1.47",
2383
+ "oh-my-opencode-darwin-x64": "5.1.47",
2384
+ "oh-my-opencode-darwin-x64-baseline": "5.1.47",
2385
+ "oh-my-opencode-linux-arm64": "5.1.47",
2386
+ "oh-my-opencode-linux-arm64-musl": "5.1.47",
2387
+ "oh-my-opencode-linux-x64": "5.1.47",
2388
+ "oh-my-opencode-linux-x64-baseline": "5.1.47",
2389
+ "oh-my-opencode-linux-x64-musl": "5.1.47",
2390
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.47",
2391
+ "oh-my-opencode-windows-arm64": "5.1.47",
2392
+ "oh-my-opencode-windows-x64": "5.1.47",
2393
+ "oh-my-opencode-windows-x64-baseline": "5.1.47"
2394
2394
  },
2395
2395
  overrides: {
2396
2396
  hono: "^4.13.8",
@@ -7164,7 +7164,7 @@ function resolveStdio(options) {
7164
7164
  return [options.stdin ?? "ignore", options.stdout ?? "pipe", options.stderr ?? "inherit"];
7165
7165
  }
7166
7166
  function createBunSpawnOptions(options) {
7167
- return { ...options, windowsHide: true };
7167
+ return { ...options, env: options.env ?? process.env, windowsHide: true };
7168
7168
  }
7169
7169
  function createNodeSpawnOptions(options, platform = process.platform) {
7170
7170
  const nodeOptions = {
@@ -10185,6 +10185,10 @@ function transformModelForProviderUsingAnthropicBehavior(provider, model) {
10185
10185
  return "k3";
10186
10186
  if (model === "kimi-k3-256k")
10187
10187
  return "k3-256k";
10188
+ if (model === "kimi-k3.1-pro")
10189
+ return "k3.1-pro";
10190
+ if (model === "kimi-k3.1-pro-highspeed")
10191
+ return "k3.1-pro-highspeed";
10188
10192
  }
10189
10193
  return model;
10190
10194
  }
@@ -76982,6 +76986,7 @@ var init_memory = __esm(() => {
76982
76986
  merge: _enum(["auto", "integration"]).default("auto"),
76983
76987
  category: string2().min(1).default("quick"),
76984
76988
  timeout_minutes: number2().int().positive().default(15),
76989
+ max_concurrent_runs: number2().int().positive().default(1),
76985
76990
  sandbox: _enum(["auto", "required", "off"]).default("auto")
76986
76991
  }).strict();
76987
76992
  OmoMemorySyncSchema = object({
@@ -77053,6 +77058,7 @@ var init_memory = __esm(() => {
77053
77058
  merge: _enum(["auto", "integration"]).optional(),
77054
77059
  category: string2().min(1).optional(),
77055
77060
  timeout_minutes: number2().int().positive().optional(),
77061
+ max_concurrent_runs: number2().int().positive().optional(),
77056
77062
  sandbox: _enum(["auto", "required", "off"]).optional()
77057
77063
  }).strict();
77058
77064
  OmoMemorySyncLayerSchema = object({
@@ -77117,7 +77123,7 @@ var init_memory = __esm(() => {
77117
77123
  OmoMemoryAgentOverridesSchema = object({
77118
77124
  enabled: boolean2().optional(),
77119
77125
  agent: string2().min(1).optional(),
77120
- reflection: OmoMemoryReflectionLayerSchema.optional(),
77126
+ reflection: OmoMemoryReflectionLayerSchema.omit({ max_concurrent_runs: true }).optional(),
77121
77127
  nudge: OmoMemoryNudgeLayerSchema.optional(),
77122
77128
  facts: OmoMemoryFactsLayerSchema.optional(),
77123
77129
  dream: OmoMemoryDreamLayerSchema.optional(),
@@ -77142,6 +77148,7 @@ var init_memory = __esm(() => {
77142
77148
  merge: "auto",
77143
77149
  category: "quick",
77144
77150
  timeout_minutes: 15,
77151
+ max_concurrent_runs: 1,
77145
77152
  sandbox: "auto"
77146
77153
  }),
77147
77154
  nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
@@ -77516,13 +77523,6 @@ var init_format_on_mutation = __esm(() => {
77516
77523
  }).strict();
77517
77524
  });
77518
77525
 
77519
- // packages/omo-config-core/src/schema/dori.ts
77520
- var OmoDoriSectionSchema;
77521
- var init_dori = __esm(() => {
77522
- init_zod();
77523
- 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.");
77524
- });
77525
-
77526
77526
  // packages/omo-config-core/src/schema/provenance.ts
77527
77527
  var OmoProvenanceSettingsSchema;
77528
77528
  var init_provenance = __esm(() => {
@@ -77552,7 +77552,6 @@ var init_config = __esm(() => {
77552
77552
  init_team();
77553
77553
  init_telemetry();
77554
77554
  init_format_on_mutation();
77555
- init_dori();
77556
77555
  init_provenance();
77557
77556
  OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
77558
77557
  OmoDisabledSkillsSchema = array(string2());
@@ -77560,7 +77559,6 @@ var init_config = __esm(() => {
77560
77559
  OmoTypedHarnessConfigSchema = object({
77561
77560
  provenance: OmoProvenanceSettingsSchema.optional(),
77562
77561
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
77563
- dori: OmoDoriSectionSchema.optional(),
77564
77562
  categories: OmoCategoriesConfigSchema.optional(),
77565
77563
  agents: OmoAgentsConfigSchema.optional(),
77566
77564
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -77579,7 +77577,6 @@ var init_config = __esm(() => {
77579
77577
  OmoConfigProfileSchema = object({
77580
77578
  provenance: OmoProvenanceSettingsSchema.optional(),
77581
77579
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
77582
- dori: OmoDoriSectionSchema.optional(),
77583
77580
  categories: OmoCategoriesConfigSchema.optional(),
77584
77581
  agents: OmoAgentsConfigSchema.optional(),
77585
77582
  git_master: OmoGitMasterSettingsLayerSchema.optional(),
@@ -77602,7 +77599,6 @@ var init_config = __esm(() => {
77602
77599
  OmoConfigSchema = object({
77603
77600
  provenance: OmoProvenanceSettingsSchema.optional(),
77604
77601
  formatOnMutation: OmoFormatOnMutationSchema.optional(),
77605
- dori: OmoDoriSectionSchema.optional(),
77606
77602
  $schema: string2().optional(),
77607
77603
  categories: OmoCategoriesConfigSchema.optional(),
77608
77604
  agents: OmoAgentsConfigSchema.optional(),
@@ -77629,7 +77625,6 @@ var init_config = __esm(() => {
77629
77625
  OmoConfigLayerSchema = object({
77630
77626
  provenance: OmoProvenanceSettingsSchema.optional(),
77631
77627
  formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
77632
- dori: OmoDoriSectionSchema.optional(),
77633
77628
  $schema: string2().optional(),
77634
77629
  categories: OmoCategoriesConfigSchema.optional(),
77635
77630
  agents: OmoAgentsConfigSchema.optional(),
@@ -77771,54 +77766,6 @@ var init_legacy_harness_names = __esm(() => {
77771
77766
  init_harness();
77772
77767
  });
77773
77768
 
77774
- // packages/omo-config-core/src/schema/legacy-dori-section.ts
77775
- function isRecord11(value) {
77776
- return value !== null && typeof value === "object" && !Array.isArray(value);
77777
- }
77778
- function migrateLegacyDoriSection(document) {
77779
- if (!isRecord11(document))
77780
- return { document: {}, diagnostics: [] };
77781
- const diagnostics = [];
77782
- const rename = (container, path) => {
77783
- const result = { ...container };
77784
- if (Object.hasOwn(container, "gateway")) {
77785
- if (Object.hasOwn(container, "dori")) {
77786
- diagnostics.push(`${[...path, "gateway"].join(".")} removed: dori is already configured`);
77787
- } else {
77788
- result.dori = container.gateway;
77789
- diagnostics.push(`${[...path, "gateway"].join(".")} renamed to dori`);
77790
- }
77791
- delete result.gateway;
77792
- }
77793
- return result;
77794
- };
77795
- const layer = (container, path) => {
77796
- const result = rename(container, path);
77797
- for (const key of HARNESS_BLOCKS) {
77798
- const block = container[key];
77799
- if (isRecord11(block))
77800
- result[key] = rename(block, [...path, key]);
77801
- }
77802
- return result;
77803
- };
77804
- const result = layer(document, []);
77805
- if (isRecord11(document.profiles)) {
77806
- const profiles = {};
77807
- for (const [name, profile] of Object.entries(document.profiles)) {
77808
- profiles[name] = isRecord11(profile) ? layer(profile, ["profiles", name]) : profile;
77809
- }
77810
- result.profiles = profiles;
77811
- }
77812
- return { document: result, diagnostics };
77813
- }
77814
- function hasLegacyGatewaySection(document) {
77815
- return migrateLegacyDoriSection(document).diagnostics.length > 0;
77816
- }
77817
- var HARNESS_BLOCKS;
77818
- var init_legacy_dori_section = __esm(() => {
77819
- HARNESS_BLOCKS = ["[opencode]", "[native]", "[senpi]", "[codex]"];
77820
- });
77821
-
77822
77769
  // packages/omo-config-core/src/schema/index.ts
77823
77770
  var init_schema = __esm(() => {
77824
77771
  init_agent();
@@ -77826,12 +77773,10 @@ var init_schema = __esm(() => {
77826
77773
  init_config();
77827
77774
  init_fallback_models();
77828
77775
  init_format_on_mutation();
77829
- init_dori();
77830
77776
  init_git_master();
77831
77777
  init_harness();
77832
77778
  init_legacy_category_names();
77833
77779
  init_legacy_harness_names();
77834
- init_legacy_dori_section();
77835
77780
  init_memory();
77836
77781
  init_model_catalog();
77837
77782
  init_model_profile();
@@ -78102,6 +78047,7 @@ function pruneInvalidConfigPaths(config, issues, validate, maxPasses = MAX_PRUNE
78102
78047
  var MAX_PRUNE_PASSES = 32;
78103
78048
 
78104
78049
  // packages/omo-config-core/src/loader/layer-validation.ts
78050
+ import { createHash as createHash2 } from "node:crypto";
78105
78051
  function validationDiagnostic(path, issues) {
78106
78052
  const issuePaths = issues.map((issue) => issue.path.map((segment) => String(segment)).join("."));
78107
78053
  return {
@@ -78122,9 +78068,12 @@ function invalidValueDiagnostics(path, dropped) {
78122
78068
  function unrecognizedKeyIssues(issues) {
78123
78069
  return issues.flatMap((issue) => issue.code === "unrecognized_keys" ? [{ keys: issue.keys, path: issue.path.map((segment) => String(segment)) }] : []);
78124
78070
  }
78125
- function isRecord12(value) {
78071
+ function isRecord11(value) {
78126
78072
  return typeof value === "object" && value !== null && !Array.isArray(value);
78127
78073
  }
78074
+ function isRetiredSection(key) {
78075
+ return RETIRED_SECTION_DIGESTS.has(createHash2("sha256").update(key.toLowerCase()).digest("hex"));
78076
+ }
78128
78077
  function sanitizeUnsafeKeys(value, path = []) {
78129
78078
  if (Array.isArray(value)) {
78130
78079
  const issues = [];
@@ -78135,7 +78084,7 @@ function sanitizeUnsafeKeys(value, path = []) {
78135
78084
  });
78136
78085
  return { issues, value: sanitized };
78137
78086
  }
78138
- if (!isRecord12(value))
78087
+ if (!isRecord11(value))
78139
78088
  return { issues: [], value };
78140
78089
  const issues = [];
78141
78090
  if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
@@ -78143,6 +78092,9 @@ function sanitizeUnsafeKeys(value, path = []) {
78143
78092
  }
78144
78093
  const sanitized = {};
78145
78094
  for (const [key, entry] of Object.entries(value)) {
78095
+ 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] ?? "");
78096
+ if (isConfigContainer && isRetiredSection(key))
78097
+ continue;
78146
78098
  if (isUnsafeObjectKey2(key)) {
78147
78099
  issues.push({ keys: [key], path });
78148
78100
  continue;
@@ -78161,13 +78113,13 @@ function containerAt(record, path) {
78161
78113
  if (!Number.isInteger(index) || index < 0 || index >= node.length)
78162
78114
  return null;
78163
78115
  node = node[index];
78164
- } else if (isRecord12(node) && Object.hasOwn(node, segment)) {
78116
+ } else if (isRecord11(node) && Object.hasOwn(node, segment)) {
78165
78117
  node = node[segment];
78166
78118
  } else {
78167
78119
  return null;
78168
78120
  }
78169
78121
  }
78170
- return isRecord12(node) ? node : null;
78122
+ return isRecord11(node) ? node : null;
78171
78123
  }
78172
78124
  function stripUnrecognizedKeys(record, issues) {
78173
78125
  const stripped = structuredClone(record);
@@ -78229,13 +78181,18 @@ function validateConfigLayer(path, data) {
78229
78181
  return rejected;
78230
78182
  return { loaded: true, diagnostics: [...diagnostics, ...invalidValueDiagnostics(path, pruned.dropped)], value: pruned.config };
78231
78183
  }
78232
- var validateLayerRecord = (record) => {
78184
+ var RETIRED_SECTION_DIGESTS, HARNESS_BLOCKS, validateLayerRecord = (record) => {
78233
78185
  const parsed = OmoConfigLayerSchema.safeParse(record);
78234
78186
  return parsed.success ? { success: true } : { success: false, issues: parsed.error.issues };
78235
78187
  };
78236
78188
  var init_layer_validation = __esm(() => {
78237
78189
  init_schema();
78238
78190
  init_merge();
78191
+ RETIRED_SECTION_DIGESTS = new Set([
78192
+ "447f75a8ebdbdb79a57f0b8cebbfba183820cf54a8119ac01449b30499e5ef0e",
78193
+ "4ea5ee68fea05586106890ded5733820bb77d919cda27bc4b8139b7cd33b8889"
78194
+ ]);
78195
+ HARNESS_BLOCKS = new Set(["[opencode]", "[native]", "[senpi]", "[codex]"]);
78239
78196
  });
78240
78197
 
78241
78198
  // packages/omo-config-core/src/internal/posix-path.ts
@@ -81795,18 +81752,6 @@ function subscriptionProviderRenamePlan(targetPath) {
81795
81752
  transform: inspect
81796
81753
  };
81797
81754
  }
81798
- function doriSectionRenamePlan(targetPath, rename) {
81799
- const inspect = (sources) => rename.transform(sources[0]?.value);
81800
- return {
81801
- id: DORI_SECTION_RENAME_MIGRATION_ID,
81802
- inspect,
81803
- mode: "replace-target",
81804
- shouldRun: rename.shouldRun,
81805
- sources: [],
81806
- targetPath,
81807
- transform: inspect
81808
- };
81809
- }
81810
81755
  function existingOmoConfigPath(directory, options) {
81811
81756
  const fileSystem = discoveryFileSystem(options);
81812
81757
  for (const fileName of ["omo.jsonc", "omo.json"]) {
@@ -81868,7 +81813,6 @@ function createLegacyConfigMigrationPlans(options) {
81868
81813
  addReasoningTarget(plan.targetPath);
81869
81814
  const inPlaceTargets = [...reasoningTargets.values()];
81870
81815
  return [
81871
- ...inPlaceTargets.map((targetPath) => doriSectionRenamePlan(targetPath, options.doriSectionRename)),
81872
81816
  ...legacyPlans,
81873
81817
  ...inPlaceTargets.map(reasoningPlan),
81874
81818
  ...inPlaceTargets.map(categoryDeepSplitPlan),
@@ -81876,7 +81820,6 @@ function createLegacyConfigMigrationPlans(options) {
81876
81820
  ...inPlaceTargets.map(subscriptionProviderRenamePlan)
81877
81821
  ];
81878
81822
  }
81879
- var DORI_SECTION_RENAME_MIGRATION_ID = "2026-10-dori-section-rename";
81880
81823
  var init_migration_plans = __esm(() => {
81881
81824
  init_discovery2();
81882
81825
  init_discovery_paths2();
@@ -81903,16 +81846,6 @@ var init_config_migration = __esm(() => {
81903
81846
  init_reasoning_unification();
81904
81847
  });
81905
81848
 
81906
- // packages/omo-opencode/src/config-migration/dori-section-rename.ts
81907
- var doriSectionRename;
81908
- var init_dori_section_rename = __esm(() => {
81909
- init_src4();
81910
- doriSectionRename = {
81911
- shouldRun: hasLegacyGatewaySection,
81912
- transform: migrateLegacyDoriSection
81913
- };
81914
- });
81915
-
81916
81849
  // packages/omo-opencode/src/startup-migration.ts
81917
81850
  import { posix as posix5 } from "node:path";
81918
81851
  function homeDirectory(options) {
@@ -81952,7 +81885,6 @@ function runOpenCodeStartupMigration(options) {
81952
81885
  ...options.backupTimestamp === undefined ? {} : { backupTimestamp: options.backupTimestamp },
81953
81886
  cwd: options.cwd,
81954
81887
  ...options.discoveryFileSystem === undefined ? {} : { fileSystem: options.discoveryFileSystem },
81955
- doriSectionRename,
81956
81888
  environment: options.environment ?? process.env,
81957
81889
  homeDir,
81958
81890
  pathOperations: options.pathOperations ?? posix5,
@@ -81989,7 +81921,6 @@ function runOpenCodeStartupMigration(options) {
81989
81921
  var init_startup_migration = __esm(() => {
81990
81922
  init_src4();
81991
81923
  init_config_migration();
81992
- init_dori_section_rename();
81993
81924
  });
81994
81925
 
81995
81926
  // packages/omo-opencode/src/cli/config-manager/deep-merge-record.ts
@@ -82731,7 +82662,7 @@ function shouldRetainLine(line, cutoffMs) {
82731
82662
  function parseDiagnosticLine(line) {
82732
82663
  try {
82733
82664
  const parsed = JSON.parse(line);
82734
- if (!isRecord14(parsed)) {
82665
+ if (!isRecord13(parsed)) {
82735
82666
  return null;
82736
82667
  }
82737
82668
  return parsed;
@@ -82742,7 +82673,7 @@ function parseDiagnosticLine(line) {
82742
82673
  throw error;
82743
82674
  }
82744
82675
  }
82745
- function isRecord14(value) {
82676
+ function isRecord13(value) {
82746
82677
  return value !== null && typeof value === "object" && !Array.isArray(value);
82747
82678
  }
82748
82679
  function trimToMaxBytes(lines) {
@@ -82862,13 +82793,13 @@ var init_event_id = __esm(() => {
82862
82793
  });
82863
82794
 
82864
82795
  // packages/telemetry-core/src/machine-id.ts
82865
- import { createHash as createHash5 } from "node:crypto";
82796
+ import { createHash as createHash6 } from "node:crypto";
82866
82797
  import os4 from "node:os";
82867
82798
  function getDefaultTelemetryOsProvider() {
82868
82799
  return os4;
82869
82800
  }
82870
82801
  function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
82871
- return createHash5("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
82802
+ return createHash6("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
82872
82803
  }
82873
82804
  var init_machine_id = () => {};
82874
82805
 
@@ -90430,7 +90361,7 @@ function coerceBool(value) {
90430
90361
  function coerceString(value) {
90431
90362
  return typeof value == "string" ? value : undefined;
90432
90363
  }
90433
- function isRecord15(value) {
90364
+ function isRecord14(value) {
90434
90365
  return typeof value == "object" && value !== null && !Array.isArray(value);
90435
90366
  }
90436
90367
  function toRfc3339(timestamp) {
@@ -90452,7 +90383,7 @@ function relocateInto(properties, key, value) {
90452
90383
  properties[key] = value;
90453
90384
  }
90454
90385
  function buildV1Event(message) {
90455
- const sourceProperties = isRecord15(message.properties) ? message.properties : {};
90386
+ const sourceProperties = isRecord14(message.properties) ? message.properties : {};
90456
90387
  const properties = {
90457
90388
  ...sourceProperties
90458
90389
  };
@@ -92533,7 +92464,7 @@ var package_default2;
92533
92464
  var init_package2 = __esm(() => {
92534
92465
  package_default2 = {
92535
92466
  name: "@oh-my-opencode/omo-codex",
92536
- version: "5.1.45",
92467
+ version: "5.1.47",
92537
92468
  type: "module",
92538
92469
  private: true,
92539
92470
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -94106,8 +94037,7 @@ function windowsNodeDiscoveryLines() {
94106
94037
  ' for /f "tokens=* delims= " %%N in ("!OMO_NODE_BINARY!") do set "OMO_NODE_BINARY=%%N"',
94107
94038
  ` if "!OMO_NODE_BINARY:~0,1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"`,
94108
94039
  ` if "!OMO_NODE_BINARY:~-1!"=="'" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"`,
94109
- ' if "!OMO_NODE_BINARY:~0,1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~1!"',
94110
- ' if "!OMO_NODE_BINARY:~-1!"=="^"" set "OMO_NODE_BINARY=!OMO_NODE_BINARY:~0,-1!"',
94040
+ ' set "OMO_NODE_BINARY=!OMO_NODE_BINARY:"=!"',
94111
94041
  ' if defined OMO_NODE_BINARY if not exist "!OMO_NODE_BINARY!" set "OMO_NODE_BINARY="',
94112
94042
  ")",
94113
94043
  'if not defined OMO_NODE_BINARY where node >nul 2>nul && set "OMO_NODE_BINARY=node"'
@@ -96703,10 +96633,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
96703
96633
  } catch {
96704
96634
  return null;
96705
96635
  }
96706
- if (!isRecord13(cache) || !Array.isArray(cache.models))
96636
+ if (!isRecord12(cache) || !Array.isArray(cache.models))
96707
96637
  return null;
96708
96638
  for (const entry of cache.models) {
96709
- if (!isRecord13(entry))
96639
+ if (!isRecord12(entry))
96710
96640
  continue;
96711
96641
  if (entry.slug !== model && entry.id !== model)
96712
96642
  continue;
@@ -96731,7 +96661,7 @@ function readRootModelCatalogPath(config) {
96731
96661
  const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
96732
96662
  return single?.[1] ?? null;
96733
96663
  }
96734
- function isRecord13(value) {
96664
+ function isRecord12(value) {
96735
96665
  return typeof value === "object" && value !== null && !Array.isArray(value);
96736
96666
  }
96737
96667
  function removeFeatureFlagSetting(config, featureName) {
@@ -96849,7 +96779,7 @@ function isMissingFileError(error) {
96849
96779
  }
96850
96780
 
96851
96781
  // packages/omo-codex/src/install/codex-hook-trust.ts
96852
- import { createHash as createHash2 } from "node:crypto";
96782
+ import { createHash as createHash3 } from "node:crypto";
96853
96783
  import { readFile as readFile12 } from "node:fs/promises";
96854
96784
  import { join as join38 } from "node:path";
96855
96785
  var EVENT_LABELS = new Map([
@@ -96941,7 +96871,7 @@ function commandHookHash(eventName, matcher, handler, command) {
96941
96871
  if (typeof matcher === "string")
96942
96872
  identity.matcher = matcher;
96943
96873
  const canonical = JSON.stringify(canonicalJson(identity));
96944
- return `sha256:${createHash2("sha256").update(canonical).digest("hex")}`;
96874
+ return `sha256:${createHash3("sha256").update(canonical).digest("hex")}`;
96945
96875
  }
96946
96876
  function canonicalJson(value) {
96947
96877
  if (Array.isArray(value))
@@ -97620,7 +97550,7 @@ function nodeErrorCode2(error) {
97620
97550
  }
97621
97551
 
97622
97552
  // packages/omo-codex/src/install/default-agent-role.ts
97623
- import { createHash as createHash3 } from "node:crypto";
97553
+ import { createHash as createHash4 } from "node:crypto";
97624
97554
  import { lstat as lstat9, readFile as readFile16, rm as rm10 } from "node:fs/promises";
97625
97555
  import { join as join43 } from "node:path";
97626
97556
  var REGISTRATION = { name: "default", configFile: "./agents/default.toml" };
@@ -97676,7 +97606,7 @@ async function readIfPresent(path) {
97676
97606
  }
97677
97607
  }
97678
97608
  function hash(content) {
97679
- return createHash3("sha256").update(content).digest("hex");
97609
+ return createHash4("sha256").update(content).digest("hex");
97680
97610
  }
97681
97611
 
97682
97612
  // packages/omo-codex/src/install/link-cached-plugin-agents.ts
@@ -98341,7 +98271,7 @@ function formatUnknownError(error) {
98341
98271
  }
98342
98272
 
98343
98273
  // packages/omo-codex/src/install/lsp-daemon-reaper.ts
98344
- import { createHash as createHash4 } from "node:crypto";
98274
+ import { createHash as createHash5 } from "node:crypto";
98345
98275
  import { lstat as lstat12, readFile as readFile22, readdir as readdir10, rm as rm12 } from "node:fs/promises";
98346
98276
  import { tmpdir as tmpdir3 } from "node:os";
98347
98277
  import { join as join48, posix as posix6 } from "node:path";
@@ -98619,7 +98549,7 @@ async function readRegularTrimmedFile(path) {
98619
98549
  return content.length > 0 ? content : null;
98620
98550
  }
98621
98551
  function shortDigest(value) {
98622
- return createHash4("sha256").update(value).digest("hex").slice(0, 16);
98552
+ return createHash5("sha256").update(value).digest("hex").slice(0, 16);
98623
98553
  }
98624
98554
  async function removeVersionDir(path) {
98625
98555
  await rm12(path, { recursive: true, force: true });
@@ -99690,7 +99620,7 @@ node "%~dp0omo" %*\r
99690
99620
  }
99691
99621
 
99692
99622
  // packages/omo-senpi/src/install/plugin-artifacts.ts
99693
- import { createHash as createHash6 } from "node:crypto";
99623
+ import { createHash as createHash7 } from "node:crypto";
99694
99624
  import { constants as constants9 } from "node:fs";
99695
99625
  import { access as access2, readFile as readFile29, stat as stat6 } from "node:fs/promises";
99696
99626
  import { dirname as dirname24, join as join63 } from "node:path";
@@ -99729,7 +99659,7 @@ async function readSettings(settingsPath) {
99729
99659
  throw error;
99730
99660
  }
99731
99661
  const parsed = JSON.parse(raw);
99732
- if (!isRecord16(parsed))
99662
+ if (!isRecord15(parsed))
99733
99663
  throw new Error(`${settingsPath} must contain a JSON object`);
99734
99664
  return parsed;
99735
99665
  }
@@ -99790,7 +99720,7 @@ async function nextBackupPath(settingsPath) {
99790
99720
  function timestampForBackup() {
99791
99721
  return new Date().toISOString().replace(/[-:.]/g, "");
99792
99722
  }
99793
- function isRecord16(value) {
99723
+ function isRecord15(value) {
99794
99724
  return typeof value === "object" && value !== null && !Array.isArray(value);
99795
99725
  }
99796
99726
  async function readPackageName(packagePath) {
@@ -99810,7 +99740,7 @@ async function readPackageName(packagePath) {
99810
99740
  return;
99811
99741
  throw error;
99812
99742
  }
99813
- return isRecord16(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
99743
+ return isRecord15(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
99814
99744
  }
99815
99745
  async function fileExists(path) {
99816
99746
  try {
@@ -99838,7 +99768,6 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
99838
99768
  join63("extensions", "omo-memory-commands.js"),
99839
99769
  join63("extensions", "omo-session-history.js"),
99840
99770
  join63("extensions", "omo-recall-store.js"),
99841
- join63("extensions", "omo-dori-migration.js"),
99842
99771
  join63("extensions", "omo-telemetry-posthog.js"),
99843
99772
  join63("extensions", "omo-memory-sync.js"),
99844
99773
  join63("extensions", "loro_wasm_bg.wasm"),
@@ -99935,7 +99864,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
99935
99864
  }
99936
99865
  let actualSha256;
99937
99866
  try {
99938
- actualSha256 = createHash6("sha256").update(await readFile29(runtimeEntry)).digest("hex");
99867
+ actualSha256 = createHash7("sha256").update(await readFile29(runtimeEntry)).digest("hex");
99939
99868
  } catch (error) {
99940
99869
  throw astGrepIntegrityError(runtimeEntry, `runtime hash could not be computed: ${messageOf(error)}`);
99941
99870
  }
@@ -99948,7 +99877,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
99948
99877
  }
99949
99878
  }
99950
99879
  function isAstGrepRuntimeManifest(value) {
99951
- if (!isRecord16(value))
99880
+ if (!isRecord15(value))
99952
99881
  return false;
99953
99882
  return typeof value.sha256 === "string" && /^[a-f0-9]{64}$/.test(value.sha256) && typeof value.mode === "number" && Number.isInteger(value.mode) && typeof value.stagedAtUtc === "string" && !Number.isNaN(Date.parse(value.stagedAtUtc));
99954
99883
  }
@@ -108046,13 +107975,11 @@ async function checkModels() {
108046
107975
 
108047
107976
  // packages/omo-opencode/src/cli/doctor/checks/legacy-config-leftovers.ts
108048
107977
  init_config_migration();
108049
- init_dori_section_rename();
108050
107978
  import { posix as posix12, win32 as win329 } from "node:path";
108051
107979
  function findLegacyConfigLeftovers(options) {
108052
107980
  const pathOperations = options.pathOperations ?? (process.platform === "win32" ? win329 : posix12);
108053
107981
  const paths = createLegacyConfigMigrationPlans({
108054
107982
  cwd: options.cwd,
108055
- doriSectionRename,
108056
107983
  environment: options.environment ?? process.env,
108057
107984
  homeDir: options.homeDir,
108058
107985
  pathOperations,
@@ -108251,14 +108178,14 @@ var CANONICAL_REPLACEMENT = new Map([
108251
108178
  var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
108252
108179
  var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
108253
108180
  var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
108254
- function isRecord17(value) {
108181
+ function isRecord16(value) {
108255
108182
  return value !== null && typeof value === "object" && !Array.isArray(value);
108256
108183
  }
108257
108184
  function isHarnessBlock(key) {
108258
108185
  return key.startsWith("[") && key.endsWith("]");
108259
108186
  }
108260
108187
  function collectIssues(configPath, value, prefix, fixSuffix) {
108261
- if (!isRecord17(value))
108188
+ if (!isRecord16(value))
108262
108189
  return [];
108263
108190
  const issues = [];
108264
108191
  for (const [key, child] of Object.entries(value)) {
@@ -108274,7 +108201,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
108274
108201
  });
108275
108202
  continue;
108276
108203
  }
108277
- if (!isRecord17(child))
108204
+ if (!isRecord16(child))
108278
108205
  continue;
108279
108206
  if (PASSTHROUGH_CONTAINERS.has(key))
108280
108207
  continue;
@@ -108293,7 +108220,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
108293
108220
  return issues;
108294
108221
  }
108295
108222
  function migrateFixSuffix(parsed) {
108296
- if (isRecord17(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
108223
+ if (isRecord16(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
108297
108224
  return "";
108298
108225
  return MIGRATE_SUFFIX;
108299
108226
  }
@@ -109158,10 +109085,6 @@ var package_default3 = {
109158
109085
  types: "./src/cli/service-auth/index.ts",
109159
109086
  import: "./src/cli/service-auth/index.ts"
109160
109087
  },
109161
- "./config-migration/dori-section-rename": {
109162
- types: "./src/config-migration/dori-section-rename.ts",
109163
- import: "./src/config-migration/dori-section-rename.ts"
109164
- },
109165
109088
  "./binary-downloader": {
109166
109089
  types: "./src/shared/binary-downloader.ts",
109167
109090
  import: "./src/shared/binary-downloader.ts"
@@ -109592,12 +109515,12 @@ async function auditBundleTargets(pluginRoot) {
109592
109515
  let referencedCount = 0;
109593
109516
  for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
109594
109517
  const manifest = await readJson2(manifestPath);
109595
- if (manifest === null || !isRecord19(manifest["mcpServers"]))
109518
+ if (manifest === null || !isRecord18(manifest["mcpServers"]))
109596
109519
  continue;
109597
109520
  const manifestRoot = dirname39(manifestPath);
109598
109521
  const isRootManifest = resolve28(manifestRoot) === resolve28(pluginRoot);
109599
109522
  for (const server of Object.values(manifest["mcpServers"])) {
109600
- if (!isRecord19(server) || !Array.isArray(server["args"]))
109523
+ if (!isRecord18(server) || !Array.isArray(server["args"]))
109601
109524
  continue;
109602
109525
  for (const arg of server["args"]) {
109603
109526
  if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
@@ -109683,7 +109606,7 @@ function collectHookCommands(value, commands) {
109683
109606
  collectHookCommands(item, commands);
109684
109607
  return;
109685
109608
  }
109686
- if (!isRecord19(value))
109609
+ if (!isRecord18(value))
109687
109610
  return;
109688
109611
  if (value["type"] === "command") {
109689
109612
  if (typeof value["command"] === "string")
@@ -109738,7 +109661,7 @@ function parseDegradedEntries(value) {
109738
109661
  return [];
109739
109662
  const entries = [];
109740
109663
  for (const item of value) {
109741
- if (!isRecord19(item))
109664
+ if (!isRecord18(item))
109742
109665
  continue;
109743
109666
  if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
109744
109667
  continue;
@@ -109772,7 +109695,7 @@ function degradedDetailLines(entries) {
109772
109695
  async function readJson2(path) {
109773
109696
  try {
109774
109697
  const parsed = JSON.parse(await readFile31(path, "utf8"));
109775
- return isRecord19(parsed) ? parsed : null;
109698
+ return isRecord18(parsed) ? parsed : null;
109776
109699
  } catch (error) {
109777
109700
  if (error instanceof Error)
109778
109701
  return null;
@@ -109793,7 +109716,7 @@ function normalizeRelative(root, target) {
109793
109716
  function normalizePathSeparators(path) {
109794
109717
  return path.split("\\").join("/");
109795
109718
  }
109796
- function isRecord19(value) {
109719
+ function isRecord18(value) {
109797
109720
  return typeof value === "object" && value !== null && !Array.isArray(value);
109798
109721
  }
109799
109722
 
@@ -110338,7 +110261,7 @@ Doctor failed unexpectedly: ${message}`];
110338
110261
  init_commander();
110339
110262
 
110340
110263
  // packages/mcp-client-core/src/mcp-oauth/storage.ts
110341
- import { createHash as createHash7 } from "node:crypto";
110264
+ import { createHash as createHash8 } from "node:crypto";
110342
110265
  import {
110343
110266
  chmodSync as chmodSync5,
110344
110267
  existsSync as existsSync65,
@@ -110433,7 +110356,7 @@ function getMcpOauthStorageDir() {
110433
110356
  return join101(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
110434
110357
  }
110435
110358
  function getMcpOauthServerHash(serverHost, resource) {
110436
- return createHash7("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
110359
+ return createHash8("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
110437
110360
  }
110438
110361
  function getMcpOauthStoragePath(serverHost, resource) {
110439
110362
  return join101(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
@@ -110807,13 +110730,13 @@ async function findAvailablePort2(startPort = DEFAULT_PORT) {
110807
110730
 
110808
110731
  // packages/mcp-client-core/src/mcp-oauth/oauth-authorization-flow.ts
110809
110732
  import { spawn as spawn4 } from "node:child_process";
110810
- import { createHash as createHash8, randomBytes as randomBytes2 } from "node:crypto";
110733
+ import { createHash as createHash9, randomBytes as randomBytes2 } from "node:crypto";
110811
110734
  import { createServer as createServer2 } from "node:http";
110812
110735
  function generateCodeVerifier() {
110813
110736
  return randomBytes2(32).toString("base64url");
110814
110737
  }
110815
110738
  function generateCodeChallenge(verifier) {
110816
- return createHash8("sha256").update(verifier).digest("base64url");
110739
+ return createHash9("sha256").update(verifier).digest("base64url");
110817
110740
  }
110818
110741
  function buildAuthorizationUrl(authorizationEndpoint, options) {
110819
110742
  const url = new URL(authorizationEndpoint);
@@ -112175,7 +112098,7 @@ async function loginDevice(session, options) {
112175
112098
  }
112176
112099
 
112177
112100
  // packages/omo-opencode/src/cli/service-auth/keystore.ts
112178
- import { createHash as createHash9 } from "node:crypto";
112101
+ import { createHash as createHash10 } from "node:crypto";
112179
112102
 
112180
112103
  // packages/omo-opencode/src/cli/service-auth/secret-service-lock.ts
112181
112104
  import { spawn as spawn5 } from "node:child_process";
@@ -112224,6 +112147,8 @@ class CredentialStoreError extends SignInError {
112224
112147
 
112225
112148
  class KeychainLockedError extends CredentialStoreError {
112226
112149
  }
112150
+ class InvalidCredentialState extends SignInError {
112151
+ }
112227
112152
  var LOCKED = /-25308|errSecInteractionNotAllowed|interaction is not allowed|locked collection/i;
112228
112153
  var UNLOCKED_REUSE_MS = 30000;
112229
112154
  var fallbackNoticed = false;
@@ -112236,15 +112161,18 @@ var stderrNoticeOncePerProcess = (message) => {
112236
112161
  };
112237
112162
  var isLocked = (error) => error instanceof Error && (LOCKED.test(error.message) || LOCKED.test(String(error.code ?? "")));
112238
112163
  function credentialId(api) {
112239
- return createHash9("sha256").update(serviceOrigin(api)).digest("hex");
112164
+ return createHash10("sha256").update(serviceOrigin(api)).digest("hex");
112240
112165
  }
112241
112166
  function createCredentialStore(api, secrets = typeof Bun === "undefined" ? null : Bun.secrets, platform = process.platform, lockProbe = probeSecretServiceLock, notice = stderrNoticeOncePerProcess) {
112167
+ return createSealedStore(api, "omo-cli", credentialSchema, secrets, platform, lockProbe, notice);
112168
+ }
112169
+ function createSealedStore(api, namespace, schema, secrets = typeof Bun === "undefined" ? null : Bun.secrets, platform = process.platform, lockProbe = probeSecretServiceLock, notice = stderrNoticeOncePerProcess) {
112242
112170
  if (!secrets)
112243
112171
  throw new SignInError("OmO sign-in needs Bun 1.4 or newer with OS credential storage. No file fallback is available.");
112244
112172
  const platformName = platform === "darwin" ? "macOS Keychain" : platform === "linux" ? "Linux Secret Service (libsecret and an unlocked keyring)" : platform === "win32" ? "Windows Credential Manager" : null;
112245
112173
  if (platformName === null)
112246
112174
  throw new SignInError("This platform has no supported OS credential store.");
112247
- const key = { service: "omo-cli", name: credentialId(api) };
112175
+ const key = { service: namespace, name: credentialId(api) };
112248
112176
  const unavailable = (error) => isLocked(error) ? new KeychainLockedError(`${platformName} is locked. Unlock it, then try again. Credentials are never saved to a file.`) : new CredentialStoreError(`Cannot access ${platformName}. Unlock or enable the OS credential store and try again. Credentials are never saved to a file.`);
112249
112177
  let unlockedUntil = 0;
112250
112178
  let noticed = false;
@@ -112275,15 +112203,15 @@ function createCredentialStore(api, secrets = typeof Bun === "undefined" ? null
112275
112203
  if (value === null)
112276
112204
  return null;
112277
112205
  try {
112278
- return credentialSchema.parse(JSON.parse(value));
112206
+ return schema.parse(JSON.parse(value));
112279
112207
  } catch {
112280
- throw new SignInError("Stored sign-in data is invalid. Run omo logout, then omo login.");
112208
+ throw new InvalidCredentialState("Stored sign-in data is invalid. Run omo logout, then omo login.");
112281
112209
  }
112282
112210
  },
112283
112211
  async write(value) {
112284
112212
  await assertUsable();
112285
112213
  try {
112286
- await secrets.set({ ...key, value: JSON.stringify(credentialSchema.parse(value)) });
112214
+ await secrets.set({ ...key, value: JSON.stringify(schema.parse(value)) });
112287
112215
  } catch (error) {
112288
112216
  throw unavailable(error);
112289
112217
  }
@@ -112300,7 +112228,7 @@ function createCredentialStore(api, secrets = typeof Bun === "undefined" ? null
112300
112228
  }
112301
112229
 
112302
112230
  // packages/omo-opencode/src/cli/service-auth/loopback.ts
112303
- import { createHash as createHash10, randomBytes as randomBytes3, timingSafeEqual } from "node:crypto";
112231
+ import { createHash as createHash11, randomBytes as randomBytes3, timingSafeEqual } from "node:crypto";
112304
112232
  import { createServer as createServer3 } from "node:http";
112305
112233
  class BrowserUnavailable extends SignInError {
112306
112234
  }
@@ -112346,7 +112274,7 @@ async function authorize(options) {
112346
112274
  const url = new URL(serviceOrigin(options.accounts));
112347
112275
  url.search = new URLSearchParams({
112348
112276
  redirect_uri: `${origin}/callback`,
112349
- code_challenge: createHash10("sha256").update(verifier).digest("base64url"),
112277
+ code_challenge: createHash11("sha256").update(verifier).digest("base64url"),
112350
112278
  code_challenge_method: "S256",
112351
112279
  state
112352
112280
  }).toString();
@@ -112535,7 +112463,7 @@ async function publishLockRecord(lockPath, record) {
112535
112463
  }
112536
112464
 
112537
112465
  // packages/team-core/src/team-state-store/lock-reclaim.ts
112538
- import { createHash as createHash11 } from "node:crypto";
112466
+ import { createHash as createHash12 } from "node:crypto";
112539
112467
  import { unlink as unlink3 } from "node:fs/promises";
112540
112468
  var RECLAIM_UNLINK_ATTEMPTS = 3;
112541
112469
  var RECLAIM_UNLINK_RETRY_MS = 25;
@@ -112545,7 +112473,7 @@ function delay2(ms) {
112545
112473
  });
112546
112474
  }
112547
112475
  function reclaimGuardPath(lockPath, record) {
112548
- return `${lockPath}.reclaim-${createHash11("sha256").update(record).digest("hex").slice(0, 16)}`;
112476
+ return `${lockPath}.reclaim-${createHash12("sha256").update(record).digest("hex").slice(0, 16)}`;
112549
112477
  }
112550
112478
  async function unlinkWithRetry(path, deps) {
112551
112479
  const wait = deps.delay ?? delay2;