oh-my-opencode 4.5.1 → 4.5.12

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 (584) hide show
  1. package/README.ja.md +33 -18
  2. package/README.ko.md +33 -18
  3. package/README.md +82 -24
  4. package/README.ru.md +33 -18
  5. package/README.zh-cn.md +45 -24
  6. package/bin/oh-my-opencode.js +47 -2
  7. package/bin/oh-my-opencode.test.ts +174 -0
  8. package/bin/platform.d.ts +6 -0
  9. package/bin/platform.js +19 -0
  10. package/bin/platform.test.ts +66 -1
  11. package/dist/cli/cli-program.d.ts +18 -0
  12. package/dist/cli/index.js +28472 -26159
  13. package/dist/cli/install-codex/codex-cache-bundled-mcps.d.ts +5 -0
  14. package/dist/cli/install-codex/codex-cache-command-shim.d.ts +1 -0
  15. package/dist/cli/install-codex/codex-cache-legacy-bins.d.ts +3 -0
  16. package/dist/cli/install-codex/codex-cache-local-dependencies.d.ts +1 -0
  17. package/dist/cli/install-codex/codex-cache-paths.d.ts +2 -0
  18. package/dist/cli/install-codex/codex-cache.d.ts +31 -0
  19. package/dist/cli/install-codex/codex-config-toml.d.ts +11 -0
  20. package/dist/cli/install-codex/codex-hook-trust.d.ts +6 -0
  21. package/dist/cli/install-codex/codex-marketplace-snapshot.d.ts +15 -0
  22. package/dist/cli/install-codex/codex-marketplace.d.ts +9 -0
  23. package/dist/cli/install-codex/codex-multi-agent-v2-config.d.ts +1 -0
  24. package/dist/cli/install-codex/codex-process.d.ts +2 -0
  25. package/dist/cli/install-codex/index.d.ts +7 -0
  26. package/dist/cli/install-codex/install-codex.d.ts +17 -0
  27. package/dist/cli/install-codex/link-cached-plugin-agents.d.ts +12 -0
  28. package/dist/cli/install-codex/toml-section-editor.d.ts +9 -0
  29. package/dist/cli/install-codex/types.d.ts +56 -0
  30. package/dist/cli/star-request.d.ts +2 -0
  31. package/dist/cli/tui-install-prompts.d.ts +3 -2
  32. package/dist/cli/types.d.ts +8 -0
  33. package/dist/config/schema/agent-names.d.ts +4 -1
  34. package/dist/config/schema/commands.d.ts +1 -2
  35. package/dist/config/schema/oh-my-opencode-config.d.ts +5 -3
  36. package/dist/create-managers.d.ts +1 -0
  37. package/dist/features/background-agent/parent-wake-message-activity.d.ts +23 -0
  38. package/dist/features/background-agent/parent-wake-notifier.d.ts +0 -1
  39. package/dist/features/boulder-state/storage.d.ts +1 -1
  40. package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
  41. package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +2 -2
  42. package/dist/features/builtin-commands/types.d.ts +1 -1
  43. package/dist/features/builtin-skills/skill-file-loader.d.ts +4 -0
  44. package/dist/features/builtin-skills/skills/index.d.ts +4 -1
  45. package/dist/features/builtin-skills/skills/init-deep.d.ts +2 -0
  46. package/dist/features/builtin-skills/skills/remove-ai-slops.d.ts +2 -0
  47. package/dist/features/builtin-skills/skills/security-research.d.ts +2 -0
  48. package/dist/features/builtin-skills/skills/security-review.d.ts +2 -0
  49. package/dist/features/opencode-runtime-skills/index.d.ts +2 -0
  50. package/dist/features/opencode-runtime-skills/runtime-skill-config.d.ts +17 -0
  51. package/dist/features/opencode-runtime-skills/skill-markdown.d.ts +7 -0
  52. package/dist/features/opencode-runtime-skills/source-server.d.ts +8 -0
  53. package/dist/hooks/claude-code-hooks/hook-text.d.ts +2 -0
  54. package/dist/hooks/session-recovery/storage/latest-assistant-message.d.ts +5 -0
  55. package/dist/hooks/session-recovery/storage/thinking-prepend.d.ts +3 -0
  56. package/dist/hooks/thinking-block-validator/hook.d.ts +0 -18
  57. package/dist/hooks/todo-continuation-enforcer/pending-question-detection.d.ts +4 -0
  58. package/dist/index.js +1684 -1801
  59. package/dist/oh-my-opencode.schema.json +4 -2
  60. package/dist/plugin-handlers/config-handler.d.ts +2 -1
  61. package/dist/shared/external-plugin-detector.d.ts +8 -0
  62. package/dist/shared/prompt-async-gate/message-inspection-error.d.ts +1 -0
  63. package/dist/shared/prompt-async-gate/pending-tool-turn.d.ts +1 -0
  64. package/dist/shared/prompt-async-gate/prompt-message-state.d.ts +8 -0
  65. package/dist/shared/prompt-timeout-context.d.ts +2 -0
  66. package/dist/testing/create-plugin-module.d.ts +5 -1
  67. package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -2
  68. package/package.json +31 -16
  69. package/packages/ast-grep-mcp/dist/cli.js +245 -40
  70. package/packages/lsp-tools-mcp/dist/cli.js +1 -1
  71. package/packages/omo-codex/marketplace.json +17 -0
  72. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +35 -0
  73. package/packages/omo-codex/plugin/.mcp.json +14 -0
  74. package/packages/omo-codex/plugin/README.md +13 -0
  75. package/packages/omo-codex/plugin/components/comment-checker/.gitattributes +13 -0
  76. package/packages/omo-codex/plugin/components/comment-checker/.github/CODEOWNERS +12 -0
  77. package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/bug.yml +40 -0
  78. package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/feature.yml +27 -0
  79. package/packages/omo-codex/plugin/components/comment-checker/.github/branch-ruleset.json +45 -0
  80. package/packages/omo-codex/plugin/components/comment-checker/.github/dependabot.yml +16 -0
  81. package/packages/omo-codex/plugin/components/comment-checker/.github/pull_request_template.md +19 -0
  82. package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/ci.yml +47 -0
  83. package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/publish.yml +51 -0
  84. package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +35 -0
  85. package/packages/omo-codex/plugin/components/comment-checker/CHANGELOG.md +33 -0
  86. package/packages/omo-codex/plugin/components/comment-checker/LICENSE +21 -0
  87. package/packages/omo-codex/plugin/components/comment-checker/NOTICE +6 -0
  88. package/packages/omo-codex/plugin/components/comment-checker/README.md +87 -0
  89. package/packages/omo-codex/plugin/components/comment-checker/biome.json +48 -0
  90. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +17 -0
  91. package/packages/omo-codex/plugin/components/comment-checker/package.json +57 -0
  92. package/packages/omo-codex/plugin/components/comment-checker/skills/comment-checker/SKILL.md +16 -0
  93. package/packages/omo-codex/plugin/components/comment-checker/src/cli.ts +12 -0
  94. package/packages/omo-codex/plugin/components/comment-checker/src/codex-hook.ts +205 -0
  95. package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +361 -0
  96. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +195 -0
  97. package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook-newline.test.ts +52 -0
  98. package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook.test.ts +368 -0
  99. package/packages/omo-codex/plugin/components/comment-checker/test/fixtures/post-tool-use.json +15 -0
  100. package/packages/omo-codex/plugin/components/comment-checker/test/package-smoke.test.ts +93 -0
  101. package/packages/omo-codex/plugin/components/comment-checker/test/runner.test.ts +66 -0
  102. package/packages/omo-codex/plugin/components/comment-checker/tsconfig.build.json +12 -0
  103. package/packages/omo-codex/plugin/components/comment-checker/tsconfig.json +27 -0
  104. package/packages/omo-codex/plugin/components/comment-checker/vitest.config.ts +9 -0
  105. package/packages/omo-codex/plugin/components/lsp/.gitattributes +13 -0
  106. package/packages/omo-codex/plugin/components/lsp/.github/CODEOWNERS +1 -0
  107. package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml +26 -0
  108. package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml +19 -0
  109. package/packages/omo-codex/plugin/components/lsp/.github/branch-ruleset.json +45 -0
  110. package/packages/omo-codex/plugin/components/lsp/.github/dependabot.yml +11 -0
  111. package/packages/omo-codex/plugin/components/lsp/.github/pull_request_template.md +11 -0
  112. package/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml +56 -0
  113. package/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml +60 -0
  114. package/packages/omo-codex/plugin/components/lsp/.mcp.json +9 -0
  115. package/packages/omo-codex/plugin/components/lsp/AGENTS.md +25 -0
  116. package/packages/omo-codex/plugin/components/lsp/CHANGELOG.md +25 -0
  117. package/packages/omo-codex/plugin/components/lsp/LICENSE +21 -0
  118. package/packages/omo-codex/plugin/components/lsp/NOTICE +3 -0
  119. package/packages/omo-codex/plugin/components/lsp/README.md +148 -0
  120. package/packages/omo-codex/plugin/components/lsp/biome.json +48 -0
  121. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +17 -0
  122. package/packages/omo-codex/plugin/components/lsp/package.json +64 -0
  123. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +46 -0
  124. package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.test.mjs +104 -0
  125. package/packages/omo-codex/plugin/components/lsp/scripts/clean-dist.mjs +5 -0
  126. package/packages/omo-codex/plugin/components/lsp/scripts/test.mjs +8 -0
  127. package/packages/omo-codex/plugin/components/lsp/skills/lsp/SKILL.md +35 -0
  128. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +44 -0
  129. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +285 -0
  130. package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +358 -0
  131. package/packages/omo-codex/plugin/components/lsp/test/fixtures/broken.py +1 -0
  132. package/packages/omo-codex/plugin/components/lsp/test/fixtures/post-tool-use.json +15 -0
  133. package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +153 -0
  134. package/packages/omo-codex/plugin/components/lsp/tsconfig.build.json +12 -0
  135. package/packages/omo-codex/plugin/components/lsp/tsconfig.json +27 -0
  136. package/packages/omo-codex/plugin/components/lsp/vitest.config.ts +9 -0
  137. package/packages/omo-codex/plugin/components/rules/.codex-plugin/plugin.json +3 -0
  138. package/packages/omo-codex/plugin/components/rules/.gitattributes +13 -0
  139. package/packages/omo-codex/plugin/components/rules/.github/CODEOWNERS +12 -0
  140. package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/bug.yml +49 -0
  141. package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/feature.yml +27 -0
  142. package/packages/omo-codex/plugin/components/rules/.github/branch-ruleset.json +45 -0
  143. package/packages/omo-codex/plugin/components/rules/.github/dependabot.yml +16 -0
  144. package/packages/omo-codex/plugin/components/rules/.github/pull_request_template.md +20 -0
  145. package/packages/omo-codex/plugin/components/rules/.github/workflows/ci.yml +47 -0
  146. package/packages/omo-codex/plugin/components/rules/.github/workflows/publish.yml +51 -0
  147. package/packages/omo-codex/plugin/components/rules/AGENTS.md +34 -0
  148. package/packages/omo-codex/plugin/components/rules/CHANGELOG.md +19 -0
  149. package/packages/omo-codex/plugin/components/rules/LICENSE +21 -0
  150. package/packages/omo-codex/plugin/components/rules/NOTICE +15 -0
  151. package/packages/omo-codex/plugin/components/rules/README.md +124 -0
  152. package/packages/omo-codex/plugin/components/rules/biome.json +48 -0
  153. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +209 -0
  154. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +54 -0
  155. package/packages/omo-codex/plugin/components/rules/package.json +62 -0
  156. package/packages/omo-codex/plugin/components/rules/scripts/bench-codex-rules.mjs +268 -0
  157. package/packages/omo-codex/plugin/components/rules/skills/rules/SKILL.md +34 -0
  158. package/packages/omo-codex/plugin/components/rules/src/cli.ts +143 -0
  159. package/packages/omo-codex/plugin/components/rules/src/codex-hook-options.ts +4 -0
  160. package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +238 -0
  161. package/packages/omo-codex/plugin/components/rules/src/config.ts +107 -0
  162. package/packages/omo-codex/plugin/components/rules/src/context-pressure.ts +26 -0
  163. package/packages/omo-codex/plugin/components/rules/src/debug-log.ts +65 -0
  164. package/packages/omo-codex/plugin/components/rules/src/dynamic-target-fingerprints.ts +98 -0
  165. package/packages/omo-codex/plugin/components/rules/src/hook-output.ts +19 -0
  166. package/packages/omo-codex/plugin/components/rules/src/path-utils.ts +29 -0
  167. package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +234 -0
  168. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +104 -0
  169. package/packages/omo-codex/plugin/components/rules/src/post-compact-claim.ts +13 -0
  170. package/packages/omo-codex/plugin/components/rules/src/post-compact-state.ts +45 -0
  171. package/packages/omo-codex/plugin/components/rules/src/rules/cache.ts +64 -0
  172. package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +115 -0
  173. package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +535 -0
  174. package/packages/omo-codex/plugin/components/rules/src/rules/errors.ts +13 -0
  175. package/packages/omo-codex/plugin/components/rules/src/rules/finder-cache.ts +73 -0
  176. package/packages/omo-codex/plugin/components/rules/src/rules/finder-paths.ts +47 -0
  177. package/packages/omo-codex/plugin/components/rules/src/rules/finder-sources.ts +50 -0
  178. package/packages/omo-codex/plugin/components/rules/src/rules/finder.ts +207 -0
  179. package/packages/omo-codex/plugin/components/rules/src/rules/formatter.ts +123 -0
  180. package/packages/omo-codex/plugin/components/rules/src/rules/matcher.ts +142 -0
  181. package/packages/omo-codex/plugin/components/rules/src/rules/ordering.ts +33 -0
  182. package/packages/omo-codex/plugin/components/rules/src/rules/parser.ts +326 -0
  183. package/packages/omo-codex/plugin/components/rules/src/rules/plugin-root.ts +55 -0
  184. package/packages/omo-codex/plugin/components/rules/src/rules/project-root.ts +30 -0
  185. package/packages/omo-codex/plugin/components/rules/src/rules/scanner.ts +162 -0
  186. package/packages/omo-codex/plugin/components/rules/src/rules/truncator.ts +67 -0
  187. package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +141 -0
  188. package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +24 -0
  189. package/packages/omo-codex/plugin/components/rules/src/session-state-lock.ts +47 -0
  190. package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +56 -0
  191. package/packages/omo-codex/plugin/components/rules/src/tool-paths.ts +192 -0
  192. package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +44 -0
  193. package/packages/omo-codex/plugin/components/rules/src/transcript-search.ts +108 -0
  194. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +107 -0
  195. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +268 -0
  196. package/packages/omo-codex/plugin/components/rules/test/codex-hook-context-pressure.test.ts +243 -0
  197. package/packages/omo-codex/plugin/components/rules/test/codex-hook-performance.test.ts +99 -0
  198. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +132 -0
  199. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +156 -0
  200. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +299 -0
  201. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-lock.test.ts +46 -0
  202. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-process.test.ts +83 -0
  203. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +667 -0
  204. package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +192 -0
  205. package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +102 -0
  206. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +168 -0
  207. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +42 -0
  208. package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +206 -0
  209. package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +151 -0
  210. package/packages/omo-codex/plugin/components/rules/test/persistent-cache.test.ts +63 -0
  211. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +172 -0
  212. package/packages/omo-codex/plugin/components/rules/test/post-compact-test-fixture.ts +196 -0
  213. package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +63 -0
  214. package/packages/omo-codex/plugin/components/rules/test/tool-paths.test.ts +198 -0
  215. package/packages/omo-codex/plugin/components/rules/tsconfig.build.json +12 -0
  216. package/packages/omo-codex/plugin/components/rules/tsconfig.json +27 -0
  217. package/packages/omo-codex/plugin/components/rules/vitest.config.ts +8 -0
  218. package/packages/omo-codex/plugin/components/start-work-continuation/.gitattributes +13 -0
  219. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +43 -0
  220. package/packages/omo-codex/plugin/components/start-work-continuation/CHANGELOG.md +5 -0
  221. package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +21 -0
  222. package/packages/omo-codex/plugin/components/start-work-continuation/NOTICE +5 -0
  223. package/packages/omo-codex/plugin/components/start-work-continuation/README.md +55 -0
  224. package/packages/omo-codex/plugin/components/start-work-continuation/biome.json +48 -0
  225. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +51 -0
  226. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +28 -0
  227. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +53 -0
  228. package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +167 -0
  229. package/packages/omo-codex/plugin/components/start-work-continuation/src/cli.ts +52 -0
  230. package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +66 -0
  231. package/packages/omo-codex/plugin/components/start-work-continuation/src/directive.ts +6 -0
  232. package/packages/omo-codex/plugin/components/start-work-continuation/src/index.ts +5 -0
  233. package/packages/omo-codex/plugin/components/start-work-continuation/src/types.ts +23 -0
  234. package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +63 -0
  235. package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +124 -0
  236. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +160 -0
  237. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-completed.json +19 -0
  238. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-mixed-platforms.json +27 -0
  239. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-single-codex-work.json +19 -0
  240. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-all-done.md +5 -0
  241. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-nested-checkboxes.md +11 -0
  242. package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-unchecked.md +6 -0
  243. package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.build.json +12 -0
  244. package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.json +27 -0
  245. package/packages/omo-codex/plugin/components/start-work-continuation/vitest.config.ts +10 -0
  246. package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +37 -0
  247. package/packages/omo-codex/plugin/components/telemetry/README.md +102 -0
  248. package/packages/omo-codex/plugin/components/telemetry/biome.json +48 -0
  249. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +16 -0
  250. package/packages/omo-codex/plugin/components/telemetry/package.json +56 -0
  251. package/packages/omo-codex/plugin/components/telemetry/src/atomic-write.ts +22 -0
  252. package/packages/omo-codex/plugin/components/telemetry/src/cli.ts +69 -0
  253. package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +49 -0
  254. package/packages/omo-codex/plugin/components/telemetry/src/data-path.ts +45 -0
  255. package/packages/omo-codex/plugin/components/telemetry/src/env-flags.ts +43 -0
  256. package/packages/omo-codex/plugin/components/telemetry/src/posthog-activity-state.ts +81 -0
  257. package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +165 -0
  258. package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +35 -0
  259. package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +270 -0
  260. package/packages/omo-codex/plugin/components/telemetry/tsconfig.build.json +12 -0
  261. package/packages/omo-codex/plugin/components/telemetry/tsconfig.json +27 -0
  262. package/packages/omo-codex/plugin/components/telemetry/vitest.config.ts +8 -0
  263. package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +41 -0
  264. package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +25 -0
  265. package/packages/omo-codex/plugin/components/ultrawork/LICENSE +21 -0
  266. package/packages/omo-codex/plugin/components/ultrawork/NOTICE +5 -0
  267. package/packages/omo-codex/plugin/components/ultrawork/README.md +60 -0
  268. package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +17 -0
  269. package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +82 -0
  270. package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +221 -0
  271. package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +65 -0
  272. package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +69 -0
  273. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +163 -0
  274. package/packages/omo-codex/plugin/components/ultrawork/biome.json +48 -0
  275. package/packages/omo-codex/plugin/components/ultrawork/directive.md +264 -0
  276. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +16 -0
  277. package/packages/omo-codex/plugin/components/ultrawork/package.json +54 -0
  278. package/packages/omo-codex/plugin/components/ultrawork/src/cli.ts +50 -0
  279. package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +84 -0
  280. package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +3 -0
  281. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +252 -0
  282. package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +78 -0
  283. package/packages/omo-codex/plugin/components/ultrawork/tsconfig.build.json +12 -0
  284. package/packages/omo-codex/plugin/components/ultrawork/tsconfig.json +27 -0
  285. package/packages/omo-codex/plugin/components/ulw-loop/.gitattributes +13 -0
  286. package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +48 -0
  287. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +7 -0
  288. package/packages/omo-codex/plugin/components/ulw-loop/LICENSE +21 -0
  289. package/packages/omo-codex/plugin/components/ulw-loop/NOTICE +6 -0
  290. package/packages/omo-codex/plugin/components/ulw-loop/README.md +74 -0
  291. package/packages/omo-codex/plugin/components/ulw-loop/biome.json +48 -0
  292. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +29 -0
  293. package/packages/omo-codex/plugin/components/ulw-loop/package.json +55 -0
  294. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/.gitkeep +0 -0
  295. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +222 -0
  296. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/agents/openai.yaml +6 -0
  297. package/packages/omo-codex/plugin/components/ulw-loop/src/.gitkeep +0 -0
  298. package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +155 -0
  299. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +95 -0
  300. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +156 -0
  301. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +63 -0
  302. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +94 -0
  303. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +40 -0
  304. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +129 -0
  305. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +139 -0
  306. package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +177 -0
  307. package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +122 -0
  308. package/packages/omo-codex/plugin/components/ulw-loop/src/goal-status.ts +88 -0
  309. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +73 -0
  310. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +113 -0
  311. package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +124 -0
  312. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +102 -0
  313. package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +81 -0
  314. package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +270 -0
  315. package/packages/omo-codex/plugin/components/ulw-loop/src/types.ts +277 -0
  316. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +213 -0
  317. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +375 -0
  318. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +250 -0
  319. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering.test.ts +407 -0
  320. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +169 -0
  321. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +156 -0
  322. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +275 -0
  323. package/packages/omo-codex/plugin/components/ulw-loop/test/evidence-criteria-gate.test.ts +100 -0
  324. package/packages/omo-codex/plugin/components/ulw-loop/test/evidence.test.ts +263 -0
  325. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/.gitkeep +0 -0
  326. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/codex-goal-snapshot.json +1 -0
  327. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-brief.md +5 -0
  328. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-plan.json +108 -0
  329. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-quality-gate.json +18 -0
  330. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/steering-proposal.json +8 -0
  331. package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/user-prompt-submit.json +10 -0
  332. package/packages/omo-codex/plugin/components/ulw-loop/test/goal-status.test.ts +327 -0
  333. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +164 -0
  334. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +62 -0
  335. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-crud.test.ts +256 -0
  336. package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +239 -0
  337. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +203 -0
  338. package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +180 -0
  339. package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +353 -0
  340. package/packages/omo-codex/plugin/components/ulw-loop/test/types.test.ts +79 -0
  341. package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.build.json +12 -0
  342. package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.json +27 -0
  343. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +10 -0
  344. package/packages/omo-codex/plugin/hooks/hooks.json +138 -0
  345. package/packages/omo-codex/plugin/package-lock.json +1750 -0
  346. package/packages/omo-codex/plugin/package.json +26 -0
  347. package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +50 -0
  348. package/packages/omo-codex/plugin/scripts/build-components.mjs +23 -0
  349. package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +46 -0
  350. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +75 -0
  351. package/packages/omo-codex/plugin/skills/comment-checker/SKILL.md +16 -0
  352. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +116 -0
  353. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +108 -0
  354. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +130 -0
  355. package/packages/omo-codex/plugin/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
  356. package/packages/omo-codex/plugin/skills/debugging/references/methodology/05-escalate.md +69 -0
  357. package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +116 -0
  358. package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +94 -0
  359. package/packages/omo-codex/plugin/skills/debugging/references/methodology/09-cleanup.md +164 -0
  360. package/packages/omo-codex/plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
  361. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  362. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +252 -0
  363. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +484 -0
  364. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +260 -0
  365. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +248 -0
  366. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +234 -0
  367. package/packages/omo-codex/plugin/skills/debugging/references/tools/ghidra.md +212 -0
  368. package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +194 -0
  369. package/packages/omo-codex/plugin/skills/debugging/references/tools/pwndbg.md +263 -0
  370. package/packages/omo-codex/plugin/skills/debugging/references/tools/pwntools.md +265 -0
  371. package/packages/omo-codex/plugin/skills/frontend-ui-ux/SKILL.md +77 -0
  372. package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +325 -0
  373. package/packages/omo-codex/plugin/skills/lsp/SKILL.md +35 -0
  374. package/packages/omo-codex/plugin/skills/programming/SKILL.md +463 -0
  375. package/packages/omo-codex/plugin/skills/programming/references/go/README.md +90 -0
  376. package/packages/omo-codex/plugin/skills/programming/references/go/backend-stack.md +641 -0
  377. package/packages/omo-codex/plugin/skills/programming/references/go/bootstrap.md +328 -0
  378. package/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md +360 -0
  379. package/packages/omo-codex/plugin/skills/programming/references/go/cobra-stack.md +468 -0
  380. package/packages/omo-codex/plugin/skills/programming/references/go/concurrency.md +362 -0
  381. package/packages/omo-codex/plugin/skills/programming/references/go/data-modeling.md +329 -0
  382. package/packages/omo-codex/plugin/skills/programming/references/go/error-handling.md +359 -0
  383. package/packages/omo-codex/plugin/skills/programming/references/go/golangci-strict.md +236 -0
  384. package/packages/omo-codex/plugin/skills/programming/references/go/grpc-connect.md +375 -0
  385. package/packages/omo-codex/plugin/skills/programming/references/go/libraries.md +337 -0
  386. package/packages/omo-codex/plugin/skills/programming/references/go/one-liners.md +202 -0
  387. package/packages/omo-codex/plugin/skills/programming/references/go/sqlc-pgx.md +471 -0
  388. package/packages/omo-codex/plugin/skills/programming/references/go/testing.md +467 -0
  389. package/packages/omo-codex/plugin/skills/programming/references/go/type-patterns.md +298 -0
  390. package/packages/omo-codex/plugin/skills/programming/references/python/README.md +314 -0
  391. package/packages/omo-codex/plugin/skills/programming/references/python/async-anyio.md +442 -0
  392. package/packages/omo-codex/plugin/skills/programming/references/python/data-modeling.md +233 -0
  393. package/packages/omo-codex/plugin/skills/programming/references/python/data-processing.md +133 -0
  394. package/packages/omo-codex/plugin/skills/programming/references/python/error-handling.md +218 -0
  395. package/packages/omo-codex/plugin/skills/programming/references/python/fastapi-stack.md +316 -0
  396. package/packages/omo-codex/plugin/skills/programming/references/python/httpx2-optimization.md +360 -0
  397. package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +307 -0
  398. package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +268 -0
  399. package/packages/omo-codex/plugin/skills/programming/references/python/orjson-stack.md +378 -0
  400. package/packages/omo-codex/plugin/skills/programming/references/python/pydantic-ai.md +285 -0
  401. package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +232 -0
  402. package/packages/omo-codex/plugin/skills/programming/references/python/textual-tui.md +201 -0
  403. package/packages/omo-codex/plugin/skills/programming/references/python/type-patterns.md +176 -0
  404. package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +317 -0
  405. package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +299 -0
  406. package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +467 -0
  407. package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +317 -0
  408. package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +409 -0
  409. package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +375 -0
  410. package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +439 -0
  411. package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +291 -0
  412. package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +429 -0
  413. package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +354 -0
  414. package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +250 -0
  415. package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +527 -0
  416. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/README.md +289 -0
  417. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
  418. package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
  419. package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +195 -0
  420. package/packages/omo-codex/plugin/skills/programming/references/typescript/backend-hono.md +672 -0
  421. package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +199 -0
  422. package/packages/omo-codex/plugin/skills/programming/references/typescript/data-modeling.md +202 -0
  423. package/packages/omo-codex/plugin/skills/programming/references/typescript/error-handling.md +169 -0
  424. package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +152 -0
  425. package/packages/omo-codex/plugin/skills/programming/references/typescript/type-patterns.md +196 -0
  426. package/packages/omo-codex/plugin/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
  427. package/packages/omo-codex/plugin/skills/programming/scripts/go/new-project.py +138 -0
  428. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.editorconfig +13 -0
  429. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.golangci.yml +95 -0
  430. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
  431. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
  432. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
  433. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/ci.yml +37 -0
  434. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/config.go +24 -0
  435. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/gitignore +15 -0
  436. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
  437. package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/run.go +15 -0
  438. package/packages/omo-codex/plugin/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
  439. package/packages/omo-codex/plugin/skills/programming/scripts/python/new-project.py +172 -0
  440. package/packages/omo-codex/plugin/skills/programming/scripts/python/new-script.py +116 -0
  441. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
  442. package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
  443. package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +175 -0
  444. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
  445. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +177 -0
  446. package/packages/omo-codex/plugin/skills/refactor/SKILL.md +779 -0
  447. package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +333 -0
  448. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +549 -0
  449. package/packages/omo-codex/plugin/skills/rules/SKILL.md +34 -0
  450. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +129 -0
  451. package/packages/omo-codex/plugin/skills/ulw-loop/.gitkeep +0 -0
  452. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +222 -0
  453. package/packages/omo-codex/plugin/skills/ulw-loop/agents/openai.yaml +6 -0
  454. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +399 -0
  455. package/packages/omo-codex/plugin/test/aggregate.test.mjs +330 -0
  456. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +66 -0
  457. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +150 -0
  458. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +199 -0
  459. package/packages/omo-codex/scripts/install/agents.mjs +84 -0
  460. package/packages/omo-codex/scripts/install/cache.mjs +245 -0
  461. package/packages/omo-codex/scripts/install/command-shim.mjs +1 -0
  462. package/packages/omo-codex/scripts/install/config.mjs +229 -0
  463. package/packages/omo-codex/scripts/install/hook-trust.mjs +84 -0
  464. package/packages/omo-codex/scripts/install/legacy-bins.mjs +57 -0
  465. package/packages/omo-codex/scripts/install/marketplace.mjs +104 -0
  466. package/packages/omo-codex/scripts/install/mcp-runtime-cache.mjs +77 -0
  467. package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +32 -0
  468. package/packages/omo-codex/scripts/install/process.mjs +19 -0
  469. package/packages/omo-codex/scripts/install/snapshot.mjs +54 -0
  470. package/packages/omo-codex/scripts/install/toml-editor.mjs +47 -0
  471. package/packages/omo-codex/scripts/install/utils.mjs +15 -0
  472. package/packages/omo-codex/scripts/install-agent-links.test.mjs +104 -0
  473. package/packages/omo-codex/scripts/install-bin-links.test.mjs +123 -0
  474. package/packages/omo-codex/scripts/install-cache-copy.test.mjs +30 -0
  475. package/packages/omo-codex/scripts/install-config.test.mjs +118 -0
  476. package/packages/omo-codex/scripts/install-local.mjs +192 -0
  477. package/packages/omo-codex/scripts/install-local.test.mjs +379 -0
  478. package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +173 -0
  479. package/packages/omo-codex/scripts/install-test-fixtures.mjs +58 -0
  480. package/packages/omo-codex/scripts/sync-telemetry-component.mjs +115 -0
  481. package/packages/omo-codex/scripts/sync-telemetry-component.test.mjs +94 -0
  482. package/packages/shared-skills/index.mjs +5 -0
  483. package/packages/shared-skills/package.json +14 -0
  484. package/packages/shared-skills/skills/debugging/SKILL.md +116 -0
  485. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +108 -0
  486. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +130 -0
  487. package/packages/shared-skills/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
  488. package/packages/shared-skills/skills/debugging/references/methodology/05-escalate.md +69 -0
  489. package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +116 -0
  490. package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +94 -0
  491. package/packages/shared-skills/skills/debugging/references/methodology/09-cleanup.md +164 -0
  492. package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
  493. package/packages/shared-skills/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  494. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +252 -0
  495. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +484 -0
  496. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +260 -0
  497. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +248 -0
  498. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +234 -0
  499. package/packages/shared-skills/skills/debugging/references/tools/ghidra.md +212 -0
  500. package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +194 -0
  501. package/packages/shared-skills/skills/debugging/references/tools/pwndbg.md +263 -0
  502. package/packages/shared-skills/skills/debugging/references/tools/pwntools.md +265 -0
  503. package/packages/shared-skills/skills/frontend-ui-ux/SKILL.md +77 -0
  504. package/packages/shared-skills/skills/init-deep/SKILL.md +309 -0
  505. package/packages/shared-skills/skills/programming/SKILL.md +463 -0
  506. package/packages/shared-skills/skills/programming/references/go/README.md +90 -0
  507. package/packages/shared-skills/skills/programming/references/go/backend-stack.md +641 -0
  508. package/packages/shared-skills/skills/programming/references/go/bootstrap.md +328 -0
  509. package/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md +360 -0
  510. package/packages/shared-skills/skills/programming/references/go/cobra-stack.md +468 -0
  511. package/packages/shared-skills/skills/programming/references/go/concurrency.md +362 -0
  512. package/packages/shared-skills/skills/programming/references/go/data-modeling.md +329 -0
  513. package/packages/shared-skills/skills/programming/references/go/error-handling.md +359 -0
  514. package/packages/shared-skills/skills/programming/references/go/golangci-strict.md +236 -0
  515. package/packages/shared-skills/skills/programming/references/go/grpc-connect.md +375 -0
  516. package/packages/shared-skills/skills/programming/references/go/libraries.md +337 -0
  517. package/packages/shared-skills/skills/programming/references/go/one-liners.md +202 -0
  518. package/packages/shared-skills/skills/programming/references/go/sqlc-pgx.md +471 -0
  519. package/packages/shared-skills/skills/programming/references/go/testing.md +467 -0
  520. package/packages/shared-skills/skills/programming/references/go/type-patterns.md +298 -0
  521. package/packages/shared-skills/skills/programming/references/python/README.md +314 -0
  522. package/packages/shared-skills/skills/programming/references/python/async-anyio.md +442 -0
  523. package/packages/shared-skills/skills/programming/references/python/data-modeling.md +233 -0
  524. package/packages/shared-skills/skills/programming/references/python/data-processing.md +133 -0
  525. package/packages/shared-skills/skills/programming/references/python/error-handling.md +218 -0
  526. package/packages/shared-skills/skills/programming/references/python/fastapi-stack.md +316 -0
  527. package/packages/shared-skills/skills/programming/references/python/httpx2-optimization.md +360 -0
  528. package/packages/shared-skills/skills/programming/references/python/libraries.md +307 -0
  529. package/packages/shared-skills/skills/programming/references/python/one-liners.md +268 -0
  530. package/packages/shared-skills/skills/programming/references/python/orjson-stack.md +378 -0
  531. package/packages/shared-skills/skills/programming/references/python/pydantic-ai.md +285 -0
  532. package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +232 -0
  533. package/packages/shared-skills/skills/programming/references/python/textual-tui.md +201 -0
  534. package/packages/shared-skills/skills/programming/references/python/type-patterns.md +176 -0
  535. package/packages/shared-skills/skills/programming/references/rust/README.md +317 -0
  536. package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +299 -0
  537. package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +467 -0
  538. package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +317 -0
  539. package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +409 -0
  540. package/packages/shared-skills/skills/programming/references/rust/concurrency.md +375 -0
  541. package/packages/shared-skills/skills/programming/references/rust/libraries.md +439 -0
  542. package/packages/shared-skills/skills/programming/references/rust/one-liners.md +291 -0
  543. package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +429 -0
  544. package/packages/shared-skills/skills/programming/references/rust/type-state.md +354 -0
  545. package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +250 -0
  546. package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +527 -0
  547. package/packages/shared-skills/skills/programming/references/rust-ub/README.md +289 -0
  548. package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
  549. package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
  550. package/packages/shared-skills/skills/programming/references/typescript/README.md +195 -0
  551. package/packages/shared-skills/skills/programming/references/typescript/backend-hono.md +672 -0
  552. package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +199 -0
  553. package/packages/shared-skills/skills/programming/references/typescript/data-modeling.md +202 -0
  554. package/packages/shared-skills/skills/programming/references/typescript/error-handling.md +169 -0
  555. package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +152 -0
  556. package/packages/shared-skills/skills/programming/references/typescript/type-patterns.md +196 -0
  557. package/packages/shared-skills/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
  558. package/packages/shared-skills/skills/programming/scripts/go/new-project.py +138 -0
  559. package/packages/shared-skills/skills/programming/scripts/go/templates/.editorconfig +13 -0
  560. package/packages/shared-skills/skills/programming/scripts/go/templates/.golangci.yml +95 -0
  561. package/packages/shared-skills/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
  562. package/packages/shared-skills/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
  563. package/packages/shared-skills/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
  564. package/packages/shared-skills/skills/programming/scripts/go/templates/ci.yml +37 -0
  565. package/packages/shared-skills/skills/programming/scripts/go/templates/config.go +24 -0
  566. package/packages/shared-skills/skills/programming/scripts/go/templates/gitignore +15 -0
  567. package/packages/shared-skills/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
  568. package/packages/shared-skills/skills/programming/scripts/go/templates/run.go +15 -0
  569. package/packages/shared-skills/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
  570. package/packages/shared-skills/skills/programming/scripts/python/new-project.py +172 -0
  571. package/packages/shared-skills/skills/programming/scripts/python/new-script.py +116 -0
  572. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
  573. package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
  574. package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +175 -0
  575. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
  576. package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +177 -0
  577. package/packages/shared-skills/skills/refactor/SKILL.md +763 -0
  578. package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +317 -0
  579. package/packages/shared-skills/skills/review-work/SKILL.md +549 -0
  580. package/packages/shared-skills/skills/start-work/SKILL.md +129 -0
  581. package/packages/shared-skills/skills/ulw-plan/SKILL.md +383 -0
  582. package/postinstall.mjs +6 -2
  583. package/dist/features/builtin-commands/templates/init-deep.d.ts +0 -1
  584. package/dist/features/builtin-skills/skills/ai-slop-remover.d.ts +0 -2
@@ -53,7 +53,10 @@
53
53
  "frontend-ui-ux",
54
54
  "git-master",
55
55
  "review-work",
56
- "ai-slop-remover",
56
+ "remove-ai-slops",
57
+ "init-deep",
58
+ "security-research",
59
+ "security-review",
57
60
  "team-mode"
58
61
  ]
59
62
  }
@@ -69,7 +72,6 @@
69
72
  "items": {
70
73
  "type": "string",
71
74
  "enum": [
72
- "init-deep",
73
75
  "ralph-loop",
74
76
  "ulw-loop",
75
77
  "cancel-ralph",
@@ -4,9 +4,10 @@ export { resolveCategoryConfig } from "./category-config-resolver";
4
4
  export interface ConfigHandlerDeps {
5
5
  ctx: {
6
6
  directory: string;
7
- client?: any;
7
+ client?: unknown;
8
8
  };
9
9
  pluginConfig: OhMyOpenCodeConfig;
10
10
  modelCacheState: ModelCacheState;
11
+ runtimeSkillSourceUrl?: string;
11
12
  }
12
13
  export declare function createConfigHandler(deps: ConfigHandlerDeps): (config: Record<string, unknown>) => Promise<void>;
@@ -12,6 +12,12 @@ export interface ExternalSkillPluginResult {
12
12
  pluginName: string | null;
13
13
  allPlugins: string[];
14
14
  }
15
+ export interface DuplicateOmoPluginResult {
16
+ detected: boolean;
17
+ pluginName: string | null;
18
+ duplicatePlugins: string[];
19
+ allPlugins: string[];
20
+ }
15
21
  /**
16
22
  * Detect if any external notification plugin is configured.
17
23
  * Returns information about detected plugins for logging/warning.
@@ -22,6 +28,7 @@ export declare function detectExternalNotificationPlugin(directory: string): Ext
22
28
  * Returns information about detected plugins for logging/warning.
23
29
  */
24
30
  export declare function detectExternalSkillPlugin(directory: string): ExternalSkillPluginResult;
31
+ export declare function detectDuplicateOmoPlugin(directory: string): DuplicateOmoPluginResult;
25
32
  /**
26
33
  * Generate a warning message for users with conflicting notification plugins.
27
34
  */
@@ -30,3 +37,4 @@ export declare function getNotificationConflictWarning(pluginName: string): stri
30
37
  * Generate a warning message for users with conflicting skill plugins.
31
38
  */
32
39
  export declare function getSkillPluginConflictWarning(pluginName: string): string;
40
+ export declare function getDuplicateOmoPluginWarning(duplicatePlugins: readonly string[]): string;
@@ -0,0 +1 @@
1
+ export declare function isPromptMessageInspectionAborted(error: unknown): boolean;
@@ -1,4 +1,5 @@
1
1
  import type { PromptDispatchClient, PromptSessionName } from "./types";
2
+ export declare function latestAssistantTurnHasUnansweredQuestion(messages: unknown[]): boolean;
2
3
  export declare function latestAssistantTurnBlocksInternalPrompt(messages: unknown[]): boolean;
3
4
  export declare function sessionLatestAssistantBlocksInternalPrompt<TInput>(args: {
4
5
  readonly client: PromptDispatchClient;
@@ -0,0 +1,8 @@
1
+ export declare function messageRole(message: unknown): string | undefined;
2
+ export declare function messageFinish(message: unknown): string | true | undefined;
3
+ export declare function messageCompleted(message: unknown): boolean;
4
+ export declare function messageIsSyntheticOrInternalUser(message: unknown): boolean;
5
+ export declare function messageHasQuestionTool(message: unknown): boolean;
6
+ export declare function messageHasWaitingTool(message: unknown): boolean;
7
+ export declare function messageHasUnresolvedTool(message: unknown): boolean;
8
+ export declare function messageHasSubstantiveAssistantOutput(message: unknown): boolean;
@@ -4,6 +4,8 @@ export interface PromptTimeoutArgs {
4
4
  export interface PromptRetryOptions {
5
5
  timeoutMs?: number;
6
6
  queueBehavior?: "enqueue" | "defer";
7
+ checkStatus?: boolean;
8
+ checkToolState?: boolean;
7
9
  }
8
10
  export declare const PROMPT_TIMEOUT_MS = 120000;
9
11
  export declare function createPromptTimeoutContext(args: PromptTimeoutArgs, timeoutMs: number): {
@@ -4,12 +4,13 @@ import { createHooks } from "../create-hooks";
4
4
  import { createManagers } from "../create-managers";
5
5
  import { createRuntimeTmuxConfig, isTmuxIntegrationEnabled } from "../create-runtime-tmux-config";
6
6
  import { createTools } from "../create-tools";
7
+ import { createRuntimeSkillSourceServer } from "../features/opencode-runtime-skills";
7
8
  import { initializeOpenClaw } from "../openclaw";
8
9
  import { createPluginInterface } from "../plugin-interface";
9
10
  import { loadPluginConfig } from "../plugin-config";
10
11
  import { createModelCacheState } from "../plugin-state";
11
12
  import { installAgentSortShim, setAgentSortOrder } from "../shared/agent-sort-shim";
12
- import { detectExternalSkillPlugin, getSkillPluginConflictWarning } from "../shared/external-plugin-detector";
13
+ import { detectDuplicateOmoPlugin, detectExternalSkillPlugin, getDuplicateOmoPluginWarning, getSkillPluginConflictWarning } from "../shared/external-plugin-detector";
13
14
  import { createFirstMessageVariantGate } from "../shared/first-message-variant";
14
15
  import { initI18n } from "../shared/i18n";
15
16
  import { log } from "../shared/logger";
@@ -24,6 +25,8 @@ export type PluginModuleDeps = {
24
25
  log: typeof log;
25
26
  logLegacyPluginStartupWarning: typeof logLegacyPluginStartupWarning;
26
27
  migrateLegacyWorkspaceDirectory: typeof migrateLegacyWorkspaceDirectory;
28
+ detectDuplicateOmoPlugin: typeof detectDuplicateOmoPlugin;
29
+ getDuplicateOmoPluginWarning: typeof getDuplicateOmoPluginWarning;
27
30
  detectExternalSkillPlugin: typeof detectExternalSkillPlugin;
28
31
  getSkillPluginConflictWarning: typeof getSkillPluginConflictWarning;
29
32
  injectServerAuthIntoClient: typeof injectServerAuthIntoClient;
@@ -37,6 +40,7 @@ export type PluginModuleDeps = {
37
40
  createModelCacheState: typeof createModelCacheState;
38
41
  createManagers: typeof createManagers;
39
42
  createTools: typeof createTools;
43
+ createRuntimeSkillSourceServer: typeof createRuntimeSkillSourceServer;
40
44
  createHooks: typeof createHooks;
41
45
  createPluginInterface: typeof createPluginInterface;
42
46
  };
@@ -1,8 +1,8 @@
1
1
  import type { SisyphusAgentConfig } from "../../config/schema";
2
- import { promptSyncWithModelSuggestionRetry } from "../../shared/model-suggestion-retry";
2
+ import { promptWithModelSuggestionRetry } from "../../shared/model-suggestion-retry";
3
3
  import type { DelegatedModelConfig, DelegateTaskArgs, OpencodeClient } from "./types";
4
4
  type SendSyncPromptDeps = {
5
- promptSyncWithModelSuggestionRetry: typeof promptSyncWithModelSuggestionRetry;
5
+ promptWithModelSuggestionRetry: typeof promptWithModelSuggestionRetry;
6
6
  };
7
7
  export declare function buildSyncPromptTools(agentToUse: string): Record<string, boolean>;
8
8
  export declare function sendSyncPrompt(client: OpencodeClient, input: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "4.5.1",
3
+ "version": "4.5.12",
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",
@@ -15,11 +15,15 @@
15
15
  "packages/comment-checker-core",
16
16
  "packages/hashline-core",
17
17
  "packages/boulder-state",
18
- "packages/agents-md-core"
18
+ "packages/agents-md-core",
19
+ "packages/shared-skills",
20
+ "packages/omo-codex"
19
21
  ],
20
22
  "bin": {
21
23
  "oh-my-opencode": "bin/oh-my-opencode.js",
22
- "oh-my-openagent": "bin/oh-my-opencode.js"
24
+ "oh-my-openagent": "bin/oh-my-opencode.js",
25
+ "omo": "bin/oh-my-opencode.js",
26
+ "lazycodex": "bin/oh-my-opencode.js"
23
27
  },
24
28
  "files": [
25
29
  "dist",
@@ -30,7 +34,14 @@
30
34
  ".agents/command",
31
35
  ".agents/skills",
32
36
  "packages/lsp-tools-mcp/dist",
33
- "packages/ast-grep-mcp/dist"
37
+ "packages/ast-grep-mcp/dist",
38
+ "packages/shared-skills/package.json",
39
+ "packages/shared-skills/index.mjs",
40
+ "packages/shared-skills/skills",
41
+ "packages/omo-codex/marketplace.json",
42
+ "packages/omo-codex/plugin",
43
+ "packages/omo-codex/plugin/.codex-plugin",
44
+ "packages/omo-codex/scripts"
34
45
  ],
35
46
  "exports": {
36
47
  ".": {
@@ -54,9 +65,11 @@
54
65
  "prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build",
55
66
  "test:model-capabilities": "bun test src/shared/model-capability-aliases.test.ts src/shared/model-capability-guardrails.test.ts src/shared/model-capabilities.test.ts src/cli/doctor/checks/model-resolution.test.ts --bail",
56
67
  "typecheck": "tsgo --noEmit && bun run typecheck:packages",
57
- "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/ast-grep-core/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-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/boulder-state/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json",
68
+ "typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/ast-grep-core/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-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/boulder-state/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json",
58
69
  "typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
59
70
  "test": "bun test",
71
+ "test:codex": "bun run build:ast-grep-mcp && bun run build:lsp-tools-mcp && npm --prefix packages/omo-codex/plugin ci && bun run --cwd packages/omo-codex/plugin build && bun test src/cli/cli-installer.platform.test.ts src/cli/install-codex/codex-cache.test.ts src/cli/install-codex/codex-config-agent-cleanup.test.ts src/cli/install-codex/codex-config-toml.test.ts src/cli/install-codex/install-codex.test.ts src/cli/install-codex/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs packages/omo-codex/scripts/sync-telemetry-component.test.mjs",
72
+ "test:windows-codex": "bun run test:codex",
60
73
  "build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build"
61
74
  },
62
75
  "keywords": [
@@ -105,8 +118,10 @@
105
118
  "@oh-my-opencode/comment-checker-core": "workspace:*",
106
119
  "@oh-my-opencode/hashline-core": "workspace:*",
107
120
  "@oh-my-opencode/model-core": "workspace:*",
121
+ "@oh-my-opencode/omo-codex": "workspace:*",
108
122
  "@oh-my-opencode/prompts-core": "workspace:*",
109
123
  "@oh-my-opencode/rules-engine": "workspace:*",
124
+ "@oh-my-opencode/shared-skills": "workspace:*",
110
125
  "@oh-my-opencode/utils": "workspace:*",
111
126
  "@typescript/native-preview": "7.0.0-dev.20260518.1",
112
127
  "@types/js-yaml": "^4.0.9",
@@ -116,17 +131,17 @@
116
131
  "zod": "^4.4.3"
117
132
  },
118
133
  "optionalDependencies": {
119
- "oh-my-opencode-darwin-arm64": "4.5.1",
120
- "oh-my-opencode-darwin-x64": "4.5.1",
121
- "oh-my-opencode-darwin-x64-baseline": "4.5.1",
122
- "oh-my-opencode-linux-arm64": "4.5.1",
123
- "oh-my-opencode-linux-arm64-musl": "4.5.1",
124
- "oh-my-opencode-linux-x64": "4.5.1",
125
- "oh-my-opencode-linux-x64-baseline": "4.5.1",
126
- "oh-my-opencode-linux-x64-musl": "4.5.1",
127
- "oh-my-opencode-linux-x64-musl-baseline": "4.5.1",
128
- "oh-my-opencode-windows-x64": "4.5.1",
129
- "oh-my-opencode-windows-x64-baseline": "4.5.1"
134
+ "oh-my-opencode-darwin-arm64": "4.5.12",
135
+ "oh-my-opencode-darwin-x64": "4.5.12",
136
+ "oh-my-opencode-darwin-x64-baseline": "4.5.12",
137
+ "oh-my-opencode-linux-arm64": "4.5.12",
138
+ "oh-my-opencode-linux-arm64-musl": "4.5.12",
139
+ "oh-my-opencode-linux-x64": "4.5.12",
140
+ "oh-my-opencode-linux-x64-baseline": "4.5.12",
141
+ "oh-my-opencode-linux-x64-musl": "4.5.12",
142
+ "oh-my-opencode-linux-x64-musl-baseline": "4.5.12",
143
+ "oh-my-opencode-windows-x64": "4.5.12",
144
+ "oh-my-opencode-windows-x64-baseline": "4.5.12"
130
145
  },
131
146
  "overrides": {
132
147
  "hono": "^4.12.18",
@@ -3,8 +3,38 @@
3
3
  // src/cli.ts
4
4
  import { argv, stderr } from "node:process";
5
5
 
6
- // src/mcp.ts
7
- import { createInterface } from "node:readline";
6
+ // src/mcp-lifecycle-log.ts
7
+ import { appendFileSync, renameSync, statSync } from "node:fs";
8
+ import { tmpdir } from "node:os";
9
+ import { join } from "node:path";
10
+ var LOG_FILE_NAME = "omo-ast-grep-mcp.log";
11
+ var MAX_LOG_BYTES = 5 * 1024 * 1024;
12
+ function mcpLifecycleLogPath() {
13
+ return join(tmpdir(), LOG_FILE_NAME);
14
+ }
15
+ function writeMcpLifecycleLog(event, fields = {}) {
16
+ const path = mcpLifecycleLogPath();
17
+ try {
18
+ rotateLogIfNeeded(path);
19
+ appendFileSync(path, `${JSON.stringify({ ts: new Date().toISOString(), event, pid: process.pid, ppid: process.ppid, ...fields })}
20
+ `);
21
+ } catch (error) {
22
+ if (error instanceof Error)
23
+ return;
24
+ return;
25
+ }
26
+ }
27
+ function rotateLogIfNeeded(path) {
28
+ try {
29
+ if (statSync(path).size < MAX_LOG_BYTES)
30
+ return;
31
+ renameSync(path, `${path}.1`);
32
+ } catch (error) {
33
+ if (error instanceof Error)
34
+ return;
35
+ return;
36
+ }
37
+ }
8
38
 
9
39
  // ../ast-grep-core/src/language-support.ts
10
40
  var CLI_LANGUAGES = [
@@ -310,11 +340,11 @@ function errorMessage(error) {
310
340
  }
311
341
  // src/sg-cli-path.ts
312
342
  import { createRequire } from "module";
313
- import { dirname, join } from "path";
314
- import { existsSync, statSync } from "fs";
343
+ import { dirname, join as join2 } from "path";
344
+ import { existsSync, statSync as statSync2 } from "fs";
315
345
  function isValidBinary(filePath) {
316
346
  try {
317
- return statSync(filePath).size > 1e4;
347
+ return statSync2(filePath).size > 1e4;
318
348
  } catch {
319
349
  return false;
320
350
  }
@@ -339,7 +369,7 @@ function findSgCliPathSync() {
339
369
  const require2 = createRequire(import.meta.url);
340
370
  const cliPackageJsonPath = require2.resolve("@ast-grep/cli/package.json");
341
371
  const cliDirectory = dirname(cliPackageJsonPath);
342
- const sgPath = join(cliDirectory, binaryName);
372
+ const sgPath = join2(cliDirectory, binaryName);
343
373
  if (existsSync(sgPath) && isValidBinary(sgPath)) {
344
374
  return sgPath;
345
375
  }
@@ -351,7 +381,7 @@ function findSgCliPathSync() {
351
381
  const packageJsonPath = require2.resolve(`${platformPackage}/package.json`);
352
382
  const packageDirectory = dirname(packageJsonPath);
353
383
  const astGrepBinaryName = process.platform === "win32" ? "ast-grep.exe" : "ast-grep";
354
- const binaryPath = join(packageDirectory, astGrepBinaryName);
384
+ const binaryPath = join2(packageDirectory, astGrepBinaryName);
355
385
  if (existsSync(binaryPath) && isValidBinary(binaryPath)) {
356
386
  return binaryPath;
357
387
  }
@@ -382,6 +412,192 @@ function getSgCliPath() {
382
412
  function setSgCliPath(path) {
383
413
  resolvedCliPath = path;
384
414
  }
415
+ // src/mcp-stdio-transport.ts
416
+ var HEADER_SEPARATOR = Buffer.from(`\r
417
+ \r
418
+ `);
419
+ async function* readStdioJsonRpcMessages(input) {
420
+ let buffer = Buffer.alloc(0);
421
+ for await (const chunk of input) {
422
+ buffer = Buffer.concat([buffer, bufferFromChunk(chunk)]);
423
+ while (true) {
424
+ const result = readNextMessage(buffer);
425
+ if (result.kind === "incomplete")
426
+ break;
427
+ buffer = result.remaining;
428
+ if (result.message)
429
+ yield result.message;
430
+ }
431
+ }
432
+ const trailing = buffer.toString("utf8").trim();
433
+ if (trailing.length > 0) {
434
+ yield parseJsonPayload(trailing, "line");
435
+ }
436
+ }
437
+ function writeStdioJsonRpcResponse(output, response, responseMode) {
438
+ const body = JSON.stringify(response);
439
+ if (responseMode === "framed") {
440
+ output.write(`Content-Length: ${Buffer.byteLength(body, "utf8")}\r
441
+ \r
442
+ ${body}`);
443
+ return;
444
+ }
445
+ output.write(`${body}
446
+ `);
447
+ }
448
+ function readNextMessage(buffer) {
449
+ if (buffer.length === 0)
450
+ return { kind: "incomplete" };
451
+ return startsWithContentLength(buffer) ? readFramedMessage(buffer) : readLineMessage(buffer);
452
+ }
453
+ function readLineMessage(buffer) {
454
+ const newlineIndex = buffer.indexOf(10);
455
+ if (newlineIndex === -1)
456
+ return { kind: "incomplete" };
457
+ const line = buffer.subarray(0, newlineIndex).toString("utf8").replace(/\r$/, "");
458
+ if (line.trim().length === 0) {
459
+ return {
460
+ kind: "complete",
461
+ remaining: buffer.subarray(newlineIndex + 1)
462
+ };
463
+ }
464
+ return {
465
+ kind: "complete",
466
+ message: parseJsonPayload(line, "line"),
467
+ remaining: buffer.subarray(newlineIndex + 1)
468
+ };
469
+ }
470
+ function readFramedMessage(buffer) {
471
+ const separatorIndex = buffer.indexOf(HEADER_SEPARATOR);
472
+ if (separatorIndex === -1)
473
+ return { kind: "incomplete" };
474
+ const headers = buffer.subarray(0, separatorIndex).toString("ascii");
475
+ const contentLength = parseContentLength(headers);
476
+ const bodyStart = separatorIndex + HEADER_SEPARATOR.length;
477
+ if (contentLength === undefined) {
478
+ return {
479
+ kind: "complete",
480
+ message: {
481
+ kind: "parse_error",
482
+ message: "Missing or invalid Content-Length header",
483
+ responseMode: "framed"
484
+ },
485
+ remaining: buffer.subarray(bodyStart)
486
+ };
487
+ }
488
+ const bodyEnd = bodyStart + contentLength;
489
+ if (buffer.length < bodyEnd)
490
+ return { kind: "incomplete" };
491
+ const body = buffer.subarray(bodyStart, bodyEnd).toString("utf8");
492
+ return {
493
+ kind: "complete",
494
+ message: parseJsonPayload(body, "framed"),
495
+ remaining: buffer.subarray(bodyEnd)
496
+ };
497
+ }
498
+ function startsWithContentLength(buffer) {
499
+ const prefix = buffer.subarray(0, "content-length:".length).toString("ascii").toLowerCase();
500
+ return prefix === "content-length:";
501
+ }
502
+ function parseContentLength(headers) {
503
+ for (const line of headers.split(`\r
504
+ `)) {
505
+ const match = /^content-length:\s*(\d+)$/i.exec(line);
506
+ if (match === null)
507
+ continue;
508
+ const value = match[1];
509
+ if (value === undefined)
510
+ return;
511
+ return Number(value);
512
+ }
513
+ return;
514
+ }
515
+ function parseJsonPayload(payload, responseMode) {
516
+ try {
517
+ return { kind: "request", payload: JSON.parse(payload), responseMode };
518
+ } catch (error) {
519
+ return { kind: "parse_error", message: messageFromError(error), responseMode };
520
+ }
521
+ }
522
+ function bufferFromChunk(chunk) {
523
+ if (Buffer.isBuffer(chunk))
524
+ return chunk;
525
+ if (typeof chunk === "string")
526
+ return Buffer.from(chunk);
527
+ throw new TypeError(`Unsupported stdio chunk type: ${typeof chunk}`);
528
+ }
529
+ function messageFromError(error) {
530
+ return error instanceof Error ? error.message : String(error);
531
+ }
532
+
533
+ // src/mcp-stdio-server.ts
534
+ var DEFAULT_IDLE_TIMEOUT_MS = 10 * 60000;
535
+ var noopLog = () => {};
536
+ async function runJsonRpcStdioServer(handler, input, output, options, stdioOptions = {}) {
537
+ const log = stdioOptions.log ?? noopLog;
538
+ const idleTimeoutMs = stdioOptions.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS;
539
+ const idleTimer = createIdleTimer(idleTimeoutMs, log, stdioOptions.onIdleTimeout);
540
+ log("stdio_started", { cwd: process.cwd(), idle_timeout_ms: idleTimeoutMs });
541
+ idleTimer.arm();
542
+ try {
543
+ for await (const message of readStdioJsonRpcMessages(input)) {
544
+ if (idleTimer.closed())
545
+ break;
546
+ idleTimer.arm();
547
+ if (message.kind === "parse_error") {
548
+ log("parse_error", { message: message.message });
549
+ writeStdioJsonRpcResponse(output, errorResponse(null, -32700, "Parse error", message.message), message.responseMode);
550
+ continue;
551
+ }
552
+ const parsed = message.payload;
553
+ const id = isRecord(parsed) ? jsonRpcId(parsed.id) : null;
554
+ const method = isRecord(parsed) && typeof parsed.method === "string" ? parsed.method : null;
555
+ log("request", { id: id === null ? null : String(id), method });
556
+ const response = await handler(parsed, options);
557
+ if (response) {
558
+ writeStdioJsonRpcResponse(output, response, message.responseMode);
559
+ log("response", { id: String(response.id), method, is_error: response.error !== undefined });
560
+ }
561
+ }
562
+ } finally {
563
+ idleTimer.clear();
564
+ log("stdio_stopped");
565
+ }
566
+ }
567
+ function createIdleTimer(idleTimeoutMs, log, onIdleTimeout) {
568
+ let timer = null;
569
+ let isClosed = false;
570
+ return {
571
+ arm: () => {
572
+ if (timer !== null)
573
+ clearTimeout(timer);
574
+ if (idleTimeoutMs <= 0)
575
+ return;
576
+ timer = setTimeout(() => {
577
+ isClosed = true;
578
+ log("idle_timeout", { idle_timeout_ms: idleTimeoutMs });
579
+ onIdleTimeout?.();
580
+ }, idleTimeoutMs);
581
+ timer.unref();
582
+ },
583
+ clear: () => {
584
+ if (timer === null)
585
+ return;
586
+ clearTimeout(timer);
587
+ timer = null;
588
+ },
589
+ closed: () => isClosed
590
+ };
591
+ }
592
+ function errorResponse(id, code, message, data) {
593
+ return { jsonrpc: "2.0", id, error: data === undefined ? { code, message } : { code, message, data } };
594
+ }
595
+ function jsonRpcId(value) {
596
+ return typeof value === "string" || typeof value === "number" || value === null ? value : null;
597
+ }
598
+ function isRecord(value) {
599
+ return typeof value === "object" && value !== null && !Array.isArray(value);
600
+ }
385
601
  // src/runner.ts
386
602
  import { existsSync as existsSync3 } from "node:fs";
387
603
 
@@ -692,9 +908,9 @@ var AST_GREP_MCP_TOOLS = [
692
908
  }
693
909
  ];
694
910
  async function handleAstGrepMcpRequest(input, options = {}) {
695
- if (!isRecord(input))
696
- return errorResponse(null, -32600, "Invalid Request");
697
- const id = jsonRpcId(input.id);
911
+ if (!isRecord2(input))
912
+ return errorResponse2(null, -32600, "Invalid Request");
913
+ const id = jsonRpcId2(input.id);
698
914
  if (input.method === "notifications/initialized")
699
915
  return;
700
916
  if (input.method === "ping")
@@ -710,35 +926,19 @@ async function handleAstGrepMcpRequest(input, options = {}) {
710
926
  return successResponse(id, { tools: enabledTools(options) });
711
927
  if (input.method === "tools/call")
712
928
  return handleToolCall(id, input.params, options);
713
- return errorResponse(id, -32601, `Method not found: ${String(input.method)}`);
929
+ return errorResponse2(id, -32601, `Method not found: ${String(input.method)}`);
714
930
  }
715
- async function runMcpStdioServer(input = process.stdin, output = process.stdout, options = {}) {
716
- const lines = createInterface({ input, crlfDelay: Number.POSITIVE_INFINITY });
717
- for await (const line of lines) {
718
- if (!line.trim())
719
- continue;
720
- let parsed;
721
- try {
722
- parsed = JSON.parse(line);
723
- } catch (error) {
724
- output.write(`${JSON.stringify(errorResponse(null, -32700, "Parse error", messageFromError(error)))}
725
- `);
726
- continue;
727
- }
728
- const response = await handleAstGrepMcpRequest(parsed, options);
729
- if (response)
730
- output.write(`${JSON.stringify(response)}
731
- `);
732
- }
931
+ async function runMcpStdioServer(input = process.stdin, output = process.stdout, options = {}, stdioOptions = {}) {
932
+ await runJsonRpcStdioServer(handleAstGrepMcpRequest, input, output, options, stdioOptions);
733
933
  }
734
934
  async function handleToolCall(id, params, options) {
735
- if (!isRecord(params) || typeof params.name !== "string")
736
- return errorResponse(id, -32602, "tools/call requires params.name");
935
+ if (!isRecord2(params) || typeof params.name !== "string")
936
+ return errorResponse2(id, -32602, "tools/call requires params.name");
737
937
  try {
738
938
  const result = await executeAstGrepTool(params.name, params.arguments, options);
739
939
  return successResponse(id, { content: result.content, isError: result.isError ?? false });
740
940
  } catch (error) {
741
- return successResponse(id, { content: [{ type: "text", text: messageFromError(error) }], isError: true });
941
+ return successResponse(id, { content: [{ type: "text", text: messageFromError2(error) }], isError: true });
742
942
  }
743
943
  }
744
944
  async function executeAstGrepTool(name, args, options) {
@@ -794,7 +994,7 @@ function parseReplaceArgs(args, workspaceDirectory) {
794
994
  };
795
995
  }
796
996
  function requireRecord(value) {
797
- if (!isRecord(value))
997
+ if (!isRecord2(value))
798
998
  throw new Error("Tool arguments must be an object");
799
999
  return value;
800
1000
  }
@@ -849,21 +1049,21 @@ function optionalBoolean(input, key) {
849
1049
  function successResponse(id, result) {
850
1050
  return { jsonrpc: "2.0", id, result };
851
1051
  }
852
- function errorResponse(id, code, message, data) {
1052
+ function errorResponse2(id, code, message, data) {
853
1053
  return { jsonrpc: "2.0", id, error: data === undefined ? { code, message } : { code, message, data } };
854
1054
  }
855
1055
  function requestedProtocolVersion(params) {
856
- if (!isRecord(params) || typeof params.protocolVersion !== "string")
1056
+ if (!isRecord2(params) || typeof params.protocolVersion !== "string")
857
1057
  return "2024-11-05";
858
1058
  return params.protocolVersion;
859
1059
  }
860
- function jsonRpcId(value) {
1060
+ function jsonRpcId2(value) {
861
1061
  return typeof value === "string" || typeof value === "number" || value === null ? value : null;
862
1062
  }
863
- function isRecord(value) {
1063
+ function isRecord2(value) {
864
1064
  return typeof value === "object" && value !== null && !Array.isArray(value);
865
1065
  }
866
- function messageFromError(error) {
1066
+ function messageFromError2(error) {
867
1067
  return error instanceof Error ? error.message : String(error);
868
1068
  }
869
1069
 
@@ -871,10 +1071,15 @@ function messageFromError(error) {
871
1071
  async function main() {
872
1072
  const [command = "mcp"] = argv.slice(2);
873
1073
  if (command === "mcp") {
874
- await runMcpStdioServer();
1074
+ await runMcpStdioServer(process.stdin, process.stdout, {}, {
1075
+ log: writeMcpLifecycleLog,
1076
+ onIdleTimeout: () => {
1077
+ process.exit(0);
1078
+ }
1079
+ });
875
1080
  return;
876
1081
  }
877
- stderr.write(`Usage: ast-grep-mcp [mcp]
1082
+ stderr.write(`Usage: omo-ast-grep [mcp]
878
1083
  `);
879
1084
  process.exitCode = 2;
880
1085
  }
@@ -9,7 +9,7 @@ async function main() {
9
9
  await runMcpStdioServer();
10
10
  return;
11
11
  }
12
- stderr.write("Usage: lsp-tools-mcp [mcp]\n");
12
+ stderr.write("Usage: omo-lsp [mcp]\n");
13
13
  process.exitCode = 2;
14
14
  }
15
15
  finally {
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "sisyphuslabs",
3
+ "interface": {
4
+ "displayName": "Sisyphus Labs"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "omo",
9
+ "source": "./plugins/omo",
10
+ "category": "Developer Tools",
11
+ "policy": {
12
+ "installation": "AVAILABLE",
13
+ "authentication": "ON_INSTALL"
14
+ }
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "omo",
3
+ "version": "0.1.0",
4
+ "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
+ "author": {
6
+ "name": "Yeongyu Kim",
7
+ "email": "yeongyu@users.noreply.github.com",
8
+ "url": "https://github.com/code-yeongyu"
9
+ },
10
+ "homepage": "https://github.com/sisyphuslabs/omo",
11
+ "repository": "https://github.com/sisyphuslabs/omo",
12
+ "license": "MIT",
13
+ "keywords": ["codex", "codex-plugin", "omo", "hooks", "mcp", "skills"],
14
+ "skills": "./skills/",
15
+ "hooks": "./hooks/hooks.json",
16
+ "mcpServers": "./.mcp.json",
17
+ "interface": {
18
+ "displayName": "OMO",
19
+ "shortDescription": "Unified local Codex components",
20
+ "longDescription": "OMO exposes the local Codex Rules, Comment Checker, LSP, Ultrawork, and ulw-loop components as one plugin namespace while keeping each component isolated under components/ for maintenance.",
21
+ "developerName": "Yeongyu Kim",
22
+ "category": "Developer Tools",
23
+ "capabilities": ["Hooks", "MCP Tools", "Code Intelligence", "Workflow", "Context Injection"],
24
+ "websiteURL": "https://github.com/sisyphuslabs/omo",
25
+ "privacyPolicyURL": "https://github.com/sisyphuslabs/omo#privacy",
26
+ "termsOfServiceURL": "https://github.com/sisyphuslabs/omo#license",
27
+ "defaultPrompt": [
28
+ "Use OMO LSP diagnostics on this workspace.",
29
+ "Show which OMO rules matched this file.",
30
+ "ulw: run this change with evidence."
31
+ ],
32
+ "brandColor": "#7C3AED",
33
+ "screenshots": []
34
+ }
35
+ }