oh-my-claude-sisyphus 3.7.6 → 3.7.8

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 (421) hide show
  1. package/agents/AGENTS.md +144 -0
  2. package/dist/__tests__/analytics/analytics-summary.test.d.ts +2 -0
  3. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +1 -0
  4. package/dist/__tests__/analytics/analytics-summary.test.js +267 -0
  5. package/dist/__tests__/analytics/analytics-summary.test.js.map +1 -0
  6. package/dist/__tests__/analytics/cost-estimator.test.d.ts +2 -0
  7. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +1 -0
  8. package/dist/__tests__/analytics/cost-estimator.test.js +212 -0
  9. package/dist/__tests__/analytics/cost-estimator.test.js.map +1 -0
  10. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
  11. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
  12. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
  13. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
  14. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +2 -0
  15. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +1 -0
  16. package/dist/__tests__/hud/auto-tracking.integration.test.js +12 -0
  17. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +1 -0
  18. package/dist/__tests__/learned-skills/config.test.d.ts +2 -0
  19. package/dist/__tests__/learned-skills/config.test.d.ts.map +1 -0
  20. package/dist/__tests__/learned-skills/config.test.js +37 -0
  21. package/dist/__tests__/learned-skills/config.test.js.map +1 -0
  22. package/dist/__tests__/learned-skills/detector.test.d.ts +2 -0
  23. package/dist/__tests__/learned-skills/detector.test.d.ts.map +1 -0
  24. package/dist/__tests__/learned-skills/detector.test.js +99 -0
  25. package/dist/__tests__/learned-skills/detector.test.js.map +1 -0
  26. package/dist/__tests__/learned-skills/finder.test.d.ts +2 -0
  27. package/dist/__tests__/learned-skills/finder.test.d.ts.map +1 -0
  28. package/dist/__tests__/learned-skills/finder.test.js +59 -0
  29. package/dist/__tests__/learned-skills/finder.test.js.map +1 -0
  30. package/dist/__tests__/learned-skills/loader.test.d.ts +2 -0
  31. package/dist/__tests__/learned-skills/loader.test.d.ts.map +1 -0
  32. package/dist/__tests__/learned-skills/loader.test.js +69 -0
  33. package/dist/__tests__/learned-skills/loader.test.js.map +1 -0
  34. package/dist/__tests__/learned-skills/parser.test.d.ts +2 -0
  35. package/dist/__tests__/learned-skills/parser.test.d.ts.map +1 -0
  36. package/dist/__tests__/learned-skills/parser.test.js +81 -0
  37. package/dist/__tests__/learned-skills/parser.test.js.map +1 -0
  38. package/dist/__tests__/learned-skills/validator.test.d.ts +2 -0
  39. package/dist/__tests__/learned-skills/validator.test.d.ts.map +1 -0
  40. package/dist/__tests__/learned-skills/validator.test.js +85 -0
  41. package/dist/__tests__/learned-skills/validator.test.js.map +1 -0
  42. package/dist/__tests__/omc-tools-server.test.d.ts +2 -0
  43. package/dist/__tests__/omc-tools-server.test.d.ts.map +1 -0
  44. package/dist/__tests__/omc-tools-server.test.js +52 -0
  45. package/dist/__tests__/omc-tools-server.test.js.map +1 -0
  46. package/dist/agents/architect.js +1 -1
  47. package/dist/agents/architect.js.map +1 -1
  48. package/dist/agents/codex-agents.d.ts +20 -0
  49. package/dist/agents/codex-agents.d.ts.map +1 -0
  50. package/dist/agents/codex-agents.js +36 -0
  51. package/dist/agents/codex-agents.js.map +1 -0
  52. package/dist/agents/definitions.js +13 -13
  53. package/dist/agents/definitions.js.map +1 -1
  54. package/dist/agents/document-writer.d.ts +11 -0
  55. package/dist/agents/document-writer.d.ts.map +1 -0
  56. package/dist/agents/document-writer.js +209 -0
  57. package/dist/agents/document-writer.js.map +1 -0
  58. package/dist/agents/executor.js +1 -1
  59. package/dist/agents/executor.js.map +1 -1
  60. package/dist/agents/explore.js +1 -1
  61. package/dist/agents/explore.js.map +1 -1
  62. package/dist/agents/frontend-engineer.d.ts +11 -0
  63. package/dist/agents/frontend-engineer.d.ts.map +1 -0
  64. package/dist/agents/frontend-engineer.js +115 -0
  65. package/dist/agents/frontend-engineer.js.map +1 -0
  66. package/dist/agents/librarian.d.ts +12 -0
  67. package/dist/agents/librarian.d.ts.map +1 -0
  68. package/dist/agents/librarian.js +103 -0
  69. package/dist/agents/librarian.js.map +1 -0
  70. package/dist/agents/metis.d.ts +12 -0
  71. package/dist/agents/metis.d.ts.map +1 -0
  72. package/dist/agents/metis.js +117 -0
  73. package/dist/agents/metis.js.map +1 -0
  74. package/dist/agents/momus.d.ts +12 -0
  75. package/dist/agents/momus.d.ts.map +1 -0
  76. package/dist/agents/momus.js +128 -0
  77. package/dist/agents/momus.js.map +1 -0
  78. package/dist/agents/multimodal-looker.d.ts +11 -0
  79. package/dist/agents/multimodal-looker.d.ts.map +1 -0
  80. package/dist/agents/multimodal-looker.js +70 -0
  81. package/dist/agents/multimodal-looker.js.map +1 -0
  82. package/dist/agents/oracle.d.ts +13 -0
  83. package/dist/agents/oracle.d.ts.map +1 -0
  84. package/dist/agents/oracle.js +191 -0
  85. package/dist/agents/oracle.js.map +1 -0
  86. package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
  87. package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
  88. package/dist/agents/orchestrator-sisyphus.js +115 -0
  89. package/dist/agents/orchestrator-sisyphus.js.map +1 -0
  90. package/dist/agents/prometheus.d.ts +12 -0
  91. package/dist/agents/prometheus.d.ts.map +1 -0
  92. package/dist/agents/prometheus.js +195 -0
  93. package/dist/agents/prometheus.js.map +1 -0
  94. package/dist/agents/qa-tester.js +1 -1
  95. package/dist/agents/qa-tester.js.map +1 -1
  96. package/dist/agents/sisyphus-junior.d.ts +12 -0
  97. package/dist/agents/sisyphus-junior.d.ts.map +1 -0
  98. package/dist/agents/sisyphus-junior.js +93 -0
  99. package/dist/agents/sisyphus-junior.js.map +1 -0
  100. package/dist/cli/analytics.js +0 -0
  101. package/dist/cli/components/CostDashboard.d.ts +15 -0
  102. package/dist/cli/components/CostDashboard.d.ts.map +1 -0
  103. package/dist/cli/components/CostDashboard.js +15 -0
  104. package/dist/cli/components/CostDashboard.js.map +1 -0
  105. package/dist/cli/components/LiveStats.d.ts +16 -0
  106. package/dist/cli/components/LiveStats.d.ts.map +1 -0
  107. package/dist/cli/components/LiveStats.js +16 -0
  108. package/dist/cli/components/LiveStats.js.map +1 -0
  109. package/dist/cli/components/SessionBrowser.d.ts +14 -0
  110. package/dist/cli/components/SessionBrowser.d.ts.map +1 -0
  111. package/dist/cli/components/SessionBrowser.js +14 -0
  112. package/dist/cli/components/SessionBrowser.js.map +1 -0
  113. package/dist/cli/index.js +0 -0
  114. package/dist/cli/tui.d.ts +21 -0
  115. package/dist/cli/tui.d.ts.map +1 -0
  116. package/dist/cli/tui.js +21 -0
  117. package/dist/cli/tui.js.map +1 -0
  118. package/dist/hooks/autopilot/signals.d.ts +20 -0
  119. package/dist/hooks/autopilot/signals.d.ts.map +1 -0
  120. package/dist/hooks/autopilot/signals.js +75 -0
  121. package/dist/hooks/autopilot/signals.js.map +1 -0
  122. package/dist/hooks/autopilot/summary.d.ts +27 -0
  123. package/dist/hooks/autopilot/summary.d.ts.map +1 -0
  124. package/dist/hooks/autopilot/summary.js +160 -0
  125. package/dist/hooks/autopilot/summary.js.map +1 -0
  126. package/dist/hooks/autopilot/transition.d.ts +39 -0
  127. package/dist/hooks/autopilot/transition.d.ts.map +1 -0
  128. package/dist/hooks/autopilot/transition.js +216 -0
  129. package/dist/hooks/autopilot/transition.js.map +1 -0
  130. package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
  131. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
  132. package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
  133. package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
  134. package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
  135. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
  136. package/dist/hooks/context-window-limit-recovery/index.js +201 -0
  137. package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
  138. package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
  139. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
  140. package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
  141. package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
  142. package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
  143. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
  144. package/dist/hooks/context-window-limit-recovery/types.js +34 -0
  145. package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
  146. package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
  147. package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
  148. package/dist/hooks/edit-error-recovery/index.js +89 -0
  149. package/dist/hooks/edit-error-recovery/index.js.map +1 -0
  150. package/dist/hooks/github-auto-responder/classifier.d.ts +43 -0
  151. package/dist/hooks/github-auto-responder/classifier.d.ts.map +1 -0
  152. package/dist/hooks/github-auto-responder/classifier.js +150 -0
  153. package/dist/hooks/github-auto-responder/classifier.js.map +1 -0
  154. package/dist/hooks/github-auto-responder/config.d.ts +109 -0
  155. package/dist/hooks/github-auto-responder/config.d.ts.map +1 -0
  156. package/dist/hooks/github-auto-responder/config.js +69 -0
  157. package/dist/hooks/github-auto-responder/config.js.map +1 -0
  158. package/dist/hooks/github-auto-responder/constants.d.ts +45 -0
  159. package/dist/hooks/github-auto-responder/constants.d.ts.map +1 -0
  160. package/dist/hooks/github-auto-responder/constants.js +60 -0
  161. package/dist/hooks/github-auto-responder/constants.js.map +1 -0
  162. package/dist/hooks/github-auto-responder/filters.d.ts +95 -0
  163. package/dist/hooks/github-auto-responder/filters.d.ts.map +1 -0
  164. package/dist/hooks/github-auto-responder/filters.js +174 -0
  165. package/dist/hooks/github-auto-responder/filters.js.map +1 -0
  166. package/dist/hooks/github-auto-responder/github-client.d.ts +65 -0
  167. package/dist/hooks/github-auto-responder/github-client.d.ts.map +1 -0
  168. package/dist/hooks/github-auto-responder/github-client.js +128 -0
  169. package/dist/hooks/github-auto-responder/github-client.js.map +1 -0
  170. package/dist/hooks/github-auto-responder/idempotency.d.ts +68 -0
  171. package/dist/hooks/github-auto-responder/idempotency.d.ts.map +1 -0
  172. package/dist/hooks/github-auto-responder/idempotency.js +147 -0
  173. package/dist/hooks/github-auto-responder/idempotency.js.map +1 -0
  174. package/dist/hooks/github-auto-responder/index.d.ts +140 -0
  175. package/dist/hooks/github-auto-responder/index.d.ts.map +1 -0
  176. package/dist/hooks/github-auto-responder/index.js +145 -0
  177. package/dist/hooks/github-auto-responder/index.js.map +1 -0
  178. package/dist/hooks/github-auto-responder/persona.d.ts +40 -0
  179. package/dist/hooks/github-auto-responder/persona.d.ts.map +1 -0
  180. package/dist/hooks/github-auto-responder/persona.js +99 -0
  181. package/dist/hooks/github-auto-responder/persona.js.map +1 -0
  182. package/dist/hooks/github-auto-responder/responder.d.ts +122 -0
  183. package/dist/hooks/github-auto-responder/responder.d.ts.map +1 -0
  184. package/dist/hooks/github-auto-responder/responder.js +264 -0
  185. package/dist/hooks/github-auto-responder/responder.js.map +1 -0
  186. package/dist/hooks/github-auto-responder/server.d.ts +140 -0
  187. package/dist/hooks/github-auto-responder/server.d.ts.map +1 -0
  188. package/dist/hooks/github-auto-responder/server.js +301 -0
  189. package/dist/hooks/github-auto-responder/server.js.map +1 -0
  190. package/dist/hooks/github-auto-responder/signature.d.ts +34 -0
  191. package/dist/hooks/github-auto-responder/signature.d.ts.map +1 -0
  192. package/dist/hooks/github-auto-responder/signature.js +79 -0
  193. package/dist/hooks/github-auto-responder/signature.js.map +1 -0
  194. package/dist/hooks/github-auto-responder/templates.d.ts +16 -0
  195. package/dist/hooks/github-auto-responder/templates.d.ts.map +1 -0
  196. package/dist/hooks/github-auto-responder/templates.js +93 -0
  197. package/dist/hooks/github-auto-responder/templates.js.map +1 -0
  198. package/dist/hooks/github-auto-responder/types.d.ts +246 -0
  199. package/dist/hooks/github-auto-responder/types.d.ts.map +1 -0
  200. package/dist/hooks/github-auto-responder/types.js +7 -0
  201. package/dist/hooks/github-auto-responder/types.js.map +1 -0
  202. package/dist/hooks/learned-skills/config.d.ts +53 -0
  203. package/dist/hooks/learned-skills/config.d.ts.map +1 -0
  204. package/dist/hooks/learned-skills/config.js +103 -0
  205. package/dist/hooks/learned-skills/config.js.map +1 -0
  206. package/dist/hooks/learned-skills/constants.d.ts +24 -0
  207. package/dist/hooks/learned-skills/constants.d.ts.map +1 -0
  208. package/dist/hooks/learned-skills/constants.js +26 -0
  209. package/dist/hooks/learned-skills/constants.js.map +1 -0
  210. package/dist/hooks/learned-skills/detection-hook.d.ts +39 -0
  211. package/dist/hooks/learned-skills/detection-hook.d.ts.map +1 -0
  212. package/dist/hooks/learned-skills/detection-hook.js +83 -0
  213. package/dist/hooks/learned-skills/detection-hook.js.map +1 -0
  214. package/dist/hooks/learned-skills/detector.d.ts +30 -0
  215. package/dist/hooks/learned-skills/detector.d.ts.map +1 -0
  216. package/dist/hooks/learned-skills/detector.js +150 -0
  217. package/dist/hooks/learned-skills/detector.js.map +1 -0
  218. package/dist/hooks/learned-skills/finder.d.ts +21 -0
  219. package/dist/hooks/learned-skills/finder.d.ts.map +1 -0
  220. package/dist/hooks/learned-skills/finder.js +117 -0
  221. package/dist/hooks/learned-skills/finder.js.map +1 -0
  222. package/dist/hooks/learned-skills/index.d.ts +62 -0
  223. package/dist/hooks/learned-skills/index.d.ts.map +1 -0
  224. package/dist/hooks/learned-skills/index.js +137 -0
  225. package/dist/hooks/learned-skills/index.js.map +1 -0
  226. package/dist/hooks/learned-skills/loader.d.ts +20 -0
  227. package/dist/hooks/learned-skills/loader.d.ts.map +1 -0
  228. package/dist/hooks/learned-skills/loader.js +107 -0
  229. package/dist/hooks/learned-skills/loader.js.map +1 -0
  230. package/dist/hooks/learned-skills/parser.d.ts +21 -0
  231. package/dist/hooks/learned-skills/parser.d.ts.map +1 -0
  232. package/dist/hooks/learned-skills/parser.js +190 -0
  233. package/dist/hooks/learned-skills/parser.js.map +1 -0
  234. package/dist/hooks/learned-skills/promotion.d.ts +29 -0
  235. package/dist/hooks/learned-skills/promotion.d.ts.map +1 -0
  236. package/dist/hooks/learned-skills/promotion.js +87 -0
  237. package/dist/hooks/learned-skills/promotion.js.map +1 -0
  238. package/dist/hooks/learned-skills/types.d.ts +109 -0
  239. package/dist/hooks/learned-skills/types.d.ts.map +1 -0
  240. package/dist/hooks/learned-skills/types.js +8 -0
  241. package/dist/hooks/learned-skills/types.js.map +1 -0
  242. package/dist/hooks/learned-skills/validator.d.ts +15 -0
  243. package/dist/hooks/learned-skills/validator.d.ts.map +1 -0
  244. package/dist/hooks/learned-skills/validator.js +87 -0
  245. package/dist/hooks/learned-skills/validator.js.map +1 -0
  246. package/dist/hooks/learned-skills/writer.d.ts +27 -0
  247. package/dist/hooks/learned-skills/writer.d.ts.map +1 -0
  248. package/dist/hooks/learned-skills/writer.js +126 -0
  249. package/dist/hooks/learned-skills/writer.js.map +1 -0
  250. package/dist/hooks/mnemosyne/config.d.ts +53 -0
  251. package/dist/hooks/mnemosyne/config.d.ts.map +1 -0
  252. package/dist/hooks/mnemosyne/config.js +103 -0
  253. package/dist/hooks/mnemosyne/config.js.map +1 -0
  254. package/dist/hooks/mnemosyne/constants.d.ts +24 -0
  255. package/dist/hooks/mnemosyne/constants.d.ts.map +1 -0
  256. package/dist/hooks/mnemosyne/constants.js +26 -0
  257. package/dist/hooks/mnemosyne/constants.js.map +1 -0
  258. package/dist/hooks/mnemosyne/detection-hook.d.ts +39 -0
  259. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +1 -0
  260. package/dist/hooks/mnemosyne/detection-hook.js +83 -0
  261. package/dist/hooks/mnemosyne/detection-hook.js.map +1 -0
  262. package/dist/hooks/mnemosyne/detector.d.ts +30 -0
  263. package/dist/hooks/mnemosyne/detector.d.ts.map +1 -0
  264. package/dist/hooks/mnemosyne/detector.js +150 -0
  265. package/dist/hooks/mnemosyne/detector.js.map +1 -0
  266. package/dist/hooks/mnemosyne/finder.d.ts +21 -0
  267. package/dist/hooks/mnemosyne/finder.d.ts.map +1 -0
  268. package/dist/hooks/mnemosyne/finder.js +117 -0
  269. package/dist/hooks/mnemosyne/finder.js.map +1 -0
  270. package/dist/hooks/mnemosyne/index.d.ts +62 -0
  271. package/dist/hooks/mnemosyne/index.d.ts.map +1 -0
  272. package/dist/hooks/mnemosyne/index.js +137 -0
  273. package/dist/hooks/mnemosyne/index.js.map +1 -0
  274. package/dist/hooks/mnemosyne/loader.d.ts +20 -0
  275. package/dist/hooks/mnemosyne/loader.d.ts.map +1 -0
  276. package/dist/hooks/mnemosyne/loader.js +113 -0
  277. package/dist/hooks/mnemosyne/loader.js.map +1 -0
  278. package/dist/hooks/mnemosyne/parser.d.ts +21 -0
  279. package/dist/hooks/mnemosyne/parser.d.ts.map +1 -0
  280. package/dist/hooks/mnemosyne/parser.js +190 -0
  281. package/dist/hooks/mnemosyne/parser.js.map +1 -0
  282. package/dist/hooks/mnemosyne/promotion.d.ts +29 -0
  283. package/dist/hooks/mnemosyne/promotion.d.ts.map +1 -0
  284. package/dist/hooks/mnemosyne/promotion.js +87 -0
  285. package/dist/hooks/mnemosyne/promotion.js.map +1 -0
  286. package/dist/hooks/mnemosyne/types.d.ts +109 -0
  287. package/dist/hooks/mnemosyne/types.d.ts.map +1 -0
  288. package/dist/hooks/mnemosyne/types.js +8 -0
  289. package/dist/hooks/mnemosyne/types.js.map +1 -0
  290. package/dist/hooks/mnemosyne/validator.d.ts +15 -0
  291. package/dist/hooks/mnemosyne/validator.d.ts.map +1 -0
  292. package/dist/hooks/mnemosyne/validator.js +87 -0
  293. package/dist/hooks/mnemosyne/validator.js.map +1 -0
  294. package/dist/hooks/mnemosyne/writer.d.ts +27 -0
  295. package/dist/hooks/mnemosyne/writer.d.ts.map +1 -0
  296. package/dist/hooks/mnemosyne/writer.js +126 -0
  297. package/dist/hooks/mnemosyne/writer.js.map +1 -0
  298. package/dist/hooks/ralph-loop/index.d.ts +116 -0
  299. package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
  300. package/dist/hooks/ralph-loop/index.js +322 -0
  301. package/dist/hooks/ralph-loop/index.js.map +1 -0
  302. package/dist/hooks/ralph-prd/index.d.ts +130 -0
  303. package/dist/hooks/ralph-prd/index.d.ts.map +1 -0
  304. package/dist/hooks/ralph-prd/index.js +310 -0
  305. package/dist/hooks/ralph-prd/index.js.map +1 -0
  306. package/dist/hooks/ralph-progress/index.d.ts +102 -0
  307. package/dist/hooks/ralph-progress/index.d.ts.map +1 -0
  308. package/dist/hooks/ralph-progress/index.js +408 -0
  309. package/dist/hooks/ralph-progress/index.js.map +1 -0
  310. package/dist/hooks/ralph-verifier/index.d.ts +72 -0
  311. package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
  312. package/dist/hooks/ralph-verifier/index.js +223 -0
  313. package/dist/hooks/ralph-verifier/index.js.map +1 -0
  314. package/dist/hooks/session-recovery/constants.d.ts +56 -0
  315. package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
  316. package/dist/hooks/session-recovery/constants.js +78 -0
  317. package/dist/hooks/session-recovery/constants.js.map +1 -0
  318. package/dist/hooks/session-recovery/index.d.ts +53 -0
  319. package/dist/hooks/session-recovery/index.d.ts.map +1 -0
  320. package/dist/hooks/session-recovery/index.js +321 -0
  321. package/dist/hooks/session-recovery/index.js.map +1 -0
  322. package/dist/hooks/session-recovery/storage.d.ts +76 -0
  323. package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
  324. package/dist/hooks/session-recovery/storage.js +383 -0
  325. package/dist/hooks/session-recovery/storage.js.map +1 -0
  326. package/dist/hooks/session-recovery/types.d.ts +145 -0
  327. package/dist/hooks/session-recovery/types.d.ts.map +1 -0
  328. package/dist/hooks/session-recovery/types.js +8 -0
  329. package/dist/hooks/session-recovery/types.js.map +1 -0
  330. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
  331. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
  332. package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
  333. package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
  334. package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
  335. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
  336. package/dist/hooks/sisyphus-orchestrator/index.js +309 -0
  337. package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
  338. package/dist/hooks/ultraqa-loop/index.d.ts +94 -0
  339. package/dist/hooks/ultraqa-loop/index.d.ts.map +1 -0
  340. package/dist/hooks/ultraqa-loop/index.js +216 -0
  341. package/dist/hooks/ultraqa-loop/index.js.map +1 -0
  342. package/dist/hooks/ultrawork-state/index.d.ts +62 -0
  343. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
  344. package/dist/hooks/ultrawork-state/index.js +208 -0
  345. package/dist/hooks/ultrawork-state/index.js.map +1 -0
  346. package/dist/hud/sisyphus-state.d.ts +31 -0
  347. package/dist/hud/sisyphus-state.d.ts.map +1 -0
  348. package/dist/hud/sisyphus-state.js +163 -0
  349. package/dist/hud/sisyphus-state.js.map +1 -0
  350. package/dist/index.d.ts +1 -0
  351. package/dist/index.d.ts.map +1 -1
  352. package/dist/index.js +15 -3
  353. package/dist/index.js.map +1 -1
  354. package/dist/mcp/index.d.ts +1 -0
  355. package/dist/mcp/index.d.ts.map +1 -1
  356. package/dist/mcp/index.js +2 -0
  357. package/dist/mcp/index.js.map +1 -1
  358. package/dist/mcp/omc-tools-server.d.ts +25 -0
  359. package/dist/mcp/omc-tools-server.d.ts.map +1 -0
  360. package/dist/mcp/omc-tools-server.js +49 -0
  361. package/dist/mcp/omc-tools-server.js.map +1 -0
  362. package/dist/tools/ast-tools.d.ts.map +1 -1
  363. package/dist/tools/ast-tools.js +19 -39
  364. package/dist/tools/ast-tools.js.map +1 -1
  365. package/dist/tools/diagnostics/index.d.ts +7 -32
  366. package/dist/tools/diagnostics/index.d.ts.map +1 -1
  367. package/dist/tools/diagnostics/index.js +41 -171
  368. package/dist/tools/diagnostics/index.js.map +1 -1
  369. package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -13
  370. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  371. package/dist/tools/diagnostics/lsp-aggregator.js +4 -32
  372. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  373. package/dist/tools/diagnostics/tsc-runner.d.ts +0 -6
  374. package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -1
  375. package/dist/tools/diagnostics/tsc-runner.js +5 -32
  376. package/dist/tools/diagnostics/tsc-runner.js.map +1 -1
  377. package/dist/tools/lsp/client.d.ts.map +1 -1
  378. package/dist/tools/lsp/client.js +1 -26
  379. package/dist/tools/lsp/client.js.map +1 -1
  380. package/dist/tools/lsp/servers.d.ts +0 -3
  381. package/dist/tools/lsp/servers.d.ts.map +1 -1
  382. package/dist/tools/lsp/servers.js +4 -111
  383. package/dist/tools/lsp/servers.js.map +1 -1
  384. package/dist/tools/lsp-tools.d.ts +2 -2
  385. package/dist/tools/lsp-tools.d.ts.map +1 -1
  386. package/dist/tools/lsp-tools.js +2 -2
  387. package/dist/tools/lsp-tools.js.map +1 -1
  388. package/package.json +1 -1
  389. package/skills/AGENTS.md +187 -0
  390. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts +0 -5
  391. package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts.map +0 -1
  392. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js +0 -42
  393. package/dist/tools/diagnostics/__tests__/detectProjectType.test.js.map +0 -1
  394. package/dist/tools/diagnostics/__tests__/integration.test.d.ts +0 -5
  395. package/dist/tools/diagnostics/__tests__/integration.test.d.ts.map +0 -1
  396. package/dist/tools/diagnostics/__tests__/integration.test.js +0 -66
  397. package/dist/tools/diagnostics/__tests__/integration.test.js.map +0 -1
  398. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts +0 -5
  399. package/dist/tools/diagnostics/__tests__/parser-tests.d.ts.map +0 -1
  400. package/dist/tools/diagnostics/__tests__/parser-tests.js +0 -86
  401. package/dist/tools/diagnostics/__tests__/parser-tests.js.map +0 -1
  402. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts +0 -5
  403. package/dist/tools/diagnostics/__tests__/parsers.test.d.ts.map +0 -1
  404. package/dist/tools/diagnostics/__tests__/parsers.test.js +0 -199
  405. package/dist/tools/diagnostics/__tests__/parsers.test.js.map +0 -1
  406. package/dist/tools/diagnostics/constants.d.ts +0 -9
  407. package/dist/tools/diagnostics/constants.d.ts.map +0 -1
  408. package/dist/tools/diagnostics/constants.js +0 -9
  409. package/dist/tools/diagnostics/constants.js.map +0 -1
  410. package/dist/tools/diagnostics/go-runner.d.ts +0 -31
  411. package/dist/tools/diagnostics/go-runner.d.ts.map +0 -1
  412. package/dist/tools/diagnostics/go-runner.js +0 -78
  413. package/dist/tools/diagnostics/go-runner.js.map +0 -1
  414. package/dist/tools/diagnostics/python-runner.d.ts +0 -39
  415. package/dist/tools/diagnostics/python-runner.d.ts.map +0 -1
  416. package/dist/tools/diagnostics/python-runner.js +0 -200
  417. package/dist/tools/diagnostics/python-runner.js.map +0 -1
  418. package/dist/tools/diagnostics/rust-runner.d.ts +0 -34
  419. package/dist/tools/diagnostics/rust-runner.d.ts.map +0 -1
  420. package/dist/tools/diagnostics/rust-runner.js +0 -106
  421. package/dist/tools/diagnostics/rust-runner.js.map +0 -1
@@ -0,0 +1,122 @@
1
+ /**
2
+ * GitHub Auto Responder - Main Orchestrator
3
+ *
4
+ * Core pipeline that ties together filtering, classification, prompt building,
5
+ * LLM generation, template fallbacks, and GitHub comment posting.
6
+ *
7
+ * Processing pipeline:
8
+ * 1. Idempotency check (skip duplicates)
9
+ * 2. Filter pipeline (bot, self, action, label, spam)
10
+ * 3. Classify event (bug, feature, question, pr)
11
+ * 4. Build persona-driven prompts
12
+ * 5. Generate response via Anthropic API (with template fallback)
13
+ * 6. Post comment to GitHub (auto mode) or log (draft mode)
14
+ * 7. Mark as processed for deduplication
15
+ */
16
+ import type { AutoResponderConfig, ResponseCategory, WebhookPayload } from './types.js';
17
+ /**
18
+ * Result of processing a single webhook delivery
19
+ */
20
+ export interface ResponderResult {
21
+ /** Whether the webhook was fully processed */
22
+ processed: boolean;
23
+ /** Whether processing was skipped */
24
+ skipped: boolean;
25
+ /** Reason for skipping (if skipped) */
26
+ skipReason?: string;
27
+ /** Classified response category */
28
+ category?: ResponseCategory;
29
+ /** Whether a response was posted to GitHub */
30
+ responsePosted?: boolean;
31
+ /** URL of the posted comment */
32
+ responseUrl?: string;
33
+ /** Error message if processing failed */
34
+ error?: string;
35
+ /** Whether the fallback template was used instead of LLM */
36
+ usedFallback?: boolean;
37
+ }
38
+ /**
39
+ * Main auto-responder orchestrator.
40
+ *
41
+ * Manages the full lifecycle of webhook processing: initialization,
42
+ * filtering, classification, response generation, and posting.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const responder = createAutoResponder(config);
47
+ * await responder.init();
48
+ *
49
+ * const result = await responder.processWebhook(deliveryId, payload);
50
+ * if (result.processed) {
51
+ * console.log('Response posted:', result.responseUrl);
52
+ * }
53
+ *
54
+ * await responder.close();
55
+ * ```
56
+ */
57
+ export declare class AutoResponder {
58
+ private readonly config;
59
+ /** Idempotency store for deduplication */
60
+ private idempotencyStore;
61
+ /** GitHub API client */
62
+ private githubClient;
63
+ /** Filter pipeline function */
64
+ private filterPipeline;
65
+ /** Whether the responder has been initialized */
66
+ private initialized;
67
+ /**
68
+ * Create a new AutoResponder instance.
69
+ *
70
+ * @param config - Full auto-responder configuration
71
+ */
72
+ constructor(config: AutoResponderConfig);
73
+ /**
74
+ * Initialize the responder (must be called before processing webhooks).
75
+ *
76
+ * Sets up the idempotency store database connection and schema.
77
+ * Safe to call multiple times (no-op after first initialization).
78
+ */
79
+ init(): Promise<void>;
80
+ /**
81
+ * Process a single GitHub webhook delivery through the full pipeline.
82
+ *
83
+ * Pipeline stages:
84
+ * 1. **Idempotency** - Skip if delivery ID already processed
85
+ * 2. **Filter** - Skip bots, self, non-opened actions, excluded labels, spam
86
+ * 3. **Classify** - Determine response category (bug/feature/question/pr)
87
+ * 4. **Prompt** - Build persona-driven system and user prompts
88
+ * 5. **Generate** - Call Anthropic API (fall back to template on failure)
89
+ * 6. **Post** - Post comment to GitHub (auto mode) or log (draft mode)
90
+ * 7. **Record** - Mark delivery ID as processed
91
+ *
92
+ * @param deliveryId - GitHub webhook delivery ID (for idempotency)
93
+ * @param payload - Parsed webhook payload
94
+ * @returns Processing result with status, category, and response details
95
+ */
96
+ processWebhook(deliveryId: string, payload: WebhookPayload): Promise<ResponderResult>;
97
+ /**
98
+ * Gracefully shut down the responder.
99
+ *
100
+ * Closes the idempotency store database connection. Safe to call
101
+ * multiple times. Should be called when the server shuts down.
102
+ */
103
+ close(): Promise<void>;
104
+ }
105
+ /**
106
+ * Factory function to create a new AutoResponder instance.
107
+ *
108
+ * @param config - Full auto-responder configuration
109
+ * @returns New AutoResponder instance (call init() before use)
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * import { loadConfig } from './config.js';
114
+ * import { createAutoResponder } from './responder.js';
115
+ *
116
+ * const config = loadConfig();
117
+ * const responder = createAutoResponder(config);
118
+ * await responder.init();
119
+ * ```
120
+ */
121
+ export declare function createAutoResponder(config: AutoResponderConfig): AutoResponder;
122
+ //# sourceMappingURL=responder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responder.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/responder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEf,MAAM,YAAY,CAAC;AAUpB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAkED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa;IAeZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdnC,0CAA0C;IAC1C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,wBAAwB;IACxB,OAAO,CAAC,YAAY,CAAe;IACnC,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAA0C;IAChE,iDAAiD;IACjD,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBAC0B,MAAM,EAAE,mBAAmB;IAcxD;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;;;;;;;;;;;;;;OAeG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,eAAe,CAAC;IAiH3B;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAEf"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * GitHub Auto Responder - Main Orchestrator
3
+ *
4
+ * Core pipeline that ties together filtering, classification, prompt building,
5
+ * LLM generation, template fallbacks, and GitHub comment posting.
6
+ *
7
+ * Processing pipeline:
8
+ * 1. Idempotency check (skip duplicates)
9
+ * 2. Filter pipeline (bot, self, action, label, spam)
10
+ * 3. Classify event (bug, feature, question, pr)
11
+ * 4. Build persona-driven prompts
12
+ * 5. Generate response via Anthropic API (with template fallback)
13
+ * 6. Post comment to GitHub (auto mode) or log (draft mode)
14
+ * 7. Mark as processed for deduplication
15
+ */
16
+ import { ANTHROPIC_API_URL, RESPONSE_TIMEOUT_MS } from './constants.js';
17
+ import { createFilterPipeline } from './filters.js';
18
+ import { classify } from './classifier.js';
19
+ import { buildPrompt } from './persona.js';
20
+ import { getTemplate } from './templates.js';
21
+ import { GitHubClient } from './github-client.js';
22
+ import { IdempotencyStore } from './idempotency.js';
23
+ import { isIssuePayload } from './filters.js';
24
+ /**
25
+ * Call the Anthropic Messages API to generate a response.
26
+ *
27
+ * Uses native fetch with an AbortController timeout. Returns null on any
28
+ * failure so the caller can fall back to a static template.
29
+ *
30
+ * @param config - Auto responder configuration (API key, model, max tokens)
31
+ * @param systemPrompt - System prompt encoding persona and guidelines
32
+ * @param userPrompt - User prompt with issue/PR context
33
+ * @returns Generated response text, or null if the API call fails
34
+ */
35
+ async function callAnthropicAPI(config, systemPrompt, userPrompt) {
36
+ const controller = new AbortController();
37
+ const timeout = setTimeout(() => controller.abort(), RESPONSE_TIMEOUT_MS);
38
+ try {
39
+ const response = await fetch(ANTHROPIC_API_URL, {
40
+ method: 'POST',
41
+ headers: {
42
+ 'x-api-key': config.anthropicApiKey,
43
+ 'anthropic-version': '2023-06-01',
44
+ 'content-type': 'application/json',
45
+ },
46
+ body: JSON.stringify({
47
+ model: config.llmModel,
48
+ max_tokens: config.maxResponseTokens,
49
+ system: systemPrompt,
50
+ messages: [{ role: 'user', content: userPrompt }],
51
+ }),
52
+ signal: controller.signal,
53
+ });
54
+ if (!response.ok) {
55
+ const errorText = await response.text();
56
+ console.error(`[auto-responder] Anthropic API error (${response.status}): ${errorText}`);
57
+ return null;
58
+ }
59
+ const data = (await response.json());
60
+ const textBlock = data.content?.find((block) => block.type === 'text');
61
+ return textBlock?.text ?? null;
62
+ }
63
+ catch (error) {
64
+ if (error instanceof Error && error.name === 'AbortError') {
65
+ console.error(`[auto-responder] Anthropic API timed out after ${RESPONSE_TIMEOUT_MS}ms`);
66
+ }
67
+ else {
68
+ console.error('[auto-responder] Anthropic API call failed:', error);
69
+ }
70
+ return null;
71
+ }
72
+ finally {
73
+ clearTimeout(timeout);
74
+ }
75
+ }
76
+ /**
77
+ * Main auto-responder orchestrator.
78
+ *
79
+ * Manages the full lifecycle of webhook processing: initialization,
80
+ * filtering, classification, response generation, and posting.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const responder = createAutoResponder(config);
85
+ * await responder.init();
86
+ *
87
+ * const result = await responder.processWebhook(deliveryId, payload);
88
+ * if (result.processed) {
89
+ * console.log('Response posted:', result.responseUrl);
90
+ * }
91
+ *
92
+ * await responder.close();
93
+ * ```
94
+ */
95
+ export class AutoResponder {
96
+ config;
97
+ /** Idempotency store for deduplication */
98
+ idempotencyStore;
99
+ /** GitHub API client */
100
+ githubClient;
101
+ /** Filter pipeline function */
102
+ filterPipeline;
103
+ /** Whether the responder has been initialized */
104
+ initialized = false;
105
+ /**
106
+ * Create a new AutoResponder instance.
107
+ *
108
+ * @param config - Full auto-responder configuration
109
+ */
110
+ constructor(config) {
111
+ this.config = config;
112
+ this.idempotencyStore = new IdempotencyStore(config.idempotencyDbPath);
113
+ this.githubClient = new GitHubClient(config.githubToken);
114
+ this.filterPipeline = createFilterPipeline(config.selfLogin, config.skipLabels, config.spamPatterns
115
+ ? config.spamPatterns.map((p) => typeof p === 'string' ? new RegExp(p, 'i') : p)
116
+ : undefined);
117
+ }
118
+ /**
119
+ * Initialize the responder (must be called before processing webhooks).
120
+ *
121
+ * Sets up the idempotency store database connection and schema.
122
+ * Safe to call multiple times (no-op after first initialization).
123
+ */
124
+ async init() {
125
+ if (this.initialized) {
126
+ return;
127
+ }
128
+ await this.idempotencyStore.init();
129
+ this.initialized = true;
130
+ console.log(`[auto-responder] Initialized (mode=${this.config.mode}, model=${this.config.llmModel})`);
131
+ }
132
+ /**
133
+ * Process a single GitHub webhook delivery through the full pipeline.
134
+ *
135
+ * Pipeline stages:
136
+ * 1. **Idempotency** - Skip if delivery ID already processed
137
+ * 2. **Filter** - Skip bots, self, non-opened actions, excluded labels, spam
138
+ * 3. **Classify** - Determine response category (bug/feature/question/pr)
139
+ * 4. **Prompt** - Build persona-driven system and user prompts
140
+ * 5. **Generate** - Call Anthropic API (fall back to template on failure)
141
+ * 6. **Post** - Post comment to GitHub (auto mode) or log (draft mode)
142
+ * 7. **Record** - Mark delivery ID as processed
143
+ *
144
+ * @param deliveryId - GitHub webhook delivery ID (for idempotency)
145
+ * @param payload - Parsed webhook payload
146
+ * @returns Processing result with status, category, and response details
147
+ */
148
+ async processWebhook(deliveryId, payload) {
149
+ if (!this.initialized) {
150
+ return {
151
+ processed: false,
152
+ skipped: false,
153
+ error: 'AutoResponder not initialized. Call init() first.',
154
+ };
155
+ }
156
+ // Step 1: Idempotency check
157
+ if (this.idempotencyStore.isProcessed(deliveryId)) {
158
+ return {
159
+ processed: false,
160
+ skipped: true,
161
+ skipReason: `Delivery ${deliveryId} already processed`,
162
+ };
163
+ }
164
+ // Step 2: Run filter pipeline
165
+ const filterResult = await this.filterPipeline(payload);
166
+ if (filterResult.skip) {
167
+ // Mark as processed even when skipped to avoid re-evaluation
168
+ this.idempotencyStore.markProcessed(deliveryId);
169
+ return {
170
+ processed: true,
171
+ skipped: true,
172
+ skipReason: filterResult.reason,
173
+ };
174
+ }
175
+ // Step 3: Classify the event
176
+ const classification = classify(payload);
177
+ const category = classification.category;
178
+ console.log(`[auto-responder] Classified as "${category}" (confidence=${classification.confidence.toFixed(2)}, reason="${classification.reason}")`);
179
+ // Step 4: Build prompts
180
+ const prompts = buildPrompt(this.config.persona, category, payload);
181
+ // Step 5: Try LLM generation, fall back to template
182
+ let responseText;
183
+ let usedFallback = false;
184
+ const llmResponse = await callAnthropicAPI(this.config, prompts.system, prompts.user);
185
+ if (llmResponse) {
186
+ responseText = llmResponse;
187
+ }
188
+ else {
189
+ responseText = getTemplate(category, this.config.persona);
190
+ usedFallback = true;
191
+ console.warn('[auto-responder] LLM generation failed, using fallback template');
192
+ }
193
+ // Step 6: Post comment or log in draft mode
194
+ let responsePosted = false;
195
+ let responseUrl;
196
+ let postError;
197
+ if (this.config.mode === 'auto') {
198
+ const repo = payload.repository.full_name;
199
+ const itemNumber = isIssuePayload(payload)
200
+ ? payload.issue.number
201
+ : payload.pull_request.number;
202
+ const commentResult = isIssuePayload(payload)
203
+ ? await this.githubClient.postIssueComment(repo, itemNumber, responseText)
204
+ : await this.githubClient.postPRComment(repo, itemNumber, responseText);
205
+ if (commentResult.success) {
206
+ responsePosted = true;
207
+ responseUrl = commentResult.url;
208
+ console.log(`[auto-responder] Posted comment: ${responseUrl}`);
209
+ }
210
+ else {
211
+ postError = commentResult.error;
212
+ console.error(`[auto-responder] Failed to post comment: ${postError}`);
213
+ }
214
+ }
215
+ else {
216
+ // Draft mode: log the response without posting
217
+ console.log(`[auto-responder] [DRAFT] Would post to ${payload.repository.full_name}:`);
218
+ console.log(`[auto-responder] [DRAFT] Category: ${category}`);
219
+ console.log(`[auto-responder] [DRAFT] Response (${usedFallback ? 'template' : 'LLM'}):\n${responseText}`);
220
+ }
221
+ // Step 7: Mark as processed
222
+ this.idempotencyStore.markProcessed(deliveryId);
223
+ return {
224
+ processed: true,
225
+ skipped: false,
226
+ category,
227
+ responsePosted,
228
+ responseUrl,
229
+ usedFallback,
230
+ error: postError,
231
+ };
232
+ }
233
+ /**
234
+ * Gracefully shut down the responder.
235
+ *
236
+ * Closes the idempotency store database connection. Safe to call
237
+ * multiple times. Should be called when the server shuts down.
238
+ */
239
+ async close() {
240
+ this.idempotencyStore.close();
241
+ this.initialized = false;
242
+ console.log('[auto-responder] Closed');
243
+ }
244
+ }
245
+ /**
246
+ * Factory function to create a new AutoResponder instance.
247
+ *
248
+ * @param config - Full auto-responder configuration
249
+ * @returns New AutoResponder instance (call init() before use)
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * import { loadConfig } from './config.js';
254
+ * import { createAutoResponder } from './responder.js';
255
+ *
256
+ * const config = loadConfig();
257
+ * const responder = createAutoResponder(config);
258
+ * await responder.init();
259
+ * ```
260
+ */
261
+ export function createAutoResponder(config) {
262
+ return new AutoResponder(config);
263
+ }
264
+ //# sourceMappingURL=responder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/responder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * GitHub Auto Responder - HTTP Webhook Server
3
+ *
4
+ * HTTP server that receives GitHub webhook events, verifies signatures,
5
+ * and delegates to the AutoResponder for processing.
6
+ *
7
+ * Features:
8
+ * - HMAC-SHA256 signature verification for security
9
+ * - 1MB body size limit to prevent memory exhaustion
10
+ * - Graceful shutdown on SIGTERM/SIGINT
11
+ * - Health check endpoint for monitoring
12
+ * - Fire-and-forget webhook processing (responds 200 immediately)
13
+ * - JSON responses for all endpoints
14
+ */
15
+ import type { AutoResponder } from './responder.js';
16
+ import type { AutoResponderConfig } from './types.js';
17
+ /**
18
+ * HTTP webhook server for GitHub events.
19
+ *
20
+ * Endpoints:
21
+ * - GET /health - Health check (returns 200 with status)
22
+ * - POST /webhook - Webhook receiver (signature verification + processing)
23
+ * - Other routes - 404 Not Found
24
+ *
25
+ * Webhook processing is fire-and-forget: the server responds 200 immediately
26
+ * after signature verification, then processes asynchronously. Errors during
27
+ * processing are logged but don't affect the HTTP response.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const responder = createAutoResponder(config);
32
+ * await responder.init();
33
+ *
34
+ * const server = createWebhookServer(responder, config);
35
+ * await server.start();
36
+ *
37
+ * // Later...
38
+ * await server.stop();
39
+ * ```
40
+ */
41
+ export declare class WebhookServer {
42
+ private readonly responder;
43
+ private readonly config;
44
+ /** HTTP server instance */
45
+ private server;
46
+ /** Whether the server is currently running */
47
+ private running;
48
+ /**
49
+ * Create a new webhook server.
50
+ *
51
+ * @param responder - AutoResponder instance for webhook processing
52
+ * @param config - Server configuration (port, webhook secret, etc.)
53
+ */
54
+ constructor(responder: AutoResponder, config: AutoResponderConfig);
55
+ /**
56
+ * Start the HTTP server and listen on configured port.
57
+ *
58
+ * @throws Error if server is already running or fails to bind
59
+ */
60
+ start(): Promise<void>;
61
+ /**
62
+ * Route incoming requests to appropriate handlers.
63
+ *
64
+ * Routes:
65
+ * - GET /health → handleHealth()
66
+ * - POST /webhook → handleWebhook()
67
+ * - Other → 404
68
+ *
69
+ * @param req - HTTP request
70
+ * @param res - HTTP response
71
+ */
72
+ private handleRequest;
73
+ /**
74
+ * Handle health check requests.
75
+ *
76
+ * Returns 200 with JSON status payload.
77
+ *
78
+ * @param res - HTTP response
79
+ */
80
+ private handleHealth;
81
+ /**
82
+ * Handle webhook POST requests.
83
+ *
84
+ * Processing pipeline:
85
+ * 1. Read raw request body as Buffer
86
+ * 2. Verify HMAC-SHA256 signature
87
+ * 3. Parse JSON payload
88
+ * 4. Extract event type and delivery ID from headers
89
+ * 5. Respond 200 OK immediately
90
+ * 6. Process webhook asynchronously (fire-and-forget)
91
+ *
92
+ * Errors during validation return appropriate HTTP status codes.
93
+ * Errors during async processing are logged but don't affect the response.
94
+ *
95
+ * @param req - HTTP request
96
+ * @param res - HTTP response
97
+ */
98
+ private handleWebhook;
99
+ /**
100
+ * Gracefully shut down the server.
101
+ *
102
+ * Stops accepting new connections and waits for existing requests
103
+ * to complete. Also closes the AutoResponder.
104
+ *
105
+ * Safe to call multiple times.
106
+ */
107
+ stop(): Promise<void>;
108
+ }
109
+ /**
110
+ * Factory function to create a new webhook server.
111
+ *
112
+ * @param responder - AutoResponder instance for webhook processing
113
+ * @param config - Server configuration
114
+ * @returns New WebhookServer instance (call start() to begin listening)
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * import { loadConfig } from './config.js';
119
+ * import { createAutoResponder } from './responder.js';
120
+ * import { createWebhookServer } from './server.js';
121
+ *
122
+ * const config = loadConfig();
123
+ * const responder = createAutoResponder(config);
124
+ * await responder.init();
125
+ *
126
+ * const server = createWebhookServer(responder, config);
127
+ * await server.start();
128
+ * ```
129
+ */
130
+ export declare function createWebhookServer(responder: AutoResponder, config: AutoResponderConfig): WebhookServer;
131
+ /**
132
+ * Register signal handlers for graceful shutdown.
133
+ *
134
+ * Listens for SIGTERM and SIGINT (Ctrl+C) and gracefully shuts down
135
+ * the server before exiting.
136
+ *
137
+ * @param server - Webhook server to shut down
138
+ */
139
+ export declare function registerShutdownHandlers(server: WebhookServer): void;
140
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,YAAY,CAAC;AAyCtE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbzB,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAc;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,OAAO,CAAS;IAExB;;;;;OAKG;gBAEgB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,mBAAmB;IAK9C;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;;;;;;;;;;;OAgBG;YACW,aAAa;IAkF3B;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAEf;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAcpE"}