opencode-repos 0.2.0 → 0.3.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 (475) hide show
  1. package/AGENTS.md +180 -0
  2. package/README.md +103 -3
  3. package/TODO.md +3 -0
  4. package/index.ts +1590 -158
  5. package/oh-my-opencode/.github/FUNDING.yml +15 -0
  6. package/oh-my-opencode/.github/ISSUE_TEMPLATE/bug_report.yml +129 -0
  7. package/oh-my-opencode/.github/ISSUE_TEMPLATE/config.yml +8 -0
  8. package/oh-my-opencode/.github/ISSUE_TEMPLATE/feature_request.yml +100 -0
  9. package/oh-my-opencode/.github/ISSUE_TEMPLATE/general.yml +83 -0
  10. package/oh-my-opencode/.github/assets/google.jpg +0 -0
  11. package/oh-my-opencode/.github/assets/hero.jpg +0 -0
  12. package/oh-my-opencode/.github/assets/indent.jpg +0 -0
  13. package/oh-my-opencode/.github/assets/microsoft.jpg +0 -0
  14. package/oh-my-opencode/.github/assets/omo.png +0 -0
  15. package/oh-my-opencode/.github/assets/orchestrator-atlas.png +0 -0
  16. package/oh-my-opencode/.github/assets/sisyphus.png +0 -0
  17. package/oh-my-opencode/.github/assets/sisyphuslabs.png +0 -0
  18. package/oh-my-opencode/.github/pull_request_template.md +34 -0
  19. package/oh-my-opencode/.github/workflows/ci.yml +138 -0
  20. package/oh-my-opencode/.github/workflows/cla.yml +41 -0
  21. package/oh-my-opencode/.github/workflows/lint-workflows.yml +22 -0
  22. package/oh-my-opencode/.github/workflows/publish.yml +165 -0
  23. package/oh-my-opencode/.github/workflows/sisyphus-agent.yml +500 -0
  24. package/oh-my-opencode/.opencode/background-tasks.json +27 -0
  25. package/oh-my-opencode/.opencode/command/get-unpublished-changes.md +84 -0
  26. package/oh-my-opencode/.opencode/command/omomomo.md +37 -0
  27. package/oh-my-opencode/.opencode/command/publish.md +257 -0
  28. package/oh-my-opencode/AGENTS.md +179 -0
  29. package/oh-my-opencode/CLA.md +58 -0
  30. package/oh-my-opencode/CONTRIBUTING.md +268 -0
  31. package/oh-my-opencode/LICENSE.md +82 -0
  32. package/oh-my-opencode/README.ja.md +370 -0
  33. package/oh-my-opencode/README.md +376 -0
  34. package/oh-my-opencode/README.zh-cn.md +380 -0
  35. package/oh-my-opencode/assets/oh-my-opencode.schema.json +2171 -0
  36. package/oh-my-opencode/bin/oh-my-opencode.js +80 -0
  37. package/oh-my-opencode/bin/platform.js +38 -0
  38. package/oh-my-opencode/bin/platform.test.ts +148 -0
  39. package/oh-my-opencode/bun.lock +314 -0
  40. package/oh-my-opencode/bunfig.toml +2 -0
  41. package/oh-my-opencode/docs/category-skill-guide.md +200 -0
  42. package/oh-my-opencode/docs/cli-guide.md +272 -0
  43. package/oh-my-opencode/docs/configurations.md +654 -0
  44. package/oh-my-opencode/docs/features.md +550 -0
  45. package/oh-my-opencode/docs/guide/installation.md +288 -0
  46. package/oh-my-opencode/docs/guide/overview.md +97 -0
  47. package/oh-my-opencode/docs/guide/understanding-orchestration-system.md +445 -0
  48. package/oh-my-opencode/docs/orchestration-guide.md +152 -0
  49. package/oh-my-opencode/docs/ultrawork-manifesto.md +197 -0
  50. package/oh-my-opencode/package.json +89 -0
  51. package/oh-my-opencode/packages/darwin-arm64/bin/.gitkeep +0 -0
  52. package/oh-my-opencode/packages/darwin-arm64/package.json +22 -0
  53. package/oh-my-opencode/packages/darwin-x64/bin/.gitkeep +0 -0
  54. package/oh-my-opencode/packages/darwin-x64/package.json +22 -0
  55. package/oh-my-opencode/packages/linux-arm64/bin/.gitkeep +0 -0
  56. package/oh-my-opencode/packages/linux-arm64/package.json +25 -0
  57. package/oh-my-opencode/packages/linux-arm64-musl/bin/.gitkeep +0 -0
  58. package/oh-my-opencode/packages/linux-arm64-musl/package.json +25 -0
  59. package/oh-my-opencode/packages/linux-x64/bin/.gitkeep +0 -0
  60. package/oh-my-opencode/packages/linux-x64/package.json +25 -0
  61. package/oh-my-opencode/packages/linux-x64-musl/bin/.gitkeep +0 -0
  62. package/oh-my-opencode/packages/linux-x64-musl/package.json +25 -0
  63. package/oh-my-opencode/packages/windows-x64/bin/.gitkeep +0 -0
  64. package/oh-my-opencode/packages/windows-x64/package.json +22 -0
  65. package/oh-my-opencode/postinstall.mjs +43 -0
  66. package/oh-my-opencode/script/build-binaries.ts +103 -0
  67. package/oh-my-opencode/script/build-schema.ts +28 -0
  68. package/oh-my-opencode/script/generate-changelog.ts +92 -0
  69. package/oh-my-opencode/script/publish.ts +344 -0
  70. package/oh-my-opencode/signatures/cla.json +676 -0
  71. package/oh-my-opencode/src/agents/AGENTS.md +67 -0
  72. package/oh-my-opencode/src/agents/atlas.ts +1383 -0
  73. package/oh-my-opencode/src/agents/dynamic-agent-prompt-builder.ts +400 -0
  74. package/oh-my-opencode/src/agents/explore.ts +122 -0
  75. package/oh-my-opencode/src/agents/index.ts +13 -0
  76. package/oh-my-opencode/src/agents/librarian.ts +326 -0
  77. package/oh-my-opencode/src/agents/metis.ts +315 -0
  78. package/oh-my-opencode/src/agents/momus.test.ts +57 -0
  79. package/oh-my-opencode/src/agents/momus.ts +444 -0
  80. package/oh-my-opencode/src/agents/multimodal-looker.ts +56 -0
  81. package/oh-my-opencode/src/agents/oracle.ts +122 -0
  82. package/oh-my-opencode/src/agents/prometheus-prompt.test.ts +22 -0
  83. package/oh-my-opencode/src/agents/prometheus-prompt.ts +1196 -0
  84. package/oh-my-opencode/src/agents/sisyphus-junior.test.ts +232 -0
  85. package/oh-my-opencode/src/agents/sisyphus-junior.ts +134 -0
  86. package/oh-my-opencode/src/agents/sisyphus.ts +633 -0
  87. package/oh-my-opencode/src/agents/types.ts +80 -0
  88. package/oh-my-opencode/src/agents/utils.test.ts +311 -0
  89. package/oh-my-opencode/src/agents/utils.ts +240 -0
  90. package/oh-my-opencode/src/cli/AGENTS.md +91 -0
  91. package/oh-my-opencode/src/cli/config-manager.test.ts +364 -0
  92. package/oh-my-opencode/src/cli/config-manager.ts +641 -0
  93. package/oh-my-opencode/src/cli/doctor/checks/auth.test.ts +114 -0
  94. package/oh-my-opencode/src/cli/doctor/checks/auth.ts +115 -0
  95. package/oh-my-opencode/src/cli/doctor/checks/config.test.ts +103 -0
  96. package/oh-my-opencode/src/cli/doctor/checks/config.ts +123 -0
  97. package/oh-my-opencode/src/cli/doctor/checks/dependencies.test.ts +152 -0
  98. package/oh-my-opencode/src/cli/doctor/checks/dependencies.ts +163 -0
  99. package/oh-my-opencode/src/cli/doctor/checks/gh.test.ts +151 -0
  100. package/oh-my-opencode/src/cli/doctor/checks/gh.ts +171 -0
  101. package/oh-my-opencode/src/cli/doctor/checks/index.ts +34 -0
  102. package/oh-my-opencode/src/cli/doctor/checks/lsp.test.ts +134 -0
  103. package/oh-my-opencode/src/cli/doctor/checks/lsp.ts +77 -0
  104. package/oh-my-opencode/src/cli/doctor/checks/mcp.test.ts +115 -0
  105. package/oh-my-opencode/src/cli/doctor/checks/mcp.ts +128 -0
  106. package/oh-my-opencode/src/cli/doctor/checks/opencode.test.ts +227 -0
  107. package/oh-my-opencode/src/cli/doctor/checks/opencode.ts +178 -0
  108. package/oh-my-opencode/src/cli/doctor/checks/plugin.test.ts +109 -0
  109. package/oh-my-opencode/src/cli/doctor/checks/plugin.ts +124 -0
  110. package/oh-my-opencode/src/cli/doctor/checks/version.test.ts +148 -0
  111. package/oh-my-opencode/src/cli/doctor/checks/version.ts +135 -0
  112. package/oh-my-opencode/src/cli/doctor/constants.ts +72 -0
  113. package/oh-my-opencode/src/cli/doctor/formatter.test.ts +218 -0
  114. package/oh-my-opencode/src/cli/doctor/formatter.ts +140 -0
  115. package/oh-my-opencode/src/cli/doctor/index.ts +11 -0
  116. package/oh-my-opencode/src/cli/doctor/runner.test.ts +153 -0
  117. package/oh-my-opencode/src/cli/doctor/runner.ts +132 -0
  118. package/oh-my-opencode/src/cli/doctor/types.ts +113 -0
  119. package/oh-my-opencode/src/cli/get-local-version/formatter.ts +66 -0
  120. package/oh-my-opencode/src/cli/get-local-version/index.ts +106 -0
  121. package/oh-my-opencode/src/cli/get-local-version/types.ts +14 -0
  122. package/oh-my-opencode/src/cli/index.ts +153 -0
  123. package/oh-my-opencode/src/cli/install.ts +523 -0
  124. package/oh-my-opencode/src/cli/model-fallback.ts +246 -0
  125. package/oh-my-opencode/src/cli/run/completion.test.ts +170 -0
  126. package/oh-my-opencode/src/cli/run/completion.ts +79 -0
  127. package/oh-my-opencode/src/cli/run/events.test.ts +155 -0
  128. package/oh-my-opencode/src/cli/run/events.ts +325 -0
  129. package/oh-my-opencode/src/cli/run/index.ts +2 -0
  130. package/oh-my-opencode/src/cli/run/runner.ts +159 -0
  131. package/oh-my-opencode/src/cli/run/types.ts +76 -0
  132. package/oh-my-opencode/src/cli/types.ts +40 -0
  133. package/oh-my-opencode/src/config/index.ts +26 -0
  134. package/oh-my-opencode/src/config/schema.test.ts +444 -0
  135. package/oh-my-opencode/src/config/schema.ts +339 -0
  136. package/oh-my-opencode/src/features/AGENTS.md +77 -0
  137. package/oh-my-opencode/src/features/background-agent/concurrency.test.ts +418 -0
  138. package/oh-my-opencode/src/features/background-agent/concurrency.ts +137 -0
  139. package/oh-my-opencode/src/features/background-agent/index.ts +3 -0
  140. package/oh-my-opencode/src/features/background-agent/manager.test.ts +1928 -0
  141. package/oh-my-opencode/src/features/background-agent/manager.ts +1335 -0
  142. package/oh-my-opencode/src/features/background-agent/types.ts +66 -0
  143. package/oh-my-opencode/src/features/boulder-state/constants.ts +13 -0
  144. package/oh-my-opencode/src/features/boulder-state/index.ts +3 -0
  145. package/oh-my-opencode/src/features/boulder-state/storage.test.ts +250 -0
  146. package/oh-my-opencode/src/features/boulder-state/storage.ts +150 -0
  147. package/oh-my-opencode/src/features/boulder-state/types.ts +26 -0
  148. package/oh-my-opencode/src/features/builtin-commands/commands.ts +89 -0
  149. package/oh-my-opencode/src/features/builtin-commands/index.ts +2 -0
  150. package/oh-my-opencode/src/features/builtin-commands/templates/init-deep.ts +300 -0
  151. package/oh-my-opencode/src/features/builtin-commands/templates/ralph-loop.ts +38 -0
  152. package/oh-my-opencode/src/features/builtin-commands/templates/refactor.ts +619 -0
  153. package/oh-my-opencode/src/features/builtin-commands/templates/start-work.ts +72 -0
  154. package/oh-my-opencode/src/features/builtin-commands/types.ts +9 -0
  155. package/oh-my-opencode/src/features/builtin-skills/frontend-ui-ux/SKILL.md +78 -0
  156. package/oh-my-opencode/src/features/builtin-skills/git-master/SKILL.md +1105 -0
  157. package/oh-my-opencode/src/features/builtin-skills/index.ts +2 -0
  158. package/oh-my-opencode/src/features/builtin-skills/skills.ts +1203 -0
  159. package/oh-my-opencode/src/features/builtin-skills/types.ts +16 -0
  160. package/oh-my-opencode/src/features/claude-code-agent-loader/index.ts +2 -0
  161. package/oh-my-opencode/src/features/claude-code-agent-loader/loader.ts +90 -0
  162. package/oh-my-opencode/src/features/claude-code-agent-loader/types.ts +17 -0
  163. package/oh-my-opencode/src/features/claude-code-command-loader/index.ts +2 -0
  164. package/oh-my-opencode/src/features/claude-code-command-loader/loader.ts +144 -0
  165. package/oh-my-opencode/src/features/claude-code-command-loader/types.ts +46 -0
  166. package/oh-my-opencode/src/features/claude-code-mcp-loader/env-expander.ts +27 -0
  167. package/oh-my-opencode/src/features/claude-code-mcp-loader/index.ts +11 -0
  168. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.test.ts +162 -0
  169. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.ts +113 -0
  170. package/oh-my-opencode/src/features/claude-code-mcp-loader/transformer.ts +53 -0
  171. package/oh-my-opencode/src/features/claude-code-mcp-loader/types.ts +42 -0
  172. package/oh-my-opencode/src/features/claude-code-plugin-loader/index.ts +3 -0
  173. package/oh-my-opencode/src/features/claude-code-plugin-loader/loader.ts +486 -0
  174. package/oh-my-opencode/src/features/claude-code-plugin-loader/types.ts +210 -0
  175. package/oh-my-opencode/src/features/claude-code-session-state/index.ts +1 -0
  176. package/oh-my-opencode/src/features/claude-code-session-state/state.test.ts +126 -0
  177. package/oh-my-opencode/src/features/claude-code-session-state/state.ts +37 -0
  178. package/oh-my-opencode/src/features/context-injector/collector.test.ts +330 -0
  179. package/oh-my-opencode/src/features/context-injector/collector.ts +85 -0
  180. package/oh-my-opencode/src/features/context-injector/index.ts +14 -0
  181. package/oh-my-opencode/src/features/context-injector/injector.test.ts +122 -0
  182. package/oh-my-opencode/src/features/context-injector/injector.ts +167 -0
  183. package/oh-my-opencode/src/features/context-injector/types.ts +91 -0
  184. package/oh-my-opencode/src/features/hook-message-injector/constants.ts +6 -0
  185. package/oh-my-opencode/src/features/hook-message-injector/index.ts +4 -0
  186. package/oh-my-opencode/src/features/hook-message-injector/injector.ts +195 -0
  187. package/oh-my-opencode/src/features/hook-message-injector/types.ts +47 -0
  188. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.test.ts +448 -0
  189. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.ts +180 -0
  190. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.test.ts +210 -0
  191. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.ts +62 -0
  192. package/oh-my-opencode/src/features/opencode-skill-loader/discover-worker.ts +59 -0
  193. package/oh-my-opencode/src/features/opencode-skill-loader/index.ts +4 -0
  194. package/oh-my-opencode/src/features/opencode-skill-loader/loader.test.ts +273 -0
  195. package/oh-my-opencode/src/features/opencode-skill-loader/loader.ts +259 -0
  196. package/oh-my-opencode/src/features/opencode-skill-loader/merger.ts +267 -0
  197. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.test.ts +267 -0
  198. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.ts +206 -0
  199. package/oh-my-opencode/src/features/opencode-skill-loader/types.ts +38 -0
  200. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.test.ts +201 -0
  201. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.ts +27 -0
  202. package/oh-my-opencode/src/features/skill-mcp-manager/index.ts +2 -0
  203. package/oh-my-opencode/src/features/skill-mcp-manager/manager.test.ts +611 -0
  204. package/oh-my-opencode/src/features/skill-mcp-manager/manager.ts +520 -0
  205. package/oh-my-opencode/src/features/skill-mcp-manager/types.ts +14 -0
  206. package/oh-my-opencode/src/features/task-toast-manager/index.ts +2 -0
  207. package/oh-my-opencode/src/features/task-toast-manager/manager.test.ts +249 -0
  208. package/oh-my-opencode/src/features/task-toast-manager/manager.ts +215 -0
  209. package/oh-my-opencode/src/features/task-toast-manager/types.ts +24 -0
  210. package/oh-my-opencode/src/hooks/AGENTS.md +73 -0
  211. package/oh-my-opencode/src/hooks/agent-usage-reminder/constants.ts +54 -0
  212. package/oh-my-opencode/src/hooks/agent-usage-reminder/index.ts +109 -0
  213. package/oh-my-opencode/src/hooks/agent-usage-reminder/storage.ts +42 -0
  214. package/oh-my-opencode/src/hooks/agent-usage-reminder/types.ts +6 -0
  215. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.test.ts +307 -0
  216. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.ts +485 -0
  217. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/index.ts +151 -0
  218. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/parser.ts +201 -0
  219. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.ts +33 -0
  220. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +184 -0
  221. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -0
  222. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.test.ts +77 -0
  223. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.ts +250 -0
  224. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/types.ts +42 -0
  225. package/oh-my-opencode/src/hooks/atlas/index.test.ts +953 -0
  226. package/oh-my-opencode/src/hooks/atlas/index.ts +771 -0
  227. package/oh-my-opencode/src/hooks/auto-slash-command/constants.ts +12 -0
  228. package/oh-my-opencode/src/hooks/auto-slash-command/detector.test.ts +296 -0
  229. package/oh-my-opencode/src/hooks/auto-slash-command/detector.ts +65 -0
  230. package/oh-my-opencode/src/hooks/auto-slash-command/executor.ts +205 -0
  231. package/oh-my-opencode/src/hooks/auto-slash-command/index.test.ts +254 -0
  232. package/oh-my-opencode/src/hooks/auto-slash-command/index.ts +89 -0
  233. package/oh-my-opencode/src/hooks/auto-slash-command/types.ts +23 -0
  234. package/oh-my-opencode/src/hooks/auto-update-checker/cache.ts +93 -0
  235. package/oh-my-opencode/src/hooks/auto-update-checker/checker.test.ts +24 -0
  236. package/oh-my-opencode/src/hooks/auto-update-checker/checker.ts +284 -0
  237. package/oh-my-opencode/src/hooks/auto-update-checker/constants.ts +64 -0
  238. package/oh-my-opencode/src/hooks/auto-update-checker/index.test.ts +254 -0
  239. package/oh-my-opencode/src/hooks/auto-update-checker/index.ts +260 -0
  240. package/oh-my-opencode/src/hooks/auto-update-checker/types.ts +29 -0
  241. package/oh-my-opencode/src/hooks/background-compaction/index.ts +87 -0
  242. package/oh-my-opencode/src/hooks/background-notification/index.ts +28 -0
  243. package/oh-my-opencode/src/hooks/background-notification/types.ts +5 -0
  244. package/oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md +70 -0
  245. package/oh-my-opencode/src/hooks/claude-code-hooks/config-loader.ts +107 -0
  246. package/oh-my-opencode/src/hooks/claude-code-hooks/config.ts +103 -0
  247. package/oh-my-opencode/src/hooks/claude-code-hooks/index.ts +401 -0
  248. package/oh-my-opencode/src/hooks/claude-code-hooks/plugin-config.ts +12 -0
  249. package/oh-my-opencode/src/hooks/claude-code-hooks/post-tool-use.ts +199 -0
  250. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-compact.ts +109 -0
  251. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-tool-use.ts +172 -0
  252. package/oh-my-opencode/src/hooks/claude-code-hooks/stop.ts +118 -0
  253. package/oh-my-opencode/src/hooks/claude-code-hooks/todo.ts +76 -0
  254. package/oh-my-opencode/src/hooks/claude-code-hooks/tool-input-cache.ts +47 -0
  255. package/oh-my-opencode/src/hooks/claude-code-hooks/transcript.ts +252 -0
  256. package/oh-my-opencode/src/hooks/claude-code-hooks/types.ts +204 -0
  257. package/oh-my-opencode/src/hooks/claude-code-hooks/user-prompt-submit.ts +117 -0
  258. package/oh-my-opencode/src/hooks/comment-checker/cli.test.ts +68 -0
  259. package/oh-my-opencode/src/hooks/comment-checker/cli.ts +221 -0
  260. package/oh-my-opencode/src/hooks/comment-checker/downloader.ts +196 -0
  261. package/oh-my-opencode/src/hooks/comment-checker/index.ts +171 -0
  262. package/oh-my-opencode/src/hooks/comment-checker/types.ts +33 -0
  263. package/oh-my-opencode/src/hooks/compaction-context-injector/index.ts +61 -0
  264. package/oh-my-opencode/src/hooks/context-window-monitor.ts +99 -0
  265. package/oh-my-opencode/src/hooks/delegate-task-retry/index.test.ts +119 -0
  266. package/oh-my-opencode/src/hooks/delegate-task-retry/index.ts +136 -0
  267. package/oh-my-opencode/src/hooks/directory-agents-injector/constants.ts +9 -0
  268. package/oh-my-opencode/src/hooks/directory-agents-injector/index.ts +182 -0
  269. package/oh-my-opencode/src/hooks/directory-agents-injector/storage.ts +48 -0
  270. package/oh-my-opencode/src/hooks/directory-agents-injector/types.ts +5 -0
  271. package/oh-my-opencode/src/hooks/directory-readme-injector/constants.ts +9 -0
  272. package/oh-my-opencode/src/hooks/directory-readme-injector/index.ts +177 -0
  273. package/oh-my-opencode/src/hooks/directory-readme-injector/storage.ts +48 -0
  274. package/oh-my-opencode/src/hooks/directory-readme-injector/types.ts +5 -0
  275. package/oh-my-opencode/src/hooks/edit-error-recovery/index.test.ts +126 -0
  276. package/oh-my-opencode/src/hooks/edit-error-recovery/index.ts +57 -0
  277. package/oh-my-opencode/src/hooks/empty-task-response-detector.ts +27 -0
  278. package/oh-my-opencode/src/hooks/index.ts +32 -0
  279. package/oh-my-opencode/src/hooks/interactive-bash-session/constants.ts +15 -0
  280. package/oh-my-opencode/src/hooks/interactive-bash-session/index.ts +262 -0
  281. package/oh-my-opencode/src/hooks/interactive-bash-session/storage.ts +59 -0
  282. package/oh-my-opencode/src/hooks/interactive-bash-session/types.ts +11 -0
  283. package/oh-my-opencode/src/hooks/keyword-detector/constants.ts +300 -0
  284. package/oh-my-opencode/src/hooks/keyword-detector/detector.ts +52 -0
  285. package/oh-my-opencode/src/hooks/keyword-detector/index.test.ts +529 -0
  286. package/oh-my-opencode/src/hooks/keyword-detector/index.ts +100 -0
  287. package/oh-my-opencode/src/hooks/keyword-detector/types.ts +4 -0
  288. package/oh-my-opencode/src/hooks/non-interactive-env/constants.ts +70 -0
  289. package/oh-my-opencode/src/hooks/non-interactive-env/detector.ts +19 -0
  290. package/oh-my-opencode/src/hooks/non-interactive-env/index.test.ts +323 -0
  291. package/oh-my-opencode/src/hooks/non-interactive-env/index.ts +63 -0
  292. package/oh-my-opencode/src/hooks/non-interactive-env/types.ts +3 -0
  293. package/oh-my-opencode/src/hooks/prometheus-md-only/constants.ts +32 -0
  294. package/oh-my-opencode/src/hooks/prometheus-md-only/index.test.ts +488 -0
  295. package/oh-my-opencode/src/hooks/prometheus-md-only/index.ts +136 -0
  296. package/oh-my-opencode/src/hooks/ralph-loop/constants.ts +5 -0
  297. package/oh-my-opencode/src/hooks/ralph-loop/index.test.ts +835 -0
  298. package/oh-my-opencode/src/hooks/ralph-loop/index.ts +417 -0
  299. package/oh-my-opencode/src/hooks/ralph-loop/storage.ts +115 -0
  300. package/oh-my-opencode/src/hooks/ralph-loop/types.ts +19 -0
  301. package/oh-my-opencode/src/hooks/rules-injector/constants.ts +30 -0
  302. package/oh-my-opencode/src/hooks/rules-injector/finder.test.ts +381 -0
  303. package/oh-my-opencode/src/hooks/rules-injector/finder.ts +263 -0
  304. package/oh-my-opencode/src/hooks/rules-injector/index.ts +223 -0
  305. package/oh-my-opencode/src/hooks/rules-injector/matcher.ts +63 -0
  306. package/oh-my-opencode/src/hooks/rules-injector/parser.test.ts +226 -0
  307. package/oh-my-opencode/src/hooks/rules-injector/parser.ts +211 -0
  308. package/oh-my-opencode/src/hooks/rules-injector/storage.ts +59 -0
  309. package/oh-my-opencode/src/hooks/rules-injector/types.ts +57 -0
  310. package/oh-my-opencode/src/hooks/session-notification-utils.ts +140 -0
  311. package/oh-my-opencode/src/hooks/session-notification.test.ts +361 -0
  312. package/oh-my-opencode/src/hooks/session-notification.ts +330 -0
  313. package/oh-my-opencode/src/hooks/session-recovery/constants.ts +10 -0
  314. package/oh-my-opencode/src/hooks/session-recovery/index.test.ts +223 -0
  315. package/oh-my-opencode/src/hooks/session-recovery/index.ts +435 -0
  316. package/oh-my-opencode/src/hooks/session-recovery/storage.ts +390 -0
  317. package/oh-my-opencode/src/hooks/session-recovery/types.ts +98 -0
  318. package/oh-my-opencode/src/hooks/start-work/index.test.ts +402 -0
  319. package/oh-my-opencode/src/hooks/start-work/index.ts +242 -0
  320. package/oh-my-opencode/src/hooks/task-resume-info/index.ts +36 -0
  321. package/oh-my-opencode/src/hooks/think-mode/detector.ts +57 -0
  322. package/oh-my-opencode/src/hooks/think-mode/index.test.ts +353 -0
  323. package/oh-my-opencode/src/hooks/think-mode/index.ts +89 -0
  324. package/oh-my-opencode/src/hooks/think-mode/switcher.test.ts +461 -0
  325. package/oh-my-opencode/src/hooks/think-mode/switcher.ts +222 -0
  326. package/oh-my-opencode/src/hooks/think-mode/types.ts +21 -0
  327. package/oh-my-opencode/src/hooks/thinking-block-validator/index.ts +171 -0
  328. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.test.ts +876 -0
  329. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.ts +480 -0
  330. package/oh-my-opencode/src/hooks/tool-output-truncator.test.ts +168 -0
  331. package/oh-my-opencode/src/hooks/tool-output-truncator.ts +61 -0
  332. package/oh-my-opencode/src/index.ts +589 -0
  333. package/oh-my-opencode/src/mcp/AGENTS.md +70 -0
  334. package/oh-my-opencode/src/mcp/context7.ts +6 -0
  335. package/oh-my-opencode/src/mcp/grep-app.ts +6 -0
  336. package/oh-my-opencode/src/mcp/index.test.ts +86 -0
  337. package/oh-my-opencode/src/mcp/index.ts +32 -0
  338. package/oh-my-opencode/src/mcp/types.ts +9 -0
  339. package/oh-my-opencode/src/mcp/websearch.ts +10 -0
  340. package/oh-my-opencode/src/plugin-config.test.ts +119 -0
  341. package/oh-my-opencode/src/plugin-config.ts +135 -0
  342. package/oh-my-opencode/src/plugin-handlers/config-handler.test.ts +103 -0
  343. package/oh-my-opencode/src/plugin-handlers/config-handler.ts +399 -0
  344. package/oh-my-opencode/src/plugin-handlers/index.ts +1 -0
  345. package/oh-my-opencode/src/plugin-state.ts +30 -0
  346. package/oh-my-opencode/src/shared/AGENTS.md +63 -0
  347. package/oh-my-opencode/src/shared/agent-tool-restrictions.ts +44 -0
  348. package/oh-my-opencode/src/shared/agent-variant.test.ts +83 -0
  349. package/oh-my-opencode/src/shared/agent-variant.ts +40 -0
  350. package/oh-my-opencode/src/shared/claude-config-dir.test.ts +60 -0
  351. package/oh-my-opencode/src/shared/claude-config-dir.ts +11 -0
  352. package/oh-my-opencode/src/shared/command-executor.ts +225 -0
  353. package/oh-my-opencode/src/shared/config-errors.ts +18 -0
  354. package/oh-my-opencode/src/shared/config-path.ts +47 -0
  355. package/oh-my-opencode/src/shared/data-path.ts +22 -0
  356. package/oh-my-opencode/src/shared/deep-merge.test.ts +336 -0
  357. package/oh-my-opencode/src/shared/deep-merge.ts +53 -0
  358. package/oh-my-opencode/src/shared/dynamic-truncator.ts +193 -0
  359. package/oh-my-opencode/src/shared/external-plugin-detector.test.ts +133 -0
  360. package/oh-my-opencode/src/shared/external-plugin-detector.ts +132 -0
  361. package/oh-my-opencode/src/shared/file-reference-resolver.ts +85 -0
  362. package/oh-my-opencode/src/shared/file-utils.ts +40 -0
  363. package/oh-my-opencode/src/shared/first-message-variant.test.ts +32 -0
  364. package/oh-my-opencode/src/shared/first-message-variant.ts +28 -0
  365. package/oh-my-opencode/src/shared/frontmatter.test.ts +262 -0
  366. package/oh-my-opencode/src/shared/frontmatter.ts +31 -0
  367. package/oh-my-opencode/src/shared/hook-disabled.ts +22 -0
  368. package/oh-my-opencode/src/shared/index.ts +29 -0
  369. package/oh-my-opencode/src/shared/jsonc-parser.test.ts +266 -0
  370. package/oh-my-opencode/src/shared/jsonc-parser.ts +66 -0
  371. package/oh-my-opencode/src/shared/logger.ts +20 -0
  372. package/oh-my-opencode/src/shared/migration.test.ts +602 -0
  373. package/oh-my-opencode/src/shared/migration.ts +191 -0
  374. package/oh-my-opencode/src/shared/model-resolver.test.ts +101 -0
  375. package/oh-my-opencode/src/shared/model-resolver.ts +35 -0
  376. package/oh-my-opencode/src/shared/model-sanitizer.ts +12 -0
  377. package/oh-my-opencode/src/shared/opencode-config-dir.test.ts +318 -0
  378. package/oh-my-opencode/src/shared/opencode-config-dir.ts +142 -0
  379. package/oh-my-opencode/src/shared/opencode-version.test.ts +223 -0
  380. package/oh-my-opencode/src/shared/opencode-version.ts +72 -0
  381. package/oh-my-opencode/src/shared/pattern-matcher.ts +29 -0
  382. package/oh-my-opencode/src/shared/permission-compat.test.ts +134 -0
  383. package/oh-my-opencode/src/shared/permission-compat.ts +77 -0
  384. package/oh-my-opencode/src/shared/session-cursor.test.ts +66 -0
  385. package/oh-my-opencode/src/shared/session-cursor.ts +85 -0
  386. package/oh-my-opencode/src/shared/shell-env.test.ts +278 -0
  387. package/oh-my-opencode/src/shared/shell-env.ts +111 -0
  388. package/oh-my-opencode/src/shared/snake-case.ts +49 -0
  389. package/oh-my-opencode/src/shared/system-directive.ts +40 -0
  390. package/oh-my-opencode/src/shared/tool-name.ts +26 -0
  391. package/oh-my-opencode/src/shared/zip-extractor.ts +83 -0
  392. package/oh-my-opencode/src/tools/AGENTS.md +74 -0
  393. package/oh-my-opencode/src/tools/ast-grep/cli.ts +230 -0
  394. package/oh-my-opencode/src/tools/ast-grep/constants.ts +261 -0
  395. package/oh-my-opencode/src/tools/ast-grep/downloader.ts +128 -0
  396. package/oh-my-opencode/src/tools/ast-grep/index.ts +13 -0
  397. package/oh-my-opencode/src/tools/ast-grep/tools.ts +112 -0
  398. package/oh-my-opencode/src/tools/ast-grep/types.ts +61 -0
  399. package/oh-my-opencode/src/tools/ast-grep/utils.ts +102 -0
  400. package/oh-my-opencode/src/tools/background-task/constants.ts +7 -0
  401. package/oh-my-opencode/src/tools/background-task/index.ts +7 -0
  402. package/oh-my-opencode/src/tools/background-task/tools.ts +479 -0
  403. package/oh-my-opencode/src/tools/background-task/types.ts +16 -0
  404. package/oh-my-opencode/src/tools/call-omo-agent/constants.ts +7 -0
  405. package/oh-my-opencode/src/tools/call-omo-agent/index.ts +3 -0
  406. package/oh-my-opencode/src/tools/call-omo-agent/tools.ts +338 -0
  407. package/oh-my-opencode/src/tools/call-omo-agent/types.ts +27 -0
  408. package/oh-my-opencode/src/tools/delegate-task/constants.ts +205 -0
  409. package/oh-my-opencode/src/tools/delegate-task/index.ts +3 -0
  410. package/oh-my-opencode/src/tools/delegate-task/tools.test.ts +1575 -0
  411. package/oh-my-opencode/src/tools/delegate-task/tools.ts +885 -0
  412. package/oh-my-opencode/src/tools/delegate-task/types.ts +9 -0
  413. package/oh-my-opencode/src/tools/glob/cli.test.ts +158 -0
  414. package/oh-my-opencode/src/tools/glob/cli.ts +191 -0
  415. package/oh-my-opencode/src/tools/glob/constants.ts +12 -0
  416. package/oh-my-opencode/src/tools/glob/index.ts +3 -0
  417. package/oh-my-opencode/src/tools/glob/tools.ts +41 -0
  418. package/oh-my-opencode/src/tools/glob/types.ts +22 -0
  419. package/oh-my-opencode/src/tools/glob/utils.ts +26 -0
  420. package/oh-my-opencode/src/tools/grep/cli.ts +229 -0
  421. package/oh-my-opencode/src/tools/grep/constants.ts +127 -0
  422. package/oh-my-opencode/src/tools/grep/downloader.test.ts +103 -0
  423. package/oh-my-opencode/src/tools/grep/downloader.ts +145 -0
  424. package/oh-my-opencode/src/tools/grep/index.ts +3 -0
  425. package/oh-my-opencode/src/tools/grep/tools.ts +40 -0
  426. package/oh-my-opencode/src/tools/grep/types.ts +39 -0
  427. package/oh-my-opencode/src/tools/grep/utils.ts +53 -0
  428. package/oh-my-opencode/src/tools/index.ts +72 -0
  429. package/oh-my-opencode/src/tools/interactive-bash/constants.ts +18 -0
  430. package/oh-my-opencode/src/tools/interactive-bash/index.ts +4 -0
  431. package/oh-my-opencode/src/tools/interactive-bash/tools.ts +126 -0
  432. package/oh-my-opencode/src/tools/interactive-bash/utils.ts +71 -0
  433. package/oh-my-opencode/src/tools/look-at/constants.ts +3 -0
  434. package/oh-my-opencode/src/tools/look-at/index.ts +3 -0
  435. package/oh-my-opencode/src/tools/look-at/tools.test.ts +73 -0
  436. package/oh-my-opencode/src/tools/look-at/tools.ts +173 -0
  437. package/oh-my-opencode/src/tools/look-at/types.ts +4 -0
  438. package/oh-my-opencode/src/tools/lsp/client.ts +596 -0
  439. package/oh-my-opencode/src/tools/lsp/config.test.ts +130 -0
  440. package/oh-my-opencode/src/tools/lsp/config.ts +285 -0
  441. package/oh-my-opencode/src/tools/lsp/constants.ts +390 -0
  442. package/oh-my-opencode/src/tools/lsp/index.ts +7 -0
  443. package/oh-my-opencode/src/tools/lsp/tools.ts +261 -0
  444. package/oh-my-opencode/src/tools/lsp/types.ts +124 -0
  445. package/oh-my-opencode/src/tools/lsp/utils.ts +406 -0
  446. package/oh-my-opencode/src/tools/session-manager/constants.ts +97 -0
  447. package/oh-my-opencode/src/tools/session-manager/index.ts +3 -0
  448. package/oh-my-opencode/src/tools/session-manager/storage.test.ts +315 -0
  449. package/oh-my-opencode/src/tools/session-manager/storage.ts +238 -0
  450. package/oh-my-opencode/src/tools/session-manager/tools.test.ts +124 -0
  451. package/oh-my-opencode/src/tools/session-manager/tools.ts +146 -0
  452. package/oh-my-opencode/src/tools/session-manager/types.ts +99 -0
  453. package/oh-my-opencode/src/tools/session-manager/utils.test.ts +160 -0
  454. package/oh-my-opencode/src/tools/session-manager/utils.ts +199 -0
  455. package/oh-my-opencode/src/tools/skill/constants.ts +8 -0
  456. package/oh-my-opencode/src/tools/skill/index.ts +3 -0
  457. package/oh-my-opencode/src/tools/skill/tools.test.ts +239 -0
  458. package/oh-my-opencode/src/tools/skill/tools.ts +200 -0
  459. package/oh-my-opencode/src/tools/skill/types.ts +31 -0
  460. package/oh-my-opencode/src/tools/skill-mcp/constants.ts +3 -0
  461. package/oh-my-opencode/src/tools/skill-mcp/index.ts +3 -0
  462. package/oh-my-opencode/src/tools/skill-mcp/tools.test.ts +215 -0
  463. package/oh-my-opencode/src/tools/skill-mcp/tools.ts +172 -0
  464. package/oh-my-opencode/src/tools/skill-mcp/types.ts +8 -0
  465. package/oh-my-opencode/src/tools/slashcommand/index.ts +2 -0
  466. package/oh-my-opencode/src/tools/slashcommand/tools.ts +252 -0
  467. package/oh-my-opencode/src/tools/slashcommand/types.ts +28 -0
  468. package/oh-my-opencode/test-setup.ts +6 -0
  469. package/oh-my-opencode/tsconfig.json +20 -0
  470. package/package.json +1 -1
  471. package/src/__tests__/git.test.ts +7 -2
  472. package/src/__tests__/manifest.test.ts +5 -5
  473. package/src/agents/repo-explorer.ts +2 -1
  474. package/src/git.ts +18 -3
  475. package/src/manifest.ts +22 -15
@@ -0,0 +1,197 @@
1
+ # Manifesto
2
+
3
+ The principles and philosophy behind Oh My OpenCode.
4
+
5
+ ---
6
+
7
+ ## Human Intervention is a Failure Signal
8
+
9
+ **HUMAN IN THE LOOP = BOTTLENECK**
10
+ **HUMAN IN THE LOOP = BOTTLENECK**
11
+ **HUMAN IN THE LOOP = BOTTLENECK**
12
+
13
+ Think about autonomous driving. When a human has to take over the wheel, that's not a feature - it's a failure of the system. The car couldn't handle the situation on its own.
14
+
15
+ **Why is coding any different?**
16
+
17
+ When you find yourself:
18
+ - Fixing the AI's half-finished code
19
+ - Manually correcting obvious mistakes
20
+ - Guiding the agent step-by-step through a task
21
+ - Repeatedly clarifying the same requirements
22
+
23
+ ...that's not "human-AI collaboration." That's the AI failing to do its job.
24
+
25
+ **Oh My OpenCode is built on this premise**: Human intervention during agentic work is fundamentally a wrong signal. If the system is designed correctly, the agent should complete the work without requiring you to babysit it.
26
+
27
+ ---
28
+
29
+ ## Indistinguishable Code
30
+
31
+ **Goal: Code written by the agent should be indistinguishable from code written by a senior engineer.**
32
+
33
+ Not "AI-generated code that needs cleanup." Not "a good starting point." The actual, final, production-ready code.
34
+
35
+ This means:
36
+ - Following existing codebase patterns exactly
37
+ - Proper error handling without being asked
38
+ - Tests that actually test the right things
39
+ - No AI slop (over-engineering, unnecessary abstractions, scope creep)
40
+ - Comments only when they add value
41
+
42
+ If you can tell whether a commit was made by a human or an agent, the agent has failed.
43
+
44
+ ---
45
+
46
+ ## Token Cost vs. Productivity
47
+
48
+ **Higher token usage is acceptable if it significantly increases productivity.**
49
+
50
+ Using more tokens to:
51
+ - Have multiple specialized agents research in parallel
52
+ - Get the job done completely without human intervention
53
+ - Verify work thoroughly before completion
54
+ - Accumulate knowledge across tasks
55
+
56
+ ...is a worthwhile investment when it means 10x, 20x, or 100x productivity gains.
57
+
58
+ **However:**
59
+
60
+ Unnecessary token waste is not pursued. The system optimizes for:
61
+ - Using cheaper models (Haiku, Flash) for simple tasks
62
+ - Avoiding redundant exploration
63
+ - Caching learnings across sessions
64
+ - Stopping research when sufficient context is gathered
65
+
66
+ Token efficiency matters. But not at the cost of work quality or human cognitive load.
67
+
68
+ ---
69
+
70
+ ## Minimize Human Cognitive Load
71
+
72
+ **The human should only need to say what they want. Everything else is the agent's job.**
73
+
74
+ Two approaches to achieve this:
75
+
76
+ ### Approach 1: Prometheus (Interview Mode)
77
+
78
+ You say: "I want to add authentication."
79
+
80
+ Prometheus:
81
+ - Researches your codebase to understand existing patterns
82
+ - Asks clarifying questions based on actual findings
83
+ - Surfaces edge cases you hadn't considered
84
+ - Documents decisions as you make them
85
+ - Generates a complete work plan
86
+
87
+ **You provide intent. The agent provides structure.**
88
+
89
+ ### Approach 2: Ultrawork (Just Do It Mode)
90
+
91
+ You say: "ulw add authentication"
92
+
93
+ The agent:
94
+ - Figures out the right approach
95
+ - Researches best practices
96
+ - Implements following conventions
97
+ - Verifies everything works
98
+ - Keeps going until complete
99
+
100
+ **You provide intent. The agent handles everything.**
101
+
102
+ In both cases, the human's job is to **express what they want**, not to manage how it gets done.
103
+
104
+ ---
105
+
106
+ ## Predictable, Continuous, Delegatable
107
+
108
+ **The ideal agent should work like a compiler**: markdown document goes in, working code comes out.
109
+
110
+ ### Predictable
111
+
112
+ Given the same inputs:
113
+ - Same codebase patterns
114
+ - Same requirements
115
+ - Same constraints
116
+
117
+ ...the output should be consistent. Not random, not surprising, not "creative" in ways you didn't ask for.
118
+
119
+ ### Continuous
120
+
121
+ Work should survive interruptions:
122
+ - Session crashes? Resume with `/start-work`
123
+ - Need to step away? Progress is tracked
124
+ - Multi-day project? Context is preserved
125
+
126
+ The agent maintains state. You don't have to.
127
+
128
+ ### Delegatable
129
+
130
+ Just like you can assign a task to a capable team member and trust them to handle it, you should be able to delegate to the agent.
131
+
132
+ This means:
133
+ - Clear acceptance criteria, verified independently
134
+ - Self-correcting behavior when something goes wrong
135
+ - Escalation (to Oracle, to user) only when truly needed
136
+ - Complete work, not "mostly done"
137
+
138
+ ---
139
+
140
+ ## The Core Loop
141
+
142
+ ```
143
+ Human Intent → Agent Execution → Verified Result
144
+ ↑ ↓
145
+ └──────── Minimum ─────────────┘
146
+ (intervention only on true failure)
147
+ ```
148
+
149
+ Everything in Oh My OpenCode is designed to make this loop work:
150
+
151
+ | Feature | Purpose |
152
+ |---------|---------|
153
+ | Prometheus | Extract intent through intelligent interview |
154
+ | Metis | Catch ambiguities before they become bugs |
155
+ | Momus | Verify plans are complete before execution |
156
+ | Orchestrator | Coordinate work without human micromanagement |
157
+ | Todo Continuation | Force completion, prevent "I'm done" lies |
158
+ | Category System | Route to optimal model without human decision |
159
+ | Background Agents | Parallel research without blocking user |
160
+ | Wisdom Accumulation | Learn from work, don't repeat mistakes |
161
+
162
+ ---
163
+
164
+ ## What This Means in Practice
165
+
166
+ **You should be able to:**
167
+
168
+ 1. Describe what you want (high-level or detailed, your choice)
169
+ 2. Let the agent interview you if needed
170
+ 3. Confirm the plan (or just let ultrawork handle it)
171
+ 4. Walk away
172
+ 5. Come back to completed, verified, production-ready work
173
+
174
+ **If you can't do this, something in the system needs to improve.**
175
+
176
+ ---
177
+
178
+ ## The Future We're Building
179
+
180
+ A world where:
181
+ - Human developers focus on **what** to build, not **how** to get AI to build it
182
+ - Code quality is independent of who (or what) wrote it
183
+ - Complex projects are as easy as simple ones (just take longer)
184
+ - "Prompt engineering" becomes as obsolete as "compiler debugging"
185
+
186
+ **The agent should be invisible.** Not in the sense that it's hidden, but in the sense that it just works - like electricity, like running water, like the internet.
187
+
188
+ You flip the switch. The light turns on. You don't think about the power grid.
189
+
190
+ That's the goal.
191
+
192
+ ---
193
+
194
+ ## Further Reading
195
+
196
+ - [Overview](./guide/overview.md) - Getting started with Oh My OpenCode
197
+ - [Understanding the Orchestration System](./guide/understanding-orchestration-system.md) - How the agent coordination works
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "oh-my-opencode",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "oh-my-opencode": "./bin/oh-my-opencode.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "bin",
14
+ "postinstall.mjs"
15
+ ],
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "import": "./dist/index.js"
20
+ },
21
+ "./schema.json": "./dist/oh-my-opencode.schema.json"
22
+ },
23
+ "scripts": {
24
+ "build": "bun build src/index.ts --outdir dist --target bun --format esm --external @ast-grep/napi && tsc --emitDeclarationOnly && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --external @ast-grep/napi && bun run build:schema",
25
+ "build:all": "bun run build && bun run build:binaries",
26
+ "build:binaries": "bun run script/build-binaries.ts",
27
+ "build:schema": "bun run script/build-schema.ts",
28
+ "clean": "rm -rf dist",
29
+ "postinstall": "node postinstall.mjs",
30
+ "prepublishOnly": "bun run clean && bun run build",
31
+ "typecheck": "tsc --noEmit",
32
+ "test": "bun test"
33
+ },
34
+ "keywords": [
35
+ "opencode",
36
+ "plugin",
37
+ "oracle",
38
+ "librarian",
39
+ "agents",
40
+ "ai",
41
+ "llm"
42
+ ],
43
+ "author": "YeonGyu-Kim",
44
+ "license": "SUL-1.0",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/code-yeongyu/oh-my-opencode.git"
48
+ },
49
+ "bugs": {
50
+ "url": "https://github.com/code-yeongyu/oh-my-opencode/issues"
51
+ },
52
+ "homepage": "https://github.com/code-yeongyu/oh-my-opencode#readme",
53
+ "dependencies": {
54
+ "@ast-grep/cli": "^0.40.0",
55
+ "@ast-grep/napi": "^0.40.0",
56
+ "@clack/prompts": "^0.11.0",
57
+ "@code-yeongyu/comment-checker": "^0.6.1",
58
+ "@modelcontextprotocol/sdk": "^1.25.1",
59
+ "@opencode-ai/plugin": "^1.1.19",
60
+ "@opencode-ai/sdk": "^1.1.19",
61
+ "commander": "^14.0.2",
62
+ "detect-libc": "^2.0.0",
63
+ "js-yaml": "^4.1.1",
64
+ "jsonc-parser": "^3.3.1",
65
+ "picocolors": "^1.1.1",
66
+ "picomatch": "^4.0.2",
67
+ "zod": "^4.1.8"
68
+ },
69
+ "devDependencies": {
70
+ "@types/js-yaml": "^4.0.9",
71
+ "@types/picomatch": "^3.0.2",
72
+ "bun-types": "latest",
73
+ "typescript": "^5.7.3"
74
+ },
75
+ "optionalDependencies": {
76
+ "oh-my-opencode-darwin-arm64": "3.0.0-beta.11",
77
+ "oh-my-opencode-darwin-x64": "3.0.0-beta.11",
78
+ "oh-my-opencode-linux-arm64": "3.0.0-beta.11",
79
+ "oh-my-opencode-linux-arm64-musl": "3.0.0-beta.11",
80
+ "oh-my-opencode-linux-x64": "3.0.0-beta.11",
81
+ "oh-my-opencode-linux-x64-musl": "3.0.0-beta.11",
82
+ "oh-my-opencode-windows-x64": "3.0.0-beta.11"
83
+ },
84
+ "trustedDependencies": [
85
+ "@ast-grep/cli",
86
+ "@ast-grep/napi",
87
+ "@code-yeongyu/comment-checker"
88
+ ]
89
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "oh-my-opencode-darwin-arm64",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (darwin-arm64)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "darwin"
12
+ ],
13
+ "cpu": [
14
+ "arm64"
15
+ ],
16
+ "files": [
17
+ "bin"
18
+ ],
19
+ "bin": {
20
+ "oh-my-opencode": "./bin/oh-my-opencode"
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "oh-my-opencode-darwin-x64",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (darwin-x64)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "darwin"
12
+ ],
13
+ "cpu": [
14
+ "x64"
15
+ ],
16
+ "files": [
17
+ "bin"
18
+ ],
19
+ "bin": {
20
+ "oh-my-opencode": "./bin/oh-my-opencode"
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "oh-my-opencode-linux-arm64",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (linux-arm64)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "linux"
12
+ ],
13
+ "cpu": [
14
+ "arm64"
15
+ ],
16
+ "libc": [
17
+ "glibc"
18
+ ],
19
+ "files": [
20
+ "bin"
21
+ ],
22
+ "bin": {
23
+ "oh-my-opencode": "./bin/oh-my-opencode"
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "oh-my-opencode-linux-arm64-musl",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (linux-arm64-musl)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "linux"
12
+ ],
13
+ "cpu": [
14
+ "arm64"
15
+ ],
16
+ "libc": [
17
+ "musl"
18
+ ],
19
+ "files": [
20
+ "bin"
21
+ ],
22
+ "bin": {
23
+ "oh-my-opencode": "./bin/oh-my-opencode"
24
+ }
25
+ }
File without changes
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "oh-my-opencode-linux-x64",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (linux-x64)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "linux"
12
+ ],
13
+ "cpu": [
14
+ "x64"
15
+ ],
16
+ "libc": [
17
+ "glibc"
18
+ ],
19
+ "files": [
20
+ "bin"
21
+ ],
22
+ "bin": {
23
+ "oh-my-opencode": "./bin/oh-my-opencode"
24
+ }
25
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "oh-my-opencode-linux-x64-musl",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (linux-x64-musl)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "linux"
12
+ ],
13
+ "cpu": [
14
+ "x64"
15
+ ],
16
+ "libc": [
17
+ "musl"
18
+ ],
19
+ "files": [
20
+ "bin"
21
+ ],
22
+ "bin": {
23
+ "oh-my-opencode": "./bin/oh-my-opencode"
24
+ }
25
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "oh-my-opencode-windows-x64",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "Platform-specific binary for oh-my-opencode (windows-x64)",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/code-yeongyu/oh-my-opencode"
9
+ },
10
+ "os": [
11
+ "win32"
12
+ ],
13
+ "cpu": [
14
+ "x64"
15
+ ],
16
+ "files": [
17
+ "bin"
18
+ ],
19
+ "bin": {
20
+ "oh-my-opencode": "./bin/oh-my-opencode.exe"
21
+ }
22
+ }
@@ -0,0 +1,43 @@
1
+ // postinstall.mjs
2
+ // Runs after npm install to verify platform binary is available
3
+
4
+ import { createRequire } from "node:module";
5
+ import { getPlatformPackage, getBinaryPath } from "./bin/platform.js";
6
+
7
+ const require = createRequire(import.meta.url);
8
+
9
+ /**
10
+ * Detect libc family on Linux
11
+ */
12
+ function getLibcFamily() {
13
+ if (process.platform !== "linux") {
14
+ return undefined;
15
+ }
16
+
17
+ try {
18
+ const detectLibc = require("detect-libc");
19
+ return detectLibc.familySync();
20
+ } catch {
21
+ return null;
22
+ }
23
+ }
24
+
25
+ function main() {
26
+ const { platform, arch } = process;
27
+ const libcFamily = getLibcFamily();
28
+
29
+ try {
30
+ const pkg = getPlatformPackage({ platform, arch, libcFamily });
31
+ const binPath = getBinaryPath(pkg, platform);
32
+
33
+ // Try to resolve the binary
34
+ require.resolve(binPath);
35
+ console.log(`✓ oh-my-opencode binary installed for ${platform}-${arch}`);
36
+ } catch (error) {
37
+ console.warn(`⚠ oh-my-opencode: ${error.message}`);
38
+ console.warn(` The CLI may not work on this platform.`);
39
+ // Don't fail installation - let user try anyway
40
+ }
41
+ }
42
+
43
+ main();
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env bun
2
+ // script/build-binaries.ts
3
+ // Build platform-specific binaries for CLI distribution
4
+
5
+ import { $ } from "bun";
6
+ import { existsSync } from "node:fs";
7
+ import { join } from "node:path";
8
+
9
+ interface PlatformTarget {
10
+ dir: string;
11
+ target: string;
12
+ binary: string;
13
+ description: string;
14
+ }
15
+
16
+ const PLATFORMS: PlatformTarget[] = [
17
+ { dir: "darwin-arm64", target: "bun-darwin-arm64", binary: "oh-my-opencode", description: "macOS ARM64" },
18
+ { dir: "darwin-x64", target: "bun-darwin-x64", binary: "oh-my-opencode", description: "macOS x64" },
19
+ { dir: "linux-x64", target: "bun-linux-x64", binary: "oh-my-opencode", description: "Linux x64 (glibc)" },
20
+ { dir: "linux-arm64", target: "bun-linux-arm64", binary: "oh-my-opencode", description: "Linux ARM64 (glibc)" },
21
+ { dir: "linux-x64-musl", target: "bun-linux-x64-musl", binary: "oh-my-opencode", description: "Linux x64 (musl)" },
22
+ { dir: "linux-arm64-musl", target: "bun-linux-arm64-musl", binary: "oh-my-opencode", description: "Linux ARM64 (musl)" },
23
+ { dir: "windows-x64", target: "bun-windows-x64", binary: "oh-my-opencode.exe", description: "Windows x64" },
24
+ ];
25
+
26
+ const ENTRY_POINT = "src/cli/index.ts";
27
+
28
+ async function buildPlatform(platform: PlatformTarget): Promise<boolean> {
29
+ const outfile = join("packages", platform.dir, "bin", platform.binary);
30
+
31
+ console.log(`\n📦 Building ${platform.description}...`);
32
+ console.log(` Target: ${platform.target}`);
33
+ console.log(` Output: ${outfile}`);
34
+
35
+ try {
36
+ await $`bun build --compile --minify --sourcemap --bytecode --target=${platform.target} ${ENTRY_POINT} --outfile=${outfile}`;
37
+
38
+ // Verify binary exists
39
+ if (!existsSync(outfile)) {
40
+ console.error(` ❌ Binary not found after build: ${outfile}`);
41
+ return false;
42
+ }
43
+
44
+ // Verify binary with file command (skip on Windows host for non-Windows targets)
45
+ if (process.platform !== "win32") {
46
+ const fileInfo = await $`file ${outfile}`.text();
47
+ console.log(` ✓ ${fileInfo.trim()}`);
48
+ } else {
49
+ console.log(` ✓ Binary created successfully`);
50
+ }
51
+
52
+ return true;
53
+ } catch (error) {
54
+ console.error(` ❌ Build failed: ${error}`);
55
+ return false;
56
+ }
57
+ }
58
+
59
+ async function main() {
60
+ console.log("🔨 Building oh-my-opencode platform binaries");
61
+ console.log(` Entry point: ${ENTRY_POINT}`);
62
+ console.log(` Platforms: ${PLATFORMS.length}`);
63
+
64
+ // Verify entry point exists
65
+ if (!existsSync(ENTRY_POINT)) {
66
+ console.error(`\n❌ Entry point not found: ${ENTRY_POINT}`);
67
+ process.exit(1);
68
+ }
69
+
70
+ const results: { platform: string; success: boolean }[] = [];
71
+
72
+ for (const platform of PLATFORMS) {
73
+ const success = await buildPlatform(platform);
74
+ results.push({ platform: platform.description, success });
75
+ }
76
+
77
+ // Summary
78
+ console.log("\n" + "=".repeat(50));
79
+ console.log("Build Summary:");
80
+ console.log("=".repeat(50));
81
+
82
+ const succeeded = results.filter(r => r.success).length;
83
+ const failed = results.filter(r => !r.success).length;
84
+
85
+ for (const result of results) {
86
+ const icon = result.success ? "✓" : "✗";
87
+ console.log(` ${icon} ${result.platform}`);
88
+ }
89
+
90
+ console.log("=".repeat(50));
91
+ console.log(`Total: ${succeeded} succeeded, ${failed} failed`);
92
+
93
+ if (failed > 0) {
94
+ process.exit(1);
95
+ }
96
+
97
+ console.log("\n✅ All platform binaries built successfully!\n");
98
+ }
99
+
100
+ main().catch((error) => {
101
+ console.error("Fatal error:", error);
102
+ process.exit(1);
103
+ });
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env bun
2
+ import * as z from "zod"
3
+ import { OhMyOpenCodeConfigSchema } from "../src/config/schema"
4
+
5
+ const SCHEMA_OUTPUT_PATH = "assets/oh-my-opencode.schema.json"
6
+
7
+ async function main() {
8
+ console.log("Generating JSON Schema...")
9
+
10
+ const jsonSchema = z.toJSONSchema(OhMyOpenCodeConfigSchema, {
11
+ io: "input",
12
+ target: "draft-7",
13
+ })
14
+
15
+ const finalSchema = {
16
+ $schema: "http://json-schema.org/draft-07/schema#",
17
+ $id: "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
18
+ title: "Oh My OpenCode Configuration",
19
+ description: "Configuration schema for oh-my-opencode plugin",
20
+ ...jsonSchema,
21
+ }
22
+
23
+ await Bun.write(SCHEMA_OUTPUT_PATH, JSON.stringify(finalSchema, null, 2))
24
+
25
+ console.log(`✓ JSON Schema generated: ${SCHEMA_OUTPUT_PATH}`)
26
+ }
27
+
28
+ main()