oh-my-claude-sisyphus 3.7.4 → 3.7.6
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.
- package/commands/hud.md +3 -1
- package/dist/__tests__/analytics/output-estimator.test.js +18 -0
- package/dist/__tests__/analytics/output-estimator.test.js.map +1 -1
- package/dist/__tests__/analytics/token-extractor.test.js +44 -0
- package/dist/__tests__/analytics/token-extractor.test.js.map +1 -1
- package/dist/__tests__/analytics/token-tracker.test.d.ts +2 -0
- package/dist/__tests__/analytics/token-tracker.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/token-tracker.test.js +189 -0
- package/dist/__tests__/analytics/token-tracker.test.js.map +1 -0
- package/dist/__tests__/hud/analytics-display.test.js +3 -8
- package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
- package/dist/__tests__/hud/top-agents.test.d.ts +8 -0
- package/dist/__tests__/hud/top-agents.test.d.ts.map +1 -0
- package/dist/__tests__/hud/top-agents.test.js +157 -0
- package/dist/__tests__/hud/top-agents.test.js.map +1 -0
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/analytics/output-estimator.d.ts.map +1 -1
- package/dist/analytics/output-estimator.js +5 -1
- package/dist/analytics/output-estimator.js.map +1 -1
- package/dist/analytics/token-extractor.js +2 -2
- package/dist/analytics/token-extractor.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/hooks/pre-compact/index.d.ts +2 -4
- package/dist/hooks/pre-compact/index.d.ts.map +1 -1
- package/dist/hooks/pre-compact/index.js +3 -4
- package/dist/hooks/pre-compact/index.js.map +1 -1
- package/dist/hud/analytics-display.d.ts.map +1 -1
- package/dist/hud/analytics-display.js +0 -1
- package/dist/hud/analytics-display.js.map +1 -1
- package/dist/hud/index.js +52 -3
- package/dist/hud/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/tools/ast-tools.d.ts.map +1 -1
- package/dist/tools/ast-tools.js +39 -19
- package/dist/tools/ast-tools.js.map +1 -1
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts +5 -0
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts.map +1 -0
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.js +42 -0
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.js.map +1 -0
- package/dist/tools/diagnostics/__tests__/integration.test.d.ts +5 -0
- package/dist/tools/diagnostics/__tests__/integration.test.d.ts.map +1 -0
- package/dist/tools/diagnostics/__tests__/integration.test.js +66 -0
- package/dist/tools/diagnostics/__tests__/integration.test.js.map +1 -0
- package/dist/tools/diagnostics/__tests__/parser-tests.d.ts +5 -0
- package/dist/tools/diagnostics/__tests__/parser-tests.d.ts.map +1 -0
- package/dist/tools/diagnostics/__tests__/parser-tests.js +86 -0
- package/dist/tools/diagnostics/__tests__/parser-tests.js.map +1 -0
- package/dist/tools/diagnostics/__tests__/parsers.test.d.ts +5 -0
- package/dist/tools/diagnostics/__tests__/parsers.test.d.ts.map +1 -0
- package/dist/tools/diagnostics/__tests__/parsers.test.js +199 -0
- package/dist/tools/diagnostics/__tests__/parsers.test.js.map +1 -0
- package/dist/tools/diagnostics/constants.d.ts +9 -0
- package/dist/tools/diagnostics/constants.d.ts.map +1 -0
- package/dist/tools/diagnostics/constants.js +9 -0
- package/dist/tools/diagnostics/constants.js.map +1 -0
- package/dist/tools/diagnostics/go-runner.d.ts +31 -0
- package/dist/tools/diagnostics/go-runner.d.ts.map +1 -0
- package/dist/tools/diagnostics/go-runner.js +78 -0
- package/dist/tools/diagnostics/go-runner.js.map +1 -0
- package/dist/tools/diagnostics/index.d.ts +32 -7
- package/dist/tools/diagnostics/index.d.ts.map +1 -1
- package/dist/tools/diagnostics/index.js +171 -41
- package/dist/tools/diagnostics/index.js.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.d.ts +13 -1
- package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.js +32 -4
- package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
- package/dist/tools/diagnostics/python-runner.d.ts +39 -0
- package/dist/tools/diagnostics/python-runner.d.ts.map +1 -0
- package/dist/tools/diagnostics/python-runner.js +200 -0
- package/dist/tools/diagnostics/python-runner.js.map +1 -0
- package/dist/tools/diagnostics/rust-runner.d.ts +34 -0
- package/dist/tools/diagnostics/rust-runner.d.ts.map +1 -0
- package/dist/tools/diagnostics/rust-runner.js +106 -0
- package/dist/tools/diagnostics/rust-runner.js.map +1 -0
- package/dist/tools/diagnostics/tsc-runner.d.ts +6 -0
- package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -1
- package/dist/tools/diagnostics/tsc-runner.js +32 -5
- package/dist/tools/diagnostics/tsc-runner.js.map +1 -1
- package/dist/tools/lsp/client.d.ts.map +1 -1
- package/dist/tools/lsp/client.js +26 -1
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts +3 -0
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +111 -4
- package/dist/tools/lsp/servers.js.map +1 -1
- package/dist/tools/lsp-tools.d.ts +2 -2
- package/dist/tools/lsp-tools.d.ts.map +1 -1
- package/dist/tools/lsp-tools.js +2 -2
- package/dist/tools/lsp-tools.js.map +1 -1
- package/package.json +1 -1
- package/skills/hud/SKILL.md +3 -1
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.d.ts +0 -43
- package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.js +0 -150
- package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
- package/dist/hooks/github-auto-responder/config.d.ts +0 -109
- package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/config.js +0 -69
- package/dist/hooks/github-auto-responder/config.js.map +0 -1
- package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
- package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/constants.js +0 -60
- package/dist/hooks/github-auto-responder/constants.js.map +0 -1
- package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
- package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/filters.js +0 -174
- package/dist/hooks/github-auto-responder/filters.js.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
- package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.js +0 -128
- package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
- package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.js +0 -147
- package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
- package/dist/hooks/github-auto-responder/index.d.ts +0 -140
- package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/index.js +0 -145
- package/dist/hooks/github-auto-responder/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
- package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/persona.js +0 -99
- package/dist/hooks/github-auto-responder/persona.js.map +0 -1
- package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
- package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/responder.js +0 -264
- package/dist/hooks/github-auto-responder/responder.js.map +0 -1
- package/dist/hooks/github-auto-responder/server.d.ts +0 -140
- package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/server.js +0 -301
- package/dist/hooks/github-auto-responder/server.js.map +0 -1
- package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
- package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/signature.js +0 -79
- package/dist/hooks/github-auto-responder/signature.js.map +0 -1
- package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
- package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/templates.js +0 -93
- package/dist/hooks/github-auto-responder/templates.js.map +0 -1
- package/dist/hooks/github-auto-responder/types.d.ts +0 -246
- package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/types.js +0 -7
- package/dist/hooks/github-auto-responder/types.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
- package/scripts/github-webhook-server.ts +0 -141
|
@@ -1,264 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/responder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,140 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|