opencode-repos 0.3.0 → 0.3.2

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/index.ts +25 -11
  2. package/package.json +27 -27
  3. package/src/__tests__/git.test.ts +33 -2
  4. package/src/git.ts +32 -5
  5. package/.sisyphus/boulder.json +0 -8
  6. package/.sisyphus/notepads/opencode-repos/decisions.md +0 -15
  7. package/.sisyphus/notepads/opencode-repos/learnings.md +0 -384
  8. package/.sisyphus/plans/opencode-repos.md +0 -987
  9. package/.tmux-sessionizer +0 -8
  10. package/TODO.md +0 -3
  11. package/oh-my-opencode/.github/FUNDING.yml +0 -15
  12. package/oh-my-opencode/.github/ISSUE_TEMPLATE/bug_report.yml +0 -129
  13. package/oh-my-opencode/.github/ISSUE_TEMPLATE/config.yml +0 -8
  14. package/oh-my-opencode/.github/ISSUE_TEMPLATE/feature_request.yml +0 -100
  15. package/oh-my-opencode/.github/ISSUE_TEMPLATE/general.yml +0 -83
  16. package/oh-my-opencode/.github/assets/google.jpg +0 -0
  17. package/oh-my-opencode/.github/assets/hero.jpg +0 -0
  18. package/oh-my-opencode/.github/assets/indent.jpg +0 -0
  19. package/oh-my-opencode/.github/assets/microsoft.jpg +0 -0
  20. package/oh-my-opencode/.github/assets/omo.png +0 -0
  21. package/oh-my-opencode/.github/assets/orchestrator-atlas.png +0 -0
  22. package/oh-my-opencode/.github/assets/sisyphus.png +0 -0
  23. package/oh-my-opencode/.github/assets/sisyphuslabs.png +0 -0
  24. package/oh-my-opencode/.github/pull_request_template.md +0 -34
  25. package/oh-my-opencode/.github/workflows/ci.yml +0 -138
  26. package/oh-my-opencode/.github/workflows/cla.yml +0 -41
  27. package/oh-my-opencode/.github/workflows/lint-workflows.yml +0 -22
  28. package/oh-my-opencode/.github/workflows/publish.yml +0 -165
  29. package/oh-my-opencode/.github/workflows/sisyphus-agent.yml +0 -500
  30. package/oh-my-opencode/.opencode/background-tasks.json +0 -27
  31. package/oh-my-opencode/.opencode/command/get-unpublished-changes.md +0 -84
  32. package/oh-my-opencode/.opencode/command/omomomo.md +0 -37
  33. package/oh-my-opencode/.opencode/command/publish.md +0 -257
  34. package/oh-my-opencode/AGENTS.md +0 -179
  35. package/oh-my-opencode/CLA.md +0 -58
  36. package/oh-my-opencode/CONTRIBUTING.md +0 -268
  37. package/oh-my-opencode/LICENSE.md +0 -82
  38. package/oh-my-opencode/README.ja.md +0 -370
  39. package/oh-my-opencode/README.md +0 -376
  40. package/oh-my-opencode/README.zh-cn.md +0 -380
  41. package/oh-my-opencode/assets/oh-my-opencode.schema.json +0 -2171
  42. package/oh-my-opencode/bin/oh-my-opencode.js +0 -80
  43. package/oh-my-opencode/bin/platform.js +0 -38
  44. package/oh-my-opencode/bin/platform.test.ts +0 -148
  45. package/oh-my-opencode/bun.lock +0 -314
  46. package/oh-my-opencode/bunfig.toml +0 -2
  47. package/oh-my-opencode/docs/category-skill-guide.md +0 -200
  48. package/oh-my-opencode/docs/cli-guide.md +0 -272
  49. package/oh-my-opencode/docs/configurations.md +0 -654
  50. package/oh-my-opencode/docs/features.md +0 -550
  51. package/oh-my-opencode/docs/guide/installation.md +0 -288
  52. package/oh-my-opencode/docs/guide/overview.md +0 -97
  53. package/oh-my-opencode/docs/guide/understanding-orchestration-system.md +0 -445
  54. package/oh-my-opencode/docs/orchestration-guide.md +0 -152
  55. package/oh-my-opencode/docs/ultrawork-manifesto.md +0 -197
  56. package/oh-my-opencode/package.json +0 -89
  57. package/oh-my-opencode/packages/darwin-arm64/bin/.gitkeep +0 -0
  58. package/oh-my-opencode/packages/darwin-arm64/package.json +0 -22
  59. package/oh-my-opencode/packages/darwin-x64/bin/.gitkeep +0 -0
  60. package/oh-my-opencode/packages/darwin-x64/package.json +0 -22
  61. package/oh-my-opencode/packages/linux-arm64/bin/.gitkeep +0 -0
  62. package/oh-my-opencode/packages/linux-arm64/package.json +0 -25
  63. package/oh-my-opencode/packages/linux-arm64-musl/bin/.gitkeep +0 -0
  64. package/oh-my-opencode/packages/linux-arm64-musl/package.json +0 -25
  65. package/oh-my-opencode/packages/linux-x64/bin/.gitkeep +0 -0
  66. package/oh-my-opencode/packages/linux-x64/package.json +0 -25
  67. package/oh-my-opencode/packages/linux-x64-musl/bin/.gitkeep +0 -0
  68. package/oh-my-opencode/packages/linux-x64-musl/package.json +0 -25
  69. package/oh-my-opencode/packages/windows-x64/bin/.gitkeep +0 -0
  70. package/oh-my-opencode/packages/windows-x64/package.json +0 -22
  71. package/oh-my-opencode/postinstall.mjs +0 -43
  72. package/oh-my-opencode/script/build-binaries.ts +0 -103
  73. package/oh-my-opencode/script/build-schema.ts +0 -28
  74. package/oh-my-opencode/script/generate-changelog.ts +0 -92
  75. package/oh-my-opencode/script/publish.ts +0 -344
  76. package/oh-my-opencode/signatures/cla.json +0 -676
  77. package/oh-my-opencode/src/agents/AGENTS.md +0 -67
  78. package/oh-my-opencode/src/agents/atlas.ts +0 -1383
  79. package/oh-my-opencode/src/agents/dynamic-agent-prompt-builder.ts +0 -400
  80. package/oh-my-opencode/src/agents/explore.ts +0 -122
  81. package/oh-my-opencode/src/agents/index.ts +0 -13
  82. package/oh-my-opencode/src/agents/librarian.ts +0 -326
  83. package/oh-my-opencode/src/agents/metis.ts +0 -315
  84. package/oh-my-opencode/src/agents/momus.test.ts +0 -57
  85. package/oh-my-opencode/src/agents/momus.ts +0 -444
  86. package/oh-my-opencode/src/agents/multimodal-looker.ts +0 -56
  87. package/oh-my-opencode/src/agents/oracle.ts +0 -122
  88. package/oh-my-opencode/src/agents/prometheus-prompt.test.ts +0 -22
  89. package/oh-my-opencode/src/agents/prometheus-prompt.ts +0 -1196
  90. package/oh-my-opencode/src/agents/sisyphus-junior.test.ts +0 -232
  91. package/oh-my-opencode/src/agents/sisyphus-junior.ts +0 -134
  92. package/oh-my-opencode/src/agents/sisyphus.ts +0 -633
  93. package/oh-my-opencode/src/agents/types.ts +0 -80
  94. package/oh-my-opencode/src/agents/utils.test.ts +0 -311
  95. package/oh-my-opencode/src/agents/utils.ts +0 -240
  96. package/oh-my-opencode/src/cli/AGENTS.md +0 -91
  97. package/oh-my-opencode/src/cli/config-manager.test.ts +0 -364
  98. package/oh-my-opencode/src/cli/config-manager.ts +0 -641
  99. package/oh-my-opencode/src/cli/doctor/checks/auth.test.ts +0 -114
  100. package/oh-my-opencode/src/cli/doctor/checks/auth.ts +0 -115
  101. package/oh-my-opencode/src/cli/doctor/checks/config.test.ts +0 -103
  102. package/oh-my-opencode/src/cli/doctor/checks/config.ts +0 -123
  103. package/oh-my-opencode/src/cli/doctor/checks/dependencies.test.ts +0 -152
  104. package/oh-my-opencode/src/cli/doctor/checks/dependencies.ts +0 -163
  105. package/oh-my-opencode/src/cli/doctor/checks/gh.test.ts +0 -151
  106. package/oh-my-opencode/src/cli/doctor/checks/gh.ts +0 -171
  107. package/oh-my-opencode/src/cli/doctor/checks/index.ts +0 -34
  108. package/oh-my-opencode/src/cli/doctor/checks/lsp.test.ts +0 -134
  109. package/oh-my-opencode/src/cli/doctor/checks/lsp.ts +0 -77
  110. package/oh-my-opencode/src/cli/doctor/checks/mcp.test.ts +0 -115
  111. package/oh-my-opencode/src/cli/doctor/checks/mcp.ts +0 -128
  112. package/oh-my-opencode/src/cli/doctor/checks/opencode.test.ts +0 -227
  113. package/oh-my-opencode/src/cli/doctor/checks/opencode.ts +0 -178
  114. package/oh-my-opencode/src/cli/doctor/checks/plugin.test.ts +0 -109
  115. package/oh-my-opencode/src/cli/doctor/checks/plugin.ts +0 -124
  116. package/oh-my-opencode/src/cli/doctor/checks/version.test.ts +0 -148
  117. package/oh-my-opencode/src/cli/doctor/checks/version.ts +0 -135
  118. package/oh-my-opencode/src/cli/doctor/constants.ts +0 -72
  119. package/oh-my-opencode/src/cli/doctor/formatter.test.ts +0 -218
  120. package/oh-my-opencode/src/cli/doctor/formatter.ts +0 -140
  121. package/oh-my-opencode/src/cli/doctor/index.ts +0 -11
  122. package/oh-my-opencode/src/cli/doctor/runner.test.ts +0 -153
  123. package/oh-my-opencode/src/cli/doctor/runner.ts +0 -132
  124. package/oh-my-opencode/src/cli/doctor/types.ts +0 -113
  125. package/oh-my-opencode/src/cli/get-local-version/formatter.ts +0 -66
  126. package/oh-my-opencode/src/cli/get-local-version/index.ts +0 -106
  127. package/oh-my-opencode/src/cli/get-local-version/types.ts +0 -14
  128. package/oh-my-opencode/src/cli/index.ts +0 -153
  129. package/oh-my-opencode/src/cli/install.ts +0 -523
  130. package/oh-my-opencode/src/cli/model-fallback.ts +0 -246
  131. package/oh-my-opencode/src/cli/run/completion.test.ts +0 -170
  132. package/oh-my-opencode/src/cli/run/completion.ts +0 -79
  133. package/oh-my-opencode/src/cli/run/events.test.ts +0 -155
  134. package/oh-my-opencode/src/cli/run/events.ts +0 -325
  135. package/oh-my-opencode/src/cli/run/index.ts +0 -2
  136. package/oh-my-opencode/src/cli/run/runner.ts +0 -159
  137. package/oh-my-opencode/src/cli/run/types.ts +0 -76
  138. package/oh-my-opencode/src/cli/types.ts +0 -40
  139. package/oh-my-opencode/src/config/index.ts +0 -26
  140. package/oh-my-opencode/src/config/schema.test.ts +0 -444
  141. package/oh-my-opencode/src/config/schema.ts +0 -339
  142. package/oh-my-opencode/src/features/AGENTS.md +0 -77
  143. package/oh-my-opencode/src/features/background-agent/concurrency.test.ts +0 -418
  144. package/oh-my-opencode/src/features/background-agent/concurrency.ts +0 -137
  145. package/oh-my-opencode/src/features/background-agent/index.ts +0 -3
  146. package/oh-my-opencode/src/features/background-agent/manager.test.ts +0 -1928
  147. package/oh-my-opencode/src/features/background-agent/manager.ts +0 -1335
  148. package/oh-my-opencode/src/features/background-agent/types.ts +0 -66
  149. package/oh-my-opencode/src/features/boulder-state/constants.ts +0 -13
  150. package/oh-my-opencode/src/features/boulder-state/index.ts +0 -3
  151. package/oh-my-opencode/src/features/boulder-state/storage.test.ts +0 -250
  152. package/oh-my-opencode/src/features/boulder-state/storage.ts +0 -150
  153. package/oh-my-opencode/src/features/boulder-state/types.ts +0 -26
  154. package/oh-my-opencode/src/features/builtin-commands/commands.ts +0 -89
  155. package/oh-my-opencode/src/features/builtin-commands/index.ts +0 -2
  156. package/oh-my-opencode/src/features/builtin-commands/templates/init-deep.ts +0 -300
  157. package/oh-my-opencode/src/features/builtin-commands/templates/ralph-loop.ts +0 -38
  158. package/oh-my-opencode/src/features/builtin-commands/templates/refactor.ts +0 -619
  159. package/oh-my-opencode/src/features/builtin-commands/templates/start-work.ts +0 -72
  160. package/oh-my-opencode/src/features/builtin-commands/types.ts +0 -9
  161. package/oh-my-opencode/src/features/builtin-skills/frontend-ui-ux/SKILL.md +0 -78
  162. package/oh-my-opencode/src/features/builtin-skills/git-master/SKILL.md +0 -1105
  163. package/oh-my-opencode/src/features/builtin-skills/index.ts +0 -2
  164. package/oh-my-opencode/src/features/builtin-skills/skills.ts +0 -1203
  165. package/oh-my-opencode/src/features/builtin-skills/types.ts +0 -16
  166. package/oh-my-opencode/src/features/claude-code-agent-loader/index.ts +0 -2
  167. package/oh-my-opencode/src/features/claude-code-agent-loader/loader.ts +0 -90
  168. package/oh-my-opencode/src/features/claude-code-agent-loader/types.ts +0 -17
  169. package/oh-my-opencode/src/features/claude-code-command-loader/index.ts +0 -2
  170. package/oh-my-opencode/src/features/claude-code-command-loader/loader.ts +0 -144
  171. package/oh-my-opencode/src/features/claude-code-command-loader/types.ts +0 -46
  172. package/oh-my-opencode/src/features/claude-code-mcp-loader/env-expander.ts +0 -27
  173. package/oh-my-opencode/src/features/claude-code-mcp-loader/index.ts +0 -11
  174. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.test.ts +0 -162
  175. package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.ts +0 -113
  176. package/oh-my-opencode/src/features/claude-code-mcp-loader/transformer.ts +0 -53
  177. package/oh-my-opencode/src/features/claude-code-mcp-loader/types.ts +0 -42
  178. package/oh-my-opencode/src/features/claude-code-plugin-loader/index.ts +0 -3
  179. package/oh-my-opencode/src/features/claude-code-plugin-loader/loader.ts +0 -486
  180. package/oh-my-opencode/src/features/claude-code-plugin-loader/types.ts +0 -210
  181. package/oh-my-opencode/src/features/claude-code-session-state/index.ts +0 -1
  182. package/oh-my-opencode/src/features/claude-code-session-state/state.test.ts +0 -126
  183. package/oh-my-opencode/src/features/claude-code-session-state/state.ts +0 -37
  184. package/oh-my-opencode/src/features/context-injector/collector.test.ts +0 -330
  185. package/oh-my-opencode/src/features/context-injector/collector.ts +0 -85
  186. package/oh-my-opencode/src/features/context-injector/index.ts +0 -14
  187. package/oh-my-opencode/src/features/context-injector/injector.test.ts +0 -122
  188. package/oh-my-opencode/src/features/context-injector/injector.ts +0 -167
  189. package/oh-my-opencode/src/features/context-injector/types.ts +0 -91
  190. package/oh-my-opencode/src/features/hook-message-injector/constants.ts +0 -6
  191. package/oh-my-opencode/src/features/hook-message-injector/index.ts +0 -4
  192. package/oh-my-opencode/src/features/hook-message-injector/injector.ts +0 -195
  193. package/oh-my-opencode/src/features/hook-message-injector/types.ts +0 -47
  194. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.test.ts +0 -448
  195. package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.ts +0 -180
  196. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.test.ts +0 -210
  197. package/oh-my-opencode/src/features/opencode-skill-loader/blocking.ts +0 -62
  198. package/oh-my-opencode/src/features/opencode-skill-loader/discover-worker.ts +0 -59
  199. package/oh-my-opencode/src/features/opencode-skill-loader/index.ts +0 -4
  200. package/oh-my-opencode/src/features/opencode-skill-loader/loader.test.ts +0 -273
  201. package/oh-my-opencode/src/features/opencode-skill-loader/loader.ts +0 -259
  202. package/oh-my-opencode/src/features/opencode-skill-loader/merger.ts +0 -267
  203. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.test.ts +0 -267
  204. package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.ts +0 -206
  205. package/oh-my-opencode/src/features/opencode-skill-loader/types.ts +0 -38
  206. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.test.ts +0 -201
  207. package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.ts +0 -27
  208. package/oh-my-opencode/src/features/skill-mcp-manager/index.ts +0 -2
  209. package/oh-my-opencode/src/features/skill-mcp-manager/manager.test.ts +0 -611
  210. package/oh-my-opencode/src/features/skill-mcp-manager/manager.ts +0 -520
  211. package/oh-my-opencode/src/features/skill-mcp-manager/types.ts +0 -14
  212. package/oh-my-opencode/src/features/task-toast-manager/index.ts +0 -2
  213. package/oh-my-opencode/src/features/task-toast-manager/manager.test.ts +0 -249
  214. package/oh-my-opencode/src/features/task-toast-manager/manager.ts +0 -215
  215. package/oh-my-opencode/src/features/task-toast-manager/types.ts +0 -24
  216. package/oh-my-opencode/src/hooks/AGENTS.md +0 -73
  217. package/oh-my-opencode/src/hooks/agent-usage-reminder/constants.ts +0 -54
  218. package/oh-my-opencode/src/hooks/agent-usage-reminder/index.ts +0 -109
  219. package/oh-my-opencode/src/hooks/agent-usage-reminder/storage.ts +0 -42
  220. package/oh-my-opencode/src/hooks/agent-usage-reminder/types.ts +0 -6
  221. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.test.ts +0 -307
  222. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.ts +0 -485
  223. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/index.ts +0 -151
  224. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/parser.ts +0 -201
  225. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.ts +0 -33
  226. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +0 -184
  227. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +0 -44
  228. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.test.ts +0 -77
  229. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.ts +0 -250
  230. package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/types.ts +0 -42
  231. package/oh-my-opencode/src/hooks/atlas/index.test.ts +0 -953
  232. package/oh-my-opencode/src/hooks/atlas/index.ts +0 -771
  233. package/oh-my-opencode/src/hooks/auto-slash-command/constants.ts +0 -12
  234. package/oh-my-opencode/src/hooks/auto-slash-command/detector.test.ts +0 -296
  235. package/oh-my-opencode/src/hooks/auto-slash-command/detector.ts +0 -65
  236. package/oh-my-opencode/src/hooks/auto-slash-command/executor.ts +0 -205
  237. package/oh-my-opencode/src/hooks/auto-slash-command/index.test.ts +0 -254
  238. package/oh-my-opencode/src/hooks/auto-slash-command/index.ts +0 -89
  239. package/oh-my-opencode/src/hooks/auto-slash-command/types.ts +0 -23
  240. package/oh-my-opencode/src/hooks/auto-update-checker/cache.ts +0 -93
  241. package/oh-my-opencode/src/hooks/auto-update-checker/checker.test.ts +0 -24
  242. package/oh-my-opencode/src/hooks/auto-update-checker/checker.ts +0 -284
  243. package/oh-my-opencode/src/hooks/auto-update-checker/constants.ts +0 -64
  244. package/oh-my-opencode/src/hooks/auto-update-checker/index.test.ts +0 -254
  245. package/oh-my-opencode/src/hooks/auto-update-checker/index.ts +0 -260
  246. package/oh-my-opencode/src/hooks/auto-update-checker/types.ts +0 -29
  247. package/oh-my-opencode/src/hooks/background-compaction/index.ts +0 -87
  248. package/oh-my-opencode/src/hooks/background-notification/index.ts +0 -28
  249. package/oh-my-opencode/src/hooks/background-notification/types.ts +0 -5
  250. package/oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md +0 -70
  251. package/oh-my-opencode/src/hooks/claude-code-hooks/config-loader.ts +0 -107
  252. package/oh-my-opencode/src/hooks/claude-code-hooks/config.ts +0 -103
  253. package/oh-my-opencode/src/hooks/claude-code-hooks/index.ts +0 -401
  254. package/oh-my-opencode/src/hooks/claude-code-hooks/plugin-config.ts +0 -12
  255. package/oh-my-opencode/src/hooks/claude-code-hooks/post-tool-use.ts +0 -199
  256. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-compact.ts +0 -109
  257. package/oh-my-opencode/src/hooks/claude-code-hooks/pre-tool-use.ts +0 -172
  258. package/oh-my-opencode/src/hooks/claude-code-hooks/stop.ts +0 -118
  259. package/oh-my-opencode/src/hooks/claude-code-hooks/todo.ts +0 -76
  260. package/oh-my-opencode/src/hooks/claude-code-hooks/tool-input-cache.ts +0 -47
  261. package/oh-my-opencode/src/hooks/claude-code-hooks/transcript.ts +0 -252
  262. package/oh-my-opencode/src/hooks/claude-code-hooks/types.ts +0 -204
  263. package/oh-my-opencode/src/hooks/claude-code-hooks/user-prompt-submit.ts +0 -117
  264. package/oh-my-opencode/src/hooks/comment-checker/cli.test.ts +0 -68
  265. package/oh-my-opencode/src/hooks/comment-checker/cli.ts +0 -221
  266. package/oh-my-opencode/src/hooks/comment-checker/downloader.ts +0 -196
  267. package/oh-my-opencode/src/hooks/comment-checker/index.ts +0 -171
  268. package/oh-my-opencode/src/hooks/comment-checker/types.ts +0 -33
  269. package/oh-my-opencode/src/hooks/compaction-context-injector/index.ts +0 -61
  270. package/oh-my-opencode/src/hooks/context-window-monitor.ts +0 -99
  271. package/oh-my-opencode/src/hooks/delegate-task-retry/index.test.ts +0 -119
  272. package/oh-my-opencode/src/hooks/delegate-task-retry/index.ts +0 -136
  273. package/oh-my-opencode/src/hooks/directory-agents-injector/constants.ts +0 -9
  274. package/oh-my-opencode/src/hooks/directory-agents-injector/index.ts +0 -182
  275. package/oh-my-opencode/src/hooks/directory-agents-injector/storage.ts +0 -48
  276. package/oh-my-opencode/src/hooks/directory-agents-injector/types.ts +0 -5
  277. package/oh-my-opencode/src/hooks/directory-readme-injector/constants.ts +0 -9
  278. package/oh-my-opencode/src/hooks/directory-readme-injector/index.ts +0 -177
  279. package/oh-my-opencode/src/hooks/directory-readme-injector/storage.ts +0 -48
  280. package/oh-my-opencode/src/hooks/directory-readme-injector/types.ts +0 -5
  281. package/oh-my-opencode/src/hooks/edit-error-recovery/index.test.ts +0 -126
  282. package/oh-my-opencode/src/hooks/edit-error-recovery/index.ts +0 -57
  283. package/oh-my-opencode/src/hooks/empty-task-response-detector.ts +0 -27
  284. package/oh-my-opencode/src/hooks/index.ts +0 -32
  285. package/oh-my-opencode/src/hooks/interactive-bash-session/constants.ts +0 -15
  286. package/oh-my-opencode/src/hooks/interactive-bash-session/index.ts +0 -262
  287. package/oh-my-opencode/src/hooks/interactive-bash-session/storage.ts +0 -59
  288. package/oh-my-opencode/src/hooks/interactive-bash-session/types.ts +0 -11
  289. package/oh-my-opencode/src/hooks/keyword-detector/constants.ts +0 -300
  290. package/oh-my-opencode/src/hooks/keyword-detector/detector.ts +0 -52
  291. package/oh-my-opencode/src/hooks/keyword-detector/index.test.ts +0 -529
  292. package/oh-my-opencode/src/hooks/keyword-detector/index.ts +0 -100
  293. package/oh-my-opencode/src/hooks/keyword-detector/types.ts +0 -4
  294. package/oh-my-opencode/src/hooks/non-interactive-env/constants.ts +0 -70
  295. package/oh-my-opencode/src/hooks/non-interactive-env/detector.ts +0 -19
  296. package/oh-my-opencode/src/hooks/non-interactive-env/index.test.ts +0 -323
  297. package/oh-my-opencode/src/hooks/non-interactive-env/index.ts +0 -63
  298. package/oh-my-opencode/src/hooks/non-interactive-env/types.ts +0 -3
  299. package/oh-my-opencode/src/hooks/prometheus-md-only/constants.ts +0 -32
  300. package/oh-my-opencode/src/hooks/prometheus-md-only/index.test.ts +0 -488
  301. package/oh-my-opencode/src/hooks/prometheus-md-only/index.ts +0 -136
  302. package/oh-my-opencode/src/hooks/ralph-loop/constants.ts +0 -5
  303. package/oh-my-opencode/src/hooks/ralph-loop/index.test.ts +0 -835
  304. package/oh-my-opencode/src/hooks/ralph-loop/index.ts +0 -417
  305. package/oh-my-opencode/src/hooks/ralph-loop/storage.ts +0 -115
  306. package/oh-my-opencode/src/hooks/ralph-loop/types.ts +0 -19
  307. package/oh-my-opencode/src/hooks/rules-injector/constants.ts +0 -30
  308. package/oh-my-opencode/src/hooks/rules-injector/finder.test.ts +0 -381
  309. package/oh-my-opencode/src/hooks/rules-injector/finder.ts +0 -263
  310. package/oh-my-opencode/src/hooks/rules-injector/index.ts +0 -223
  311. package/oh-my-opencode/src/hooks/rules-injector/matcher.ts +0 -63
  312. package/oh-my-opencode/src/hooks/rules-injector/parser.test.ts +0 -226
  313. package/oh-my-opencode/src/hooks/rules-injector/parser.ts +0 -211
  314. package/oh-my-opencode/src/hooks/rules-injector/storage.ts +0 -59
  315. package/oh-my-opencode/src/hooks/rules-injector/types.ts +0 -57
  316. package/oh-my-opencode/src/hooks/session-notification-utils.ts +0 -140
  317. package/oh-my-opencode/src/hooks/session-notification.test.ts +0 -361
  318. package/oh-my-opencode/src/hooks/session-notification.ts +0 -330
  319. package/oh-my-opencode/src/hooks/session-recovery/constants.ts +0 -10
  320. package/oh-my-opencode/src/hooks/session-recovery/index.test.ts +0 -223
  321. package/oh-my-opencode/src/hooks/session-recovery/index.ts +0 -435
  322. package/oh-my-opencode/src/hooks/session-recovery/storage.ts +0 -390
  323. package/oh-my-opencode/src/hooks/session-recovery/types.ts +0 -98
  324. package/oh-my-opencode/src/hooks/start-work/index.test.ts +0 -402
  325. package/oh-my-opencode/src/hooks/start-work/index.ts +0 -242
  326. package/oh-my-opencode/src/hooks/task-resume-info/index.ts +0 -36
  327. package/oh-my-opencode/src/hooks/think-mode/detector.ts +0 -57
  328. package/oh-my-opencode/src/hooks/think-mode/index.test.ts +0 -353
  329. package/oh-my-opencode/src/hooks/think-mode/index.ts +0 -89
  330. package/oh-my-opencode/src/hooks/think-mode/switcher.test.ts +0 -461
  331. package/oh-my-opencode/src/hooks/think-mode/switcher.ts +0 -222
  332. package/oh-my-opencode/src/hooks/think-mode/types.ts +0 -21
  333. package/oh-my-opencode/src/hooks/thinking-block-validator/index.ts +0 -171
  334. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.test.ts +0 -876
  335. package/oh-my-opencode/src/hooks/todo-continuation-enforcer.ts +0 -480
  336. package/oh-my-opencode/src/hooks/tool-output-truncator.test.ts +0 -168
  337. package/oh-my-opencode/src/hooks/tool-output-truncator.ts +0 -61
  338. package/oh-my-opencode/src/index.ts +0 -589
  339. package/oh-my-opencode/src/mcp/AGENTS.md +0 -70
  340. package/oh-my-opencode/src/mcp/context7.ts +0 -6
  341. package/oh-my-opencode/src/mcp/grep-app.ts +0 -6
  342. package/oh-my-opencode/src/mcp/index.test.ts +0 -86
  343. package/oh-my-opencode/src/mcp/index.ts +0 -32
  344. package/oh-my-opencode/src/mcp/types.ts +0 -9
  345. package/oh-my-opencode/src/mcp/websearch.ts +0 -10
  346. package/oh-my-opencode/src/plugin-config.test.ts +0 -119
  347. package/oh-my-opencode/src/plugin-config.ts +0 -135
  348. package/oh-my-opencode/src/plugin-handlers/config-handler.test.ts +0 -103
  349. package/oh-my-opencode/src/plugin-handlers/config-handler.ts +0 -399
  350. package/oh-my-opencode/src/plugin-handlers/index.ts +0 -1
  351. package/oh-my-opencode/src/plugin-state.ts +0 -30
  352. package/oh-my-opencode/src/shared/AGENTS.md +0 -63
  353. package/oh-my-opencode/src/shared/agent-tool-restrictions.ts +0 -44
  354. package/oh-my-opencode/src/shared/agent-variant.test.ts +0 -83
  355. package/oh-my-opencode/src/shared/agent-variant.ts +0 -40
  356. package/oh-my-opencode/src/shared/claude-config-dir.test.ts +0 -60
  357. package/oh-my-opencode/src/shared/claude-config-dir.ts +0 -11
  358. package/oh-my-opencode/src/shared/command-executor.ts +0 -225
  359. package/oh-my-opencode/src/shared/config-errors.ts +0 -18
  360. package/oh-my-opencode/src/shared/config-path.ts +0 -47
  361. package/oh-my-opencode/src/shared/data-path.ts +0 -22
  362. package/oh-my-opencode/src/shared/deep-merge.test.ts +0 -336
  363. package/oh-my-opencode/src/shared/deep-merge.ts +0 -53
  364. package/oh-my-opencode/src/shared/dynamic-truncator.ts +0 -193
  365. package/oh-my-opencode/src/shared/external-plugin-detector.test.ts +0 -133
  366. package/oh-my-opencode/src/shared/external-plugin-detector.ts +0 -132
  367. package/oh-my-opencode/src/shared/file-reference-resolver.ts +0 -85
  368. package/oh-my-opencode/src/shared/file-utils.ts +0 -40
  369. package/oh-my-opencode/src/shared/first-message-variant.test.ts +0 -32
  370. package/oh-my-opencode/src/shared/first-message-variant.ts +0 -28
  371. package/oh-my-opencode/src/shared/frontmatter.test.ts +0 -262
  372. package/oh-my-opencode/src/shared/frontmatter.ts +0 -31
  373. package/oh-my-opencode/src/shared/hook-disabled.ts +0 -22
  374. package/oh-my-opencode/src/shared/index.ts +0 -29
  375. package/oh-my-opencode/src/shared/jsonc-parser.test.ts +0 -266
  376. package/oh-my-opencode/src/shared/jsonc-parser.ts +0 -66
  377. package/oh-my-opencode/src/shared/logger.ts +0 -20
  378. package/oh-my-opencode/src/shared/migration.test.ts +0 -602
  379. package/oh-my-opencode/src/shared/migration.ts +0 -191
  380. package/oh-my-opencode/src/shared/model-resolver.test.ts +0 -101
  381. package/oh-my-opencode/src/shared/model-resolver.ts +0 -35
  382. package/oh-my-opencode/src/shared/model-sanitizer.ts +0 -12
  383. package/oh-my-opencode/src/shared/opencode-config-dir.test.ts +0 -318
  384. package/oh-my-opencode/src/shared/opencode-config-dir.ts +0 -142
  385. package/oh-my-opencode/src/shared/opencode-version.test.ts +0 -223
  386. package/oh-my-opencode/src/shared/opencode-version.ts +0 -72
  387. package/oh-my-opencode/src/shared/pattern-matcher.ts +0 -29
  388. package/oh-my-opencode/src/shared/permission-compat.test.ts +0 -134
  389. package/oh-my-opencode/src/shared/permission-compat.ts +0 -77
  390. package/oh-my-opencode/src/shared/session-cursor.test.ts +0 -66
  391. package/oh-my-opencode/src/shared/session-cursor.ts +0 -85
  392. package/oh-my-opencode/src/shared/shell-env.test.ts +0 -278
  393. package/oh-my-opencode/src/shared/shell-env.ts +0 -111
  394. package/oh-my-opencode/src/shared/snake-case.ts +0 -49
  395. package/oh-my-opencode/src/shared/system-directive.ts +0 -40
  396. package/oh-my-opencode/src/shared/tool-name.ts +0 -26
  397. package/oh-my-opencode/src/shared/zip-extractor.ts +0 -83
  398. package/oh-my-opencode/src/tools/AGENTS.md +0 -74
  399. package/oh-my-opencode/src/tools/ast-grep/cli.ts +0 -230
  400. package/oh-my-opencode/src/tools/ast-grep/constants.ts +0 -261
  401. package/oh-my-opencode/src/tools/ast-grep/downloader.ts +0 -128
  402. package/oh-my-opencode/src/tools/ast-grep/index.ts +0 -13
  403. package/oh-my-opencode/src/tools/ast-grep/tools.ts +0 -112
  404. package/oh-my-opencode/src/tools/ast-grep/types.ts +0 -61
  405. package/oh-my-opencode/src/tools/ast-grep/utils.ts +0 -102
  406. package/oh-my-opencode/src/tools/background-task/constants.ts +0 -7
  407. package/oh-my-opencode/src/tools/background-task/index.ts +0 -7
  408. package/oh-my-opencode/src/tools/background-task/tools.ts +0 -479
  409. package/oh-my-opencode/src/tools/background-task/types.ts +0 -16
  410. package/oh-my-opencode/src/tools/call-omo-agent/constants.ts +0 -7
  411. package/oh-my-opencode/src/tools/call-omo-agent/index.ts +0 -3
  412. package/oh-my-opencode/src/tools/call-omo-agent/tools.ts +0 -338
  413. package/oh-my-opencode/src/tools/call-omo-agent/types.ts +0 -27
  414. package/oh-my-opencode/src/tools/delegate-task/constants.ts +0 -205
  415. package/oh-my-opencode/src/tools/delegate-task/index.ts +0 -3
  416. package/oh-my-opencode/src/tools/delegate-task/tools.test.ts +0 -1575
  417. package/oh-my-opencode/src/tools/delegate-task/tools.ts +0 -885
  418. package/oh-my-opencode/src/tools/delegate-task/types.ts +0 -9
  419. package/oh-my-opencode/src/tools/glob/cli.test.ts +0 -158
  420. package/oh-my-opencode/src/tools/glob/cli.ts +0 -191
  421. package/oh-my-opencode/src/tools/glob/constants.ts +0 -12
  422. package/oh-my-opencode/src/tools/glob/index.ts +0 -3
  423. package/oh-my-opencode/src/tools/glob/tools.ts +0 -41
  424. package/oh-my-opencode/src/tools/glob/types.ts +0 -22
  425. package/oh-my-opencode/src/tools/glob/utils.ts +0 -26
  426. package/oh-my-opencode/src/tools/grep/cli.ts +0 -229
  427. package/oh-my-opencode/src/tools/grep/constants.ts +0 -127
  428. package/oh-my-opencode/src/tools/grep/downloader.test.ts +0 -103
  429. package/oh-my-opencode/src/tools/grep/downloader.ts +0 -145
  430. package/oh-my-opencode/src/tools/grep/index.ts +0 -3
  431. package/oh-my-opencode/src/tools/grep/tools.ts +0 -40
  432. package/oh-my-opencode/src/tools/grep/types.ts +0 -39
  433. package/oh-my-opencode/src/tools/grep/utils.ts +0 -53
  434. package/oh-my-opencode/src/tools/index.ts +0 -72
  435. package/oh-my-opencode/src/tools/interactive-bash/constants.ts +0 -18
  436. package/oh-my-opencode/src/tools/interactive-bash/index.ts +0 -4
  437. package/oh-my-opencode/src/tools/interactive-bash/tools.ts +0 -126
  438. package/oh-my-opencode/src/tools/interactive-bash/utils.ts +0 -71
  439. package/oh-my-opencode/src/tools/look-at/constants.ts +0 -3
  440. package/oh-my-opencode/src/tools/look-at/index.ts +0 -3
  441. package/oh-my-opencode/src/tools/look-at/tools.test.ts +0 -73
  442. package/oh-my-opencode/src/tools/look-at/tools.ts +0 -173
  443. package/oh-my-opencode/src/tools/look-at/types.ts +0 -4
  444. package/oh-my-opencode/src/tools/lsp/client.ts +0 -596
  445. package/oh-my-opencode/src/tools/lsp/config.test.ts +0 -130
  446. package/oh-my-opencode/src/tools/lsp/config.ts +0 -285
  447. package/oh-my-opencode/src/tools/lsp/constants.ts +0 -390
  448. package/oh-my-opencode/src/tools/lsp/index.ts +0 -7
  449. package/oh-my-opencode/src/tools/lsp/tools.ts +0 -261
  450. package/oh-my-opencode/src/tools/lsp/types.ts +0 -124
  451. package/oh-my-opencode/src/tools/lsp/utils.ts +0 -406
  452. package/oh-my-opencode/src/tools/session-manager/constants.ts +0 -97
  453. package/oh-my-opencode/src/tools/session-manager/index.ts +0 -3
  454. package/oh-my-opencode/src/tools/session-manager/storage.test.ts +0 -315
  455. package/oh-my-opencode/src/tools/session-manager/storage.ts +0 -238
  456. package/oh-my-opencode/src/tools/session-manager/tools.test.ts +0 -124
  457. package/oh-my-opencode/src/tools/session-manager/tools.ts +0 -146
  458. package/oh-my-opencode/src/tools/session-manager/types.ts +0 -99
  459. package/oh-my-opencode/src/tools/session-manager/utils.test.ts +0 -160
  460. package/oh-my-opencode/src/tools/session-manager/utils.ts +0 -199
  461. package/oh-my-opencode/src/tools/skill/constants.ts +0 -8
  462. package/oh-my-opencode/src/tools/skill/index.ts +0 -3
  463. package/oh-my-opencode/src/tools/skill/tools.test.ts +0 -239
  464. package/oh-my-opencode/src/tools/skill/tools.ts +0 -200
  465. package/oh-my-opencode/src/tools/skill/types.ts +0 -31
  466. package/oh-my-opencode/src/tools/skill-mcp/constants.ts +0 -3
  467. package/oh-my-opencode/src/tools/skill-mcp/index.ts +0 -3
  468. package/oh-my-opencode/src/tools/skill-mcp/tools.test.ts +0 -215
  469. package/oh-my-opencode/src/tools/skill-mcp/tools.ts +0 -172
  470. package/oh-my-opencode/src/tools/skill-mcp/types.ts +0 -8
  471. package/oh-my-opencode/src/tools/slashcommand/index.ts +0 -2
  472. package/oh-my-opencode/src/tools/slashcommand/tools.ts +0 -252
  473. package/oh-my-opencode/src/tools/slashcommand/types.ts +0 -28
  474. package/oh-my-opencode/test-setup.ts +0 -6
  475. package/oh-my-opencode/tsconfig.json +0 -20
@@ -1,132 +0,0 @@
1
- import type {
2
- DoctorOptions,
3
- DoctorResult,
4
- CheckDefinition,
5
- CheckResult,
6
- DoctorSummary,
7
- CheckCategory,
8
- } from "./types"
9
- import { getAllCheckDefinitions } from "./checks"
10
- import { EXIT_CODES, CATEGORY_NAMES } from "./constants"
11
- import {
12
- formatHeader,
13
- formatCategoryHeader,
14
- formatCheckResult,
15
- formatSummary,
16
- formatFooter,
17
- formatJsonOutput,
18
- } from "./formatter"
19
-
20
- export async function runCheck(check: CheckDefinition): Promise<CheckResult> {
21
- const start = performance.now()
22
- try {
23
- const result = await check.check()
24
- result.duration = Math.round(performance.now() - start)
25
- return result
26
- } catch (err) {
27
- return {
28
- name: check.name,
29
- status: "fail",
30
- message: err instanceof Error ? err.message : "Unknown error",
31
- duration: Math.round(performance.now() - start),
32
- }
33
- }
34
- }
35
-
36
- export function calculateSummary(results: CheckResult[], duration: number): DoctorSummary {
37
- return {
38
- total: results.length,
39
- passed: results.filter((r) => r.status === "pass").length,
40
- failed: results.filter((r) => r.status === "fail").length,
41
- warnings: results.filter((r) => r.status === "warn").length,
42
- skipped: results.filter((r) => r.status === "skip").length,
43
- duration: Math.round(duration),
44
- }
45
- }
46
-
47
- export function determineExitCode(results: CheckResult[]): number {
48
- const hasFailures = results.some((r) => r.status === "fail")
49
- return hasFailures ? EXIT_CODES.FAILURE : EXIT_CODES.SUCCESS
50
- }
51
-
52
- export function filterChecksByCategory(
53
- checks: CheckDefinition[],
54
- category?: CheckCategory
55
- ): CheckDefinition[] {
56
- if (!category) return checks
57
- return checks.filter((c) => c.category === category)
58
- }
59
-
60
- export function groupChecksByCategory(
61
- checks: CheckDefinition[]
62
- ): Map<CheckCategory, CheckDefinition[]> {
63
- const groups = new Map<CheckCategory, CheckDefinition[]>()
64
-
65
- for (const check of checks) {
66
- const existing = groups.get(check.category) ?? []
67
- existing.push(check)
68
- groups.set(check.category, existing)
69
- }
70
-
71
- return groups
72
- }
73
-
74
- const CATEGORY_ORDER: CheckCategory[] = [
75
- "installation",
76
- "configuration",
77
- "authentication",
78
- "dependencies",
79
- "tools",
80
- "updates",
81
- ]
82
-
83
- export async function runDoctor(options: DoctorOptions): Promise<DoctorResult> {
84
- const start = performance.now()
85
- const allChecks = getAllCheckDefinitions()
86
- const filteredChecks = filterChecksByCategory(allChecks, options.category)
87
- const groupedChecks = groupChecksByCategory(filteredChecks)
88
-
89
- const results: CheckResult[] = []
90
-
91
- if (!options.json) {
92
- console.log(formatHeader())
93
- }
94
-
95
- for (const category of CATEGORY_ORDER) {
96
- const checks = groupedChecks.get(category)
97
- if (!checks || checks.length === 0) continue
98
-
99
- if (!options.json) {
100
- console.log(formatCategoryHeader(category))
101
- }
102
-
103
- for (const check of checks) {
104
- const result = await runCheck(check)
105
- results.push(result)
106
-
107
- if (!options.json) {
108
- console.log(formatCheckResult(result, options.verbose ?? false))
109
- }
110
- }
111
- }
112
-
113
- const duration = performance.now() - start
114
- const summary = calculateSummary(results, duration)
115
- const exitCode = determineExitCode(results)
116
-
117
- const doctorResult: DoctorResult = {
118
- results,
119
- summary,
120
- exitCode,
121
- }
122
-
123
- if (options.json) {
124
- console.log(formatJsonOutput(doctorResult))
125
- } else {
126
- console.log("")
127
- console.log(formatSummary(summary))
128
- console.log(formatFooter(summary))
129
- }
130
-
131
- return doctorResult
132
- }
@@ -1,113 +0,0 @@
1
- export type CheckStatus = "pass" | "fail" | "warn" | "skip"
2
-
3
- export interface CheckResult {
4
- name: string
5
- status: CheckStatus
6
- message: string
7
- details?: string[]
8
- duration?: number
9
- }
10
-
11
- export type CheckFunction = () => Promise<CheckResult>
12
-
13
- export type CheckCategory =
14
- | "installation"
15
- | "configuration"
16
- | "authentication"
17
- | "dependencies"
18
- | "tools"
19
- | "updates"
20
-
21
- export interface CheckDefinition {
22
- id: string
23
- name: string
24
- category: CheckCategory
25
- check: CheckFunction
26
- critical?: boolean
27
- }
28
-
29
- export interface DoctorOptions {
30
- verbose?: boolean
31
- json?: boolean
32
- category?: CheckCategory
33
- }
34
-
35
- export interface DoctorSummary {
36
- total: number
37
- passed: number
38
- failed: number
39
- warnings: number
40
- skipped: number
41
- duration: number
42
- }
43
-
44
- export interface DoctorResult {
45
- results: CheckResult[]
46
- summary: DoctorSummary
47
- exitCode: number
48
- }
49
-
50
- export interface OpenCodeInfo {
51
- installed: boolean
52
- version: string | null
53
- path: string | null
54
- binary: "opencode" | "opencode-desktop" | null
55
- }
56
-
57
- export interface PluginInfo {
58
- registered: boolean
59
- configPath: string | null
60
- entry: string | null
61
- isPinned: boolean
62
- pinnedVersion: string | null
63
- }
64
-
65
- export interface ConfigInfo {
66
- exists: boolean
67
- path: string | null
68
- format: "json" | "jsonc" | null
69
- valid: boolean
70
- errors: string[]
71
- }
72
-
73
- export type AuthProviderId = "anthropic" | "openai" | "google"
74
-
75
- export interface AuthProviderInfo {
76
- id: AuthProviderId
77
- name: string
78
- pluginInstalled: boolean
79
- configured: boolean
80
- error?: string
81
- }
82
-
83
- export interface DependencyInfo {
84
- name: string
85
- required: boolean
86
- installed: boolean
87
- version: string | null
88
- path: string | null
89
- installHint?: string
90
- }
91
-
92
- export interface LspServerInfo {
93
- id: string
94
- installed: boolean
95
- extensions: string[]
96
- source: "builtin" | "config" | "plugin"
97
- }
98
-
99
- export interface McpServerInfo {
100
- id: string
101
- type: "builtin" | "user"
102
- enabled: boolean
103
- valid: boolean
104
- error?: string
105
- }
106
-
107
- export interface VersionCheckInfo {
108
- currentVersion: string | null
109
- latestVersion: string | null
110
- isUpToDate: boolean
111
- isLocalDev: boolean
112
- isPinned: boolean
113
- }
@@ -1,66 +0,0 @@
1
- import color from "picocolors"
2
- import type { VersionInfo } from "./types"
3
-
4
- const SYMBOLS = {
5
- check: color.green("✓"),
6
- cross: color.red("✗"),
7
- arrow: color.cyan("→"),
8
- info: color.blue("ℹ"),
9
- warn: color.yellow("⚠"),
10
- pin: color.magenta("📌"),
11
- dev: color.cyan("🔧"),
12
- }
13
-
14
- export function formatVersionOutput(info: VersionInfo): string {
15
- const lines: string[] = []
16
-
17
- lines.push("")
18
- lines.push(color.bold(color.white("oh-my-opencode Version Information")))
19
- lines.push(color.dim("─".repeat(50)))
20
- lines.push("")
21
-
22
- if (info.currentVersion) {
23
- lines.push(` Current Version: ${color.cyan(info.currentVersion)}`)
24
- } else {
25
- lines.push(` Current Version: ${color.dim("unknown")}`)
26
- }
27
-
28
- if (!info.isLocalDev && info.latestVersion) {
29
- lines.push(` Latest Version: ${color.cyan(info.latestVersion)}`)
30
- }
31
-
32
- lines.push("")
33
-
34
- switch (info.status) {
35
- case "up-to-date":
36
- lines.push(` ${SYMBOLS.check} ${color.green("You're up to date!")}`)
37
- break
38
- case "outdated":
39
- lines.push(` ${SYMBOLS.warn} ${color.yellow("Update available")}`)
40
- lines.push(` ${color.dim("Run:")} ${color.cyan("cd ~/.config/opencode && bun update oh-my-opencode")}`)
41
- break
42
- case "local-dev":
43
- lines.push(` ${SYMBOLS.dev} ${color.cyan("Running in local development mode")}`)
44
- lines.push(` ${color.dim("Using file:// protocol from config")}`)
45
- break
46
- case "pinned":
47
- lines.push(` ${SYMBOLS.pin} ${color.magenta(`Version pinned to ${info.pinnedVersion}`)}`)
48
- lines.push(` ${color.dim("Update check skipped for pinned versions")}`)
49
- break
50
- case "error":
51
- lines.push(` ${SYMBOLS.cross} ${color.red("Unable to check for updates")}`)
52
- lines.push(` ${color.dim("Network error or npm registry unavailable")}`)
53
- break
54
- case "unknown":
55
- lines.push(` ${SYMBOLS.info} ${color.yellow("Version information unavailable")}`)
56
- break
57
- }
58
-
59
- lines.push("")
60
-
61
- return lines.join("\n")
62
- }
63
-
64
- export function formatJsonOutput(info: VersionInfo): string {
65
- return JSON.stringify(info, null, 2)
66
- }
@@ -1,106 +0,0 @@
1
- import { getCachedVersion, getLatestVersion, isLocalDevMode, findPluginEntry } from "../../hooks/auto-update-checker/checker"
2
- import type { GetLocalVersionOptions, VersionInfo } from "./types"
3
- import { formatVersionOutput, formatJsonOutput } from "./formatter"
4
-
5
- export async function getLocalVersion(options: GetLocalVersionOptions = {}): Promise<number> {
6
- const directory = options.directory ?? process.cwd()
7
-
8
- try {
9
- if (isLocalDevMode(directory)) {
10
- const currentVersion = getCachedVersion()
11
- const info: VersionInfo = {
12
- currentVersion,
13
- latestVersion: null,
14
- isUpToDate: false,
15
- isLocalDev: true,
16
- isPinned: false,
17
- pinnedVersion: null,
18
- status: "local-dev",
19
- }
20
-
21
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
22
- return 0
23
- }
24
-
25
- const pluginInfo = findPluginEntry(directory)
26
- if (pluginInfo?.isPinned) {
27
- const info: VersionInfo = {
28
- currentVersion: pluginInfo.pinnedVersion,
29
- latestVersion: null,
30
- isUpToDate: false,
31
- isLocalDev: false,
32
- isPinned: true,
33
- pinnedVersion: pluginInfo.pinnedVersion,
34
- status: "pinned",
35
- }
36
-
37
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
38
- return 0
39
- }
40
-
41
- const currentVersion = getCachedVersion()
42
- if (!currentVersion) {
43
- const info: VersionInfo = {
44
- currentVersion: null,
45
- latestVersion: null,
46
- isUpToDate: false,
47
- isLocalDev: false,
48
- isPinned: false,
49
- pinnedVersion: null,
50
- status: "unknown",
51
- }
52
-
53
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
54
- return 1
55
- }
56
-
57
- const { extractChannel } = await import("../../hooks/auto-update-checker/index")
58
- const channel = extractChannel(pluginInfo?.pinnedVersion ?? currentVersion)
59
- const latestVersion = await getLatestVersion(channel)
60
-
61
- if (!latestVersion) {
62
- const info: VersionInfo = {
63
- currentVersion,
64
- latestVersion: null,
65
- isUpToDate: false,
66
- isLocalDev: false,
67
- isPinned: false,
68
- pinnedVersion: null,
69
- status: "error",
70
- }
71
-
72
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
73
- return 0
74
- }
75
-
76
- const isUpToDate = currentVersion === latestVersion
77
- const info: VersionInfo = {
78
- currentVersion,
79
- latestVersion,
80
- isUpToDate,
81
- isLocalDev: false,
82
- isPinned: false,
83
- pinnedVersion: null,
84
- status: isUpToDate ? "up-to-date" : "outdated",
85
- }
86
-
87
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
88
- return 0
89
-
90
- } catch (error) {
91
- const info: VersionInfo = {
92
- currentVersion: null,
93
- latestVersion: null,
94
- isUpToDate: false,
95
- isLocalDev: false,
96
- isPinned: false,
97
- pinnedVersion: null,
98
- status: "error",
99
- }
100
-
101
- console.log(options.json ? formatJsonOutput(info) : formatVersionOutput(info))
102
- return 1
103
- }
104
- }
105
-
106
- export * from "./types"
@@ -1,14 +0,0 @@
1
- export interface VersionInfo {
2
- currentVersion: string | null
3
- latestVersion: string | null
4
- isUpToDate: boolean
5
- isLocalDev: boolean
6
- isPinned: boolean
7
- pinnedVersion: string | null
8
- status: "up-to-date" | "outdated" | "local-dev" | "pinned" | "error" | "unknown"
9
- }
10
-
11
- export interface GetLocalVersionOptions {
12
- directory?: string
13
- json?: boolean
14
- }
@@ -1,153 +0,0 @@
1
- #!/usr/bin/env bun
2
- import { Command } from "commander"
3
- import { install } from "./install"
4
- import { run } from "./run"
5
- import { getLocalVersion } from "./get-local-version"
6
- import { doctor } from "./doctor"
7
- import type { InstallArgs } from "./types"
8
- import type { RunOptions } from "./run"
9
- import type { GetLocalVersionOptions } from "./get-local-version/types"
10
- import type { DoctorOptions } from "./doctor"
11
- import packageJson from "../../package.json" with { type: "json" }
12
-
13
- const VERSION = packageJson.version
14
-
15
- const program = new Command()
16
-
17
- program
18
- .name("oh-my-opencode")
19
- .description("The ultimate OpenCode plugin - multi-model orchestration, LSP tools, and more")
20
- .version(VERSION, "-v, --version", "Show version number")
21
-
22
- program
23
- .command("install")
24
- .description("Install and configure oh-my-opencode with interactive setup")
25
- .option("--no-tui", "Run in non-interactive mode (requires all options)")
26
- .option("--claude <value>", "Claude subscription: no, yes, max20")
27
- .option("--openai <value>", "OpenAI/ChatGPT subscription: no, yes (default: no)")
28
- .option("--gemini <value>", "Gemini integration: no, yes")
29
- .option("--copilot <value>", "GitHub Copilot subscription: no, yes")
30
- .option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)")
31
- .option("--zai-coding-plan <value>", "Z.ai Coding Plan subscription: no, yes (default: no)")
32
- .option("--skip-auth", "Skip authentication setup hints")
33
- .addHelpText("after", `
34
- Examples:
35
- $ bunx oh-my-opencode install
36
- $ bunx oh-my-opencode install --no-tui --claude=max20 --openai=yes --gemini=yes --copilot=no
37
- $ bunx oh-my-opencode install --no-tui --claude=no --gemini=no --copilot=yes --opencode-zen=yes
38
-
39
- Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai):
40
- Claude Native anthropic/ models (Opus, Sonnet, Haiku)
41
- OpenAI Native openai/ models (GPT-5.2 for Oracle)
42
- Gemini Native google/ models (Gemini 3 Pro, Flash)
43
- Copilot github-copilot/ models (fallback)
44
- OpenCode Zen opencode/ models (opencode/claude-opus-4-5, etc.)
45
- Z.ai zai-coding-plan/glm-4.7 (Librarian priority)
46
- `)
47
- .action(async (options) => {
48
- const args: InstallArgs = {
49
- tui: options.tui !== false,
50
- claude: options.claude,
51
- openai: options.openai,
52
- gemini: options.gemini,
53
- copilot: options.copilot,
54
- opencodeZen: options.opencodeZen,
55
- zaiCodingPlan: options.zaiCodingPlan,
56
- skipAuth: options.skipAuth ?? false,
57
- }
58
- const exitCode = await install(args)
59
- process.exit(exitCode)
60
- })
61
-
62
- program
63
- .command("run <message>")
64
- .description("Run opencode with todo/background task completion enforcement")
65
- .option("-a, --agent <name>", "Agent to use (default: Sisyphus)")
66
- .option("-d, --directory <path>", "Working directory")
67
- .option("-t, --timeout <ms>", "Timeout in milliseconds (default: 30 minutes)", parseInt)
68
- .addHelpText("after", `
69
- Examples:
70
- $ bunx oh-my-opencode run "Fix the bug in index.ts"
71
- $ bunx oh-my-opencode run --agent Sisyphus "Implement feature X"
72
- $ bunx oh-my-opencode run --timeout 3600000 "Large refactoring task"
73
-
74
- Unlike 'opencode run', this command waits until:
75
- - All todos are completed or cancelled
76
- - All child sessions (background tasks) are idle
77
- `)
78
- .action(async (message: string, options) => {
79
- const runOptions: RunOptions = {
80
- message,
81
- agent: options.agent,
82
- directory: options.directory,
83
- timeout: options.timeout,
84
- }
85
- const exitCode = await run(runOptions)
86
- process.exit(exitCode)
87
- })
88
-
89
- program
90
- .command("get-local-version")
91
- .description("Show current installed version and check for updates")
92
- .option("-d, --directory <path>", "Working directory to check config from")
93
- .option("--json", "Output in JSON format for scripting")
94
- .addHelpText("after", `
95
- Examples:
96
- $ bunx oh-my-opencode get-local-version
97
- $ bunx oh-my-opencode get-local-version --json
98
- $ bunx oh-my-opencode get-local-version --directory /path/to/project
99
-
100
- This command shows:
101
- - Current installed version
102
- - Latest available version on npm
103
- - Whether you're up to date
104
- - Special modes (local dev, pinned version)
105
- `)
106
- .action(async (options) => {
107
- const versionOptions: GetLocalVersionOptions = {
108
- directory: options.directory,
109
- json: options.json ?? false,
110
- }
111
- const exitCode = await getLocalVersion(versionOptions)
112
- process.exit(exitCode)
113
- })
114
-
115
- program
116
- .command("doctor")
117
- .description("Check oh-my-opencode installation health and diagnose issues")
118
- .option("--verbose", "Show detailed diagnostic information")
119
- .option("--json", "Output results in JSON format")
120
- .option("--category <category>", "Run only specific category")
121
- .addHelpText("after", `
122
- Examples:
123
- $ bunx oh-my-opencode doctor
124
- $ bunx oh-my-opencode doctor --verbose
125
- $ bunx oh-my-opencode doctor --json
126
- $ bunx oh-my-opencode doctor --category authentication
127
-
128
- Categories:
129
- installation Check OpenCode and plugin installation
130
- configuration Validate configuration files
131
- authentication Check auth provider status
132
- dependencies Check external dependencies
133
- tools Check LSP and MCP servers
134
- updates Check for version updates
135
- `)
136
- .action(async (options) => {
137
- const doctorOptions: DoctorOptions = {
138
- verbose: options.verbose ?? false,
139
- json: options.json ?? false,
140
- category: options.category,
141
- }
142
- const exitCode = await doctor(doctorOptions)
143
- process.exit(exitCode)
144
- })
145
-
146
- program
147
- .command("version")
148
- .description("Show version information")
149
- .action(() => {
150
- console.log(`oh-my-opencode v${VERSION}`)
151
- })
152
-
153
- program.parse()