oh-my-claude-sisyphus 3.8.9 → 3.8.11

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 (456) 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__/load-agent-prompt.test.d.ts +2 -0
  15. package/dist/__tests__/load-agent-prompt.test.d.ts.map +1 -0
  16. package/dist/__tests__/load-agent-prompt.test.js +68 -0
  17. package/dist/__tests__/load-agent-prompt.test.js.map +1 -0
  18. package/dist/__tests__/model-routing.test.js +5 -34
  19. package/dist/__tests__/model-routing.test.js.map +1 -1
  20. package/dist/agents/analyst.d.ts.map +1 -1
  21. package/dist/agents/analyst.js +2 -77
  22. package/dist/agents/analyst.js.map +1 -1
  23. package/dist/agents/architect.d.ts.map +1 -1
  24. package/dist/agents/architect.js +3 -148
  25. package/dist/agents/architect.js.map +1 -1
  26. package/dist/agents/coordinator-deprecated.d.ts +18 -0
  27. package/dist/agents/coordinator-deprecated.d.ts.map +1 -0
  28. package/dist/agents/coordinator-deprecated.js +34 -0
  29. package/dist/agents/coordinator-deprecated.js.map +1 -0
  30. package/dist/agents/critic.d.ts.map +1 -1
  31. package/dist/agents/critic.js +2 -90
  32. package/dist/agents/critic.js.map +1 -1
  33. package/dist/agents/definitions.d.ts +2 -0
  34. package/dist/agents/definitions.d.ts.map +1 -1
  35. package/dist/agents/definitions.js +3 -32
  36. package/dist/agents/definitions.js.map +1 -1
  37. package/dist/agents/designer.d.ts.map +1 -1
  38. package/dist/agents/designer.js +2 -73
  39. package/dist/agents/designer.js.map +1 -1
  40. package/dist/agents/executor.d.ts +1 -0
  41. package/dist/agents/executor.d.ts.map +1 -1
  42. package/dist/agents/executor.js +3 -56
  43. package/dist/agents/executor.js.map +1 -1
  44. package/dist/agents/explore.d.ts.map +1 -1
  45. package/dist/agents/explore.js +2 -64
  46. package/dist/agents/explore.js.map +1 -1
  47. package/dist/agents/index.d.ts +4 -3
  48. package/dist/agents/index.d.ts.map +1 -1
  49. package/dist/agents/index.js +6 -3
  50. package/dist/agents/index.js.map +1 -1
  51. package/dist/agents/planner.d.ts.map +1 -1
  52. package/dist/agents/planner.js +2 -157
  53. package/dist/agents/planner.js.map +1 -1
  54. package/dist/agents/qa-tester.d.ts.map +1 -1
  55. package/dist/agents/qa-tester.js +2 -324
  56. package/dist/agents/qa-tester.js.map +1 -1
  57. package/dist/agents/researcher.d.ts.map +1 -1
  58. package/dist/agents/researcher.js +2 -65
  59. package/dist/agents/researcher.js.map +1 -1
  60. package/dist/agents/scientist.d.ts.map +1 -1
  61. package/dist/agents/scientist.js +2 -293
  62. package/dist/agents/scientist.js.map +1 -1
  63. package/dist/agents/utils.d.ts +7 -0
  64. package/dist/agents/utils.d.ts.map +1 -1
  65. package/dist/agents/utils.js +50 -0
  66. package/dist/agents/utils.js.map +1 -1
  67. package/dist/agents/vision.d.ts.map +1 -1
  68. package/dist/agents/vision.js +2 -32
  69. package/dist/agents/vision.js.map +1 -1
  70. package/dist/agents/writer.d.ts.map +1 -1
  71. package/dist/agents/writer.js +2 -171
  72. package/dist/agents/writer.js.map +1 -1
  73. package/dist/cli/analytics.js +0 -0
  74. package/dist/cli/index.js +0 -0
  75. package/dist/features/model-routing/index.d.ts +1 -1
  76. package/dist/features/model-routing/index.d.ts.map +1 -1
  77. package/dist/features/model-routing/index.js +1 -1
  78. package/dist/features/model-routing/index.js.map +1 -1
  79. package/dist/features/model-routing/router.d.ts +1 -15
  80. package/dist/features/model-routing/router.d.ts.map +1 -1
  81. package/dist/features/model-routing/router.js +2 -33
  82. package/dist/features/model-routing/router.js.map +1 -1
  83. package/dist/features/model-routing/rules.d.ts.map +1 -1
  84. package/dist/features/model-routing/rules.js +0 -8
  85. package/dist/features/model-routing/rules.js.map +1 -1
  86. package/dist/features/model-routing/types.d.ts +1 -2
  87. package/dist/features/model-routing/types.d.ts.map +1 -1
  88. package/dist/features/model-routing/types.js +2 -6
  89. package/dist/features/model-routing/types.js.map +1 -1
  90. package/dist/features/task-decomposer/index.d.ts +1 -1
  91. package/dist/features/task-decomposer/index.d.ts.map +1 -1
  92. package/dist/features/task-decomposer/index.js +5 -8
  93. package/dist/features/task-decomposer/index.js.map +1 -1
  94. package/dist/features/task-decomposer/types.d.ts +4 -4
  95. package/dist/features/task-decomposer/types.d.ts.map +1 -1
  96. package/dist/hooks/bridge.d.ts.map +1 -1
  97. package/dist/hooks/bridge.js +56 -49
  98. package/dist/hooks/bridge.js.map +1 -1
  99. package/dist/hooks/keyword-detector/__tests__/index.test.js +89 -1
  100. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
  101. package/dist/hooks/keyword-detector/index.d.ts +5 -1
  102. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  103. package/dist/hooks/keyword-detector/index.js +32 -11
  104. package/dist/hooks/keyword-detector/index.js.map +1 -1
  105. package/dist/hooks/ultrapilot/decomposer.d.ts +1 -1
  106. package/dist/hooks/ultrapilot/decomposer.js +2 -2
  107. package/dist/index.d.ts +1 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +4 -2
  110. package/dist/index.js.map +1 -1
  111. package/docs/CLAUDE.md +44 -4
  112. package/docs/FEATURES.md +1 -1
  113. package/docs/MIGRATION.md +5 -5
  114. package/docs/REFERENCE.md +6 -2
  115. package/package.json +1 -1
  116. package/scripts/keyword-detector.mjs +140 -59
  117. package/skills/help/SKILL.md +1 -1
  118. package/skills/omc-setup/SKILL.md +1 -1
  119. package/templates/hooks/keyword-detector.mjs +280 -118
  120. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  121. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  122. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  123. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  124. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  125. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  126. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  127. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  128. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  129. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  130. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  131. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  132. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  133. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  134. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  135. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  136. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  137. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  138. package/dist/__tests__/learned-skills/config.test.js +0 -37
  139. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  140. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  141. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  142. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  143. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  144. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  145. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  146. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  147. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  148. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  149. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  150. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  151. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  152. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  153. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  154. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  155. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  156. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  157. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  158. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  159. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  160. package/dist/agents/codex-agents.d.ts +0 -20
  161. package/dist/agents/codex-agents.d.ts.map +0 -1
  162. package/dist/agents/codex-agents.js +0 -36
  163. package/dist/agents/codex-agents.js.map +0 -1
  164. package/dist/agents/coordinator.d.ts +0 -11
  165. package/dist/agents/coordinator.d.ts.map +0 -1
  166. package/dist/agents/coordinator.js +0 -115
  167. package/dist/agents/coordinator.js.map +0 -1
  168. package/dist/agents/document-writer.d.ts +0 -11
  169. package/dist/agents/document-writer.d.ts.map +0 -1
  170. package/dist/agents/document-writer.js +0 -209
  171. package/dist/agents/document-writer.js.map +0 -1
  172. package/dist/agents/frontend-engineer.d.ts +0 -11
  173. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  174. package/dist/agents/frontend-engineer.js +0 -115
  175. package/dist/agents/frontend-engineer.js.map +0 -1
  176. package/dist/agents/librarian.d.ts +0 -12
  177. package/dist/agents/librarian.d.ts.map +0 -1
  178. package/dist/agents/librarian.js +0 -103
  179. package/dist/agents/librarian.js.map +0 -1
  180. package/dist/agents/metis.d.ts +0 -12
  181. package/dist/agents/metis.d.ts.map +0 -1
  182. package/dist/agents/metis.js +0 -117
  183. package/dist/agents/metis.js.map +0 -1
  184. package/dist/agents/momus.d.ts +0 -12
  185. package/dist/agents/momus.d.ts.map +0 -1
  186. package/dist/agents/momus.js +0 -128
  187. package/dist/agents/momus.js.map +0 -1
  188. package/dist/agents/multimodal-looker.d.ts +0 -11
  189. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  190. package/dist/agents/multimodal-looker.js +0 -70
  191. package/dist/agents/multimodal-looker.js.map +0 -1
  192. package/dist/agents/oracle.d.ts +0 -13
  193. package/dist/agents/oracle.d.ts.map +0 -1
  194. package/dist/agents/oracle.js +0 -191
  195. package/dist/agents/oracle.js.map +0 -1
  196. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  197. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  198. package/dist/agents/orchestrator-sisyphus.js +0 -115
  199. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  200. package/dist/agents/prometheus.d.ts +0 -12
  201. package/dist/agents/prometheus.d.ts.map +0 -1
  202. package/dist/agents/prometheus.js +0 -195
  203. package/dist/agents/prometheus.js.map +0 -1
  204. package/dist/agents/sisyphus-junior.d.ts +0 -12
  205. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  206. package/dist/agents/sisyphus-junior.js +0 -93
  207. package/dist/agents/sisyphus-junior.js.map +0 -1
  208. package/dist/cli/components/CostDashboard.d.ts +0 -15
  209. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  210. package/dist/cli/components/CostDashboard.js +0 -15
  211. package/dist/cli/components/CostDashboard.js.map +0 -1
  212. package/dist/cli/components/LiveStats.d.ts +0 -16
  213. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  214. package/dist/cli/components/LiveStats.js +0 -16
  215. package/dist/cli/components/LiveStats.js.map +0 -1
  216. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  217. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  218. package/dist/cli/components/SessionBrowser.js +0 -14
  219. package/dist/cli/components/SessionBrowser.js.map +0 -1
  220. package/dist/cli/tui.d.ts +0 -21
  221. package/dist/cli/tui.d.ts.map +0 -1
  222. package/dist/cli/tui.js +0 -21
  223. package/dist/cli/tui.js.map +0 -1
  224. package/dist/hooks/autopilot/signals.d.ts +0 -20
  225. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  226. package/dist/hooks/autopilot/signals.js +0 -75
  227. package/dist/hooks/autopilot/signals.js.map +0 -1
  228. package/dist/hooks/autopilot/summary.d.ts +0 -27
  229. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  230. package/dist/hooks/autopilot/summary.js +0 -160
  231. package/dist/hooks/autopilot/summary.js.map +0 -1
  232. package/dist/hooks/autopilot/transition.d.ts +0 -39
  233. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  234. package/dist/hooks/autopilot/transition.js +0 -216
  235. package/dist/hooks/autopilot/transition.js.map +0 -1
  236. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  237. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  238. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  239. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  240. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  241. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  242. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  243. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  244. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  245. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  246. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  247. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  248. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  249. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  250. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  251. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  252. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  253. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  254. package/dist/hooks/edit-error-recovery/index.js +0 -89
  255. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  256. package/dist/hooks/github-auto-responder/classifier.d.ts +0 -43
  257. package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
  258. package/dist/hooks/github-auto-responder/classifier.js +0 -150
  259. package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
  260. package/dist/hooks/github-auto-responder/config.d.ts +0 -109
  261. package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
  262. package/dist/hooks/github-auto-responder/config.js +0 -69
  263. package/dist/hooks/github-auto-responder/config.js.map +0 -1
  264. package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
  265. package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
  266. package/dist/hooks/github-auto-responder/constants.js +0 -60
  267. package/dist/hooks/github-auto-responder/constants.js.map +0 -1
  268. package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
  269. package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
  270. package/dist/hooks/github-auto-responder/filters.js +0 -174
  271. package/dist/hooks/github-auto-responder/filters.js.map +0 -1
  272. package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
  273. package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
  274. package/dist/hooks/github-auto-responder/github-client.js +0 -128
  275. package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
  276. package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
  277. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
  278. package/dist/hooks/github-auto-responder/idempotency.js +0 -147
  279. package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
  280. package/dist/hooks/github-auto-responder/index.d.ts +0 -140
  281. package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
  282. package/dist/hooks/github-auto-responder/index.js +0 -145
  283. package/dist/hooks/github-auto-responder/index.js.map +0 -1
  284. package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
  285. package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
  286. package/dist/hooks/github-auto-responder/persona.js +0 -99
  287. package/dist/hooks/github-auto-responder/persona.js.map +0 -1
  288. package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
  289. package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
  290. package/dist/hooks/github-auto-responder/responder.js +0 -264
  291. package/dist/hooks/github-auto-responder/responder.js.map +0 -1
  292. package/dist/hooks/github-auto-responder/server.d.ts +0 -140
  293. package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
  294. package/dist/hooks/github-auto-responder/server.js +0 -301
  295. package/dist/hooks/github-auto-responder/server.js.map +0 -1
  296. package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
  297. package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
  298. package/dist/hooks/github-auto-responder/signature.js +0 -79
  299. package/dist/hooks/github-auto-responder/signature.js.map +0 -1
  300. package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
  301. package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
  302. package/dist/hooks/github-auto-responder/templates.js +0 -93
  303. package/dist/hooks/github-auto-responder/templates.js.map +0 -1
  304. package/dist/hooks/github-auto-responder/types.d.ts +0 -246
  305. package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
  306. package/dist/hooks/github-auto-responder/types.js +0 -7
  307. package/dist/hooks/github-auto-responder/types.js.map +0 -1
  308. package/dist/hooks/learned-skills/config.d.ts +0 -53
  309. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  310. package/dist/hooks/learned-skills/config.js +0 -103
  311. package/dist/hooks/learned-skills/config.js.map +0 -1
  312. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  313. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  314. package/dist/hooks/learned-skills/constants.js +0 -26
  315. package/dist/hooks/learned-skills/constants.js.map +0 -1
  316. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  317. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  318. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  319. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  320. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  321. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  322. package/dist/hooks/learned-skills/detector.js +0 -150
  323. package/dist/hooks/learned-skills/detector.js.map +0 -1
  324. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  325. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  326. package/dist/hooks/learned-skills/finder.js +0 -117
  327. package/dist/hooks/learned-skills/finder.js.map +0 -1
  328. package/dist/hooks/learned-skills/index.d.ts +0 -62
  329. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  330. package/dist/hooks/learned-skills/index.js +0 -137
  331. package/dist/hooks/learned-skills/index.js.map +0 -1
  332. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  333. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  334. package/dist/hooks/learned-skills/loader.js +0 -107
  335. package/dist/hooks/learned-skills/loader.js.map +0 -1
  336. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  337. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  338. package/dist/hooks/learned-skills/parser.js +0 -190
  339. package/dist/hooks/learned-skills/parser.js.map +0 -1
  340. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  341. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  342. package/dist/hooks/learned-skills/promotion.js +0 -87
  343. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  344. package/dist/hooks/learned-skills/types.d.ts +0 -109
  345. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  346. package/dist/hooks/learned-skills/types.js +0 -8
  347. package/dist/hooks/learned-skills/types.js.map +0 -1
  348. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  349. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  350. package/dist/hooks/learned-skills/validator.js +0 -87
  351. package/dist/hooks/learned-skills/validator.js.map +0 -1
  352. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  353. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  354. package/dist/hooks/learned-skills/writer.js +0 -126
  355. package/dist/hooks/learned-skills/writer.js.map +0 -1
  356. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  357. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  358. package/dist/hooks/mnemosyne/config.js +0 -103
  359. package/dist/hooks/mnemosyne/config.js.map +0 -1
  360. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  361. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  362. package/dist/hooks/mnemosyne/constants.js +0 -26
  363. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  364. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  365. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  366. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  367. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  368. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  369. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  370. package/dist/hooks/mnemosyne/detector.js +0 -150
  371. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  372. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  373. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  374. package/dist/hooks/mnemosyne/finder.js +0 -117
  375. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  376. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  377. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  378. package/dist/hooks/mnemosyne/index.js +0 -137
  379. package/dist/hooks/mnemosyne/index.js.map +0 -1
  380. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  381. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  382. package/dist/hooks/mnemosyne/loader.js +0 -113
  383. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  384. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  385. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  386. package/dist/hooks/mnemosyne/parser.js +0 -190
  387. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  388. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  389. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  390. package/dist/hooks/mnemosyne/promotion.js +0 -87
  391. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  392. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  393. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  394. package/dist/hooks/mnemosyne/types.js +0 -8
  395. package/dist/hooks/mnemosyne/types.js.map +0 -1
  396. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  397. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  398. package/dist/hooks/mnemosyne/validator.js +0 -87
  399. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  400. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  401. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  402. package/dist/hooks/mnemosyne/writer.js +0 -126
  403. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  404. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  405. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  406. package/dist/hooks/ralph-loop/index.js +0 -322
  407. package/dist/hooks/ralph-loop/index.js.map +0 -1
  408. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  409. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  410. package/dist/hooks/ralph-prd/index.js +0 -310
  411. package/dist/hooks/ralph-prd/index.js.map +0 -1
  412. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  413. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  414. package/dist/hooks/ralph-progress/index.js +0 -408
  415. package/dist/hooks/ralph-progress/index.js.map +0 -1
  416. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  417. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  418. package/dist/hooks/ralph-verifier/index.js +0 -223
  419. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  420. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  421. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  422. package/dist/hooks/session-recovery/constants.js +0 -78
  423. package/dist/hooks/session-recovery/constants.js.map +0 -1
  424. package/dist/hooks/session-recovery/index.d.ts +0 -53
  425. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  426. package/dist/hooks/session-recovery/index.js +0 -321
  427. package/dist/hooks/session-recovery/index.js.map +0 -1
  428. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  429. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  430. package/dist/hooks/session-recovery/storage.js +0 -383
  431. package/dist/hooks/session-recovery/storage.js.map +0 -1
  432. package/dist/hooks/session-recovery/types.d.ts +0 -145
  433. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  434. package/dist/hooks/session-recovery/types.js +0 -8
  435. package/dist/hooks/session-recovery/types.js.map +0 -1
  436. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  437. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  438. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  439. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  440. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  441. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  442. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  443. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  444. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  445. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  446. package/dist/hooks/ultraqa-loop/index.js +0 -216
  447. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  448. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  449. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  450. package/dist/hooks/ultrawork-state/index.js +0 -208
  451. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  452. package/dist/hud/sisyphus-state.d.ts +0 -31
  453. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  454. package/dist/hud/sisyphus-state.js +0 -163
  455. package/dist/hud/sisyphus-state.js.map +0 -1
  456. 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"}