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,66 +0,0 @@
1
- export type BackgroundTaskStatus =
2
- | "pending"
3
- | "running"
4
- | "completed"
5
- | "error"
6
- | "cancelled"
7
-
8
- export interface TaskProgress {
9
- toolCalls: number
10
- lastTool?: string
11
- lastUpdate: Date
12
- lastMessage?: string
13
- lastMessageAt?: Date
14
- }
15
-
16
- export interface BackgroundTask {
17
- id: string
18
- sessionID?: string
19
- parentSessionID: string
20
- parentMessageID: string
21
- description: string
22
- prompt: string
23
- agent: string
24
- status: BackgroundTaskStatus
25
- queuedAt?: Date
26
- startedAt?: Date
27
- completedAt?: Date
28
- result?: string
29
- error?: string
30
- progress?: TaskProgress
31
- parentModel?: { providerID: string; modelID: string }
32
- model?: { providerID: string; modelID: string; variant?: string }
33
- /** Active concurrency slot key */
34
- concurrencyKey?: string
35
- /** Persistent key for re-acquiring concurrency on resume */
36
- concurrencyGroup?: string
37
- /** Parent session's agent name for notification */
38
- parentAgent?: string
39
-
40
- /** Last message count for stability detection */
41
- lastMsgCount?: number
42
- /** Number of consecutive polls with stable message count */
43
- stablePolls?: number
44
- }
45
-
46
- export interface LaunchInput {
47
- description: string
48
- prompt: string
49
- agent: string
50
- parentSessionID: string
51
- parentMessageID: string
52
- parentModel?: { providerID: string; modelID: string }
53
- parentAgent?: string
54
- model?: { providerID: string; modelID: string; variant?: string }
55
- skills?: string[]
56
- skillContent?: string
57
- }
58
-
59
- export interface ResumeInput {
60
- sessionId: string
61
- prompt: string
62
- parentSessionID: string
63
- parentMessageID: string
64
- parentModel?: { providerID: string; modelID: string }
65
- parentAgent?: string
66
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Boulder State Constants
3
- */
4
-
5
- export const BOULDER_DIR = ".sisyphus"
6
- export const BOULDER_FILE = "boulder.json"
7
- export const BOULDER_STATE_PATH = `${BOULDER_DIR}/${BOULDER_FILE}`
8
-
9
- export const NOTEPAD_DIR = "notepads"
10
- export const NOTEPAD_BASE_PATH = `${BOULDER_DIR}/${NOTEPAD_DIR}`
11
-
12
- /** Prometheus plan directory pattern */
13
- export const PROMETHEUS_PLANS_DIR = ".sisyphus/plans"
@@ -1,3 +0,0 @@
1
- export * from "./types"
2
- export * from "./constants"
3
- export * from "./storage"
@@ -1,250 +0,0 @@
1
- import { describe, expect, test, beforeEach, afterEach } from "bun:test"
2
- import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"
3
- import { join } from "node:path"
4
- import { tmpdir } from "node:os"
5
- import {
6
- readBoulderState,
7
- writeBoulderState,
8
- appendSessionId,
9
- clearBoulderState,
10
- getPlanProgress,
11
- getPlanName,
12
- createBoulderState,
13
- findPrometheusPlans,
14
- } from "./storage"
15
- import type { BoulderState } from "./types"
16
-
17
- describe("boulder-state", () => {
18
- const TEST_DIR = join(tmpdir(), "boulder-state-test-" + Date.now())
19
- const SISYPHUS_DIR = join(TEST_DIR, ".sisyphus")
20
-
21
- beforeEach(() => {
22
- if (!existsSync(TEST_DIR)) {
23
- mkdirSync(TEST_DIR, { recursive: true })
24
- }
25
- if (!existsSync(SISYPHUS_DIR)) {
26
- mkdirSync(SISYPHUS_DIR, { recursive: true })
27
- }
28
- clearBoulderState(TEST_DIR)
29
- })
30
-
31
- afterEach(() => {
32
- if (existsSync(TEST_DIR)) {
33
- rmSync(TEST_DIR, { recursive: true, force: true })
34
- }
35
- })
36
-
37
- describe("readBoulderState", () => {
38
- test("should return null when no boulder.json exists", () => {
39
- // #given - no boulder.json file
40
- // #when
41
- const result = readBoulderState(TEST_DIR)
42
- // #then
43
- expect(result).toBeNull()
44
- })
45
-
46
- test("should read valid boulder state", () => {
47
- // #given - valid boulder.json
48
- const state: BoulderState = {
49
- active_plan: "/path/to/plan.md",
50
- started_at: "2026-01-02T10:00:00Z",
51
- session_ids: ["session-1", "session-2"],
52
- plan_name: "my-plan",
53
- }
54
- writeBoulderState(TEST_DIR, state)
55
-
56
- // #when
57
- const result = readBoulderState(TEST_DIR)
58
-
59
- // #then
60
- expect(result).not.toBeNull()
61
- expect(result?.active_plan).toBe("/path/to/plan.md")
62
- expect(result?.session_ids).toEqual(["session-1", "session-2"])
63
- expect(result?.plan_name).toBe("my-plan")
64
- })
65
- })
66
-
67
- describe("writeBoulderState", () => {
68
- test("should write state and create .sisyphus directory if needed", () => {
69
- // #given - state to write
70
- const state: BoulderState = {
71
- active_plan: "/test/plan.md",
72
- started_at: "2026-01-02T12:00:00Z",
73
- session_ids: ["ses-123"],
74
- plan_name: "test-plan",
75
- }
76
-
77
- // #when
78
- const success = writeBoulderState(TEST_DIR, state)
79
- const readBack = readBoulderState(TEST_DIR)
80
-
81
- // #then
82
- expect(success).toBe(true)
83
- expect(readBack).not.toBeNull()
84
- expect(readBack?.active_plan).toBe("/test/plan.md")
85
- })
86
- })
87
-
88
- describe("appendSessionId", () => {
89
- test("should append new session id to existing state", () => {
90
- // #given - existing state with one session
91
- const state: BoulderState = {
92
- active_plan: "/plan.md",
93
- started_at: "2026-01-02T10:00:00Z",
94
- session_ids: ["session-1"],
95
- plan_name: "plan",
96
- }
97
- writeBoulderState(TEST_DIR, state)
98
-
99
- // #when
100
- const result = appendSessionId(TEST_DIR, "session-2")
101
-
102
- // #then
103
- expect(result).not.toBeNull()
104
- expect(result?.session_ids).toEqual(["session-1", "session-2"])
105
- })
106
-
107
- test("should not duplicate existing session id", () => {
108
- // #given - state with session-1 already
109
- const state: BoulderState = {
110
- active_plan: "/plan.md",
111
- started_at: "2026-01-02T10:00:00Z",
112
- session_ids: ["session-1"],
113
- plan_name: "plan",
114
- }
115
- writeBoulderState(TEST_DIR, state)
116
-
117
- // #when
118
- appendSessionId(TEST_DIR, "session-1")
119
- const result = readBoulderState(TEST_DIR)
120
-
121
- // #then
122
- expect(result?.session_ids).toEqual(["session-1"])
123
- })
124
-
125
- test("should return null when no state exists", () => {
126
- // #given - no boulder.json
127
- // #when
128
- const result = appendSessionId(TEST_DIR, "new-session")
129
- // #then
130
- expect(result).toBeNull()
131
- })
132
- })
133
-
134
- describe("clearBoulderState", () => {
135
- test("should remove boulder.json", () => {
136
- // #given - existing state
137
- const state: BoulderState = {
138
- active_plan: "/plan.md",
139
- started_at: "2026-01-02T10:00:00Z",
140
- session_ids: ["session-1"],
141
- plan_name: "plan",
142
- }
143
- writeBoulderState(TEST_DIR, state)
144
-
145
- // #when
146
- const success = clearBoulderState(TEST_DIR)
147
- const result = readBoulderState(TEST_DIR)
148
-
149
- // #then
150
- expect(success).toBe(true)
151
- expect(result).toBeNull()
152
- })
153
-
154
- test("should succeed even when no file exists", () => {
155
- // #given - no boulder.json
156
- // #when
157
- const success = clearBoulderState(TEST_DIR)
158
- // #then
159
- expect(success).toBe(true)
160
- })
161
- })
162
-
163
- describe("getPlanProgress", () => {
164
- test("should count completed and uncompleted checkboxes", () => {
165
- // #given - plan file with checkboxes
166
- const planPath = join(TEST_DIR, "test-plan.md")
167
- writeFileSync(planPath, `# Plan
168
- - [ ] Task 1
169
- - [x] Task 2
170
- - [ ] Task 3
171
- - [X] Task 4
172
- `)
173
-
174
- // #when
175
- const progress = getPlanProgress(planPath)
176
-
177
- // #then
178
- expect(progress.total).toBe(4)
179
- expect(progress.completed).toBe(2)
180
- expect(progress.isComplete).toBe(false)
181
- })
182
-
183
- test("should return isComplete true when all checked", () => {
184
- // #given - all tasks completed
185
- const planPath = join(TEST_DIR, "complete-plan.md")
186
- writeFileSync(planPath, `# Plan
187
- - [x] Task 1
188
- - [X] Task 2
189
- `)
190
-
191
- // #when
192
- const progress = getPlanProgress(planPath)
193
-
194
- // #then
195
- expect(progress.total).toBe(2)
196
- expect(progress.completed).toBe(2)
197
- expect(progress.isComplete).toBe(true)
198
- })
199
-
200
- test("should return isComplete true for empty plan", () => {
201
- // #given - plan with no checkboxes
202
- const planPath = join(TEST_DIR, "empty-plan.md")
203
- writeFileSync(planPath, "# Plan\nNo tasks here")
204
-
205
- // #when
206
- const progress = getPlanProgress(planPath)
207
-
208
- // #then
209
- expect(progress.total).toBe(0)
210
- expect(progress.isComplete).toBe(true)
211
- })
212
-
213
- test("should handle non-existent file", () => {
214
- // #given - non-existent file
215
- // #when
216
- const progress = getPlanProgress("/non/existent/file.md")
217
- // #then
218
- expect(progress.total).toBe(0)
219
- expect(progress.isComplete).toBe(true)
220
- })
221
- })
222
-
223
- describe("getPlanName", () => {
224
- test("should extract plan name from path", () => {
225
- // #given
226
- const path = "/home/user/.sisyphus/plans/project/my-feature.md"
227
- // #when
228
- const name = getPlanName(path)
229
- // #then
230
- expect(name).toBe("my-feature")
231
- })
232
- })
233
-
234
- describe("createBoulderState", () => {
235
- test("should create state with correct fields", () => {
236
- // #given
237
- const planPath = "/path/to/auth-refactor.md"
238
- const sessionId = "ses-abc123"
239
-
240
- // #when
241
- const state = createBoulderState(planPath, sessionId)
242
-
243
- // #then
244
- expect(state.active_plan).toBe(planPath)
245
- expect(state.session_ids).toEqual([sessionId])
246
- expect(state.plan_name).toBe("auth-refactor")
247
- expect(state.started_at).toBeDefined()
248
- })
249
- })
250
- })
@@ -1,150 +0,0 @@
1
- /**
2
- * Boulder State Storage
3
- *
4
- * Handles reading/writing boulder.json for active plan tracking.
5
- */
6
-
7
- import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from "node:fs"
8
- import { dirname, join, basename } from "node:path"
9
- import type { BoulderState, PlanProgress } from "./types"
10
- import { BOULDER_DIR, BOULDER_FILE, PROMETHEUS_PLANS_DIR } from "./constants"
11
-
12
- export function getBoulderFilePath(directory: string): string {
13
- return join(directory, BOULDER_DIR, BOULDER_FILE)
14
- }
15
-
16
- export function readBoulderState(directory: string): BoulderState | null {
17
- const filePath = getBoulderFilePath(directory)
18
-
19
- if (!existsSync(filePath)) {
20
- return null
21
- }
22
-
23
- try {
24
- const content = readFileSync(filePath, "utf-8")
25
- return JSON.parse(content) as BoulderState
26
- } catch {
27
- return null
28
- }
29
- }
30
-
31
- export function writeBoulderState(directory: string, state: BoulderState): boolean {
32
- const filePath = getBoulderFilePath(directory)
33
-
34
- try {
35
- const dir = dirname(filePath)
36
- if (!existsSync(dir)) {
37
- mkdirSync(dir, { recursive: true })
38
- }
39
-
40
- writeFileSync(filePath, JSON.stringify(state, null, 2), "utf-8")
41
- return true
42
- } catch {
43
- return false
44
- }
45
- }
46
-
47
- export function appendSessionId(directory: string, sessionId: string): BoulderState | null {
48
- const state = readBoulderState(directory)
49
- if (!state) return null
50
-
51
- if (!state.session_ids.includes(sessionId)) {
52
- state.session_ids.push(sessionId)
53
- if (writeBoulderState(directory, state)) {
54
- return state
55
- }
56
- }
57
-
58
- return state
59
- }
60
-
61
- export function clearBoulderState(directory: string): boolean {
62
- const filePath = getBoulderFilePath(directory)
63
-
64
- try {
65
- if (existsSync(filePath)) {
66
- const { unlinkSync } = require("node:fs")
67
- unlinkSync(filePath)
68
- }
69
- return true
70
- } catch {
71
- return false
72
- }
73
- }
74
-
75
- /**
76
- * Find Prometheus plan files for this project.
77
- * Prometheus stores plans at: {project}/.sisyphus/plans/{name}.md
78
- */
79
- export function findPrometheusPlans(directory: string): string[] {
80
- const plansDir = join(directory, PROMETHEUS_PLANS_DIR)
81
-
82
- if (!existsSync(plansDir)) {
83
- return []
84
- }
85
-
86
- try {
87
- const files = readdirSync(plansDir)
88
- return files
89
- .filter((f) => f.endsWith(".md"))
90
- .map((f) => join(plansDir, f))
91
- .sort((a, b) => {
92
- // Sort by modification time, newest first
93
- const aStat = require("node:fs").statSync(a)
94
- const bStat = require("node:fs").statSync(b)
95
- return bStat.mtimeMs - aStat.mtimeMs
96
- })
97
- } catch {
98
- return []
99
- }
100
- }
101
-
102
- /**
103
- * Parse a plan file and count checkbox progress.
104
- */
105
- export function getPlanProgress(planPath: string): PlanProgress {
106
- if (!existsSync(planPath)) {
107
- return { total: 0, completed: 0, isComplete: true }
108
- }
109
-
110
- try {
111
- const content = readFileSync(planPath, "utf-8")
112
-
113
- // Match markdown checkboxes: - [ ] or - [x] or - [X]
114
- const uncheckedMatches = content.match(/^[-*]\s*\[\s*\]/gm) || []
115
- const checkedMatches = content.match(/^[-*]\s*\[[xX]\]/gm) || []
116
-
117
- const total = uncheckedMatches.length + checkedMatches.length
118
- const completed = checkedMatches.length
119
-
120
- return {
121
- total,
122
- completed,
123
- isComplete: total === 0 || completed === total,
124
- }
125
- } catch {
126
- return { total: 0, completed: 0, isComplete: true }
127
- }
128
- }
129
-
130
- /**
131
- * Extract plan name from file path.
132
- */
133
- export function getPlanName(planPath: string): string {
134
- return basename(planPath, ".md")
135
- }
136
-
137
- /**
138
- * Create a new boulder state for a plan.
139
- */
140
- export function createBoulderState(
141
- planPath: string,
142
- sessionId: string
143
- ): BoulderState {
144
- return {
145
- active_plan: planPath,
146
- started_at: new Date().toISOString(),
147
- session_ids: [sessionId],
148
- plan_name: getPlanName(planPath),
149
- }
150
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Boulder State Types
3
- *
4
- * Manages the active work plan state for Sisyphus orchestrator.
5
- * Named after Sisyphus's boulder - the eternal task that must be rolled.
6
- */
7
-
8
- export interface BoulderState {
9
- /** Absolute path to the active plan file */
10
- active_plan: string
11
- /** ISO timestamp when work started */
12
- started_at: string
13
- /** Session IDs that have worked on this plan */
14
- session_ids: string[]
15
- /** Plan name derived from filename */
16
- plan_name: string
17
- }
18
-
19
- export interface PlanProgress {
20
- /** Total number of checkboxes */
21
- total: number
22
- /** Number of completed checkboxes */
23
- completed: number
24
- /** Whether all tasks are done */
25
- isComplete: boolean
26
- }
@@ -1,89 +0,0 @@
1
- import type { CommandDefinition } from "../claude-code-command-loader"
2
- import type { BuiltinCommandName, BuiltinCommands } from "./types"
3
- import { INIT_DEEP_TEMPLATE } from "./templates/init-deep"
4
- import { RALPH_LOOP_TEMPLATE, CANCEL_RALPH_TEMPLATE } from "./templates/ralph-loop"
5
- import { REFACTOR_TEMPLATE } from "./templates/refactor"
6
- import { START_WORK_TEMPLATE } from "./templates/start-work"
7
-
8
- const BUILTIN_COMMAND_DEFINITIONS: Record<BuiltinCommandName, Omit<CommandDefinition, "name">> = {
9
- "init-deep": {
10
- description: "(builtin) Initialize hierarchical AGENTS.md knowledge base",
11
- template: `<command-instruction>
12
- ${INIT_DEEP_TEMPLATE}
13
- </command-instruction>
14
-
15
- <user-request>
16
- $ARGUMENTS
17
- </user-request>`,
18
- argumentHint: "[--create-new] [--max-depth=N]",
19
- },
20
- "ralph-loop": {
21
- description: "(builtin) Start self-referential development loop until completion",
22
- template: `<command-instruction>
23
- ${RALPH_LOOP_TEMPLATE}
24
- </command-instruction>
25
-
26
- <user-task>
27
- $ARGUMENTS
28
- </user-task>`,
29
- argumentHint: '"task description" [--completion-promise=TEXT] [--max-iterations=N]',
30
- },
31
- "ulw-loop": {
32
- description: "(builtin) Start ultrawork loop - continues until completion with ultrawork mode",
33
- template: `<command-instruction>
34
- ${RALPH_LOOP_TEMPLATE}
35
- </command-instruction>
36
-
37
- <user-task>
38
- $ARGUMENTS
39
- </user-task>`,
40
- argumentHint: '"task description" [--completion-promise=TEXT] [--max-iterations=N]',
41
- },
42
- "cancel-ralph": {
43
- description: "(builtin) Cancel active Ralph Loop",
44
- template: `<command-instruction>
45
- ${CANCEL_RALPH_TEMPLATE}
46
- </command-instruction>`,
47
- },
48
- refactor: {
49
- description:
50
- "(builtin) Intelligent refactoring command with LSP, AST-grep, architecture analysis, codemap, and TDD verification.",
51
- template: `<command-instruction>
52
- ${REFACTOR_TEMPLATE}
53
- </command-instruction>`,
54
- argumentHint: "<refactoring-target> [--scope=<file|module|project>] [--strategy=<safe|aggressive>]",
55
- },
56
- "start-work": {
57
- description: "(builtin) Start Sisyphus work session from Prometheus plan",
58
- agent: "Atlas",
59
- template: `<command-instruction>
60
- ${START_WORK_TEMPLATE}
61
- </command-instruction>
62
-
63
- <session-context>
64
- Session ID: $SESSION_ID
65
- Timestamp: $TIMESTAMP
66
- </session-context>
67
-
68
- <user-request>
69
- $ARGUMENTS
70
- </user-request>`,
71
- argumentHint: "[plan-name]",
72
- },
73
- }
74
-
75
- export function loadBuiltinCommands(
76
- disabledCommands?: BuiltinCommandName[]
77
- ): BuiltinCommands {
78
- const disabled = new Set(disabledCommands ?? [])
79
- const commands: BuiltinCommands = {}
80
-
81
- for (const [name, definition] of Object.entries(BUILTIN_COMMAND_DEFINITIONS)) {
82
- if (!disabled.has(name as BuiltinCommandName)) {
83
- const { argumentHint: _argumentHint, ...openCodeCompatible } = definition
84
- commands[name] = openCodeCompatible as CommandDefinition
85
- }
86
- }
87
-
88
- return commands
89
- }
@@ -1,2 +0,0 @@
1
- export * from "./types"
2
- export * from "./commands"