@sriinnu/runic 2.0.0 → 2.11.2
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/CHANGELOG.md +261 -0
- package/LICENSE +373 -21
- package/README.md +96 -89
- package/THIRD-PARTY-NOTICES.md +651 -0
- package/package.json +14 -4
- package/.swiftformat +0 -50
- package/.swiftlint.yml +0 -160
- package/CONTRIBUTING.md +0 -456
- package/Icon.icns +0 -0
- package/Icon.icon/Assets/runic.png +0 -0
- package/Icon.icon/icon.json +0 -36
- package/Package.resolved +0 -51
- package/Package.swift +0 -136
- package/Packages/Helix/LICENSE +0 -21
- package/Packages/Helix/Package.swift +0 -29
- package/Packages/Helix/README.md +0 -976
- package/Packages/Helix/Sources/Helix/Binding.swift +0 -111
- package/Packages/Helix/Sources/Helix/CommandParser.swift +0 -160
- package/Packages/Helix/Sources/Helix/CommandSignature.swift +0 -117
- package/Packages/Helix/Sources/Helix/ExpressibleFromArgument.swift +0 -72
- package/Packages/Helix/Sources/Helix/HelpGenerator.swift +0 -175
- package/Packages/Helix/Sources/Helix/NameSpecification.swift +0 -98
- package/Packages/Helix/Sources/Helix/ParsableCommand.swift +0 -204
- package/Packages/Helix/Sources/Helix/Platform/DarwinPlatformContext.swift +0 -44
- package/Packages/Helix/Sources/Helix/Platform/LinuxPlatformContext.swift +0 -34
- package/Packages/Helix/Sources/Helix/Platform/PlatformContext+Default.swift +0 -91
- package/Packages/Helix/Sources/Helix/Platform/PlatformContext.swift +0 -94
- package/Packages/Helix/Sources/Helix/Platform/PlatformPath.swift +0 -167
- package/Packages/Helix/Sources/Helix/Platform/Stdio.swift +0 -99
- package/Packages/Helix/Sources/Helix/Platform/WebPlatformContext.swift +0 -146
- package/Packages/Helix/Sources/Helix/Platform/WindowsPlatformContext.swift +0 -97
- package/Packages/Helix/Sources/Helix/Program.swift +0 -204
- package/Packages/Helix/Sources/Helix/PropertyWrappers.swift +0 -367
- package/Packages/Silo/LICENSE +0 -21
- package/Packages/Silo/Package.swift +0 -34
- package/Packages/Silo/README.md +0 -466
- package/Packages/Silo/Sources/Silo/BinaryCookiesReader.swift +0 -169
- package/Packages/Silo/Sources/Silo/BrowserCookieAnalytics.swift +0 -365
- package/Packages/Silo/Sources/Silo/BrowserCookieBackends.swift +0 -594
- package/Packages/Silo/Sources/Silo/BrowserCookieClient.swift +0 -326
- package/Packages/Silo/Sources/Silo/BrowserCookieExport.swift +0 -154
- package/Packages/Silo/Sources/Silo/BrowserCookieImport.swift +0 -119
- package/Packages/Silo/Sources/Silo/BrowserCookieMockStore.swift +0 -121
- package/Packages/Silo/Sources/Silo/BrowserCookieModels.swift +0 -391
- package/Packages/Silo/Sources/Silo/ChromiumCookieReader.swift +0 -240
- package/Packages/Silo/Sources/Silo/CryptoSupport.swift +0 -86
- package/Packages/Silo/Sources/Silo/FirefoxCookieReader.swift +0 -172
- package/Packages/Silo/Sources/Silo/LinuxChromiumCookieReader.swift +0 -172
- package/Packages/Silo/Sources/Silo/LinuxSecretService.swift +0 -105
- package/Packages/Silo/Sources/Silo/MacOSChromiumCookieReader.swift +0 -191
- package/Packages/Silo/Sources/Silo/SQLiteSnapshot.swift +0 -41
- package/Packages/Silo/Sources/Silo/WindowsChromiumCookieReader.swift +0 -110
- package/RuniciOS/App/RuniciOSApp.swift +0 -105
- package/RuniciOS/Core/RunicTypographyiOS.swift +0 -24
- package/RuniciOS/Core/iOSUsageStore.swift +0 -192
- package/RuniciOS/Views/ProviderDetailView.swift +0 -312
- package/RuniciOS/Views/ProviderListView.swift +0 -228
- package/RuniciOS/Widgets/LargeWidget.swift +0 -367
- package/RuniciOS/Widgets/LiveActivity.swift +0 -342
- package/RuniciOS/Widgets/LockScreenWidget.swift +0 -273
- package/RuniciOS/Widgets/MediumWidget.swift +0 -370
- package/RuniciOS/Widgets/RunicWidget.swift +0 -274
- package/RuniciOS/Widgets/SmallWidget.swift +0 -281
- package/RuniciOS/Widgets/WidgetModels.swift +0 -285
- package/RuniciOS/Widgets/WidgetTimeline.swift +0 -270
- package/Scripts/CREATION-SUMMARY.md +0 -367
- package/Scripts/DIRECTORY-STRUCTURE.md +0 -358
- package/Scripts/GETTING-STARTED-CHECKLIST.md +0 -364
- package/Scripts/INDEX.md +0 -365
- package/Scripts/QUICK-REFERENCE.md +0 -164
- package/Scripts/README-SCRIPTS.md +0 -926
- package/Scripts/build-android.sh +0 -526
- package/Scripts/build-ios.sh +0 -529
- package/Scripts/build-macos.sh +0 -603
- package/Scripts/build-windows.sh +0 -504
- package/Scripts/build_icon.sh +0 -49
- package/Scripts/changelog-to-html.sh +0 -89
- package/Scripts/check-release-assets.sh +0 -10
- package/Scripts/ci-config.yml +0 -474
- package/Scripts/compile_and_run.sh +0 -219
- package/Scripts/compile_and_run_adhoc.sh +0 -4
- package/Scripts/docs-list.mjs +0 -119
- package/Scripts/make_appcast.sh +0 -58
- package/Scripts/package_app.sh +0 -409
- package/Scripts/release-lib.sh +0 -214
- package/Scripts/release.sh +0 -76
- package/Scripts/setup-all.sh +0 -387
- package/Scripts/setup-ios.sh +0 -404
- package/Scripts/setup-react-native.sh +0 -523
- package/Scripts/sign-and-notarize.sh +0 -122
- package/Scripts/test_live_update.sh +0 -38
- package/Scripts/validate_changelog.sh +0 -23
- package/Scripts/verify_appcast.sh +0 -92
- package/Sources/Runic/About.swift +0 -93
- package/Sources/Runic/AppNotifications.swift +0 -117
- package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -670
- package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -519
- package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -824
- package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -90
- package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1412
- package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -339
- package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -423
- package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
- package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -81
- package/Sources/Runic/Core/Login/ClaudeLoginRunner.swift +0 -103
- package/Sources/Runic/Core/Login/CodexLoginRunner.swift +0 -154
- package/Sources/Runic/Core/Login/CursorLoginRunner.swift +0 -206
- package/Sources/Runic/Core/Login/GeminiLoginRunner.swift +0 -92
- package/Sources/Runic/Core/Rendering/IconRenderer.swift +0 -1222
- package/Sources/Runic/Core/Rendering/IconView.swift +0 -122
- package/Sources/Runic/Core/Rendering/ProviderBrandIcon.swift +0 -71
- package/Sources/Runic/Core/RunicAnimation.swift +0 -53
- package/Sources/Runic/Core/RunicColors.swift +0 -73
- package/Sources/Runic/Core/RunicCornerRadius.swift +0 -15
- package/Sources/Runic/Core/RunicSpacing.swift +0 -68
- package/Sources/Runic/Core/RunicTypography.swift +0 -206
- package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
- package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
- package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1749
- package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -33
- package/Sources/Runic/Core/Stores/UsageStore+Status.swift +0 -189
- package/Sources/Runic/Core/Stores/UsageStore+TokenCost.swift +0 -33
- package/Sources/Runic/Core/Stores/UsageStore+WidgetSnapshot.swift +0 -67
- package/Sources/Runic/Core/Stores/UsageStore.swift +0 -3631
- package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -117
- package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -117
- package/Sources/Runic/Core/UsageExporter.swift +0 -197
- package/Sources/Runic/Date+RelativeDescription.swift +0 -21
- package/Sources/Runic/HiddenWindowView.swift +0 -32
- package/Sources/Runic/InstallOrigin.swift +0 -9
- package/Sources/Runic/KeyboardShortcuts+Names.swift +0 -6
- package/Sources/Runic/MouseLocationReader.swift +0 -65
- package/Sources/Runic/Notifications+Runic.swift +0 -6
- package/Sources/Runic/OpenAICreditsPurchaseWindowController.swift +0 -503
- package/Sources/Runic/ProviderRegistry.swift +0 -100
- package/Sources/Runic/ProviderSwitcherButtons.swift +0 -267
- package/Sources/Runic/Providers/Antigravity/AntigravityLoginFlow.swift +0 -11
- package/Sources/Runic/Providers/Antigravity/AntigravityProviderImplementation.swift +0 -14
- package/Sources/Runic/Providers/Auggie/AuggieProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Azure/AzureProviderImplementation.swift +0 -52
- package/Sources/Runic/Providers/Bedrock/BedrockProviderImplementation.swift +0 -42
- package/Sources/Runic/Providers/Cerebras/CerebrasProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Claude/ClaudeLoginFlow.swift +0 -26
- package/Sources/Runic/Providers/Claude/ClaudeProviderImplementation.swift +0 -14
- package/Sources/Runic/Providers/Codex/CodexLoginFlow.swift +0 -18
- package/Sources/Runic/Providers/Codex/CodexProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Cohere/CohereProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift +0 -193
- package/Sources/Runic/Providers/Copilot/CopilotProviderImplementation.swift +0 -110
- package/Sources/Runic/Providers/Cursor/CursorLoginFlow.swift +0 -28
- package/Sources/Runic/Providers/Cursor/CursorProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/DeepSeek/DeepSeekProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Factory/FactoryLoginFlow.swift +0 -12
- package/Sources/Runic/Providers/Factory/FactoryProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Fireworks/FireworksProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Gemini/GeminiLoginFlow.swift +0 -20
- package/Sources/Runic/Providers/Gemini/GeminiProviderImplementation.swift +0 -15
- package/Sources/Runic/Providers/Groq/GroqProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Kimi/KimiProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/MiniMax/MiniMaxProviderImplementation.swift +0 -32
- package/Sources/Runic/Providers/Mistral/MistralProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/OpenRouter/OpenRouterProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Perplexity/PerplexityProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/SambaNova/SambaNovaProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Shared/ProviderCatalog.swift +0 -15
- package/Sources/Runic/Providers/Shared/ProviderImplementation.swift +0 -51
- package/Sources/Runic/Providers/Shared/ProviderImplementationRegistry.swift +0 -66
- package/Sources/Runic/Providers/Shared/ProviderLoginFlow.swift +0 -12
- package/Sources/Runic/Providers/Shared/ProviderSettingsDescriptors.swift +0 -99
- package/Sources/Runic/Providers/Shared/SystemSettingsLinks.swift +0 -18
- package/Sources/Runic/Providers/Together/TogetherProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/XAI/XAIProviderImplementation.swift +0 -24
- package/Sources/Runic/Providers/Zai/ZaiProviderImplementation.swift +0 -24
- package/Sources/Runic/Resources/Fonts/Caveat-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Caveat-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Light.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/FiraCode-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/IBMPlexMono-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/Inconsolata-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Medium.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-Regular.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/JetBrainsMono-SemiBold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/SpaceMono-Bold.ttf +0 -0
- package/Sources/Runic/Resources/Fonts/SpaceMono-Regular.ttf +0 -0
- package/Sources/Runic/Resources/ProviderIcon-antigravity.svg +0 -2
- package/Sources/Runic/Resources/ProviderIcon-auggie.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-azure.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-bedrock.svg +0 -7
- package/Sources/Runic/Resources/ProviderIcon-cerebras.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-claude.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-codex.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-cohere.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-copilot.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-cursor.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-deepseek.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-factory.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-fireworks.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-gemini.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-groq.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-kimi.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-minimax.svg +0 -1
- package/Sources/Runic/Resources/ProviderIcon-mistral.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-openrouter.svg +0 -7
- package/Sources/Runic/Resources/ProviderIcon-perplexity.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-qwen.svg +0 -9
- package/Sources/Runic/Resources/ProviderIcon-sambanova.svg +0 -4
- package/Sources/Runic/Resources/ProviderIcon-together.svg +0 -5
- package/Sources/Runic/Resources/ProviderIcon-vertexai.svg +0 -17
- package/Sources/Runic/Resources/ProviderIcon-xai.svg +0 -3
- package/Sources/Runic/Resources/ProviderIcon-zai.svg +0 -5
- package/Sources/Runic/Resources/RunicMenubarIcon.svg +0 -7
- package/Sources/Runic/Resources/provider-context-windows.json +0 -20
- package/Sources/Runic/RunicApp.swift +0 -367
- package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
- package/Sources/Runic/UsagePaceText.swift +0 -52
- package/Sources/Runic/UsageProgressBar.swift +0 -228
- package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
- package/Sources/Runic/Utilities/LoadingPattern.swift +0 -62
- package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
- package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -254
- package/Sources/Runic/Views/Menu/ChartPanelStyle.swift +0 -22
- package/Sources/Runic/Views/Menu/CostComparativeChartMenuView.swift +0 -275
- package/Sources/Runic/Views/Menu/CostHistoryChartMenuView.swift +0 -377
- package/Sources/Runic/Views/Menu/CreditsHistoryChartMenuView.swift +0 -312
- package/Sources/Runic/Views/Menu/EfficiencyMetricsMenuView.swift +0 -311
- package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -231
- package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
- package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -157
- package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -63
- package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -248
- package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
- package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1889
- package/Sources/Runic/Views/Menu/MenuContent.swift +0 -153
- package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -371
- package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -35
- package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -241
- package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -281
- package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -214
- package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
- package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -86
- package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -214
- package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
- package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -231
- package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -369
- package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -191
- package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
- package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -621
- package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -306
- package/Sources/Runic/Views/Preferences/PreferencesAboutPane.swift +0 -271
- package/Sources/Runic/Views/Preferences/PreferencesAdvancedPane.swift +0 -268
- package/Sources/Runic/Views/Preferences/PreferencesAlertsPane.swift +0 -418
- package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -637
- package/Sources/Runic/Views/Preferences/PreferencesBudgetsPane.swift +0 -344
- package/Sources/Runic/Views/Preferences/PreferencesComponents.swift +0 -230
- package/Sources/Runic/Views/Preferences/PreferencesCustomProvidersPane.swift +0 -321
- package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
- package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -250
- package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
- package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -572
- package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -291
- package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3480
- package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -29
- package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -61
- package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -213
- package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
- package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -376
- package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
- package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -762
- package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
- package/Sources/RunicCLI/CLIEntry.swift +0 -983
- package/Sources/RunicCLI/CLIRenderer.swift +0 -87
- package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
- package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -363
- package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -453
- package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -430
- package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -167
- package/Sources/RunicClaudeWatchdog/main.swift +0 -122
- package/Sources/RunicClaudeWebProbe/main.swift +0 -62
- package/Sources/RunicCore/AlertRuleStore.swift +0 -187
- package/Sources/RunicCore/BrowserCookieImportOrder.swift +0 -25
- package/Sources/RunicCore/CopilotUsageModels.swift +0 -84
- package/Sources/RunicCore/CostUsageFetcher.swift +0 -119
- package/Sources/RunicCore/CostUsageModels.swift +0 -479
- package/Sources/RunicCore/CreditsModels.swift +0 -50
- package/Sources/RunicCore/CustomProviders/CustomProviderModels.swift +0 -268
- package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -631
- package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -444
- package/Sources/RunicCore/Host/PTY/TTYCommandRunner.swift +0 -679
- package/Sources/RunicCore/Host/Process/SubprocessRunner.swift +0 -135
- package/Sources/RunicCore/Integrations/GitHubIntegration.swift +0 -173
- package/Sources/RunicCore/Logging/JSONStderrLogHandler.swift +0 -79
- package/Sources/RunicCore/Logging/OSLogLogHandler.swift +0 -86
- package/Sources/RunicCore/Logging/RunicLog.swift +0 -123
- package/Sources/RunicCore/Models/EnhancedUsageModels.swift +0 -370
- package/Sources/RunicCore/OpenAIDashboardModels.swift +0 -210
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardBrowserCookieImporter.swift +0 -676
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardFetcher.swift +0 -492
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardNavigationDelegate.swift +0 -51
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardParser.swift +0 -483
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardScrapeScript.swift +0 -558
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebViewCache.swift +0 -204
- package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebsiteDataStore.swift +0 -78
- package/Sources/RunicCore/PathEnvironment.swift +0 -482
- package/Sources/RunicCore/Performance/PerformanceModels.swift +0 -371
- package/Sources/RunicCore/Performance/PerformanceStorageImpl.swift +0 -426
- package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
- package/Sources/RunicCore/ProjectBudgetStore.swift +0 -102
- package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
- package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -68
- package/Sources/RunicCore/Providers/Antigravity/AntigravityStatusProbe.swift +0 -685
- package/Sources/RunicCore/Providers/Auggie/AuggieProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Auggie/AuggieUsageFetcher.swift +0 -142
- package/Sources/RunicCore/Providers/Azure/AzureProviderDescriptor.swift +0 -141
- package/Sources/RunicCore/Providers/Azure/AzureUsageFetcher.swift +0 -188
- package/Sources/RunicCore/Providers/Bedrock/BedrockProviderDescriptor.swift +0 -126
- package/Sources/RunicCore/Providers/Bedrock/BedrockUsageFetcher.swift +0 -164
- package/Sources/RunicCore/Providers/Cerebras/CerebrasProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Cerebras/CerebrasUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Claude/ClaudeCLISession.swift +0 -332
- package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthCredentials.swift +0 -180
- package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthUsageFetcher.swift +0 -137
- package/Sources/RunicCore/Providers/Claude/ClaudeProviderDescriptor.swift +0 -209
- package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
- package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -30
- package/Sources/RunicCore/Providers/Claude/ClaudeUsageFetcher.swift +0 -480
- package/Sources/RunicCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +0 -780
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthCredentials.swift +0 -147
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthUsageFetcher.swift +0 -280
- package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexTokenRefresher.swift +0 -100
- package/Sources/RunicCore/Providers/Codex/CodexProviderDescriptor.swift +0 -245
- package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
- package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -26
- package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -183
- package/Sources/RunicCore/Providers/Cohere/CohereProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Cohere/CohereUsageFetcher.swift +0 -85
- package/Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift +0 -123
- package/Sources/RunicCore/Providers/Copilot/CopilotGitHubCLITokenReader.swift +0 -117
- package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
- package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -293
- package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -385
- package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -67
- package/Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift +0 -595
- package/Sources/RunicCore/Providers/DeepSeek/DeepSeekProviderDescriptor.swift +0 -85
- package/Sources/RunicCore/Providers/DeepSeek/DeepSeekUsageFetcher.swift +0 -108
- package/Sources/RunicCore/Providers/Factory/FactoryLocalStorageImporter.swift +0 -398
- package/Sources/RunicCore/Providers/Factory/FactoryProviderDescriptor.swift +0 -67
- package/Sources/RunicCore/Providers/Factory/FactoryStatusProbe.swift +0 -1276
- package/Sources/RunicCore/Providers/Fireworks/FireworksProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Fireworks/FireworksUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Gemini/GeminiProviderDescriptor.swift +0 -67
- package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -839
- package/Sources/RunicCore/Providers/Groq/GroqProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Groq/GroqUsageFetcher.swift +0 -71
- package/Sources/RunicCore/Providers/Kimi/KimiProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Kimi/KimiUsageFetcher.swift +0 -77
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxProviderDescriptor.swift +0 -97
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxSettingsReader.swift +0 -54
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxUsageFetcher.swift +0 -168
- package/Sources/RunicCore/Providers/MiniMax/MiniMaxWebUsageFetcher.swift +0 -911
- package/Sources/RunicCore/Providers/Mistral/MistralProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Mistral/MistralUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/OpenRouter/OpenRouterProviderDescriptor.swift +0 -87
- package/Sources/RunicCore/Providers/OpenRouter/OpenRouterUsageFetcher.swift +0 -216
- package/Sources/RunicCore/Providers/Perplexity/PerplexityProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/Perplexity/PerplexityUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/ProviderBranding.swift +0 -25
- package/Sources/RunicCore/Providers/ProviderCLIConfig.swift +0 -17
- package/Sources/RunicCore/Providers/ProviderDescriptor.swift +0 -129
- package/Sources/RunicCore/Providers/ProviderFetchPlan.swift +0 -263
- package/Sources/RunicCore/Providers/ProviderSettingsSnapshot.swift +0 -98
- package/Sources/RunicCore/Providers/ProviderTokenResolver.swift +0 -501
- package/Sources/RunicCore/Providers/ProviderVersionDetector.swift +0 -68
- package/Sources/RunicCore/Providers/Providers.swift +0 -184
- package/Sources/RunicCore/Providers/Qwen/QwenProviderDescriptor.swift +0 -86
- package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
- package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -328
- package/Sources/RunicCore/Providers/SambaNova/SambaNovaProviderDescriptor.swift +0 -84
- package/Sources/RunicCore/Providers/SambaNova/SambaNovaUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Together/TogetherProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/Together/TogetherUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/VertexAI/VertexAIProviderDescriptor.swift +0 -123
- package/Sources/RunicCore/Providers/VertexAI/VertexAISettingsReader.swift +0 -48
- package/Sources/RunicCore/Providers/VertexAI/VertexAIUsageFetcher.swift +0 -144
- package/Sources/RunicCore/Providers/XAI/XAIProviderDescriptor.swift +0 -83
- package/Sources/RunicCore/Providers/XAI/XAIUsageFetcher.swift +0 -75
- package/Sources/RunicCore/Providers/Zai/ZaiProviderDescriptor.swift +0 -74
- package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
- package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -745
- package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -384
- package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -307
- package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -287
- package/Sources/RunicCore/Sync/SyncRecord.swift +0 -402
- package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -288
- package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -768
- package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -338
- package/Sources/RunicCore/Team/TeamModels.swift +0 -584
- package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
- package/Sources/RunicCore/Team/TeamStore.swift +0 -809
- package/Sources/RunicCore/TextParsing.swift +0 -55
- package/Sources/RunicCore/UsageFetcher.swift +0 -694
- package/Sources/RunicCore/UsageFormatter.swift +0 -410
- package/Sources/RunicCore/UsageLedger/ClaudeUsageLogSource.swift +0 -441
- package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -502
- package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -161
- package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
- package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
- package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -675
- package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
- package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
- package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -284
- package/Sources/RunicCore/UsagePace.swift +0 -81
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageCache.swift +0 -73
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageJsonl.swift +0 -74
- package/Sources/RunicCore/Vendored/CostUsage/CostUsagePricing.swift +0 -208
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +0 -455
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Timestamp.swift +0 -132
- package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner.swift +0 -589
- package/Sources/RunicCore/WidgetSnapshot.swift +0 -183
- package/Sources/RunicMacroSupport/ProviderRegistrationMacros.swift +0 -14
- package/Sources/RunicMacros/ProviderRegistrationMacros.swift +0 -216
- package/Sources/RunicWidget/RunicWidgetBundle.swift +0 -79
- package/Sources/RunicWidget/RunicWidgetProvider.swift +0 -283
- package/Sources/RunicWidget/RunicWidgetViews.swift +0 -680
- package/Tests/RunicTests/AntigravityStatusProbeTests.swift +0 -50
- package/Tests/RunicTests/AppDelegateTests.swift +0 -48
- package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -21
- package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -69
- package/Tests/RunicTests/CLICostTests.swift +0 -64
- package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -21
- package/Tests/RunicTests/CLISnapshotTests.swift +0 -71
- package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -57
- package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -163
- package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -29
- package/Tests/RunicTests/ClaudeUsageTests.swift +0 -369
- package/Tests/RunicTests/CodexOAuthTests.swift +0 -121
- package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -80
- package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -74
- package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -74
- package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -392
- package/Tests/RunicTests/CostUsagePricingTests.swift +0 -48
- package/Tests/RunicTests/CostUsageScannerTests.swift +0 -698
- package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -322
- package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -67
- package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
- package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -27
- package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
- package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
- package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -232
- package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
- package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -72
- package/Tests/RunicTests/InstallOriginTests.swift +0 -17
- package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
- package/Tests/RunicTests/LiveAccountTests.swift +0 -24
- package/Tests/RunicTests/LoadingPatternTests.swift +0 -34
- package/Tests/RunicTests/MenuCardModelTests.swift +0 -544
- package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -67
- package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -11
- package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -110
- package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -16
- package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -74
- package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -26
- package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -133
- package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -64
- package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -131
- package/Tests/RunicTests/PathBuilderTests.swift +0 -236
- package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -159
- package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -37
- package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -15
- package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
- package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -236
- package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -50
- package/Tests/RunicTests/RunicTests.swift +0 -119
- package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -35
- package/Tests/RunicTests/SettingsStoreTests.swift +0 -265
- package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -54
- package/Tests/RunicTests/StatusMenuTests.swift +0 -475
- package/Tests/RunicTests/StatusProbeTests.swift +0 -376
- package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -18
- package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -64
- package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -147
- package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
- package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -157
- package/Tests/RunicTests/TextParsingTests.swift +0 -11
- package/Tests/RunicTests/UsageFormatterTests.swift +0 -111
- package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -170
- package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -211
- package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -81
- package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -168
- package/Tests/RunicTests/UsagePaceTests.swift +0 -76
- package/Tests/RunicTests/UsagePaceTextTests.swift +0 -108
- package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -89
- package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -43
- package/Tests/RunicTests/ZaiProviderTests.swift +0 -59
- package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -9
- package/TestsLinux/PlatformGatingTests.swift +0 -46
- package/appcast.xml +0 -104
- package/assets/logo-concept-stack.svg +0 -24
- package/assets/logo-minimal-bars.svg +0 -15
- package/assets/logo.svg +0 -20
- package/assets/logo2.svg +0 -43
- package/bin/docs-list +0 -5
- package/build-and-run.sh +0 -369
- package/docs/.nojekyll +0 -1
- package/docs/CNAME +0 -1
- package/docs/antigravity.md +0 -75
- package/docs/architecture.md +0 -32
- package/docs/claude.md +0 -93
- package/docs/cli-commands/integration_guide.md +0 -371
- package/docs/cli-commands/quick_reference.md +0 -362
- package/docs/cli-commands/readme.md +0 -361
- package/docs/cli.md +0 -156
- package/docs/cloudkit_sync_guide.md +0 -495
- package/docs/codebase_review.md +0 -288
- package/docs/codex-oauth.md +0 -635
- package/docs/codex.md +0 -104
- package/docs/codexbar.png +0 -0
- package/docs/copilot.md +0 -44
- package/docs/cursor.md +0 -46
- package/docs/design/designcomparisonchart.md +0 -510
- package/docs/design/implementationguide.md +0 -792
- package/docs/design/menubaricondesignconcepts.md +0 -796
- package/docs/design/mockups/hybridiconconcept.svg +0 -62
- package/docs/design/mockups/infinityiconconcept.svg +0 -41
- package/docs/design/mockups/infinityiconstates.svg +0 -129
- package/docs/design/mockups/wavelogorefined.svg +0 -48
- package/docs/design/quick_summary.md +0 -426
- package/docs/design/readme.md +0 -478
- package/docs/design/sizespecifications.md +0 -575
- package/docs/design-system.md +0 -836
- package/docs/factory.md +0 -103
- package/docs/gemini.md +0 -73
- package/docs/icon.md +0 -37
- package/docs/icon.png +0 -0
- package/docs/index.html +0 -175
- package/docs/keychain_fix.md +0 -274
- package/docs/minimax.md +0 -71
- package/docs/packaging.md +0 -25
- package/docs/progress-bar-improvements.md +0 -240
- package/docs/progress-bar-quick-reference.md +0 -283
- package/docs/progress-bar-technical-details.md +0 -432
- package/docs/progress-bar-visual-test.swift +0 -375
- package/docs/provider.md +0 -202
- package/docs/providers.md +0 -86
- package/docs/refactor/macros.md +0 -35
- package/docs/refresh-loop.md +0 -22
- package/docs/releasing-homebrew.md +0 -35
- package/docs/releasing.md +0 -121
- package/docs/research/concrete_todo_2026-02-22.md +0 -47
- package/docs/research/core-feature-research.md +0 -248
- package/docs/research/feature_uiux_roadmap_2026-02-22.md +0 -202
- package/docs/research/parity_matrix.md +0 -49
- package/docs/research/provider_expansion_candidates_2026-02-22.md +0 -80
- package/docs/research/provider_model_token_project_matrix_2026-02-23.md +0 -46
- package/docs/research/release_gate_checklist.md +0 -57
- package/docs/site.css +0 -505
- package/docs/sparkle.md +0 -28
- package/docs/status.md +0 -28
- package/docs/sync/implementation.md +0 -393
- package/docs/sync/readme.md +0 -317
- package/docs/sync_files_summary.md +0 -391
- package/docs/sync_quick_reference.md +0 -225
- package/docs/todo.md +0 -11
- package/docs/ui.md +0 -29
- package/docs/web-integration.md +0 -9
- package/docs/widgets.md +0 -85
- package/docs/workflows/error-handling-improvements.md +0 -434
- package/docs/workflows/folder_structure.md +0 -299
- package/docs/workflows/loading_states.md +0 -446
- package/docs/workflows/loading_states_examples.md +0 -565
- package/docs/workflows/loading_states_flow.md +0 -430
- package/docs/workflows/performance_optimizations.md +0 -457
- package/docs/workflows/phase1-cli-testing-report.md +0 -313
- package/docs/workflows/quick_reference.md +0 -228
- package/docs/workflows/readme.md +0 -59
- package/docs/workflows/recent_improvements.md +0 -275
- package/docs/workflows/sync_enablement_summary.md +0 -400
- package/docs/zai.md +0 -43
- package/runic.png +0 -0
- package/runic.svg +0 -15
- package/version.env +0 -2
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
# Runic CLI Commands - Quick Reference
|
|
2
|
-
|
|
3
|
-
Quick reference guide for all Runic CLI tracking commands.
|
|
4
|
-
|
|
5
|
-
## Command Overview
|
|
6
|
-
|
|
7
|
-
| Command | Purpose | Key Options |
|
|
8
|
-
|---------|---------|-------------|
|
|
9
|
-
| `models` | Model usage breakdown | `--provider`, `--days`, `--by-project` |
|
|
10
|
-
| `projects` | Project tracking | `--list`, `--stats`, `--sort-name` |
|
|
11
|
-
| `alerts` | Usage alerts | `--active`, `--history`, `--clear` |
|
|
12
|
-
| `reset` | Reset timings | `--when`, `--all`, `--compact` |
|
|
13
|
-
| `usage-enhanced` | Enhanced usage | `--mode`, `--compare`, `--projected` |
|
|
14
|
-
|
|
15
|
-
## Global Options
|
|
16
|
-
|
|
17
|
-
Available on all commands:
|
|
18
|
-
- `--json`, `-j` - JSON output
|
|
19
|
-
- `--pretty` - Pretty-print JSON
|
|
20
|
-
- `--no-color` - Disable colors
|
|
21
|
-
- `--help`, `-h` - Show help
|
|
22
|
-
|
|
23
|
-
## Command Details
|
|
24
|
-
|
|
25
|
-
### runic models
|
|
26
|
-
|
|
27
|
-
Show which AI models were used and their token consumption.
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
# Basic usage
|
|
31
|
-
runic models
|
|
32
|
-
|
|
33
|
-
# Filter by provider
|
|
34
|
-
runic models --provider claude
|
|
35
|
-
runic models -p codex
|
|
36
|
-
|
|
37
|
-
# Time range
|
|
38
|
-
runic models --days 7
|
|
39
|
-
runic models -d 30
|
|
40
|
-
|
|
41
|
-
# Group by project
|
|
42
|
-
runic models --by-project
|
|
43
|
-
|
|
44
|
-
# JSON output
|
|
45
|
-
runic models --json --pretty
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Output:** Table showing model name, provider, tokens, requests, and cost.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
### runic projects
|
|
53
|
-
|
|
54
|
-
Track usage across different projects and codebases.
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# List all projects
|
|
58
|
-
runic projects
|
|
59
|
-
runic projects --list
|
|
60
|
-
runic projects -l
|
|
61
|
-
|
|
62
|
-
# Show stats for specific project
|
|
63
|
-
runic projects --stats my-project-id
|
|
64
|
-
runic projects -s my-project-id
|
|
65
|
-
|
|
66
|
-
# Sort options
|
|
67
|
-
runic projects --sort-name # Alphabetical
|
|
68
|
-
runic projects --sort-tokens # By usage (default)
|
|
69
|
-
|
|
70
|
-
# Filter
|
|
71
|
-
runic projects --provider claude --days 7
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Output:**
|
|
75
|
-
- List mode: Table of all projects
|
|
76
|
-
- Stats mode: Detailed project breakdown
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
### runic alerts
|
|
81
|
-
|
|
82
|
-
Manage usage threshold alerts.
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Show active alerts
|
|
86
|
-
runic alerts
|
|
87
|
-
runic alerts --active
|
|
88
|
-
runic alerts -a
|
|
89
|
-
|
|
90
|
-
# View history
|
|
91
|
-
runic alerts --history
|
|
92
|
-
runic alerts -h
|
|
93
|
-
|
|
94
|
-
# Clear resolved alerts
|
|
95
|
-
runic alerts --clear
|
|
96
|
-
runic alerts -c
|
|
97
|
-
|
|
98
|
-
# Filter by provider
|
|
99
|
-
runic alerts --provider claude
|
|
100
|
-
runic alerts -p codex
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Output:** List of alerts with severity levels.
|
|
104
|
-
|
|
105
|
-
**Alert Levels:**
|
|
106
|
-
- ✗ Critical (>90% used) - Red
|
|
107
|
-
- ⚠ Warning (>75% used) - Yellow
|
|
108
|
-
- ℹ Info (>50% used) - Cyan
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
### runic reset
|
|
113
|
-
|
|
114
|
-
Show when usage limits reset.
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Show all providers
|
|
118
|
-
runic reset
|
|
119
|
-
runic reset --all
|
|
120
|
-
runic reset -a
|
|
121
|
-
|
|
122
|
-
# Specific provider
|
|
123
|
-
runic reset --when claude
|
|
124
|
-
runic reset -w codex
|
|
125
|
-
|
|
126
|
-
# Compact output
|
|
127
|
-
runic reset --compact
|
|
128
|
-
runic reset -c
|
|
129
|
-
|
|
130
|
-
# JSON output
|
|
131
|
-
runic reset --json --pretty
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Output:** Reset times and countdown for each provider window.
|
|
135
|
-
|
|
136
|
-
**Status Indicators:**
|
|
137
|
-
- ✓ Healthy (<50% used) - Green
|
|
138
|
-
- ◐ Moderate (50-75%) - Cyan
|
|
139
|
-
- ⚠ Warning (75-90%) - Yellow
|
|
140
|
-
- ✗ Critical (>90%) - Red
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
### runic usage-enhanced
|
|
145
|
-
|
|
146
|
-
Enhanced usage display with analytics.
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
# Display modes
|
|
150
|
-
runic usage-enhanced # Summary (default)
|
|
151
|
-
runic usage-enhanced --mode summary # Quick overview
|
|
152
|
-
runic usage-enhanced --mode detailed # Full breakdown
|
|
153
|
-
runic usage-enhanced --mode breakdown # Token types
|
|
154
|
-
runic usage-enhanced --mode trending # Historical trends
|
|
155
|
-
|
|
156
|
-
# Options
|
|
157
|
-
runic usage-enhanced --show-cost # Include costs
|
|
158
|
-
runic usage-enhanced --projected # Show projections
|
|
159
|
-
runic usage-enhanced --compare # Compare providers
|
|
160
|
-
|
|
161
|
-
# Time range for trending
|
|
162
|
-
runic usage-enhanced --mode trending --days 30
|
|
163
|
-
|
|
164
|
-
# Filter by provider
|
|
165
|
-
runic usage-enhanced --provider claude -m detailed
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
**Display Modes:**
|
|
169
|
-
- **summary**: Quick overview with progress bars
|
|
170
|
-
- **detailed**: Full window breakdown with reset times
|
|
171
|
-
- **breakdown**: Token type analysis (input/output/cache)
|
|
172
|
-
- **trending**: Historical usage trends
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Common Workflows
|
|
177
|
-
|
|
178
|
-
### Daily Usage Check
|
|
179
|
-
```bash
|
|
180
|
-
# Quick summary
|
|
181
|
-
runic usage-enhanced
|
|
182
|
-
|
|
183
|
-
# Check for alerts
|
|
184
|
-
runic alerts
|
|
185
|
-
|
|
186
|
-
# See when limits reset
|
|
187
|
-
runic reset --compact
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### Weekly Analysis
|
|
191
|
-
```bash
|
|
192
|
-
# Last 7 days by model
|
|
193
|
-
runic models --days 7 --json > models-weekly.json
|
|
194
|
-
|
|
195
|
-
# Project breakdown
|
|
196
|
-
runic projects --days 7
|
|
197
|
-
|
|
198
|
-
# Trending analysis
|
|
199
|
-
runic usage-enhanced --mode trending --days 7
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Project Tracking
|
|
203
|
-
```bash
|
|
204
|
-
# List all projects
|
|
205
|
-
runic projects --list
|
|
206
|
-
|
|
207
|
-
# Detailed project stats
|
|
208
|
-
runic projects --stats my-project
|
|
209
|
-
|
|
210
|
-
# Models used in project
|
|
211
|
-
runic models --days 30 | grep my-project
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
### Cost Monitoring
|
|
215
|
-
```bash
|
|
216
|
-
# Enhanced usage with costs
|
|
217
|
-
runic usage-enhanced --mode detailed --show-cost
|
|
218
|
-
|
|
219
|
-
# Models by cost
|
|
220
|
-
runic models --json | jq 'sort_by(.cost)'
|
|
221
|
-
|
|
222
|
-
# Alert when high usage
|
|
223
|
-
runic alerts --active
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Export for Analysis
|
|
227
|
-
```bash
|
|
228
|
-
# Export all data to JSON
|
|
229
|
-
runic models --json --pretty > models.json
|
|
230
|
-
runic projects --json --pretty > projects.json
|
|
231
|
-
runic reset --json --pretty > reset-times.json
|
|
232
|
-
|
|
233
|
-
# Trending data
|
|
234
|
-
runic usage-enhanced --mode trending --days 30 --json > trends.json
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## Output Formats
|
|
238
|
-
|
|
239
|
-
### Text Output (Default)
|
|
240
|
-
|
|
241
|
-
Colorized tables with:
|
|
242
|
-
- Headers in cyan
|
|
243
|
-
- High usage in red/yellow
|
|
244
|
-
- Healthy usage in green
|
|
245
|
-
- Progress bars for visualization
|
|
246
|
-
|
|
247
|
-
### JSON Output
|
|
248
|
-
|
|
249
|
-
Structured data for:
|
|
250
|
-
- Scripting and automation
|
|
251
|
-
- Data processing
|
|
252
|
-
- Integration with other tools
|
|
253
|
-
- Long-term storage
|
|
254
|
-
|
|
255
|
-
Use `--json` for compact JSON
|
|
256
|
-
Use `--json --pretty` for formatted JSON
|
|
257
|
-
|
|
258
|
-
## Tips and Tricks
|
|
259
|
-
|
|
260
|
-
### 1. Pipe to jq for JSON Processing
|
|
261
|
-
```bash
|
|
262
|
-
runic models --json | jq '.[] | select(.provider=="claude")'
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### 2. Watch for Changes
|
|
266
|
-
```bash
|
|
267
|
-
watch -n 60 'runic alerts --active'
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### 3. Create Aliases
|
|
271
|
-
```bash
|
|
272
|
-
alias runic-check='runic usage-enhanced && runic alerts'
|
|
273
|
-
alias runic-weekly='runic models --days 7'
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
### 4. Combine with Other Tools
|
|
277
|
-
```bash
|
|
278
|
-
# Export to CSV
|
|
279
|
-
runic models --json | jq -r '.[] | [.model, .tokens, .cost] | @csv'
|
|
280
|
-
|
|
281
|
-
# Send alerts via notification
|
|
282
|
-
runic alerts --active | mail -s "Usage Alerts" user@example.com
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
### 5. Scripting Examples
|
|
286
|
-
```bash
|
|
287
|
-
#!/bin/bash
|
|
288
|
-
# Check if usage is critical
|
|
289
|
-
ALERTS=$(runic alerts --json | jq 'map(select(.severity >= 3)) | length')
|
|
290
|
-
if [ "$ALERTS" -gt 0 ]; then
|
|
291
|
-
echo "Critical usage alerts detected!"
|
|
292
|
-
runic alerts --active
|
|
293
|
-
fi
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
## Troubleshooting
|
|
297
|
-
|
|
298
|
-
### No data available
|
|
299
|
-
- Check provider credentials
|
|
300
|
-
- Verify usage logs exist
|
|
301
|
-
- Try `--days` with larger value
|
|
302
|
-
|
|
303
|
-
### Colors not working
|
|
304
|
-
- Use `--no-color` flag
|
|
305
|
-
- Check terminal supports ANSI codes
|
|
306
|
-
- Set `TERM` environment variable
|
|
307
|
-
|
|
308
|
-
### Slow performance
|
|
309
|
-
- Reduce `--days` range
|
|
310
|
-
- Use `--provider` to filter
|
|
311
|
-
- Consider caching results
|
|
312
|
-
|
|
313
|
-
### JSON parsing errors
|
|
314
|
-
- Use `--pretty` for debugging
|
|
315
|
-
- Validate with `jq`
|
|
316
|
-
- Check command syntax
|
|
317
|
-
|
|
318
|
-
## Environment Variables
|
|
319
|
-
|
|
320
|
-
Set these for customization:
|
|
321
|
-
```bash
|
|
322
|
-
export RUNIC_NO_COLOR=1 # Disable colors
|
|
323
|
-
export RUNIC_DEFAULT_DAYS=30 # Default time range
|
|
324
|
-
export RUNIC_DEFAULT_FORMAT=json # Default output format
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
## Exit Codes
|
|
328
|
-
|
|
329
|
-
- `0` - Success
|
|
330
|
-
- `1` - Error (invalid arguments, no data, etc.)
|
|
331
|
-
|
|
332
|
-
## Getting Help
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
# Global help
|
|
336
|
-
runic --help
|
|
337
|
-
|
|
338
|
-
# Command-specific help
|
|
339
|
-
runic models --help
|
|
340
|
-
runic projects --help
|
|
341
|
-
runic alerts --help
|
|
342
|
-
runic reset --help
|
|
343
|
-
runic usage-enhanced --help
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
## Version Information
|
|
347
|
-
|
|
348
|
-
```bash
|
|
349
|
-
runic --version
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
## Additional Resources
|
|
353
|
-
|
|
354
|
-
- Full documentation: See README.md
|
|
355
|
-
- Integration guide: See INTEGRATION_GUIDE.md
|
|
356
|
-
- Source code: Sources/RunicCLI/Commands/
|
|
357
|
-
- Examples: Check command help text
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
**Last Updated:** 2026-01-31
|
|
362
|
-
**Runic CLI Version:** 1.0.0
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
# Runic CLI Commands
|
|
2
|
-
|
|
3
|
-
This directory contains the new tracking commands for the Runic CLI, providing enhanced usage monitoring and analytics capabilities.
|
|
4
|
-
|
|
5
|
-
## Commands Overview
|
|
6
|
-
|
|
7
|
-
### 1. ModelsCommand.swift
|
|
8
|
-
**Command:** `runic models`
|
|
9
|
-
|
|
10
|
-
Shows which AI models were used across different providers, with token consumption and cost breakdown.
|
|
11
|
-
|
|
12
|
-
**Features:**
|
|
13
|
-
- Filter by provider
|
|
14
|
-
- Time-based filtering (last N days)
|
|
15
|
-
- JSON output support
|
|
16
|
-
- Colorized table output
|
|
17
|
-
- Group by project option
|
|
18
|
-
|
|
19
|
-
**Examples:**
|
|
20
|
-
```bash
|
|
21
|
-
# Show all models used in the last 30 days
|
|
22
|
-
runic models
|
|
23
|
-
|
|
24
|
-
# Filter by provider
|
|
25
|
-
runic models --provider claude --days 7
|
|
26
|
-
|
|
27
|
-
# Group by project with JSON output
|
|
28
|
-
runic models --by-project --json --pretty
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### 2. ProjectsCommand.swift
|
|
32
|
-
**Command:** `runic projects`
|
|
33
|
-
|
|
34
|
-
Track usage across different projects and codebases.
|
|
35
|
-
|
|
36
|
-
**Features:**
|
|
37
|
-
- List all projects with summary stats
|
|
38
|
-
- Detailed stats for specific projects
|
|
39
|
-
- Sort by tokens or name
|
|
40
|
-
- Provider filtering
|
|
41
|
-
- JSON output support
|
|
42
|
-
|
|
43
|
-
**Examples:**
|
|
44
|
-
```bash
|
|
45
|
-
# List all projects
|
|
46
|
-
runic projects
|
|
47
|
-
|
|
48
|
-
# Show detailed stats for a specific project
|
|
49
|
-
runic projects --stats my-project-id
|
|
50
|
-
|
|
51
|
-
# Filter by provider and time
|
|
52
|
-
runic projects --provider claude --days 7 --sort-name
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 3. AlertsCommand.swift
|
|
56
|
-
**Command:** `runic alerts`
|
|
57
|
-
|
|
58
|
-
Manage usage threshold alerts to monitor token consumption.
|
|
59
|
-
|
|
60
|
-
**Features:**
|
|
61
|
-
- Show active alerts
|
|
62
|
-
- View alert history
|
|
63
|
-
- Clear resolved alerts
|
|
64
|
-
- Provider-specific alerts
|
|
65
|
-
- Severity levels (critical, warning, info)
|
|
66
|
-
|
|
67
|
-
**Examples:**
|
|
68
|
-
```bash
|
|
69
|
-
# Show active alerts
|
|
70
|
-
runic alerts
|
|
71
|
-
|
|
72
|
-
# View alert history
|
|
73
|
-
runic alerts --history
|
|
74
|
-
|
|
75
|
-
# Filter by provider
|
|
76
|
-
runic alerts --provider claude
|
|
77
|
-
|
|
78
|
-
# Clear resolved alerts
|
|
79
|
-
runic alerts --clear
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### 4. ResetCommand.swift
|
|
83
|
-
**Command:** `runic reset`
|
|
84
|
-
|
|
85
|
-
Display when usage limits reset for different providers.
|
|
86
|
-
|
|
87
|
-
**Features:**
|
|
88
|
-
- Show reset times for all providers
|
|
89
|
-
- Provider-specific reset info
|
|
90
|
-
- Compact or detailed output
|
|
91
|
-
- Status indicators
|
|
92
|
-
- Time remaining calculations
|
|
93
|
-
|
|
94
|
-
**Examples:**
|
|
95
|
-
```bash
|
|
96
|
-
# Show reset times for all providers
|
|
97
|
-
runic reset
|
|
98
|
-
|
|
99
|
-
# Show specific provider reset info
|
|
100
|
-
runic reset --when claude
|
|
101
|
-
|
|
102
|
-
# Compact output
|
|
103
|
-
runic reset --compact --no-color
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### 5. EnhancedUsageCommand.swift
|
|
107
|
-
**Command:** `runic usage-enhanced`
|
|
108
|
-
|
|
109
|
-
Enhanced version of the usage command with analytics and trending.
|
|
110
|
-
|
|
111
|
-
**Features:**
|
|
112
|
-
- Multiple display modes (summary, detailed, breakdown, trending)
|
|
113
|
-
- Historical trending analysis
|
|
114
|
-
- Cost projections
|
|
115
|
-
- Provider comparison
|
|
116
|
-
- Projected usage calculations
|
|
117
|
-
|
|
118
|
-
**Examples:**
|
|
119
|
-
```bash
|
|
120
|
-
# Quick summary
|
|
121
|
-
runic usage-enhanced --mode summary
|
|
122
|
-
|
|
123
|
-
# Detailed breakdown with cost
|
|
124
|
-
runic usage-enhanced --mode detailed --show-cost
|
|
125
|
-
|
|
126
|
-
# Show 30-day trends
|
|
127
|
-
runic usage-enhanced --mode trending --days 30
|
|
128
|
-
|
|
129
|
-
# Compare providers
|
|
130
|
-
runic usage-enhanced --compare --json
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Integration with CLIEntry.swift
|
|
134
|
-
|
|
135
|
-
To integrate these commands into the main CLI, update `/Users/srinivaspendela/Sriinnu/AI/Runic/Sources/RunicCLI/CLIEntry.swift`:
|
|
136
|
-
|
|
137
|
-
### Step 1: Import the Commands
|
|
138
|
-
|
|
139
|
-
Add at the top of CLIEntry.swift:
|
|
140
|
-
```swift
|
|
141
|
-
// Import new command modules
|
|
142
|
-
import struct Commands.ModelsCommand
|
|
143
|
-
import struct Commands.ProjectsCommand
|
|
144
|
-
import struct Commands.AlertsCommand
|
|
145
|
-
import struct Commands.ResetCommand
|
|
146
|
-
import struct Commands.EnhancedUsageCommand
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Step 2: Register Command Descriptors
|
|
150
|
-
|
|
151
|
-
Add the descriptors to the Program initialization (around line 77):
|
|
152
|
-
|
|
153
|
-
```swift
|
|
154
|
-
let program = Program(descriptors: [
|
|
155
|
-
usageDescriptor,
|
|
156
|
-
costDescriptor,
|
|
157
|
-
insightsDescriptor,
|
|
158
|
-
// Add new commands
|
|
159
|
-
ModelsCommand.descriptor,
|
|
160
|
-
ProjectsCommand.descriptor,
|
|
161
|
-
AlertsCommand.descriptor,
|
|
162
|
-
ResetCommand.descriptor,
|
|
163
|
-
EnhancedUsageCommand.descriptor,
|
|
164
|
-
])
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Step 3: Handle Command Invocations
|
|
168
|
-
|
|
169
|
-
Add cases to the switch statement (around line 82):
|
|
170
|
-
|
|
171
|
-
```swift
|
|
172
|
-
switch invocation.descriptor.name {
|
|
173
|
-
case "usage":
|
|
174
|
-
await self.runUsage(invocation)
|
|
175
|
-
case "cost":
|
|
176
|
-
await self.runCost(invocation)
|
|
177
|
-
case "insights":
|
|
178
|
-
await self.runInsights(invocation)
|
|
179
|
-
case "models":
|
|
180
|
-
await ModelsCommand.run(invocation)
|
|
181
|
-
case "projects":
|
|
182
|
-
await ProjectsCommand.run(invocation)
|
|
183
|
-
case "alerts":
|
|
184
|
-
await AlertsCommand.run(invocation)
|
|
185
|
-
case "reset":
|
|
186
|
-
await ResetCommand.run(invocation)
|
|
187
|
-
case "usage-enhanced":
|
|
188
|
-
await EnhancedUsageCommand.run(invocation)
|
|
189
|
-
default:
|
|
190
|
-
Self.exit(code: 1, message: "Unknown command")
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Step 4: Update Help Text
|
|
195
|
-
|
|
196
|
-
Update the `printHelp` function to include the new commands:
|
|
197
|
-
|
|
198
|
-
```swift
|
|
199
|
-
private static func printHelp(for command: String?) {
|
|
200
|
-
// ... existing help text ...
|
|
201
|
-
|
|
202
|
-
if command == "models" || command == nil {
|
|
203
|
-
print("models - Show model usage breakdown across providers")
|
|
204
|
-
print(" Options:")
|
|
205
|
-
print(" --provider, -p PROVIDER Filter by provider")
|
|
206
|
-
print(" --days, -d DAYS Number of days to analyze (default: 30)")
|
|
207
|
-
print(" --json, -j Output in JSON format")
|
|
208
|
-
print(" --pretty Pretty-print JSON output")
|
|
209
|
-
print(" --no-color Disable ANSI colors")
|
|
210
|
-
print(" --by-project Group results by project")
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
if command == "projects" || command == nil {
|
|
214
|
-
print("projects - Track usage across different projects")
|
|
215
|
-
print(" Options:")
|
|
216
|
-
print(" --stats, -s PROJECT Show stats for specific project")
|
|
217
|
-
print(" --provider, -p PROVIDER Filter by provider")
|
|
218
|
-
print(" --days, -d DAYS Number of days to analyze")
|
|
219
|
-
print(" --json, -j Output in JSON format")
|
|
220
|
-
print(" --pretty Pretty-print JSON output")
|
|
221
|
-
print(" --sort-tokens Sort by token usage (default)")
|
|
222
|
-
print(" --sort-name Sort alphabetically")
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
if command == "alerts" || command == nil {
|
|
226
|
-
print("alerts - Manage usage threshold alerts")
|
|
227
|
-
print(" Options:")
|
|
228
|
-
print(" --provider, -p PROVIDER Filter alerts by provider")
|
|
229
|
-
print(" --active, -a Show only active alerts")
|
|
230
|
-
print(" --history, -h Show alert history")
|
|
231
|
-
print(" --clear, -c Clear resolved alerts")
|
|
232
|
-
print(" --json, -j Output in JSON format")
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
if command == "reset" || command == nil {
|
|
236
|
-
print("reset - Show when usage limits reset")
|
|
237
|
-
print(" Options:")
|
|
238
|
-
print(" --when, -w PROVIDER Show reset for specific provider")
|
|
239
|
-
print(" --all, -a Show all providers (default)")
|
|
240
|
-
print(" --compact, -c Show compact output")
|
|
241
|
-
print(" --json, -j Output in JSON format")
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
if command == "usage-enhanced" || command == nil {
|
|
245
|
-
print("usage-enhanced - Enhanced usage display with analytics")
|
|
246
|
-
print(" Options:")
|
|
247
|
-
print(" --mode, -m MODE Display mode: summary|detailed|breakdown|trending")
|
|
248
|
-
print(" --provider, -p PROVIDER Filter by provider")
|
|
249
|
-
print(" --days, -d DAYS Number of days for trending (default: 7)")
|
|
250
|
-
print(" --show-cost Include cost information")
|
|
251
|
-
print(" --projected Show projected usage")
|
|
252
|
-
print(" --compare Compare usage across providers")
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## Common Features
|
|
258
|
-
|
|
259
|
-
All commands share these common features:
|
|
260
|
-
|
|
261
|
-
### Output Formats
|
|
262
|
-
- **Text**: Human-readable, colorized output (default)
|
|
263
|
-
- **JSON**: Machine-readable output with `--json` flag
|
|
264
|
-
- **Pretty JSON**: Formatted JSON with `--pretty` flag
|
|
265
|
-
|
|
266
|
-
### Color Support
|
|
267
|
-
- Automatic color detection
|
|
268
|
-
- Disable with `--no-color` flag
|
|
269
|
-
- Color coding based on severity/usage levels:
|
|
270
|
-
- Green: Healthy/low usage
|
|
271
|
-
- Yellow: Warning/medium usage
|
|
272
|
-
- Red: Critical/high usage
|
|
273
|
-
- Cyan: Headers and highlights
|
|
274
|
-
- Magenta: Very high usage
|
|
275
|
-
|
|
276
|
-
### Error Handling
|
|
277
|
-
- Clear error messages to stderr
|
|
278
|
-
- Non-zero exit codes on failure
|
|
279
|
-
- Helpful error descriptions
|
|
280
|
-
|
|
281
|
-
## File Structure
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
Sources/RunicCLI/Commands/
|
|
285
|
-
├── README.md # This file
|
|
286
|
-
├── ModelsCommand.swift # Model usage breakdown (287 lines)
|
|
287
|
-
├── ProjectsCommand.swift # Project tracking (402 lines)
|
|
288
|
-
├── AlertsCommand.swift # Usage alerts (388 lines)
|
|
289
|
-
├── ResetCommand.swift # Reset timing info (364 lines)
|
|
290
|
-
└── EnhancedUsageCommand.swift # Enhanced usage display (479 lines)
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
## Implementation Notes
|
|
294
|
-
|
|
295
|
-
### Design Patterns
|
|
296
|
-
- **Enum-based commands**: Each command is a public enum with static methods
|
|
297
|
-
- **Configuration structs**: Internal configuration parsing
|
|
298
|
-
- **Helix integration**: Uses CommandSignature and CommandDescriptor
|
|
299
|
-
- **Async/await**: All data loading is asynchronous
|
|
300
|
-
- **Type safety**: Leverages Swift's type system
|
|
301
|
-
|
|
302
|
-
### Dependencies
|
|
303
|
-
- **RunicCore**: Core models and data fetchers
|
|
304
|
-
- **Helix**: Command-line argument parsing
|
|
305
|
-
- **Foundation**: Standard Swift library
|
|
306
|
-
|
|
307
|
-
### Data Sources
|
|
308
|
-
- **Live API**: Fetches current usage from provider APIs
|
|
309
|
-
- **Usage Logs**: Reads historical data from local logs
|
|
310
|
-
- **Aggregators**: Uses UsageLedgerAggregator for analytics
|
|
311
|
-
|
|
312
|
-
## Testing
|
|
313
|
-
|
|
314
|
-
### Manual Testing
|
|
315
|
-
```bash
|
|
316
|
-
# Build the CLI
|
|
317
|
-
swift build
|
|
318
|
-
|
|
319
|
-
# Test each command
|
|
320
|
-
.build/debug/RunicCLI models
|
|
321
|
-
.build/debug/RunicCLI projects --list
|
|
322
|
-
.build/debug/RunicCLI alerts
|
|
323
|
-
.build/debug/RunicCLI reset --all
|
|
324
|
-
.build/debug/RunicCLI usage-enhanced --mode summary
|
|
325
|
-
|
|
326
|
-
# Test JSON output
|
|
327
|
-
.build/debug/RunicCLI models --json --pretty
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Integration Testing
|
|
331
|
-
Test the commands work with existing CLI infrastructure:
|
|
332
|
-
1. Help text display
|
|
333
|
-
2. Unknown command handling
|
|
334
|
-
3. Error messages
|
|
335
|
-
4. Exit codes
|
|
336
|
-
5. Color output
|
|
337
|
-
|
|
338
|
-
## Future Enhancements
|
|
339
|
-
|
|
340
|
-
Potential improvements for future versions:
|
|
341
|
-
|
|
342
|
-
1. **Persistent Alert Storage**: Store alert history in a database
|
|
343
|
-
2. **Custom Thresholds**: Allow users to set custom alert thresholds
|
|
344
|
-
3. **Export Capabilities**: Export data to CSV, Excel, etc.
|
|
345
|
-
4. **Visualization**: ASCII charts for trending data
|
|
346
|
-
5. **Budget Tracking**: Set and track spending budgets
|
|
347
|
-
6. **Notifications**: Integration with notification systems
|
|
348
|
-
7. **Report Generation**: Automated usage reports
|
|
349
|
-
8. **Multi-language Support**: i18n for help text and messages
|
|
350
|
-
|
|
351
|
-
## License
|
|
352
|
-
|
|
353
|
-
These commands are part of the Runic project and follow the same license as the main project.
|
|
354
|
-
|
|
355
|
-
## Support
|
|
356
|
-
|
|
357
|
-
For issues or questions:
|
|
358
|
-
1. Check this README
|
|
359
|
-
2. Review the command help text with `--help`
|
|
360
|
-
3. Check the main Runic documentation
|
|
361
|
-
4. File an issue in the project repository
|