oh-my-opencode 5.1.43 → 5.1.45

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 (399) hide show
  1. package/dist/cli/index.js +948 -416
  2. package/dist/cli/service-auth/keystore.d.ts +4 -2
  3. package/dist/cli-node/index.js +948 -416
  4. package/dist/config-migration/dori-section-rename.d.ts +3 -0
  5. package/dist/config-migration/index.d.ts +2 -2
  6. package/dist/config-migration/migration-plans.d.ts +10 -0
  7. package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
  8. package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -1
  9. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
  10. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  11. package/dist/index.js +6369 -3370
  12. package/dist/oh-my-opencode.schema.json +2 -2
  13. package/dist/plugin/command-execute-before.d.ts +3 -0
  14. package/dist/plugin/skill-context.d.ts +2 -0
  15. package/dist/plugin/skill-security-notice.d.ts +3 -0
  16. package/dist/plugin-config/omo-config-chain.d.ts +1 -0
  17. package/dist/skills/browser/SKILL.md +21 -22
  18. package/dist/skills/browser/references/commands.md +2 -9
  19. package/dist/skills/browser/references/install.md +1 -2
  20. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  21. package/dist/skills/browser/scripts/browser-doctor.mjs +2 -2
  22. package/dist/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  23. package/dist/skills/browser/scripts/browser-install.mjs +1 -1
  24. package/dist/skills/browser/scripts/omowright.mjs +1 -10
  25. package/dist/skills/frontend/SKILL.md +79 -118
  26. package/dist/skills/frontend/references/design/README.md +75 -224
  27. package/dist/skills/frontend/references/design/stylegallery.md +32 -27
  28. package/dist/skills/frontend/references/perfection/README.md +2 -2
  29. package/dist/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  30. package/dist/skills/frontend/scripts/perfection/check-draft-guard.test.ts +101 -0
  31. package/dist/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  32. package/dist/skills/frontend/scripts/perfection/collect-files.test.ts +50 -0
  33. package/dist/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  34. package/dist/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  35. package/dist/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  36. package/dist/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  37. package/dist/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  38. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  39. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  40. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  41. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  42. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  43. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  44. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  45. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  46. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  47. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  48. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  49. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  50. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  51. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  52. package/dist/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  53. package/dist/skills/programming/SKILL.md +10 -7
  54. package/dist/skills/programming/references/typescript/README.md +10 -7
  55. package/dist/skills/programming/references/typescript/bootstrap.md +9 -23
  56. package/dist/skills/programming/references/typescript/oxc-lint.md +130 -0
  57. package/dist/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  58. package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  59. package/dist/skills/programming/scripts/typescript/new-project.test.ts +162 -0
  60. package/dist/skills/programming/scripts/typescript/new-project.ts +20 -81
  61. package/dist/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  62. package/dist/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  63. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  64. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  65. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  66. package/dist/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  67. package/dist/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  68. package/dist/skills/refactor/SKILL.md +13 -13
  69. package/dist/skills/ulw-execute/SKILL.md +1 -1
  70. package/dist/skills/ulw-research/AGENTS.md +9 -3
  71. package/dist/skills/ulw-research/SKILL.md +2 -2
  72. package/dist/skills/ulw-research/references/deliverable-phase.md +7 -6
  73. package/dist/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  74. package/dist/skills/ulw-research/references/report-gates.md +51 -3
  75. package/dist/skills/ulw-research/scripts/claims-index.mjs +125 -0
  76. package/dist/skills/ulw-research/scripts/claims-index.test.ts +149 -0
  77. package/dist/skills/ulw-research/scripts/contracts.mjs +68 -3
  78. package/dist/skills/ulw-research/scripts/contracts.test.ts +97 -12
  79. package/dist/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +190 -0
  80. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  81. package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +141 -0
  82. package/dist/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  83. package/dist/skills/ulw-research/scripts/fact-ledger-schema.test.ts +43 -0
  84. package/dist/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  85. package/dist/skills/ulw-research/scripts/fact-ledger.test.ts +252 -0
  86. package/dist/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  87. package/dist/skills/ulw-research/scripts/fidelity-brief.test.ts +179 -0
  88. package/dist/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  89. package/dist/skills/ulw-research/scripts/fidelity-state.test.ts +46 -0
  90. package/dist/skills/ulw-research/scripts/gates-context.test.ts +64 -0
  91. package/dist/skills/ulw-research/scripts/gates-static.mjs +1 -1
  92. package/dist/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  93. package/dist/skills/ulw-research/scripts/gates-text.mjs +1 -27
  94. package/dist/skills/ulw-research/scripts/lexicon.mjs +47 -0
  95. package/dist/skills/ulw-research/scripts/lexicon.test.ts +57 -0
  96. package/dist/skills/ulw-research/scripts/numerals.mjs +226 -0
  97. package/dist/skills/ulw-research/scripts/numerals.test.ts +120 -0
  98. package/dist/skills/ulw-research/scripts/outcome.mjs +2 -3
  99. package/dist/skills/ulw-research/scripts/outcome.test.ts +29 -0
  100. package/dist/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  101. package/dist/skills/ulw-research/scripts/particles-ko.test.ts +86 -0
  102. package/dist/skills/ulw-research/scripts/rational.mjs +139 -0
  103. package/dist/skills/ulw-research/scripts/rational.test.ts +46 -0
  104. package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  105. package/dist/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  106. package/dist/skills/ulw-research/scripts/sentence-split.test.ts +109 -0
  107. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity/claim-graph.md +13 -0
  108. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-locked.md +17 -0
  109. package/dist/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-pending.md +17 -0
  110. package/dist/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  111. package/dist/skills/ulw-research/scripts/text-normalize.test.ts +73 -0
  112. package/dist/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  113. package/dist/skills/ulw-research/scripts/text-similarity.test.ts +38 -0
  114. package/dist/skills/ulw-research/scripts/units.mjs +105 -0
  115. package/dist/skills/ulw-research/scripts/units.test.ts +83 -0
  116. package/dist/skills/visual-qa/SKILL.md +70 -63
  117. package/dist/skills/visual-qa/scripts/skill-doc-fields.test.ts +34 -0
  118. package/dist/tools/delegate-task/constants.d.ts +1 -1
  119. package/dist/tools/session-manager/constants.d.ts +1 -1
  120. package/dist/tools/session-manager/file-storage.d.ts +9 -2
  121. package/dist/tools/session-manager/sdk-storage.d.ts +19 -1
  122. package/dist/tools/session-manager/session-formatter.d.ts +3 -3
  123. package/dist/tools/session-manager/storage.d.ts +8 -2
  124. package/dist/tools/skill/mcp-capability-formatter.d.ts +1 -1
  125. package/dist/tools/skill/native-skills.d.ts +2 -2
  126. package/dist/tools/skill/skill-mcp-authority.d.ts +3 -0
  127. package/dist/tui.js +535 -100
  128. package/docs/reference/web-terminal-visual-qa.md +8 -0
  129. package/package.json +24 -16
  130. package/packages/lsp-core/src/lsp/client-wrapper.ts +4 -4
  131. package/packages/lsp-core/src/post-edit/not-installed.test.ts +2 -2
  132. package/packages/lsp-daemon/dist/cli.js +4 -4
  133. package/packages/lsp-daemon/dist/client.js +4 -4
  134. package/packages/lsp-daemon/dist/index.js +4 -4
  135. package/packages/lsp-daemon/package.json +3 -3
  136. package/packages/lsp-tools-mcp/dist/cli.js +4 -4
  137. package/packages/lsp-tools-mcp/dist/mcp.js +4 -4
  138. package/packages/lsp-tools-mcp/dist/tools.js +4 -4
  139. package/packages/lsp-tools-mcp/package.json +3 -3
  140. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  141. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +62 -21
  142. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  143. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -1
  145. package/packages/omo-codex/plugin/components/comment-checker/biome.json +1 -21
  146. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  147. package/packages/omo-codex/plugin/components/comment-checker/package.json +4 -4
  148. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  149. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  150. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +1 -21
  151. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  152. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +4 -4
  153. package/packages/omo-codex/plugin/components/lsp/biome.json +1 -21
  154. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  155. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +4 -4
  156. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  157. package/packages/omo-codex/plugin/components/lsp/package.json +4 -4
  158. package/packages/omo-codex/plugin/components/lsp/scripts/build-runtime.mjs +0 -1
  159. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-not-installed.test.ts +1 -1
  160. package/packages/omo-codex/plugin/components/rules/biome.json +1 -21
  161. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  162. package/packages/omo-codex/plugin/components/rules/package.json +4 -4
  163. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  164. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  165. package/packages/omo-codex/plugin/components/telemetry/biome.json +1 -21
  166. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +90 -1
  167. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +91 -1
  168. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  169. package/packages/omo-codex/plugin/components/telemetry/package.json +4 -4
  170. package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +2 -2
  171. package/packages/omo-codex/plugin/components/ultrawork/biome.json +1 -21
  172. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  173. package/packages/omo-codex/plugin/components/ultrawork/package.json +4 -4
  174. package/packages/omo-codex/plugin/components/ulw-execute-continuation/biome.json +1 -21
  175. package/packages/omo-codex/plugin/components/ulw-execute-continuation/directive.md +1 -1
  176. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  177. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +4 -4
  178. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +1 -21
  179. package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +1 -1
  180. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +7 -7
  181. package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +5 -5
  182. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +1 -1
  183. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  184. package/packages/omo-codex/plugin/components/ulw-loop/package.json +4 -4
  185. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +1 -1
  186. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +5 -5
  187. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +1 -1
  188. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +2 -0
  189. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  190. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  191. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  192. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  193. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  194. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  195. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  196. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  197. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  198. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  199. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  200. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  201. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  202. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  203. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  204. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  205. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  206. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  207. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  208. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  209. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  210. package/packages/omo-codex/plugin/package-lock.json +12 -12
  211. package/packages/omo-codex/plugin/package.json +1 -1
  212. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +7 -7
  213. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +2 -0
  214. package/packages/omo-codex/plugin/skills/browser/SKILL.md +21 -22
  215. package/packages/omo-codex/plugin/skills/browser/references/commands.md +2 -9
  216. package/packages/omo-codex/plugin/skills/browser/references/install.md +1 -2
  217. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  218. package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +2 -2
  219. package/packages/omo-codex/plugin/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  220. package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +1 -1
  221. package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +1 -10
  222. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +79 -118
  223. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +75 -224
  224. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +32 -27
  225. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
  226. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  227. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  228. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  229. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  230. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  231. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  232. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  233. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  234. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  235. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  236. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  237. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  238. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  239. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  240. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  241. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  242. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  243. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  244. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  245. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  246. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  247. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  248. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +1 -1
  249. package/packages/omo-codex/plugin/skills/programming/SKILL.md +10 -7
  250. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +10 -7
  251. package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +9 -23
  252. package/packages/omo-codex/plugin/skills/programming/references/typescript/oxc-lint.md +130 -0
  253. package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  254. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  255. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +20 -81
  256. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  257. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  258. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  259. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  260. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  261. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  262. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  263. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +14 -14
  264. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -1
  265. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +2 -2
  266. package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +2 -2
  267. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  268. package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +9 -3
  269. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
  270. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +7 -6
  271. package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  272. package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +51 -3
  273. package/packages/omo-codex/plugin/skills/ulw-research/scripts/claims-index.mjs +125 -0
  274. package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +68 -3
  275. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  276. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  277. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  278. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  279. package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  280. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +1 -1
  281. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  282. package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-text.mjs +1 -27
  283. package/packages/omo-codex/plugin/skills/ulw-research/scripts/lexicon.mjs +47 -0
  284. package/packages/omo-codex/plugin/skills/ulw-research/scripts/numerals.mjs +226 -0
  285. package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +2 -3
  286. package/packages/omo-codex/plugin/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  287. package/packages/omo-codex/plugin/skills/ulw-research/scripts/rational.mjs +139 -0
  288. package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  289. package/packages/omo-codex/plugin/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  290. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  291. package/packages/omo-codex/plugin/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  292. package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +105 -0
  293. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +71 -64
  294. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +4 -1
  295. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +6 -6
  296. package/packages/omo-codex/scripts/install-dist/install-local.mjs +152 -23
  297. package/packages/shared-skills/skills/browser/SKILL.md +21 -22
  298. package/packages/shared-skills/skills/browser/references/commands.md +2 -9
  299. package/packages/shared-skills/skills/browser/references/install.md +1 -2
  300. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  301. package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +2 -2
  302. package/packages/shared-skills/skills/browser/scripts/browser-engine-guard.mjs +63 -487
  303. package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +1 -1
  304. package/packages/shared-skills/skills/browser/scripts/omowright.mjs +1 -10
  305. package/packages/shared-skills/skills/frontend/SKILL.md +79 -118
  306. package/packages/shared-skills/skills/frontend/references/design/README.md +75 -224
  307. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +32 -27
  308. package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
  309. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +8 -24
  310. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.test.ts +101 -0
  311. package/packages/shared-skills/skills/frontend/scripts/perfection/check-draft-guard.ts +40 -0
  312. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.test.ts +50 -0
  313. package/packages/shared-skills/skills/frontend/scripts/perfection/collect-files.ts +53 -0
  314. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/findings.ts +16 -0
  315. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/lint.ts +38 -0
  316. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/rules.ts +69 -0
  317. package/packages/shared-skills/skills/frontend/scripts/perfection/draft-guard/text-nodes.ts +121 -0
  318. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/attr-lookalikes.tsx +10 -0
  319. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/bound-values.tsx +12 -0
  320. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/const-generics.tsx +3 -0
  321. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/generics.tsx +7 -0
  322. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/measured-stats.html +6 -0
  323. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/plain-copy.html +9 -0
  324. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/negative/state-copy.html +11 -0
  325. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/attribute-edges.html +7 -0
  326. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/components.tsx +16 -0
  327. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/decorative-badge.vue +7 -0
  328. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/emoji-icons.tsx +9 -0
  329. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/jsx-edges.tsx +1 -0
  330. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.html +6 -0
  331. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/promo-copy.tsx +8 -0
  332. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/draft-guard/positive/vanity-stats.html +5 -0
  333. package/packages/shared-skills/skills/programming/SKILL.md +10 -7
  334. package/packages/shared-skills/skills/programming/references/typescript/README.md +10 -7
  335. package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +9 -23
  336. package/packages/shared-skills/skills/programming/references/typescript/oxc-lint.md +130 -0
  337. package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +6 -62
  338. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +12 -12
  339. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.test.ts +162 -0
  340. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +20 -81
  341. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxfmtrc.json +9 -0
  342. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/.oxlintrc.json +46 -0
  343. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/LICENSE +21 -0
  344. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/index.js +10 -0
  345. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/no-em-dash-copy.js +28 -0
  346. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/lint/oxlint-plugin/require-suppression-reason.js +62 -0
  347. package/packages/shared-skills/skills/programming/scripts/typescript/oxc/tsconfig.json +29 -0
  348. package/packages/shared-skills/skills/refactor/SKILL.md +13 -13
  349. package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -1
  350. package/packages/shared-skills/skills/ulw-research/AGENTS.md +9 -3
  351. package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
  352. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +7 -6
  353. package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +116 -0
  354. package/packages/shared-skills/skills/ulw-research/references/report-gates.md +51 -3
  355. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.mjs +125 -0
  356. package/packages/shared-skills/skills/ulw-research/scripts/claims-index.test.ts +149 -0
  357. package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +68 -3
  358. package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +97 -12
  359. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-grammar.test.ts +190 -0
  360. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +136 -0
  361. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +141 -0
  362. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.mjs +204 -0
  363. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-schema.test.ts +43 -0
  364. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.mjs +103 -0
  365. package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger.test.ts +252 -0
  366. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.mjs +145 -0
  367. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-brief.test.ts +179 -0
  368. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.mjs +63 -0
  369. package/packages/shared-skills/skills/ulw-research/scripts/fidelity-state.test.ts +46 -0
  370. package/packages/shared-skills/skills/ulw-research/scripts/gates-context.test.ts +64 -0
  371. package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +1 -1
  372. package/packages/shared-skills/skills/ulw-research/scripts/gates-structure.mjs +1 -1
  373. package/packages/shared-skills/skills/ulw-research/scripts/gates-text.mjs +1 -27
  374. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.mjs +47 -0
  375. package/packages/shared-skills/skills/ulw-research/scripts/lexicon.test.ts +57 -0
  376. package/packages/shared-skills/skills/ulw-research/scripts/numerals.mjs +226 -0
  377. package/packages/shared-skills/skills/ulw-research/scripts/numerals.test.ts +120 -0
  378. package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +2 -3
  379. package/packages/shared-skills/skills/ulw-research/scripts/outcome.test.ts +29 -0
  380. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.mjs +108 -0
  381. package/packages/shared-skills/skills/ulw-research/scripts/particles-ko.test.ts +86 -0
  382. package/packages/shared-skills/skills/ulw-research/scripts/rational.mjs +139 -0
  383. package/packages/shared-skills/skills/ulw-research/scripts/rational.test.ts +46 -0
  384. package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +2 -2
  385. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.mjs +77 -0
  386. package/packages/shared-skills/skills/ulw-research/scripts/sentence-split.test.ts +109 -0
  387. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity/claim-graph.md +13 -0
  388. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-locked.md +17 -0
  389. package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/fidelity-brief-pending.md +17 -0
  390. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.mjs +82 -0
  391. package/packages/shared-skills/skills/ulw-research/scripts/text-normalize.test.ts +73 -0
  392. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.mjs +28 -0
  393. package/packages/shared-skills/skills/ulw-research/scripts/text-similarity.test.ts +38 -0
  394. package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +105 -0
  395. package/packages/shared-skills/skills/ulw-research/scripts/units.test.ts +83 -0
  396. package/packages/shared-skills/skills/visual-qa/SKILL.md +70 -63
  397. package/packages/shared-skills/skills/visual-qa/scripts/skill-doc-fields.test.ts +34 -0
  398. package/script/qa/web-terminal-visual-qa.mjs +6 -2
  399. package/script/qa/xterm-live-terminal.mjs +26 -3
@@ -32,6 +32,14 @@ node script/qa/web-terminal-visual-qa.mjs --title "menu nav" --command "my-tui"
32
32
  --dwell-ms 2000 --evidence-dir .omo/evidence/run/menu
33
33
  ```
34
34
 
35
+ A TUI that takes a while to start can drop the first keystrokes. Put `{WaitFor:<text>}` before them: it polls the rendered xterm buffer until `<text>` appears, then continues. If the text never appears within `--wait-for-timeout-ms` (default 10000), the capture fails with an error that names the text and the timeout:
36
+
37
+ ```bash
38
+ node script/qa/web-terminal-visual-qa.mjs --title "mcp" --command "senpi" \
39
+ --input "{WaitFor:❯}" --input "/mcp" --input "{Enter}" --input "{WaitFor:MCP servers}" \
40
+ --evidence-dir .omo/evidence/run/mcp
41
+ ```
42
+
35
43
  ## Redaction Contract
36
44
 
37
45
  The helper redacts terminal content before writing `terminal.txt`, `terminal-ansi.txt`, and - when a rule matches - re-renders the masked stream so `terminal.png` never shows the secret. Built-in rules cover common authorization headers, token/password/key assignments, GitHub tokens, and OpenAI-style `sk-...` tokens.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.1.43",
3
+ "version": "5.1.45",
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",
@@ -120,6 +120,8 @@
120
120
  "build:senpi-plugin": "bun run build:lsp-daemon && bun run build:ast-grep-mcp && bun run build:senpi-plugin:stage",
121
121
  "build:senpi-plugin:native": "node packages/omo-senpi/plugin/scripts/stage-lsp-daemon-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-ast-grep-mcp-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-x-search-skill.mjs && node packages/omo-senpi/plugin/scripts/build-extension.mjs && node packages/omo-senpi/plugin/scripts/build-daemon-launch-spec.mjs && node packages/omo-senpi/plugin/scripts/sync-skills.mjs && node packages/omo-senpi/plugin/scripts/embed-directive.mjs --check && node packages/omo-senpi/plugin/scripts/build-install.mjs",
122
122
  "build:senpi-plugin:stage": "bun run build:materialize-frontend && node packages/omo-senpi/plugin/scripts/stage-lsp-daemon-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-ast-grep-mcp-runtime.mjs && node packages/omo-senpi/plugin/scripts/stage-x-search-skill.mjs && node packages/omo-senpi/plugin/scripts/build-extension.mjs && node packages/omo-senpi/plugin/scripts/build-daemon-launch-spec.mjs && node packages/omo-senpi/plugin/scripts/sync-skills.mjs && node packages/omo-senpi/plugin/scripts/embed-directive.mjs --check && node packages/omo-senpi/plugin/scripts/build-install.mjs",
123
+ "bundle-inputs": "node packages/omo-senpi/plugin/scripts/bundle-inputs.mjs",
124
+ "bundle-inputs:check": "node packages/omo-senpi/plugin/scripts/bundle-inputs.mjs --check",
123
125
  "build:materialize-frontend": "node packages/omo-codex/plugin/scripts/materialize-shared-upstreams.mjs --strict",
124
126
  "build:shared-skills-assets": "bun run build:materialize-frontend && rm -rf dist/skills && cp -R packages/shared-skills/skills dist/skills",
125
127
  "build:lsp-tools-mcp": "npm --prefix packages/lsp-tools-mcp ci && npm --prefix packages/lsp-tools-mcp run build",
@@ -138,7 +140,8 @@
138
140
  "postinstall": "node postinstall.mjs",
139
141
  "prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && bun run build",
140
142
  "test:model-capabilities": "bun test --timeout 20000 packages/model-core/src/model-capability-aliases.test.ts packages/model-core/src/model-capability-guardrails.test.ts packages/model-core/src/model-capabilities.test.ts packages/omo-opencode/src/cli/doctor/checks/model-resolution.test.ts --bail",
141
- "typecheck": "tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
143
+ "check:copy": "bun script/check-copy.ts",
144
+ "typecheck": "bun run check:copy && tsgo --noEmit && bun run typecheck:script && bun run typecheck:packages",
142
145
  "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/isolation-core/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-protocol/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-engine/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-prelude/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-service/tsconfig.json && tsgo --noEmit -p packages/senpi-desktop-tool/tsconfig.json",
143
146
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
144
147
  "test": "bun test --timeout 20000",
@@ -149,7 +152,10 @@
149
152
  "test:windows-codex": "bun run test:codex",
150
153
  "build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
151
154
  "build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build",
152
- "test:desktop": "bun script/check-cargo-pinned-deps.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test"
155
+ "test:desktop": "bun script/check-cargo-pinned-deps.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test",
156
+ "lint:ratchet": "bun script/lint-ratchet.ts",
157
+ "lint:ratchet:update": "bun script/lint-ratchet.ts --update",
158
+ "lint": "bun run check:copy && oxlint packages/lsp-tools-mcp packages/lsp-daemon packages/web packages/omo-codex/plugin/components/comment-checker packages/omo-codex/plugin/components/lazycodex-executor-verify packages/omo-codex/plugin/components/lsp packages/omo-codex/plugin/components/rules packages/omo-codex/plugin/components/telemetry packages/omo-codex/plugin/components/ultrawork packages/omo-codex/plugin/components/ulw-execute-continuation packages/omo-codex/plugin/components/ulw-loop"
153
159
  },
154
160
  "keywords": [
155
161
  "opencode",
@@ -177,7 +183,7 @@
177
183
  },
178
184
  "devDependencies": {
179
185
  "@clack/prompts": "^1.8.1",
180
- "@code-yeongyu/senpi": "2026.10.21-2",
186
+ "@code-yeongyu/senpi": "2026.10.23-1",
181
187
  "@modelcontextprotocol/sdk": "^1.30.0",
182
188
  "@oh-my-opencode/agents-md-core": "workspace:*",
183
189
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -231,6 +237,8 @@
231
237
  "jsonc-parser": "^3.3.1",
232
238
  "node-pty": "^1.1.0",
233
239
  "omowright": "github:code-yeongyu/omowright#f87ef4d63fe7b56fe117dbab246c8ad88dd8a780",
240
+ "oxc-parser": "0.148.0",
241
+ "oxlint": "1.89.0",
234
242
  "picocolors": "^1.1.1",
235
243
  "picomatch": "^4.0.7",
236
244
  "posthog-node": "^5.52.4",
@@ -238,18 +246,18 @@
238
246
  "typescript": "^7.0.2"
239
247
  },
240
248
  "optionalDependencies": {
241
- "oh-my-opencode-darwin-arm64": "5.1.43",
242
- "oh-my-opencode-darwin-x64": "5.1.43",
243
- "oh-my-opencode-darwin-x64-baseline": "5.1.43",
244
- "oh-my-opencode-linux-arm64": "5.1.43",
245
- "oh-my-opencode-linux-arm64-musl": "5.1.43",
246
- "oh-my-opencode-linux-x64": "5.1.43",
247
- "oh-my-opencode-linux-x64-baseline": "5.1.43",
248
- "oh-my-opencode-linux-x64-musl": "5.1.43",
249
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.43",
250
- "oh-my-opencode-windows-arm64": "5.1.43",
251
- "oh-my-opencode-windows-x64": "5.1.43",
252
- "oh-my-opencode-windows-x64-baseline": "5.1.43"
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"
253
261
  },
254
262
  "overrides": {
255
263
  "hono": "^4.13.8",
@@ -166,7 +166,7 @@ function formatInstallOptions(serverId: string, installHint: string): string[] {
166
166
  return ["To install, run:", ` ${installHint}`];
167
167
  }
168
168
  return [
169
- "To install in THIS repository (preferred — no global install needed):",
169
+ "To install in THIS repository (preferred, no global install needed):",
170
170
  ` ${localHint}`,
171
171
  "",
172
172
  "Or install it globally:",
@@ -181,7 +181,7 @@ function formatNotInstalled(result: Extract<ServerLookupResult, { status: "not_i
181
181
  const context = lspRequestContext();
182
182
 
183
183
  if (decision === "declined") {
184
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
184
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
185
185
  }
186
186
 
187
187
  const header = [
@@ -205,7 +205,7 @@ function formatNotInstalled(result: Extract<ServerLookupResult, { status: "not_i
205
205
  ...header,
206
206
  ...installOptions,
207
207
  "",
208
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
208
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
209
209
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines.",
210
210
  ].join("\n");
211
211
  }
@@ -214,7 +214,7 @@ function formatNotInstalled(result: Extract<ServerLookupResult, { status: "not_i
214
214
  ...header,
215
215
  ...installOptions,
216
216
  "",
217
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
217
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
218
218
  "- If the user agrees: run the install command above, then retry this tool.",
219
219
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
220
220
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -34,8 +34,8 @@ function touch(path: string, text = ""): string {
34
34
 
35
35
  const FULL_NUDGE = [
36
36
  "LSP server 'typescript' for .ts is NOT INSTALLED.",
37
- "To install in THIS repository (preferred — no global install needed):",
38
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
37
+ "To install in THIS repository (preferred, no global install needed):",
38
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
39
39
  ].join("\n");
40
40
 
41
41
  function notInstalled(
@@ -4893,7 +4893,7 @@ function formatInstallOptions(serverId, installHint) {
4893
4893
  return ["To install, run:", ` ${installHint}`];
4894
4894
  }
4895
4895
  return [
4896
- "To install in THIS repository (preferred — no global install needed):",
4896
+ "To install in THIS repository (preferred, no global install needed):",
4897
4897
  ` ${localHint}`,
4898
4898
  "",
4899
4899
  "Or install it globally:",
@@ -4906,7 +4906,7 @@ function formatNotInstalled(result) {
4906
4906
  const decision = loadInstallDecision(server.id)?.decision;
4907
4907
  const context = lspRequestContext();
4908
4908
  if (decision === "declined") {
4909
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
4909
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
4910
4910
  }
4911
4911
  const header = [
4912
4912
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -4928,7 +4928,7 @@ function formatNotInstalled(result) {
4928
4928
  ...header,
4929
4929
  ...installOptions,
4930
4930
  "",
4931
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4931
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4932
4932
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
4933
4933
  ].join(`
4934
4934
  `);
@@ -4937,7 +4937,7 @@ function formatNotInstalled(result) {
4937
4937
  ...header,
4938
4938
  ...installOptions,
4939
4939
  "",
4940
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4940
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4941
4941
  "- If the user agrees: run the install command above, then retry this tool.",
4942
4942
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
4943
4943
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -5129,7 +5129,7 @@ function formatInstallOptions(serverId, installHint) {
5129
5129
  return ["To install, run:", ` ${installHint}`];
5130
5130
  }
5131
5131
  return [
5132
- "To install in THIS repository (preferred — no global install needed):",
5132
+ "To install in THIS repository (preferred, no global install needed):",
5133
5133
  ` ${localHint}`,
5134
5134
  "",
5135
5135
  "Or install it globally:",
@@ -5142,7 +5142,7 @@ function formatNotInstalled(result) {
5142
5142
  const decision = loadInstallDecision(server.id)?.decision;
5143
5143
  const context = lspRequestContext();
5144
5144
  if (decision === "declined") {
5145
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
5145
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
5146
5146
  }
5147
5147
  const header = [
5148
5148
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -5164,7 +5164,7 @@ function formatNotInstalled(result) {
5164
5164
  ...header,
5165
5165
  ...installOptions,
5166
5166
  "",
5167
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
5167
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
5168
5168
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
5169
5169
  ].join(`
5170
5170
  `);
@@ -5173,7 +5173,7 @@ function formatNotInstalled(result) {
5173
5173
  ...header,
5174
5174
  ...installOptions,
5175
5175
  "",
5176
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
5176
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
5177
5177
  "- If the user agrees: run the install command above, then retry this tool.",
5178
5178
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
5179
5179
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -5124,7 +5124,7 @@ function formatInstallOptions(serverId, installHint) {
5124
5124
  return ["To install, run:", ` ${installHint}`];
5125
5125
  }
5126
5126
  return [
5127
- "To install in THIS repository (preferred — no global install needed):",
5127
+ "To install in THIS repository (preferred, no global install needed):",
5128
5128
  ` ${localHint}`,
5129
5129
  "",
5130
5130
  "Or install it globally:",
@@ -5137,7 +5137,7 @@ function formatNotInstalled(result) {
5137
5137
  const decision = loadInstallDecision(server.id)?.decision;
5138
5138
  const context = lspRequestContext();
5139
5139
  if (decision === "declined") {
5140
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
5140
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
5141
5141
  }
5142
5142
  const header = [
5143
5143
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -5159,7 +5159,7 @@ function formatNotInstalled(result) {
5159
5159
  ...header,
5160
5160
  ...installOptions,
5161
5161
  "",
5162
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
5162
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
5163
5163
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
5164
5164
  ].join(`
5165
5165
  `);
@@ -5168,7 +5168,7 @@ function formatNotInstalled(result) {
5168
5168
  ...header,
5169
5169
  ...installOptions,
5170
5170
  "",
5171
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
5171
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
5172
5172
  "- If the user agrees: run the install command above, then retry this tool.",
5173
5173
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
5174
5174
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -30,9 +30,9 @@
30
30
  "test": "vitest --run",
31
31
  "test:watch": "vitest",
32
32
  "typecheck": "tsc --noEmit",
33
- "lint": "biome check .",
34
- "lint:fix": "biome check --write .",
35
- "check": "tsc --noEmit && biome check . && npm run build"
33
+ "lint": "biome format .",
34
+ "lint:fix": "biome format --write .",
35
+ "check": "tsc --noEmit && biome format . && npm run build"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@vitest/coverage-v8": "5.0.1",
@@ -4462,7 +4462,7 @@ function formatInstallOptions(serverId, installHint) {
4462
4462
  return ["To install, run:", ` ${installHint}`];
4463
4463
  }
4464
4464
  return [
4465
- "To install in THIS repository (preferred — no global install needed):",
4465
+ "To install in THIS repository (preferred, no global install needed):",
4466
4466
  ` ${localHint}`,
4467
4467
  "",
4468
4468
  "Or install it globally:",
@@ -4475,7 +4475,7 @@ function formatNotInstalled(result) {
4475
4475
  const decision = loadInstallDecision(server.id)?.decision;
4476
4476
  const context = lspRequestContext();
4477
4477
  if (decision === "declined") {
4478
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
4478
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
4479
4479
  }
4480
4480
  const header = [
4481
4481
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -4497,7 +4497,7 @@ function formatNotInstalled(result) {
4497
4497
  ...header,
4498
4498
  ...installOptions,
4499
4499
  "",
4500
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4500
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4501
4501
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
4502
4502
  ].join(`
4503
4503
  `);
@@ -4506,7 +4506,7 @@ function formatNotInstalled(result) {
4506
4506
  ...header,
4507
4507
  ...installOptions,
4508
4508
  "",
4509
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4509
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4510
4510
  "- If the user agrees: run the install command above, then retry this tool.",
4511
4511
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
4512
4512
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -4458,7 +4458,7 @@ function formatInstallOptions(serverId, installHint) {
4458
4458
  return ["To install, run:", ` ${installHint}`];
4459
4459
  }
4460
4460
  return [
4461
- "To install in THIS repository (preferred — no global install needed):",
4461
+ "To install in THIS repository (preferred, no global install needed):",
4462
4462
  ` ${localHint}`,
4463
4463
  "",
4464
4464
  "Or install it globally:",
@@ -4471,7 +4471,7 @@ function formatNotInstalled(result) {
4471
4471
  const decision = loadInstallDecision(server.id)?.decision;
4472
4472
  const context = lspRequestContext();
4473
4473
  if (decision === "declined") {
4474
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
4474
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
4475
4475
  }
4476
4476
  const header = [
4477
4477
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -4493,7 +4493,7 @@ function formatNotInstalled(result) {
4493
4493
  ...header,
4494
4494
  ...installOptions,
4495
4495
  "",
4496
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4496
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4497
4497
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
4498
4498
  ].join(`
4499
4499
  `);
@@ -4502,7 +4502,7 @@ function formatNotInstalled(result) {
4502
4502
  ...header,
4503
4503
  ...installOptions,
4504
4504
  "",
4505
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4505
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4506
4506
  "- If the user agrees: run the install command above, then retry this tool.",
4507
4507
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
4508
4508
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -4146,7 +4146,7 @@ function formatInstallOptions(serverId, installHint) {
4146
4146
  return ["To install, run:", ` ${installHint}`];
4147
4147
  }
4148
4148
  return [
4149
- "To install in THIS repository (preferred — no global install needed):",
4149
+ "To install in THIS repository (preferred, no global install needed):",
4150
4150
  ` ${localHint}`,
4151
4151
  "",
4152
4152
  "Or install it globally:",
@@ -4159,7 +4159,7 @@ function formatNotInstalled(result) {
4159
4159
  const decision = loadInstallDecision(server.id)?.decision;
4160
4160
  const context = lspRequestContext();
4161
4161
  if (decision === "declined") {
4162
- return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation — proceed without LSP.`;
4162
+ return `LSP server '${server.id}' (${extensions}) is NOT INSTALLED; user previously declined installation: proceed without LSP.`;
4163
4163
  }
4164
4164
  const header = [
4165
4165
  `LSP server '${server.id}' for ${extensions} is NOT INSTALLED.`,
@@ -4181,7 +4181,7 @@ function formatNotInstalled(result) {
4181
4181
  ...header,
4182
4182
  ...installOptions,
4183
4183
  "",
4184
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4184
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4185
4185
  "Install-decision recording is unavailable in this harness; proceed without LSP if the user declines."
4186
4186
  ].join(`
4187
4187
  `);
@@ -4190,7 +4190,7 @@ function formatNotInstalled(result) {
4190
4190
  ...header,
4191
4191
  ...installOptions,
4192
4192
  "",
4193
- "ACTION REQUIRED — ASK THE USER whether to install this LSP server.",
4193
+ "ACTION REQUIRED: ASK THE USER whether to install this LSP server.",
4194
4194
  "- If the user agrees: run the install command above, then retry this tool.",
4195
4195
  "- If the user declines, OR has NOT explicitly asked for LSP installation:",
4196
4196
  ` call lsp_install_decision { server_id: "${server.id}", decision: "declined" },`,
@@ -36,9 +36,9 @@
36
36
  "test": "vitest --run",
37
37
  "test:watch": "vitest",
38
38
  "typecheck": "tsc --noEmit",
39
- "lint": "biome check .",
40
- "lint:fix": "biome check --write .",
41
- "check": "tsc --noEmit && biome check . && npm run build"
39
+ "lint": "biome format .",
40
+ "lint:fix": "biome format --write .",
41
+ "check": "tsc --noEmit && biome format . && npm run build"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@vitest/coverage-v8": "5.0.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.1.43",
3
+ "version": "5.1.45",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",