oh-my-claude-sisyphus 3.8.8 → 3.8.10

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 (460) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/agents/architect.md +78 -0
  5. package/agents/explore.md +15 -0
  6. package/agents/qa-tester.md +159 -1
  7. package/agents/writer.md +20 -0
  8. package/commands/help.md +1 -1
  9. package/commands/omc-setup.md +1 -1
  10. package/dist/__tests__/agent-registry.test.d.ts +2 -0
  11. package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
  12. package/dist/__tests__/agent-registry.test.js +39 -0
  13. package/dist/__tests__/agent-registry.test.js.map +1 -0
  14. package/dist/__tests__/hooks.test.js +6 -6
  15. package/dist/__tests__/hooks.test.js.map +1 -1
  16. package/dist/__tests__/load-agent-prompt.test.d.ts +2 -0
  17. package/dist/__tests__/load-agent-prompt.test.d.ts.map +1 -0
  18. package/dist/__tests__/load-agent-prompt.test.js +68 -0
  19. package/dist/__tests__/load-agent-prompt.test.js.map +1 -0
  20. package/dist/__tests__/model-routing.test.js +5 -34
  21. package/dist/__tests__/model-routing.test.js.map +1 -1
  22. package/dist/agents/analyst.d.ts.map +1 -1
  23. package/dist/agents/analyst.js +2 -77
  24. package/dist/agents/analyst.js.map +1 -1
  25. package/dist/agents/architect.d.ts.map +1 -1
  26. package/dist/agents/architect.js +3 -148
  27. package/dist/agents/architect.js.map +1 -1
  28. package/dist/agents/coordinator-deprecated.d.ts +18 -0
  29. package/dist/agents/coordinator-deprecated.d.ts.map +1 -0
  30. package/dist/agents/coordinator-deprecated.js +34 -0
  31. package/dist/agents/coordinator-deprecated.js.map +1 -0
  32. package/dist/agents/critic.d.ts.map +1 -1
  33. package/dist/agents/critic.js +2 -90
  34. package/dist/agents/critic.js.map +1 -1
  35. package/dist/agents/definitions.d.ts +2 -0
  36. package/dist/agents/definitions.d.ts.map +1 -1
  37. package/dist/agents/definitions.js +3 -32
  38. package/dist/agents/definitions.js.map +1 -1
  39. package/dist/agents/designer.d.ts.map +1 -1
  40. package/dist/agents/designer.js +2 -73
  41. package/dist/agents/designer.js.map +1 -1
  42. package/dist/agents/executor.d.ts +1 -0
  43. package/dist/agents/executor.d.ts.map +1 -1
  44. package/dist/agents/executor.js +3 -56
  45. package/dist/agents/executor.js.map +1 -1
  46. package/dist/agents/explore.d.ts.map +1 -1
  47. package/dist/agents/explore.js +2 -64
  48. package/dist/agents/explore.js.map +1 -1
  49. package/dist/agents/index.d.ts +4 -3
  50. package/dist/agents/index.d.ts.map +1 -1
  51. package/dist/agents/index.js +6 -3
  52. package/dist/agents/index.js.map +1 -1
  53. package/dist/agents/planner.d.ts.map +1 -1
  54. package/dist/agents/planner.js +2 -157
  55. package/dist/agents/planner.js.map +1 -1
  56. package/dist/agents/qa-tester.d.ts.map +1 -1
  57. package/dist/agents/qa-tester.js +2 -324
  58. package/dist/agents/qa-tester.js.map +1 -1
  59. package/dist/agents/researcher.d.ts.map +1 -1
  60. package/dist/agents/researcher.js +2 -65
  61. package/dist/agents/researcher.js.map +1 -1
  62. package/dist/agents/scientist.d.ts.map +1 -1
  63. package/dist/agents/scientist.js +2 -293
  64. package/dist/agents/scientist.js.map +1 -1
  65. package/dist/agents/utils.d.ts +7 -0
  66. package/dist/agents/utils.d.ts.map +1 -1
  67. package/dist/agents/utils.js +50 -0
  68. package/dist/agents/utils.js.map +1 -1
  69. package/dist/agents/vision.d.ts.map +1 -1
  70. package/dist/agents/vision.js +2 -32
  71. package/dist/agents/vision.js.map +1 -1
  72. package/dist/agents/writer.d.ts.map +1 -1
  73. package/dist/agents/writer.js +2 -171
  74. package/dist/agents/writer.js.map +1 -1
  75. package/dist/cli/analytics.js +0 -0
  76. package/dist/cli/index.js +0 -0
  77. package/dist/features/model-routing/index.d.ts +1 -1
  78. package/dist/features/model-routing/index.d.ts.map +1 -1
  79. package/dist/features/model-routing/index.js +1 -1
  80. package/dist/features/model-routing/index.js.map +1 -1
  81. package/dist/features/model-routing/router.d.ts +1 -15
  82. package/dist/features/model-routing/router.d.ts.map +1 -1
  83. package/dist/features/model-routing/router.js +2 -33
  84. package/dist/features/model-routing/router.js.map +1 -1
  85. package/dist/features/model-routing/rules.d.ts.map +1 -1
  86. package/dist/features/model-routing/rules.js +0 -8
  87. package/dist/features/model-routing/rules.js.map +1 -1
  88. package/dist/features/model-routing/types.d.ts +1 -2
  89. package/dist/features/model-routing/types.d.ts.map +1 -1
  90. package/dist/features/model-routing/types.js +2 -6
  91. package/dist/features/model-routing/types.js.map +1 -1
  92. package/dist/features/task-decomposer/index.d.ts +1 -1
  93. package/dist/features/task-decomposer/index.d.ts.map +1 -1
  94. package/dist/features/task-decomposer/index.js +5 -8
  95. package/dist/features/task-decomposer/index.js.map +1 -1
  96. package/dist/features/task-decomposer/types.d.ts +4 -4
  97. package/dist/features/task-decomposer/types.d.ts.map +1 -1
  98. package/dist/hooks/bridge.d.ts.map +1 -1
  99. package/dist/hooks/bridge.js +10 -2
  100. package/dist/hooks/bridge.js.map +1 -1
  101. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  102. package/dist/hooks/persistent-mode/index.js +14 -12
  103. package/dist/hooks/persistent-mode/index.js.map +1 -1
  104. package/dist/hooks/todo-continuation/index.d.ts +9 -0
  105. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  106. package/dist/hooks/todo-continuation/index.js +19 -0
  107. package/dist/hooks/todo-continuation/index.js.map +1 -1
  108. package/dist/hooks/ultrapilot/decomposer.d.ts +1 -1
  109. package/dist/hooks/ultrapilot/decomposer.js +2 -2
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +4 -2
  113. package/dist/index.js.map +1 -1
  114. package/docs/CLAUDE.md +44 -4
  115. package/docs/FEATURES.md +1 -1
  116. package/docs/MIGRATION.md +5 -5
  117. package/docs/REFERENCE.md +6 -2
  118. package/package.json +1 -1
  119. package/scripts/persistent-mode.mjs +27 -12
  120. package/skills/help/SKILL.md +1 -1
  121. package/skills/omc-setup/SKILL.md +1 -1
  122. package/templates/hooks/persistent-mode.mjs +26 -12
  123. package/templates/hooks/stop-continuation.mjs +30 -0
  124. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  125. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  126. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  127. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  128. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  129. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  130. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  131. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  132. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  133. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  134. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  135. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  136. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  137. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  138. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  139. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  140. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  141. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  142. package/dist/__tests__/learned-skills/config.test.js +0 -37
  143. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  144. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  145. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  146. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  147. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  148. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  149. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  150. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  151. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  152. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  153. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  154. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  155. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  156. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  157. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  158. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  159. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  160. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  161. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  162. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  163. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  164. package/dist/agents/codex-agents.d.ts +0 -20
  165. package/dist/agents/codex-agents.d.ts.map +0 -1
  166. package/dist/agents/codex-agents.js +0 -36
  167. package/dist/agents/codex-agents.js.map +0 -1
  168. package/dist/agents/coordinator.d.ts +0 -11
  169. package/dist/agents/coordinator.d.ts.map +0 -1
  170. package/dist/agents/coordinator.js +0 -115
  171. package/dist/agents/coordinator.js.map +0 -1
  172. package/dist/agents/document-writer.d.ts +0 -11
  173. package/dist/agents/document-writer.d.ts.map +0 -1
  174. package/dist/agents/document-writer.js +0 -209
  175. package/dist/agents/document-writer.js.map +0 -1
  176. package/dist/agents/frontend-engineer.d.ts +0 -11
  177. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  178. package/dist/agents/frontend-engineer.js +0 -115
  179. package/dist/agents/frontend-engineer.js.map +0 -1
  180. package/dist/agents/librarian.d.ts +0 -12
  181. package/dist/agents/librarian.d.ts.map +0 -1
  182. package/dist/agents/librarian.js +0 -103
  183. package/dist/agents/librarian.js.map +0 -1
  184. package/dist/agents/metis.d.ts +0 -12
  185. package/dist/agents/metis.d.ts.map +0 -1
  186. package/dist/agents/metis.js +0 -117
  187. package/dist/agents/metis.js.map +0 -1
  188. package/dist/agents/momus.d.ts +0 -12
  189. package/dist/agents/momus.d.ts.map +0 -1
  190. package/dist/agents/momus.js +0 -128
  191. package/dist/agents/momus.js.map +0 -1
  192. package/dist/agents/multimodal-looker.d.ts +0 -11
  193. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  194. package/dist/agents/multimodal-looker.js +0 -70
  195. package/dist/agents/multimodal-looker.js.map +0 -1
  196. package/dist/agents/oracle.d.ts +0 -13
  197. package/dist/agents/oracle.d.ts.map +0 -1
  198. package/dist/agents/oracle.js +0 -191
  199. package/dist/agents/oracle.js.map +0 -1
  200. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  201. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  202. package/dist/agents/orchestrator-sisyphus.js +0 -115
  203. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  204. package/dist/agents/prometheus.d.ts +0 -12
  205. package/dist/agents/prometheus.d.ts.map +0 -1
  206. package/dist/agents/prometheus.js +0 -195
  207. package/dist/agents/prometheus.js.map +0 -1
  208. package/dist/agents/sisyphus-junior.d.ts +0 -12
  209. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  210. package/dist/agents/sisyphus-junior.js +0 -93
  211. package/dist/agents/sisyphus-junior.js.map +0 -1
  212. package/dist/cli/components/CostDashboard.d.ts +0 -15
  213. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  214. package/dist/cli/components/CostDashboard.js +0 -15
  215. package/dist/cli/components/CostDashboard.js.map +0 -1
  216. package/dist/cli/components/LiveStats.d.ts +0 -16
  217. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  218. package/dist/cli/components/LiveStats.js +0 -16
  219. package/dist/cli/components/LiveStats.js.map +0 -1
  220. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  221. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  222. package/dist/cli/components/SessionBrowser.js +0 -14
  223. package/dist/cli/components/SessionBrowser.js.map +0 -1
  224. package/dist/cli/tui.d.ts +0 -21
  225. package/dist/cli/tui.d.ts.map +0 -1
  226. package/dist/cli/tui.js +0 -21
  227. package/dist/cli/tui.js.map +0 -1
  228. package/dist/hooks/autopilot/signals.d.ts +0 -20
  229. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  230. package/dist/hooks/autopilot/signals.js +0 -75
  231. package/dist/hooks/autopilot/signals.js.map +0 -1
  232. package/dist/hooks/autopilot/summary.d.ts +0 -27
  233. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  234. package/dist/hooks/autopilot/summary.js +0 -160
  235. package/dist/hooks/autopilot/summary.js.map +0 -1
  236. package/dist/hooks/autopilot/transition.d.ts +0 -39
  237. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  238. package/dist/hooks/autopilot/transition.js +0 -216
  239. package/dist/hooks/autopilot/transition.js.map +0 -1
  240. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  241. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  242. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  243. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  244. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  245. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  246. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  247. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  248. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  249. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  250. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  251. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  252. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  253. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  254. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  255. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  256. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  257. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  258. package/dist/hooks/edit-error-recovery/index.js +0 -89
  259. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  260. package/dist/hooks/github-auto-responder/classifier.d.ts +0 -43
  261. package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
  262. package/dist/hooks/github-auto-responder/classifier.js +0 -150
  263. package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
  264. package/dist/hooks/github-auto-responder/config.d.ts +0 -109
  265. package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
  266. package/dist/hooks/github-auto-responder/config.js +0 -69
  267. package/dist/hooks/github-auto-responder/config.js.map +0 -1
  268. package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
  269. package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
  270. package/dist/hooks/github-auto-responder/constants.js +0 -60
  271. package/dist/hooks/github-auto-responder/constants.js.map +0 -1
  272. package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
  273. package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
  274. package/dist/hooks/github-auto-responder/filters.js +0 -174
  275. package/dist/hooks/github-auto-responder/filters.js.map +0 -1
  276. package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
  277. package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
  278. package/dist/hooks/github-auto-responder/github-client.js +0 -128
  279. package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
  280. package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
  281. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
  282. package/dist/hooks/github-auto-responder/idempotency.js +0 -147
  283. package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
  284. package/dist/hooks/github-auto-responder/index.d.ts +0 -140
  285. package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
  286. package/dist/hooks/github-auto-responder/index.js +0 -145
  287. package/dist/hooks/github-auto-responder/index.js.map +0 -1
  288. package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
  289. package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
  290. package/dist/hooks/github-auto-responder/persona.js +0 -99
  291. package/dist/hooks/github-auto-responder/persona.js.map +0 -1
  292. package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
  293. package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
  294. package/dist/hooks/github-auto-responder/responder.js +0 -264
  295. package/dist/hooks/github-auto-responder/responder.js.map +0 -1
  296. package/dist/hooks/github-auto-responder/server.d.ts +0 -140
  297. package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
  298. package/dist/hooks/github-auto-responder/server.js +0 -301
  299. package/dist/hooks/github-auto-responder/server.js.map +0 -1
  300. package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
  301. package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
  302. package/dist/hooks/github-auto-responder/signature.js +0 -79
  303. package/dist/hooks/github-auto-responder/signature.js.map +0 -1
  304. package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
  305. package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
  306. package/dist/hooks/github-auto-responder/templates.js +0 -93
  307. package/dist/hooks/github-auto-responder/templates.js.map +0 -1
  308. package/dist/hooks/github-auto-responder/types.d.ts +0 -246
  309. package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
  310. package/dist/hooks/github-auto-responder/types.js +0 -7
  311. package/dist/hooks/github-auto-responder/types.js.map +0 -1
  312. package/dist/hooks/learned-skills/config.d.ts +0 -53
  313. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  314. package/dist/hooks/learned-skills/config.js +0 -103
  315. package/dist/hooks/learned-skills/config.js.map +0 -1
  316. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  317. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  318. package/dist/hooks/learned-skills/constants.js +0 -26
  319. package/dist/hooks/learned-skills/constants.js.map +0 -1
  320. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  321. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  322. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  323. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  324. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  325. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  326. package/dist/hooks/learned-skills/detector.js +0 -150
  327. package/dist/hooks/learned-skills/detector.js.map +0 -1
  328. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  329. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  330. package/dist/hooks/learned-skills/finder.js +0 -117
  331. package/dist/hooks/learned-skills/finder.js.map +0 -1
  332. package/dist/hooks/learned-skills/index.d.ts +0 -62
  333. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  334. package/dist/hooks/learned-skills/index.js +0 -137
  335. package/dist/hooks/learned-skills/index.js.map +0 -1
  336. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  337. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  338. package/dist/hooks/learned-skills/loader.js +0 -107
  339. package/dist/hooks/learned-skills/loader.js.map +0 -1
  340. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  341. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  342. package/dist/hooks/learned-skills/parser.js +0 -190
  343. package/dist/hooks/learned-skills/parser.js.map +0 -1
  344. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  345. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  346. package/dist/hooks/learned-skills/promotion.js +0 -87
  347. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  348. package/dist/hooks/learned-skills/types.d.ts +0 -109
  349. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  350. package/dist/hooks/learned-skills/types.js +0 -8
  351. package/dist/hooks/learned-skills/types.js.map +0 -1
  352. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  353. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  354. package/dist/hooks/learned-skills/validator.js +0 -87
  355. package/dist/hooks/learned-skills/validator.js.map +0 -1
  356. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  357. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  358. package/dist/hooks/learned-skills/writer.js +0 -126
  359. package/dist/hooks/learned-skills/writer.js.map +0 -1
  360. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  361. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  362. package/dist/hooks/mnemosyne/config.js +0 -103
  363. package/dist/hooks/mnemosyne/config.js.map +0 -1
  364. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  365. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  366. package/dist/hooks/mnemosyne/constants.js +0 -26
  367. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  368. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  369. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  370. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  371. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  372. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  373. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  374. package/dist/hooks/mnemosyne/detector.js +0 -150
  375. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  376. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  377. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  378. package/dist/hooks/mnemosyne/finder.js +0 -117
  379. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  380. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  381. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  382. package/dist/hooks/mnemosyne/index.js +0 -137
  383. package/dist/hooks/mnemosyne/index.js.map +0 -1
  384. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  385. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  386. package/dist/hooks/mnemosyne/loader.js +0 -113
  387. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  388. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  389. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  390. package/dist/hooks/mnemosyne/parser.js +0 -190
  391. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  392. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  393. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  394. package/dist/hooks/mnemosyne/promotion.js +0 -87
  395. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  396. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  397. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  398. package/dist/hooks/mnemosyne/types.js +0 -8
  399. package/dist/hooks/mnemosyne/types.js.map +0 -1
  400. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  401. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  402. package/dist/hooks/mnemosyne/validator.js +0 -87
  403. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  404. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  405. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  406. package/dist/hooks/mnemosyne/writer.js +0 -126
  407. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  408. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  409. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  410. package/dist/hooks/ralph-loop/index.js +0 -322
  411. package/dist/hooks/ralph-loop/index.js.map +0 -1
  412. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  413. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  414. package/dist/hooks/ralph-prd/index.js +0 -310
  415. package/dist/hooks/ralph-prd/index.js.map +0 -1
  416. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  417. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  418. package/dist/hooks/ralph-progress/index.js +0 -408
  419. package/dist/hooks/ralph-progress/index.js.map +0 -1
  420. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  421. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  422. package/dist/hooks/ralph-verifier/index.js +0 -223
  423. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  424. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  425. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  426. package/dist/hooks/session-recovery/constants.js +0 -78
  427. package/dist/hooks/session-recovery/constants.js.map +0 -1
  428. package/dist/hooks/session-recovery/index.d.ts +0 -53
  429. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  430. package/dist/hooks/session-recovery/index.js +0 -321
  431. package/dist/hooks/session-recovery/index.js.map +0 -1
  432. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  433. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  434. package/dist/hooks/session-recovery/storage.js +0 -383
  435. package/dist/hooks/session-recovery/storage.js.map +0 -1
  436. package/dist/hooks/session-recovery/types.d.ts +0 -145
  437. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  438. package/dist/hooks/session-recovery/types.js +0 -8
  439. package/dist/hooks/session-recovery/types.js.map +0 -1
  440. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  441. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  442. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  443. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  444. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  445. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  446. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  447. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  448. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  449. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  450. package/dist/hooks/ultraqa-loop/index.js +0 -216
  451. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  452. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  453. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  454. package/dist/hooks/ultrawork-state/index.js +0 -208
  455. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  456. package/dist/hud/sisyphus-state.d.ts +0 -31
  457. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  458. package/dist/hud/sisyphus-state.js +0 -163
  459. package/dist/hud/sisyphus-state.js.map +0 -1
  460. package/dist/mcp/standalone-server.cjs +0 -19135
@@ -1,147 +0,0 @@
1
- /**
2
- * Idempotency Store for GitHub Auto-Responder
3
- *
4
- * SQLite-based deduplication using GitHub delivery IDs.
5
- * Prevents duplicate webhook processing with automatic cleanup of old records.
6
- */
7
- import { existsSync, mkdirSync } from 'node:fs';
8
- import { dirname } from 'node:path';
9
- import { IDEMPOTENCY_TTL_MS } from './constants.js';
10
- /**
11
- * SQLite-backed idempotency store for webhook deduplication.
12
- * Uses GitHub delivery IDs to track processed events.
13
- */
14
- export class IdempotencyStore {
15
- dbPath;
16
- db = null;
17
- initialized = false;
18
- /**
19
- * Create a new idempotency store.
20
- * @param dbPath - Path to SQLite database file
21
- */
22
- constructor(dbPath) {
23
- this.dbPath = dbPath;
24
- }
25
- /**
26
- * Initialize the database connection and schema.
27
- * Dynamically imports better-sqlite3 and creates tables.
28
- */
29
- async init() {
30
- if (this.initialized) {
31
- return;
32
- }
33
- try {
34
- // Dynamic import of better-sqlite3
35
- const betterSqlite3 = await import('better-sqlite3');
36
- const Database = betterSqlite3.default;
37
- // Ensure database directory exists
38
- const dbDir = dirname(this.dbPath);
39
- if (!existsSync(dbDir)) {
40
- mkdirSync(dbDir, { recursive: true });
41
- }
42
- // Create database connection
43
- this.db = new Database(this.dbPath);
44
- // Enable WAL mode for concurrent access
45
- this.db.pragma('journal_mode = WAL');
46
- // Create schema
47
- this.db.exec(`
48
- CREATE TABLE IF NOT EXISTS processed_events (
49
- delivery_id TEXT PRIMARY KEY,
50
- created_at INTEGER NOT NULL
51
- );
52
-
53
- -- Index for efficient TTL cleanup
54
- CREATE INDEX IF NOT EXISTS idx_created_at ON processed_events(created_at);
55
- `);
56
- this.initialized = true;
57
- }
58
- catch (error) {
59
- throw new Error(`Failed to initialize idempotency store at ${this.dbPath}: ${error instanceof Error ? error.message : String(error)}`);
60
- }
61
- }
62
- /**
63
- * Ensure database is initialized before use.
64
- * @throws {Error} If database is not initialized
65
- */
66
- ensureDb() {
67
- if (!this.db || !this.initialized) {
68
- throw new Error('IdempotencyStore not initialized. Call init() first.');
69
- }
70
- }
71
- /**
72
- * Check if a delivery ID has already been processed.
73
- * @param deliveryId - GitHub webhook delivery ID
74
- * @returns True if already processed, false otherwise
75
- */
76
- isProcessed(deliveryId) {
77
- this.ensureDb();
78
- const stmt = this.db.prepare('SELECT 1 FROM processed_events WHERE delivery_id = ?');
79
- const result = stmt.get(deliveryId);
80
- return result !== undefined;
81
- }
82
- /**
83
- * Mark a delivery ID as processed.
84
- * @param deliveryId - GitHub webhook delivery ID
85
- */
86
- markProcessed(deliveryId) {
87
- this.ensureDb();
88
- const stmt = this.db.prepare('INSERT OR IGNORE INTO processed_events (delivery_id, created_at) VALUES (?, ?)');
89
- stmt.run(deliveryId, Date.now());
90
- }
91
- /**
92
- * Remove records older than the TTL.
93
- * @returns Number of records deleted
94
- */
95
- cleanup() {
96
- this.ensureDb();
97
- const cutoff = Date.now() - IDEMPOTENCY_TTL_MS;
98
- const stmt = this.db.prepare('DELETE FROM processed_events WHERE created_at < ?');
99
- const result = stmt.run(cutoff);
100
- return result.changes;
101
- }
102
- /**
103
- * Close the database connection.
104
- * Safe to call multiple times.
105
- */
106
- close() {
107
- if (this.db) {
108
- this.db.close();
109
- this.db = null;
110
- this.initialized = false;
111
- }
112
- }
113
- /**
114
- * Get all processed records (for debugging/testing).
115
- * @returns Array of idempotency records
116
- */
117
- getAllRecords() {
118
- this.ensureDb();
119
- const stmt = this.db.prepare('SELECT delivery_id, created_at FROM processed_events');
120
- const rows = stmt.all();
121
- return rows.map(row => ({
122
- deliveryId: row.delivery_id,
123
- createdAt: row.created_at,
124
- }));
125
- }
126
- /**
127
- * Get count of processed records.
128
- * @returns Total number of records in store
129
- */
130
- getRecordCount() {
131
- this.ensureDb();
132
- const stmt = this.db.prepare('SELECT COUNT(*) as count FROM processed_events');
133
- const result = stmt.get();
134
- return result.count;
135
- }
136
- /**
137
- * Clear all records (for testing/reset).
138
- * @returns Number of records deleted
139
- */
140
- clearAll() {
141
- this.ensureDb();
142
- const stmt = this.db.prepare('DELETE FROM processed_events');
143
- const result = stmt.run();
144
- return result.changes;
145
- }
146
- }
147
- //# sourceMappingURL=idempotency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/idempotency.ts"],"names":[],"mappings":"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"}
@@ -1,140 +0,0 @@
1
- /**
2
- * GitHub Auto-Responder - Public API Entry Point
3
- *
4
- * This module provides a high-level API for creating and managing
5
- * GitHub webhook auto-responders powered by Claude.
6
- *
7
- * @example Quick Start
8
- * ```typescript
9
- * import { startGitHubAutoResponder } from '@/hooks/github-auto-responder';
10
- *
11
- * // Start with environment variables
12
- * const { server, responder, config, stop } = await startGitHubAutoResponder();
13
- *
14
- * // Or with config overrides
15
- * const instance = await startGitHubAutoResponder({
16
- * mode: 'auto',
17
- * port: 3001,
18
- * });
19
- *
20
- * // Later...
21
- * await instance.stop();
22
- * ```
23
- *
24
- * @example Manual Setup
25
- * ```typescript
26
- * import { createGitHubAutoResponder } from '@/hooks/github-auto-responder';
27
- *
28
- * const { server, responder, config } = createGitHubAutoResponder({
29
- * webhookSecret: process.env.GITHUB_WEBHOOK_SECRET!,
30
- * githubToken: process.env.GITHUB_TOKEN!,
31
- * anthropicApiKey: process.env.ANTHROPIC_API_KEY!,
32
- * selfLogin: 'my-bot',
33
- * });
34
- *
35
- * await responder.init();
36
- * await server.start();
37
- *
38
- * // Later...
39
- * await server.stop();
40
- * ```
41
- */
42
- import type { AutoResponderConfig, PersonaConfig, ResponseCategory, ResponseMode, WebhookPayload, WebhookHeaders, GitHubUser, GitHubLabel, GitHubRepository, GitHubIssue, GitHubPullRequest, GitHubIssuePayload, GitHubPRPayload, FilterResult, WebhookFilter, IdempotencyRecord, LLMResponse, CommentResult } from './types.js';
43
- import { loadConfig, loadConfigFromEnv } from './config.js';
44
- import { DEFAULT_PERSONA, DEFAULT_SKIP_LABELS, DEFAULT_SPAM_PATTERNS, DEFAULT_PORT, DEFAULT_LLM_MODEL, DEFAULT_MAX_RESPONSE_TOKENS, GITHUB_API_BASE, ANTHROPIC_API_URL, RESPONSE_TIMEOUT_MS, IDEMPOTENCY_TTL_MS } from './constants.js';
45
- import { AutoResponder, createAutoResponder } from './responder.js';
46
- import type { ResponderResult } from './responder.js';
47
- import { WebhookServer, createWebhookServer, registerShutdownHandlers } from './server.js';
48
- export type { AutoResponderConfig, PersonaConfig, ResponseCategory, ResponseMode, WebhookPayload, WebhookHeaders, GitHubUser, GitHubLabel, GitHubRepository, GitHubIssue, GitHubPullRequest, GitHubIssuePayload, GitHubPRPayload, FilterResult, WebhookFilter, IdempotencyRecord, LLMResponse, CommentResult, ResponderResult, };
49
- export { loadConfig, loadConfigFromEnv };
50
- export { DEFAULT_PERSONA, DEFAULT_SKIP_LABELS, DEFAULT_SPAM_PATTERNS, DEFAULT_PORT, DEFAULT_LLM_MODEL, DEFAULT_MAX_RESPONSE_TOKENS, GITHUB_API_BASE, ANTHROPIC_API_URL, RESPONSE_TIMEOUT_MS, IDEMPOTENCY_TTL_MS, };
51
- export { AutoResponder, createAutoResponder };
52
- export { WebhookServer, createWebhookServer, registerShutdownHandlers };
53
- /**
54
- * Result of creating a GitHub auto-responder instance.
55
- */
56
- export interface GitHubAutoResponderInstance {
57
- /** Auto-responder for webhook processing */
58
- responder: AutoResponder;
59
- /** HTTP webhook server */
60
- server: WebhookServer;
61
- /** Resolved configuration */
62
- config: AutoResponderConfig;
63
- }
64
- /**
65
- * Result of starting a GitHub auto-responder (includes stop function).
66
- */
67
- export interface StartedGitHubAutoResponder extends GitHubAutoResponderInstance {
68
- /** Stop the server and close the responder */
69
- stop: () => Promise<void>;
70
- }
71
- /**
72
- * Create a GitHub auto-responder instance (server + responder).
73
- *
74
- * This factory function creates both the webhook server and the auto-responder,
75
- * but does NOT initialize or start them. You must call:
76
- * 1. `responder.init()` to initialize the idempotency store
77
- * 2. `server.start()` to begin listening for webhooks
78
- *
79
- * Use {@link startGitHubAutoResponder} if you want a fully initialized and
80
- * running instance in a single call.
81
- *
82
- * @param configOverrides - Partial configuration to override defaults/env vars
83
- * @returns Auto-responder instance with server, responder, and resolved config
84
- *
85
- * @example
86
- * ```typescript
87
- * const { server, responder, config } = createGitHubAutoResponder({
88
- * mode: 'draft', // Draft mode: log responses without posting
89
- * port: 3001,
90
- * });
91
- *
92
- * await responder.init();
93
- * await server.start();
94
- *
95
- * console.log(`Webhook server running on port ${config.port}`);
96
- * ```
97
- */
98
- export declare function createGitHubAutoResponder(configOverrides?: Partial<AutoResponderConfig>): GitHubAutoResponderInstance;
99
- /**
100
- * Create and start a fully initialized GitHub auto-responder.
101
- *
102
- * This is the recommended high-level API for most use cases. It:
103
- * 1. Loads configuration from environment + overrides
104
- * 2. Creates the auto-responder and webhook server
105
- * 3. Initializes the responder (idempotency store)
106
- * 4. Starts the HTTP server
107
- * 5. Returns a handle with a convenient `stop()` function
108
- *
109
- * @param configOverrides - Partial configuration to override defaults/env vars
110
- * @returns Started instance with server, responder, config, and stop function
111
- *
112
- * @example
113
- * ```typescript
114
- * // Start in auto mode (post comments automatically)
115
- * const instance = await startGitHubAutoResponder({ mode: 'auto' });
116
- *
117
- * console.log(`Listening on port ${instance.config.port}`);
118
- *
119
- * // Later: gracefully shut down
120
- * await instance.stop();
121
- * ```
122
- *
123
- * @example
124
- * ```typescript
125
- * // Start in draft mode (log responses without posting)
126
- * const instance = await startGitHubAutoResponder({
127
- * mode: 'draft',
128
- * port: 3001,
129
- * persona: {
130
- * tone: 'friendly',
131
- * technicalDepth: 'intermediate',
132
- * language: 'en',
133
- * signatureEmoji: '🤖',
134
- * maintainerName: 'Bot Master',
135
- * },
136
- * });
137
- * ```
138
- */
139
- export declare function startGitHubAutoResponder(configOverrides?: Partial<AutoResponderConfig>): Promise<StartedGitHubAutoResponder>;
140
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,CAAC;AAGF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AAGzC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4CAA4C;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,0BAA0B;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,6BAA6B;IAC7B,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,2BAA2B;IAC7E,8CAA8C;IAC9C,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAC7C,2BAA2B,CAW7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,wBAAwB,CAC5C,eAAe,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,CAkBrC"}
@@ -1,145 +0,0 @@
1
- /**
2
- * GitHub Auto-Responder - Public API Entry Point
3
- *
4
- * This module provides a high-level API for creating and managing
5
- * GitHub webhook auto-responders powered by Claude.
6
- *
7
- * @example Quick Start
8
- * ```typescript
9
- * import { startGitHubAutoResponder } from '@/hooks/github-auto-responder';
10
- *
11
- * // Start with environment variables
12
- * const { server, responder, config, stop } = await startGitHubAutoResponder();
13
- *
14
- * // Or with config overrides
15
- * const instance = await startGitHubAutoResponder({
16
- * mode: 'auto',
17
- * port: 3001,
18
- * });
19
- *
20
- * // Later...
21
- * await instance.stop();
22
- * ```
23
- *
24
- * @example Manual Setup
25
- * ```typescript
26
- * import { createGitHubAutoResponder } from '@/hooks/github-auto-responder';
27
- *
28
- * const { server, responder, config } = createGitHubAutoResponder({
29
- * webhookSecret: process.env.GITHUB_WEBHOOK_SECRET!,
30
- * githubToken: process.env.GITHUB_TOKEN!,
31
- * anthropicApiKey: process.env.ANTHROPIC_API_KEY!,
32
- * selfLogin: 'my-bot',
33
- * });
34
- *
35
- * await responder.init();
36
- * await server.start();
37
- *
38
- * // Later...
39
- * await server.stop();
40
- * ```
41
- */
42
- import { loadConfig, loadConfigFromEnv } from './config.js';
43
- import { DEFAULT_PERSONA, DEFAULT_SKIP_LABELS, DEFAULT_SPAM_PATTERNS, DEFAULT_PORT, DEFAULT_LLM_MODEL, DEFAULT_MAX_RESPONSE_TOKENS, GITHUB_API_BASE, ANTHROPIC_API_URL, RESPONSE_TIMEOUT_MS, IDEMPOTENCY_TTL_MS, } from './constants.js';
44
- import { AutoResponder, createAutoResponder } from './responder.js';
45
- import { WebhookServer, createWebhookServer, registerShutdownHandlers, } from './server.js';
46
- // Re-export config utilities
47
- export { loadConfig, loadConfigFromEnv };
48
- // Re-export constants
49
- export { DEFAULT_PERSONA, DEFAULT_SKIP_LABELS, DEFAULT_SPAM_PATTERNS, DEFAULT_PORT, DEFAULT_LLM_MODEL, DEFAULT_MAX_RESPONSE_TOKENS, GITHUB_API_BASE, ANTHROPIC_API_URL, RESPONSE_TIMEOUT_MS, IDEMPOTENCY_TTL_MS, };
50
- // Re-export core classes and factories
51
- export { AutoResponder, createAutoResponder };
52
- export { WebhookServer, createWebhookServer, registerShutdownHandlers };
53
- /**
54
- * Create a GitHub auto-responder instance (server + responder).
55
- *
56
- * This factory function creates both the webhook server and the auto-responder,
57
- * but does NOT initialize or start them. You must call:
58
- * 1. `responder.init()` to initialize the idempotency store
59
- * 2. `server.start()` to begin listening for webhooks
60
- *
61
- * Use {@link startGitHubAutoResponder} if you want a fully initialized and
62
- * running instance in a single call.
63
- *
64
- * @param configOverrides - Partial configuration to override defaults/env vars
65
- * @returns Auto-responder instance with server, responder, and resolved config
66
- *
67
- * @example
68
- * ```typescript
69
- * const { server, responder, config } = createGitHubAutoResponder({
70
- * mode: 'draft', // Draft mode: log responses without posting
71
- * port: 3001,
72
- * });
73
- *
74
- * await responder.init();
75
- * await server.start();
76
- *
77
- * console.log(`Webhook server running on port ${config.port}`);
78
- * ```
79
- */
80
- export function createGitHubAutoResponder(configOverrides) {
81
- // Load config from environment + overrides
82
- const config = loadConfig(configOverrides);
83
- // Create responder
84
- const responder = createAutoResponder(config);
85
- // Create webhook server
86
- const server = createWebhookServer(responder, config);
87
- return { responder, server, config };
88
- }
89
- /**
90
- * Create and start a fully initialized GitHub auto-responder.
91
- *
92
- * This is the recommended high-level API for most use cases. It:
93
- * 1. Loads configuration from environment + overrides
94
- * 2. Creates the auto-responder and webhook server
95
- * 3. Initializes the responder (idempotency store)
96
- * 4. Starts the HTTP server
97
- * 5. Returns a handle with a convenient `stop()` function
98
- *
99
- * @param configOverrides - Partial configuration to override defaults/env vars
100
- * @returns Started instance with server, responder, config, and stop function
101
- *
102
- * @example
103
- * ```typescript
104
- * // Start in auto mode (post comments automatically)
105
- * const instance = await startGitHubAutoResponder({ mode: 'auto' });
106
- *
107
- * console.log(`Listening on port ${instance.config.port}`);
108
- *
109
- * // Later: gracefully shut down
110
- * await instance.stop();
111
- * ```
112
- *
113
- * @example
114
- * ```typescript
115
- * // Start in draft mode (log responses without posting)
116
- * const instance = await startGitHubAutoResponder({
117
- * mode: 'draft',
118
- * port: 3001,
119
- * persona: {
120
- * tone: 'friendly',
121
- * technicalDepth: 'intermediate',
122
- * language: 'en',
123
- * signatureEmoji: '🤖',
124
- * maintainerName: 'Bot Master',
125
- * },
126
- * });
127
- * ```
128
- */
129
- export async function startGitHubAutoResponder(configOverrides) {
130
- const { responder, server, config } = createGitHubAutoResponder(configOverrides);
131
- // Initialize responder (idempotency store)
132
- await responder.init();
133
- // Start HTTP server
134
- await server.start();
135
- // Return handle with convenient stop function
136
- return {
137
- responder,
138
- server,
139
- config,
140
- stop: async () => {
141
- await server.stop();
142
- },
143
- };
144
- }
145
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAwBH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAyBrB,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AAEzC,sBAAsB;AACtB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAEF,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;AAsBxE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,yBAAyB,CACvC,eAA8C;IAE9C,2CAA2C;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE3C,mBAAmB;IACnB,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAA8C;IAE9C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAEjF,2CAA2C;IAC3C,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAEvB,oBAAoB;IACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,8CAA8C;IAC9C,OAAO;QACL,SAAS;QACT,MAAM;QACN,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * GitHub Auto Responder - Persona & Prompt Building
3
- *
4
- * Constructs LLM prompts that encode maintainer persona and response guidelines.
5
- */
6
- import type { ResponseCategory, PersonaConfig, WebhookPayload } from './types.js';
7
- /**
8
- * Context for LLM prompt generation
9
- */
10
- export interface PromptContext {
11
- /** System prompt defining persona and guidelines */
12
- system: string;
13
- /** User prompt with issue/PR context */
14
- user: string;
15
- }
16
- /**
17
- * Builds the system prompt encoding maintainer persona and response guidelines.
18
- *
19
- * @param persona - Persona configuration
20
- * @returns System prompt string
21
- */
22
- export declare function buildSystemPrompt(persona: PersonaConfig): string;
23
- /**
24
- * Builds the user prompt with issue/PR context.
25
- *
26
- * @param category - Classified response category
27
- * @param payload - GitHub webhook payload
28
- * @returns User prompt string
29
- */
30
- export declare function buildUserPrompt(category: ResponseCategory, payload: WebhookPayload): string;
31
- /**
32
- * Builds complete prompt context (system + user prompts).
33
- *
34
- * @param persona - Persona configuration
35
- * @param category - Response category
36
- * @param payload - GitHub webhook payload
37
- * @returns Complete prompt context
38
- */
39
- export declare function buildPrompt(persona: PersonaConfig, category: ResponseCategory, payload: WebhookPayload): PromptContext;
40
- //# sourceMappingURL=persona.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/persona.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CA4ChE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,cAAc,GACtB,MAAM,CA8BR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,cAAc,GACtB,aAAa,CAKf"}
@@ -1,99 +0,0 @@
1
- /**
2
- * GitHub Auto Responder - Persona & Prompt Building
3
- *
4
- * Constructs LLM prompts that encode maintainer persona and response guidelines.
5
- */
6
- /**
7
- * Builds the system prompt encoding maintainer persona and response guidelines.
8
- *
9
- * @param persona - Persona configuration
10
- * @returns System prompt string
11
- */
12
- export function buildSystemPrompt(persona) {
13
- const toneDescriptions = {
14
- formal: 'professional and formal',
15
- friendly: 'warm and approachable',
16
- technical: 'direct and technical',
17
- casual: 'relaxed and conversational',
18
- direct: 'straightforward and to the point',
19
- };
20
- const depthDescriptions = {
21
- beginner: 'accessible to beginners with clear explanations',
22
- intermediate: 'assuming some technical knowledge',
23
- expert: 'technical and detailed for experienced developers',
24
- high: 'highly technical with advanced details',
25
- };
26
- const languageInstructions = {
27
- en: 'Respond in English only.',
28
- 'ko-mix': 'You may use a mix of Korean and English. Use Korean for friendliness and English for technical terms.',
29
- };
30
- return `You are responding on behalf of ${persona.maintainerName}, maintainer of oh-my-claudecode, a multi-agent orchestration system for Claude Code.
31
-
32
- **Tone & Style:**
33
- - Be ${toneDescriptions[persona.tone]}
34
- - Make responses ${depthDescriptions[persona.technicalDepth]}
35
- - ${languageInstructions[persona.language]}
36
- - Use the emoji ${persona.signatureEmoji} once at the start of your response
37
- - Keep responses concise: 150-200 words maximum
38
-
39
- **Response Guidelines:**
40
- - Be friendly but professional
41
- - Acknowledge the contribution or concern
42
- - Ask clarifying questions if information is missing
43
- - For bug reports: request reproduction steps, environment details, logs
44
- - For feature requests: ask about use cases, priority, alternatives considered
45
- - For pull requests: note what you'll look for in review (tests, docs, breaking changes)
46
- - For questions: point to documentation first if available, then provide guidance
47
-
48
- **Important:**
49
- - Never commit to timelines or features without verification
50
- - Be honest about limitations or current project status
51
- - Thank contributors for their time and effort`;
52
- }
53
- /**
54
- * Builds the user prompt with issue/PR context.
55
- *
56
- * @param category - Classified response category
57
- * @param payload - GitHub webhook payload
58
- * @returns User prompt string
59
- */
60
- export function buildUserPrompt(category, payload) {
61
- const isIssue = 'issue' in payload;
62
- const item = isIssue
63
- ? payload.issue
64
- : payload.pull_request;
65
- const eventType = isIssue ? 'Issue' : 'Pull Request';
66
- const title = item.title;
67
- const body = item.body || 'No description provided';
68
- const labels = item.labels.map((l) => l.name).join(', ') || 'None';
69
- const author = item.user.login;
70
- let contextParts = [
71
- `**Event Type:** ${eventType}`,
72
- `**Category:** ${category}`,
73
- `**Title:** ${title}`,
74
- `**Body:**\n${body}`,
75
- `**Labels:** ${labels}`,
76
- `**Author:** @${author}`,
77
- ];
78
- // Add PR-specific context
79
- if (!isIssue) {
80
- const pr = item;
81
- contextParts.push(`**Changes:** +${pr.additions}/-${pr.deletions} in ${pr.changed_files} file(s)`);
82
- }
83
- return contextParts.join('\n\n');
84
- }
85
- /**
86
- * Builds complete prompt context (system + user prompts).
87
- *
88
- * @param persona - Persona configuration
89
- * @param category - Response category
90
- * @param payload - GitHub webhook payload
91
- * @returns Complete prompt context
92
- */
93
- export function buildPrompt(persona, category, payload) {
94
- return {
95
- system: buildSystemPrompt(persona),
96
- user: buildUserPrompt(category, payload),
97
- };
98
- }
99
- //# sourceMappingURL=persona.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/persona.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,MAAM,gBAAgB,GAAG;QACvB,MAAM,EAAE,yBAAyB;QACjC,QAAQ,EAAE,uBAAuB;QACjC,SAAS,EAAE,sBAAsB;QACjC,MAAM,EAAE,4BAA4B;QACpC,MAAM,EAAE,kCAAkC;KAC3C,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,QAAQ,EAAE,iDAAiD;QAC3D,YAAY,EAAE,mCAAmC;QACjD,MAAM,EAAE,mDAAmD;QAC3D,IAAI,EAAE,wCAAwC;KAC/C,CAAC;IAEF,MAAM,oBAAoB,GAAG;QAC3B,EAAE,EAAE,0BAA0B;QAC9B,QAAQ,EACN,uGAAuG;KAC1G,CAAC;IAEF,OAAO,mCAAmC,OAAO,CAAC,cAAc;;;OAG3D,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;mBAClB,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC;IACxD,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;kBACxB,OAAO,CAAC,cAAc;;;;;;;;;;;;;;;+CAeO,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAA0B,EAC1B,OAAuB;IAEvB,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAE,OAA8B,CAAC,KAAK;QACvC,CAAC,CAAE,OAA2B,CAAC,YAAY,CAAC;IAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,yBAAyB,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAE/B,IAAI,YAAY,GAAG;QACjB,mBAAmB,SAAS,EAAE;QAC9B,iBAAiB,QAAQ,EAAE;QAC3B,cAAc,KAAK,EAAE;QACrB,cAAc,IAAI,EAAE;QACpB,eAAe,MAAM,EAAE;QACvB,gBAAgB,MAAM,EAAE;KACzB,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,IAAuC,CAAC;QACnD,YAAY,CAAC,IAAI,CACf,iBAAiB,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,aAAa,UAAU,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,OAAsB,EACtB,QAA0B,EAC1B,OAAuB;IAEvB,OAAO;QACL,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAClC,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC;KACzC,CAAC;AACJ,CAAC"}