feat: provider overhaul, in-process daemon, plumber + CI #27
982 new issues (0 max.) of at least severity.
Here is an overview of what got changed by this pull request:
Issues
======
+ Solved 172
- Added 982
Complexity increasing per file
==============================
- App/SwooshApp.swift 5
- Sources/SwooshCLI/ProviderCommands.swift 2
- Sources/SwooshGenerativeUI/Tokens/SwooshNeonTokens.swift 2
- Sources/SwooshProviders/OpenRouterProvider.swift 2
- Sources/SwooshUI/Pickers/UnifiedAgentPicker.swift 24
- Sources/SwooshModels/UnifiedModelCatalog.swift 5
- Sources/SwooshUI/Voice/VoicePane.swift 2
- Sources/SwooshImageGen/FALThreeDProvider.swift 10
- Tests/SwooshLocalVoiceTests/KokoroBackendTests.swift 2
- Tests/SwooshClientTests/SwooshAPIClientInfraTests.swift 4
- Tests/SwooshClientTests/WireTypeRoundTripTests+Tier1.swift 1
- Sources/SwooshToolsets/MediaGenTools.swift 3
- Sources/SwooshDaemon/DaemonToolRuntime.swift 2
- Sources/SwooshProviderBridge/ProviderFactory.swift 10
- Sources/SwooshCloudGaming/CloudGamingService.swift 9
- Sources/SwooshCloudGaming/GamepadBridge.swift 35
- Sources/SwooshCloudGaming/WebGameBridge.swift 29
- Sources/SwooshDaemon/DaemonHost.swift 1
- Sources/SwooshProviderBridge/ProviderFactory+Config.swift 21
- Sources/SwooshProviders/ProviderErrorClassification.swift 12
- Sources/SwooshStorage/SQLiteAuditLog.swift 9
- Sources/SwooshStorage/SwooshStorageSchema.swift 15
- Sources/SwooshToolsets/WebSearchTools.swift 13
- Sources/SwooshUI/Dashboard/DashboardView.swift 9
- Sources/SwooshUI/Dashboard/ModelsPane.swift 68
- Sources/SwooshUI/Dashboard/ProvidersPane.swift 112
- Sources/SwooshUI/Dashboard/SettingsPane.swift 6
- Sources/SwooshUI/Dashboard/ToolsPane.swift 31
- Sources/SwooshUI/Gaming/GamingPane.swift 36
- Sources/SwooshUI/Gaming/WebStreamView.swift 5
- Sources/SwooshUI/Interactions/MenuActionHandler.swift 19
- Tests/SwooshCloudGamingTests/CloudGamingServiceTests.swift 23
- Tests/SwooshCloudGamingTests/IntegrationFlowTests.swift 20
- Tests/SwooshProvidersTests/ProviderConfigRouterTests.swift 4
- Tests/SwooshStorageTests/SwooshStorageTests.swift 16
- Tests/SwooshToolsetsTests/WebSearchToolsTests.swift 15
- Sources/SwooshCalendar/CalendarEvent.swift 1
- Sources/SwooshCalendar/CalendarTools.swift 24
- Sources/SwooshClient/SwooshAPIClient+Calendar.swift 1
- Sources/SwooshClient/WireTypes+Calendar.swift 2
- Sources/SwooshDaemon/CalendarAPIBridge.swift 2
- Sources/SwooshUI/Dashboard/MemoryApproval.swift 8
- Sources/SwooshUI/Dashboard/SafetyPane.swift 29
- Sources/SwooshUI/MenuBar/CalendarTrayPanel.swift 6
- Sources/SwooshUI/MenuBar/CloudTrayPanel.swift 1
- Sources/SwooshUI/MenuBar/MenuBarTray.swift 6
- Sources/SwooshUI/MenuBar/TrayPanelScaffold.swift 2
- Tests/SwooshCalendarTests/CalendarStoreTests.swift 4
- Apps/SwooshiOS/GameLabScreen.swift 24
- Sources/SwooshArena/GameHarnessStore.swift 32
- Sources/SwooshArena/GameHarnessTypes.swift 22
- Sources/SwooshArena/GameIntegrationCatalog.swift 9
- Sources/SwooshArena/GamePipelineTemplates.swift 12
- Sources/SwooshArena/GameProjectScaffoldFactory.swift 23
- Sources/SwooshArena/GameSessionTypes.swift 3
- Sources/SwooshProviders/CartridgeCloudProvider.swift 26
- Sources/SwooshToolsets/GameHarnessTools.swift 40
- Sources/SwooshToolsets/GameSessionTools.swift 13
- Tests/SwooshArenaTests/GameHarnessTests.swift 16
- Tests/SwooshToolsetsTests/GameHarnessToolsTests.swift 12
- Sources/SwooshArena/GamePipelineImport.swift 44
- Sources/SwooshArena/Game3DGenerationCatalog.swift 12
- Sources/SwooshArena/Game2DCreationCatalog.swift 12
- Sources/SwooshToolsets/GameHarnessCatalogTools.swift 13
- Sources/SwooshArena/GameCLIStarterCatalog.swift 28
- Sources/SwooshCLI/GameCommands.swift 33
- Sources/SwooshClient/SwooshAPIClient+Game.swift 1
- Sources/SwooshClient/WireTypes+Game.swift 6
- Sources/SwooshDaemon/GameCatalogAPIBridge.swift 10
- Sources/SwooshCLI/RuntimePolicyCommands.swift 7
- Sources/SwooshTools/AuditToolTypes.swift 7
- Sources/SwooshTools/VaultPermissionToolTypes.swift 23
Complexity decreasing per file
==============================
+ Sources/SwooshAPI/SwooshServer.swift -3
+ Sources/SwooshCLI/CLIToolRuntime.swift -1
+ Sources/SwooshCLI/SwooshCommand.swift -15
+ Sources/SwooshClient/SwooshAPIClient.swift -3
+ Sources/SwooshDaemon/Daemon.swift -3
+ Sources/SwooshFlow/WorkflowExecutionTypes.swift -3
+ Sources/SwooshFlow/WorkflowReplayTypes.swift -4
+ Sources/SwooshLocalLLM/LiteRTEngineWrapper.swift -5
+ Sources/SwooshLocalLLM/LiteRTSwooshToolBridge.swift -5
+ Sources/SwooshTUI/DefaultCommands.swift -3
+ Sources/SwooshTUI/SystemDevCommands.swift -1
+ Sources/SwooshTools/RPCClients.swift -3
+ Sources/SwooshTools/SafetyConfig.swift -16
+ Sources/SwooshTools/ToolRegistry.swift -16
+ Sources/SwooshTools/ToolStateStores.swift -20
+ Sources/SwooshToolsets/Exports.swift -26
+ Sources/SwooshUI/Interactions/Transferables.swift -1
+ Sources/SwooshWidgets/SwooshIntentWidgets.swift -12
+ Sources/SwooshWidgets/SwooshMenuBarController.swift -1
+ Tests/SwooshAPITests/SwooshServerTests.swift -5
+ Tests/SwooshAgentLoopTests/AgentToolLoopTests.swift -1
+ Tests/SwooshClientTests/SwooshAPIClientTests.swift -1
+ Tests/SwooshFlowTests/WorkflowExecutionTests.swift -2
+ Tests/SwooshSkillsTests/SkillInstallerTests.swift -2
+ Tests/SwooshToolsTests/ToolRegistryTests.swift -7
+ Tests/SwooshToolsetsTests/DefaultToolRegistrarTests.swift -7
+ Tests/SwooshUITests/ToolbarTests.swift -4
+ Sources/SwooshDaemon/MemoriesAPIBridge.swift -5
+ Sources/SwooshLocalVoice/Backends/KokoroAneBackend.swift -3
+ Sources/SwooshLocalVoice/Backends/PocketTTSBackend.swift -9
+ Sources/SwooshLocalVoice/Backends/StyleTTS2Backend.swift -4
+ Tests/SwooshLocalVoiceTests/CloningBackendTests.swift -2
+ Tests/SwooshClientTests/WireTypeRoundTripTests+Infra.swift -1
+ Sources/SwooshCLI/SetupCommissioning.swift -8
+ Tests/SwooshCLITests/CommandParsingTests.swift -13
+ Sources/SwooshDaemon/DaemonResponseBuilders.swift -47
+ Tests/SwooshProvidersTests/ProviderFactoryDetectionTests.swift -1
+ Sources/SwooshAPI/APIHelpers.swift -15
+ Sources/SwooshAPI/APIRuntimeState.swift -4
Clones added
============
- Sources/SwooshProviders/LocalOpenAICompatibleProvider.swift 1
- Sources/SwooshProviders/OpenAIResponsesProvider.swift 2
- Sources/SwooshProviders/OpenRouterProvider.swift 2
- Sources/SwooshUI/Interactions/EditMenu.swift 1
- Sources/SwooshModels/UnifiedModelCatalog.swift 2
- Sources/SwooshUI/Voice/VoicePane.swift 2
- Sources/SwooshLocalVoice/Backends/KokoroAneBackend.swift 2
- Sources/SwooshLocalVoice/Backends/PocketTTSBackend.swift 1
- Sources/SwooshLocalVoice/Backends/StyleTTS2Backend.swift 2
- Sources/SwooshCloudGaming/NativeGameBridge.swift 1
- Sources/SwooshCloudGaming/WebGameBridge.swift 1
- Sources/SwooshModels/CacheManager.swift 2
- Sources/SwooshProviders/AnthropicProvider.swift 7
- Sources/SwooshToolsets/GamingNavigation/GamingNavigationTools.swift 12
- Sources/SwooshToolsets/NitroGen/NitroGenTools.swift 2
- Sources/SwooshUI/Dashboard/AuditPane.swift 2
- Sources/SwooshUI/Dashboard/MemoriesPane.swift 5
- Sources/SwooshUI/Dashboard/ModelsPane.swift 1
- Sources/SwooshUI/Dashboard/ProvidersPane.swift 2
- Sources/SwooshUI/Dashboard/SettingsPane.swift 4
- Sources/SwooshUI/Dashboard/SkillsPane.swift 9
- Sources/SwooshUI/Dashboard/ToolsPane.swift 8
- Sources/SwooshUI/Gaming/GameWindowPicker.swift 1
- Sources/SwooshUI/Gaming/GamingPane.swift 11
- Sources/SwooshUI/Gaming/InteractiveController.swift 2
- Sources/SwooshUI/Pickers/CacheManagerView.swift 2
- Sources/SwooshUI/Pickers/MemoryBudgetView.swift 2
- Tests/SwooshCloudGamingTests/GamepadBridgeTests.swift 2
- Tests/SwooshCloudGamingTests/IntegrationFlowTests.swift 2
- onchain/programs/dtour-vault/src/lib.rs 20
- onchain/programs/swoosh-protocol/src/instructions/initialize.rs 1
- onchain/programs/swoosh-protocol/src/instructions/stake.rs 1
- onchain/programs/swoosh-protocol/src/instructions/update_config.rs 1
- onchain/programs/swoosh-protocol/src/lib.rs 1
- Sources/SwooshCalendar/CalendarTools.swift 2
- Sources/SwooshGenerativeUI/Tokens/VoltPaper.swift 2
- Sources/SwooshUI/Dashboard/ApprovalsPane.swift 11
- Sources/SwooshUI/Dashboard/FirewallPane.swift 5
- Sources/SwooshUI/Dashboard/SafetyPane.swift 2
- Sources/SwooshUI/Dashboard/SidebarPlatformTile.swift 2
- Sources/SwooshUI/MenuBar/CalendarTrayPanel.swift 1
- Sources/SwooshUI/MenuBar/CloudTrayPanel.swift 1
- Apps/SwooshiOS/GameLabScreen.swift 2
- Sources/SwooshArena/GameIntegrationCatalog.swift 1
- Sources/SwooshProviders/CartridgeCloudProvider.swift 5
- Sources/SwooshToolsets/GameHarnessTools.swift 18
- Sources/SwooshToolsets/GameSessionTools.swift 20
- Sources/SwooshToolsets/GameHarnessCatalogTools.swift 19
- Sources/SwooshCLI/GameCommands.swift 2
- Sources/SwooshClient/WireTypes+Game.swift 1
- Sources/SwooshDaemon/GameCatalogAPIBridge.swift 2
Clones removed
==============
+ Apps/SwooshiOS/ProviderLogo.swift -3
+ Sources/SwooshCLI/CLIBackend.swift -1
+ Sources/SwooshKit/SwooshKit.swift -1
+ Sources/SwooshTools/ToolRegistry.swift -2
+ Sources/SwooshTools/ToolStateStores.swift -3
+ Sources/SwooshUI/Pickers/AttachmentMenu.swift -1
+ Sources/SwooshUI/Pickers/UnifiedAgentPicker.swift -1
See the complete overview on Codacy
Annotations
Check notice on line 12 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L12
Expected: 1; Actual: 0; Below
Check notice on line 13 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L13
Lists should be surrounded by blank lines
Check notice on line 17 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L17
Expected: 1; Actual: 0; Below
Check notice on line 18 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L18
Lists should be surrounded by blank lines
Check notice on line 22 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L22
Expected: 1; Actual: 0; Below
Check notice on line 23 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L23
Lists should be surrounded by blank lines
Check notice on line 26 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L26
Expected: 1; Actual: 0; Below
Check notice on line 27 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L27
Lists should be surrounded by blank lines
Check notice on line 30 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L30
Expected: 1; Actual: 0; Below
Check notice on line 31 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L31
Lists should be surrounded by blank lines
Check notice on line 35 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L35
Expected: 1; Actual: 0; Below
Check notice on line 36 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L36
Lists should be surrounded by blank lines
Check notice on line 39 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L39
Expected: 1; Actual: 0; Below
Check notice on line 40 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L40
Lists should be surrounded by blank lines
Check notice on line 43 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L43
Expected: 1; Actual: 0; Below
Check notice on line 44 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L44
Lists should be surrounded by blank lines
Check notice on line 48 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L48
Expected: 1; Actual: 0; Below
Check notice on line 49 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L49
Lists should be surrounded by blank lines
Check notice on line 51 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L51
Expected: 1; Actual: 0; Below
Check notice on line 61 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L61
Expected: 0; Actual: 2
Check notice on line 61 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L61
Lists should be surrounded by blank lines
Check notice on line 62 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L62
Expected: 0; Actual: 2
Check notice on line 78 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L78
Expected: 1; Actual: 0; Below
Check notice on line 84 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L84
Expected: 1; Actual: 0; Below
Check notice on line 86 in .claude/agent-memory/plumber/lane-patterns.md
codacy-production / Codacy Static Code Analysis
.claude/agent-memory/plumber/lane-patterns.md#L86
Lists should be surrounded by blank lines