oh-my-claude-sisyphus 3.7.6 → 3.7.9
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/.claude-plugin/marketplace.json +24 -0
- package/.claude-plugin/plugin.json +7 -0
- package/.mcp.json +8 -0
- package/agents/AGENTS.md +144 -0
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +2 -0
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/analytics-summary.test.js +267 -0
- package/dist/__tests__/analytics/analytics-summary.test.js.map +1 -0
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +2 -0
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +1 -0
- package/dist/__tests__/analytics/cost-estimator.test.js +212 -0
- package/dist/__tests__/analytics/cost-estimator.test.js.map +1 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +2 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +1 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.js +12 -0
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +1 -0
- package/dist/__tests__/learned-skills/config.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/config.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/config.test.js +37 -0
- package/dist/__tests__/learned-skills/config.test.js.map +1 -0
- package/dist/__tests__/learned-skills/detector.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/detector.test.js +99 -0
- package/dist/__tests__/learned-skills/detector.test.js.map +1 -0
- package/dist/__tests__/learned-skills/finder.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/finder.test.js +59 -0
- package/dist/__tests__/learned-skills/finder.test.js.map +1 -0
- package/dist/__tests__/learned-skills/loader.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/loader.test.js +69 -0
- package/dist/__tests__/learned-skills/loader.test.js.map +1 -0
- package/dist/__tests__/learned-skills/parser.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/parser.test.js +81 -0
- package/dist/__tests__/learned-skills/parser.test.js.map +1 -0
- package/dist/__tests__/learned-skills/validator.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/validator.test.js +85 -0
- package/dist/__tests__/learned-skills/validator.test.js.map +1 -0
- package/dist/__tests__/omc-tools-server.test.d.ts +2 -0
- package/dist/__tests__/omc-tools-server.test.d.ts.map +1 -0
- package/dist/__tests__/omc-tools-server.test.js +52 -0
- package/dist/__tests__/omc-tools-server.test.js.map +1 -0
- package/dist/agents/architect.js +1 -1
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/codex-agents.d.ts +20 -0
- package/dist/agents/codex-agents.d.ts.map +1 -0
- package/dist/agents/codex-agents.js +36 -0
- package/dist/agents/codex-agents.js.map +1 -0
- package/dist/agents/definitions.js +13 -13
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/document-writer.d.ts +11 -0
- package/dist/agents/document-writer.d.ts.map +1 -0
- package/dist/agents/document-writer.js +209 -0
- package/dist/agents/document-writer.js.map +1 -0
- package/dist/agents/executor.js +1 -1
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.js +1 -1
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/frontend-engineer.d.ts +11 -0
- package/dist/agents/frontend-engineer.d.ts.map +1 -0
- package/dist/agents/frontend-engineer.js +115 -0
- package/dist/agents/frontend-engineer.js.map +1 -0
- package/dist/agents/librarian.d.ts +12 -0
- package/dist/agents/librarian.d.ts.map +1 -0
- package/dist/agents/librarian.js +103 -0
- package/dist/agents/librarian.js.map +1 -0
- package/dist/agents/metis.d.ts +12 -0
- package/dist/agents/metis.d.ts.map +1 -0
- package/dist/agents/metis.js +117 -0
- package/dist/agents/metis.js.map +1 -0
- package/dist/agents/momus.d.ts +12 -0
- package/dist/agents/momus.d.ts.map +1 -0
- package/dist/agents/momus.js +128 -0
- package/dist/agents/momus.js.map +1 -0
- package/dist/agents/multimodal-looker.d.ts +11 -0
- package/dist/agents/multimodal-looker.d.ts.map +1 -0
- package/dist/agents/multimodal-looker.js +70 -0
- package/dist/agents/multimodal-looker.js.map +1 -0
- package/dist/agents/oracle.d.ts +13 -0
- package/dist/agents/oracle.d.ts.map +1 -0
- package/dist/agents/oracle.js +191 -0
- package/dist/agents/oracle.js.map +1 -0
- package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
- package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
- package/dist/agents/orchestrator-sisyphus.js +115 -0
- package/dist/agents/orchestrator-sisyphus.js.map +1 -0
- package/dist/agents/prometheus.d.ts +12 -0
- package/dist/agents/prometheus.d.ts.map +1 -0
- package/dist/agents/prometheus.js +195 -0
- package/dist/agents/prometheus.js.map +1 -0
- package/dist/agents/qa-tester.js +1 -1
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/sisyphus-junior.d.ts +12 -0
- package/dist/agents/sisyphus-junior.d.ts.map +1 -0
- package/dist/agents/sisyphus-junior.js +93 -0
- package/dist/agents/sisyphus-junior.js.map +1 -0
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/components/CostDashboard.d.ts +15 -0
- package/dist/cli/components/CostDashboard.d.ts.map +1 -0
- package/dist/cli/components/CostDashboard.js +15 -0
- package/dist/cli/components/CostDashboard.js.map +1 -0
- package/dist/cli/components/LiveStats.d.ts +16 -0
- package/dist/cli/components/LiveStats.d.ts.map +1 -0
- package/dist/cli/components/LiveStats.js +16 -0
- package/dist/cli/components/LiveStats.js.map +1 -0
- package/dist/cli/components/SessionBrowser.d.ts +14 -0
- package/dist/cli/components/SessionBrowser.d.ts.map +1 -0
- package/dist/cli/components/SessionBrowser.js +14 -0
- package/dist/cli/components/SessionBrowser.js.map +1 -0
- package/dist/cli/index.js +0 -0
- package/dist/cli/tui.d.ts +21 -0
- package/dist/cli/tui.d.ts.map +1 -0
- package/dist/cli/tui.js +21 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/hooks/autopilot/signals.d.ts +20 -0
- package/dist/hooks/autopilot/signals.d.ts.map +1 -0
- package/dist/hooks/autopilot/signals.js +75 -0
- package/dist/hooks/autopilot/signals.js.map +1 -0
- package/dist/hooks/autopilot/summary.d.ts +27 -0
- package/dist/hooks/autopilot/summary.d.ts.map +1 -0
- package/dist/hooks/autopilot/summary.js +160 -0
- package/dist/hooks/autopilot/summary.js.map +1 -0
- package/dist/hooks/autopilot/transition.d.ts +39 -0
- package/dist/hooks/autopilot/transition.d.ts.map +1 -0
- package/dist/hooks/autopilot/transition.js +216 -0
- package/dist/hooks/autopilot/transition.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
- package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/index.js +201 -0
- package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
- package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/types.js +34 -0
- package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
- package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
- package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
- package/dist/hooks/edit-error-recovery/index.js +89 -0
- package/dist/hooks/edit-error-recovery/index.js.map +1 -0
- package/dist/hooks/github-auto-responder/classifier.d.ts +43 -0
- package/dist/hooks/github-auto-responder/classifier.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/classifier.js +150 -0
- package/dist/hooks/github-auto-responder/classifier.js.map +1 -0
- package/dist/hooks/github-auto-responder/config.d.ts +109 -0
- package/dist/hooks/github-auto-responder/config.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/config.js +69 -0
- package/dist/hooks/github-auto-responder/config.js.map +1 -0
- package/dist/hooks/github-auto-responder/constants.d.ts +45 -0
- package/dist/hooks/github-auto-responder/constants.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/constants.js +60 -0
- package/dist/hooks/github-auto-responder/constants.js.map +1 -0
- package/dist/hooks/github-auto-responder/filters.d.ts +95 -0
- package/dist/hooks/github-auto-responder/filters.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/filters.js +174 -0
- package/dist/hooks/github-auto-responder/filters.js.map +1 -0
- package/dist/hooks/github-auto-responder/github-client.d.ts +65 -0
- package/dist/hooks/github-auto-responder/github-client.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/github-client.js +128 -0
- package/dist/hooks/github-auto-responder/github-client.js.map +1 -0
- package/dist/hooks/github-auto-responder/idempotency.d.ts +68 -0
- package/dist/hooks/github-auto-responder/idempotency.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/idempotency.js +147 -0
- package/dist/hooks/github-auto-responder/idempotency.js.map +1 -0
- package/dist/hooks/github-auto-responder/index.d.ts +140 -0
- package/dist/hooks/github-auto-responder/index.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/index.js +145 -0
- package/dist/hooks/github-auto-responder/index.js.map +1 -0
- package/dist/hooks/github-auto-responder/persona.d.ts +40 -0
- package/dist/hooks/github-auto-responder/persona.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/persona.js +99 -0
- package/dist/hooks/github-auto-responder/persona.js.map +1 -0
- package/dist/hooks/github-auto-responder/responder.d.ts +122 -0
- package/dist/hooks/github-auto-responder/responder.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/responder.js +264 -0
- package/dist/hooks/github-auto-responder/responder.js.map +1 -0
- package/dist/hooks/github-auto-responder/server.d.ts +140 -0
- package/dist/hooks/github-auto-responder/server.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/server.js +301 -0
- package/dist/hooks/github-auto-responder/server.js.map +1 -0
- package/dist/hooks/github-auto-responder/signature.d.ts +34 -0
- package/dist/hooks/github-auto-responder/signature.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/signature.js +79 -0
- package/dist/hooks/github-auto-responder/signature.js.map +1 -0
- package/dist/hooks/github-auto-responder/templates.d.ts +16 -0
- package/dist/hooks/github-auto-responder/templates.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/templates.js +93 -0
- package/dist/hooks/github-auto-responder/templates.js.map +1 -0
- package/dist/hooks/github-auto-responder/types.d.ts +246 -0
- package/dist/hooks/github-auto-responder/types.d.ts.map +1 -0
- package/dist/hooks/github-auto-responder/types.js +7 -0
- package/dist/hooks/github-auto-responder/types.js.map +1 -0
- package/dist/hooks/learned-skills/config.d.ts +53 -0
- package/dist/hooks/learned-skills/config.d.ts.map +1 -0
- package/dist/hooks/learned-skills/config.js +103 -0
- package/dist/hooks/learned-skills/config.js.map +1 -0
- package/dist/hooks/learned-skills/constants.d.ts +24 -0
- package/dist/hooks/learned-skills/constants.d.ts.map +1 -0
- package/dist/hooks/learned-skills/constants.js +26 -0
- package/dist/hooks/learned-skills/constants.js.map +1 -0
- package/dist/hooks/learned-skills/detection-hook.d.ts +39 -0
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +1 -0
- package/dist/hooks/learned-skills/detection-hook.js +83 -0
- package/dist/hooks/learned-skills/detection-hook.js.map +1 -0
- package/dist/hooks/learned-skills/detector.d.ts +30 -0
- package/dist/hooks/learned-skills/detector.d.ts.map +1 -0
- package/dist/hooks/learned-skills/detector.js +150 -0
- package/dist/hooks/learned-skills/detector.js.map +1 -0
- package/dist/hooks/learned-skills/finder.d.ts +21 -0
- package/dist/hooks/learned-skills/finder.d.ts.map +1 -0
- package/dist/hooks/learned-skills/finder.js +117 -0
- package/dist/hooks/learned-skills/finder.js.map +1 -0
- package/dist/hooks/learned-skills/index.d.ts +62 -0
- package/dist/hooks/learned-skills/index.d.ts.map +1 -0
- package/dist/hooks/learned-skills/index.js +137 -0
- package/dist/hooks/learned-skills/index.js.map +1 -0
- package/dist/hooks/learned-skills/loader.d.ts +20 -0
- package/dist/hooks/learned-skills/loader.d.ts.map +1 -0
- package/dist/hooks/learned-skills/loader.js +107 -0
- package/dist/hooks/learned-skills/loader.js.map +1 -0
- package/dist/hooks/learned-skills/parser.d.ts +21 -0
- package/dist/hooks/learned-skills/parser.d.ts.map +1 -0
- package/dist/hooks/learned-skills/parser.js +190 -0
- package/dist/hooks/learned-skills/parser.js.map +1 -0
- package/dist/hooks/learned-skills/promotion.d.ts +29 -0
- package/dist/hooks/learned-skills/promotion.d.ts.map +1 -0
- package/dist/hooks/learned-skills/promotion.js +87 -0
- package/dist/hooks/learned-skills/promotion.js.map +1 -0
- package/dist/hooks/learned-skills/types.d.ts +109 -0
- package/dist/hooks/learned-skills/types.d.ts.map +1 -0
- package/dist/hooks/learned-skills/types.js +8 -0
- package/dist/hooks/learned-skills/types.js.map +1 -0
- package/dist/hooks/learned-skills/validator.d.ts +15 -0
- package/dist/hooks/learned-skills/validator.d.ts.map +1 -0
- package/dist/hooks/learned-skills/validator.js +87 -0
- package/dist/hooks/learned-skills/validator.js.map +1 -0
- package/dist/hooks/learned-skills/writer.d.ts +27 -0
- package/dist/hooks/learned-skills/writer.d.ts.map +1 -0
- package/dist/hooks/learned-skills/writer.js +126 -0
- package/dist/hooks/learned-skills/writer.js.map +1 -0
- package/dist/hooks/mnemosyne/config.d.ts +53 -0
- package/dist/hooks/mnemosyne/config.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/config.js +103 -0
- package/dist/hooks/mnemosyne/config.js.map +1 -0
- package/dist/hooks/mnemosyne/constants.d.ts +24 -0
- package/dist/hooks/mnemosyne/constants.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/constants.js +26 -0
- package/dist/hooks/mnemosyne/constants.js.map +1 -0
- package/dist/hooks/mnemosyne/detection-hook.d.ts +39 -0
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/detection-hook.js +83 -0
- package/dist/hooks/mnemosyne/detection-hook.js.map +1 -0
- package/dist/hooks/mnemosyne/detector.d.ts +30 -0
- package/dist/hooks/mnemosyne/detector.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/detector.js +150 -0
- package/dist/hooks/mnemosyne/detector.js.map +1 -0
- package/dist/hooks/mnemosyne/finder.d.ts +21 -0
- package/dist/hooks/mnemosyne/finder.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/finder.js +117 -0
- package/dist/hooks/mnemosyne/finder.js.map +1 -0
- package/dist/hooks/mnemosyne/index.d.ts +62 -0
- package/dist/hooks/mnemosyne/index.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/index.js +137 -0
- package/dist/hooks/mnemosyne/index.js.map +1 -0
- package/dist/hooks/mnemosyne/loader.d.ts +20 -0
- package/dist/hooks/mnemosyne/loader.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/loader.js +113 -0
- package/dist/hooks/mnemosyne/loader.js.map +1 -0
- package/dist/hooks/mnemosyne/parser.d.ts +21 -0
- package/dist/hooks/mnemosyne/parser.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/parser.js +190 -0
- package/dist/hooks/mnemosyne/parser.js.map +1 -0
- package/dist/hooks/mnemosyne/promotion.d.ts +29 -0
- package/dist/hooks/mnemosyne/promotion.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/promotion.js +87 -0
- package/dist/hooks/mnemosyne/promotion.js.map +1 -0
- package/dist/hooks/mnemosyne/types.d.ts +109 -0
- package/dist/hooks/mnemosyne/types.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/types.js +8 -0
- package/dist/hooks/mnemosyne/types.js.map +1 -0
- package/dist/hooks/mnemosyne/validator.d.ts +15 -0
- package/dist/hooks/mnemosyne/validator.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/validator.js +87 -0
- package/dist/hooks/mnemosyne/validator.js.map +1 -0
- package/dist/hooks/mnemosyne/writer.d.ts +27 -0
- package/dist/hooks/mnemosyne/writer.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/writer.js +126 -0
- package/dist/hooks/mnemosyne/writer.js.map +1 -0
- package/dist/hooks/ralph-loop/index.d.ts +116 -0
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
- package/dist/hooks/ralph-loop/index.js +322 -0
- package/dist/hooks/ralph-loop/index.js.map +1 -0
- package/dist/hooks/ralph-prd/index.d.ts +130 -0
- package/dist/hooks/ralph-prd/index.d.ts.map +1 -0
- package/dist/hooks/ralph-prd/index.js +310 -0
- package/dist/hooks/ralph-prd/index.js.map +1 -0
- package/dist/hooks/ralph-progress/index.d.ts +102 -0
- package/dist/hooks/ralph-progress/index.d.ts.map +1 -0
- package/dist/hooks/ralph-progress/index.js +408 -0
- package/dist/hooks/ralph-progress/index.js.map +1 -0
- package/dist/hooks/ralph-verifier/index.d.ts +72 -0
- package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
- package/dist/hooks/ralph-verifier/index.js +223 -0
- package/dist/hooks/ralph-verifier/index.js.map +1 -0
- package/dist/hooks/session-recovery/constants.d.ts +56 -0
- package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
- package/dist/hooks/session-recovery/constants.js +78 -0
- package/dist/hooks/session-recovery/constants.js.map +1 -0
- package/dist/hooks/session-recovery/index.d.ts +53 -0
- package/dist/hooks/session-recovery/index.d.ts.map +1 -0
- package/dist/hooks/session-recovery/index.js +321 -0
- package/dist/hooks/session-recovery/index.js.map +1 -0
- package/dist/hooks/session-recovery/storage.d.ts +76 -0
- package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
- package/dist/hooks/session-recovery/storage.js +383 -0
- package/dist/hooks/session-recovery/storage.js.map +1 -0
- package/dist/hooks/session-recovery/types.d.ts +145 -0
- package/dist/hooks/session-recovery/types.d.ts.map +1 -0
- package/dist/hooks/session-recovery/types.js +8 -0
- package/dist/hooks/session-recovery/types.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.js +309 -0
- package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
- package/dist/hooks/ultraqa-loop/index.d.ts +94 -0
- package/dist/hooks/ultraqa-loop/index.d.ts.map +1 -0
- package/dist/hooks/ultraqa-loop/index.js +216 -0
- package/dist/hooks/ultraqa-loop/index.js.map +1 -0
- package/dist/hooks/ultrawork-state/index.d.ts +62 -0
- package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
- package/dist/hooks/ultrawork-state/index.js +208 -0
- package/dist/hooks/ultrawork-state/index.js.map +1 -0
- package/dist/hud/sisyphus-state.d.ts +31 -0
- package/dist/hud/sisyphus-state.d.ts.map +1 -0
- package/dist/hud/sisyphus-state.js +163 -0
- package/dist/hud/sisyphus-state.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/omc-tools-server.d.ts +25 -0
- package/dist/mcp/omc-tools-server.d.ts.map +1 -0
- package/dist/mcp/omc-tools-server.js +49 -0
- package/dist/mcp/omc-tools-server.js.map +1 -0
- package/dist/mcp/standalone-server.d.ts +11 -0
- package/dist/mcp/standalone-server.d.ts.map +1 -0
- package/dist/mcp/standalone-server.js +139 -0
- package/dist/mcp/standalone-server.js.map +1 -0
- package/dist/tools/ast-tools.d.ts.map +1 -1
- package/dist/tools/ast-tools.js +19 -39
- package/dist/tools/ast-tools.js.map +1 -1
- package/dist/tools/diagnostics/index.d.ts +7 -32
- package/dist/tools/diagnostics/index.d.ts.map +1 -1
- package/dist/tools/diagnostics/index.js +41 -171
- package/dist/tools/diagnostics/index.js.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.d.ts +1 -13
- package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
- package/dist/tools/diagnostics/lsp-aggregator.js +4 -32
- package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
- package/dist/tools/diagnostics/tsc-runner.d.ts +0 -6
- package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -1
- package/dist/tools/diagnostics/tsc-runner.js +5 -32
- 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 +1 -26
- package/dist/tools/lsp/client.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts +0 -3
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +4 -111
- 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 +4 -2
- package/skills/AGENTS.md +187 -0
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts +0 -5
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.d.ts.map +0 -1
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.js +0 -42
- package/dist/tools/diagnostics/__tests__/detectProjectType.test.js.map +0 -1
- package/dist/tools/diagnostics/__tests__/integration.test.d.ts +0 -5
- package/dist/tools/diagnostics/__tests__/integration.test.d.ts.map +0 -1
- package/dist/tools/diagnostics/__tests__/integration.test.js +0 -66
- package/dist/tools/diagnostics/__tests__/integration.test.js.map +0 -1
- package/dist/tools/diagnostics/__tests__/parser-tests.d.ts +0 -5
- package/dist/tools/diagnostics/__tests__/parser-tests.d.ts.map +0 -1
- package/dist/tools/diagnostics/__tests__/parser-tests.js +0 -86
- package/dist/tools/diagnostics/__tests__/parser-tests.js.map +0 -1
- package/dist/tools/diagnostics/__tests__/parsers.test.d.ts +0 -5
- package/dist/tools/diagnostics/__tests__/parsers.test.d.ts.map +0 -1
- package/dist/tools/diagnostics/__tests__/parsers.test.js +0 -199
- package/dist/tools/diagnostics/__tests__/parsers.test.js.map +0 -1
- package/dist/tools/diagnostics/constants.d.ts +0 -9
- package/dist/tools/diagnostics/constants.d.ts.map +0 -1
- package/dist/tools/diagnostics/constants.js +0 -9
- package/dist/tools/diagnostics/constants.js.map +0 -1
- package/dist/tools/diagnostics/go-runner.d.ts +0 -31
- package/dist/tools/diagnostics/go-runner.d.ts.map +0 -1
- package/dist/tools/diagnostics/go-runner.js +0 -78
- package/dist/tools/diagnostics/go-runner.js.map +0 -1
- package/dist/tools/diagnostics/python-runner.d.ts +0 -39
- package/dist/tools/diagnostics/python-runner.d.ts.map +0 -1
- package/dist/tools/diagnostics/python-runner.js +0 -200
- package/dist/tools/diagnostics/python-runner.js.map +0 -1
- package/dist/tools/diagnostics/rust-runner.d.ts +0 -34
- package/dist/tools/diagnostics/rust-runner.d.ts.map +0 -1
- package/dist/tools/diagnostics/rust-runner.js +0 -106
- package/dist/tools/diagnostics/rust-runner.js.map +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Event Classifier
|
|
3
|
+
*
|
|
4
|
+
* Classifies GitHub issues and PRs into response categories based on labels and keywords.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Keywords that indicate a bug report
|
|
8
|
+
*/
|
|
9
|
+
const BUG_KEYWORDS = [
|
|
10
|
+
'bug',
|
|
11
|
+
'error',
|
|
12
|
+
'crash',
|
|
13
|
+
'broken',
|
|
14
|
+
'fail',
|
|
15
|
+
'issue',
|
|
16
|
+
'problem',
|
|
17
|
+
'wrong',
|
|
18
|
+
'fix',
|
|
19
|
+
'not working',
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Keywords that indicate a feature request
|
|
23
|
+
*/
|
|
24
|
+
const FEATURE_KEYWORDS = [
|
|
25
|
+
'feature',
|
|
26
|
+
'enhancement',
|
|
27
|
+
'request',
|
|
28
|
+
'add',
|
|
29
|
+
'implement',
|
|
30
|
+
'suggest',
|
|
31
|
+
'would be nice',
|
|
32
|
+
'wish',
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Keywords that indicate a question
|
|
36
|
+
*/
|
|
37
|
+
const QUESTION_KEYWORDS = [
|
|
38
|
+
'how',
|
|
39
|
+
'why',
|
|
40
|
+
'what',
|
|
41
|
+
'when',
|
|
42
|
+
'where',
|
|
43
|
+
'help',
|
|
44
|
+
'question',
|
|
45
|
+
'?',
|
|
46
|
+
];
|
|
47
|
+
/**
|
|
48
|
+
* Classifies based on GitHub labels
|
|
49
|
+
*
|
|
50
|
+
* @param labels - Array of GitHub labels
|
|
51
|
+
* @returns Classification result with high confidence (0.9) if label found, null otherwise
|
|
52
|
+
*/
|
|
53
|
+
export function classifyByLabel(labels) {
|
|
54
|
+
const labelNames = labels.map((l) => l.name.toLowerCase());
|
|
55
|
+
if (labelNames.includes('bug')) {
|
|
56
|
+
return {
|
|
57
|
+
category: 'bug',
|
|
58
|
+
confidence: 0.9,
|
|
59
|
+
reason: 'Labeled as "bug"',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (labelNames.includes('feature') ||
|
|
63
|
+
labelNames.includes('enhancement')) {
|
|
64
|
+
return {
|
|
65
|
+
category: 'feature',
|
|
66
|
+
confidence: 0.9,
|
|
67
|
+
reason: `Labeled as "${labelNames.includes('feature') ? 'feature' : 'enhancement'}"`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (labelNames.includes('question')) {
|
|
71
|
+
return {
|
|
72
|
+
category: 'question',
|
|
73
|
+
confidence: 0.9,
|
|
74
|
+
reason: 'Labeled as "question"',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Classifies based on keyword matching in title and body
|
|
81
|
+
*
|
|
82
|
+
* @param title - Issue/PR title
|
|
83
|
+
* @param body - Issue/PR body (may be null)
|
|
84
|
+
* @returns Classification result with confidence based on keyword matches
|
|
85
|
+
*/
|
|
86
|
+
export function classifyByKeywords(title, body) {
|
|
87
|
+
const text = `${title} ${body || ''}`.toLowerCase();
|
|
88
|
+
// Count matches for each category
|
|
89
|
+
const bugMatches = BUG_KEYWORDS.filter((kw) => text.includes(kw)).length;
|
|
90
|
+
const featureMatches = FEATURE_KEYWORDS.filter((kw) => text.includes(kw)).length;
|
|
91
|
+
const questionMatches = QUESTION_KEYWORDS.filter((kw) => text.includes(kw)).length;
|
|
92
|
+
// Determine category with most matches
|
|
93
|
+
const maxMatches = Math.max(bugMatches, featureMatches, questionMatches);
|
|
94
|
+
// Calculate total unique keywords for confidence
|
|
95
|
+
const totalKeywords = BUG_KEYWORDS.length + FEATURE_KEYWORDS.length + QUESTION_KEYWORDS.length;
|
|
96
|
+
if (maxMatches === 0) {
|
|
97
|
+
return {
|
|
98
|
+
category: 'question',
|
|
99
|
+
confidence: 0.3,
|
|
100
|
+
reason: 'No keywords matched, defaulting to question',
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (bugMatches === maxMatches) {
|
|
104
|
+
return {
|
|
105
|
+
category: 'bug',
|
|
106
|
+
confidence: bugMatches / totalKeywords,
|
|
107
|
+
reason: `Matched ${bugMatches} bug keyword(s)`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (featureMatches === maxMatches) {
|
|
111
|
+
return {
|
|
112
|
+
category: 'feature',
|
|
113
|
+
confidence: featureMatches / totalKeywords,
|
|
114
|
+
reason: `Matched ${featureMatches} feature keyword(s)`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
category: 'question',
|
|
119
|
+
confidence: questionMatches / totalKeywords,
|
|
120
|
+
reason: `Matched ${questionMatches} question keyword(s)`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Classifies a GitHub webhook payload into a response category
|
|
125
|
+
*
|
|
126
|
+
* Uses label-based classification first (high confidence), then falls back
|
|
127
|
+
* to keyword-based classification. Pull requests are always classified as 'pr'.
|
|
128
|
+
*
|
|
129
|
+
* @param payload - GitHub webhook payload
|
|
130
|
+
* @returns Classification result with category, confidence, and reasoning
|
|
131
|
+
*/
|
|
132
|
+
export function classify(payload) {
|
|
133
|
+
// Check if it's a PR payload
|
|
134
|
+
if ('pull_request' in payload) {
|
|
135
|
+
return {
|
|
136
|
+
category: 'pr',
|
|
137
|
+
confidence: 1.0,
|
|
138
|
+
reason: 'Pull request detected',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Issue payload - try label-based classification first
|
|
142
|
+
const issue = payload.issue;
|
|
143
|
+
const labelResult = classifyByLabel(issue.labels);
|
|
144
|
+
if (labelResult) {
|
|
145
|
+
return labelResult;
|
|
146
|
+
}
|
|
147
|
+
// Fall back to keyword-based classification
|
|
148
|
+
return classifyByKeywords(issue.title, issue.body);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and validation for GitHub Auto-Responder
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { AutoResponderConfig } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Zod schema for PersonaConfig validation
|
|
8
|
+
*/
|
|
9
|
+
export declare const PersonaConfigSchema: z.ZodObject<{
|
|
10
|
+
tone: z.ZodEnum<["formal", "friendly", "technical", "casual", "direct"]>;
|
|
11
|
+
technicalDepth: z.ZodEnum<["beginner", "intermediate", "expert", "high"]>;
|
|
12
|
+
language: z.ZodEnum<["en", "ko-mix"]>;
|
|
13
|
+
signatureEmoji: z.ZodString;
|
|
14
|
+
maintainerName: z.ZodString;
|
|
15
|
+
}, "strip", z.ZodTypeAny, {
|
|
16
|
+
language: "en" | "ko-mix";
|
|
17
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
18
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
19
|
+
signatureEmoji: string;
|
|
20
|
+
maintainerName: string;
|
|
21
|
+
}, {
|
|
22
|
+
language: "en" | "ko-mix";
|
|
23
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
24
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
25
|
+
signatureEmoji: string;
|
|
26
|
+
maintainerName: string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Zod schema for AutoResponderConfig validation
|
|
30
|
+
*/
|
|
31
|
+
export declare const AutoResponderConfigSchema: z.ZodObject<{
|
|
32
|
+
webhookSecret: z.ZodString;
|
|
33
|
+
githubToken: z.ZodString;
|
|
34
|
+
anthropicApiKey: z.ZodString;
|
|
35
|
+
selfLogin: z.ZodString;
|
|
36
|
+
mode: z.ZodDefault<z.ZodEnum<["draft", "auto"]>>;
|
|
37
|
+
persona: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
38
|
+
tone: z.ZodEnum<["formal", "friendly", "technical", "casual", "direct"]>;
|
|
39
|
+
technicalDepth: z.ZodEnum<["beginner", "intermediate", "expert", "high"]>;
|
|
40
|
+
language: z.ZodEnum<["en", "ko-mix"]>;
|
|
41
|
+
signatureEmoji: z.ZodString;
|
|
42
|
+
maintainerName: z.ZodString;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
language: "en" | "ko-mix";
|
|
45
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
46
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
47
|
+
signatureEmoji: string;
|
|
48
|
+
maintainerName: string;
|
|
49
|
+
}, {
|
|
50
|
+
language: "en" | "ko-mix";
|
|
51
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
52
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
53
|
+
signatureEmoji: string;
|
|
54
|
+
maintainerName: string;
|
|
55
|
+
}>>>;
|
|
56
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
57
|
+
skipLabels: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
58
|
+
spamPatterns: z.ZodOptional<z.ZodArray<z.ZodType<RegExp, z.ZodTypeDef, RegExp>, "many">>;
|
|
59
|
+
idempotencyDbPath: z.ZodDefault<z.ZodString>;
|
|
60
|
+
maxResponseTokens: z.ZodDefault<z.ZodNumber>;
|
|
61
|
+
llmModel: z.ZodDefault<z.ZodString>;
|
|
62
|
+
}, "strip", z.ZodTypeAny, {
|
|
63
|
+
port: number;
|
|
64
|
+
mode: "auto" | "draft";
|
|
65
|
+
webhookSecret: string;
|
|
66
|
+
githubToken: string;
|
|
67
|
+
anthropicApiKey: string;
|
|
68
|
+
selfLogin: string;
|
|
69
|
+
persona: {
|
|
70
|
+
language: "en" | "ko-mix";
|
|
71
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
72
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
73
|
+
signatureEmoji: string;
|
|
74
|
+
maintainerName: string;
|
|
75
|
+
};
|
|
76
|
+
skipLabels: string[];
|
|
77
|
+
idempotencyDbPath: string;
|
|
78
|
+
maxResponseTokens: number;
|
|
79
|
+
llmModel: string;
|
|
80
|
+
spamPatterns?: RegExp[] | undefined;
|
|
81
|
+
}, {
|
|
82
|
+
webhookSecret: string;
|
|
83
|
+
githubToken: string;
|
|
84
|
+
anthropicApiKey: string;
|
|
85
|
+
selfLogin: string;
|
|
86
|
+
port?: number | undefined;
|
|
87
|
+
mode?: "auto" | "draft" | undefined;
|
|
88
|
+
persona?: {
|
|
89
|
+
language: "en" | "ko-mix";
|
|
90
|
+
tone: "formal" | "friendly" | "technical" | "casual" | "direct";
|
|
91
|
+
technicalDepth: "high" | "beginner" | "intermediate" | "expert";
|
|
92
|
+
signatureEmoji: string;
|
|
93
|
+
maintainerName: string;
|
|
94
|
+
} | undefined;
|
|
95
|
+
skipLabels?: string[] | undefined;
|
|
96
|
+
spamPatterns?: RegExp[] | undefined;
|
|
97
|
+
idempotencyDbPath?: string | undefined;
|
|
98
|
+
maxResponseTokens?: number | undefined;
|
|
99
|
+
llmModel?: string | undefined;
|
|
100
|
+
}>;
|
|
101
|
+
/**
|
|
102
|
+
* Load configuration from environment variables
|
|
103
|
+
*/
|
|
104
|
+
export declare function loadConfigFromEnv(): Partial<AutoResponderConfig>;
|
|
105
|
+
/**
|
|
106
|
+
* Load and validate configuration from environment and optional overrides
|
|
107
|
+
*/
|
|
108
|
+
export declare function loadConfig(overrides?: Partial<AutoResponderConfig>): AutoResponderConfig;
|
|
109
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAC;AASrE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAapC,CAAC;AAEH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA+BhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAKrB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading and validation for GitHub Auto-Responder
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { DEFAULT_PERSONA, DEFAULT_PORT, DEFAULT_SKIP_LABELS, DEFAULT_MAX_RESPONSE_TOKENS, DEFAULT_LLM_MODEL, } from './constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Zod schema for PersonaConfig validation
|
|
8
|
+
*/
|
|
9
|
+
export const PersonaConfigSchema = z.object({
|
|
10
|
+
tone: z.enum(['formal', 'friendly', 'technical', 'casual', 'direct']),
|
|
11
|
+
technicalDepth: z.enum(['beginner', 'intermediate', 'expert', 'high']),
|
|
12
|
+
language: z.enum(['en', 'ko-mix']),
|
|
13
|
+
signatureEmoji: z.string(),
|
|
14
|
+
maintainerName: z.string().min(1),
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Zod schema for AutoResponderConfig validation
|
|
18
|
+
*/
|
|
19
|
+
export const AutoResponderConfigSchema = z.object({
|
|
20
|
+
webhookSecret: z.string().min(1),
|
|
21
|
+
githubToken: z.string().min(1),
|
|
22
|
+
anthropicApiKey: z.string().min(1),
|
|
23
|
+
selfLogin: z.string().min(1),
|
|
24
|
+
mode: z.enum(['draft', 'auto']).default('draft'),
|
|
25
|
+
persona: PersonaConfigSchema.optional().default(DEFAULT_PERSONA),
|
|
26
|
+
port: z.number().default(DEFAULT_PORT),
|
|
27
|
+
skipLabels: z.array(z.string()).default(DEFAULT_SKIP_LABELS),
|
|
28
|
+
spamPatterns: z.array(z.instanceof(RegExp)).optional(),
|
|
29
|
+
idempotencyDbPath: z.string().default('.omc/state/github-auto-responder.db'),
|
|
30
|
+
maxResponseTokens: z.number().default(DEFAULT_MAX_RESPONSE_TOKENS),
|
|
31
|
+
llmModel: z.string().default(DEFAULT_LLM_MODEL),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Load configuration from environment variables
|
|
35
|
+
*/
|
|
36
|
+
export function loadConfigFromEnv() {
|
|
37
|
+
const config = {};
|
|
38
|
+
if (process.env.GITHUB_WEBHOOK_SECRET) {
|
|
39
|
+
config.webhookSecret = process.env.GITHUB_WEBHOOK_SECRET;
|
|
40
|
+
}
|
|
41
|
+
if (process.env.GITHUB_TOKEN) {
|
|
42
|
+
config.githubToken = process.env.GITHUB_TOKEN;
|
|
43
|
+
}
|
|
44
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
|
45
|
+
config.anthropicApiKey = process.env.ANTHROPIC_API_KEY;
|
|
46
|
+
}
|
|
47
|
+
if (process.env.GITHUB_SELF_LOGIN) {
|
|
48
|
+
config.selfLogin = process.env.GITHUB_SELF_LOGIN;
|
|
49
|
+
}
|
|
50
|
+
if (process.env.AUTO_RESPONDER_MODE) {
|
|
51
|
+
config.mode = process.env.AUTO_RESPONDER_MODE;
|
|
52
|
+
}
|
|
53
|
+
if (process.env.AUTO_RESPONDER_PORT) {
|
|
54
|
+
const port = parseInt(process.env.AUTO_RESPONDER_PORT, 10);
|
|
55
|
+
if (!isNaN(port)) {
|
|
56
|
+
config.port = port;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return config;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load and validate configuration from environment and optional overrides
|
|
63
|
+
*/
|
|
64
|
+
export function loadConfig(overrides) {
|
|
65
|
+
const envConfig = loadConfigFromEnv();
|
|
66
|
+
const mergedConfig = { ...envConfig, ...overrides };
|
|
67
|
+
return AutoResponderConfigSchema.parse(mergedConfig);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAChD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;IAChE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC5D,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC;IAC5E,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAChD,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAiC,EAAE,CAAC;IAEhD,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAuC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,SAAwC;IAExC,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAEpD,OAAO,yBAAyB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for GitHub Auto-Responder
|
|
3
|
+
*/
|
|
4
|
+
import type { PersonaConfig } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default persona configuration for auto-responses
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_PERSONA: PersonaConfig;
|
|
9
|
+
/**
|
|
10
|
+
* Labels that prevent auto-reply
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_SKIP_LABELS: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Patterns for spam detection
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_SPAM_PATTERNS: RegExp[];
|
|
17
|
+
/**
|
|
18
|
+
* GitHub API base URL
|
|
19
|
+
*/
|
|
20
|
+
export declare const GITHUB_API_BASE = "https://api.github.com";
|
|
21
|
+
/**
|
|
22
|
+
* Anthropic API endpoint
|
|
23
|
+
*/
|
|
24
|
+
export declare const ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
|
|
25
|
+
/**
|
|
26
|
+
* Default server port
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_PORT = 3000;
|
|
29
|
+
/**
|
|
30
|
+
* Default LLM model for responses
|
|
31
|
+
*/
|
|
32
|
+
export declare const DEFAULT_LLM_MODEL = "claude-sonnet-4-20250514";
|
|
33
|
+
/**
|
|
34
|
+
* Maximum tokens for LLM response
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_MAX_RESPONSE_TOKENS = 500;
|
|
37
|
+
/**
|
|
38
|
+
* Response timeout in milliseconds
|
|
39
|
+
*/
|
|
40
|
+
export declare const RESPONSE_TIMEOUT_MS = 8000;
|
|
41
|
+
/**
|
|
42
|
+
* Idempotency key TTL (24 hours)
|
|
43
|
+
*/
|
|
44
|
+
export declare const IDEMPOTENCY_TTL_MS: number;
|
|
45
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAM7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,UAAkC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAYzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,iBAAiB,0CAA0C,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAsB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for GitHub Auto-Responder
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default persona configuration for auto-responses
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_PERSONA = {
|
|
8
|
+
tone: 'direct',
|
|
9
|
+
technicalDepth: 'high',
|
|
10
|
+
language: 'ko-mix', // Korean/English blend
|
|
11
|
+
signatureEmoji: '🦞',
|
|
12
|
+
maintainerName: 'Yeachan Heo',
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Labels that prevent auto-reply
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_SKIP_LABELS = ['no-auto-reply', 'bot-ignore'];
|
|
18
|
+
/**
|
|
19
|
+
* Patterns for spam detection
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_SPAM_PATTERNS = [
|
|
22
|
+
// ALL CAPS patterns (ignoring short acronyms)
|
|
23
|
+
/\b[A-Z]{10,}\b/,
|
|
24
|
+
/^[A-Z\s!?]{50,}$/,
|
|
25
|
+
// Excessive links (5+ URLs in a comment)
|
|
26
|
+
/(?:https?:\/\/[^\s]+.*?){5,}/,
|
|
27
|
+
// Known spam phrases
|
|
28
|
+
/\b(?:click here now|buy now|limited time offer|act now|free money|winner|congratulations you won)\b/i,
|
|
29
|
+
/\b(?:earn \$\d+|make money fast|work from home|100% free|risk free)\b/i,
|
|
30
|
+
/\b(?:casino|viagra|cialis|lottery|pills)\b/i,
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* GitHub API base URL
|
|
34
|
+
*/
|
|
35
|
+
export const GITHUB_API_BASE = 'https://api.github.com';
|
|
36
|
+
/**
|
|
37
|
+
* Anthropic API endpoint
|
|
38
|
+
*/
|
|
39
|
+
export const ANTHROPIC_API_URL = 'https://api.anthropic.com/v1/messages';
|
|
40
|
+
/**
|
|
41
|
+
* Default server port
|
|
42
|
+
*/
|
|
43
|
+
export const DEFAULT_PORT = 3000;
|
|
44
|
+
/**
|
|
45
|
+
* Default LLM model for responses
|
|
46
|
+
*/
|
|
47
|
+
export const DEFAULT_LLM_MODEL = 'claude-sonnet-4-20250514';
|
|
48
|
+
/**
|
|
49
|
+
* Maximum tokens for LLM response
|
|
50
|
+
*/
|
|
51
|
+
export const DEFAULT_MAX_RESPONSE_TOKENS = 500;
|
|
52
|
+
/**
|
|
53
|
+
* Response timeout in milliseconds
|
|
54
|
+
*/
|
|
55
|
+
export const RESPONSE_TIMEOUT_MS = 8000;
|
|
56
|
+
/**
|
|
57
|
+
* Idempotency key TTL (24 hours)
|
|
58
|
+
*/
|
|
59
|
+
export const IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1000;
|
|
60
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE,MAAM;IACtB,QAAQ,EAAE,QAAQ,EAAE,uBAAuB;IAC3C,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,aAAa;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC7C,8CAA8C;IAC9C,gBAAgB;IAChB,kBAAkB;IAElB,yCAAyC;IACzC,8BAA8B;IAE9B,qBAAqB;IACrB,sGAAsG;IACtG,wEAAwE;IACxE,6CAA6C;CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter pipeline for GitHub webhook payloads
|
|
3
|
+
*
|
|
4
|
+
* Filters determine whether to skip responding to an issue or PR based on:
|
|
5
|
+
* - Bot detection
|
|
6
|
+
* - Self-response prevention
|
|
7
|
+
* - Label-based skipping
|
|
8
|
+
* - Spam detection
|
|
9
|
+
* - Action filtering (only 'opened' events)
|
|
10
|
+
*/
|
|
11
|
+
import type { WebhookPayload, FilterResult, GitHubIssuePayload, GitHubPRPayload } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Type guard: Check if payload is an issue payload
|
|
14
|
+
*
|
|
15
|
+
* @param payload - Webhook payload
|
|
16
|
+
* @returns True if payload contains an issue
|
|
17
|
+
*/
|
|
18
|
+
export declare function isIssuePayload(payload: WebhookPayload): payload is GitHubIssuePayload;
|
|
19
|
+
/**
|
|
20
|
+
* Type guard: Check if payload is a pull request payload
|
|
21
|
+
*
|
|
22
|
+
* @param payload - Webhook payload
|
|
23
|
+
* @returns True if payload contains a pull request
|
|
24
|
+
*/
|
|
25
|
+
export declare function isPRPayload(payload: WebhookPayload): payload is GitHubPRPayload;
|
|
26
|
+
/**
|
|
27
|
+
* Filter: Skip bot-generated events
|
|
28
|
+
*
|
|
29
|
+
* @param payload - Webhook payload
|
|
30
|
+
* @returns Filter result (skip if sender is a bot)
|
|
31
|
+
*/
|
|
32
|
+
export declare function filterBot(payload: WebhookPayload): FilterResult;
|
|
33
|
+
/**
|
|
34
|
+
* Filter: Skip self-generated events
|
|
35
|
+
*
|
|
36
|
+
* @param payload - Webhook payload
|
|
37
|
+
* @param selfLogin - Bot's own GitHub username
|
|
38
|
+
* @returns Filter result (skip if sender is self)
|
|
39
|
+
*/
|
|
40
|
+
export declare function filterSelf(payload: WebhookPayload, selfLogin: string): FilterResult;
|
|
41
|
+
/**
|
|
42
|
+
* Filter: Skip issues/PRs with excluded labels
|
|
43
|
+
*
|
|
44
|
+
* @param payload - Webhook payload
|
|
45
|
+
* @param skipLabels - Labels that prevent auto-response
|
|
46
|
+
* @returns Filter result (skip if any skip label is present)
|
|
47
|
+
*/
|
|
48
|
+
export declare function filterLabel(payload: WebhookPayload, skipLabels: string[]): FilterResult;
|
|
49
|
+
/**
|
|
50
|
+
* Filter: Skip spam-like content
|
|
51
|
+
*
|
|
52
|
+
* @param payload - Webhook payload
|
|
53
|
+
* @param spamPatterns - Regex patterns to detect spam
|
|
54
|
+
* @returns Filter result (skip if title or body matches spam pattern)
|
|
55
|
+
*/
|
|
56
|
+
export declare function filterSpam(payload: WebhookPayload, spamPatterns: RegExp[]): FilterResult;
|
|
57
|
+
/**
|
|
58
|
+
* Filter: Skip non-opened actions
|
|
59
|
+
*
|
|
60
|
+
* Only respond to newly opened issues and PRs.
|
|
61
|
+
*
|
|
62
|
+
* @param payload - Webhook payload
|
|
63
|
+
* @returns Filter result (skip if action is not 'opened')
|
|
64
|
+
*/
|
|
65
|
+
export declare function filterAction(payload: WebhookPayload): FilterResult;
|
|
66
|
+
/**
|
|
67
|
+
* Create a filter pipeline that runs all filters in sequence
|
|
68
|
+
*
|
|
69
|
+
* Filters are run in order:
|
|
70
|
+
* 1. Bot check
|
|
71
|
+
* 2. Self check
|
|
72
|
+
* 3. Action check (only 'opened')
|
|
73
|
+
* 4. Label check
|
|
74
|
+
* 5. Spam check
|
|
75
|
+
*
|
|
76
|
+
* Pipeline short-circuits on first skip (returns immediately).
|
|
77
|
+
*
|
|
78
|
+
* @param selfLogin - Bot's own GitHub username
|
|
79
|
+
* @param skipLabels - Labels that prevent auto-response
|
|
80
|
+
* @param spamPatterns - Spam detection patterns (defaults to DEFAULT_SPAM_PATTERNS)
|
|
81
|
+
* @returns Filter function that returns skip decision
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const filter = createFilterPipeline('my-bot', ['no-auto-reply']);
|
|
86
|
+
* const result = await filter(payload);
|
|
87
|
+
* if (result.skip) {
|
|
88
|
+
* console.log('Skipping:', result.reason);
|
|
89
|
+
* return;
|
|
90
|
+
* }
|
|
91
|
+
* // Process payload...
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export declare function createFilterPipeline(selfLogin: string, skipLabels: string[], spamPatterns?: RegExp[]): (payload: WebhookPayload) => Promise<FilterResult>;
|
|
95
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/hooks/github-auto-responder/filters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,IAAI,kBAAkB,CAE/B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,GACtB,OAAO,IAAI,eAAe,CAE5B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAS/D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,GAChB,YAAY,CASd;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAAE,GACnB,YAAY,CAed;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,EAAE,GACrB,YAAY,CAsBd;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CASlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,GAAE,MAAM,EAA0B,GAC7C,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,YAAY,CAAC,CAqBpD"}
|