oh-my-opencode 4.5.1 → 4.6.0

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 (668) hide show
  1. package/.agents/skills/opencode-qa/SKILL.md +194 -0
  2. package/.agents/skills/opencode-qa/references/cli-commands.md +188 -0
  3. package/.agents/skills/opencode-qa/references/db-investigation.md +197 -0
  4. package/.agents/skills/opencode-qa/references/events-hooks.md +110 -0
  5. package/.agents/skills/opencode-qa/references/sdk.md +96 -0
  6. package/.agents/skills/opencode-qa/references/server-api.md +200 -0
  7. package/.agents/skills/opencode-qa/references/testing-harness.md +218 -0
  8. package/.agents/skills/opencode-qa/references/tui-tmux.md +52 -0
  9. package/.agents/skills/opencode-qa/scripts/db-session-by-id.sh +53 -0
  10. package/.agents/skills/opencode-qa/scripts/db-session-by-name.sh +57 -0
  11. package/.agents/skills/opencode-qa/scripts/db-session-by-text.sh +158 -0
  12. package/.agents/skills/opencode-qa/scripts/export-roundtrip.sh +57 -0
  13. package/.agents/skills/opencode-qa/scripts/lib/common.sh +216 -0
  14. package/.agents/skills/opencode-qa/scripts/server-smoke.sh +64 -0
  15. package/.agents/skills/opencode-qa/scripts/sse-hook-probe.sh +106 -0
  16. package/.agents/skills/opencode-qa/scripts/tui-smoke.sh +89 -0
  17. package/README.ja.md +43 -18
  18. package/README.ko.md +43 -18
  19. package/README.md +92 -24
  20. package/README.ru.md +43 -18
  21. package/README.zh-cn.md +55 -24
  22. package/bin/oh-my-opencode.js +49 -3
  23. package/bin/oh-my-opencode.test.ts +202 -0
  24. package/bin/platform.d.ts +7 -1
  25. package/bin/platform.js +23 -4
  26. package/bin/platform.test.ts +97 -10
  27. package/dist/cli/cleanup-command.d.ts +4 -0
  28. package/dist/cli/cleanup.d.ts +11 -0
  29. package/dist/cli/cli-program.d.ts +19 -0
  30. package/dist/cli/index.js +30085 -26385
  31. package/dist/cli/install-codex/codex-cache-bundled-mcps.d.ts +5 -0
  32. package/dist/cli/install-codex/codex-cache-command-shim.d.ts +1 -0
  33. package/dist/cli/install-codex/codex-cache-legacy-bins.d.ts +3 -0
  34. package/dist/cli/install-codex/codex-cache-local-dependencies.d.ts +1 -0
  35. package/dist/cli/install-codex/codex-cache-paths.d.ts +2 -0
  36. package/dist/cli/install-codex/codex-cache.d.ts +32 -0
  37. package/dist/cli/install-codex/codex-cleanup-config.d.ts +6 -0
  38. package/dist/cli/install-codex/codex-cleanup.d.ts +21 -0
  39. package/dist/cli/install-codex/codex-config-mcp.d.ts +1 -0
  40. package/dist/cli/install-codex/codex-config-permissions.d.ts +1 -0
  41. package/dist/cli/install-codex/codex-config-reasoning.d.ts +1 -0
  42. package/dist/cli/install-codex/codex-config-toml.d.ts +12 -0
  43. package/dist/cli/install-codex/codex-hook-trust.d.ts +6 -0
  44. package/dist/cli/install-codex/codex-installation-detection.d.ts +36 -0
  45. package/dist/cli/install-codex/codex-marketplace-snapshot.d.ts +15 -0
  46. package/dist/cli/install-codex/codex-marketplace.d.ts +9 -0
  47. package/dist/cli/install-codex/codex-multi-agent-v2-config.d.ts +1 -0
  48. package/dist/cli/install-codex/codex-package-layout.d.ts +1 -0
  49. package/dist/cli/install-codex/codex-process.d.ts +2 -0
  50. package/dist/cli/install-codex/codex-project-local-cleanup-best-effort.d.ts +7 -0
  51. package/dist/cli/install-codex/codex-project-local-cleanup.d.ts +35 -0
  52. package/dist/cli/install-codex/git-bash.d.ts +35 -0
  53. package/dist/cli/install-codex/index.d.ts +11 -0
  54. package/dist/cli/install-codex/install-codex.d.ts +17 -0
  55. package/dist/cli/install-codex/link-cached-plugin-agents.d.ts +12 -0
  56. package/dist/cli/install-codex/toml-section-editor.d.ts +11 -0
  57. package/dist/cli/install-codex/types.d.ts +76 -0
  58. package/dist/cli/run/event-state.d.ts +1 -0
  59. package/dist/cli/run/poll-for-completion.d.ts +1 -0
  60. package/dist/cli/run/prompt-start.d.ts +7 -0
  61. package/dist/cli/star-request.d.ts +11 -0
  62. package/dist/cli/tui-install-prompts.d.ts +3 -2
  63. package/dist/cli/types.d.ts +8 -0
  64. package/dist/config/schema/agent-names.d.ts +4 -1
  65. package/dist/config/schema/commands.d.ts +1 -2
  66. package/dist/config/schema/hooks.d.ts +0 -1
  67. package/dist/config/schema/oh-my-opencode-config.d.ts +5 -3
  68. package/dist/create-hooks.d.ts +0 -1
  69. package/dist/create-managers.d.ts +1 -0
  70. package/dist/features/background-agent/parent-wake-message-activity.d.ts +23 -0
  71. package/dist/features/background-agent/parent-wake-notifier.d.ts +0 -1
  72. package/dist/features/boulder-state/storage.d.ts +1 -1
  73. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  74. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +2 -2
  75. package/dist/features/builtin-commands/types.d.ts +1 -1
  76. package/dist/features/builtin-skills/skill-file-loader.d.ts +4 -0
  77. package/dist/features/builtin-skills/skills/debugging.d.ts +2 -0
  78. package/dist/features/builtin-skills/skills/index.d.ts +5 -1
  79. package/dist/features/builtin-skills/skills/init-deep.d.ts +2 -0
  80. package/dist/features/builtin-skills/skills/remove-ai-slops.d.ts +2 -0
  81. package/dist/features/builtin-skills/skills/security-research.d.ts +2 -0
  82. package/dist/features/builtin-skills/skills/security-review.d.ts +2 -0
  83. package/dist/features/opencode-runtime-skills/index.d.ts +2 -0
  84. package/dist/features/opencode-runtime-skills/runtime-skill-config.d.ts +17 -0
  85. package/dist/features/opencode-runtime-skills/skill-markdown.d.ts +7 -0
  86. package/dist/features/opencode-runtime-skills/source-server.d.ts +8 -0
  87. package/dist/hooks/claude-code-hooks/hook-text.d.ts +2 -0
  88. package/dist/hooks/index.d.ts +0 -1
  89. package/dist/hooks/session-recovery/storage/latest-assistant-message.d.ts +5 -0
  90. package/dist/hooks/session-recovery/storage/thinking-prepend.d.ts +3 -0
  91. package/dist/hooks/thinking-block-validator/hook.d.ts +0 -18
  92. package/dist/hooks/todo-continuation-enforcer/pending-question-detection.d.ts +4 -0
  93. package/dist/index.js +1949 -1913
  94. package/dist/oh-my-opencode.schema.json +4 -2
  95. package/dist/plugin/hooks/create-core-hooks.d.ts +0 -1
  96. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -2
  97. package/dist/plugin/messages-transform.d.ts +8 -1
  98. package/dist/plugin/user-abort-interrupted-recovery-guard.d.ts +6 -0
  99. package/dist/plugin-handlers/config-handler.d.ts +2 -1
  100. package/dist/shared/external-plugin-detector.d.ts +8 -0
  101. package/dist/shared/prompt-async-gate/message-inspection-error.d.ts +1 -0
  102. package/dist/shared/prompt-async-gate/pending-tool-turn.d.ts +1 -0
  103. package/dist/shared/prompt-async-gate/prompt-message-state.d.ts +8 -0
  104. package/dist/shared/prompt-async-gate/recent-dispatches.d.ts +14 -0
  105. package/dist/shared/prompt-async-gate/semantic-dedupe.d.ts +7 -0
  106. package/dist/shared/prompt-async-gate/session-idle-dispatch.d.ts +1 -0
  107. package/dist/shared/prompt-async-gate/timing.d.ts +1 -0
  108. package/dist/shared/prompt-async-gate/types.d.ts +2 -0
  109. package/dist/shared/prompt-async-gate.d.ts +1 -1
  110. package/dist/shared/prompt-timeout-context.d.ts +2 -0
  111. package/dist/testing/create-plugin-module.d.ts +5 -1
  112. package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -2
  113. package/package.json +38 -18
  114. package/packages/ast-grep-mcp/dist/cli.js +245 -40
  115. package/packages/git-bash-mcp/dist/cli.js +367 -0
  116. package/packages/lsp-tools-mcp/dist/cli.js +1 -1
  117. package/packages/omo-codex/marketplace.json +17 -0
  118. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +35 -0
  119. package/packages/omo-codex/plugin/.mcp.json +25 -0
  120. package/packages/omo-codex/plugin/README.md +13 -0
  121. package/packages/omo-codex/plugin/components/comment-checker/.gitattributes +13 -0
  122. package/packages/omo-codex/plugin/components/comment-checker/.github/CODEOWNERS +12 -0
  123. package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/bug.yml +40 -0
  124. package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/feature.yml +27 -0
  125. package/packages/omo-codex/plugin/components/comment-checker/.github/branch-ruleset.json +45 -0
  126. package/packages/omo-codex/plugin/components/comment-checker/.github/dependabot.yml +16 -0
  127. package/packages/omo-codex/plugin/components/comment-checker/.github/pull_request_template.md +19 -0
  128. package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/ci.yml +47 -0
  129. package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/publish.yml +51 -0
  130. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +35 -0
  131. package/packages/omo-codex/plugin/components/comment-checker/CHANGELOG.md +33 -0
  132. package/packages/omo-codex/plugin/components/comment-checker/LICENSE +21 -0
  133. package/packages/omo-codex/plugin/components/comment-checker/NOTICE +6 -0
  134. package/packages/omo-codex/plugin/components/comment-checker/README.md +87 -0
  135. package/packages/omo-codex/plugin/components/comment-checker/biome.json +48 -0
  136. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +17 -0
  137. package/packages/omo-codex/plugin/components/comment-checker/package.json +57 -0
  138. package/packages/omo-codex/plugin/components/comment-checker/skills/comment-checker/SKILL.md +16 -0
  139. package/packages/omo-codex/plugin/components/comment-checker/src/cli.ts +12 -0
  140. package/packages/omo-codex/plugin/components/comment-checker/src/codex-hook.ts +205 -0
  141. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +361 -0
  142. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +195 -0
  143. package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook-newline.test.ts +52 -0
  144. package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook.test.ts +368 -0
  145. package/packages/omo-codex/plugin/components/comment-checker/test/fixtures/post-tool-use.json +15 -0
  146. package/packages/omo-codex/plugin/components/comment-checker/test/package-smoke.test.ts +93 -0
  147. package/packages/omo-codex/plugin/components/comment-checker/test/runner.test.ts +66 -0
  148. package/packages/omo-codex/plugin/components/comment-checker/tsconfig.build.json +12 -0
  149. package/packages/omo-codex/plugin/components/comment-checker/tsconfig.json +27 -0
  150. package/packages/omo-codex/plugin/components/comment-checker/vitest.config.ts +9 -0
  151. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +29 -0
  152. package/packages/omo-codex/plugin/components/git-bash/package.json +23 -0
  153. package/packages/omo-codex/plugin/components/git-bash/src/cli.ts +33 -0
  154. package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +180 -0
  155. package/packages/omo-codex/plugin/components/git-bash/src/index.ts +10 -0
  156. package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +195 -0
  157. package/packages/omo-codex/plugin/components/git-bash/tsconfig.build.json +13 -0
  158. package/packages/omo-codex/plugin/components/git-bash/tsconfig.json +25 -0
  159. package/packages/omo-codex/plugin/components/lsp/.gitattributes +13 -0
  160. package/packages/omo-codex/plugin/components/lsp/.github/CODEOWNERS +1 -0
  161. package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml +26 -0
  162. package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml +19 -0
  163. package/packages/omo-codex/plugin/components/lsp/.github/branch-ruleset.json +45 -0
  164. package/packages/omo-codex/plugin/components/lsp/.github/dependabot.yml +11 -0
  165. package/packages/omo-codex/plugin/components/lsp/.github/pull_request_template.md +11 -0
  166. package/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml +56 -0
  167. package/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml +60 -0
  168. package/packages/omo-codex/plugin/components/lsp/.mcp.json +9 -0
  169. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +25 -0
  170. package/packages/omo-codex/plugin/components/lsp/CHANGELOG.md +25 -0
  171. package/packages/omo-codex/plugin/components/lsp/LICENSE +21 -0
  172. package/packages/omo-codex/plugin/components/lsp/NOTICE +3 -0
  173. package/packages/omo-codex/plugin/components/lsp/README.md +148 -0
  174. package/packages/omo-codex/plugin/components/lsp/biome.json +48 -0
  175. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +17 -0
  176. package/packages/omo-codex/plugin/components/lsp/package.json +64 -0
  177. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +46 -0
  178. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.test.mjs +104 -0
  179. package/packages/omo-codex/plugin/components/lsp/scripts/clean-dist.mjs +5 -0
  180. package/packages/omo-codex/plugin/components/lsp/scripts/test.mjs +8 -0
  181. package/packages/omo-codex/plugin/components/lsp/skills/lsp/SKILL.md +35 -0
  182. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +44 -0
  183. package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +33 -0
  184. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +277 -0
  185. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-cli.test.ts +28 -0
  186. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-errors.test.ts +55 -0
  187. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +358 -0
  188. package/packages/omo-codex/plugin/components/lsp/test/fixtures/broken.py +1 -0
  189. package/packages/omo-codex/plugin/components/lsp/test/fixtures/post-tool-use.json +15 -0
  190. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +155 -0
  191. package/packages/omo-codex/plugin/components/lsp/tsconfig.build.json +12 -0
  192. package/packages/omo-codex/plugin/components/lsp/tsconfig.json +27 -0
  193. package/packages/omo-codex/plugin/components/lsp/vitest.config.ts +9 -0
  194. package/packages/omo-codex/plugin/components/rules/.codex-plugin/plugin.json +3 -0
  195. package/packages/omo-codex/plugin/components/rules/.gitattributes +13 -0
  196. package/packages/omo-codex/plugin/components/rules/.github/CODEOWNERS +12 -0
  197. package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/bug.yml +49 -0
  198. package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/feature.yml +27 -0
  199. package/packages/omo-codex/plugin/components/rules/.github/branch-ruleset.json +45 -0
  200. package/packages/omo-codex/plugin/components/rules/.github/dependabot.yml +16 -0
  201. package/packages/omo-codex/plugin/components/rules/.github/pull_request_template.md +20 -0
  202. package/packages/omo-codex/plugin/components/rules/.github/workflows/ci.yml +47 -0
  203. package/packages/omo-codex/plugin/components/rules/.github/workflows/publish.yml +51 -0
  204. package/packages/omo-codex/plugin/components/rules/AGENTS.md +34 -0
  205. package/packages/omo-codex/plugin/components/rules/CHANGELOG.md +19 -0
  206. package/packages/omo-codex/plugin/components/rules/LICENSE +21 -0
  207. package/packages/omo-codex/plugin/components/rules/NOTICE +15 -0
  208. package/packages/omo-codex/plugin/components/rules/README.md +124 -0
  209. package/packages/omo-codex/plugin/components/rules/biome.json +48 -0
  210. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +209 -0
  211. package/packages/omo-codex/plugin/components/rules/bundled-rules/windows-git-bash.md +10 -0
  212. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +54 -0
  213. package/packages/omo-codex/plugin/components/rules/package.json +62 -0
  214. package/packages/omo-codex/plugin/components/rules/scripts/bench-codex-rules.mjs +268 -0
  215. package/packages/omo-codex/plugin/components/rules/skills/rules/SKILL.md +34 -0
  216. package/packages/omo-codex/plugin/components/rules/src/cli.ts +143 -0
  217. package/packages/omo-codex/plugin/components/rules/src/codex-hook-options.ts +4 -0
  218. package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +238 -0
  219. package/packages/omo-codex/plugin/components/rules/src/config.ts +107 -0
  220. package/packages/omo-codex/plugin/components/rules/src/context-pressure.ts +26 -0
  221. package/packages/omo-codex/plugin/components/rules/src/debug-log.ts +65 -0
  222. package/packages/omo-codex/plugin/components/rules/src/dynamic-target-fingerprints.ts +98 -0
  223. package/packages/omo-codex/plugin/components/rules/src/hook-output.ts +19 -0
  224. package/packages/omo-codex/plugin/components/rules/src/path-utils.ts +29 -0
  225. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +234 -0
  226. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +104 -0
  227. package/packages/omo-codex/plugin/components/rules/src/post-compact-claim.ts +13 -0
  228. package/packages/omo-codex/plugin/components/rules/src/post-compact-state.ts +45 -0
  229. package/packages/omo-codex/plugin/components/rules/src/rules/cache.ts +64 -0
  230. package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +115 -0
  231. package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +535 -0
  232. package/packages/omo-codex/plugin/components/rules/src/rules/errors.ts +13 -0
  233. package/packages/omo-codex/plugin/components/rules/src/rules/finder-cache.ts +73 -0
  234. package/packages/omo-codex/plugin/components/rules/src/rules/finder-paths.ts +47 -0
  235. package/packages/omo-codex/plugin/components/rules/src/rules/finder-sources.ts +50 -0
  236. package/packages/omo-codex/plugin/components/rules/src/rules/finder.ts +207 -0
  237. package/packages/omo-codex/plugin/components/rules/src/rules/formatter.ts +123 -0
  238. package/packages/omo-codex/plugin/components/rules/src/rules/matcher.ts +142 -0
  239. package/packages/omo-codex/plugin/components/rules/src/rules/ordering.ts +33 -0
  240. package/packages/omo-codex/plugin/components/rules/src/rules/parser.ts +326 -0
  241. package/packages/omo-codex/plugin/components/rules/src/rules/plugin-root.ts +55 -0
  242. package/packages/omo-codex/plugin/components/rules/src/rules/project-root.ts +30 -0
  243. package/packages/omo-codex/plugin/components/rules/src/rules/scanner.ts +162 -0
  244. package/packages/omo-codex/plugin/components/rules/src/rules/truncator.ts +67 -0
  245. package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +141 -0
  246. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +24 -0
  247. package/packages/omo-codex/plugin/components/rules/src/session-state-lock.ts +47 -0
  248. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +56 -0
  249. package/packages/omo-codex/plugin/components/rules/src/tool-paths.ts +192 -0
  250. package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +44 -0
  251. package/packages/omo-codex/plugin/components/rules/src/transcript-search.ts +108 -0
  252. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +107 -0
  253. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +268 -0
  254. package/packages/omo-codex/plugin/components/rules/test/codex-hook-context-pressure.test.ts +243 -0
  255. package/packages/omo-codex/plugin/components/rules/test/codex-hook-performance.test.ts +99 -0
  256. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +132 -0
  257. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +156 -0
  258. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +299 -0
  259. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-lock.test.ts +46 -0
  260. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-process.test.ts +83 -0
  261. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +667 -0
  262. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +192 -0
  263. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +102 -0
  264. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +168 -0
  265. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +42 -0
  266. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +206 -0
  267. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +153 -0
  268. package/packages/omo-codex/plugin/components/rules/test/persistent-cache.test.ts +63 -0
  269. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +172 -0
  270. package/packages/omo-codex/plugin/components/rules/test/post-compact-test-fixture.ts +196 -0
  271. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +63 -0
  272. package/packages/omo-codex/plugin/components/rules/test/tool-paths.test.ts +198 -0
  273. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +97 -0
  274. package/packages/omo-codex/plugin/components/rules/tsconfig.build.json +12 -0
  275. package/packages/omo-codex/plugin/components/rules/tsconfig.json +27 -0
  276. package/packages/omo-codex/plugin/components/rules/vitest.config.ts +8 -0
  277. package/packages/omo-codex/plugin/components/start-work-continuation/.gitattributes +13 -0
  278. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +43 -0
  279. package/packages/omo-codex/plugin/components/start-work-continuation/CHANGELOG.md +5 -0
  280. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +21 -0
  281. package/packages/omo-codex/plugin/components/start-work-continuation/NOTICE +5 -0
  282. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +55 -0
  283. package/packages/omo-codex/plugin/components/start-work-continuation/biome.json +48 -0
  284. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +52 -0
  285. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +28 -0
  286. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +53 -0
  287. package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +167 -0
  288. package/packages/omo-codex/plugin/components/start-work-continuation/src/cli.ts +52 -0
  289. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +66 -0
  290. package/packages/omo-codex/plugin/components/start-work-continuation/src/directive.ts +6 -0
  291. package/packages/omo-codex/plugin/components/start-work-continuation/src/index.ts +5 -0
  292. package/packages/omo-codex/plugin/components/start-work-continuation/src/types.ts +23 -0
  293. package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +63 -0
  294. package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +124 -0
  295. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +182 -0
  296. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-completed.json +19 -0
  297. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-mixed-platforms.json +27 -0
  298. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-single-codex-work.json +19 -0
  299. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-all-done.md +5 -0
  300. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-nested-checkboxes.md +11 -0
  301. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-unchecked.md +6 -0
  302. package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.build.json +12 -0
  303. package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.json +27 -0
  304. package/packages/omo-codex/plugin/components/start-work-continuation/vitest.config.ts +10 -0
  305. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +37 -0
  306. package/packages/omo-codex/plugin/components/telemetry/README.md +102 -0
  307. package/packages/omo-codex/plugin/components/telemetry/biome.json +48 -0
  308. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +16 -0
  309. package/packages/omo-codex/plugin/components/telemetry/package.json +56 -0
  310. package/packages/omo-codex/plugin/components/telemetry/src/atomic-write.ts +22 -0
  311. package/packages/omo-codex/plugin/components/telemetry/src/cli.ts +69 -0
  312. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +49 -0
  313. package/packages/omo-codex/plugin/components/telemetry/src/data-path.ts +45 -0
  314. package/packages/omo-codex/plugin/components/telemetry/src/env-flags.ts +43 -0
  315. package/packages/omo-codex/plugin/components/telemetry/src/posthog-activity-state.ts +81 -0
  316. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +165 -0
  317. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +35 -0
  318. package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +270 -0
  319. package/packages/omo-codex/plugin/components/telemetry/tsconfig.build.json +12 -0
  320. package/packages/omo-codex/plugin/components/telemetry/tsconfig.json +27 -0
  321. package/packages/omo-codex/plugin/components/telemetry/vitest.config.ts +8 -0
  322. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +41 -0
  323. package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +25 -0
  324. package/packages/omo-codex/plugin/components/ultrawork/LICENSE +21 -0
  325. package/packages/omo-codex/plugin/components/ultrawork/NOTICE +5 -0
  326. package/packages/omo-codex/plugin/components/ultrawork/README.md +60 -0
  327. package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +18 -0
  328. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +82 -0
  329. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +222 -0
  330. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +65 -0
  331. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +69 -0
  332. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +164 -0
  333. package/packages/omo-codex/plugin/components/ultrawork/biome.json +48 -0
  334. package/packages/omo-codex/plugin/components/ultrawork/directive.md +290 -0
  335. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +16 -0
  336. package/packages/omo-codex/plugin/components/ultrawork/package.json +54 -0
  337. package/packages/omo-codex/plugin/components/ultrawork/src/cli.ts +50 -0
  338. package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +84 -0
  339. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +3 -0
  340. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +275 -0
  341. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +103 -0
  342. package/packages/omo-codex/plugin/components/ultrawork/tsconfig.build.json +12 -0
  343. package/packages/omo-codex/plugin/components/ultrawork/tsconfig.json +27 -0
  344. package/packages/omo-codex/plugin/components/ulw-loop/.gitattributes +13 -0
  345. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +48 -0
  346. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +7 -0
  347. package/packages/omo-codex/plugin/components/ulw-loop/LICENSE +21 -0
  348. package/packages/omo-codex/plugin/components/ulw-loop/NOTICE +6 -0
  349. package/packages/omo-codex/plugin/components/ulw-loop/README.md +74 -0
  350. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +48 -0
  351. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +29 -0
  352. package/packages/omo-codex/plugin/components/ulw-loop/package.json +55 -0
  353. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/.gitkeep +0 -0
  354. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +44 -0
  355. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/agents/openai.yaml +6 -0
  356. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +230 -0
  357. package/packages/omo-codex/plugin/components/ulw-loop/src/.gitkeep +0 -0
  358. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +155 -0
  359. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +95 -0
  360. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +156 -0
  361. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +63 -0
  362. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +94 -0
  363. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +40 -0
  364. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +129 -0
  365. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +139 -0
  366. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +177 -0
  367. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +122 -0
  368. package/packages/omo-codex/plugin/components/ulw-loop/src/goal-status.ts +88 -0
  369. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +73 -0
  370. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +113 -0
  371. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +124 -0
  372. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +102 -0
  373. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +81 -0
  374. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +270 -0
  375. package/packages/omo-codex/plugin/components/ulw-loop/src/types.ts +277 -0
  376. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +213 -0
  377. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +375 -0
  378. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +250 -0
  379. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering.test.ts +407 -0
  380. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +169 -0
  381. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +156 -0
  382. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +275 -0
  383. package/packages/omo-codex/plugin/components/ulw-loop/test/evidence-criteria-gate.test.ts +100 -0
  384. package/packages/omo-codex/plugin/components/ulw-loop/test/evidence.test.ts +263 -0
  385. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/.gitkeep +0 -0
  386. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/codex-goal-snapshot.json +1 -0
  387. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-brief.md +5 -0
  388. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-plan.json +108 -0
  389. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-quality-gate.json +18 -0
  390. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/steering-proposal.json +8 -0
  391. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/user-prompt-submit.json +10 -0
  392. package/packages/omo-codex/plugin/components/ulw-loop/test/goal-status.test.ts +327 -0
  393. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +261 -0
  394. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +62 -0
  395. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-crud.test.ts +256 -0
  396. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +239 -0
  397. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +203 -0
  398. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +180 -0
  399. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +353 -0
  400. package/packages/omo-codex/plugin/components/ulw-loop/test/types.test.ts +79 -0
  401. package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.build.json +12 -0
  402. package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.json +27 -0
  403. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +10 -0
  404. package/packages/omo-codex/plugin/hooks/hooks.json +160 -0
  405. package/packages/omo-codex/plugin/package-lock.json +1769 -0
  406. package/packages/omo-codex/plugin/package.json +28 -0
  407. package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +65 -0
  408. package/packages/omo-codex/plugin/scripts/build-components.mjs +24 -0
  409. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +46 -0
  410. package/packages/omo-codex/plugin/scripts/sync-hook-status-messages.mjs +87 -0
  411. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +75 -0
  412. package/packages/omo-codex/plugin/skills/comment-checker/SKILL.md +16 -0
  413. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +116 -0
  414. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +108 -0
  415. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +130 -0
  416. package/packages/omo-codex/plugin/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
  417. package/packages/omo-codex/plugin/skills/debugging/references/methodology/05-escalate.md +69 -0
  418. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +116 -0
  419. package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +94 -0
  420. package/packages/omo-codex/plugin/skills/debugging/references/methodology/09-cleanup.md +164 -0
  421. package/packages/omo-codex/plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
  422. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  423. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +252 -0
  424. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +484 -0
  425. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +260 -0
  426. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +248 -0
  427. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +234 -0
  428. package/packages/omo-codex/plugin/skills/debugging/references/tools/ghidra.md +212 -0
  429. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +194 -0
  430. package/packages/omo-codex/plugin/skills/debugging/references/tools/pwndbg.md +263 -0
  431. package/packages/omo-codex/plugin/skills/debugging/references/tools/pwntools.md +265 -0
  432. package/packages/omo-codex/plugin/skills/frontend-ui-ux/SKILL.md +77 -0
  433. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +325 -0
  434. package/packages/omo-codex/plugin/skills/lsp/SKILL.md +35 -0
  435. package/packages/omo-codex/plugin/skills/programming/SKILL.md +463 -0
  436. package/packages/omo-codex/plugin/skills/programming/references/go/README.md +90 -0
  437. package/packages/omo-codex/plugin/skills/programming/references/go/backend-stack.md +641 -0
  438. package/packages/omo-codex/plugin/skills/programming/references/go/bootstrap.md +328 -0
  439. package/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md +360 -0
  440. package/packages/omo-codex/plugin/skills/programming/references/go/cobra-stack.md +468 -0
  441. package/packages/omo-codex/plugin/skills/programming/references/go/concurrency.md +362 -0
  442. package/packages/omo-codex/plugin/skills/programming/references/go/data-modeling.md +329 -0
  443. package/packages/omo-codex/plugin/skills/programming/references/go/error-handling.md +359 -0
  444. package/packages/omo-codex/plugin/skills/programming/references/go/golangci-strict.md +236 -0
  445. package/packages/omo-codex/plugin/skills/programming/references/go/grpc-connect.md +375 -0
  446. package/packages/omo-codex/plugin/skills/programming/references/go/libraries.md +337 -0
  447. package/packages/omo-codex/plugin/skills/programming/references/go/one-liners.md +202 -0
  448. package/packages/omo-codex/plugin/skills/programming/references/go/sqlc-pgx.md +471 -0
  449. package/packages/omo-codex/plugin/skills/programming/references/go/testing.md +467 -0
  450. package/packages/omo-codex/plugin/skills/programming/references/go/type-patterns.md +298 -0
  451. package/packages/omo-codex/plugin/skills/programming/references/python/README.md +314 -0
  452. package/packages/omo-codex/plugin/skills/programming/references/python/async-anyio.md +442 -0
  453. package/packages/omo-codex/plugin/skills/programming/references/python/data-modeling.md +233 -0
  454. package/packages/omo-codex/plugin/skills/programming/references/python/data-processing.md +133 -0
  455. package/packages/omo-codex/plugin/skills/programming/references/python/error-handling.md +218 -0
  456. package/packages/omo-codex/plugin/skills/programming/references/python/fastapi-stack.md +316 -0
  457. package/packages/omo-codex/plugin/skills/programming/references/python/httpx2-optimization.md +360 -0
  458. package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +307 -0
  459. package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +268 -0
  460. package/packages/omo-codex/plugin/skills/programming/references/python/orjson-stack.md +378 -0
  461. package/packages/omo-codex/plugin/skills/programming/references/python/pydantic-ai.md +285 -0
  462. package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +232 -0
  463. package/packages/omo-codex/plugin/skills/programming/references/python/textual-tui.md +201 -0
  464. package/packages/omo-codex/plugin/skills/programming/references/python/type-patterns.md +176 -0
  465. package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +317 -0
  466. package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +299 -0
  467. package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +467 -0
  468. package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +317 -0
  469. package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +409 -0
  470. package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +375 -0
  471. package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +439 -0
  472. package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +291 -0
  473. package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +429 -0
  474. package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +354 -0
  475. package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +250 -0
  476. package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +527 -0
  477. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/README.md +289 -0
  478. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
  479. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
  480. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +195 -0
  481. package/packages/omo-codex/plugin/skills/programming/references/typescript/backend-hono.md +672 -0
  482. package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +199 -0
  483. package/packages/omo-codex/plugin/skills/programming/references/typescript/data-modeling.md +202 -0
  484. package/packages/omo-codex/plugin/skills/programming/references/typescript/error-handling.md +169 -0
  485. package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +152 -0
  486. package/packages/omo-codex/plugin/skills/programming/references/typescript/type-patterns.md +196 -0
  487. package/packages/omo-codex/plugin/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
  488. package/packages/omo-codex/plugin/skills/programming/scripts/go/new-project.py +138 -0
  489. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.editorconfig +13 -0
  490. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.golangci.yml +95 -0
  491. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
  492. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
  493. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
  494. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/ci.yml +37 -0
  495. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/config.go +24 -0
  496. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/gitignore +15 -0
  497. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
  498. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/run.go +15 -0
  499. package/packages/omo-codex/plugin/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
  500. package/packages/omo-codex/plugin/skills/programming/scripts/python/new-project.py +172 -0
  501. package/packages/omo-codex/plugin/skills/programming/scripts/python/new-script.py +116 -0
  502. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
  503. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
  504. package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +175 -0
  505. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
  506. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +177 -0
  507. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +779 -0
  508. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +333 -0
  509. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +574 -0
  510. package/packages/omo-codex/plugin/skills/rules/SKILL.md +34 -0
  511. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +149 -0
  512. package/packages/omo-codex/plugin/skills/ulw-loop/.gitkeep +0 -0
  513. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +44 -0
  514. package/packages/omo-codex/plugin/skills/ulw-loop/agents/openai.yaml +6 -0
  515. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +230 -0
  516. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +399 -0
  517. package/packages/omo-codex/plugin/test/aggregate.test.mjs +345 -0
  518. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +66 -0
  519. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +195 -0
  520. package/packages/omo-codex/plugin/test/install-time-build-runtime.test.mjs +34 -0
  521. package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +21 -0
  522. package/packages/omo-codex/plugin/test/node-install-surface.test.mjs +48 -0
  523. package/packages/omo-codex/plugin/test/subagent-guidance.test.mjs +76 -0
  524. package/packages/omo-codex/plugin/test/sync-hook-status-messages.test.mjs +66 -0
  525. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +229 -0
  526. package/packages/omo-codex/scripts/install/agents.mjs +84 -0
  527. package/packages/omo-codex/scripts/install/cache.mjs +247 -0
  528. package/packages/omo-codex/scripts/install/cli-args.mjs +112 -0
  529. package/packages/omo-codex/scripts/install/command-shim.mjs +1 -0
  530. package/packages/omo-codex/scripts/install/config.mjs +264 -0
  531. package/packages/omo-codex/scripts/install/delegated-command.mjs +25 -0
  532. package/packages/omo-codex/scripts/install/git-bash.mjs +99 -0
  533. package/packages/omo-codex/scripts/install/git-bash.test.mjs +174 -0
  534. package/packages/omo-codex/scripts/install/hook-trust.mjs +84 -0
  535. package/packages/omo-codex/scripts/install/legacy-bins.mjs +57 -0
  536. package/packages/omo-codex/scripts/install/marketplace.mjs +104 -0
  537. package/packages/omo-codex/scripts/install/mcp-runtime-cache.mjs +81 -0
  538. package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +38 -0
  539. package/packages/omo-codex/scripts/install/permissions.d.mts +1 -0
  540. package/packages/omo-codex/scripts/install/permissions.mjs +26 -0
  541. package/packages/omo-codex/scripts/install/process.mjs +19 -0
  542. package/packages/omo-codex/scripts/install/project-local-cleanup.mjs +229 -0
  543. package/packages/omo-codex/scripts/install/reasoning-config.mjs +14 -0
  544. package/packages/omo-codex/scripts/install/snapshot.mjs +54 -0
  545. package/packages/omo-codex/scripts/install/source-package-build.mjs +20 -0
  546. package/packages/omo-codex/scripts/install/toml-editor.mjs +64 -0
  547. package/packages/omo-codex/scripts/install/utils.mjs +15 -0
  548. package/packages/omo-codex/scripts/install-agent-links.test.mjs +104 -0
  549. package/packages/omo-codex/scripts/install-bin-links.test.mjs +123 -0
  550. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +30 -0
  551. package/packages/omo-codex/scripts/install-cli-args.test.mjs +146 -0
  552. package/packages/omo-codex/scripts/install-config-autonomous.test.mjs +48 -0
  553. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +62 -0
  554. package/packages/omo-codex/scripts/install-config.test.mjs +324 -0
  555. package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +129 -0
  556. package/packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs +145 -0
  557. package/packages/omo-codex/scripts/install-local.mjs +275 -0
  558. package/packages/omo-codex/scripts/install-local.test.mjs +394 -0
  559. package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +233 -0
  560. package/packages/omo-codex/scripts/install-packaged-local.test.mjs +67 -0
  561. package/packages/omo-codex/scripts/install-project-local-cleanup.test.mjs +277 -0
  562. package/packages/omo-codex/scripts/install-test-fixtures.mjs +58 -0
  563. package/packages/omo-codex/scripts/sync-telemetry-component.mjs +115 -0
  564. package/packages/omo-codex/scripts/sync-telemetry-component.test.mjs +94 -0
  565. package/packages/shared-skills/index.mjs +5 -0
  566. package/packages/shared-skills/package.json +14 -0
  567. package/packages/shared-skills/skills/debugging/SKILL.md +116 -0
  568. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +108 -0
  569. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +130 -0
  570. package/packages/shared-skills/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
  571. package/packages/shared-skills/skills/debugging/references/methodology/05-escalate.md +69 -0
  572. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +116 -0
  573. package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +94 -0
  574. package/packages/shared-skills/skills/debugging/references/methodology/09-cleanup.md +164 -0
  575. package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
  576. package/packages/shared-skills/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  577. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +252 -0
  578. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +484 -0
  579. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +260 -0
  580. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +248 -0
  581. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +234 -0
  582. package/packages/shared-skills/skills/debugging/references/tools/ghidra.md +212 -0
  583. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +194 -0
  584. package/packages/shared-skills/skills/debugging/references/tools/pwndbg.md +263 -0
  585. package/packages/shared-skills/skills/debugging/references/tools/pwntools.md +265 -0
  586. package/packages/shared-skills/skills/frontend-ui-ux/SKILL.md +77 -0
  587. package/packages/shared-skills/skills/init-deep/SKILL.md +309 -0
  588. package/packages/shared-skills/skills/programming/SKILL.md +463 -0
  589. package/packages/shared-skills/skills/programming/references/go/README.md +90 -0
  590. package/packages/shared-skills/skills/programming/references/go/backend-stack.md +641 -0
  591. package/packages/shared-skills/skills/programming/references/go/bootstrap.md +328 -0
  592. package/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md +360 -0
  593. package/packages/shared-skills/skills/programming/references/go/cobra-stack.md +468 -0
  594. package/packages/shared-skills/skills/programming/references/go/concurrency.md +362 -0
  595. package/packages/shared-skills/skills/programming/references/go/data-modeling.md +329 -0
  596. package/packages/shared-skills/skills/programming/references/go/error-handling.md +359 -0
  597. package/packages/shared-skills/skills/programming/references/go/golangci-strict.md +236 -0
  598. package/packages/shared-skills/skills/programming/references/go/grpc-connect.md +375 -0
  599. package/packages/shared-skills/skills/programming/references/go/libraries.md +337 -0
  600. package/packages/shared-skills/skills/programming/references/go/one-liners.md +202 -0
  601. package/packages/shared-skills/skills/programming/references/go/sqlc-pgx.md +471 -0
  602. package/packages/shared-skills/skills/programming/references/go/testing.md +467 -0
  603. package/packages/shared-skills/skills/programming/references/go/type-patterns.md +298 -0
  604. package/packages/shared-skills/skills/programming/references/python/README.md +314 -0
  605. package/packages/shared-skills/skills/programming/references/python/async-anyio.md +442 -0
  606. package/packages/shared-skills/skills/programming/references/python/data-modeling.md +233 -0
  607. package/packages/shared-skills/skills/programming/references/python/data-processing.md +133 -0
  608. package/packages/shared-skills/skills/programming/references/python/error-handling.md +218 -0
  609. package/packages/shared-skills/skills/programming/references/python/fastapi-stack.md +316 -0
  610. package/packages/shared-skills/skills/programming/references/python/httpx2-optimization.md +360 -0
  611. package/packages/shared-skills/skills/programming/references/python/libraries.md +307 -0
  612. package/packages/shared-skills/skills/programming/references/python/one-liners.md +268 -0
  613. package/packages/shared-skills/skills/programming/references/python/orjson-stack.md +378 -0
  614. package/packages/shared-skills/skills/programming/references/python/pydantic-ai.md +285 -0
  615. package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +232 -0
  616. package/packages/shared-skills/skills/programming/references/python/textual-tui.md +201 -0
  617. package/packages/shared-skills/skills/programming/references/python/type-patterns.md +176 -0
  618. package/packages/shared-skills/skills/programming/references/rust/README.md +317 -0
  619. package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +299 -0
  620. package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +467 -0
  621. package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +317 -0
  622. package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +409 -0
  623. package/packages/shared-skills/skills/programming/references/rust/concurrency.md +375 -0
  624. package/packages/shared-skills/skills/programming/references/rust/libraries.md +439 -0
  625. package/packages/shared-skills/skills/programming/references/rust/one-liners.md +291 -0
  626. package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +429 -0
  627. package/packages/shared-skills/skills/programming/references/rust/type-state.md +354 -0
  628. package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +250 -0
  629. package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +527 -0
  630. package/packages/shared-skills/skills/programming/references/rust-ub/README.md +289 -0
  631. package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
  632. package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
  633. package/packages/shared-skills/skills/programming/references/typescript/README.md +195 -0
  634. package/packages/shared-skills/skills/programming/references/typescript/backend-hono.md +672 -0
  635. package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +199 -0
  636. package/packages/shared-skills/skills/programming/references/typescript/data-modeling.md +202 -0
  637. package/packages/shared-skills/skills/programming/references/typescript/error-handling.md +169 -0
  638. package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +152 -0
  639. package/packages/shared-skills/skills/programming/references/typescript/type-patterns.md +196 -0
  640. package/packages/shared-skills/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
  641. package/packages/shared-skills/skills/programming/scripts/go/new-project.py +138 -0
  642. package/packages/shared-skills/skills/programming/scripts/go/templates/.editorconfig +13 -0
  643. package/packages/shared-skills/skills/programming/scripts/go/templates/.golangci.yml +95 -0
  644. package/packages/shared-skills/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
  645. package/packages/shared-skills/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
  646. package/packages/shared-skills/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
  647. package/packages/shared-skills/skills/programming/scripts/go/templates/ci.yml +37 -0
  648. package/packages/shared-skills/skills/programming/scripts/go/templates/config.go +24 -0
  649. package/packages/shared-skills/skills/programming/scripts/go/templates/gitignore +15 -0
  650. package/packages/shared-skills/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
  651. package/packages/shared-skills/skills/programming/scripts/go/templates/run.go +15 -0
  652. package/packages/shared-skills/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
  653. package/packages/shared-skills/skills/programming/scripts/python/new-project.py +172 -0
  654. package/packages/shared-skills/skills/programming/scripts/python/new-script.py +116 -0
  655. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
  656. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
  657. package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +175 -0
  658. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
  659. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +177 -0
  660. package/packages/shared-skills/skills/refactor/SKILL.md +763 -0
  661. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +317 -0
  662. package/packages/shared-skills/skills/review-work/SKILL.md +574 -0
  663. package/packages/shared-skills/skills/start-work/SKILL.md +149 -0
  664. package/packages/shared-skills/skills/ulw-plan/SKILL.md +383 -0
  665. package/postinstall.mjs +6 -2
  666. package/dist/features/builtin-commands/templates/init-deep.d.ts +0 -1
  667. package/dist/features/builtin-skills/skills/ai-slop-remover.d.ts +0 -2
  668. package/dist/hooks/context-window-monitor.d.ts +0 -19
@@ -0,0 +1,25 @@
1
+ # Repository Conventions
2
+
3
+ Conventions for humans and agents working on this repository.
4
+
5
+ ## Style
6
+
7
+ - TypeScript strict mode. No `any`, `@ts-ignore`, `@ts-expect-error`, or enums.
8
+ - ESM modules with `.js` suffix in import paths.
9
+ - Tabs for indentation. Double quotes for strings.
10
+ - Runtime is Node only.
11
+ - Tests use vitest and should exercise Codex hook/MCP behavior before implementation changes.
12
+
13
+ ## Commands
14
+
15
+ - `npm install` installs dependencies.
16
+ - `npm test` runs the test suite once.
17
+ - `npm run typecheck` runs strict TypeScript checking.
18
+ - `npm run check` runs typecheck, Biome, and build.
19
+
20
+ ## LSP Constraints
21
+
22
+ - LSP server processes are owned by `LspManager`.
23
+ - Tool execution acquires clients through `withLspClient(...)` unless it only reports static status.
24
+ - `lsp.rename` mutates files by applying workspace edits; keep it sequential at the MCP caller level.
25
+ - Do not add pi-coding-agent or omo source dependencies. This package is standalone.
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ - Reuse the repository-level `packages/lsp-tools-mcp` package instead of carrying a second copy under `components/lsp/packages`.
6
+
7
+ ## 0.2.0
8
+
9
+ - Extracted the LSP runtime and MCP server into [`@code-yeongyu/lsp-tools-mcp`](https://github.com/code-yeongyu/lsp-tools-mcp).
10
+ - codex-lsp now consumes that runtime as a git submodule at `packages/lsp-tools-mcp`.
11
+ - Kept the Codex-specific PostToolUse hook in this package and routed MCP serving through the upstream CLI.
12
+
13
+ - Extract LSP runtime to `lsp-tools-mcp` upstream and consume it via git submodule at `packages/lsp-tools-mcp`.
14
+ - Renamed the MCP server namespace to `lsp` and exposed shorter tool names such as `lsp.diagnostics`.
15
+ - Use portable Codex hook interpolation and add package smoke coverage for hook/MCP entrypoints.
16
+ - Spawn language servers without shell mode; Windows `.cmd` and `.bat` shims are routed through `cmd.exe` with explicit arguments.
17
+ - Cap directory diagnostics file traversal and run CI on Windows in addition to Ubuntu and macOS.
18
+ - Replace the external JSON-RPC runtime dependency with an internal LSP framing layer so clean Codex plugin installs run without `node_modules`.
19
+
20
+ ## 0.1.0
21
+
22
+ - Ported the standalone LSP client, server resolution, diagnostics aggregation, and workspace edit runtime from `pi-lsp-client`.
23
+ - Added Codex `PostToolUse` diagnostics for edit-style tools.
24
+ - Added MCP tools for status, diagnostics, definitions, references, symbols, prepare rename, and rename.
25
+ - Added Codex plugin metadata, skill docs, CI, and release automation.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yeongyu Kim
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ codex-lsp ports the standalone LSP runtime from pi-lsp-client into a Codex plugin.
2
+
3
+ The package includes adapted code originally developed for pi-lsp-client.
@@ -0,0 +1,148 @@
1
+ # codex-lsp
2
+
3
+ [![ci](https://github.com/code-yeongyu/codex-lsp/actions/workflows/ci.yml/badge.svg)](https://github.com/code-yeongyu/codex-lsp/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
4
+
5
+ Codex plugin that ports the standalone LSP runtime from [`pi-lsp-client`](https://github.com/code-yeongyu/pi-lsp-client). It gives Codex post-edit diagnostics plus explicit MCP tools for language-aware code work.
6
+
7
+ ## Architecture
8
+
9
+ The LSP runtime moved to [`lsp-tools-mcp`](https://github.com/code-yeongyu/lsp-tools-mcp) and is consumed from this repository's root `packages/lsp-tools-mcp/` package.
10
+
11
+ - `codex-lsp` keeps Codex-specific integration (`hook post-tool-use`, plugin metadata, package wiring).
12
+ - `lsp-tools-mcp` owns MCP runtime, LSP manager, and tool implementations.
13
+ - `src/cli.ts` routes `mcp` to upstream runtime and keeps `hook post-tool-use` local.
14
+
15
+ ## Behavior
16
+
17
+ | Case | Result |
18
+ |------|--------|
19
+ | `apply_patch` succeeds | parses `tool_input.command`, extracts added/updated/moved files, and checks each with LSP error diagnostics |
20
+ | `write` / `edit` / `multiedit` succeeds | checks `path`, `filePath`, or `file_path` aliases |
21
+ | diagnostics contain errors | returns Codex `PostToolUse` blocking feedback and injects the same diagnostics as additional context so Codex fixes the file |
22
+ | no diagnostics | emits no hook output |
23
+ | unsupported extension | emits no hook output |
24
+ | missing configured language server | surfaces the install/config message through hook or MCP output |
25
+
26
+ Deletes are ignored because they cannot introduce new diagnostics.
27
+
28
+ ## MCP Tools
29
+
30
+ - `lsp.status`
31
+ - `lsp.diagnostics`
32
+ - `lsp.goto_definition`
33
+ - `lsp.find_references`
34
+ - `lsp.symbols`
35
+ - `lsp.prepare_rename`
36
+ - `lsp.rename`
37
+
38
+ `lsp.rename` applies the returned workspace edit to files. Use `lsp.prepare_rename` first when possible.
39
+
40
+ ## Configuration
41
+
42
+ Project config:
43
+
44
+ ```text
45
+ .codex/lsp-client.json
46
+ ```
47
+
48
+ User config:
49
+
50
+ ```text
51
+ ~/.codex/lsp-client.json
52
+ ```
53
+
54
+ Example:
55
+
56
+ ```json
57
+ {
58
+ "lsp": {
59
+ "typescript": {
60
+ "command": ["typescript-language-server", "--stdio"],
61
+ "extensions": [".ts", ".tsx", ".js", ".jsx"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ Built-in server definitions are used when no custom config overrides them. `lsp.status` shows which configured servers are installed or missing.
68
+
69
+ ## Codex Plugin
70
+
71
+ The plugin ships:
72
+
73
+ - `.codex-plugin/plugin.json` for Codex plugin discovery.
74
+ - `.mcp.json` for the `lsp` MCP server.
75
+ - `hooks/hooks.json` for the `PostToolUse` diagnostics hook.
76
+ - `skills/lsp/SKILL.md` with MCP usage guidance.
77
+
78
+ The runtime depends on `@code-yeongyu/lsp-tools-mcp` via `file:../../../../lsp-tools-mcp`, so marketplace builds reuse the root package instead of carrying a second copy under this component.
79
+
80
+ The hook command is:
81
+
82
+ ```bash
83
+ node "${PLUGIN_ROOT}/dist/cli.js" hook post-tool-use
84
+ ```
85
+
86
+ The MCP command is:
87
+
88
+ ```bash
89
+ node ../../../../lsp-tools-mcp/dist/cli.js mcp
90
+ ```
91
+
92
+ ## Local Development
93
+
94
+ ```bash
95
+ npm run bootstrap # installs + builds the root packages/lsp-tools-mcp package
96
+ npm install
97
+ npm test
98
+ npm run typecheck
99
+ npm run check
100
+ npm pack --dry-run
101
+ ```
102
+
103
+ The `bootstrap` script installs and builds the root `lsp-tools-mcp` package so
104
+ `@code-yeongyu/lsp-tools-mcp/dist/*.js` is available for the codex-lsp build.
105
+
106
+ Smoke-test the hook:
107
+
108
+ ```bash
109
+ node dist/cli.js hook post-tool-use < test/fixtures/post-tool-use.json
110
+ ```
111
+
112
+ Smoke-test the MCP server:
113
+
114
+ ```bash
115
+ printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/cli.js mcp
116
+ ```
117
+
118
+ ## Local Codex Installation
119
+
120
+ ```bash
121
+ npx lazycodex-ai install
122
+ ```
123
+
124
+ The installer builds and copies the plugin into `~/.codex/plugins/cache/sisyphuslabs/omo/0.1.0`, registers the `sisyphuslabs` marketplace from the `lazycodex` Git repository, and enables:
125
+
126
+ ```toml
127
+ [plugins."omo@sisyphuslabs"]
128
+ enabled = true
129
+ ```
130
+
131
+ ## Branch Rules and Releases
132
+
133
+ - `main` is protected by `.github/branch-ruleset.json`.
134
+ - CI runs Node 20 and 22 on Ubuntu, macOS, and Windows.
135
+ - Releases are GitHub Releases tagged as `v<semver>`.
136
+ - Publishing runs from the `publish` workflow after a GitHub Release is published.
137
+
138
+ ## Privacy
139
+
140
+ This plugin runs locally. It starts configured language-server commands on your machine and does not call a network service by itself.
141
+
142
+ ## License
143
+
144
+ [MIT](LICENSE).
145
+
146
+ ## Related
147
+
148
+ - [pi-lsp-client](https://github.com/code-yeongyu/pi-lsp-client) - source extension this Codex plugin ports.
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
3
+ "linter": {
4
+ "enabled": true,
5
+ "rules": {
6
+ "recommended": true,
7
+ "style": {
8
+ "noDefaultExport": "error",
9
+ "noEnum": "error",
10
+ "noNonNullAssertion": "error",
11
+ "useImportType": "error",
12
+ "useConst": "error",
13
+ "useNodejsImportProtocol": "off"
14
+ },
15
+ "complexity": {
16
+ "useLiteralKeys": "off"
17
+ },
18
+ "suspicious": {
19
+ "noExplicitAny": "error",
20
+ "noTsIgnore": "error",
21
+ "noControlCharactersInRegex": "off",
22
+ "noEmptyInterface": "off"
23
+ }
24
+ }
25
+ },
26
+ "formatter": {
27
+ "enabled": true,
28
+ "formatWithErrors": false,
29
+ "indentStyle": "tab",
30
+ "indentWidth": 3,
31
+ "lineWidth": 120
32
+ },
33
+ "files": {
34
+ "includes": ["src/**/*.ts", "test/**/*.ts", "vitest.config.ts", "!**/node_modules/**/*", "!**/dist/**/*"]
35
+ },
36
+ "overrides": [
37
+ {
38
+ "includes": ["vitest.config.ts"],
39
+ "linter": {
40
+ "rules": {
41
+ "style": {
42
+ "noDefaultExport": "off"
43
+ }
44
+ }
45
+ }
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "matcher": "^(apply_patch|Write|Edit|MultiEdit|multi_edit|write|edit|multiedit)$",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
+ "timeout": 60,
11
+ "statusMessage": "LazyCodex(0.2.0): Checking LSP Diagnostics"
12
+ }
13
+ ]
14
+ }
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@code-yeongyu/codex-lsp",
3
+ "version": "0.2.0",
4
+ "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
+ "type": "module",
6
+ "packageManager": "npm@11.12.1",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/code-yeongyu/codex-lsp",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/code-yeongyu/codex-lsp.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/code-yeongyu/codex-lsp/issues"
15
+ },
16
+ "keywords": [
17
+ "codex",
18
+ "codex-plugin",
19
+ "lsp",
20
+ "language-server-protocol",
21
+ "mcp",
22
+ "diagnostics"
23
+ ],
24
+ "bin": {
25
+ "omo-lsp": "./dist/cli.js"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "hooks",
30
+ "skills",
31
+ ".codex-plugin",
32
+ ".mcp.json",
33
+ "LICENSE",
34
+ "NOTICE",
35
+ "README.md",
36
+ "CHANGELOG.md"
37
+ ],
38
+ "scripts": {
39
+ "bootstrap": "node scripts/build-lsp-tools.mjs",
40
+ "prebuild": "node scripts/build-lsp-tools.mjs",
41
+ "build": "node scripts/clean-dist.mjs && tsc -p tsconfig.build.json",
42
+ "pretest": "node scripts/build-lsp-tools.mjs",
43
+ "test": "node scripts/test.mjs",
44
+ "test:watch": "vitest",
45
+ "pretypecheck": "node scripts/build-lsp-tools.mjs",
46
+ "typecheck": "tsc --noEmit",
47
+ "lint": "biome check src test",
48
+ "lint:fix": "biome check --write src test",
49
+ "precheck": "node scripts/build-lsp-tools.mjs",
50
+ "check": "tsc --noEmit && biome check src test && tsc -p tsconfig.build.json"
51
+ },
52
+ "dependencies": {
53
+ "@code-yeongyu/lsp-tools-mcp": "file:../../../../lsp-tools-mcp"
54
+ },
55
+ "devDependencies": {
56
+ "@biomejs/biome": "2.4.15",
57
+ "@types/node": "^25.7.0",
58
+ "typescript": "^6.0.3",
59
+ "vitest": "^4.1.5"
60
+ },
61
+ "engines": {
62
+ "node": ">=20.0.0"
63
+ }
64
+ }
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ // Build the repository-level lsp-tools-mcp package used by codex-lsp.
3
+ import { execSync } from "node:child_process";
4
+ import { existsSync, statSync } from "node:fs";
5
+ import { dirname, join } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const lspToolsDir = join(__dirname, "..", "..", "..", "..", "..", "lsp-tools-mcp");
10
+ const packageJson = join(lspToolsDir, "package.json");
11
+ const requiredOutputs = [
12
+ join(lspToolsDir, "dist", "cli.js"),
13
+ join(lspToolsDir, "dist", "tools.js"),
14
+ join(lspToolsDir, "dist", "lsp", "manager.js"),
15
+ ];
16
+ const force = process.argv.includes("--force");
17
+
18
+ if (!force && isBuildFresh(packageJson, requiredOutputs)) {
19
+ process.exit(0);
20
+ }
21
+
22
+ if (!existsSync(packageJson)) {
23
+ if (!force && requiredOutputs.every((path) => existsSync(path))) {
24
+ console.log("Using bundled lsp-tools-mcp dist.");
25
+ process.exit(0);
26
+ }
27
+ console.error(
28
+ `lsp-tools-mcp package metadata is missing at ${packageJson}; build packages/lsp-tools-mcp before codex-lsp`,
29
+ );
30
+ process.exit(1);
31
+ }
32
+
33
+ console.log("Installing repository lsp-tools-mcp dependencies...");
34
+ execSync("npm ci", { cwd: lspToolsDir, stdio: "inherit" });
35
+
36
+ console.log("Building repository lsp-tools-mcp...");
37
+ execSync("npm run build", { cwd: lspToolsDir, stdio: "inherit" });
38
+
39
+ console.log("Done.");
40
+
41
+ function isBuildFresh(inputPath, outputPaths) {
42
+ if (!existsSync(inputPath)) return false;
43
+ if (outputPaths.some((path) => !existsSync(path))) return false;
44
+ const inputMtime = statSync(inputPath).mtimeMs;
45
+ return outputPaths.every((path) => statSync(path).mtimeMs >= inputMtime);
46
+ }
@@ -0,0 +1,104 @@
1
+ import assert from "node:assert/strict";
2
+ import { chmod, copyFile, mkdir, mkdtemp, readFile, rm, utimes, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { spawnSync } from "node:child_process";
6
+ import test from "node:test";
7
+
8
+ async function makeFixture() {
9
+ const root = await mkdtemp(join(tmpdir(), "codex-lsp-build-"));
10
+ await mkdir(join(root, "packages", "omo-codex", "plugin", "components", "lsp", "scripts"), { recursive: true });
11
+ await mkdir(join(root, "packages", "lsp-tools-mcp", "dist"), { recursive: true });
12
+ await copyFile(
13
+ new URL("./build-lsp-tools.mjs", import.meta.url),
14
+ join(root, "packages", "omo-codex", "plugin", "components", "lsp", "scripts", "build-lsp-tools.mjs"),
15
+ );
16
+ await writeFile(join(root, "packages", "lsp-tools-mcp", "package.json"), "{}\n");
17
+ await writeFile(join(root, "packages", "lsp-tools-mcp", "dist", "cli.js"), "cli\n");
18
+ const fakeBin = join(root, "bin");
19
+ await mkdir(fakeBin, { recursive: true });
20
+ const npmLog = join(root, "npm.log");
21
+ await writeFile(
22
+ join(fakeBin, "npm"),
23
+ `#!/usr/bin/env node\nconst { appendFileSync } = require("node:fs");\nappendFileSync(${JSON.stringify(npmLog)}, process.argv.slice(2).join(" ") + "\\n");\n`,
24
+ );
25
+ await chmod(join(fakeBin, "npm"), 0o755);
26
+ return { root, npmLog, script: join(root, "packages", "omo-codex", "plugin", "components", "lsp", "scripts", "build-lsp-tools.mjs"), fakeBin };
27
+ }
28
+
29
+ function runScript(script, fakeBin, args = []) {
30
+ return spawnSync(process.execPath, [script, ...args], {
31
+ encoding: "utf8",
32
+ env: { ...process.env, PATH: `${fakeBin}:${process.env.PATH ?? ""}` },
33
+ });
34
+ }
35
+
36
+ test("#given dist cli exists but required hook outputs are missing #when bootstrapping #then it rebuilds", async () => {
37
+ // given
38
+ const fixture = await makeFixture();
39
+
40
+ // when
41
+ const result = runScript(fixture.script, fixture.fakeBin);
42
+
43
+ // then
44
+ assert.equal(result.status, 0);
45
+ assert.match(await readFile(fixture.npmLog, "utf8"), /ci\nrun build\n/u);
46
+ });
47
+
48
+ test("#given package metadata is newer than required outputs #when bootstrapping #then it rebuilds", async () => {
49
+ // given
50
+ const fixture = await makeFixture();
51
+ await mkdir(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp"), { recursive: true });
52
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp", "manager.js"), "manager\n");
53
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "tools.js"), "tools\n");
54
+ const older = new Date("2026-01-01T00:00:00.000Z");
55
+ const newer = new Date("2026-01-02T00:00:00.000Z");
56
+ for (const path of [
57
+ join(fixture.root, "packages", "lsp-tools-mcp", "dist", "cli.js"),
58
+ join(fixture.root, "packages", "lsp-tools-mcp", "dist", "tools.js"),
59
+ join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp", "manager.js"),
60
+ ]) {
61
+ await utimes(path, older, older);
62
+ }
63
+ await utimes(join(fixture.root, "packages", "lsp-tools-mcp", "package.json"), newer, newer);
64
+
65
+ // when
66
+ const result = runScript(fixture.script, fixture.fakeBin);
67
+
68
+ // then
69
+ assert.equal(result.status, 0);
70
+ assert.match(await readFile(fixture.npmLog, "utf8"), /ci\nrun build\n/u);
71
+ });
72
+
73
+ test("#given force flag #when bootstrapping #then it rebuilds even when dist exists", async () => {
74
+ // given
75
+ const fixture = await makeFixture();
76
+ await mkdir(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp"), { recursive: true });
77
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp", "manager.js"), "manager\n");
78
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "tools.js"), "tools\n");
79
+
80
+ // when
81
+ const result = runScript(fixture.script, fixture.fakeBin, ["--force"]);
82
+
83
+ // then
84
+ assert.equal(result.status, 0);
85
+ assert.match(await readFile(fixture.npmLog, "utf8"), /ci\nrun build\n/u);
86
+ });
87
+
88
+ test("#given packaged dist without package metadata #when bootstrapping #then it uses bundled runtime", async () => {
89
+ // given
90
+ const fixture = await makeFixture();
91
+ await mkdir(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp"), { recursive: true });
92
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "lsp", "manager.js"), "manager\n");
93
+ await writeFile(join(fixture.root, "packages", "lsp-tools-mcp", "dist", "tools.js"), "tools\n");
94
+ await writeFile(fixture.npmLog, "");
95
+ await rm(join(fixture.root, "packages", "lsp-tools-mcp", "package.json"));
96
+
97
+ // when
98
+ const result = runScript(fixture.script, fixture.fakeBin);
99
+
100
+ // then
101
+ assert.equal(result.status, 0, result.stderr);
102
+ assert.match(result.stdout, /Using bundled lsp-tools-mcp dist/);
103
+ assert.equal(await readFile(fixture.npmLog, "utf8"), "");
104
+ });
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import { rm } from "node:fs/promises";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ await rm(fileURLToPath(new URL("../dist/", import.meta.url)), { recursive: true, force: true });
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from "node:child_process";
3
+
4
+ const vitest = spawnSync("vitest", ["--run", ...process.argv.slice(2)], { stdio: "inherit" });
5
+ if (vitest.status !== 0) process.exit(vitest.status ?? 1);
6
+
7
+ const nodeTest = spawnSync(process.execPath, ["--test", "scripts/*.test.mjs"], { stdio: "inherit" });
8
+ process.exit(nodeTest.status ?? 1);
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: lsp
3
+ description: Use when Codex needs language-server diagnostics, definitions, references, symbols, or rename safety checks in the current workspace.
4
+ ---
5
+
6
+ # Codex LSP
7
+
8
+ Call `lsp` MCP tools through the tool interface; `lsp.*`/`mcp__lsp__*` are tool-call names, not shell commands.
9
+
10
+ ## Tools
11
+
12
+ - `lsp.status`: list configured, installed, missing, disabled, and active language servers.
13
+ - `lsp.diagnostics`: check one file or directory for LSP diagnostics. Prefer `severity: "error"` after edits.
14
+ - `lsp.goto_definition`: locate a symbol definition from file, line, and character.
15
+ - `lsp.find_references`: find usages of a symbol across the workspace.
16
+ - `lsp.symbols`: inspect document symbols or search workspace symbols.
17
+ - `lsp.prepare_rename`: check whether a rename is valid at a position.
18
+ - `lsp.rename`: apply a language-server workspace edit for a rename.
19
+
20
+ ## Config
21
+
22
+ Project config lives at `.codex/lsp-client.json`; user config lives at `~/.codex/lsp-client.json`.
23
+
24
+ ```json
25
+ {
26
+ "lsp": {
27
+ "typescript": {
28
+ "command": ["typescript-language-server", "--stdio"],
29
+ "extensions": [".ts", ".tsx", ".js", ".jsx"]
30
+ }
31
+ }
32
+ }
33
+ ```
34
+
35
+ Use `lsp.status` first when diagnostics report a missing language server.
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from "node:child_process";
3
+ import { createRequire } from "node:module";
4
+ import { argv, execPath, stderr } from "node:process";
5
+
6
+ import { runPostToolUseHookCli } from "./codex-hook-cli.js";
7
+
8
+ const require = createRequire(import.meta.url);
9
+ const PACKAGE_LSP_MCP_CLI = "@code-yeongyu/lsp-tools-mcp/dist/cli.js";
10
+
11
+ async function main(): Promise<void> {
12
+ const [command = "mcp", subcommand = ""] = argv.slice(2);
13
+
14
+ if (command === "hook" && subcommand === "post-tool-use") {
15
+ await runPostToolUseHookCli();
16
+ return;
17
+ }
18
+
19
+ if (command === "mcp") {
20
+ await runPackageLspMcpCli();
21
+ return;
22
+ }
23
+
24
+ stderr.write("Usage: omo-lsp [mcp | hook post-tool-use]\n");
25
+ process.exitCode = 2;
26
+ }
27
+
28
+ main().catch((error: unknown) => {
29
+ stderr.write(`${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
30
+ process.exitCode = 1;
31
+ });
32
+
33
+ async function runPackageLspMcpCli(): Promise<void> {
34
+ const cliPath = require.resolve(PACKAGE_LSP_MCP_CLI);
35
+ const child = spawn(execPath, [cliPath, "mcp"], { stdio: "inherit" });
36
+ await new Promise<void>((resolve, reject) => {
37
+ child.once("error", reject);
38
+ child.once("exit", (code, signal) => {
39
+ if (code !== null && code !== 0) process.exitCode = code;
40
+ if (code === null && signal !== null) process.exitCode = 1;
41
+ resolve();
42
+ });
43
+ });
44
+ }
@@ -0,0 +1,33 @@
1
+ import { stdin as processStdin } from "node:process";
2
+
3
+ import { disposeDefaultLspManager } from "@code-yeongyu/lsp-tools-mcp/dist/lsp/manager.js";
4
+
5
+ import { isRecord, runLspPostToolUseHook } from "./codex-hook.js";
6
+
7
+ export async function runPostToolUseHookCli(stdin: NodeJS.ReadStream = processStdin): Promise<void> {
8
+ try {
9
+ const raw = await readStdin(stdin);
10
+ if (!raw.trim()) return;
11
+ let parsed: unknown;
12
+ try {
13
+ parsed = JSON.parse(raw);
14
+ } catch (error) {
15
+ if (error instanceof SyntaxError) return;
16
+ throw error;
17
+ }
18
+ const input = isRecord(parsed) ? parsed : {};
19
+ const output = await runLspPostToolUseHook(input);
20
+ if (output) process.stdout.write(output);
21
+ } finally {
22
+ await disposeDefaultLspManager();
23
+ }
24
+ }
25
+
26
+ async function readStdin(stdin: NodeJS.ReadStream): Promise<string> {
27
+ stdin.setEncoding("utf8");
28
+ let raw = "";
29
+ for await (const chunk of stdin) {
30
+ raw += chunk;
31
+ }
32
+ return raw;
33
+ }