mirror of
https://github.com/stablyai/orca.git
synced 2026-10-02 00:02:05 +00:00
* feat(usage): add Muse Code local usage provider Scan Muse session logs (including subagent logs, which hold usage the parent log does not) for model_completed token events and surface them as a fourth local usage provider: shared scan worker, persisted per-file cache reused by mtime/size, cross-log dedupe, Stats tab, and Usage Overview integration. Muse logs carry no price, so the provider reports tokens only. * fix(usage): name Muse in Stats & Usage copy; skip partial-cost warning when nothing is priced * fix(usage): surface unreadable Muse sessions root; name Muse in remaining Stats & Usage copy * fix(usage): count distinct same-content Muse records within one log
30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
import type { IpcRenderer } from 'electron'
|
|
import type { PreloadApi } from './api-types'
|
|
|
|
type UsageProviderApiKey = 'claudeUsage' | 'codexUsage' | 'openCodeUsage' | 'museUsage'
|
|
type UsageProviderApi = PreloadApi[UsageProviderApiKey]
|
|
type UsageRangeArgs = { scope: string; range: string }
|
|
|
|
export function createUsageProviderApi<Key extends UsageProviderApiKey>(
|
|
ipc: Pick<IpcRenderer, 'invoke'>,
|
|
prefix: Key
|
|
): PreloadApi[Key]
|
|
export function createUsageProviderApi(
|
|
ipc: Pick<IpcRenderer, 'invoke'>,
|
|
prefix: UsageProviderApiKey
|
|
): UsageProviderApi {
|
|
return {
|
|
getScanState: () => ipc.invoke(`${prefix}:getScanState`),
|
|
setEnabled: (args: { enabled: boolean }) => ipc.invoke(`${prefix}:setEnabled`, args),
|
|
refresh: (args?: { force?: boolean }) => ipc.invoke(`${prefix}:refresh`, args),
|
|
getSnapshot: (args: UsageRangeArgs & { limit?: number }) =>
|
|
ipc.invoke(`${prefix}:getSnapshot`, args),
|
|
getSummary: (args: UsageRangeArgs) => ipc.invoke(`${prefix}:getSummary`, args),
|
|
getDaily: (args: UsageRangeArgs) => ipc.invoke(`${prefix}:getDaily`, args),
|
|
getBreakdown: (args: UsageRangeArgs & { kind: string }) =>
|
|
ipc.invoke(`${prefix}:getBreakdown`, args),
|
|
getRecentSessions: (args: UsageRangeArgs & { limit?: number }) =>
|
|
ipc.invoke(`${prefix}:getRecentSessions`, args)
|
|
}
|
|
}
|