@intrect/openswarm 0.9.3 → 0.10.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/README.md +76 -1
- package/config.example.yaml +6 -0
- package/dist/adapters/agenticLoop.d.ts +24 -0
- package/dist/adapters/agenticLoop.d.ts.map +1 -1
- package/dist/adapters/agenticLoop.js +130 -11
- package/dist/adapters/agenticLoop.js.map +1 -1
- package/dist/adapters/applyPatch.d.ts +21 -0
- package/dist/adapters/applyPatch.d.ts.map +1 -0
- package/dist/adapters/applyPatch.js +175 -0
- package/dist/adapters/applyPatch.js.map +1 -0
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js +7 -0
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/codex.js +10 -0
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/codexResponses.d.ts +8 -0
- package/dist/adapters/codexResponses.d.ts.map +1 -1
- package/dist/adapters/codexResponses.js +86 -8
- package/dist/adapters/codexResponses.js.map +1 -1
- package/dist/adapters/errorClassification.d.ts +8 -0
- package/dist/adapters/errorClassification.d.ts.map +1 -0
- package/dist/adapters/errorClassification.js +54 -0
- package/dist/adapters/errorClassification.js.map +1 -0
- package/dist/adapters/gpt.d.ts.map +1 -1
- package/dist/adapters/gpt.js +12 -1
- package/dist/adapters/gpt.js.map +1 -1
- package/dist/adapters/local.d.ts.map +1 -1
- package/dist/adapters/local.js +9 -1
- package/dist/adapters/local.js.map +1 -1
- package/dist/adapters/openrouter.d.ts.map +1 -1
- package/dist/adapters/openrouter.js +9 -1
- package/dist/adapters/openrouter.js.map +1 -1
- package/dist/adapters/rateLimitError.d.ts +29 -0
- package/dist/adapters/rateLimitError.d.ts.map +1 -0
- package/dist/adapters/rateLimitError.js +64 -0
- package/dist/adapters/rateLimitError.js.map +1 -0
- package/dist/adapters/resultParsing.d.ts.map +1 -1
- package/dist/adapters/resultParsing.js +18 -0
- package/dist/adapters/resultParsing.js.map +1 -1
- package/dist/adapters/tools.d.ts +3 -0
- package/dist/adapters/tools.d.ts.map +1 -1
- package/dist/adapters/tools.js +148 -11
- package/dist/adapters/tools.js.map +1 -1
- package/dist/adapters/types.d.ts +15 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/webTools.d.ts.map +1 -1
- package/dist/adapters/webTools.js +44 -21
- package/dist/adapters/webTools.js.map +1 -1
- package/dist/agents/agentPair.d.ts +9 -0
- package/dist/agents/agentPair.d.ts.map +1 -1
- package/dist/agents/agentPair.js.map +1 -1
- package/dist/agents/auditor.d.ts.map +1 -1
- package/dist/agents/auditor.js +3 -0
- package/dist/agents/auditor.js.map +1 -1
- package/dist/agents/documenter.d.ts.map +1 -1
- package/dist/agents/documenter.js +3 -0
- package/dist/agents/documenter.js.map +1 -1
- package/dist/agents/draftAnalyzer.d.ts +30 -7
- package/dist/agents/draftAnalyzer.d.ts.map +1 -1
- package/dist/agents/draftAnalyzer.js +181 -30
- package/dist/agents/draftAnalyzer.js.map +1 -1
- package/dist/agents/pairPipeline.d.ts +7 -1
- package/dist/agents/pairPipeline.d.ts.map +1 -1
- package/dist/agents/pairPipeline.js +110 -66
- package/dist/agents/pairPipeline.js.map +1 -1
- package/dist/agents/pipelineFormat.d.ts.map +1 -1
- package/dist/agents/pipelineFormat.js +4 -0
- package/dist/agents/pipelineFormat.js.map +1 -1
- package/dist/agents/reviewer.d.ts +16 -0
- package/dist/agents/reviewer.d.ts.map +1 -1
- package/dist/agents/reviewer.js +30 -0
- package/dist/agents/reviewer.js.map +1 -1
- package/dist/agents/skillDocumenter.d.ts.map +1 -1
- package/dist/agents/skillDocumenter.js +3 -0
- package/dist/agents/skillDocumenter.js.map +1 -1
- package/dist/agents/tester.d.ts.map +1 -1
- package/dist/agents/tester.js +3 -0
- package/dist/agents/tester.js.map +1 -1
- package/dist/agents/worker.d.ts +14 -0
- package/dist/agents/worker.d.ts.map +1 -1
- package/dist/agents/worker.js +123 -22
- package/dist/agents/worker.js.map +1 -1
- package/dist/automation/autonomousRunner.d.ts +12 -0
- package/dist/automation/autonomousRunner.d.ts.map +1 -1
- package/dist/automation/autonomousRunner.js +218 -29
- package/dist/automation/autonomousRunner.js.map +1 -1
- package/dist/automation/runnerExecution.d.ts +15 -0
- package/dist/automation/runnerExecution.d.ts.map +1 -1
- package/dist/automation/runnerExecution.js +77 -1
- package/dist/automation/runnerExecution.js.map +1 -1
- package/dist/automation/runnerState.d.ts +7 -0
- package/dist/automation/runnerState.d.ts.map +1 -1
- package/dist/automation/runnerState.js +23 -1
- package/dist/automation/runnerState.js.map +1 -1
- package/dist/automation/runnerTypes.d.ts +2 -0
- package/dist/automation/runnerTypes.d.ts.map +1 -1
- package/dist/automation/scheduler.d.ts +12 -0
- package/dist/automation/scheduler.d.ts.map +1 -1
- package/dist/automation/scheduler.js +29 -2
- package/dist/automation/scheduler.js.map +1 -1
- package/dist/automation/taskSource.d.ts +9 -1
- package/dist/automation/taskSource.d.ts.map +1 -1
- package/dist/automation/taskSource.js +13 -2
- package/dist/automation/taskSource.js.map +1 -1
- package/dist/cli/auditPM.d.ts +40 -0
- package/dist/cli/auditPM.d.ts.map +1 -0
- package/dist/cli/auditPM.js +132 -0
- package/dist/cli/auditPM.js.map +1 -0
- package/dist/cli/designPipeline.d.ts +30 -0
- package/dist/cli/designPipeline.d.ts.map +1 -0
- package/dist/cli/designPipeline.js +113 -0
- package/dist/cli/designPipeline.js.map +1 -0
- package/dist/cli/mcpCommand.d.ts +22 -0
- package/dist/cli/mcpCommand.d.ts.map +1 -0
- package/dist/cli/mcpCommand.js +93 -0
- package/dist/cli/mcpCommand.js.map +1 -0
- package/dist/cli/projectHandler.d.ts.map +1 -1
- package/dist/cli/projectHandler.js +4 -2
- package/dist/cli/projectHandler.js.map +1 -1
- package/dist/cli/reviewAudit.d.ts +130 -0
- package/dist/cli/reviewAudit.d.ts.map +1 -0
- package/dist/cli/reviewAudit.js +283 -0
- package/dist/cli/reviewAudit.js.map +1 -0
- package/dist/cli/reviewCommand.d.ts +53 -0
- package/dist/cli/reviewCommand.d.ts.map +1 -0
- package/dist/cli/reviewCommand.js +207 -0
- package/dist/cli/reviewCommand.js.map +1 -0
- package/dist/cli/reviewMaxCommand.d.ts +35 -0
- package/dist/cli/reviewMaxCommand.d.ts.map +1 -0
- package/dist/cli/reviewMaxCommand.js +272 -0
- package/dist/cli/reviewMaxCommand.js.map +1 -0
- package/dist/cli/reviewProgress.d.ts +34 -0
- package/dist/cli/reviewProgress.d.ts.map +1 -0
- package/dist/cli/reviewProgress.js +109 -0
- package/dist/cli/reviewProgress.js.map +1 -0
- package/dist/cli/scheduleCommand.d.ts +15 -0
- package/dist/cli/scheduleCommand.d.ts.map +1 -0
- package/dist/cli/scheduleCommand.js +68 -0
- package/dist/cli/scheduleCommand.js.map +1 -0
- package/dist/cli.js +182 -26
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +24 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +42 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/providerOverride.d.ts.map +1 -1
- package/dist/core/providerOverride.js +16 -13
- package/dist/core/providerOverride.js.map +1 -1
- package/dist/core/service.d.ts.map +1 -1
- package/dist/core/service.js +11 -0
- package/dist/core/service.js.map +1 -1
- package/dist/core/types.d.ts +38 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/discord/discordHandlers.d.ts.map +1 -1
- package/dist/discord/discordHandlers.js +1 -0
- package/dist/discord/discordHandlers.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/linear/linear.d.ts +21 -0
- package/dist/linear/linear.d.ts.map +1 -1
- package/dist/linear/linear.js +109 -4
- package/dist/linear/linear.js.map +1 -1
- package/dist/linear/projectUpdater.js +3 -1
- package/dist/linear/projectUpdater.js.map +1 -1
- package/dist/locale/prompts/en.d.ts.map +1 -1
- package/dist/locale/prompts/en.js +104 -11
- package/dist/locale/prompts/en.js.map +1 -1
- package/dist/locale/prompts/ko.d.ts.map +1 -1
- package/dist/locale/prompts/ko.js +103 -11
- package/dist/locale/prompts/ko.js.map +1 -1
- package/dist/locale/types.d.ts +12 -0
- package/dist/locale/types.d.ts.map +1 -1
- package/dist/mcp/mcpClient.d.ts +28 -1
- package/dist/mcp/mcpClient.d.ts.map +1 -1
- package/dist/mcp/mcpClient.js +74 -3
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/orchestration/decisionEngine.d.ts +20 -0
- package/dist/orchestration/decisionEngine.d.ts.map +1 -1
- package/dist/orchestration/decisionEngine.js +23 -0
- package/dist/orchestration/decisionEngine.js.map +1 -1
- package/dist/orchestration/taskScheduler.d.ts.map +1 -1
- package/dist/orchestration/taskScheduler.js +12 -1
- package/dist/orchestration/taskScheduler.js.map +1 -1
- package/dist/support/chatBackend.d.ts +18 -0
- package/dist/support/chatBackend.d.ts.map +1 -1
- package/dist/support/chatBackend.js +92 -8
- package/dist/support/chatBackend.js.map +1 -1
- package/dist/support/chatSession.d.ts +51 -0
- package/dist/support/chatSession.d.ts.map +1 -0
- package/dist/support/chatSession.js +134 -0
- package/dist/support/chatSession.js.map +1 -0
- package/dist/support/chatTui.d.ts.map +1 -1
- package/dist/support/chatTui.js +6 -75
- package/dist/support/chatTui.js.map +1 -1
- package/dist/support/concurrencyPool.d.ts +18 -0
- package/dist/support/concurrencyPool.d.ts.map +1 -0
- package/dist/support/concurrencyPool.js +46 -0
- package/dist/support/concurrencyPool.js.map +1 -0
- package/dist/support/dashboardHtml.d.ts +1 -1
- package/dist/support/dashboardHtml.d.ts.map +1 -1
- package/dist/support/dashboardHtml.js +0 -28
- package/dist/support/dashboardHtml.js.map +1 -1
- package/dist/support/editParser.d.ts +26 -0
- package/dist/support/editParser.d.ts.map +1 -1
- package/dist/support/editParser.js +43 -0
- package/dist/support/editParser.js.map +1 -1
- package/dist/support/goalCommand.d.ts +35 -0
- package/dist/support/goalCommand.d.ts.map +1 -0
- package/dist/support/goalCommand.js +112 -0
- package/dist/support/goalCommand.js.map +1 -0
- package/dist/support/index.d.ts +0 -1
- package/dist/support/index.d.ts.map +1 -1
- package/dist/support/index.js +0 -1
- package/dist/support/index.js.map +1 -1
- package/dist/support/web.d.ts.map +1 -1
- package/dist/support/web.js +0 -7
- package/dist/support/web.js.map +1 -1
- package/dist/taskState/store.d.ts +5 -0
- package/dist/taskState/store.d.ts.map +1 -1
- package/dist/taskState/store.js +16 -0
- package/dist/taskState/store.js.map +1 -1
- package/dist/telemetry/telemetry.d.ts +42 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +138 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/tui/App.d.ts +20 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +52 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/chatModel.d.ts +81 -0
- package/dist/tui/chatModel.d.ts.map +1 -0
- package/dist/tui/chatModel.js +129 -0
- package/dist/tui/chatModel.js.map +1 -0
- package/dist/tui/components/AuditBoard.d.ts +10 -0
- package/dist/tui/components/AuditBoard.d.ts.map +1 -0
- package/dist/tui/components/AuditBoard.js +50 -0
- package/dist/tui/components/AuditBoard.js.map +1 -0
- package/dist/tui/components/ChatInput.d.ts +14 -0
- package/dist/tui/components/ChatInput.d.ts.map +1 -0
- package/dist/tui/components/ChatInput.js +46 -0
- package/dist/tui/components/ChatInput.js.map +1 -0
- package/dist/tui/components/ChatLog.d.ts +12 -0
- package/dist/tui/components/ChatLog.d.ts.map +1 -0
- package/dist/tui/components/ChatLog.js +47 -0
- package/dist/tui/components/ChatLog.js.map +1 -0
- package/dist/tui/components/CommandPalette.d.ts +6 -0
- package/dist/tui/components/CommandPalette.d.ts.map +1 -0
- package/dist/tui/components/CommandPalette.js +14 -0
- package/dist/tui/components/CommandPalette.js.map +1 -0
- package/dist/tui/components/ContextBar.d.ts +9 -0
- package/dist/tui/components/ContextBar.d.ts.map +1 -0
- package/dist/tui/components/ContextBar.js +18 -0
- package/dist/tui/components/ContextBar.js.map +1 -0
- package/dist/tui/components/DataTable.d.ts +6 -0
- package/dist/tui/components/DataTable.d.ts.map +1 -0
- package/dist/tui/components/DataTable.js +13 -0
- package/dist/tui/components/DataTable.js.map +1 -0
- package/dist/tui/components/HelpBar.d.ts +2 -0
- package/dist/tui/components/HelpBar.d.ts.map +1 -0
- package/dist/tui/components/HelpBar.js +8 -0
- package/dist/tui/components/HelpBar.js.map +1 -0
- package/dist/tui/components/LiveLog.d.ts +6 -0
- package/dist/tui/components/LiveLog.d.ts.map +1 -0
- package/dist/tui/components/LiveLog.js +10 -0
- package/dist/tui/components/LiveLog.js.map +1 -0
- package/dist/tui/components/LogLine.d.ts +4 -0
- package/dist/tui/components/LogLine.d.ts.map +1 -0
- package/dist/tui/components/LogLine.js +8 -0
- package/dist/tui/components/LogLine.js.map +1 -0
- package/dist/tui/components/SelectList.d.ts +6 -0
- package/dist/tui/components/SelectList.d.ts.map +1 -0
- package/dist/tui/components/SelectList.js +15 -0
- package/dist/tui/components/SelectList.js.map +1 -0
- package/dist/tui/components/StageTimeline.d.ts +7 -0
- package/dist/tui/components/StageTimeline.d.ts.map +1 -0
- package/dist/tui/components/StageTimeline.js +18 -0
- package/dist/tui/components/StageTimeline.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +7 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/tui/components/StatusBar.js +8 -0
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/dist/tui/components/SubagentTree.d.ts +10 -0
- package/dist/tui/components/SubagentTree.d.ts.map +1 -0
- package/dist/tui/components/SubagentTree.js +12 -0
- package/dist/tui/components/SubagentTree.js.map +1 -0
- package/dist/tui/components/TabBar.d.ts +5 -0
- package/dist/tui/components/TabBar.d.ts.map +1 -0
- package/dist/tui/components/TabBar.js +9 -0
- package/dist/tui/components/TabBar.js.map +1 -0
- package/dist/tui/components/WorkingIndicator.d.ts +6 -0
- package/dist/tui/components/WorkingIndicator.d.ts.map +1 -0
- package/dist/tui/components/WorkingIndicator.js +20 -0
- package/dist/tui/components/WorkingIndicator.js.map +1 -0
- package/dist/tui/hooks/useMonitor.d.ts +8 -0
- package/dist/tui/hooks/useMonitor.d.ts.map +1 -0
- package/dist/tui/hooks/useMonitor.js +42 -0
- package/dist/tui/hooks/useMonitor.js.map +1 -0
- package/dist/tui/hooks/usePipelineEvents.d.ts +6 -0
- package/dist/tui/hooks/usePipelineEvents.d.ts.map +1 -0
- package/dist/tui/hooks/usePipelineEvents.js +21 -0
- package/dist/tui/hooks/usePipelineEvents.js.map +1 -0
- package/dist/tui/hooks/useTerminalSize.d.ts +6 -0
- package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/tui/hooks/useTerminalSize.js +26 -0
- package/dist/tui/hooks/useTerminalSize.js.map +1 -0
- package/dist/tui/index.d.ts +22 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +18 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/inputDebug.d.ts +20 -0
- package/dist/tui/inputDebug.d.ts.map +1 -0
- package/dist/tui/inputDebug.js +42 -0
- package/dist/tui/inputDebug.js.map +1 -0
- package/dist/tui/loadingMessages.d.ts +11 -0
- package/dist/tui/loadingMessages.d.ts.map +1 -0
- package/dist/tui/loadingMessages.js +39 -0
- package/dist/tui/loadingMessages.js.map +1 -0
- package/dist/tui/logFormat.d.ts +10 -0
- package/dist/tui/logFormat.d.ts.map +1 -0
- package/dist/tui/logFormat.js +86 -0
- package/dist/tui/logFormat.js.map +1 -0
- package/dist/tui/markdown.d.ts +3 -0
- package/dist/tui/markdown.d.ts.map +1 -0
- package/dist/tui/markdown.js +33 -0
- package/dist/tui/markdown.js.map +1 -0
- package/dist/tui/monitorApi.d.ts +6 -0
- package/dist/tui/monitorApi.d.ts.map +1 -0
- package/dist/tui/monitorApi.js +35 -0
- package/dist/tui/monitorApi.js.map +1 -0
- package/dist/tui/monitorRows.d.ts +43 -0
- package/dist/tui/monitorRows.d.ts.map +1 -0
- package/dist/tui/monitorRows.js +65 -0
- package/dist/tui/monitorRows.js.map +1 -0
- package/dist/tui/panels/ChatPanel.d.ts +16 -0
- package/dist/tui/panels/ChatPanel.d.ts.map +1 -0
- package/dist/tui/panels/ChatPanel.js +305 -0
- package/dist/tui/panels/ChatPanel.js.map +1 -0
- package/dist/tui/panels/LogsPanel.d.ts +8 -0
- package/dist/tui/panels/LogsPanel.d.ts.map +1 -0
- package/dist/tui/panels/LogsPanel.js +19 -0
- package/dist/tui/panels/LogsPanel.js.map +1 -0
- package/dist/tui/panels/MonitorPanel.d.ts +8 -0
- package/dist/tui/panels/MonitorPanel.d.ts.map +1 -0
- package/dist/tui/panels/MonitorPanel.js +19 -0
- package/dist/tui/panels/MonitorPanel.js.map +1 -0
- package/dist/tui/panels/PipelinePanel.d.ts +6 -0
- package/dist/tui/panels/PipelinePanel.d.ts.map +1 -0
- package/dist/tui/panels/PipelinePanel.js +22 -0
- package/dist/tui/panels/PipelinePanel.js.map +1 -0
- package/dist/tui/pipelineEvents.d.ts +21 -0
- package/dist/tui/pipelineEvents.d.ts.map +1 -0
- package/dist/tui/pipelineEvents.js +30 -0
- package/dist/tui/pipelineEvents.js.map +1 -0
- package/dist/tui/sse.d.ts +24 -0
- package/dist/tui/sse.d.ts.map +1 -0
- package/dist/tui/sse.js +78 -0
- package/dist/tui/sse.js.map +1 -0
- package/dist/tui/subagentTree.d.ts +10 -0
- package/dist/tui/subagentTree.d.ts.map +1 -0
- package/dist/tui/subagentTree.js +30 -0
- package/dist/tui/subagentTree.js.map +1 -0
- package/dist/tui/tabs.d.ts +10 -0
- package/dist/tui/tabs.d.ts.map +1 -0
- package/dist/tui/tabs.js +26 -0
- package/dist/tui/tabs.js.map +1 -0
- package/dist/tui/theme.d.ts +29 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +34 -0
- package/dist/tui/theme.js.map +1 -0
- package/package.json +13 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type Ecosystem = 'node' | 'python' | 'rust' | 'go' | 'generic';
|
|
2
|
+
export interface ProjectStack {
|
|
3
|
+
ecosystem: Ecosystem;
|
|
4
|
+
/** npm | pnpm | yarn (node only) */
|
|
5
|
+
packageManager?: 'npm' | 'pnpm' | 'yarn';
|
|
6
|
+
/** package.json scripts that exist, in run order. */
|
|
7
|
+
steps: Array<'lint' | 'build' | 'test'>;
|
|
8
|
+
}
|
|
9
|
+
/** Pure: derive a Node stack from a parsed package.json. */
|
|
10
|
+
export declare function analyzePackageJson(pkg: {
|
|
11
|
+
scripts?: Record<string, string>;
|
|
12
|
+
}, lockfiles?: string[]): ProjectStack;
|
|
13
|
+
/** Pure: detect the stack from a directory listing + optional package.json reader. */
|
|
14
|
+
export declare function detectStack(files: string[], readPkg?: () => {
|
|
15
|
+
scripts?: Record<string, string>;
|
|
16
|
+
} | null): ProjectStack;
|
|
17
|
+
/** Pure: render a GitHub Actions workflow for the detected stack. */
|
|
18
|
+
export declare function generateWorkflow(stack: ProjectStack): string;
|
|
19
|
+
export interface DesignPipelineOptions {
|
|
20
|
+
path?: string;
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
force?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/** fs shell: detect → generate → write .github/workflows/ci.yml (or print on --dry-run). */
|
|
25
|
+
export declare function runDesignPipeline(opts?: DesignPipelineOptions): {
|
|
26
|
+
wrote: boolean;
|
|
27
|
+
path: string;
|
|
28
|
+
yaml: string;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=designPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"designPipeline.d.ts","sourceRoot":"","sources":["../../src/cli/designPipeline.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,oCAAoC;IACpC,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACzC,qDAAqD;IACrD,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACzC;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,YAAY,CASpH;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,YAAY,CAWtH;AAYD,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAoC5D;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAsBlH"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// OpenSwarm - `openswarm design-pipeline` (INT-1956)
|
|
3
|
+
// ============================================
|
|
4
|
+
//
|
|
5
|
+
// Analyze a project and generate a CI workflow (.github/workflows/ci.yml).
|
|
6
|
+
// Detection + YAML generation are pure (unit-tested); runDesignPipeline is the
|
|
7
|
+
// fs shell. Node is fully supported; Python/Rust/Go are recognized and emit a
|
|
8
|
+
// sensible setup+test template.
|
|
9
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
/** Pure: derive a Node stack from a parsed package.json. */
|
|
12
|
+
export function analyzePackageJson(pkg, lockfiles = []) {
|
|
13
|
+
const scripts = pkg.scripts ?? {};
|
|
14
|
+
const steps = ['lint', 'build', 'test'].filter((s) => typeof scripts[s] === 'string' && scripts[s]);
|
|
15
|
+
const packageManager = lockfiles.includes('pnpm-lock.yaml')
|
|
16
|
+
? 'pnpm'
|
|
17
|
+
: lockfiles.includes('yarn.lock')
|
|
18
|
+
? 'yarn'
|
|
19
|
+
: 'npm';
|
|
20
|
+
return { ecosystem: 'node', packageManager, steps: [...steps] };
|
|
21
|
+
}
|
|
22
|
+
/** Pure: detect the stack from a directory listing + optional package.json reader. */
|
|
23
|
+
export function detectStack(files, readPkg) {
|
|
24
|
+
if (files.includes('package.json')) {
|
|
25
|
+
const pkg = readPkg?.() ?? null;
|
|
26
|
+
return analyzePackageJson(pkg ?? {}, files);
|
|
27
|
+
}
|
|
28
|
+
if (files.includes('pyproject.toml') || files.includes('setup.py') || files.includes('requirements.txt')) {
|
|
29
|
+
return { ecosystem: 'python', steps: ['test'] };
|
|
30
|
+
}
|
|
31
|
+
if (files.includes('Cargo.toml'))
|
|
32
|
+
return { ecosystem: 'rust', steps: ['build', 'test'] };
|
|
33
|
+
if (files.includes('go.mod'))
|
|
34
|
+
return { ecosystem: 'go', steps: ['build', 'test'] };
|
|
35
|
+
return { ecosystem: 'generic', steps: [] };
|
|
36
|
+
}
|
|
37
|
+
const NODE_INSTALL = {
|
|
38
|
+
npm: 'npm ci',
|
|
39
|
+
pnpm: 'pnpm install --frozen-lockfile',
|
|
40
|
+
yarn: 'yarn install --frozen-lockfile',
|
|
41
|
+
};
|
|
42
|
+
function nodeRun(pm, script) {
|
|
43
|
+
return pm === 'npm' ? `npm run ${script}` : `${pm} ${script}`;
|
|
44
|
+
}
|
|
45
|
+
/** Pure: render a GitHub Actions workflow for the detected stack. */
|
|
46
|
+
export function generateWorkflow(stack) {
|
|
47
|
+
const head = [
|
|
48
|
+
'name: CI',
|
|
49
|
+
'',
|
|
50
|
+
'on:',
|
|
51
|
+
' push:',
|
|
52
|
+
' branches: [main]',
|
|
53
|
+
' pull_request:',
|
|
54
|
+
'',
|
|
55
|
+
'jobs:',
|
|
56
|
+
' build:',
|
|
57
|
+
' runs-on: ubuntu-latest',
|
|
58
|
+
' steps:',
|
|
59
|
+
' - uses: actions/checkout@v4',
|
|
60
|
+
];
|
|
61
|
+
const steps = [];
|
|
62
|
+
if (stack.ecosystem === 'node') {
|
|
63
|
+
const pm = stack.packageManager ?? 'npm';
|
|
64
|
+
steps.push(' - uses: actions/setup-node@v4', ' with:', " node-version: '22'");
|
|
65
|
+
steps.push(` - run: ${NODE_INSTALL[pm]}`);
|
|
66
|
+
for (const s of stack.steps)
|
|
67
|
+
steps.push(` - run: ${nodeRun(pm, s)}`);
|
|
68
|
+
if (!stack.steps.length)
|
|
69
|
+
steps.push(' # no lint/build/test scripts detected — add them to package.json');
|
|
70
|
+
}
|
|
71
|
+
else if (stack.ecosystem === 'python') {
|
|
72
|
+
steps.push(' - uses: actions/setup-python@v5', ' with:', " python-version: '3.12'");
|
|
73
|
+
steps.push(' - run: pip install -e . || pip install -r requirements.txt', ' - run: pytest');
|
|
74
|
+
}
|
|
75
|
+
else if (stack.ecosystem === 'rust') {
|
|
76
|
+
steps.push(' - uses: dtolnay/rust-toolchain@stable', ' - run: cargo build --verbose', ' - run: cargo test --verbose');
|
|
77
|
+
}
|
|
78
|
+
else if (stack.ecosystem === 'go') {
|
|
79
|
+
steps.push(' - uses: actions/setup-go@v5', ' with:', " go-version: '1.22'");
|
|
80
|
+
steps.push(' - run: go build ./...', ' - run: go test ./...');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
steps.push(' # generic project — add your build/test steps here');
|
|
84
|
+
}
|
|
85
|
+
return `${[...head, ...steps].join('\n')}\n`;
|
|
86
|
+
}
|
|
87
|
+
/** fs shell: detect → generate → write .github/workflows/ci.yml (or print on --dry-run). */
|
|
88
|
+
export function runDesignPipeline(opts = {}) {
|
|
89
|
+
const cwd = opts.path ?? process.cwd();
|
|
90
|
+
const files = readdirSync(cwd);
|
|
91
|
+
const stack = detectStack(files, () => {
|
|
92
|
+
const p = join(cwd, 'package.json');
|
|
93
|
+
if (!existsSync(p))
|
|
94
|
+
return null;
|
|
95
|
+
try {
|
|
96
|
+
return JSON.parse(readFileSync(p, 'utf8'));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
const yaml = generateWorkflow(stack);
|
|
103
|
+
const outPath = join(cwd, '.github', 'workflows', 'ci.yml');
|
|
104
|
+
if (opts.dryRun)
|
|
105
|
+
return { wrote: false, path: outPath, yaml };
|
|
106
|
+
if (existsSync(outPath) && !opts.force) {
|
|
107
|
+
throw new Error(`${outPath} already exists — pass --force to overwrite`);
|
|
108
|
+
}
|
|
109
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
110
|
+
writeFileSync(outPath, yaml);
|
|
111
|
+
return { wrote: true, path: outPath, yaml };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=designPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"designPipeline.js","sourceRoot":"","sources":["../../src/cli/designPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { McpServerConfig } from '../core/types.js';
|
|
2
|
+
export declare const MCP_JSON_PATH: string;
|
|
3
|
+
export interface McpJson {
|
|
4
|
+
mcpServers: Record<string, McpServerConfig>;
|
|
5
|
+
}
|
|
6
|
+
export declare function readMcpJson(path?: string): McpJson;
|
|
7
|
+
export declare function writeMcpJson(json: McpJson, path?: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* Turn `add` arguments into a server spec: a `--preset`, an http(s) URL (remote),
|
|
10
|
+
* or a command + args (stdio).
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseServerSpec(target: string | undefined, args: string[], preset?: string): McpServerConfig;
|
|
13
|
+
export declare function addServer(json: McpJson, name: string, spec: McpServerConfig): McpJson;
|
|
14
|
+
export declare function removeServer(json: McpJson, name: string): McpJson;
|
|
15
|
+
export declare function formatServerList(json: McpJson): string;
|
|
16
|
+
export interface McpCommandOptions {
|
|
17
|
+
preset?: string;
|
|
18
|
+
path?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Thin I/O shell: read mcp.json → mutate → write. Returns the message to print. */
|
|
21
|
+
export declare function runMcpCommand(action: string, name: string | undefined, args: string[], opts?: McpCommandOptions): string;
|
|
22
|
+
//# sourceMappingURL=mcpCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpCommand.d.ts","sourceRoot":"","sources":["../../src/cli/mcpCommand.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,eAAO,MAAM,aAAa,QAA4C,CAAC;AAEvE,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,wBAAgB,WAAW,CAAC,IAAI,SAAgB,GAAG,OAAO,CAQzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,SAAgB,GAAG,IAAI,CAGtE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAK5G;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAErF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAiBtD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,iBAAsB,GAC3B,MAAM,CAyBR"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// OpenSwarm - `openswarm mcp add|list|remove` (INT-1953)
|
|
3
|
+
// ============================================
|
|
4
|
+
//
|
|
5
|
+
// Manage MCP servers in ~/.openswarm/mcp.json from the CLI instead of editing
|
|
6
|
+
// the JSON by hand. The mutation helpers are pure (registry in → registry out)
|
|
7
|
+
// so routing is unit-tested; runMcpCommand is the thin read→mutate→write shell.
|
|
8
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { BUILTIN_MCP_SERVERS } from '../mcp/mcpClient.js';
|
|
12
|
+
export const MCP_JSON_PATH = join(homedir(), '.openswarm', 'mcp.json');
|
|
13
|
+
export function readMcpJson(path = MCP_JSON_PATH) {
|
|
14
|
+
if (!existsSync(path))
|
|
15
|
+
return { mcpServers: {} };
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
18
|
+
return { mcpServers: parsed.mcpServers ?? {} };
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return { mcpServers: {} };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function writeMcpJson(json, path = MCP_JSON_PATH) {
|
|
25
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
26
|
+
writeFileSync(path, `${JSON.stringify(json, null, 2)}\n`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Turn `add` arguments into a server spec: a `--preset`, an http(s) URL (remote),
|
|
30
|
+
* or a command + args (stdio).
|
|
31
|
+
*/
|
|
32
|
+
export function parseServerSpec(target, args, preset) {
|
|
33
|
+
if (preset)
|
|
34
|
+
return { preset };
|
|
35
|
+
if (target && /^https?:\/\//.test(target))
|
|
36
|
+
return { url: target };
|
|
37
|
+
if (target)
|
|
38
|
+
return { command: target, ...(args.length ? { args } : {}) };
|
|
39
|
+
throw new Error('mcp add: provide a --preset, a URL, or a command');
|
|
40
|
+
}
|
|
41
|
+
export function addServer(json, name, spec) {
|
|
42
|
+
return { mcpServers: { ...json.mcpServers, [name]: spec } };
|
|
43
|
+
}
|
|
44
|
+
export function removeServer(json, name) {
|
|
45
|
+
const next = { ...json.mcpServers };
|
|
46
|
+
delete next[name];
|
|
47
|
+
return { mcpServers: next };
|
|
48
|
+
}
|
|
49
|
+
export function formatServerList(json) {
|
|
50
|
+
const names = Object.keys(json.mcpServers);
|
|
51
|
+
if (!names.length) {
|
|
52
|
+
const presets = Object.keys(BUILTIN_MCP_SERVERS).join(', ');
|
|
53
|
+
return `No MCP servers configured. Add one with \`openswarm mcp add <name> --preset <${presets}>\` or a command/URL.`;
|
|
54
|
+
}
|
|
55
|
+
return names
|
|
56
|
+
.map((n) => {
|
|
57
|
+
const s = json.mcpServers[n];
|
|
58
|
+
const detail = s.preset
|
|
59
|
+
? `preset:${s.preset}`
|
|
60
|
+
: s.url
|
|
61
|
+
? s.url
|
|
62
|
+
: `${s.command ?? ''} ${(s.args ?? []).join(' ')}`.trim();
|
|
63
|
+
return ` ${n} — ${detail}`;
|
|
64
|
+
})
|
|
65
|
+
.join('\n');
|
|
66
|
+
}
|
|
67
|
+
/** Thin I/O shell: read mcp.json → mutate → write. Returns the message to print. */
|
|
68
|
+
export function runMcpCommand(action, name, args, opts = {}) {
|
|
69
|
+
const path = opts.path ?? MCP_JSON_PATH;
|
|
70
|
+
const json = readMcpJson(path);
|
|
71
|
+
switch (action) {
|
|
72
|
+
case 'list':
|
|
73
|
+
return formatServerList(json);
|
|
74
|
+
case 'add': {
|
|
75
|
+
if (!name)
|
|
76
|
+
throw new Error('mcp add: a server name is required');
|
|
77
|
+
const spec = parseServerSpec(args[0], args.slice(1), opts.preset);
|
|
78
|
+
writeMcpJson(addServer(json, name, spec), path);
|
|
79
|
+
return `Added MCP server "${name}". It is now available to the worker/CLI.`;
|
|
80
|
+
}
|
|
81
|
+
case 'remove': {
|
|
82
|
+
if (!name)
|
|
83
|
+
throw new Error('mcp remove: a server name is required');
|
|
84
|
+
if (!json.mcpServers[name])
|
|
85
|
+
return `No MCP server named "${name}".`;
|
|
86
|
+
writeMcpJson(removeServer(json, name), path);
|
|
87
|
+
return `Removed MCP server "${name}".`;
|
|
88
|
+
}
|
|
89
|
+
default:
|
|
90
|
+
throw new Error(`Unknown mcp action "${action}" (use add|list|remove)`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=mcpCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpCommand.js","sourceRoot":"","sources":["../../src/cli/mcpCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectHandler.d.ts","sourceRoot":"","sources":["../../src/cli/projectHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectHandler.d.ts","sourceRoot":"","sources":["../../src/cli/projectHandler.ts"],"names":[],"mappings":"AAuBA,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,UAAU,QAAqD,CAAC;AAE7E,wBAAgB,gBAAgB,IAAI,WAAW,CAE9C;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAmB,GAAG,WAAW,CAahE;AAQD,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAOtE;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAOzE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrE;AAmDD,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CASrD"}
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Manage the work-repo registry the daemon reads at startup
|
|
6
6
|
// (~/.claude/openswarm-repos.json — the same file the web dashboard writes).
|
|
7
|
-
// `setWebRunner` (src/support/web.ts)
|
|
8
|
-
// enabled
|
|
7
|
+
// `setWebRunner` (src/support/web.ts) calls runner.enableProject() for each
|
|
8
|
+
// enabled repo, which adds it to BOTH the enabled set AND allowedProjects
|
|
9
|
+
// (INT-1973) — the latter is required so resolveProjectPath reads the repo's
|
|
10
|
+
// openswarm.json mapping. A repo added here is therefore actually worked.
|
|
9
11
|
//
|
|
10
12
|
// `add` also offers a Linear team/project picker (shared with `openswarm init`
|
|
11
13
|
// via ./linearMapping) and writes the repo↔Linear mapping into the repo's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectHandler.js","sourceRoot":"","sources":["../../src/cli/projectHandler.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,sEAAsE;AACtE,+CAA+C;AAC/C,EAAE;AACF,4DAA4D;AAC5D,6EAA6E;AAC7E,
|
|
1
|
+
{"version":3,"file":"projectHandler.js","sourceRoot":"","sources":["../../src/cli/projectHandler.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,sEAAsE;AACtE,+CAA+C;AAC/C,EAAE;AACF,4DAA4D;AAC5D,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAUjF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAE7E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,UAAU;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,EAAE,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC5E,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;YAC9B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,IAAI,EAAE;SACjD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAgB,EAAE,OAAe,UAAU;IAC5D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAW,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAExD,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,GAAgB,EAAE,IAAY;IACvD,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,GAAgB,EAAE,IAAY;IAC1D,OAAO;QACL,GAAG,GAAG;QACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QAC9C,kBAAkB,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,iEAAiE,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC,CAAC;AAC3H,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,iHAAiH,CAAC,CAAC,CAAC;QACtI,OAAO;IACT,CAAC;IAED,MAAM,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,MAAM,uBAAuB,EAAE,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0HAA0H,CAAC,CAAC,CAAC;QAC/I,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC;QACpG,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6EAA6E;QAC7E,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtH,IAAI,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,kBAAkB;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iCAAiC,IAAI,kCAAkC,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { ReviewResult, RecommendedAction } from '../agents/agentPair.js';
|
|
2
|
+
import type { AdapterName } from '../adapters/types.js';
|
|
3
|
+
import { RateLimitError } from '../adapters/rateLimitError.js';
|
|
4
|
+
/** One reviewer-subagent unit of work: a directory (or a chunk of a big one). */
|
|
5
|
+
export interface AuditArea {
|
|
6
|
+
/** Human label, e.g. `src/tui/panels` or `src/agents (2/3)`. */
|
|
7
|
+
label: string;
|
|
8
|
+
/** The directory this area covers (repo-relative). */
|
|
9
|
+
dir: string;
|
|
10
|
+
/** Source files in this area (repo-relative, sorted). */
|
|
11
|
+
files: string[];
|
|
12
|
+
}
|
|
13
|
+
/** Result of reviewing one area: a verdict, or an error if the subagent failed. */
|
|
14
|
+
export interface AuditAreaResult {
|
|
15
|
+
area: AuditArea;
|
|
16
|
+
review?: ReviewResult;
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Per-area summary row for the aggregate report. */
|
|
20
|
+
export interface AuditAreaSummary {
|
|
21
|
+
label: string;
|
|
22
|
+
decision: ReviewResult['decision'] | 'error';
|
|
23
|
+
issueCount: number;
|
|
24
|
+
actionCount: number;
|
|
25
|
+
}
|
|
26
|
+
export interface AuditSummary {
|
|
27
|
+
/** Rolled-up verdict: reject if any area rejects, else revise if any revises, else approve. */
|
|
28
|
+
decision: ReviewResult['decision'];
|
|
29
|
+
totalAreas: number;
|
|
30
|
+
completed: number;
|
|
31
|
+
failed: number;
|
|
32
|
+
areas: AuditAreaSummary[];
|
|
33
|
+
/** All issues, each prefixed with its area label. */
|
|
34
|
+
issues: string[];
|
|
35
|
+
/** All recommended follow-ups, with the area folded into `location`. */
|
|
36
|
+
recommendedActions: RecommendedAction[];
|
|
37
|
+
}
|
|
38
|
+
/** Drop non-source, test, and junk-dir files. Pure. */
|
|
39
|
+
export declare function filterSourceFiles(files: string[]): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Prefer a conventional production-source root: if any `src/` files exist, audit
|
|
42
|
+
* only those (drops benchmarks/scripts/config at the repo root); otherwise fall
|
|
43
|
+
* back to the full source set. Pure. (extend the prefix list if a repo uses
|
|
44
|
+
* lib/ or packages/ instead.)
|
|
45
|
+
*/
|
|
46
|
+
export declare function preferSrcRoot(files: string[]): string[];
|
|
47
|
+
/**
|
|
48
|
+
* List the repo's tracked source files via `git ls-files` (honors .gitignore),
|
|
49
|
+
* keep production source, and prefer the src/ root. Throws if `cwd` isn't a git
|
|
50
|
+
* repo.
|
|
51
|
+
*/
|
|
52
|
+
export declare function listSourceFiles(cwd: string): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Partition source files into areas. Each directory becomes one area; a
|
|
55
|
+
* directory with more than `maxFilesPerArea` files is split into numbered
|
|
56
|
+
* chunks so a single reviewer subagent never gets an unreadable pile. Pure and
|
|
57
|
+
* deterministic (dirs and files sorted). (INT-2006)
|
|
58
|
+
*/
|
|
59
|
+
export declare function partitionIntoAreas(files: string[], maxFilesPerArea?: number): AuditArea[];
|
|
60
|
+
/**
|
|
61
|
+
* Roll N per-area results into one verdict + merged issues/actions. The worst
|
|
62
|
+
* decision wins (reject > revise > approve); errored areas are counted but don't
|
|
63
|
+
* affect the decision (a crashed subagent shouldn't silently "approve"). Pure.
|
|
64
|
+
*/
|
|
65
|
+
export declare function aggregateAuditResults(results: AuditAreaResult[]): AuditSummary;
|
|
66
|
+
/**
|
|
67
|
+
* Render the audit as a persistable markdown report. Pure — timestamp is injected
|
|
68
|
+
* (no Date.now() inside) so it's deterministic and testable. (INT-2022)
|
|
69
|
+
*/
|
|
70
|
+
export declare function formatAuditReport(summary: AuditSummary, repoName: string, timestamp: string): string;
|
|
71
|
+
/** Render the aggregate audit verdict for the terminal. Pure. */
|
|
72
|
+
export declare function formatAuditSummary(summary: AuditSummary): string;
|
|
73
|
+
/** Live fan-out progress events — consumed by the ink board (or any listener). */
|
|
74
|
+
export type AuditProgress = {
|
|
75
|
+
type: 'start';
|
|
76
|
+
label: string;
|
|
77
|
+
done: number;
|
|
78
|
+
total: number;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'log';
|
|
81
|
+
label: string;
|
|
82
|
+
line: string;
|
|
83
|
+
} | {
|
|
84
|
+
type: 'done';
|
|
85
|
+
label: string;
|
|
86
|
+
decision: ReviewResult['decision'];
|
|
87
|
+
done: number;
|
|
88
|
+
total: number;
|
|
89
|
+
} | {
|
|
90
|
+
type: 'error';
|
|
91
|
+
label: string;
|
|
92
|
+
error: string;
|
|
93
|
+
done: number;
|
|
94
|
+
total: number;
|
|
95
|
+
};
|
|
96
|
+
export interface RunMaxReviewOptions {
|
|
97
|
+
/** Max reviewer subagents in flight at once. */
|
|
98
|
+
concurrency: number;
|
|
99
|
+
/** Adapter override for the reviewers. */
|
|
100
|
+
adapter?: AdapterName;
|
|
101
|
+
/** Abort the whole audit (Ctrl+C) — propagated to every subagent. */
|
|
102
|
+
signal?: AbortSignal;
|
|
103
|
+
}
|
|
104
|
+
export interface RunMaxReviewDeps {
|
|
105
|
+
/** Review one area → verdict. Default spawns a real reviewer subagent. Injectable for tests. */
|
|
106
|
+
review?: (area: AuditArea, onLog: (line: string) => void) => Promise<ReviewResult>;
|
|
107
|
+
/** Live progress sink (the ink board). */
|
|
108
|
+
onProgress?: (e: AuditProgress) => void;
|
|
109
|
+
}
|
|
110
|
+
/** Aggregate verdict plus the per-area results (kept for area-by-area Linear filing). */
|
|
111
|
+
export interface AuditRun {
|
|
112
|
+
summary: AuditSummary;
|
|
113
|
+
results: AuditAreaResult[];
|
|
114
|
+
/** Set when a codex usage-limit aborted the run early (remaining areas skipped). (INT-2192) */
|
|
115
|
+
rateLimit?: RateLimitError;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Fan a reviewer subagent out over each area with a concurrency cap, then
|
|
119
|
+
* aggregate. Areas are partitioned by the caller (so the board can show them
|
|
120
|
+
* up-front and the cost gate can count them). Never throws on a single area
|
|
121
|
+
* failure — that area lands as an error in the summary. (INT-2006)
|
|
122
|
+
*/
|
|
123
|
+
export declare function runMaxReview(areas: AuditArea[], cwd: string, opts: RunMaxReviewOptions, deps?: RunMaxReviewDeps): Promise<AuditRun>;
|
|
124
|
+
/**
|
|
125
|
+
* Merge a fallback run (a retry of the primary run's failed/skipped areas on a
|
|
126
|
+
* different adapter) back over the primary results, then re-aggregate. The
|
|
127
|
+
* fallback's own rateLimit (e.g. claude also exhausted) carries forward. (INT-2192)
|
|
128
|
+
*/
|
|
129
|
+
export declare function mergeFallback(primary: AuditRun, fallback: AuditRun): AuditRun;
|
|
130
|
+
//# sourceMappingURL=reviewAudit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewAudit.d.ts","sourceRoot":"","sources":["../../src/cli/reviewAudit.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAW/D,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,+FAA+F;IAC/F,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,qDAAqD;IACrD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wEAAwE;IACxE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ3D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGvD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,SAAK,GAAG,SAAS,EAAE,CAsBrF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,YAAY,CA2D9E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAoDpG;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAgChE;AAID,kFAAkF;AAClF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qEAAqE;IACrE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gGAAgG;IAChG,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CACzC;AAED,yFAAyF;AACzF,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,+FAA+F;IAC/F,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAyBD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,mBAAmB,EACzB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAqCnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAI7E"}
|