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,654 @@
1
+ # Oh-My-OpenCode Configuration
2
+
3
+ Highly opinionated, but adjustable to taste.
4
+
5
+ ## Config File Locations
6
+
7
+ Config file locations (priority order):
8
+ 1. `.opencode/oh-my-opencode.json` (project)
9
+ 2. User config (platform-specific):
10
+
11
+ | Platform | User Config Path |
12
+ | --------------- | ----------------------------------------------------------------------------------------------------------- |
13
+ | **Windows** | `~/.config/opencode/oh-my-opencode.json` (preferred) or `%APPDATA%\opencode\oh-my-opencode.json` (fallback) |
14
+ | **macOS/Linux** | `~/.config/opencode/oh-my-opencode.json` |
15
+
16
+ Schema autocomplete supported:
17
+
18
+ ```json
19
+ {
20
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json"
21
+ }
22
+ ```
23
+
24
+ ## JSONC Support
25
+
26
+ The `oh-my-opencode` configuration file supports JSONC (JSON with Comments):
27
+ - Line comments: `// comment`
28
+ - Block comments: `/* comment */`
29
+ - Trailing commas: `{ "key": "value", }`
30
+
31
+ When both `oh-my-opencode.jsonc` and `oh-my-opencode.json` files exist, `.jsonc` takes priority.
32
+
33
+ **Example with comments:**
34
+
35
+ ```jsonc
36
+ {
37
+ "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
38
+
39
+ /* Agent overrides - customize models for specific tasks */
40
+ "agents": {
41
+ "oracle": {
42
+ "model": "openai/gpt-5.2" // GPT for strategic reasoning
43
+ },
44
+ "explore": {
45
+ "model": "opencode/grok-code" // Free & fast for exploration
46
+ },
47
+ },
48
+ }
49
+ ```
50
+
51
+ ## Google Auth
52
+
53
+ **Recommended**: For Google Gemini authentication, install the [`opencode-antigravity-auth`](https://github.com/NoeFabris/opencode-antigravity-auth) plugin. It provides multi-account load balancing, more models (including Claude via Antigravity), and active maintenance. See [Installation > Google Gemini](../README.md#google-gemini-antigravity-oauth).
54
+
55
+ ## Agents
56
+
57
+ Override built-in agent settings:
58
+
59
+ ```json
60
+ {
61
+ "agents": {
62
+ "explore": {
63
+ "model": "anthropic/claude-haiku-4-5",
64
+ "temperature": 0.5
65
+ },
66
+ "multimodal-looker": {
67
+ "disable": true
68
+ }
69
+ }
70
+ }
71
+ ```
72
+
73
+ Each agent supports: `model`, `temperature`, `top_p`, `prompt`, `prompt_append`, `tools`, `disable`, `description`, `mode`, `color`, `permission`.
74
+
75
+ Use `prompt_append` to add extra instructions without replacing the default system prompt:
76
+
77
+ ```json
78
+ {
79
+ "agents": {
80
+ "librarian": {
81
+ "prompt_append": "Always use the elisp-dev-mcp for Emacs Lisp documentation lookups."
82
+ }
83
+ }
84
+ }
85
+ ```
86
+
87
+ You can also override settings for `Sisyphus` (the main orchestrator) and `build` (the default agent) using the same options.
88
+
89
+ ### Permission Options
90
+
91
+ Fine-grained control over what agents can do:
92
+
93
+ ```json
94
+ {
95
+ "agents": {
96
+ "explore": {
97
+ "permission": {
98
+ "edit": "deny",
99
+ "bash": "ask",
100
+ "webfetch": "allow"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ | Permission | Description | Values |
108
+ | -------------------- | -------------------------------------- | --------------------------------------------------------------------------- |
109
+ | `edit` | File editing permission | `ask` / `allow` / `deny` |
110
+ | `bash` | Bash command execution | `ask` / `allow` / `deny` or per-command: `{ "git": "allow", "rm": "deny" }` |
111
+ | `webfetch` | Web request permission | `ask` / `allow` / `deny` |
112
+ | `doom_loop` | Allow infinite loop detection override | `ask` / `allow` / `deny` |
113
+ | `external_directory` | Access files outside project root | `ask` / `allow` / `deny` |
114
+
115
+ Or disable via `disabled_agents` in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
116
+
117
+ ```json
118
+ {
119
+ "disabled_agents": ["oracle", "multimodal-looker"]
120
+ }
121
+ ```
122
+
123
+ Available agents: `oracle`, `librarian`, `explore`, `multimodal-looker`
124
+
125
+ ## Built-in Skills
126
+
127
+ Oh My OpenCode includes built-in skills that provide additional capabilities:
128
+
129
+ - **playwright**: Browser automation with Playwright MCP. Use for web scraping, testing, screenshots, and browser interactions.
130
+ - **git-master**: Git expert for atomic commits, rebase/squash, and history search (blame, bisect, log -S). STRONGLY RECOMMENDED: Use with `delegate_task(category='quick', skills=['git-master'], ...)` to save context.
131
+
132
+ Disable built-in skills via `disabled_skills` in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
133
+
134
+ ```json
135
+ {
136
+ "disabled_skills": ["playwright"]
137
+ }
138
+ ```
139
+
140
+ Available built-in skills: `playwright`, `git-master`
141
+
142
+ ## Git Master
143
+
144
+ Configure git-master skill behavior:
145
+
146
+ ```json
147
+ {
148
+ "git_master": {
149
+ "commit_footer": true,
150
+ "include_co_authored_by": true
151
+ }
152
+ }
153
+ ```
154
+
155
+ | Option | Default | Description |
156
+ | ------------------------ | ------- | -------------------------------------------------------------------------------- |
157
+ | `commit_footer` | `true` | Adds "Ultraworked with Sisyphus" footer to commit messages. |
158
+ | `include_co_authored_by` | `true` | Adds `Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>` trailer to commits. |
159
+
160
+ ## Sisyphus Agent
161
+
162
+ When enabled (default), Sisyphus provides a powerful orchestrator with optional specialized agents:
163
+
164
+ - **Sisyphus**: Primary orchestrator agent (Claude Opus 4.5)
165
+ - **OpenCode-Builder**: OpenCode's default build agent, renamed due to SDK limitations (disabled by default)
166
+ - **Prometheus (Planner)**: OpenCode's default plan agent with work-planner methodology (enabled by default)
167
+ - **Metis (Plan Consultant)**: Pre-planning analysis agent that identifies hidden requirements and AI failure points
168
+
169
+ **Configuration Options:**
170
+
171
+ ```json
172
+ {
173
+ "sisyphus_agent": {
174
+ "disabled": false,
175
+ "default_builder_enabled": false,
176
+ "planner_enabled": true,
177
+ "replace_plan": true
178
+ }
179
+ }
180
+ ```
181
+
182
+ **Example: Enable OpenCode-Builder:**
183
+
184
+ ```json
185
+ {
186
+ "sisyphus_agent": {
187
+ "default_builder_enabled": true
188
+ }
189
+ }
190
+ ```
191
+
192
+ This enables OpenCode-Builder agent alongside Sisyphus. The default build agent is always demoted to subagent mode when Sisyphus is enabled.
193
+
194
+ **Example: Disable all Sisyphus orchestration:**
195
+
196
+ ```json
197
+ {
198
+ "sisyphus_agent": {
199
+ "disabled": true
200
+ }
201
+ }
202
+ ```
203
+
204
+ You can also customize Sisyphus agents like other agents:
205
+
206
+ ```json
207
+ {
208
+ "agents": {
209
+ "Sisyphus": {
210
+ "model": "anthropic/claude-sonnet-4",
211
+ "temperature": 0.3
212
+ },
213
+ "OpenCode-Builder": {
214
+ "model": "anthropic/claude-opus-4"
215
+ },
216
+ "Prometheus (Planner)": {
217
+ "model": "openai/gpt-5.2"
218
+ },
219
+ "Metis (Plan Consultant)": {
220
+ "model": "anthropic/claude-sonnet-4-5"
221
+ }
222
+ }
223
+ }
224
+ ```
225
+
226
+ | Option | Default | Description |
227
+ | ------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
228
+ | `disabled` | `false` | When `true`, disables all Sisyphus orchestration and restores original build/plan as primary. |
229
+ | `default_builder_enabled` | `false` | When `true`, enables OpenCode-Builder agent (same as OpenCode build, renamed due to SDK limitations). Disabled by default. |
230
+ | `planner_enabled` | `true` | When `true`, enables Prometheus (Planner) agent with work-planner methodology. Enabled by default. |
231
+ | `replace_plan` | `true` | When `true`, demotes default plan agent to subagent mode. Set to `false` to keep both Prometheus (Planner) and default plan available. |
232
+
233
+ ## Background Tasks
234
+
235
+ Configure concurrency limits for background agent tasks. This controls how many parallel background agents can run simultaneously.
236
+
237
+ ```json
238
+ {
239
+ "background_task": {
240
+ "defaultConcurrency": 5,
241
+ "providerConcurrency": {
242
+ "anthropic": 3,
243
+ "openai": 5,
244
+ "google": 10
245
+ },
246
+ "modelConcurrency": {
247
+ "anthropic/claude-opus-4-5": 2,
248
+ "google/gemini-3-flash": 10
249
+ }
250
+ }
251
+ }
252
+ ```
253
+
254
+ | Option | Default | Description |
255
+ | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------- |
256
+ | `defaultConcurrency` | - | Default maximum concurrent background tasks for all providers/models |
257
+ | `providerConcurrency` | - | Per-provider concurrency limits. Keys are provider names (e.g., `anthropic`, `openai`, `google`) |
258
+ | `modelConcurrency` | - | Per-model concurrency limits. Keys are full model names (e.g., `anthropic/claude-opus-4-5`). Overrides provider limits. |
259
+
260
+ **Priority Order**: `modelConcurrency` > `providerConcurrency` > `defaultConcurrency`
261
+
262
+ **Use Cases**:
263
+ - Limit expensive models (e.g., Opus) to prevent cost spikes
264
+ - Allow more concurrent tasks for fast/cheap models (e.g., Gemini Flash)
265
+ - Respect provider rate limits by setting provider-level caps
266
+
267
+ ## Categories
268
+
269
+ Categories enable domain-specific task delegation via the `delegate_task` tool. Each category applies runtime presets (model, temperature, prompt additions) when calling the `Sisyphus-Junior` agent.
270
+
271
+ **Default Categories:**
272
+
273
+ | Category | Model | Description |
274
+ | ---------------- | ----------------------------- | ---------------------------------------------------------------------------- |
275
+ | `visual` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design-focused tasks. High creativity (temp 0.7). |
276
+ | `business-logic` | `openai/gpt-5.2` | Backend logic, architecture, strategic reasoning. Low creativity (temp 0.1). |
277
+
278
+ **Usage:**
279
+
280
+ ```
281
+ // Via delegate_task tool
282
+ delegate_task(category="visual", prompt="Create a responsive dashboard component")
283
+ delegate_task(category="business-logic", prompt="Design the payment processing flow")
284
+
285
+ // Or target a specific agent directly
286
+ delegate_task(agent="oracle", prompt="Review this architecture")
287
+ ```
288
+
289
+ **Custom Categories:**
290
+
291
+ Add custom categories in `oh-my-opencode.json`:
292
+
293
+ ```json
294
+ {
295
+ "categories": {
296
+ "data-science": {
297
+ "model": "anthropic/claude-sonnet-4-5",
298
+ "temperature": 0.2,
299
+ "prompt_append": "Focus on data analysis, ML pipelines, and statistical methods."
300
+ },
301
+ "visual": {
302
+ "model": "google/gemini-3-pro-preview",
303
+ "prompt_append": "Use shadcn/ui components and Tailwind CSS."
304
+ }
305
+ }
306
+ }
307
+ ```
308
+
309
+ Each category supports: `model`, `temperature`, `top_p`, `maxTokens`, `thinking`, `reasoningEffort`, `textVerbosity`, `tools`, `prompt_append`.
310
+
311
+ ## Model Selection System
312
+
313
+ The installer automatically configures optimal models based on your subscriptions. This section explains how models are selected for each agent and category.
314
+
315
+ ### Overview
316
+
317
+ **Problem**: Users have different subscription combinations (Claude, OpenAI, Gemini, etc.). The system needs to automatically select the best available model for each task.
318
+
319
+ **Solution**: A tiered fallback system that:
320
+ 1. Prioritizes native provider subscriptions (Claude, OpenAI, Gemini)
321
+ 2. Falls back through alternative providers in priority order
322
+ 3. Applies capability-specific logic (e.g., Oracle prefers GPT, visual tasks prefer Gemini)
323
+
324
+ ### Provider Priority
325
+
326
+ ```
327
+ ┌─────────────────────────────────────────────────────────────────┐
328
+ │ MODEL SELECTION FLOW │
329
+ ├─────────────────────────────────────────────────────────────────┤
330
+ │ │
331
+ │ ┌─────────────────────────────────────────────────────────┐ │
332
+ │ │ TIER 1: NATIVE PROVIDERS │ │
333
+ │ │ (Your direct subscriptions) │ │
334
+ │ │ │ │
335
+ │ │ Claude (anthropic/) ──► OpenAI (openai/) ──► Gemini │ │
336
+ │ │ │ │ (google/) │ │
337
+ │ │ ▼ ▼ │ │ │
338
+ │ │ Opus/Sonnet/Haiku GPT-5.2/Codex Gemini 3 Pro │ │
339
+ │ └─────────────────────────────────────────────────────────┘ │
340
+ │ │ │
341
+ │ ▼ (if no native available) │
342
+ │ ┌─────────────────────────────────────────────────────────┐ │
343
+ │ │ TIER 2: OPENCODE ZEN │ │
344
+ │ │ (opencode/ prefix models) │ │
345
+ │ │ │ │
346
+ │ │ opencode/claude-opus-4-5, opencode/gpt-5.2, etc. │ │
347
+ │ └─────────────────────────────────────────────────────────┘ │
348
+ │ │ │
349
+ │ ▼ (if no OpenCode Zen) │
350
+ │ ┌─────────────────────────────────────────────────────────┐ │
351
+ │ │ TIER 3: GITHUB COPILOT │ │
352
+ │ │ (github-copilot/ prefix models) │ │
353
+ │ │ │ │
354
+ │ │ github-copilot/claude-opus-4.5, etc. │ │
355
+ │ └─────────────────────────────────────────────────────────┘ │
356
+ │ │ │
357
+ │ ▼ (if no Copilot) │
358
+ │ ┌─────────────────────────────────────────────────────────┐ │
359
+ │ │ TIER 4: Z.AI CODING PLAN │ │
360
+ │ │ (zai-coding-plan/ prefix models) │ │
361
+ │ │ │ │
362
+ │ │ zai-coding-plan/glm-4.7 (GLM models only) │ │
363
+ │ └─────────────────────────────────────────────────────────┘ │
364
+ │ │ │
365
+ │ ▼ (ultimate fallback) │
366
+ │ ┌─────────────────────────────────────────────────────────┐ │
367
+ │ │ FALLBACK: FREE TIER │ │
368
+ │ │ │ │
369
+ │ │ opencode/glm-4.7-free │ │
370
+ │ └─────────────────────────────────────────────────────────┘ │
371
+ │ │
372
+ └─────────────────────────────────────────────────────────────────┘
373
+ ```
374
+
375
+ ### Native Tier Cross-Fallback
376
+
377
+ Within the Native tier, models fall back based on capability requirements:
378
+
379
+ | Capability | 1st Choice | 2nd Choice | 3rd Choice |
380
+ |------------|------------|------------|------------|
381
+ | **High-tier tasks** (Sisyphus, Atlas) | Claude Opus | OpenAI GPT-5.2 | Gemini 3 Pro |
382
+ | **Standard tasks** | Claude Sonnet | OpenAI GPT-5.2 | Gemini 3 Flash |
383
+ | **Quick tasks** | Claude Haiku | OpenAI GPT-5.1-mini | Gemini 3 Flash |
384
+ | **Deep reasoning** (Oracle) | OpenAI GPT-5.2-Codex | Claude Opus | Gemini 3 Pro |
385
+ | **Visual/UI tasks** | Gemini 3 Pro | OpenAI GPT-5.2 | Claude Sonnet |
386
+ | **Writing tasks** | Gemini 3 Flash | OpenAI GPT-5.2 | Claude Sonnet |
387
+
388
+ ### Agent-Specific Rules
389
+
390
+ #### Standard Agents
391
+
392
+ | Agent | Capability | Example (Claude + OpenAI + Gemini) |
393
+ |-------|------------|-------------------------------------|
394
+ | **Sisyphus** | High-tier (isMax20) or Standard | `anthropic/claude-opus-4-5` or `anthropic/claude-sonnet-4-5` |
395
+ | **Oracle** | Deep reasoning | `openai/gpt-5.2-codex` |
396
+ | **Prometheus** | High-tier/Standard | Same as Sisyphus |
397
+ | **Metis** | High-tier/Standard | Same as Sisyphus |
398
+ | **Momus** | Deep reasoning | `openai/gpt-5.2-codex` |
399
+ | **Atlas** | High-tier/Standard | Same as Sisyphus |
400
+ | **multimodal-looker** | Visual | `google/gemini-3-pro-preview` |
401
+
402
+ #### Special Case: explore Agent
403
+
404
+ The `explore` agent has unique logic for cost optimization:
405
+
406
+ ```
407
+ ┌────────────────────────────────────────┐
408
+ │ EXPLORE AGENT LOGIC │
409
+ ├────────────────────────────────────────┤
410
+ │ │
411
+ │ Has Claude + isMax20? │
412
+ │ │ │
413
+ │ YES │ NO │
414
+ │ ▼ │ ▼ │
415
+ │ ┌──────┐│┌────────────────────┐ │
416
+ │ │Haiku ││ │ opencode/grok-code │ │
417
+ │ │4.5 │││ (free & fast) │ │
418
+ │ └──────┘│└────────────────────┘ │
419
+ │ │
420
+ │ Rationale: │
421
+ │ • max20 users want to use Claude quota │
422
+ │ • Others save quota with free grok │
423
+ └────────────────────────────────────────┘
424
+ ```
425
+
426
+ #### Special Case: librarian Agent
427
+
428
+ The `librarian` agent prioritizes Z.ai when available:
429
+
430
+ ```
431
+ ┌────────────────────────────────────────┐
432
+ │ LIBRARIAN AGENT LOGIC │
433
+ ├────────────────────────────────────────┤
434
+ │ │
435
+ │ Has Z.ai Coding Plan? │
436
+ │ │ │
437
+ │ YES │ NO │
438
+ │ ▼ │ ▼ │
439
+ │ ┌──────────────┐ ┌──────────────────┐ │
440
+ │ │zai-coding- │ │ Normal fallback │ │
441
+ │ │plan/glm-4.7 │ │ chain applies │ │
442
+ │ └──────────────┘ └──────────────────┘ │
443
+ │ │
444
+ │ Rationale: │
445
+ │ • GLM excels at documentation tasks │
446
+ │ • Z.ai provides dedicated GLM access │
447
+ └────────────────────────────────────────┘
448
+ ```
449
+
450
+ ### Category-Specific Rules
451
+
452
+ Categories follow the same fallback logic as agents:
453
+
454
+ | Category | Primary Capability | Fallback Chain |
455
+ |----------|-------------------|----------------|
456
+ | `visual-engineering` | Visual | Gemini → OpenAI → Claude |
457
+ | `ultrabrain` | Deep reasoning | OpenAI → Claude → Gemini |
458
+ | `artistry` | Visual/Creative | Gemini → OpenAI → Claude |
459
+ | `quick` | Quick tasks | Claude Haiku → OpenAI mini → Gemini Flash |
460
+ | `unspecified-low` | Standard | Claude Sonnet → OpenAI → Gemini Flash |
461
+ | `unspecified-high` | High-tier | Claude Opus → OpenAI → Gemini Pro |
462
+ | `writing` | Writing | Gemini Flash → OpenAI → Claude |
463
+
464
+ ### Subscription Scenarios
465
+
466
+ #### Scenario 1: Claude Only (Standard Plan)
467
+
468
+ ```json
469
+ // User has: Claude Pro (not max20)
470
+ {
471
+ "agents": {
472
+ "Sisyphus": { "model": "anthropic/claude-sonnet-4-5" },
473
+ "oracle": { "model": "anthropic/claude-opus-4-5" },
474
+ "explore": { "model": "opencode/grok-code" },
475
+ "librarian": { "model": "opencode/glm-4.7-free" }
476
+ }
477
+ }
478
+ ```
479
+
480
+ #### Scenario 2: Claude Only (Max20 Plan)
481
+
482
+ ```json
483
+ // User has: Claude Max (max20 mode)
484
+ {
485
+ "agents": {
486
+ "Sisyphus": { "model": "anthropic/claude-opus-4-5" },
487
+ "oracle": { "model": "anthropic/claude-opus-4-5" },
488
+ "explore": { "model": "anthropic/claude-haiku-4-5" },
489
+ "librarian": { "model": "opencode/glm-4.7-free" }
490
+ }
491
+ }
492
+ ```
493
+
494
+ #### Scenario 3: ChatGPT Only
495
+
496
+ ```json
497
+ // User has: OpenAI/ChatGPT Plus only
498
+ {
499
+ "agents": {
500
+ "Sisyphus": { "model": "openai/gpt-5.2" },
501
+ "oracle": { "model": "openai/gpt-5.2-codex" },
502
+ "explore": { "model": "opencode/grok-code" },
503
+ "multimodal-looker": { "model": "openai/gpt-5.2" },
504
+ "librarian": { "model": "opencode/glm-4.7-free" }
505
+ }
506
+ }
507
+ ```
508
+
509
+ #### Scenario 4: Full Stack (Claude + OpenAI + Gemini)
510
+
511
+ ```json
512
+ // User has: All native providers
513
+ {
514
+ "agents": {
515
+ "Sisyphus": { "model": "anthropic/claude-opus-4-5" },
516
+ "oracle": { "model": "openai/gpt-5.2-codex" },
517
+ "explore": { "model": "anthropic/claude-haiku-4-5" },
518
+ "multimodal-looker": { "model": "google/gemini-3-pro-preview" },
519
+ "librarian": { "model": "opencode/glm-4.7-free" }
520
+ }
521
+ }
522
+ ```
523
+
524
+ #### Scenario 5: GitHub Copilot Only
525
+
526
+ ```json
527
+ // User has: GitHub Copilot only (no native providers)
528
+ {
529
+ "agents": {
530
+ "Sisyphus": { "model": "github-copilot/claude-sonnet-4.5" },
531
+ "oracle": { "model": "github-copilot/gpt-5.2-codex" },
532
+ "explore": { "model": "opencode/grok-code" },
533
+ "librarian": { "model": "github-copilot/gpt-5.2" }
534
+ }
535
+ }
536
+ ```
537
+
538
+ ### isMax20 Flag Impact
539
+
540
+ The `isMax20` flag (Claude Max 20x mode) affects high-tier task model selection:
541
+
542
+ | isMax20 | High-tier Capability | Result |
543
+ |---------|---------------------|--------|
544
+ | `true` | Uses `unspecified-high` | Opus-class models |
545
+ | `false` | Uses `unspecified-low` | Sonnet-class models |
546
+
547
+ **Affected agents**: Sisyphus, Prometheus, Metis, Atlas
548
+
549
+ **Why?**: Max20 users have 20x more Claude usage, so they can afford Opus for orchestration. Standard users should conserve quota with Sonnet.
550
+
551
+ ### Manual Override
552
+
553
+ You can always override automatic selection in `oh-my-opencode.json`:
554
+
555
+ ```json
556
+ {
557
+ "agents": {
558
+ "Sisyphus": {
559
+ "model": "anthropic/claude-sonnet-4-5" // Force specific model
560
+ },
561
+ "oracle": {
562
+ "model": "openai/o3" // Use different model
563
+ }
564
+ },
565
+ "categories": {
566
+ "visual-engineering": {
567
+ "model": "anthropic/claude-opus-4-5" // Override category default
568
+ }
569
+ }
570
+ }
571
+ ```
572
+
573
+ ## Hooks
574
+
575
+ Disable specific built-in hooks via `disabled_hooks` in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
576
+
577
+ ```json
578
+ {
579
+ "disabled_hooks": ["comment-checker", "agent-usage-reminder"]
580
+ }
581
+ ```
582
+
583
+ Available hooks: `todo-continuation-enforcer`, `context-window-monitor`, `session-recovery`, `session-notification`, `comment-checker`, `grep-output-truncator`, `tool-output-truncator`, `directory-agents-injector`, `directory-readme-injector`, `empty-task-response-detector`, `think-mode`, `anthropic-context-window-limit-recovery`, `rules-injector`, `background-notification`, `auto-update-checker`, `startup-toast`, `keyword-detector`, `agent-usage-reminder`, `non-interactive-env`, `interactive-bash-session`, `compaction-context-injector`, `thinking-block-validator`, `claude-code-hooks`, `ralph-loop`, `preemptive-compaction`
584
+
585
+ **Note on `auto-update-checker` and `startup-toast`**: The `startup-toast` hook is a sub-feature of `auto-update-checker`. To disable only the startup toast notification while keeping update checking enabled, add `"startup-toast"` to `disabled_hooks`. To disable all update checking features (including the toast), add `"auto-update-checker"` to `disabled_hooks`.
586
+
587
+ ## MCPs
588
+
589
+ Exa, Context7 and grep.app MCP enabled by default.
590
+
591
+ - **websearch**: Real-time web search powered by [Exa AI](https://exa.ai) - searches the web and returns relevant content
592
+ - **context7**: Fetches up-to-date official documentation for libraries
593
+ - **grep_app**: Ultra-fast code search across millions of public GitHub repositories via [grep.app](https://grep.app)
594
+
595
+ Don't want them? Disable via `disabled_mcps` in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
596
+
597
+ ```json
598
+ {
599
+ "disabled_mcps": ["websearch", "context7", "grep_app"]
600
+ }
601
+ ```
602
+
603
+ ## LSP
604
+
605
+ OpenCode provides LSP tools for analysis.
606
+ Oh My OpenCode adds refactoring tools (rename, code actions).
607
+ All OpenCode LSP configs and custom settings (from opencode.json) are supported, plus additional Oh My OpenCode-specific settings.
608
+
609
+ Add LSP servers via the `lsp` option in `~/.config/opencode/oh-my-opencode.json` or `.opencode/oh-my-opencode.json`:
610
+
611
+ ```json
612
+ {
613
+ "lsp": {
614
+ "typescript-language-server": {
615
+ "command": ["typescript-language-server", "--stdio"],
616
+ "extensions": [".ts", ".tsx"],
617
+ "priority": 10
618
+ },
619
+ "pylsp": {
620
+ "disabled": true
621
+ }
622
+ }
623
+ }
624
+ ```
625
+
626
+ Each server supports: `command`, `extensions`, `priority`, `env`, `initialization`, `disabled`.
627
+
628
+ ## Experimental
629
+
630
+ Opt-in experimental features that may change or be removed in future versions. Use with caution.
631
+
632
+ ```json
633
+ {
634
+ "experimental": {
635
+ "truncate_all_tool_outputs": true,
636
+ "aggressive_truncation": true,
637
+ "auto_resume": true
638
+ }
639
+ }
640
+ ```
641
+
642
+ | Option | Default | Description |
643
+ | --------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
644
+ | `truncate_all_tool_outputs` | `false` | Truncates ALL tool outputs instead of just whitelisted tools (Grep, Glob, LSP, AST-grep). Tool output truncator is enabled by default - disable via `disabled_hooks`. |
645
+ | `aggressive_truncation` | `false` | When token limit is exceeded, aggressively truncates tool outputs to fit within limits. More aggressive than the default truncation behavior. Falls back to summarize/revert if insufficient. |
646
+ | `auto_resume` | `false` | Automatically resumes session after successful recovery from thinking block errors or thinking disabled violations. Extracts the last user message and continues. |
647
+
648
+ **Warning**: These features are experimental and may cause unexpected behavior. Enable only if you understand the implications.
649
+
650
+ ## Environment Variables
651
+
652
+ | Variable | Description |
653
+ | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
654
+ | `OPENCODE_CONFIG_DIR` | Override the OpenCode configuration directory. Useful for profile isolation with tools like [OCX](https://github.com/kdcokenny/ocx) ghost mode. |