@intrect/openswarm 0.2.0
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/LICENSE +21 -0
- package/README.md +544 -0
- package/config.example.yaml +107 -0
- package/dist/adapters/base.d.ts +8 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +104 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +13 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +318 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +14 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +366 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.js +238 -0
- package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +17 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +47 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/processRegistry.d.ts +38 -0
- package/dist/adapters/processRegistry.d.ts.map +1 -0
- package/dist/adapters/processRegistry.js +147 -0
- package/dist/adapters/processRegistry.js.map +1 -0
- package/dist/adapters/streamBuffer.d.ts +59 -0
- package/dist/adapters/streamBuffer.d.ts.map +1 -0
- package/dist/adapters/streamBuffer.js +123 -0
- package/dist/adapters/streamBuffer.js.map +1 -0
- package/dist/adapters/types.d.ts +65 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agents/agentBus.d.ts +160 -0
- package/dist/agents/agentBus.d.ts.map +1 -0
- package/dist/agents/agentBus.js +350 -0
- package/dist/agents/agentBus.js.map +1 -0
- package/dist/agents/agentPair.d.ts +210 -0
- package/dist/agents/agentPair.d.ts.map +1 -0
- package/dist/agents/agentPair.js +420 -0
- package/dist/agents/agentPair.js.map +1 -0
- package/dist/agents/auditor.d.ts +27 -0
- package/dist/agents/auditor.d.ts.map +1 -0
- package/dist/agents/auditor.js +237 -0
- package/dist/agents/auditor.js.map +1 -0
- package/dist/agents/cliStreamParser.d.ts +18 -0
- package/dist/agents/cliStreamParser.d.ts.map +1 -0
- package/dist/agents/cliStreamParser.js +156 -0
- package/dist/agents/cliStreamParser.js.map +1 -0
- package/dist/agents/documenter.d.ts +31 -0
- package/dist/agents/documenter.d.ts.map +1 -0
- package/dist/agents/documenter.js +285 -0
- package/dist/agents/documenter.js.map +1 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +10 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/pairMetrics.d.ts +63 -0
- package/dist/agents/pairMetrics.d.ts.map +1 -0
- package/dist/agents/pairMetrics.js +231 -0
- package/dist/agents/pairMetrics.js.map +1 -0
- package/dist/agents/pairPipeline.d.ts +155 -0
- package/dist/agents/pairPipeline.d.ts.map +1 -0
- package/dist/agents/pairPipeline.js +793 -0
- package/dist/agents/pairPipeline.js.map +1 -0
- package/dist/agents/pairWebhook.d.ts +59 -0
- package/dist/agents/pairWebhook.d.ts.map +1 -0
- package/dist/agents/pairWebhook.js +242 -0
- package/dist/agents/pairWebhook.js.map +1 -0
- package/dist/agents/pipelineFormat.d.ts +11 -0
- package/dist/agents/pipelineFormat.d.ts.map +1 -0
- package/dist/agents/pipelineFormat.js +164 -0
- package/dist/agents/pipelineFormat.js.map +1 -0
- package/dist/agents/pipelineGuards.d.ts +23 -0
- package/dist/agents/pipelineGuards.d.ts.map +1 -0
- package/dist/agents/pipelineGuards.js +175 -0
- package/dist/agents/pipelineGuards.js.map +1 -0
- package/dist/agents/reviewer.d.ts +37 -0
- package/dist/agents/reviewer.d.ts.map +1 -0
- package/dist/agents/reviewer.js +213 -0
- package/dist/agents/reviewer.js.map +1 -0
- package/dist/agents/skillDocumenter.d.ts +23 -0
- package/dist/agents/skillDocumenter.d.ts.map +1 -0
- package/dist/agents/skillDocumenter.js +218 -0
- package/dist/agents/skillDocumenter.js.map +1 -0
- package/dist/agents/tester.d.ts +37 -0
- package/dist/agents/tester.d.ts.map +1 -0
- package/dist/agents/tester.js +308 -0
- package/dist/agents/tester.js.map +1 -0
- package/dist/agents/worker.d.ts +30 -0
- package/dist/agents/worker.d.ts.map +1 -0
- package/dist/agents/worker.js +128 -0
- package/dist/agents/worker.js.map +1 -0
- package/dist/automation/autonomousRunner.d.ts +123 -0
- package/dist/automation/autonomousRunner.d.ts.map +1 -0
- package/dist/automation/autonomousRunner.js +1082 -0
- package/dist/automation/autonomousRunner.js.map +1 -0
- package/dist/automation/ciWorker.d.ts +51 -0
- package/dist/automation/ciWorker.d.ts.map +1 -0
- package/dist/automation/ciWorker.js +282 -0
- package/dist/automation/ciWorker.js.map +1 -0
- package/dist/automation/conflictResolver.d.ts +29 -0
- package/dist/automation/conflictResolver.d.ts.map +1 -0
- package/dist/automation/conflictResolver.js +261 -0
- package/dist/automation/conflictResolver.js.map +1 -0
- package/dist/automation/dailyReporter.d.ts +26 -0
- package/dist/automation/dailyReporter.d.ts.map +1 -0
- package/dist/automation/dailyReporter.js +132 -0
- package/dist/automation/dailyReporter.js.map +1 -0
- package/dist/automation/index.d.ts +7 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +7 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/longRunningMonitor.d.ts +26 -0
- package/dist/automation/longRunningMonitor.d.ts.map +1 -0
- package/dist/automation/longRunningMonitor.js +231 -0
- package/dist/automation/longRunningMonitor.js.map +1 -0
- package/dist/automation/prOwnership.d.ts +18 -0
- package/dist/automation/prOwnership.d.ts.map +1 -0
- package/dist/automation/prOwnership.js +61 -0
- package/dist/automation/prOwnership.js.map +1 -0
- package/dist/automation/prProcessor.d.ts +62 -0
- package/dist/automation/prProcessor.d.ts.map +1 -0
- package/dist/automation/prProcessor.js +700 -0
- package/dist/automation/prProcessor.js.map +1 -0
- package/dist/automation/runnerExecution.d.ts +49 -0
- package/dist/automation/runnerExecution.d.ts.map +1 -0
- package/dist/automation/runnerExecution.js +663 -0
- package/dist/automation/runnerExecution.js.map +1 -0
- package/dist/automation/runnerState.d.ts +170 -0
- package/dist/automation/runnerState.d.ts.map +1 -0
- package/dist/automation/runnerState.js +495 -0
- package/dist/automation/runnerState.js.map +1 -0
- package/dist/automation/runnerTypes.d.ts +46 -0
- package/dist/automation/runnerTypes.d.ts.map +1 -0
- package/dist/automation/runnerTypes.js +5 -0
- package/dist/automation/runnerTypes.js.map +1 -0
- package/dist/automation/scheduler.d.ts +75 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +394 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/cli/promptHandler.d.ts +13 -0
- package/dist/cli/promptHandler.d.ts.map +1 -0
- package/dist/cli/promptHandler.js +189 -0
- package/dist/cli/promptHandler.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +138 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config.d.ts +308 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +529 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/eventHub.d.ts +194 -0
- package/dist/core/eventHub.d.ts.map +1 -0
- package/dist/core/eventHub.js +136 -0
- package/dist/core/eventHub.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/service.d.ts +27 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +438 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/traceCollector.d.ts +105 -0
- package/dist/core/traceCollector.d.ts.map +1 -0
- package/dist/core/traceCollector.js +141 -0
- package/dist/core/traceCollector.js.map +1 -0
- package/dist/core/types.d.ts +413 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/discord/discordCore.d.ts +104 -0
- package/dist/discord/discordCore.d.ts.map +1 -0
- package/dist/discord/discordCore.js +698 -0
- package/dist/discord/discordCore.js.map +1 -0
- package/dist/discord/discordHandlers.d.ts +86 -0
- package/dist/discord/discordHandlers.d.ts.map +1 -0
- package/dist/discord/discordHandlers.js +849 -0
- package/dist/discord/discordHandlers.js.map +1 -0
- package/dist/discord/discordPair.d.ts +6 -0
- package/dist/discord/discordPair.d.ts.map +1 -0
- package/dist/discord/discordPair.js +567 -0
- package/dist/discord/discordPair.js.map +1 -0
- package/dist/discord/index.d.ts +4 -0
- package/dist/discord/index.d.ts.map +1 -0
- package/dist/discord/index.js +11 -0
- package/dist/discord/index.js.map +1 -0
- package/dist/github/github.d.ts +236 -0
- package/dist/github/github.d.ts.map +1 -0
- package/dist/github/github.js +535 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/index.d.ts +2 -0
- package/dist/github/index.d.ts.map +1 -0
- package/dist/github/index.js +2 -0
- package/dist/github/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/analyzer.d.ts +36 -0
- package/dist/knowledge/analyzer.d.ts.map +1 -0
- package/dist/knowledge/analyzer.js +170 -0
- package/dist/knowledge/analyzer.js.map +1 -0
- package/dist/knowledge/gitInfo.d.ts +10 -0
- package/dist/knowledge/gitInfo.d.ts.map +1 -0
- package/dist/knowledge/gitInfo.js +134 -0
- package/dist/knowledge/gitInfo.js.map +1 -0
- package/dist/knowledge/graph.d.ts +45 -0
- package/dist/knowledge/graph.d.ts.map +1 -0
- package/dist/knowledge/graph.js +262 -0
- package/dist/knowledge/graph.js.map +1 -0
- package/dist/knowledge/graphqlExporter.d.ts +64 -0
- package/dist/knowledge/graphqlExporter.d.ts.map +1 -0
- package/dist/knowledge/graphqlExporter.js +333 -0
- package/dist/knowledge/graphqlExporter.js.map +1 -0
- package/dist/knowledge/index.d.ts +58 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +212 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/repository.d.ts +64 -0
- package/dist/knowledge/repository.d.ts.map +1 -0
- package/dist/knowledge/repository.js +250 -0
- package/dist/knowledge/repository.js.map +1 -0
- package/dist/knowledge/riskOnAnalyzer.d.ts +79 -0
- package/dist/knowledge/riskOnAnalyzer.d.ts.map +1 -0
- package/dist/knowledge/riskOnAnalyzer.js +243 -0
- package/dist/knowledge/riskOnAnalyzer.js.map +1 -0
- package/dist/knowledge/scanner.d.ts +14 -0
- package/dist/knowledge/scanner.d.ts.map +1 -0
- package/dist/knowledge/scanner.js +350 -0
- package/dist/knowledge/scanner.js.map +1 -0
- package/dist/knowledge/store.d.ts +23 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +86 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/knowledge/types.d.ts +288 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +111 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/linear/index.d.ts +3 -0
- package/dist/linear/index.d.ts.map +1 -0
- package/dist/linear/index.js +3 -0
- package/dist/linear/index.js.map +1 -0
- package/dist/linear/linear.d.ts +160 -0
- package/dist/linear/linear.d.ts.map +1 -0
- package/dist/linear/linear.js +983 -0
- package/dist/linear/linear.js.map +1 -0
- package/dist/linear/projectUpdater.d.ts +23 -0
- package/dist/linear/projectUpdater.d.ts.map +1 -0
- package/dist/linear/projectUpdater.js +347 -0
- package/dist/linear/projectUpdater.js.map +1 -0
- package/dist/locale/en.d.ts +3 -0
- package/dist/locale/en.d.ts.map +1 -0
- package/dist/locale/en.js +436 -0
- package/dist/locale/en.js.map +1 -0
- package/dist/locale/index.d.ts +28 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +89 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/locale/ko.d.ts +3 -0
- package/dist/locale/ko.d.ts.map +1 -0
- package/dist/locale/ko.js +436 -0
- package/dist/locale/ko.js.map +1 -0
- package/dist/locale/prompts/en.d.ts +3 -0
- package/dist/locale/prompts/en.d.ts.map +1 -0
- package/dist/locale/prompts/en.js +278 -0
- package/dist/locale/prompts/en.js.map +1 -0
- package/dist/locale/prompts/ko.d.ts +3 -0
- package/dist/locale/prompts/ko.d.ts.map +1 -0
- package/dist/locale/prompts/ko.js +279 -0
- package/dist/locale/prompts/ko.js.map +1 -0
- package/dist/locale/types.d.ts +407 -0
- package/dist/locale/types.d.ts.map +1 -0
- package/dist/locale/types.js +5 -0
- package/dist/locale/types.js.map +1 -0
- package/dist/memory/codex.d.ts +93 -0
- package/dist/memory/codex.d.ts.map +1 -0
- package/dist/memory/codex.js +366 -0
- package/dist/memory/codex.js.map +1 -0
- package/dist/memory/compaction.d.ts +21 -0
- package/dist/memory/compaction.d.ts.map +1 -0
- package/dist/memory/compaction.js +205 -0
- package/dist/memory/compaction.js.map +1 -0
- package/dist/memory/index.d.ts +13 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +13 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memoryCore.d.ts +178 -0
- package/dist/memory/memoryCore.d.ts.map +1 -0
- package/dist/memory/memoryCore.js +623 -0
- package/dist/memory/memoryCore.js.map +1 -0
- package/dist/memory/memoryOps.d.ts +90 -0
- package/dist/memory/memoryOps.d.ts.map +1 -0
- package/dist/memory/memoryOps.js +606 -0
- package/dist/memory/memoryOps.js.map +1 -0
- package/dist/orchestration/conflictDetector.d.ts +15 -0
- package/dist/orchestration/conflictDetector.d.ts.map +1 -0
- package/dist/orchestration/conflictDetector.js +130 -0
- package/dist/orchestration/conflictDetector.js.map +1 -0
- package/dist/orchestration/decisionEngine.d.ts +177 -0
- package/dist/orchestration/decisionEngine.d.ts.map +1 -0
- package/dist/orchestration/decisionEngine.js +496 -0
- package/dist/orchestration/decisionEngine.js.map +1 -0
- package/dist/orchestration/index.d.ts +5 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/taskParser.d.ts +67 -0
- package/dist/orchestration/taskParser.d.ts.map +1 -0
- package/dist/orchestration/taskParser.js +542 -0
- package/dist/orchestration/taskParser.js.map +1 -0
- package/dist/orchestration/taskScheduler.d.ts +141 -0
- package/dist/orchestration/taskScheduler.d.ts.map +1 -0
- package/dist/orchestration/taskScheduler.js +317 -0
- package/dist/orchestration/taskScheduler.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +145 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +301 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/runners/cliRunner.d.ts +11 -0
- package/dist/runners/cliRunner.d.ts.map +1 -0
- package/dist/runners/cliRunner.js +194 -0
- package/dist/runners/cliRunner.js.map +1 -0
- package/dist/support/apiCache.d.ts +85 -0
- package/dist/support/apiCache.d.ts.map +1 -0
- package/dist/support/apiCache.js +163 -0
- package/dist/support/apiCache.js.map +1 -0
- package/dist/support/chat.d.ts +3 -0
- package/dist/support/chat.d.ts.map +1 -0
- package/dist/support/chat.js +304 -0
- package/dist/support/chat.js.map +1 -0
- package/dist/support/chatBackend.d.ts +25 -0
- package/dist/support/chatBackend.d.ts.map +1 -0
- package/dist/support/chatBackend.js +235 -0
- package/dist/support/chatBackend.js.map +1 -0
- package/dist/support/chatMemory.d.ts +71 -0
- package/dist/support/chatMemory.d.ts.map +1 -0
- package/dist/support/chatMemory.js +119 -0
- package/dist/support/chatMemory.js.map +1 -0
- package/dist/support/chatTui.d.ts +3 -0
- package/dist/support/chatTui.d.ts.map +1 -0
- package/dist/support/chatTui.js +998 -0
- package/dist/support/chatTui.js.map +1 -0
- package/dist/support/costTracker.d.ts +29 -0
- package/dist/support/costTracker.d.ts.map +1 -0
- package/dist/support/costTracker.js +113 -0
- package/dist/support/costTracker.js.map +1 -0
- package/dist/support/dashboardHtml.d.ts +3 -0
- package/dist/support/dashboardHtml.d.ts.map +1 -0
- package/dist/support/dashboardHtml.js +2070 -0
- package/dist/support/dashboardHtml.js.map +1 -0
- package/dist/support/delete-beliefs.d.ts +2 -0
- package/dist/support/delete-beliefs.d.ts.map +1 -0
- package/dist/support/delete-beliefs.js +34 -0
- package/dist/support/delete-beliefs.js.map +1 -0
- package/dist/support/dev.d.ts +55 -0
- package/dist/support/dev.d.ts.map +1 -0
- package/dist/support/dev.js +298 -0
- package/dist/support/dev.js.map +1 -0
- package/dist/support/editParser.d.ts +37 -0
- package/dist/support/editParser.d.ts.map +1 -0
- package/dist/support/editParser.js +365 -0
- package/dist/support/editParser.js.map +1 -0
- package/dist/support/gitStatus.d.ts +21 -0
- package/dist/support/gitStatus.d.ts.map +1 -0
- package/dist/support/gitStatus.js +108 -0
- package/dist/support/gitStatus.js.map +1 -0
- package/dist/support/gitTracker.d.ts +30 -0
- package/dist/support/gitTracker.d.ts.map +1 -0
- package/dist/support/gitTracker.js +143 -0
- package/dist/support/gitTracker.js.map +1 -0
- package/dist/support/index.d.ts +13 -0
- package/dist/support/index.d.ts.map +1 -0
- package/dist/support/index.js +13 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/planner.d.ts +58 -0
- package/dist/support/planner.d.ts.map +1 -0
- package/dist/support/planner.js +395 -0
- package/dist/support/planner.js.map +1 -0
- package/dist/support/projectMapper.d.ts +46 -0
- package/dist/support/projectMapper.d.ts.map +1 -0
- package/dist/support/projectMapper.js +259 -0
- package/dist/support/projectMapper.js.map +1 -0
- package/dist/support/quotaTracker.d.ts +29 -0
- package/dist/support/quotaTracker.d.ts.map +1 -0
- package/dist/support/quotaTracker.js +89 -0
- package/dist/support/quotaTracker.js.map +1 -0
- package/dist/support/rateLimiter.d.ts +101 -0
- package/dist/support/rateLimiter.d.ts.map +1 -0
- package/dist/support/rateLimiter.js +219 -0
- package/dist/support/rateLimiter.js.map +1 -0
- package/dist/support/rollback.d.ts +61 -0
- package/dist/support/rollback.d.ts.map +1 -0
- package/dist/support/rollback.js +328 -0
- package/dist/support/rollback.js.map +1 -0
- package/dist/support/stuckDetector.d.ts +68 -0
- package/dist/support/stuckDetector.d.ts.map +1 -0
- package/dist/support/stuckDetector.js +174 -0
- package/dist/support/stuckDetector.js.map +1 -0
- package/dist/support/timeWindow.d.ts +60 -0
- package/dist/support/timeWindow.d.ts.map +1 -0
- package/dist/support/timeWindow.js +236 -0
- package/dist/support/timeWindow.js.map +1 -0
- package/dist/support/web.d.ts +11 -0
- package/dist/support/web.d.ts.map +1 -0
- package/dist/support/web.js +938 -0
- package/dist/support/web.js.map +1 -0
- package/dist/support/workflowLinear.d.ts +99 -0
- package/dist/support/workflowLinear.d.ts.map +1 -0
- package/dist/support/workflowLinear.js +257 -0
- package/dist/support/workflowLinear.js.map +1 -0
- package/dist/support/worktreeManager.d.ts +20 -0
- package/dist/support/worktreeManager.d.ts.map +1 -0
- package/dist/support/worktreeManager.js +144 -0
- package/dist/support/worktreeManager.js.map +1 -0
- package/dist/taskState/store.d.ts +101 -0
- package/dist/taskState/store.d.ts.map +1 -0
- package/dist/taskState/store.js +346 -0
- package/dist/taskState/store.js.map +1 -0
- package/package.json +70 -0
- package/templates/AGENTS.md +432 -0
- package/templates/BOOT.md +25 -0
- package/templates/BOOTSTRAP.md +50 -0
- package/templates/CHANGELOG_AUDIT.md +74 -0
- package/templates/HEARTBEAT.md +86 -0
- package/templates/IDENTITY.md +27 -0
- package/templates/ISSUE_ANALYSIS.md +31 -0
- package/templates/PR_LAND.md +75 -0
- package/templates/PR_REVIEW.md +97 -0
- package/templates/SOUL.dev.md +52 -0
- package/templates/SOUL.md +81 -0
- package/templates/TOOLS.md +52 -0
- package/templates/USER.md +22 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// OpenSwarm - Self-Healing PR Conflict Resolver
|
|
3
|
+
// Detects and auto-resolves merge conflicts on bot-owned PRs
|
|
4
|
+
// ============================================
|
|
5
|
+
import { execFile } from 'node:child_process';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { getPRBaseBranch, commentOnPR } from '../github/github.js';
|
|
8
|
+
import { isOwnedPR, getOwnedPRsForRepo } from './prOwnership.js';
|
|
9
|
+
import { runWorker } from '../agents/worker.js';
|
|
10
|
+
import { broadcastEvent } from '../core/eventHub.js';
|
|
11
|
+
import { reportEvent } from '../discord/index.js';
|
|
12
|
+
const execFileAsync = promisify(execFile);
|
|
13
|
+
/** Safe git execution (no shell) */
|
|
14
|
+
async function gitExec(cwd, ...args) {
|
|
15
|
+
const { stdout } = await execFileAsync('git', args, { cwd });
|
|
16
|
+
return stdout;
|
|
17
|
+
}
|
|
18
|
+
// ConflictResolver
|
|
19
|
+
export class ConflictResolver {
|
|
20
|
+
config;
|
|
21
|
+
attempts = new Map();
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
}
|
|
25
|
+
/** Whether resolver is enabled */
|
|
26
|
+
isEnabled() {
|
|
27
|
+
return this.config.enabled;
|
|
28
|
+
}
|
|
29
|
+
/** Whether cascade checks are enabled */
|
|
30
|
+
cascadeEnabled() {
|
|
31
|
+
return this.config.cascadeCheck;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if we can resolve conflicts for this PR
|
|
35
|
+
* - Ownership check (auto mode: bot-created only, all mode: any PR)
|
|
36
|
+
* - Attempt limit check
|
|
37
|
+
*/
|
|
38
|
+
async canResolve(pr) {
|
|
39
|
+
// Ownership check
|
|
40
|
+
if (this.config.ownershipMode === 'auto') {
|
|
41
|
+
const owned = await isOwnedPR(pr.repo, pr.number);
|
|
42
|
+
if (!owned) {
|
|
43
|
+
console.log(`[ConflictResolver] ${pr.repo}#${pr.number}: not owned, skipping`);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Attempt limit
|
|
48
|
+
const key = `${pr.repo}#${pr.number}`;
|
|
49
|
+
const existing = this.attempts.get(key);
|
|
50
|
+
if (existing && existing.attempts >= this.config.maxResolutionAttempts) {
|
|
51
|
+
console.log(`[ConflictResolver] ${key}: max attempts reached (${existing.attempts}/${this.config.maxResolutionAttempts})`);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve merge conflicts for a PR
|
|
58
|
+
* @returns true if conflicts were resolved successfully
|
|
59
|
+
*/
|
|
60
|
+
async resolve(pr, projectPath) {
|
|
61
|
+
const key = `${pr.repo}#${pr.number}`;
|
|
62
|
+
console.log(`[ConflictResolver] Resolving conflicts for ${key}...`);
|
|
63
|
+
// Track attempt
|
|
64
|
+
const existing = this.attempts.get(key) || { repo: pr.repo, prNumber: pr.number, attempts: 0 };
|
|
65
|
+
existing.attempts++;
|
|
66
|
+
existing.lastAttempt = new Date().toISOString();
|
|
67
|
+
this.attempts.set(key, existing);
|
|
68
|
+
// Broadcast event
|
|
69
|
+
broadcastEvent({
|
|
70
|
+
type: 'conflict:detected',
|
|
71
|
+
data: { repo: pr.repo, prNumber: pr.number, branch: pr.branch },
|
|
72
|
+
});
|
|
73
|
+
await reportEvent({
|
|
74
|
+
type: 'pr_conflict_detected',
|
|
75
|
+
session: 'conflict-resolver',
|
|
76
|
+
message: `**${pr.repo}#${pr.number}** "${pr.title}" has merge conflicts (attempt ${existing.attempts}/${this.config.maxResolutionAttempts})`,
|
|
77
|
+
timestamp: Date.now(),
|
|
78
|
+
url: pr.url,
|
|
79
|
+
});
|
|
80
|
+
// Save current branch for restoration
|
|
81
|
+
let originalBranch = 'main';
|
|
82
|
+
try {
|
|
83
|
+
originalBranch = (await gitExec(projectPath, 'rev-parse', '--abbrev-ref', 'HEAD')).trim();
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// fallback to main
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
// 1. Get base branch
|
|
90
|
+
const baseBranch = await getPRBaseBranch(pr.repo, pr.number);
|
|
91
|
+
console.log(`[ConflictResolver] ${key}: base=${baseBranch}, head=${pr.branch}`);
|
|
92
|
+
broadcastEvent({
|
|
93
|
+
type: 'conflict:resolving',
|
|
94
|
+
data: { repo: pr.repo, prNumber: pr.number, branch: pr.branch, attempt: existing.attempts },
|
|
95
|
+
});
|
|
96
|
+
await reportEvent({
|
|
97
|
+
type: 'pr_conflict_resolving',
|
|
98
|
+
session: 'conflict-resolver',
|
|
99
|
+
message: `**${pr.repo}#${pr.number}** resolving conflicts (attempt ${existing.attempts})...`,
|
|
100
|
+
timestamp: Date.now(),
|
|
101
|
+
url: pr.url,
|
|
102
|
+
});
|
|
103
|
+
// 2. Fetch latest
|
|
104
|
+
await gitExec(projectPath, 'fetch', 'origin');
|
|
105
|
+
// 3. Checkout PR branch
|
|
106
|
+
await gitExec(projectPath, 'checkout', pr.branch);
|
|
107
|
+
await gitExec(projectPath, 'pull', 'origin', pr.branch);
|
|
108
|
+
// 4. Try merge
|
|
109
|
+
let autoMerged = false;
|
|
110
|
+
try {
|
|
111
|
+
await gitExec(projectPath, 'merge', `origin/${baseBranch}`, '--no-edit');
|
|
112
|
+
autoMerged = true;
|
|
113
|
+
console.log(`[ConflictResolver] ${key}: auto-merge succeeded`);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Merge conflicts exist — proceed to manual resolution
|
|
117
|
+
console.log(`[ConflictResolver] ${key}: auto-merge failed, resolving manually...`);
|
|
118
|
+
}
|
|
119
|
+
if (!autoMerged) {
|
|
120
|
+
// 5. Get conflicted files
|
|
121
|
+
const conflictOutput = await gitExec(projectPath, 'diff', '--name-only', '--diff-filter=U');
|
|
122
|
+
const conflictedFiles = conflictOutput.trim().split('\n').filter(Boolean);
|
|
123
|
+
if (conflictedFiles.length === 0) {
|
|
124
|
+
// No actual conflicts (maybe already resolved)
|
|
125
|
+
console.log(`[ConflictResolver] ${key}: no conflicted files found, aborting merge`);
|
|
126
|
+
await gitExec(projectPath, 'merge', '--abort').catch(() => { });
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
console.log(`[ConflictResolver] ${key}: ${conflictedFiles.length} conflicted files: ${conflictedFiles.join(', ')}`);
|
|
130
|
+
// 6. Spawn worker to resolve conflicts
|
|
131
|
+
const workerResult = await runWorker({
|
|
132
|
+
taskTitle: `Resolve merge conflicts: ${pr.title}`,
|
|
133
|
+
taskDescription: [
|
|
134
|
+
`## Merge Conflict Resolution`,
|
|
135
|
+
``,
|
|
136
|
+
`**PR:** #${pr.number} - ${pr.title}`,
|
|
137
|
+
`**Branch:** ${pr.branch} ← ${baseBranch}`,
|
|
138
|
+
``,
|
|
139
|
+
`## Conflicted Files`,
|
|
140
|
+
conflictedFiles.map((f) => `- ${f}`).join('\n'),
|
|
141
|
+
``,
|
|
142
|
+
`## Instructions`,
|
|
143
|
+
`1. Open each conflicted file and resolve the merge conflict markers (<<<<<<< HEAD, =======, >>>>>>> ...)`,
|
|
144
|
+
`2. Keep BOTH sides' changes where possible. When the same line was modified by both sides, prefer the HEAD (PR branch) version.`,
|
|
145
|
+
`3. After resolving each file, run \`git add <file>\` for each resolved file.`,
|
|
146
|
+
`4. Do NOT run git commit — only resolve conflicts and stage files.`,
|
|
147
|
+
`5. Do NOT modify any files that are not in the conflicted files list.`,
|
|
148
|
+
`6. Ensure the resolved code compiles and makes logical sense.`,
|
|
149
|
+
].join('\n'),
|
|
150
|
+
projectPath,
|
|
151
|
+
model: this.config.workerModel,
|
|
152
|
+
timeoutMs: this.config.workerTimeoutMs || 300_000,
|
|
153
|
+
});
|
|
154
|
+
if (!workerResult.success) {
|
|
155
|
+
console.log(`[ConflictResolver] ${key}: worker failed - ${workerResult.error}`);
|
|
156
|
+
await gitExec(projectPath, 'merge', '--abort').catch(() => { });
|
|
157
|
+
await this.reportFailure(pr, `Worker failed: ${workerResult.error || 'unknown error'}`);
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
// 7. Verify all conflicts are resolved
|
|
161
|
+
const remaining = await gitExec(projectPath, 'diff', '--name-only', '--diff-filter=U').catch(() => '');
|
|
162
|
+
if (remaining.trim()) {
|
|
163
|
+
console.log(`[ConflictResolver] ${key}: unresolved files remain: ${remaining.trim()}`);
|
|
164
|
+
await gitExec(projectPath, 'merge', '--abort').catch(() => { });
|
|
165
|
+
await this.reportFailure(pr, `Unresolved conflicts remain: ${remaining.trim()}`);
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
// 8. Commit the merge
|
|
169
|
+
await gitExec(projectPath, 'commit', '-m', `chore: resolve merge conflicts with ${baseBranch}\n\n🤖 Auto-resolved by OpenSwarm ConflictResolver`);
|
|
170
|
+
console.log(`[ConflictResolver] ${key}: merge committed`);
|
|
171
|
+
}
|
|
172
|
+
// 9. Push
|
|
173
|
+
await gitExec(projectPath, 'push', 'origin', pr.branch);
|
|
174
|
+
console.log(`[ConflictResolver] ${key}: pushed to origin`);
|
|
175
|
+
// 10. Report success
|
|
176
|
+
const filesResolved = autoMerged ? 0 : (await gitExec(projectPath, 'diff', '--name-only', 'HEAD~1')).trim().split('\n').filter(Boolean).length;
|
|
177
|
+
broadcastEvent({
|
|
178
|
+
type: 'conflict:resolved',
|
|
179
|
+
data: { repo: pr.repo, prNumber: pr.number, branch: pr.branch, filesResolved },
|
|
180
|
+
});
|
|
181
|
+
await commentOnPR(pr.repo, pr.number, [
|
|
182
|
+
`## ✅ Merge conflicts resolved`,
|
|
183
|
+
'',
|
|
184
|
+
autoMerged
|
|
185
|
+
? 'Conflicts were automatically resolved by Git.'
|
|
186
|
+
: `Resolved ${filesResolved} conflicted file(s) using AI-assisted merge.`,
|
|
187
|
+
'',
|
|
188
|
+
`Attempt: ${existing.attempts}/${this.config.maxResolutionAttempts}`,
|
|
189
|
+
'',
|
|
190
|
+
'🤖 *OpenSwarm ConflictResolver*',
|
|
191
|
+
].join('\n'));
|
|
192
|
+
await reportEvent({
|
|
193
|
+
type: 'pr_conflict_resolved',
|
|
194
|
+
session: 'conflict-resolver',
|
|
195
|
+
message: `**${pr.repo}#${pr.number}** "${pr.title}" conflicts resolved${autoMerged ? ' (auto-merge)' : ` (${filesResolved} files)`}`,
|
|
196
|
+
timestamp: Date.now(),
|
|
197
|
+
url: pr.url,
|
|
198
|
+
});
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
203
|
+
console.error(`[ConflictResolver] ${key} error:`, errorMsg);
|
|
204
|
+
// Abort any pending merge
|
|
205
|
+
await gitExec(projectPath, 'merge', '--abort').catch(() => { });
|
|
206
|
+
await this.reportFailure(pr, errorMsg);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
// Always restore original branch
|
|
211
|
+
try {
|
|
212
|
+
await gitExec(projectPath, 'checkout', originalBranch);
|
|
213
|
+
}
|
|
214
|
+
catch (restoreErr) {
|
|
215
|
+
console.error(`[ConflictResolver] Failed to restore branch ${originalBranch}:`, restoreErr);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check other owned PRs in the same repo for cascading conflicts
|
|
221
|
+
*/
|
|
222
|
+
async checkCascade(repo) {
|
|
223
|
+
if (!this.config.cascadeCheck)
|
|
224
|
+
return;
|
|
225
|
+
const ownedPRs = await getOwnedPRsForRepo(repo);
|
|
226
|
+
if (ownedPRs.length <= 1)
|
|
227
|
+
return;
|
|
228
|
+
console.log(`[ConflictResolver] Cascade check: ${repo} has ${ownedPRs.length} owned PRs`);
|
|
229
|
+
// Cascade check is informational — actual resolution happens in the next processPRs cycle
|
|
230
|
+
}
|
|
231
|
+
/** Report failure via events and PR comment */
|
|
232
|
+
async reportFailure(pr, reason) {
|
|
233
|
+
const key = `${pr.repo}#${pr.number}`;
|
|
234
|
+
const attempt = this.attempts.get(key);
|
|
235
|
+
broadcastEvent({
|
|
236
|
+
type: 'conflict:failed',
|
|
237
|
+
data: { repo: pr.repo, prNumber: pr.number, branch: pr.branch, reason },
|
|
238
|
+
});
|
|
239
|
+
const isMaxAttempts = attempt && attempt.attempts >= this.config.maxResolutionAttempts;
|
|
240
|
+
await commentOnPR(pr.repo, pr.number, [
|
|
241
|
+
`## ⚠️ Conflict resolution failed`,
|
|
242
|
+
'',
|
|
243
|
+
`**Reason:** ${reason}`,
|
|
244
|
+
`**Attempt:** ${attempt?.attempts ?? '?'}/${this.config.maxResolutionAttempts}`,
|
|
245
|
+
'',
|
|
246
|
+
isMaxAttempts
|
|
247
|
+
? '❌ Max attempts reached. Manual intervention required.'
|
|
248
|
+
: '🔄 Will retry on next check cycle.',
|
|
249
|
+
'',
|
|
250
|
+
'🤖 *OpenSwarm ConflictResolver*',
|
|
251
|
+
].join('\n'));
|
|
252
|
+
await reportEvent({
|
|
253
|
+
type: 'pr_conflict_failed',
|
|
254
|
+
session: 'conflict-resolver',
|
|
255
|
+
message: `**${pr.repo}#${pr.number}** "${pr.title}" conflict resolution failed: ${reason}${isMaxAttempts ? ' (MAX ATTEMPTS - escalation needed)' : ''}`,
|
|
256
|
+
timestamp: Date.now(),
|
|
257
|
+
url: pr.url,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=conflictResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflictResolver.js","sourceRoot":"","sources":["../../src/automation/conflictResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LinearClient } from '@linear/sdk';
|
|
2
|
+
export interface DailyReporterConfig {
|
|
3
|
+
schedule: string;
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function setLinearClient(client: LinearClient): void;
|
|
7
|
+
export declare function setDailyReporterDiscord(reporter: (content: any) => Promise<void>): void;
|
|
8
|
+
export declare function setTeamId(id: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Set project path mapping for knowledge graph metrics
|
|
11
|
+
* Called by autonomousRunner when project paths are resolved
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerProjectPath(projectId: string, projectPath: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Start daily reporter with cron schedule
|
|
16
|
+
*/
|
|
17
|
+
export declare function startDailyReporter(config: DailyReporterConfig): void;
|
|
18
|
+
/**
|
|
19
|
+
* Stop daily reporter
|
|
20
|
+
*/
|
|
21
|
+
export declare function stopDailyReporter(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Manually trigger daily reports (for testing)
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateDailyReports(): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=dailyReporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dailyReporter.d.ts","sourceRoot":"","sources":["../../src/automation/dailyReporter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEvF;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAkBpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuD1D"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// OpenSwarm - Daily Status Report Scheduler
|
|
3
|
+
// Consolidates Linear Status Updates to once daily at 6 PM
|
|
4
|
+
// ============================================
|
|
5
|
+
import { Cron } from 'croner';
|
|
6
|
+
import { postStatusUpdate } from '../linear/index.js';
|
|
7
|
+
let cronJob = null;
|
|
8
|
+
let linearClient = null;
|
|
9
|
+
let discordReporter = null;
|
|
10
|
+
let teamId = null;
|
|
11
|
+
// Project path mapping (projectId → projectPath) for knowledge graph metrics
|
|
12
|
+
let projectPathMapping = new Map();
|
|
13
|
+
export function setLinearClient(client) {
|
|
14
|
+
linearClient = client;
|
|
15
|
+
}
|
|
16
|
+
export function setDailyReporterDiscord(reporter) {
|
|
17
|
+
discordReporter = reporter;
|
|
18
|
+
}
|
|
19
|
+
export function setTeamId(id) {
|
|
20
|
+
teamId = id;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Set project path mapping for knowledge graph metrics
|
|
24
|
+
* Called by autonomousRunner when project paths are resolved
|
|
25
|
+
*/
|
|
26
|
+
export function registerProjectPath(projectId, projectPath) {
|
|
27
|
+
projectPathMapping.set(projectId, projectPath);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Start daily reporter with cron schedule
|
|
31
|
+
*/
|
|
32
|
+
export function startDailyReporter(config) {
|
|
33
|
+
if (!config.enabled) {
|
|
34
|
+
console.log('[DailyReporter] Disabled in configuration');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (cronJob) {
|
|
38
|
+
console.log('[DailyReporter] Already running');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const schedule = config.schedule || '0 18 * * *'; // Default: 6 PM daily
|
|
42
|
+
cronJob = new Cron(schedule, async () => {
|
|
43
|
+
await generateDailyReports();
|
|
44
|
+
});
|
|
45
|
+
console.log(`[DailyReporter] Started with schedule: ${schedule}`);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Stop daily reporter
|
|
49
|
+
*/
|
|
50
|
+
export function stopDailyReporter() {
|
|
51
|
+
if (cronJob) {
|
|
52
|
+
cronJob.stop();
|
|
53
|
+
cronJob = null;
|
|
54
|
+
console.log('[DailyReporter] Stopped');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Manually trigger daily reports (for testing)
|
|
59
|
+
*/
|
|
60
|
+
export async function generateDailyReports() {
|
|
61
|
+
if (!linearClient) {
|
|
62
|
+
console.warn('[DailyReporter] LinearClient not set, skipping reports');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!teamId) {
|
|
66
|
+
console.warn('[DailyReporter] Team ID not set, skipping reports');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log('[DailyReporter] Generating daily reports...');
|
|
70
|
+
try {
|
|
71
|
+
// Fetch all active projects from Linear
|
|
72
|
+
const team = await linearClient.team(teamId);
|
|
73
|
+
if (!team) {
|
|
74
|
+
console.warn('[DailyReporter] Team not found');
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const projects = await team.projects({ first: 50 });
|
|
78
|
+
const activeProjects = projects.nodes.filter(p => p.state !== 'canceled');
|
|
79
|
+
if (activeProjects.length === 0) {
|
|
80
|
+
console.log('[DailyReporter] No active projects found');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
console.log(`[DailyReporter] Found ${activeProjects.length} active projects`);
|
|
84
|
+
// Generate status update for each project
|
|
85
|
+
let successCount = 0;
|
|
86
|
+
let failCount = 0;
|
|
87
|
+
for (const project of activeProjects) {
|
|
88
|
+
try {
|
|
89
|
+
const projectPath = projectPathMapping.get(project.id);
|
|
90
|
+
await postStatusUpdate(project.id, project.name, projectPath);
|
|
91
|
+
successCount++;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
console.error(`[DailyReporter] Failed to post update for "${project.name}":`, err);
|
|
95
|
+
failCount++;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log(`[DailyReporter] Reports completed: ${successCount} success, ${failCount} failed`);
|
|
99
|
+
// Send summary to Discord
|
|
100
|
+
if (discordReporter && successCount > 0) {
|
|
101
|
+
await sendDiscordSummary(activeProjects.length, successCount, failCount);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('[DailyReporter] Failed to generate reports:', error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Send daily report summary to Discord
|
|
110
|
+
*/
|
|
111
|
+
async function sendDiscordSummary(totalProjects, successCount, failCount) {
|
|
112
|
+
if (!discordReporter)
|
|
113
|
+
return;
|
|
114
|
+
const now = new Date();
|
|
115
|
+
const dateStr = now.toLocaleDateString('ko-KR', {
|
|
116
|
+
year: 'numeric',
|
|
117
|
+
month: 'long',
|
|
118
|
+
day: 'numeric',
|
|
119
|
+
});
|
|
120
|
+
const message = `📊 **Daily Status Reports Generated** (${dateStr})\n\n` +
|
|
121
|
+
`✅ Projects updated: ${successCount}/${totalProjects}\n` +
|
|
122
|
+
(failCount > 0 ? `❌ Failed: ${failCount}\n` : '') +
|
|
123
|
+
`\nAll project Status Updates have been posted to Linear.`;
|
|
124
|
+
try {
|
|
125
|
+
await discordReporter(message);
|
|
126
|
+
console.log('[DailyReporter] Discord summary sent');
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
console.error('[DailyReporter] Failed to send Discord summary:', err);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=dailyReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dailyReporter.js","sourceRoot":"","sources":["../../src/automation/dailyReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/automation/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/automation/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { LongRunningMonitorConfig, LongRunningMonitor } from '../core/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load monitors from config + persisted file at service startup
|
|
4
|
+
*/
|
|
5
|
+
export declare function initMonitors(configs?: LongRunningMonitorConfig[]): void;
|
|
6
|
+
/**
|
|
7
|
+
* Register a monitor
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerMonitor(config: LongRunningMonitorConfig): LongRunningMonitor;
|
|
10
|
+
/**
|
|
11
|
+
* Unregister a monitor
|
|
12
|
+
*/
|
|
13
|
+
export declare function unregisterMonitor(id: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check all active monitors (called from heartbeat)
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkAllMonitors(): Promise<number>;
|
|
18
|
+
/**
|
|
19
|
+
* Get list of active monitors
|
|
20
|
+
*/
|
|
21
|
+
export declare function getActiveMonitors(): LongRunningMonitor[];
|
|
22
|
+
/**
|
|
23
|
+
* Get a specific monitor by ID
|
|
24
|
+
*/
|
|
25
|
+
export declare function getMonitor(id: string): LongRunningMonitor | undefined;
|
|
26
|
+
//# sourceMappingURL=longRunningMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"longRunningMonitor.d.ts","sourceRoot":"","sources":["../../src/automation/longRunningMonitor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAqI1B;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAcvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CAsBpF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,EAAE,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAErE"}
|