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,74 +1,60 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Directory Diagnostics - Project-level QA enforcement
|
|
3
3
|
*
|
|
4
|
-
* Provides
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Provides strategy-based diagnostics for multiple languages:
|
|
5
|
+
* - TypeScript: tsc --noEmit
|
|
6
|
+
* - Go: go vet
|
|
7
|
+
* - Rust: cargo check
|
|
8
|
+
* - Python: mypy / pylint
|
|
9
|
+
* - Fallback: LSP iteration
|
|
7
10
|
*/
|
|
8
|
-
import { existsSync } from 'fs';
|
|
11
|
+
import { existsSync, statSync, realpathSync } from 'fs';
|
|
9
12
|
import { join } from 'path';
|
|
10
13
|
import { runTscDiagnostics } from './tsc-runner.js';
|
|
11
14
|
import { runLspAggregatedDiagnostics } from './lsp-aggregator.js';
|
|
15
|
+
import { runGoDiagnostics } from './go-runner.js';
|
|
16
|
+
import { runRustDiagnostics } from './rust-runner.js';
|
|
17
|
+
import { runPythonDiagnostics } from './python-runner.js';
|
|
12
18
|
import { formatDiagnostics } from '../lsp/utils.js';
|
|
13
|
-
export
|
|
19
|
+
export { EXTERNAL_PROCESS_TIMEOUT_MS, LSP_DIAGNOSTICS_WAIT_MS } from './constants.js';
|
|
14
20
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const hasTsconfig = existsSync(tsconfigPath);
|
|
23
|
-
// Determine which strategy to use
|
|
24
|
-
let useStrategy;
|
|
25
|
-
if (strategy === 'auto') {
|
|
26
|
-
useStrategy = hasTsconfig ? 'tsc' : 'lsp';
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
useStrategy = strategy;
|
|
30
|
-
}
|
|
31
|
-
// Run diagnostics based on strategy
|
|
32
|
-
if (useStrategy === 'tsc' && hasTsconfig) {
|
|
33
|
-
return formatTscResult(runTscDiagnostics(directory));
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return formatLspResult(await runLspAggregatedDiagnostics(directory));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Format tsc results into standard format
|
|
21
|
+
* Format any diagnostic result into standard DirectoryDiagnosticResult
|
|
22
|
+
* Uses generics to accept any diagnostic type that extends BaseDiagnostic.
|
|
23
|
+
* The `code` property is accessed via runtime check since not all diagnostics have it.
|
|
24
|
+
*
|
|
25
|
+
* @param result - Result with diagnostics (TscResult, GoResult, RustResult, PythonResult)
|
|
26
|
+
* @param strategy - The strategy name
|
|
27
|
+
* @param toolName - Human-readable tool name for messages
|
|
41
28
|
*/
|
|
42
|
-
function
|
|
29
|
+
function formatDiagnosticResult(result, strategy, toolName) {
|
|
43
30
|
let diagnostics = '';
|
|
44
31
|
let summary = '';
|
|
45
32
|
if (result.diagnostics.length === 0) {
|
|
46
|
-
diagnostics =
|
|
47
|
-
summary =
|
|
33
|
+
diagnostics = `No diagnostics found. ${toolName} passed!`;
|
|
34
|
+
summary = `${toolName} passed: 0 errors, 0 warnings`;
|
|
48
35
|
}
|
|
49
36
|
else {
|
|
50
|
-
// Group diagnostics by file
|
|
51
37
|
const byFile = new Map();
|
|
52
38
|
for (const diag of result.diagnostics) {
|
|
53
|
-
if (!byFile.has(diag.file))
|
|
39
|
+
if (!byFile.has(diag.file))
|
|
54
40
|
byFile.set(diag.file, []);
|
|
55
|
-
}
|
|
56
41
|
byFile.get(diag.file).push(diag);
|
|
57
42
|
}
|
|
58
|
-
// Format each file's diagnostics
|
|
59
43
|
const fileOutputs = [];
|
|
60
44
|
for (const [file, diags] of byFile) {
|
|
61
45
|
let fileOutput = `${file}:\n`;
|
|
62
46
|
for (const diag of diags) {
|
|
63
|
-
|
|
47
|
+
// Use runtime check for 'code' since GoDiagnostic doesn't have it
|
|
48
|
+
const code = 'code' in diag && diag.code ? ` [${diag.code}]` : '';
|
|
49
|
+
fileOutput += ` ${diag.line}:${diag.column} - ${diag.severity}${code}: ${diag.message}\n`;
|
|
64
50
|
}
|
|
65
51
|
fileOutputs.push(fileOutput);
|
|
66
52
|
}
|
|
67
53
|
diagnostics = fileOutputs.join('\n');
|
|
68
|
-
summary =
|
|
54
|
+
summary = `${toolName} ${result.success ? 'passed' : 'failed'}: ${result.errorCount} errors, ${result.warningCount} warnings`;
|
|
69
55
|
}
|
|
70
56
|
return {
|
|
71
|
-
strategy
|
|
57
|
+
strategy,
|
|
72
58
|
success: result.success,
|
|
73
59
|
errorCount: result.errorCount,
|
|
74
60
|
warningCount: result.warningCount,
|
|
@@ -76,6 +62,118 @@ function formatTscResult(result) {
|
|
|
76
62
|
summary
|
|
77
63
|
};
|
|
78
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a standardized skipped result
|
|
67
|
+
* @param summary - Reason for skipping (will be prefixed appropriately)
|
|
68
|
+
*/
|
|
69
|
+
function makeSkippedResult(summary) {
|
|
70
|
+
return {
|
|
71
|
+
strategy: 'skipped',
|
|
72
|
+
success: true,
|
|
73
|
+
errorCount: 0,
|
|
74
|
+
warningCount: 0,
|
|
75
|
+
diagnostics: '',
|
|
76
|
+
summary
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Detect project type from directory contents
|
|
81
|
+
*
|
|
82
|
+
* Priority order (first match wins):
|
|
83
|
+
* 1. tsconfig.json → 'typescript'
|
|
84
|
+
* 2. go.mod → 'go'
|
|
85
|
+
* 3. Cargo.toml → 'rust'
|
|
86
|
+
* 4. pyproject.toml / requirements.txt / setup.py → 'python'
|
|
87
|
+
* 5. (none) → 'unknown'
|
|
88
|
+
*
|
|
89
|
+
* Note: In monorepo scenarios with multiple project types,
|
|
90
|
+
* only the first match is returned. Use explicit strategy
|
|
91
|
+
* parameter to target a specific language.
|
|
92
|
+
*/
|
|
93
|
+
function detectProjectType(directory) {
|
|
94
|
+
if (existsSync(join(directory, 'tsconfig.json')))
|
|
95
|
+
return 'typescript';
|
|
96
|
+
if (existsSync(join(directory, 'go.mod')))
|
|
97
|
+
return 'go';
|
|
98
|
+
if (existsSync(join(directory, 'Cargo.toml')))
|
|
99
|
+
return 'rust';
|
|
100
|
+
if (existsSync(join(directory, 'pyproject.toml')) ||
|
|
101
|
+
existsSync(join(directory, 'requirements.txt')) ||
|
|
102
|
+
existsSync(join(directory, 'setup.py')))
|
|
103
|
+
return 'python';
|
|
104
|
+
return 'unknown';
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run directory-level diagnostics using the best available strategy
|
|
108
|
+
* @param directory - Project directory to check
|
|
109
|
+
* @param strategy - Strategy to use ('tsc', 'go', 'rust', 'python', 'lsp', or 'auto')
|
|
110
|
+
* @returns Diagnostic results
|
|
111
|
+
*/
|
|
112
|
+
export async function runDirectoryDiagnostics(directory, strategy = 'auto') {
|
|
113
|
+
// Validate directory exists
|
|
114
|
+
if (!existsSync(directory)) {
|
|
115
|
+
return makeSkippedResult(`Diagnostics skipped: directory does not exist: ${directory}`);
|
|
116
|
+
}
|
|
117
|
+
// Check if it's actually a directory (not a file)
|
|
118
|
+
if (!statSync(directory).isDirectory()) {
|
|
119
|
+
return makeSkippedResult(`Diagnostics skipped: path is not a directory: ${directory}`);
|
|
120
|
+
}
|
|
121
|
+
// Resolve symlinks to normalize the path
|
|
122
|
+
let resolvedDirectory;
|
|
123
|
+
try {
|
|
124
|
+
resolvedDirectory = realpathSync(directory);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return makeSkippedResult(`Diagnostics skipped: cannot resolve directory path: ${directory}`);
|
|
128
|
+
}
|
|
129
|
+
let useStrategy;
|
|
130
|
+
if (strategy === 'auto') {
|
|
131
|
+
const projectType = detectProjectType(resolvedDirectory);
|
|
132
|
+
switch (projectType) {
|
|
133
|
+
case 'typescript':
|
|
134
|
+
useStrategy = 'tsc';
|
|
135
|
+
break;
|
|
136
|
+
case 'go':
|
|
137
|
+
useStrategy = 'go';
|
|
138
|
+
break;
|
|
139
|
+
case 'rust':
|
|
140
|
+
useStrategy = 'rust';
|
|
141
|
+
break;
|
|
142
|
+
case 'python':
|
|
143
|
+
useStrategy = 'python';
|
|
144
|
+
break;
|
|
145
|
+
default: useStrategy = 'lsp';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Explicit strategy requested - use it directly.
|
|
150
|
+
// NOTE: Unlike the old behavior, explicit 'tsc' without tsconfig.json
|
|
151
|
+
// will NOT fall back to 'lsp'. The runner handles missing config gracefully.
|
|
152
|
+
useStrategy = strategy;
|
|
153
|
+
}
|
|
154
|
+
switch (useStrategy) {
|
|
155
|
+
case 'tsc':
|
|
156
|
+
return formatTscResult(runTscDiagnostics(resolvedDirectory));
|
|
157
|
+
case 'go':
|
|
158
|
+
return formatGoResult(runGoDiagnostics(resolvedDirectory));
|
|
159
|
+
case 'rust':
|
|
160
|
+
return formatRustResult(runRustDiagnostics(resolvedDirectory));
|
|
161
|
+
case 'python':
|
|
162
|
+
return formatPythonResult(runPythonDiagnostics(resolvedDirectory));
|
|
163
|
+
case 'lsp':
|
|
164
|
+
default:
|
|
165
|
+
return formatLspResult(await runLspAggregatedDiagnostics(resolvedDirectory));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Format tsc results into standard format
|
|
170
|
+
*/
|
|
171
|
+
function formatTscResult(result) {
|
|
172
|
+
if (result.skipped) {
|
|
173
|
+
return makeSkippedResult(`TypeScript diagnostics skipped: ${result.skipped}`);
|
|
174
|
+
}
|
|
175
|
+
return formatDiagnosticResult(result, 'tsc', 'TypeScript check');
|
|
176
|
+
}
|
|
79
177
|
/**
|
|
80
178
|
* Format LSP aggregation results into standard format
|
|
81
179
|
*/
|
|
@@ -113,6 +211,38 @@ function formatLspResult(result) {
|
|
|
113
211
|
summary
|
|
114
212
|
};
|
|
115
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Format Go vet results into standard format
|
|
216
|
+
*/
|
|
217
|
+
function formatGoResult(result) {
|
|
218
|
+
if (result.skipped) {
|
|
219
|
+
return makeSkippedResult(`Go diagnostics skipped: ${result.skipped}`);
|
|
220
|
+
}
|
|
221
|
+
return formatDiagnosticResult(result, 'go', 'Go vet');
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Format Cargo check results into standard format
|
|
225
|
+
*/
|
|
226
|
+
function formatRustResult(result) {
|
|
227
|
+
if (result.skipped) {
|
|
228
|
+
return makeSkippedResult(`Rust diagnostics skipped: ${result.skipped}`);
|
|
229
|
+
}
|
|
230
|
+
return formatDiagnosticResult(result, 'rust', 'Cargo check');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Format Python diagnostics results into standard format
|
|
234
|
+
*/
|
|
235
|
+
function formatPythonResult(result) {
|
|
236
|
+
if (result.skipped) {
|
|
237
|
+
return makeSkippedResult(`Python diagnostics skipped: ${result.skipped}`);
|
|
238
|
+
}
|
|
239
|
+
const toolName = result.tool === 'mypy' ? 'Mypy' : result.tool === 'pylint' ? 'Pylint' : 'Python';
|
|
240
|
+
return formatDiagnosticResult(result, 'python', toolName);
|
|
241
|
+
}
|
|
116
242
|
export { runTscDiagnostics } from './tsc-runner.js';
|
|
117
243
|
export { runLspAggregatedDiagnostics } from './lsp-aggregator.js';
|
|
244
|
+
export { runGoDiagnostics } from './go-runner.js';
|
|
245
|
+
export { runRustDiagnostics } from './rust-runner.js';
|
|
246
|
+
export { runPythonDiagnostics } from './python-runner.js';
|
|
247
|
+
export { detectProjectType };
|
|
118
248
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,22 @@ export interface LspAggregationResult {
|
|
|
16
16
|
warningCount: number;
|
|
17
17
|
filesChecked: number;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Get all file extensions supported by configured LSP servers.
|
|
21
|
+
* Cached at module level because LSP_SERVERS is a static configuration.
|
|
22
|
+
* Call invalidateExtensionCache() if LSP_SERVERS is ever made dynamic.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getAllSupportedExtensions(): string[];
|
|
25
|
+
/**
|
|
26
|
+
* Invalidate the cached extensions list.
|
|
27
|
+
* Call this if LSP_SERVERS is modified at runtime.
|
|
28
|
+
* Currently LSP_SERVERS is a static const, so this is for future-proofing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function invalidateExtensionCache(): void;
|
|
19
31
|
/**
|
|
20
32
|
* Run LSP diagnostics on all TypeScript/JavaScript files in a directory
|
|
21
33
|
* @param directory - Project directory to scan
|
|
22
|
-
* @param extensions - File extensions to check (
|
|
34
|
+
* @param extensions - File extensions to check (optional, defaults to all LSP-supported extensions)
|
|
23
35
|
* @returns Aggregated diagnostics from all files
|
|
24
36
|
*/
|
|
25
37
|
export declare function runLspAggregatedDiagnostics(directory: string, extensions?: string[]): Promise<LspAggregationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-aggregator.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-aggregator.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAWpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AA6CD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAkD/B"}
|
|
@@ -7,7 +7,34 @@
|
|
|
7
7
|
import { readdirSync, statSync } from 'fs';
|
|
8
8
|
import { join, extname } from 'path';
|
|
9
9
|
import { lspClientManager } from '../lsp/index.js';
|
|
10
|
-
import { LSP_DIAGNOSTICS_WAIT_MS } from './
|
|
10
|
+
import { LSP_DIAGNOSTICS_WAIT_MS } from './constants.js';
|
|
11
|
+
import { LSP_SERVERS } from '../lsp/servers.js';
|
|
12
|
+
let _cachedExtensions = null;
|
|
13
|
+
/**
|
|
14
|
+
* Get all file extensions supported by configured LSP servers.
|
|
15
|
+
* Cached at module level because LSP_SERVERS is a static configuration.
|
|
16
|
+
* Call invalidateExtensionCache() if LSP_SERVERS is ever made dynamic.
|
|
17
|
+
*/
|
|
18
|
+
export function getAllSupportedExtensions() {
|
|
19
|
+
if (_cachedExtensions)
|
|
20
|
+
return _cachedExtensions;
|
|
21
|
+
const extensions = new Set();
|
|
22
|
+
for (const config of Object.values(LSP_SERVERS)) {
|
|
23
|
+
for (const ext of config.extensions) {
|
|
24
|
+
extensions.add(ext);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
_cachedExtensions = Array.from(extensions);
|
|
28
|
+
return _cachedExtensions;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Invalidate the cached extensions list.
|
|
32
|
+
* Call this if LSP_SERVERS is modified at runtime.
|
|
33
|
+
* Currently LSP_SERVERS is a static const, so this is for future-proofing.
|
|
34
|
+
*/
|
|
35
|
+
export function invalidateExtensionCache() {
|
|
36
|
+
_cachedExtensions = null;
|
|
37
|
+
}
|
|
11
38
|
/**
|
|
12
39
|
* Recursively find files with given extensions
|
|
13
40
|
*/
|
|
@@ -51,12 +78,13 @@ function findFiles(directory, extensions, ignoreDirs = []) {
|
|
|
51
78
|
/**
|
|
52
79
|
* Run LSP diagnostics on all TypeScript/JavaScript files in a directory
|
|
53
80
|
* @param directory - Project directory to scan
|
|
54
|
-
* @param extensions - File extensions to check (
|
|
81
|
+
* @param extensions - File extensions to check (optional, defaults to all LSP-supported extensions)
|
|
55
82
|
* @returns Aggregated diagnostics from all files
|
|
56
83
|
*/
|
|
57
|
-
export async function runLspAggregatedDiagnostics(directory, extensions
|
|
84
|
+
export async function runLspAggregatedDiagnostics(directory, extensions) {
|
|
85
|
+
const effectiveExtensions = extensions ?? getAllSupportedExtensions();
|
|
58
86
|
// Find all matching files
|
|
59
|
-
const files = findFiles(directory,
|
|
87
|
+
const files = findFiles(directory, effectiveExtensions, ['node_modules', 'dist', 'build', '.git']);
|
|
60
88
|
const allDiagnostics = [];
|
|
61
89
|
let filesChecked = 0;
|
|
62
90
|
for (const file of files) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-aggregator.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"lsp-aggregator.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/lsp-aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Diagnostics Runner
|
|
3
|
+
*
|
|
4
|
+
* Uses mypy for type checking of Python projects.
|
|
5
|
+
* Falls back to pylint if mypy unavailable.
|
|
6
|
+
*/
|
|
7
|
+
export interface PythonDiagnostic {
|
|
8
|
+
file: string;
|
|
9
|
+
line: number;
|
|
10
|
+
column: number;
|
|
11
|
+
code: string;
|
|
12
|
+
message: string;
|
|
13
|
+
severity: 'error' | 'warning';
|
|
14
|
+
}
|
|
15
|
+
export interface PythonResult {
|
|
16
|
+
success: boolean;
|
|
17
|
+
diagnostics: PythonDiagnostic[];
|
|
18
|
+
errorCount: number;
|
|
19
|
+
warningCount: number;
|
|
20
|
+
tool: 'mypy' | 'pylint' | 'none';
|
|
21
|
+
skipped?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Run Python diagnostics on a directory
|
|
25
|
+
* @param directory - Project directory
|
|
26
|
+
* @returns Result with diagnostics
|
|
27
|
+
*/
|
|
28
|
+
export declare function runPythonDiagnostics(directory: string): PythonResult;
|
|
29
|
+
/**
|
|
30
|
+
* Parse mypy output
|
|
31
|
+
* Format: file.py:line:col: severity: message [code]
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseMypyOutput(output: string): PythonResult;
|
|
34
|
+
/**
|
|
35
|
+
* Parse pylint output
|
|
36
|
+
* Format: file.py:line:col: code: message
|
|
37
|
+
*/
|
|
38
|
+
export declare function parsePylintOutput(output: string): PythonResult;
|
|
39
|
+
//# sourceMappingURL=python-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-runner.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/python-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAgCpE;AAiDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA2B5D;AAiDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CA4B9D"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Python Diagnostics Runner
|
|
3
|
+
*
|
|
4
|
+
* Uses mypy for type checking of Python projects.
|
|
5
|
+
* Falls back to pylint if mypy unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import { execFileSync } from 'child_process';
|
|
8
|
+
import { existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { commandExists } from '../lsp/servers.js';
|
|
11
|
+
import { EXTERNAL_PROCESS_TIMEOUT_MS } from './constants.js';
|
|
12
|
+
/**
|
|
13
|
+
* Run Python diagnostics on a directory
|
|
14
|
+
* @param directory - Project directory
|
|
15
|
+
* @returns Result with diagnostics
|
|
16
|
+
*/
|
|
17
|
+
export function runPythonDiagnostics(directory) {
|
|
18
|
+
const hasPyproject = existsSync(join(directory, 'pyproject.toml'));
|
|
19
|
+
const hasRequirements = existsSync(join(directory, 'requirements.txt'));
|
|
20
|
+
const hasSetupPy = existsSync(join(directory, 'setup.py'));
|
|
21
|
+
if (!hasPyproject && !hasRequirements && !hasSetupPy) {
|
|
22
|
+
return {
|
|
23
|
+
success: true,
|
|
24
|
+
diagnostics: [],
|
|
25
|
+
errorCount: 0,
|
|
26
|
+
warningCount: 0,
|
|
27
|
+
tool: 'none',
|
|
28
|
+
skipped: 'no Python project files found (pyproject.toml, requirements.txt, or setup.py)'
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (commandExists('mypy')) {
|
|
32
|
+
return runMypy(directory);
|
|
33
|
+
}
|
|
34
|
+
if (commandExists('pylint')) {
|
|
35
|
+
return runPylint(directory);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
success: true,
|
|
39
|
+
diagnostics: [],
|
|
40
|
+
errorCount: 0,
|
|
41
|
+
warningCount: 0,
|
|
42
|
+
tool: 'none',
|
|
43
|
+
skipped: 'neither mypy nor pylint found in PATH'
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function runMypy(directory) {
|
|
47
|
+
try {
|
|
48
|
+
execFileSync('mypy', ['.', '--ignore-missing-imports'], {
|
|
49
|
+
cwd: directory,
|
|
50
|
+
encoding: 'utf-8',
|
|
51
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
52
|
+
timeout: EXTERNAL_PROCESS_TIMEOUT_MS
|
|
53
|
+
});
|
|
54
|
+
return {
|
|
55
|
+
success: true,
|
|
56
|
+
diagnostics: [],
|
|
57
|
+
errorCount: 0,
|
|
58
|
+
warningCount: 0,
|
|
59
|
+
tool: 'mypy'
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const output = error.stdout || '';
|
|
64
|
+
if (error.code === 'ENOENT') {
|
|
65
|
+
return {
|
|
66
|
+
success: true,
|
|
67
|
+
diagnostics: [],
|
|
68
|
+
errorCount: 0,
|
|
69
|
+
warningCount: 0,
|
|
70
|
+
tool: 'mypy',
|
|
71
|
+
skipped: '`mypy` binary not found in PATH'
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (!output.trim()) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
diagnostics: [{
|
|
78
|
+
file: '.',
|
|
79
|
+
line: 0,
|
|
80
|
+
column: 0,
|
|
81
|
+
code: 'mypy-crash',
|
|
82
|
+
message: 'mypy exited with errors but produced no diagnostic output (possible configuration issue)',
|
|
83
|
+
severity: 'error'
|
|
84
|
+
}],
|
|
85
|
+
errorCount: 1,
|
|
86
|
+
warningCount: 0,
|
|
87
|
+
tool: 'mypy'
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return parseMypyOutput(output);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Parse mypy output
|
|
95
|
+
* Format: file.py:line:col: severity: message [code]
|
|
96
|
+
*/
|
|
97
|
+
export function parseMypyOutput(output) {
|
|
98
|
+
const diagnostics = [];
|
|
99
|
+
const regex = /^(.+?\.py):(\d+):(\d+): (error|warning|note): (.+?)(?:\s+\[([^\]]+)\])?$/gm;
|
|
100
|
+
let match;
|
|
101
|
+
while ((match = regex.exec(output)) !== null) {
|
|
102
|
+
if (match[4] === 'note')
|
|
103
|
+
continue;
|
|
104
|
+
diagnostics.push({
|
|
105
|
+
file: match[1],
|
|
106
|
+
line: parseInt(match[2], 10),
|
|
107
|
+
column: parseInt(match[3], 10),
|
|
108
|
+
severity: match[4] === 'error' ? 'error' : 'warning',
|
|
109
|
+
message: match[5],
|
|
110
|
+
code: match[6] || ''
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const errorCount = diagnostics.filter(d => d.severity === 'error').length;
|
|
114
|
+
const warningCount = diagnostics.filter(d => d.severity === 'warning').length;
|
|
115
|
+
return {
|
|
116
|
+
success: errorCount === 0,
|
|
117
|
+
diagnostics,
|
|
118
|
+
errorCount,
|
|
119
|
+
warningCount,
|
|
120
|
+
tool: 'mypy'
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function runPylint(directory) {
|
|
124
|
+
try {
|
|
125
|
+
execFileSync('pylint', ['--output-format=text', '--score=no', '.'], {
|
|
126
|
+
cwd: directory,
|
|
127
|
+
encoding: 'utf-8',
|
|
128
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
129
|
+
timeout: EXTERNAL_PROCESS_TIMEOUT_MS
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
diagnostics: [],
|
|
134
|
+
errorCount: 0,
|
|
135
|
+
warningCount: 0,
|
|
136
|
+
tool: 'pylint'
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const output = error.stdout || error.stderr || '';
|
|
141
|
+
if (error.code === 'ENOENT') {
|
|
142
|
+
return {
|
|
143
|
+
success: true,
|
|
144
|
+
diagnostics: [],
|
|
145
|
+
errorCount: 0,
|
|
146
|
+
warningCount: 0,
|
|
147
|
+
tool: 'pylint',
|
|
148
|
+
skipped: '`pylint` binary not found in PATH'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (!output.trim()) {
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
diagnostics: [{
|
|
155
|
+
file: '.',
|
|
156
|
+
line: 0,
|
|
157
|
+
column: 0,
|
|
158
|
+
code: 'pylint-crash',
|
|
159
|
+
message: 'pylint exited with errors but produced no diagnostic output (possible configuration issue)',
|
|
160
|
+
severity: 'error'
|
|
161
|
+
}],
|
|
162
|
+
errorCount: 1,
|
|
163
|
+
warningCount: 0,
|
|
164
|
+
tool: 'pylint'
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return parsePylintOutput(output);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Parse pylint output
|
|
172
|
+
* Format: file.py:line:col: code: message
|
|
173
|
+
*/
|
|
174
|
+
export function parsePylintOutput(output) {
|
|
175
|
+
const diagnostics = [];
|
|
176
|
+
const regex = /^(.+?\.py):(\d+):(\d+): ([A-Z]\d+): (.+)$/gm;
|
|
177
|
+
let match;
|
|
178
|
+
while ((match = regex.exec(output)) !== null) {
|
|
179
|
+
const code = match[4];
|
|
180
|
+
const isError = code.startsWith('E') || code.startsWith('F');
|
|
181
|
+
diagnostics.push({
|
|
182
|
+
file: match[1],
|
|
183
|
+
line: parseInt(match[2], 10),
|
|
184
|
+
column: parseInt(match[3], 10),
|
|
185
|
+
code: code,
|
|
186
|
+
message: match[5],
|
|
187
|
+
severity: isError ? 'error' : 'warning'
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const errorCount = diagnostics.filter(d => d.severity === 'error').length;
|
|
191
|
+
const warningCount = diagnostics.filter(d => d.severity === 'warning').length;
|
|
192
|
+
return {
|
|
193
|
+
success: errorCount === 0,
|
|
194
|
+
diagnostics,
|
|
195
|
+
errorCount,
|
|
196
|
+
warningCount,
|
|
197
|
+
tool: 'pylint'
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=python-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-runner.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/python-runner.ts"],"names":[],"mappings":"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"}
|