@sriinnu/runic 2.0.0 → 2.11.1

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.
Files changed (610) hide show
  1. package/CHANGELOG.md +256 -0
  2. package/LICENSE +373 -21
  3. package/README.md +96 -89
  4. package/THIRD-PARTY-NOTICES.md +651 -0
  5. package/package.json +14 -4
  6. package/.swiftformat +0 -50
  7. package/.swiftlint.yml +0 -160
  8. package/CONTRIBUTING.md +0 -456
  9. package/Icon.icns +0 -0
  10. package/Icon.icon/Assets/runic.png +0 -0
  11. package/Icon.icon/icon.json +0 -36
  12. package/Package.resolved +0 -51
  13. package/Package.swift +0 -136
  14. package/Packages/Helix/LICENSE +0 -21
  15. package/Packages/Helix/Package.swift +0 -29
  16. package/Packages/Helix/README.md +0 -976
  17. package/Packages/Helix/Sources/Helix/Binding.swift +0 -111
  18. package/Packages/Helix/Sources/Helix/CommandParser.swift +0 -160
  19. package/Packages/Helix/Sources/Helix/CommandSignature.swift +0 -117
  20. package/Packages/Helix/Sources/Helix/ExpressibleFromArgument.swift +0 -72
  21. package/Packages/Helix/Sources/Helix/HelpGenerator.swift +0 -175
  22. package/Packages/Helix/Sources/Helix/NameSpecification.swift +0 -98
  23. package/Packages/Helix/Sources/Helix/ParsableCommand.swift +0 -204
  24. package/Packages/Helix/Sources/Helix/Platform/DarwinPlatformContext.swift +0 -44
  25. package/Packages/Helix/Sources/Helix/Platform/LinuxPlatformContext.swift +0 -34
  26. package/Packages/Helix/Sources/Helix/Platform/PlatformContext+Default.swift +0 -91
  27. package/Packages/Helix/Sources/Helix/Platform/PlatformContext.swift +0 -94
  28. package/Packages/Helix/Sources/Helix/Platform/PlatformPath.swift +0 -167
  29. package/Packages/Helix/Sources/Helix/Platform/Stdio.swift +0 -99
  30. package/Packages/Helix/Sources/Helix/Platform/WebPlatformContext.swift +0 -146
  31. package/Packages/Helix/Sources/Helix/Platform/WindowsPlatformContext.swift +0 -97
  32. package/Packages/Helix/Sources/Helix/Program.swift +0 -204
  33. package/Packages/Helix/Sources/Helix/PropertyWrappers.swift +0 -367
  34. package/Packages/Silo/LICENSE +0 -21
  35. package/Packages/Silo/Package.swift +0 -34
  36. package/Packages/Silo/README.md +0 -466
  37. package/Packages/Silo/Sources/Silo/BinaryCookiesReader.swift +0 -169
  38. package/Packages/Silo/Sources/Silo/BrowserCookieAnalytics.swift +0 -365
  39. package/Packages/Silo/Sources/Silo/BrowserCookieBackends.swift +0 -594
  40. package/Packages/Silo/Sources/Silo/BrowserCookieClient.swift +0 -326
  41. package/Packages/Silo/Sources/Silo/BrowserCookieExport.swift +0 -154
  42. package/Packages/Silo/Sources/Silo/BrowserCookieImport.swift +0 -119
  43. package/Packages/Silo/Sources/Silo/BrowserCookieMockStore.swift +0 -121
  44. package/Packages/Silo/Sources/Silo/BrowserCookieModels.swift +0 -391
  45. package/Packages/Silo/Sources/Silo/ChromiumCookieReader.swift +0 -240
  46. package/Packages/Silo/Sources/Silo/CryptoSupport.swift +0 -86
  47. package/Packages/Silo/Sources/Silo/FirefoxCookieReader.swift +0 -172
  48. package/Packages/Silo/Sources/Silo/LinuxChromiumCookieReader.swift +0 -172
  49. package/Packages/Silo/Sources/Silo/LinuxSecretService.swift +0 -105
  50. package/Packages/Silo/Sources/Silo/MacOSChromiumCookieReader.swift +0 -191
  51. package/Packages/Silo/Sources/Silo/SQLiteSnapshot.swift +0 -41
  52. package/Packages/Silo/Sources/Silo/WindowsChromiumCookieReader.swift +0 -110
  53. package/RuniciOS/App/RuniciOSApp.swift +0 -105
  54. package/RuniciOS/Core/RunicTypographyiOS.swift +0 -24
  55. package/RuniciOS/Core/iOSUsageStore.swift +0 -192
  56. package/RuniciOS/Views/ProviderDetailView.swift +0 -312
  57. package/RuniciOS/Views/ProviderListView.swift +0 -228
  58. package/RuniciOS/Widgets/LargeWidget.swift +0 -367
  59. package/RuniciOS/Widgets/LiveActivity.swift +0 -342
  60. package/RuniciOS/Widgets/LockScreenWidget.swift +0 -273
  61. package/RuniciOS/Widgets/MediumWidget.swift +0 -370
  62. package/RuniciOS/Widgets/RunicWidget.swift +0 -274
  63. package/RuniciOS/Widgets/SmallWidget.swift +0 -281
  64. package/RuniciOS/Widgets/WidgetModels.swift +0 -285
  65. package/RuniciOS/Widgets/WidgetTimeline.swift +0 -270
  66. package/Scripts/CREATION-SUMMARY.md +0 -367
  67. package/Scripts/DIRECTORY-STRUCTURE.md +0 -358
  68. package/Scripts/GETTING-STARTED-CHECKLIST.md +0 -364
  69. package/Scripts/INDEX.md +0 -365
  70. package/Scripts/QUICK-REFERENCE.md +0 -164
  71. package/Scripts/README-SCRIPTS.md +0 -926
  72. package/Scripts/build-android.sh +0 -526
  73. package/Scripts/build-ios.sh +0 -529
  74. package/Scripts/build-macos.sh +0 -603
  75. package/Scripts/build-windows.sh +0 -504
  76. package/Scripts/build_icon.sh +0 -49
  77. package/Scripts/changelog-to-html.sh +0 -89
  78. package/Scripts/check-release-assets.sh +0 -10
  79. package/Scripts/ci-config.yml +0 -474
  80. package/Scripts/compile_and_run.sh +0 -219
  81. package/Scripts/compile_and_run_adhoc.sh +0 -4
  82. package/Scripts/docs-list.mjs +0 -119
  83. package/Scripts/make_appcast.sh +0 -58
  84. package/Scripts/package_app.sh +0 -409
  85. package/Scripts/release-lib.sh +0 -214
  86. package/Scripts/release.sh +0 -76
  87. package/Scripts/setup-all.sh +0 -387
  88. package/Scripts/setup-ios.sh +0 -404
  89. package/Scripts/setup-react-native.sh +0 -523
  90. package/Scripts/sign-and-notarize.sh +0 -122
  91. package/Scripts/test_live_update.sh +0 -38
  92. package/Scripts/validate_changelog.sh +0 -23
  93. package/Scripts/verify_appcast.sh +0 -92
  94. package/Sources/Runic/About.swift +0 -93
  95. package/Sources/Runic/AppNotifications.swift +0 -117
  96. package/Sources/Runic/Controllers/StatusItemController+Actions.swift +0 -670
  97. package/Sources/Runic/Controllers/StatusItemController+Animation.swift +0 -519
  98. package/Sources/Runic/Controllers/StatusItemController+ChartSubmenus.swift +0 -824
  99. package/Sources/Runic/Controllers/StatusItemController+CustomProviders.swift +0 -90
  100. package/Sources/Runic/Controllers/StatusItemController+Menu.swift +0 -1412
  101. package/Sources/Runic/Controllers/StatusItemController+MenuCards.swift +0 -339
  102. package/Sources/Runic/Controllers/StatusItemController+MenuHelpers.swift +0 -423
  103. package/Sources/Runic/Controllers/StatusItemController.swift +0 -360
  104. package/Sources/Runic/Core/BudgetNotificationManager.swift +0 -81
  105. package/Sources/Runic/Core/Login/ClaudeLoginRunner.swift +0 -103
  106. package/Sources/Runic/Core/Login/CodexLoginRunner.swift +0 -154
  107. package/Sources/Runic/Core/Login/CursorLoginRunner.swift +0 -206
  108. package/Sources/Runic/Core/Login/GeminiLoginRunner.swift +0 -92
  109. package/Sources/Runic/Core/Rendering/IconRenderer.swift +0 -1222
  110. package/Sources/Runic/Core/Rendering/IconView.swift +0 -122
  111. package/Sources/Runic/Core/Rendering/ProviderBrandIcon.swift +0 -71
  112. package/Sources/Runic/Core/RunicAnimation.swift +0 -53
  113. package/Sources/Runic/Core/RunicColors.swift +0 -73
  114. package/Sources/Runic/Core/RunicCornerRadius.swift +0 -15
  115. package/Sources/Runic/Core/RunicSpacing.swift +0 -68
  116. package/Sources/Runic/Core/RunicTypography.swift +0 -206
  117. package/Sources/Runic/Core/Stores/AuggieTokenStore.swift +0 -117
  118. package/Sources/Runic/Core/Stores/AzureOpenAITokenStore.swift +0 -117
  119. package/Sources/Runic/Core/Stores/CerebrasTokenStore.swift +0 -117
  120. package/Sources/Runic/Core/Stores/CohereTokenStore.swift +0 -117
  121. package/Sources/Runic/Core/Stores/CopilotTokenStore.swift +0 -117
  122. package/Sources/Runic/Core/Stores/CustomProviderStore.swift +0 -158
  123. package/Sources/Runic/Core/Stores/DeepSeekTokenStore.swift +0 -117
  124. package/Sources/Runic/Core/Stores/FireworksTokenStore.swift +0 -117
  125. package/Sources/Runic/Core/Stores/GroqTokenStore.swift +0 -117
  126. package/Sources/Runic/Core/Stores/KimiTokenStore.swift +0 -117
  127. package/Sources/Runic/Core/Stores/MiniMaxCookieHeaderStore.swift +0 -117
  128. package/Sources/Runic/Core/Stores/MiniMaxGroupIDStore.swift +0 -117
  129. package/Sources/Runic/Core/Stores/MiniMaxTokenStore.swift +0 -117
  130. package/Sources/Runic/Core/Stores/MistralTokenStore.swift +0 -117
  131. package/Sources/Runic/Core/Stores/OpenRouterTokenStore.swift +0 -117
  132. package/Sources/Runic/Core/Stores/PerplexityTokenStore.swift +0 -117
  133. package/Sources/Runic/Core/Stores/ProviderToggleStore.swift +0 -30
  134. package/Sources/Runic/Core/Stores/QwenTokenStore.swift +0 -117
  135. package/Sources/Runic/Core/Stores/SambaNovaTokenStore.swift +0 -117
  136. package/Sources/Runic/Core/Stores/SettingsStore.swift +0 -1749
  137. package/Sources/Runic/Core/Stores/TogetherTokenStore.swift +0 -117
  138. package/Sources/Runic/Core/Stores/UsageStore+Accessors.swift +0 -33
  139. package/Sources/Runic/Core/Stores/UsageStore+Status.swift +0 -189
  140. package/Sources/Runic/Core/Stores/UsageStore+TokenCost.swift +0 -33
  141. package/Sources/Runic/Core/Stores/UsageStore+WidgetSnapshot.swift +0 -67
  142. package/Sources/Runic/Core/Stores/UsageStore.swift +0 -3631
  143. package/Sources/Runic/Core/Stores/XAITokenStore.swift +0 -117
  144. package/Sources/Runic/Core/Stores/ZaiTokenStore.swift +0 -117
  145. package/Sources/Runic/Core/UsageExporter.swift +0 -197
  146. package/Sources/Runic/Date+RelativeDescription.swift +0 -21
  147. package/Sources/Runic/HiddenWindowView.swift +0 -32
  148. package/Sources/Runic/InstallOrigin.swift +0 -9
  149. package/Sources/Runic/KeyboardShortcuts+Names.swift +0 -6
  150. package/Sources/Runic/MouseLocationReader.swift +0 -65
  151. package/Sources/Runic/Notifications+Runic.swift +0 -6
  152. package/Sources/Runic/OpenAICreditsPurchaseWindowController.swift +0 -503
  153. package/Sources/Runic/ProviderRegistry.swift +0 -100
  154. package/Sources/Runic/ProviderSwitcherButtons.swift +0 -267
  155. package/Sources/Runic/Providers/Antigravity/AntigravityLoginFlow.swift +0 -11
  156. package/Sources/Runic/Providers/Antigravity/AntigravityProviderImplementation.swift +0 -14
  157. package/Sources/Runic/Providers/Auggie/AuggieProviderImplementation.swift +0 -24
  158. package/Sources/Runic/Providers/Azure/AzureProviderImplementation.swift +0 -52
  159. package/Sources/Runic/Providers/Bedrock/BedrockProviderImplementation.swift +0 -42
  160. package/Sources/Runic/Providers/Cerebras/CerebrasProviderImplementation.swift +0 -24
  161. package/Sources/Runic/Providers/Claude/ClaudeLoginFlow.swift +0 -26
  162. package/Sources/Runic/Providers/Claude/ClaudeProviderImplementation.swift +0 -14
  163. package/Sources/Runic/Providers/Codex/CodexLoginFlow.swift +0 -18
  164. package/Sources/Runic/Providers/Codex/CodexProviderImplementation.swift +0 -15
  165. package/Sources/Runic/Providers/Cohere/CohereProviderImplementation.swift +0 -24
  166. package/Sources/Runic/Providers/Copilot/CopilotLoginFlow.swift +0 -193
  167. package/Sources/Runic/Providers/Copilot/CopilotProviderImplementation.swift +0 -110
  168. package/Sources/Runic/Providers/Cursor/CursorLoginFlow.swift +0 -28
  169. package/Sources/Runic/Providers/Cursor/CursorProviderImplementation.swift +0 -15
  170. package/Sources/Runic/Providers/DeepSeek/DeepSeekProviderImplementation.swift +0 -24
  171. package/Sources/Runic/Providers/Factory/FactoryLoginFlow.swift +0 -12
  172. package/Sources/Runic/Providers/Factory/FactoryProviderImplementation.swift +0 -15
  173. package/Sources/Runic/Providers/Fireworks/FireworksProviderImplementation.swift +0 -24
  174. package/Sources/Runic/Providers/Gemini/GeminiLoginFlow.swift +0 -20
  175. package/Sources/Runic/Providers/Gemini/GeminiProviderImplementation.swift +0 -15
  176. package/Sources/Runic/Providers/Groq/GroqProviderImplementation.swift +0 -24
  177. package/Sources/Runic/Providers/Kimi/KimiProviderImplementation.swift +0 -24
  178. package/Sources/Runic/Providers/MiniMax/MiniMaxProviderImplementation.swift +0 -32
  179. package/Sources/Runic/Providers/Mistral/MistralProviderImplementation.swift +0 -24
  180. package/Sources/Runic/Providers/OpenRouter/OpenRouterProviderImplementation.swift +0 -24
  181. package/Sources/Runic/Providers/Perplexity/PerplexityProviderImplementation.swift +0 -24
  182. package/Sources/Runic/Providers/SambaNova/SambaNovaProviderImplementation.swift +0 -24
  183. package/Sources/Runic/Providers/Shared/ProviderCatalog.swift +0 -15
  184. package/Sources/Runic/Providers/Shared/ProviderImplementation.swift +0 -51
  185. package/Sources/Runic/Providers/Shared/ProviderImplementationRegistry.swift +0 -66
  186. package/Sources/Runic/Providers/Shared/ProviderLoginFlow.swift +0 -12
  187. package/Sources/Runic/Providers/Shared/ProviderSettingsDescriptors.swift +0 -99
  188. package/Sources/Runic/Providers/Shared/SystemSettingsLinks.swift +0 -18
  189. package/Sources/Runic/Providers/Together/TogetherProviderImplementation.swift +0 -24
  190. package/Sources/Runic/Providers/XAI/XAIProviderImplementation.swift +0 -24
  191. package/Sources/Runic/Providers/Zai/ZaiProviderImplementation.swift +0 -24
  192. package/Sources/Runic/Resources/Fonts/Caveat-Bold.ttf +0 -0
  193. package/Sources/Runic/Resources/Fonts/Caveat-Regular.ttf +0 -0
  194. package/Sources/Runic/Resources/Fonts/FiraCode-Bold.ttf +0 -0
  195. package/Sources/Runic/Resources/Fonts/FiraCode-Light.ttf +0 -0
  196. package/Sources/Runic/Resources/Fonts/FiraCode-Medium.ttf +0 -0
  197. package/Sources/Runic/Resources/Fonts/FiraCode-Regular.ttf +0 -0
  198. package/Sources/Runic/Resources/Fonts/FiraCode-SemiBold.ttf +0 -0
  199. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Bold.ttf +0 -0
  200. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Medium.ttf +0 -0
  201. package/Sources/Runic/Resources/Fonts/IBMPlexMono-Regular.ttf +0 -0
  202. package/Sources/Runic/Resources/Fonts/IBMPlexMono-SemiBold.ttf +0 -0
  203. package/Sources/Runic/Resources/Fonts/Inconsolata-Bold.ttf +0 -0
  204. package/Sources/Runic/Resources/Fonts/Inconsolata-Medium.ttf +0 -0
  205. package/Sources/Runic/Resources/Fonts/Inconsolata-Regular.ttf +0 -0
  206. package/Sources/Runic/Resources/Fonts/Inconsolata-SemiBold.ttf +0 -0
  207. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Bold.ttf +0 -0
  208. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Medium.ttf +0 -0
  209. package/Sources/Runic/Resources/Fonts/JetBrainsMono-Regular.ttf +0 -0
  210. package/Sources/Runic/Resources/Fonts/JetBrainsMono-SemiBold.ttf +0 -0
  211. package/Sources/Runic/Resources/Fonts/SpaceMono-Bold.ttf +0 -0
  212. package/Sources/Runic/Resources/Fonts/SpaceMono-Regular.ttf +0 -0
  213. package/Sources/Runic/Resources/ProviderIcon-antigravity.svg +0 -2
  214. package/Sources/Runic/Resources/ProviderIcon-auggie.svg +0 -3
  215. package/Sources/Runic/Resources/ProviderIcon-azure.svg +0 -5
  216. package/Sources/Runic/Resources/ProviderIcon-bedrock.svg +0 -7
  217. package/Sources/Runic/Resources/ProviderIcon-cerebras.svg +0 -3
  218. package/Sources/Runic/Resources/ProviderIcon-claude.svg +0 -1
  219. package/Sources/Runic/Resources/ProviderIcon-codex.svg +0 -1
  220. package/Sources/Runic/Resources/ProviderIcon-cohere.svg +0 -3
  221. package/Sources/Runic/Resources/ProviderIcon-copilot.svg +0 -1
  222. package/Sources/Runic/Resources/ProviderIcon-cursor.svg +0 -3
  223. package/Sources/Runic/Resources/ProviderIcon-deepseek.svg +0 -4
  224. package/Sources/Runic/Resources/ProviderIcon-factory.svg +0 -3
  225. package/Sources/Runic/Resources/ProviderIcon-fireworks.svg +0 -3
  226. package/Sources/Runic/Resources/ProviderIcon-gemini.svg +0 -1
  227. package/Sources/Runic/Resources/ProviderIcon-groq.svg +0 -1
  228. package/Sources/Runic/Resources/ProviderIcon-kimi.svg +0 -4
  229. package/Sources/Runic/Resources/ProviderIcon-minimax.svg +0 -1
  230. package/Sources/Runic/Resources/ProviderIcon-mistral.svg +0 -5
  231. package/Sources/Runic/Resources/ProviderIcon-openrouter.svg +0 -7
  232. package/Sources/Runic/Resources/ProviderIcon-perplexity.svg +0 -4
  233. package/Sources/Runic/Resources/ProviderIcon-qwen.svg +0 -9
  234. package/Sources/Runic/Resources/ProviderIcon-sambanova.svg +0 -4
  235. package/Sources/Runic/Resources/ProviderIcon-together.svg +0 -5
  236. package/Sources/Runic/Resources/ProviderIcon-vertexai.svg +0 -17
  237. package/Sources/Runic/Resources/ProviderIcon-xai.svg +0 -3
  238. package/Sources/Runic/Resources/ProviderIcon-zai.svg +0 -5
  239. package/Sources/Runic/Resources/RunicMenubarIcon.svg +0 -7
  240. package/Sources/Runic/Resources/provider-context-windows.json +0 -20
  241. package/Sources/Runic/RunicApp.swift +0 -367
  242. package/Sources/Runic/SessionQuotaNotifications.swift +0 -58
  243. package/Sources/Runic/UsagePaceText.swift +0 -52
  244. package/Sources/Runic/UsageProgressBar.swift +0 -228
  245. package/Sources/Runic/Utilities/DisplayLink.swift +0 -96
  246. package/Sources/Runic/Utilities/LoadingPattern.swift +0 -62
  247. package/Sources/Runic/Utilities/PerformanceConstants.swift +0 -85
  248. package/Sources/Runic/Views/Menu/AlertsMenuView.swift +0 -254
  249. package/Sources/Runic/Views/Menu/ChartPanelStyle.swift +0 -22
  250. package/Sources/Runic/Views/Menu/CostComparativeChartMenuView.swift +0 -275
  251. package/Sources/Runic/Views/Menu/CostHistoryChartMenuView.swift +0 -377
  252. package/Sources/Runic/Views/Menu/CreditsHistoryChartMenuView.swift +0 -312
  253. package/Sources/Runic/Views/Menu/EfficiencyMetricsMenuView.swift +0 -311
  254. package/Sources/Runic/Views/Menu/HeroStatCardsMenuView.swift +0 -231
  255. package/Sources/Runic/Views/Menu/HourlyActivityChartMenuView.swift +0 -228
  256. package/Sources/Runic/Views/Menu/InlineUsageChartView.swift +0 -157
  257. package/Sources/Runic/Views/Menu/MenuCardEntranceModifier.swift +0 -63
  258. package/Sources/Runic/Views/Menu/MenuCardSidebarView.swift +0 -248
  259. package/Sources/Runic/Views/Menu/MenuCardSkeletonView.swift +0 -104
  260. package/Sources/Runic/Views/Menu/MenuCardView.swift +0 -1889
  261. package/Sources/Runic/Views/Menu/MenuContent.swift +0 -153
  262. package/Sources/Runic/Views/Menu/MenuDescriptor.swift +0 -371
  263. package/Sources/Runic/Views/Menu/MenuHighlightStyle.swift +0 -35
  264. package/Sources/Runic/Views/Menu/ModelBreakdownMenuView.swift +0 -241
  265. package/Sources/Runic/Views/Menu/OverviewMenuView.swift +0 -281
  266. package/Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift +0 -214
  267. package/Sources/Runic/Views/Menu/ProjectBudgetMenuView.swift +0 -220
  268. package/Sources/Runic/Views/Menu/ProviderTabBarView.swift +0 -86
  269. package/Sources/Runic/Views/Menu/SubscriptionUtilizationChartMenuView.swift +0 -214
  270. package/Sources/Runic/Views/Menu/UsageBreakdownChartMenuView.swift +0 -398
  271. package/Sources/Runic/Views/Menu/UsageHeatmapMenuView.swift +0 -231
  272. package/Sources/Runic/Views/Menu/UsageTimelineChartMenuView.swift +0 -369
  273. package/Sources/Runic/Views/Menu/UsageWindowComparisonChartMenuView.swift +0 -191
  274. package/Sources/Runic/Views/Menu/WeeklyActivityChartMenuView.swift +0 -132
  275. package/Sources/Runic/Views/Performance/PerformanceDashboardView.swift +0 -621
  276. package/Sources/Runic/Views/Preferences/LiquidComponents.swift +0 -306
  277. package/Sources/Runic/Views/Preferences/PreferencesAboutPane.swift +0 -271
  278. package/Sources/Runic/Views/Preferences/PreferencesAdvancedPane.swift +0 -268
  279. package/Sources/Runic/Views/Preferences/PreferencesAlertsPane.swift +0 -418
  280. package/Sources/Runic/Views/Preferences/PreferencesAnalyticsPane.swift +0 -637
  281. package/Sources/Runic/Views/Preferences/PreferencesBudgetsPane.swift +0 -344
  282. package/Sources/Runic/Views/Preferences/PreferencesComponents.swift +0 -230
  283. package/Sources/Runic/Views/Preferences/PreferencesCustomProvidersPane.swift +0 -321
  284. package/Sources/Runic/Views/Preferences/PreferencesDebugPane.swift +0 -469
  285. package/Sources/Runic/Views/Preferences/PreferencesGeneralPane.swift +0 -250
  286. package/Sources/Runic/Views/Preferences/PreferencesHelpPane.swift +0 -50
  287. package/Sources/Runic/Views/Preferences/PreferencesIntegrationsPane.swift +0 -572
  288. package/Sources/Runic/Views/Preferences/PreferencesPerformancePane.swift +0 -291
  289. package/Sources/Runic/Views/Preferences/PreferencesProvidersPane.swift +0 -3480
  290. package/Sources/Runic/Views/Preferences/PreferencesSelection.swift +0 -29
  291. package/Sources/Runic/Views/Preferences/PreferencesSyncPane.swift +0 -61
  292. package/Sources/Runic/Views/Preferences/PreferencesView.swift +0 -213
  293. package/Sources/Runic/Views/Rating/QualityRatingView.swift +0 -238
  294. package/Sources/Runic/Views/Team/TeamDashboardView.swift +0 -376
  295. package/Sources/Runic/Views/Team/TeamInviteSheet.swift +0 -175
  296. package/Sources/Runic/Views/Team/TeamManagementView.swift +0 -762
  297. package/Sources/Runic/Views/Team/TeamMemberRow.swift +0 -181
  298. package/Sources/RunicCLI/CLIEntry.swift +0 -983
  299. package/Sources/RunicCLI/CLIRenderer.swift +0 -87
  300. package/Sources/RunicCLI/Commands/EnhancedUsageCommand.swift +0 -588
  301. package/Sources/RunicCLI/Commands/ModelsCommand.swift +0 -363
  302. package/Sources/RunicCLI/Commands/ProjectsCommand.swift +0 -453
  303. package/Sources/RunicCLI/Commands/ResetCommand.swift +0 -430
  304. package/Sources/RunicCLI/Commands/UsageLedgerSourceFactory.swift +0 -167
  305. package/Sources/RunicClaudeWatchdog/main.swift +0 -122
  306. package/Sources/RunicClaudeWebProbe/main.swift +0 -62
  307. package/Sources/RunicCore/AlertRuleStore.swift +0 -187
  308. package/Sources/RunicCore/BrowserCookieImportOrder.swift +0 -25
  309. package/Sources/RunicCore/CopilotUsageModels.swift +0 -84
  310. package/Sources/RunicCore/CostUsageFetcher.swift +0 -119
  311. package/Sources/RunicCore/CostUsageModels.swift +0 -479
  312. package/Sources/RunicCore/CreditsModels.swift +0 -50
  313. package/Sources/RunicCore/CustomProviders/CustomProviderModels.swift +0 -268
  314. package/Sources/RunicCore/CustomProviders/GenericProviderFetcher.swift +0 -631
  315. package/Sources/RunicCore/CustomProviders/ProviderTemplates.swift +0 -444
  316. package/Sources/RunicCore/Host/PTY/TTYCommandRunner.swift +0 -679
  317. package/Sources/RunicCore/Host/Process/SubprocessRunner.swift +0 -135
  318. package/Sources/RunicCore/Integrations/GitHubIntegration.swift +0 -173
  319. package/Sources/RunicCore/Logging/JSONStderrLogHandler.swift +0 -79
  320. package/Sources/RunicCore/Logging/OSLogLogHandler.swift +0 -86
  321. package/Sources/RunicCore/Logging/RunicLog.swift +0 -123
  322. package/Sources/RunicCore/Models/EnhancedUsageModels.swift +0 -370
  323. package/Sources/RunicCore/OpenAIDashboardModels.swift +0 -210
  324. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardBrowserCookieImporter.swift +0 -676
  325. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardFetcher.swift +0 -492
  326. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardNavigationDelegate.swift +0 -51
  327. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardParser.swift +0 -483
  328. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardScrapeScript.swift +0 -558
  329. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebViewCache.swift +0 -204
  330. package/Sources/RunicCore/OpenAIWeb/OpenAIDashboardWebsiteDataStore.swift +0 -78
  331. package/Sources/RunicCore/PathEnvironment.swift +0 -482
  332. package/Sources/RunicCore/Performance/PerformanceModels.swift +0 -371
  333. package/Sources/RunicCore/Performance/PerformanceStorageImpl.swift +0 -426
  334. package/Sources/RunicCore/Policy/UsagePolicyEngine.swift +0 -178
  335. package/Sources/RunicCore/ProjectBudgetStore.swift +0 -102
  336. package/Sources/RunicCore/ProviderCostSnapshot.swift +0 -29
  337. package/Sources/RunicCore/Providers/Antigravity/AntigravityProviderDescriptor.swift +0 -68
  338. package/Sources/RunicCore/Providers/Antigravity/AntigravityStatusProbe.swift +0 -685
  339. package/Sources/RunicCore/Providers/Auggie/AuggieProviderDescriptor.swift +0 -83
  340. package/Sources/RunicCore/Providers/Auggie/AuggieUsageFetcher.swift +0 -142
  341. package/Sources/RunicCore/Providers/Azure/AzureProviderDescriptor.swift +0 -141
  342. package/Sources/RunicCore/Providers/Azure/AzureUsageFetcher.swift +0 -188
  343. package/Sources/RunicCore/Providers/Bedrock/BedrockProviderDescriptor.swift +0 -126
  344. package/Sources/RunicCore/Providers/Bedrock/BedrockUsageFetcher.swift +0 -164
  345. package/Sources/RunicCore/Providers/Cerebras/CerebrasProviderDescriptor.swift +0 -84
  346. package/Sources/RunicCore/Providers/Cerebras/CerebrasUsageFetcher.swift +0 -75
  347. package/Sources/RunicCore/Providers/Claude/ClaudeCLISession.swift +0 -332
  348. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthCredentials.swift +0 -180
  349. package/Sources/RunicCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthUsageFetcher.swift +0 -137
  350. package/Sources/RunicCore/Providers/Claude/ClaudeProviderDescriptor.swift +0 -209
  351. package/Sources/RunicCore/Providers/Claude/ClaudeStatusProbe.swift +0 -654
  352. package/Sources/RunicCore/Providers/Claude/ClaudeUsageDataSource.swift +0 -30
  353. package/Sources/RunicCore/Providers/Claude/ClaudeUsageFetcher.swift +0 -480
  354. package/Sources/RunicCore/Providers/Claude/ClaudeWeb/ClaudeWebAPIFetcher.swift +0 -780
  355. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthCredentials.swift +0 -147
  356. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexOAuthUsageFetcher.swift +0 -280
  357. package/Sources/RunicCore/Providers/Codex/CodexOAuth/CodexTokenRefresher.swift +0 -100
  358. package/Sources/RunicCore/Providers/Codex/CodexProviderDescriptor.swift +0 -245
  359. package/Sources/RunicCore/Providers/Codex/CodexStatusProbe.swift +0 -125
  360. package/Sources/RunicCore/Providers/Codex/CodexUsageDataSource.swift +0 -26
  361. package/Sources/RunicCore/Providers/Codex/CodexWebDashboardStrategy.swift +0 -183
  362. package/Sources/RunicCore/Providers/Cohere/CohereProviderDescriptor.swift +0 -83
  363. package/Sources/RunicCore/Providers/Cohere/CohereUsageFetcher.swift +0 -85
  364. package/Sources/RunicCore/Providers/Copilot/CopilotDeviceFlow.swift +0 -123
  365. package/Sources/RunicCore/Providers/Copilot/CopilotGitHubCLITokenReader.swift +0 -117
  366. package/Sources/RunicCore/Providers/Copilot/CopilotProviderDescriptor.swift +0 -100
  367. package/Sources/RunicCore/Providers/Copilot/CopilotUsageFetcher.swift +0 -293
  368. package/Sources/RunicCore/Providers/Copilot/CopilotVSCodeTokenReader.swift +0 -385
  369. package/Sources/RunicCore/Providers/Cursor/CursorProviderDescriptor.swift +0 -67
  370. package/Sources/RunicCore/Providers/Cursor/CursorStatusProbe.swift +0 -595
  371. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekProviderDescriptor.swift +0 -85
  372. package/Sources/RunicCore/Providers/DeepSeek/DeepSeekUsageFetcher.swift +0 -108
  373. package/Sources/RunicCore/Providers/Factory/FactoryLocalStorageImporter.swift +0 -398
  374. package/Sources/RunicCore/Providers/Factory/FactoryProviderDescriptor.swift +0 -67
  375. package/Sources/RunicCore/Providers/Factory/FactoryStatusProbe.swift +0 -1276
  376. package/Sources/RunicCore/Providers/Fireworks/FireworksProviderDescriptor.swift +0 -84
  377. package/Sources/RunicCore/Providers/Fireworks/FireworksUsageFetcher.swift +0 -75
  378. package/Sources/RunicCore/Providers/Gemini/GeminiProviderDescriptor.swift +0 -67
  379. package/Sources/RunicCore/Providers/Gemini/GeminiStatusProbe.swift +0 -839
  380. package/Sources/RunicCore/Providers/Groq/GroqProviderDescriptor.swift +0 -83
  381. package/Sources/RunicCore/Providers/Groq/GroqUsageFetcher.swift +0 -71
  382. package/Sources/RunicCore/Providers/Kimi/KimiProviderDescriptor.swift +0 -83
  383. package/Sources/RunicCore/Providers/Kimi/KimiUsageFetcher.swift +0 -77
  384. package/Sources/RunicCore/Providers/MiniMax/MiniMaxProviderDescriptor.swift +0 -97
  385. package/Sources/RunicCore/Providers/MiniMax/MiniMaxSettingsReader.swift +0 -54
  386. package/Sources/RunicCore/Providers/MiniMax/MiniMaxUsageFetcher.swift +0 -168
  387. package/Sources/RunicCore/Providers/MiniMax/MiniMaxWebUsageFetcher.swift +0 -911
  388. package/Sources/RunicCore/Providers/Mistral/MistralProviderDescriptor.swift +0 -84
  389. package/Sources/RunicCore/Providers/Mistral/MistralUsageFetcher.swift +0 -75
  390. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterProviderDescriptor.swift +0 -87
  391. package/Sources/RunicCore/Providers/OpenRouter/OpenRouterUsageFetcher.swift +0 -216
  392. package/Sources/RunicCore/Providers/Perplexity/PerplexityProviderDescriptor.swift +0 -84
  393. package/Sources/RunicCore/Providers/Perplexity/PerplexityUsageFetcher.swift +0 -75
  394. package/Sources/RunicCore/Providers/ProviderBranding.swift +0 -25
  395. package/Sources/RunicCore/Providers/ProviderCLIConfig.swift +0 -17
  396. package/Sources/RunicCore/Providers/ProviderDescriptor.swift +0 -129
  397. package/Sources/RunicCore/Providers/ProviderFetchPlan.swift +0 -263
  398. package/Sources/RunicCore/Providers/ProviderSettingsSnapshot.swift +0 -98
  399. package/Sources/RunicCore/Providers/ProviderTokenResolver.swift +0 -501
  400. package/Sources/RunicCore/Providers/ProviderVersionDetector.swift +0 -68
  401. package/Sources/RunicCore/Providers/Providers.swift +0 -184
  402. package/Sources/RunicCore/Providers/Qwen/QwenProviderDescriptor.swift +0 -86
  403. package/Sources/RunicCore/Providers/Qwen/QwenSettingsReader.swift +0 -30
  404. package/Sources/RunicCore/Providers/Qwen/QwenUsageStats.swift +0 -328
  405. package/Sources/RunicCore/Providers/SambaNova/SambaNovaProviderDescriptor.swift +0 -84
  406. package/Sources/RunicCore/Providers/SambaNova/SambaNovaUsageFetcher.swift +0 -75
  407. package/Sources/RunicCore/Providers/Together/TogetherProviderDescriptor.swift +0 -83
  408. package/Sources/RunicCore/Providers/Together/TogetherUsageFetcher.swift +0 -75
  409. package/Sources/RunicCore/Providers/VertexAI/VertexAIProviderDescriptor.swift +0 -123
  410. package/Sources/RunicCore/Providers/VertexAI/VertexAISettingsReader.swift +0 -48
  411. package/Sources/RunicCore/Providers/VertexAI/VertexAIUsageFetcher.swift +0 -144
  412. package/Sources/RunicCore/Providers/XAI/XAIProviderDescriptor.swift +0 -83
  413. package/Sources/RunicCore/Providers/XAI/XAIUsageFetcher.swift +0 -75
  414. package/Sources/RunicCore/Providers/Zai/ZaiProviderDescriptor.swift +0 -74
  415. package/Sources/RunicCore/Providers/Zai/ZaiSettingsReader.swift +0 -41
  416. package/Sources/RunicCore/Providers/Zai/ZaiUsageStats.swift +0 -745
  417. package/Sources/RunicCore/Sync/BackgroundSyncManager.swift +0 -384
  418. package/Sources/RunicCore/Sync/SyncConflictResolver.swift +0 -307
  419. package/Sources/RunicCore/Sync/SyncProtocol.swift +0 -287
  420. package/Sources/RunicCore/Sync/SyncRecord.swift +0 -402
  421. package/Sources/RunicCore/Sync/SyncUsageExample.swift +0 -288
  422. package/Sources/RunicCore/Sync/TeamSyncRecords.swift +0 -768
  423. package/Sources/RunicCore/Sync/iCloudSyncEngine.swift +0 -338
  424. package/Sources/RunicCore/Team/TeamModels.swift +0 -584
  425. package/Sources/RunicCore/Team/TeamShowbackExporter.swift +0 -495
  426. package/Sources/RunicCore/Team/TeamStore.swift +0 -809
  427. package/Sources/RunicCore/TextParsing.swift +0 -55
  428. package/Sources/RunicCore/UsageFetcher.swift +0 -694
  429. package/Sources/RunicCore/UsageFormatter.swift +0 -410
  430. package/Sources/RunicCore/UsageLedger/ClaudeUsageLogSource.swift +0 -441
  431. package/Sources/RunicCore/UsageLedger/CodexUsageLogSource.swift +0 -502
  432. package/Sources/RunicCore/UsageLedger/LedgerCache.swift +0 -161
  433. package/Sources/RunicCore/UsageLedger/OTelGenAILedgerAdapter.swift +0 -550
  434. package/Sources/RunicCore/UsageLedger/UsageLedger.swift +0 -29
  435. package/Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift +0 -675
  436. package/Sources/RunicCore/UsageLedger/UsageLedgerInsightsAdvisor.swift +0 -209
  437. package/Sources/RunicCore/UsageLedger/UsageLedgerModels.swift +0 -417
  438. package/Sources/RunicCore/UsageLedger/UsageLedgerProjectIdentity.swift +0 -284
  439. package/Sources/RunicCore/UsagePace.swift +0 -81
  440. package/Sources/RunicCore/Vendored/CostUsage/CostUsageCache.swift +0 -73
  441. package/Sources/RunicCore/Vendored/CostUsage/CostUsageJsonl.swift +0 -74
  442. package/Sources/RunicCore/Vendored/CostUsage/CostUsagePricing.swift +0 -208
  443. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Claude.swift +0 -455
  444. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner+Timestamp.swift +0 -132
  445. package/Sources/RunicCore/Vendored/CostUsage/CostUsageScanner.swift +0 -589
  446. package/Sources/RunicCore/WidgetSnapshot.swift +0 -183
  447. package/Sources/RunicMacroSupport/ProviderRegistrationMacros.swift +0 -14
  448. package/Sources/RunicMacros/ProviderRegistrationMacros.swift +0 -216
  449. package/Sources/RunicWidget/RunicWidgetBundle.swift +0 -79
  450. package/Sources/RunicWidget/RunicWidgetProvider.swift +0 -283
  451. package/Sources/RunicWidget/RunicWidgetViews.swift +0 -680
  452. package/Tests/RunicTests/AntigravityStatusProbeTests.swift +0 -50
  453. package/Tests/RunicTests/AppDelegateTests.swift +0 -48
  454. package/Tests/RunicTests/BrowserCookieOrderLabelTests.swift +0 -21
  455. package/Tests/RunicTests/CLIArgumentParsingTests.swift +0 -69
  456. package/Tests/RunicTests/CLICostTests.swift +0 -64
  457. package/Tests/RunicTests/CLIProviderSelectionTests.swift +0 -21
  458. package/Tests/RunicTests/CLISnapshotTests.swift +0 -71
  459. package/Tests/RunicTests/CLIWebFallbackTests.swift +0 -57
  460. package/Tests/RunicTests/ClaudeOAuthTests.swift +0 -163
  461. package/Tests/RunicTests/ClaudeResilienceTests.swift +0 -29
  462. package/Tests/RunicTests/ClaudeUsageTests.swift +0 -369
  463. package/Tests/RunicTests/CodexOAuthTests.swift +0 -121
  464. package/Tests/RunicTests/CodexUsageLogSourceTests.swift +0 -80
  465. package/Tests/RunicTests/CopilotTokenResolverTests.swift +0 -74
  466. package/Tests/RunicTests/CopilotVSCodeTokenReaderTests.swift +0 -74
  467. package/Tests/RunicTests/CostUsageDecodingTests.swift +0 -392
  468. package/Tests/RunicTests/CostUsagePricingTests.swift +0 -48
  469. package/Tests/RunicTests/CostUsageScannerTests.swift +0 -698
  470. package/Tests/RunicTests/CursorStatusProbeTests.swift +0 -322
  471. package/Tests/RunicTests/FactoryStatusProbeTests.swift +0 -67
  472. package/Tests/RunicTests/GeminiAPITestHelpers.swift +0 -94
  473. package/Tests/RunicTests/GeminiLoginAlertTests.swift +0 -27
  474. package/Tests/RunicTests/GeminiStatusProbeAPITests.swift +0 -283
  475. package/Tests/RunicTests/GeminiStatusProbePlanTests.swift +0 -279
  476. package/Tests/RunicTests/GeminiStatusProbeTests.swift +0 -232
  477. package/Tests/RunicTests/GeminiTestEnvironment.swift +0 -87
  478. package/Tests/RunicTests/GoogleWorkspaceStatusTests.swift +0 -72
  479. package/Tests/RunicTests/InstallOriginTests.swift +0 -17
  480. package/Tests/RunicTests/KeyboardShortcutsBundleTests.swift +0 -9
  481. package/Tests/RunicTests/LiveAccountTests.swift +0 -24
  482. package/Tests/RunicTests/LoadingPatternTests.swift +0 -34
  483. package/Tests/RunicTests/MenuCardModelTests.swift +0 -544
  484. package/Tests/RunicTests/MiniMaxCookieHeaderStoreTestSupport.swift +0 -11
  485. package/Tests/RunicTests/MiniMaxGroupIDStoreTestSupport.swift +0 -11
  486. package/Tests/RunicTests/MiniMaxParsingTests.swift +0 -67
  487. package/Tests/RunicTests/MiniMaxTokenStoreTestSupport.swift +0 -11
  488. package/Tests/RunicTests/OTelGenAILedgerAdapterTests.swift +0 -110
  489. package/Tests/RunicTests/OpenAIDashboardBrowserCookieImporterTests.swift +0 -16
  490. package/Tests/RunicTests/OpenAIDashboardFetcherCreditsWaitTests.swift +0 -74
  491. package/Tests/RunicTests/OpenAIDashboardOffscreenHostTests.swift +0 -26
  492. package/Tests/RunicTests/OpenAIDashboardParserTests.swift +0 -133
  493. package/Tests/RunicTests/OpenAIWebAccountSwitchTests.swift +0 -64
  494. package/Tests/RunicTests/OpenRouterTokenStoreTestSupport.swift +0 -131
  495. package/Tests/RunicTests/PathBuilderTests.swift +0 -236
  496. package/Tests/RunicTests/ProviderFetchPipelineTests.swift +0 -159
  497. package/Tests/RunicTests/ProviderIconResourcesTests.swift +0 -37
  498. package/Tests/RunicTests/ProviderMetadataStatusLinkTests.swift +0 -15
  499. package/Tests/RunicTests/ProviderRegistryTests.swift +0 -29
  500. package/Tests/RunicTests/ProviderSettingsDescriptorTests.swift +0 -236
  501. package/Tests/RunicTests/ProviderToggleStoreTests.swift +0 -50
  502. package/Tests/RunicTests/RunicTests.swift +0 -119
  503. package/Tests/RunicTests/SessionQuotaNotificationLogicTests.swift +0 -35
  504. package/Tests/RunicTests/SettingsStoreTests.swift +0 -265
  505. package/Tests/RunicTests/StatusItemAnimationTests.swift +0 -54
  506. package/Tests/RunicTests/StatusMenuTests.swift +0 -475
  507. package/Tests/RunicTests/StatusProbeTests.swift +0 -376
  508. package/Tests/RunicTests/SubprocessRunnerTests.swift +0 -18
  509. package/Tests/RunicTests/SubscriptionDetectionTests.swift +0 -64
  510. package/Tests/RunicTests/TTYCommandRunnerTests.swift +0 -147
  511. package/Tests/RunicTests/TTYIntegrationTests.swift +0 -41
  512. package/Tests/RunicTests/TeamShowbackExporterTests.swift +0 -157
  513. package/Tests/RunicTests/TextParsingTests.swift +0 -11
  514. package/Tests/RunicTests/UsageFormatterTests.swift +0 -111
  515. package/Tests/RunicTests/UsageLedgerAnomalyDetectionTests.swift +0 -170
  516. package/Tests/RunicTests/UsageLedgerForecastTests.swift +0 -211
  517. package/Tests/RunicTests/UsageLedgerInsightsAdvisorTests.swift +0 -81
  518. package/Tests/RunicTests/UsageLedgerProjectNameTests.swift +0 -168
  519. package/Tests/RunicTests/UsagePaceTests.swift +0 -76
  520. package/Tests/RunicTests/UsagePaceTextTests.swift +0 -108
  521. package/Tests/RunicTests/UsagePolicyEngineTests.swift +0 -89
  522. package/Tests/RunicTests/WidgetSnapshotTests.swift +0 -43
  523. package/Tests/RunicTests/ZaiProviderTests.swift +0 -59
  524. package/Tests/RunicTests/ZaiTokenStoreTestSupport.swift +0 -9
  525. package/TestsLinux/PlatformGatingTests.swift +0 -46
  526. package/appcast.xml +0 -104
  527. package/assets/logo-concept-stack.svg +0 -24
  528. package/assets/logo-minimal-bars.svg +0 -15
  529. package/assets/logo.svg +0 -20
  530. package/assets/logo2.svg +0 -43
  531. package/bin/docs-list +0 -5
  532. package/build-and-run.sh +0 -369
  533. package/docs/.nojekyll +0 -1
  534. package/docs/CNAME +0 -1
  535. package/docs/antigravity.md +0 -75
  536. package/docs/architecture.md +0 -32
  537. package/docs/claude.md +0 -93
  538. package/docs/cli-commands/integration_guide.md +0 -371
  539. package/docs/cli-commands/quick_reference.md +0 -362
  540. package/docs/cli-commands/readme.md +0 -361
  541. package/docs/cli.md +0 -156
  542. package/docs/cloudkit_sync_guide.md +0 -495
  543. package/docs/codebase_review.md +0 -288
  544. package/docs/codex-oauth.md +0 -635
  545. package/docs/codex.md +0 -104
  546. package/docs/codexbar.png +0 -0
  547. package/docs/copilot.md +0 -44
  548. package/docs/cursor.md +0 -46
  549. package/docs/design/designcomparisonchart.md +0 -510
  550. package/docs/design/implementationguide.md +0 -792
  551. package/docs/design/menubaricondesignconcepts.md +0 -796
  552. package/docs/design/mockups/hybridiconconcept.svg +0 -62
  553. package/docs/design/mockups/infinityiconconcept.svg +0 -41
  554. package/docs/design/mockups/infinityiconstates.svg +0 -129
  555. package/docs/design/mockups/wavelogorefined.svg +0 -48
  556. package/docs/design/quick_summary.md +0 -426
  557. package/docs/design/readme.md +0 -478
  558. package/docs/design/sizespecifications.md +0 -575
  559. package/docs/design-system.md +0 -836
  560. package/docs/factory.md +0 -103
  561. package/docs/gemini.md +0 -73
  562. package/docs/icon.md +0 -37
  563. package/docs/icon.png +0 -0
  564. package/docs/index.html +0 -175
  565. package/docs/keychain_fix.md +0 -274
  566. package/docs/minimax.md +0 -71
  567. package/docs/packaging.md +0 -25
  568. package/docs/progress-bar-improvements.md +0 -240
  569. package/docs/progress-bar-quick-reference.md +0 -283
  570. package/docs/progress-bar-technical-details.md +0 -432
  571. package/docs/progress-bar-visual-test.swift +0 -375
  572. package/docs/provider.md +0 -202
  573. package/docs/providers.md +0 -86
  574. package/docs/refactor/macros.md +0 -35
  575. package/docs/refresh-loop.md +0 -22
  576. package/docs/releasing-homebrew.md +0 -35
  577. package/docs/releasing.md +0 -121
  578. package/docs/research/concrete_todo_2026-02-22.md +0 -47
  579. package/docs/research/core-feature-research.md +0 -248
  580. package/docs/research/feature_uiux_roadmap_2026-02-22.md +0 -202
  581. package/docs/research/parity_matrix.md +0 -49
  582. package/docs/research/provider_expansion_candidates_2026-02-22.md +0 -80
  583. package/docs/research/provider_model_token_project_matrix_2026-02-23.md +0 -46
  584. package/docs/research/release_gate_checklist.md +0 -57
  585. package/docs/site.css +0 -505
  586. package/docs/sparkle.md +0 -28
  587. package/docs/status.md +0 -28
  588. package/docs/sync/implementation.md +0 -393
  589. package/docs/sync/readme.md +0 -317
  590. package/docs/sync_files_summary.md +0 -391
  591. package/docs/sync_quick_reference.md +0 -225
  592. package/docs/todo.md +0 -11
  593. package/docs/ui.md +0 -29
  594. package/docs/web-integration.md +0 -9
  595. package/docs/widgets.md +0 -85
  596. package/docs/workflows/error-handling-improvements.md +0 -434
  597. package/docs/workflows/folder_structure.md +0 -299
  598. package/docs/workflows/loading_states.md +0 -446
  599. package/docs/workflows/loading_states_examples.md +0 -565
  600. package/docs/workflows/loading_states_flow.md +0 -430
  601. package/docs/workflows/performance_optimizations.md +0 -457
  602. package/docs/workflows/phase1-cli-testing-report.md +0 -313
  603. package/docs/workflows/quick_reference.md +0 -228
  604. package/docs/workflows/readme.md +0 -59
  605. package/docs/workflows/recent_improvements.md +0 -275
  606. package/docs/workflows/sync_enablement_summary.md +0 -400
  607. package/docs/zai.md +0 -43
  608. package/runic.png +0 -0
  609. package/runic.svg +0 -15
  610. package/version.env +0 -2
@@ -1,35 +0,0 @@
1
- ---
2
- summary: "Provider macro refactor ideas and follow-ups."
3
- read_when:
4
- - Reviewing provider macro ergonomics
5
- - Planning provider/descriptor refactors
6
- ---
7
-
8
- # Macro refactor ideas
9
-
10
- 1. Macro ergonomics + errors
11
- - Emit compile-time errors when a macro is attached to the wrong target or missing `descriptor`/`init`.
12
- - Add a member macro to generate `static let descriptor` from `makeDescriptor()` to remove boilerplate.
13
-
14
- 2. Descriptor/data shape
15
- - Split ProviderDescriptor into Descriptor + FetchPlan + Branding + CLI files for cleaner deps.
16
- - Move source label into fetch results (strategy-specific).
17
-
18
- 3. Fetching pipeline
19
- - Return all attempted strategies + errors for debug UI and CLI `--verbose`.
20
-
21
- 4. Registry order & stability
22
- - Use ProviderDescriptorRegistry registration order for `all`; no sorting by rawValue.
23
- - Use metadata flags (e.g. `isPrimaryProvider`) instead of hard-coded Codex/Claude.
24
-
25
- 5. Account/identity
26
- - Replace Codex UI special casing with a descriptor flag (e.g. `usesAccountFallback`).
27
- - Enforce provider-keyed identity in snapshots to avoid cross-provider display.
28
-
29
- 6. Settings + tokens
30
- - Move Zai/Copilot token lookup into strategy-local resolvers (Keychain/env).
31
- - Add optional per-provider settings fields in ProviderSettingsSnapshot.
32
-
33
- 7. Docs + tests
34
- - Add a minimal provider example in docs/provider.md.
35
- - Add registry completeness + deterministic-order test.
@@ -1,22 +0,0 @@
1
- ---
2
- summary: "Refresh cadence, background updates, and error handling."
3
- read_when:
4
- - Changing refresh cadence, background tasks, or refresh triggers
5
- - Investigating refresh timing or stale data behavior
6
- ---
7
-
8
- # Refresh loop
9
-
10
- ## Cadence
11
- - `RefreshFrequency`: Manual, 1m, 2m, 5m (default), 15m.
12
- - Stored in `UserDefaults` via `SettingsStore`.
13
-
14
- ## Behavior
15
- - Background refresh runs off-main and updates `UsageStore` (usage + credits + optional web scrape).
16
- - Manual “Refresh now” always available in the menu.
17
- - Stale/error states dim the icon and surface status in-menu.
18
-
19
- ## Optional future
20
- - Auto-seed a log if none exists via `codex exec --skip-git-repo-check --json "ping"` (currently not executed).
21
-
22
- See also: `docs/status.md`, `docs/ui.md`.
@@ -1,35 +0,0 @@
1
- ---
2
- summary: "Homebrew Cask release steps for Runic (Sparkle-disabled builds)."
3
- read_when:
4
- - Publishing a Runic release via Homebrew
5
- - Updating the Homebrew tap cask definition
6
- ---
7
-
8
- # Runic Homebrew Release Playbook
9
-
10
- Homebrew is for the UI app via Cask. When installed via Homebrew, Runic disables Sparkle and shows a "update via brew" hint in About.
11
-
12
- ## Prereqs
13
- - Homebrew installed.
14
- - Access to the tap repo: `../homebrew-tap`.
15
-
16
- ## 1) Release Runic normally
17
- Follow `docs/RELEASING.md` to publish `Runic-<version>.zip` to GitHub Releases.
18
-
19
- ## 2) Update the Homebrew tap cask
20
- In `../homebrew-tap`, add/update the cask at `Casks/runic.rb`:
21
- - `url` points at the GitHub release asset: `.../releases/download/v<version>/Runic-<version>.zip`
22
- - Update `sha256` to match that zip.
23
- - Keep `depends_on arch: :arm64` and `depends_on macos: ">= :sonoma"` (Runic is macOS 14+).
24
-
25
- ## 3) Verify install
26
- ```sh
27
- brew uninstall --cask runic || true
28
- brew untap steipete/tap || true
29
- brew tap steipete/tap
30
- brew install --cask steipete/tap/runic
31
- open -a Runic
32
- ```
33
-
34
- ## 4) Push tap changes
35
- Commit + push in the tap repo.
package/docs/releasing.md DELETED
@@ -1,121 +0,0 @@
1
- ---
2
- summary: "Runic release checklist: package, sign, notarize, appcast, and asset validation."
3
- read_when:
4
- - Starting a Runic release
5
- - Updating signing/notarization or appcast steps
6
- - Validating release assets or Sparkle feed
7
- ---
8
-
9
- # Release process (Runic)
10
-
11
- SwiftPM-only; package/sign/notarize manually (no Xcode project). Sparkle feed is served from GitHub Releases. Checklist below merges Trimmy’s release flow with Runic specifics.
12
-
13
- **Reference first:** follow this Runic-specific guide as the source of truth for release steps.
14
-
15
- ## Expectations
16
- - When someone says “release Runic”, do the entire end-to-end flow: bump versions/CHANGELOG, build, sign and notarize, upload the zip to the GitHub release, generate/update the appcast with the new signature, publish the tag/release, and verify the enclosure URL responds with 200/OK and installs via Sparkle (no 404s or stale feeds).
17
-
18
- ### Release automation notes (Scripts/release.sh)
19
- - Always forces a fresh build/notarization (no cached artifacts) before publishing.
20
- - Fails fast if: git tree is dirty, the top changelog section is still “Unreleased” or mismatched, the target version already exists in the appcast, or the build number is not greater than the latest appcast entry.
21
- - Sparkle key probe runs up front; appcast entry + signature verified automatically after generation.
22
- - Release notes are extracted directly from the current changelog section and passed to the GitHub release (no manual notes flag needed).
23
- - Sparkle appcast notes are generated as HTML from the same changelog section and embedded into the appcast entry.
24
- - Uses in-repo helpers (`Scripts/release-lib.sh`) so release checks no longer depend on external/private script paths.
25
- - Requires tools/env on PATH: `swiftformat`, `swiftlint`, `swift`, `sign_update`, `generate_appcast`, `gh`, `python3`, `zip`, `curl`, plus `APP_STORE_CONNECT_*` and `SPARKLE_PRIVATE_KEY_FILE`.
26
-
27
- ## Prereqs
28
- - Xcode 26+ installed at `/Applications/Xcode.app` (for ictool/iconutil and SDKs).
29
- - Developer ID Application cert installed (e.g. `Developer ID Application: YOUR_NAME (TEAMID)`).
30
- - ASC API creds in env: `APP_STORE_CONNECT_API_KEY_P8`, `APP_STORE_CONNECT_KEY_ID`, `APP_STORE_CONNECT_ISSUER_ID`.
31
- - Sparkle keys: public key already in Info.plist; private key path set via `SPARKLE_PRIVATE_KEY_FILE` when generating appcast.
32
- - Ensure shell has release env vars loaded (usually `source ~/.profile`) before running `Scripts/release.sh`.
33
-
34
- ## Icon (glass .icon → .icns)
35
- ```
36
- ./Scripts/build_icon.sh Icon.icon Runic
37
- ```
38
- Uses Xcode’s `ictool` + transparent padding + iconset → Icon.icns.
39
-
40
- ## Build, sign, notarize (universal: arm64 + x86_64)
41
- ```
42
- ./Scripts/sign-and-notarize.sh
43
- ```
44
- What it does:
45
- - `swift build -c release --arch arm64` and `swift build -c release --arch x86_64`
46
- - Packages `Runic.app` with Info.plist and Icon.icns
47
- - Embeds Sparkle.framework, Updater, Autoupdate, XPCs
48
- - Codesigns **everything** with runtime + timestamp (deep) and adds rpath
49
- - Zips to `Runic-<version>.zip`
50
- - Submits to notarytool, waits, staples, validates
51
-
52
- Gotchas fixed:
53
- - Sparkle needs signing for framework, Autoupdate, Updater, XPCs (Downloader/Installer) or notarization fails.
54
- - Use `--timestamp` and `--deep` when signing the app to avoid invalid signature errors.
55
- - Avoid `unzip` — it can add AppleDouble `._*` files that break the sealed signature and trigger “app is damaged”. Use Finder or `ditto -x -k Runic-<ver>.zip /Applications`. If Gatekeeper complains, delete the app bundle, re-extract with `ditto`, then `spctl -a -t exec` to verify.
56
- - Manual sanity check before uploading: `find Runic.app -name '._*'` should return nothing; then `spctl --assess --type execute --verbose Runic.app` and `codesign --verify --deep --strict --verbose Runic.app` should both pass on the packaged bundle.
57
-
58
- ## Appcast (Sparkle)
59
- After notarization:
60
- ```
61
- SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-priv.key \
62
- ./Scripts/make_appcast.sh Runic-0.1.0.zip \
63
- https://raw.githubusercontent.com/sriinnu/Runic/main/appcast.xml
64
- Generates HTML release notes from `CHANGELOG.md` (via `Scripts/changelog-to-html.sh`) and embeds them into the appcast entry.
65
- ```
66
- Uploads not handled automatically—commit/publish appcast + zip to the feed location (GitHub Releases/raw URL).
67
-
68
- ## Tag & release
69
- ```
70
- git tag v<version>
71
- ./Scripts/make_appcast.sh ...
72
- # upload zip + appcast to Releases
73
- # then create GitHub release (gh release create v<version> ...)
74
- ```
75
-
76
- ## Homebrew (Cask)
77
- Runic ships a Homebrew **Cask** in `../homebrew-tap`. When installed via Homebrew, Runic disables Sparkle and the app
78
- must be updated via `brew`.
79
-
80
- After publishing the GitHub release, update the tap cask (see `docs/releasing-homebrew.md`).
81
-
82
- ## Checklist (quick)
83
- - [ ] Read this file end-to-end before starting.
84
- - [ ] Update versions (scripts/Info.plist, CHANGELOG, About text) — changelog top section must be finalized; release script pulls notes from it automatically.
85
- - [ ] `swiftformat`, `swiftlint`, `swift test` (zero warnings/errors)
86
- - [ ] `./Scripts/build_icon.sh` if icon changed
87
- - [ ] `./Scripts/sign-and-notarize.sh`
88
- - [ ] Generate Sparkle appcast with private key
89
- - Sparkle ed25519 private key path: `/Users/sriinnu/Library/CloudStorage/Dropbox/Backup/Sparkle/sparkle-private-key-KEEP-SECURE.txt` (primary) and `/Users/sriinnu/Library/CloudStorage/Dropbox/Backup/Sparkle-VibeTunnel/sparkle-private-key-KEEP-SECURE.txt` (older backup)
90
- - Upload the dSYM archive alongside the app zip on the GitHub release; the release script now automates this and will fail if it’s missing.
91
- - After publishing the release, run `Scripts/check-release-assets.sh <tag>` to confirm both the app zip and dSYM zip are present on GitHub.
92
- - Generate the appcast + HTML release notes: `./Scripts/make_appcast.sh Runic-<ver>.zip https://raw.githubusercontent.com/sriinnu/Runic/main/appcast.xml`
93
- - Verify the enclosure signature + size: `SPARKLE_PRIVATE_KEY_FILE=... ./Scripts/verify_appcast.sh <ver>`
94
- - [ ] Upload zip + appcast to feed; publish tag + GitHub release so Sparkle URL is live (avoid 404)
95
- - [ ] Homebrew tap: update `../homebrew-tap/Casks/runic.rb` (url + sha256), then verify:
96
- - `brew uninstall --cask runic || true`
97
- - `brew untap sriinnu/tap || true; brew tap sriinnu/tap`
98
- - `brew install --cask sriinnu/tap/runic && open -a Runic`
99
- - [ ] Version continuity: confirm the new version is the immediate next patch/minor (no gaps) and CHANGELOG has no skipped numbers (e.g., after 0.2.0 use 0.2.1, not 0.2.2)
100
- - [ ] Changelog sanity: single top-level title, no duplicate version sections, versions strictly descending with no repeats
101
- - [ ] Release pages: title format `Runic <version>`, notes as Markdown list (no stray blank lines)
102
- - [ ] Changelog/release notes are user-facing: avoid internal-only bullets (build numbers, script bumps) and keep entries concise
103
- - [ ] Download uploaded `Runic-<ver>.zip`, unzip via `ditto`, run, and verify signature (`spctl -a -t exec -vv Runic.app` + `stapler validate`)
104
- - [ ] Confirm `appcast.xml` points to the new zip/version and renders the HTML release notes (not escaped tags)
105
- - [ ] Verify on GitHub Releases: assets present (zip, appcast), release notes match changelog, version/tag correct
106
- - [ ] Open the appcast URL in browser to confirm the new entry is visible and enclosure URL is reachable
107
- - [ ] Manually visit the enclosure URL (curl -I) to ensure 200/OK (no 404) after publishing assets/release
108
- - [ ] Ensure `sparkle:edSignature` is present for the enclosure in appcast (generated by `generate_appcast` with the ed25519 key)
109
- - [ ] When creating the GitHub release, paste the CHANGELOG entry as Markdown list (one `-` per line, blank line between sections); visually confirm bullets render correctly after publishing
110
- - [ ] Keep a previous signed build in `/Applications/Runic.app` to test Sparkle delta/full update to the new release
111
- - [ ] Manual Gatekeeper sanity: after packaging, `find Runic.app -name '._*'` is empty, `spctl --assess --type execute --verbose Runic.app` and `codesign --verify --deep --strict --verbose Runic.app` succeed
112
- - [ ] For Sparkle verification: if replacing `/Applications/Runic.app`, quit first, replace, relaunch, and test update
113
- - **Definition of “done” for a release:** all of the above are complete, the appcast/enclosure link resolves, Homebrew cask
114
- installs, and a previous public build can update to the new one via Sparkle. Anything short of that is not a finished release.
115
-
116
- ## Troubleshooting
117
- - **White plate icon**: regenerate icns via `build_icon.sh` (ictool) to ensure transparent padding.
118
- - **Notarization invalid**: verify deep+timestamp signing, especially Sparkle’s Autoupdate/Updater and XPCs; rerun package + sign-and-notarize.
119
- - **App won’t launch**: ensure Sparkle.framework is embedded under `Contents/Frameworks` and rpath added; codesign deep.
120
- - **App “damaged” dialog after unzip**: re-extract with `ditto -x -k`, removing any `._*` files, then re-verify with `spctl`.
121
- - **Update download fails (404)**: ensure the release asset referenced in appcast exists and is published in the corresponding GitHub release; verify with `curl -I <enclosure-url>`.
@@ -1,47 +0,0 @@
1
- # Concrete TODO (Execution List)
2
-
3
- Branch: `feat/research-uiux-core-next`
4
- Last updated: 2026-02-22
5
-
6
- ## Sprint Goal
7
-
8
- Ship operator-grade insights in small, verifiable slices without destabilizing current menu behavior.
9
-
10
- ## P0 (Now)
11
-
12
- - [x] Create research-backed roadmap document
13
- File: `docs/research/feature_uiux_roadmap_2026-02-22.md`
14
- - [x] Add probabilistic month-end forecast confidence bands (`p50/p80/p95`) to core forecast model
15
- - [x] Render confidence bands in menu Insights line when available
16
- - [x] Add/extend tests for confidence-band generation and menu formatting
17
-
18
- ## P1 (Next)
19
-
20
- - [x] Anomaly explainability v2
21
- - [x] Add explanation object for why severity was chosen
22
- - [x] Surface primary and secondary contributing factors in menu copy
23
- - [x] Policy engine foundation (warn / soft-limit / hard-stop)
24
- - [x] Core model in `RunicCore`
25
- - [x] Deterministic decision tests
26
-
27
- ## P2 (After P1)
28
-
29
- - [x] OTel GenAI ingestion adapter (feature-flagged)
30
- - [x] Team showback/chargeback summary exports
31
- - [x] Cross-platform parity matrix and release gate checklist
32
-
33
- ## Immediate Work Plan (This Branch)
34
-
35
- 1. Extend `UsageLedgerSpendForecast` with optional confidence outputs.
36
- 2. Compute quantiles from observed daily cost distribution in `UsageLedgerAggregator`.
37
- 3. Preserve these fields in `UsageStore` projection-resolution path.
38
- 4. Update menu forecast rendering to show `p50/p80/p95` when available.
39
- 5. Validate with targeted tests and full rebuild script.
40
-
41
- ## Definition Of Done (Current Slice)
42
-
43
- - Forecast model compiles with backward-compatible optional fields.
44
- - Existing forecast tests pass.
45
- - New quantile test passes.
46
- - Menu model test confirms confidence string appears.
47
- - `./Scripts/compile_and_run.sh` completes successfully.
@@ -1,248 +0,0 @@
1
- # Core Feature Research Log
2
-
3
- Date: 2026-02-21
4
- Branch: feat/core
5
-
6
- ## Goal
7
-
8
- Collect concrete, source-backed feature ideas for Runic core roadmap from:
9
- - GitHub projects (production patterns)
10
- - arXiv papers (state-of-the-art approaches)
11
-
12
- This file is updated incrementally during research to avoid context loss.
13
-
14
- ## Status
15
-
16
- - [x] Research file created
17
- - [x] Gather current GitHub evidence
18
- - [x] Gather current arXiv evidence
19
- - [x] Synthesize feature candidates with implementation notes
20
- - [x] Prioritize roadmap (Now / Next / Later)
21
-
22
- ## External Evidence Snapshot
23
-
24
- ### arXiv evidence (routing, caching, cost/quality)
25
-
26
- 1. FrugalGPT (2023)
27
- - Link: https://arxiv.org/abs/2305.05176
28
- - Signal: Cascaded LLM usage can cut cost heavily while maintaining quality (paper reports very large cost savings in their setup).
29
- - Relevance to Runic: Runic can add cost-quality simulation and routing recommendations over existing provider usage logs.
30
-
31
- 2. RouteLLM (2024)
32
- - Link: https://arxiv.org/abs/2406.18665
33
- - Signal: Learned routers can route between strong/weak models with significant cost reduction while preserving much of strong-model quality.
34
- - Relevance to Runic: Add "Routing Advisor" that proposes per-project provider/model policies from real usage history.
35
-
36
- 3. LLMRouterBench (2026)
37
- - Link: https://arxiv.org/abs/2601.07206
38
- - Signal: Large benchmark shows routing is useful, but many methods are brittle and simple baselines are often hard to beat.
39
- - Relevance to Runic: Favor robust baseline policies first (fallback + threshold + guardrails) before heavier ML routing.
40
-
41
- 4. vCache (2025)
42
- - Link: https://arxiv.org/abs/2502.03771
43
- - Signal: Semantic caching with error-bound control can reduce redundant LLM calls.
44
- - Relevance to Runic: Add cacheability analytics and "likely cache hit" opportunity scoring per project/workflow.
45
-
46
- 5. Generative Caching (2025)
47
- - Link: https://arxiv.org/abs/2503.17603
48
- - Signal: Cache systems that generate compact responses for similar prompts improve cost/latency.
49
- - Relevance to Runic: Track prompt similarity buckets and estimate avoidable spend from repeated prompt patterns.
50
-
51
- ### GitHub and docs evidence (production implementation patterns)
52
-
53
- 1. LiteLLM
54
- - Repo: https://github.com/BerriAI/litellm
55
- - Reliability docs: https://docs.litellm.ai/docs/proxy/reliability
56
- - Signal: Production-grade patterns include retries, fallbacks, cooldowns, and routing controls.
57
- - Relevance: Runic should expose policy diagnostics and recommend fallback policy quality from observed failures.
58
-
59
- 2. Helicone AI Gateway
60
- - Repo: https://github.com/Helicone/ai-gateway
61
- - Signal: Unified gateway pattern with routing, load balancing, caching, tracing, and limits.
62
- - Relevance: Runic can add "Gateway Readiness Score" for teams deciding when to adopt a gateway.
63
-
64
- 3. Langfuse
65
- - Repo: https://github.com/langfuse/langfuse
66
- - Signal: Prompt management, tracing, evals, datasets, and collaborative AI ops workflows.
67
- - Relevance: Runic should support prompt/version correlation and eval score overlays in usage charts.
68
-
69
- 4. Promptfoo
70
- - Repo: https://github.com/promptfoo/promptfoo
71
- - Signal: Eval + red-team workflows integrated into CI.
72
- - Relevance: Runic can ingest eval outputs and show quality regressions next to spend spikes.
73
-
74
- 5. OpenAI Evals
75
- - Repo: https://github.com/openai/evals
76
- - Docs link from repo: https://platform.openai.com/docs/guides/evals
77
- - Signal: Evals are a core mechanism to measure model/version quality impact.
78
- - Relevance: Runic can include first-class "Eval Health" alongside budget health.
79
-
80
- 6. OpenTelemetry GenAI semantic conventions
81
- - Metrics: https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-metrics/
82
- - Spans: https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/
83
- - Signal: Standard fields for provider/model/operation/timing are now defined for GenAI telemetry.
84
- - Relevance: Runic should export normalized telemetry so dashboards/tools interoperate cleanly.
85
-
86
- 7. MCP specification (tools/prompts)
87
- - Tools: https://modelcontextprotocol.io/specification/2025-06-18/server/tools
88
- - Prompts: https://modelcontextprotocol.io/specification/2025-06-18/server/prompts
89
- - Signal: Standardized tool invocation and prompt serving surface for agentic systems.
90
- - Relevance: Runic can add MCP-specific analytics (tool error rate, latency, prompt-template performance).
91
-
92
- ## Feature Candidates (for Runic core)
93
-
94
- ### A) Routing Advisor + Cost-Quality Simulator
95
-
96
- What:
97
- - Simulate alternative model/provider routing policies against historical usage ledger data.
98
- - Show projected delta for cost, latency proxy, and quality proxy.
99
-
100
- Why now:
101
- - Directly aligned to FrugalGPT + RouteLLM evidence.
102
- - Low dependency because Runic already has usage ledger + provider cost paths.
103
-
104
- Implementation sketch:
105
- - Extend `Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift` with simulation inputs/outputs.
106
- - Add policy models in `Sources/RunicCore/Performance/PerformanceModels.swift`.
107
- - Add menu card in `Sources/Runic/Views/Menu/` (new `RoutingAdvisorMenuView.swift`).
108
-
109
- ### B) Reliability Policy Score (Fallback/Retry/Cooldown quality)
110
-
111
- What:
112
- - Per provider/project score for policy robustness:
113
- - failure-rate trends
114
- - fallback coverage
115
- - timeout/retry efficiency
116
- - observed "hard fail with no fallback" incidents
117
-
118
- Why now:
119
- - Practical baseline recommended by LLMRouterBench-style findings.
120
- - Matches LiteLLM/Helicone operational patterns.
121
-
122
- Implementation sketch:
123
- - Persist policy signals in `Sources/RunicCore/Performance/PerformanceStorageImpl.swift`.
124
- - Add scoring service in `Sources/RunicCore/Performance/`.
125
- - Render in `Sources/Runic/Views/Menu/AlertsMenuView.swift` and a dedicated card.
126
-
127
- ### C) Eval-Linked Spend Analytics
128
-
129
- What:
130
- - Ingest eval outputs (Promptfoo/OpenAI Evals style) and align with cost/usage windows.
131
- - Show "quality down + spend up" and "quality stable + cost down" events.
132
-
133
- Why now:
134
- - Moves Runic from pure accounting to decision support.
135
-
136
- Implementation sketch:
137
- - New ingest model (JSON/YAML adapter) in `Sources/RunicCore/`.
138
- - Cross-join with provider/day/project aggregates in usage ledger pipeline.
139
- - Add view in `Sources/Runic/Views/Performance/PerformanceDashboardView.swift`.
140
-
141
- ### D) Semantic Cache Opportunity Analyzer
142
-
143
- What:
144
- - Detect repeated or near-duplicate prompt patterns and estimate avoidable token cost.
145
- - Flag cache-friendly workflows per project.
146
-
147
- Why now:
148
- - Backed by vCache/generative-caching direction and gateway practices.
149
-
150
- Implementation sketch:
151
- - Add prompt fingerprint stats in usage ledger models.
152
- - Keep first version lightweight: hash + normalized prompt-template fingerprint, not full semantic embeddings.
153
- - UI card in menu + performance dashboard.
154
-
155
- ### E) OpenTelemetry GenAI Export
156
-
157
- What:
158
- - Export Runic telemetry in OTel GenAI-compatible fields.
159
- - Include provider, request model, response model, operation, and latency buckets.
160
-
161
- Why now:
162
- - Standardization unlocks external dashboards and enterprise integrations.
163
-
164
- Implementation sketch:
165
- - Add mapper in `Sources/RunicCore/Logging/` or `Sources/RunicCore/Performance/`.
166
- - Optional sink to JSON/OTLP compatible format.
167
-
168
- ### F) MCP Tool and Prompt Analytics
169
-
170
- What:
171
- - Track MCP tool-call rates, latency, error classes, and prompt-template success trends.
172
- - Show per-project MCP "tool reliability heatmap."
173
-
174
- Why now:
175
- - Agentic workflows are increasingly MCP-centric.
176
-
177
- Implementation sketch:
178
- - Add MCP event model in `RunicCore`.
179
- - New menu views under `Sources/Runic/Views/Menu/`.
180
-
181
- ## Data Product Improvements (directly for your current concern)
182
-
183
- Your concern:
184
- - "Insights do not show actual project names reliably."
185
-
186
- Likely core issue:
187
- - Project identity is fragmented across providers/log formats (`projectID` present but often not normalized).
188
-
189
- Concrete fixes:
190
- 1. Add project identity normalization pipeline:
191
- - Canonical key = provider + normalized project slug + optional workspace path hash.
192
- - Keep alias table for renamed projects.
193
-
194
- 2. Improve extraction heuristics:
195
- - Parse project name from known fields and fallback to path/repo hints.
196
- - Add confidence score per inferred project name.
197
-
198
- 3. Preserve provenance:
199
- - Store source field map that produced each project name, to debug mismatches quickly.
200
-
201
- 4. UI safety:
202
- - Show "Unknown project" only when confidence is low, with hover details and quick relabel action.
203
-
204
- Suggested file touchpoints:
205
- - `Sources/RunicCore/UsageLedger/UsageLedgerModels.swift`
206
- - `Sources/RunicCore/UsageLedger/UsageLedgerAggregator.swift`
207
- - `Sources/Runic/Core/Stores/UsageStore.swift`
208
- - `Sources/Runic/Views/Menu/ProjectBreakdownMenuView.swift`
209
-
210
- ## Prioritized Roadmap
211
-
212
- ### Now (1-2 weeks)
213
-
214
- 1. Project identity normalization and project-name confidence
215
- 2. Reliability Policy Score (fallback/retry/cooldown diagnostics)
216
- 3. Routing Advisor v1 (baseline simulation only, no ML training)
217
-
218
- Acceptance criteria:
219
- - Insights show stable project names across refresh cycles.
220
- - At least one actionable routing recommendation per active project.
221
- - Policy score visible for each enabled provider.
222
-
223
- ### Next (2-4 weeks)
224
-
225
- 1. Eval-Linked Spend Analytics (Promptfoo/OpenAI Evals import)
226
- 2. Semantic Cache Opportunity Analyzer (fingerprint-based)
227
- 3. OTel GenAI export (file or endpoint sink)
228
-
229
- Acceptance criteria:
230
- - Can correlate eval deltas with cost deltas per project and time window.
231
- - Can quantify estimated avoidable spend from repeated prompt patterns.
232
- - External tools can ingest standardized Runic telemetry fields.
233
-
234
- ### Later (4+ weeks)
235
-
236
- 1. MCP tool/prompt analytics and heatmaps
237
- 2. Advanced routing policies (bandit/learned router plugins)
238
- 3. Team-level governance pack (policy presets, compliance reports)
239
-
240
- Acceptance criteria:
241
- - MCP-heavy teams can see tool reliability and prompt effectiveness trends.
242
- - Multi-provider routing decisions can be tuned with measurable outcomes.
243
-
244
- ## Notes on methodology
245
-
246
- - Preference was given to primary sources (paper pages, official repos/docs).
247
- - Claims are interpreted conservatively; recommendations emphasize robust baselines first.
248
- - Research intent here is product-directional, not a claim of guaranteed gain in every workload.