@tokscale/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +17 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +162 -0
- package/dist/auth.js.map +1 -0
- package/dist/claudecode.d.ts +39 -0
- package/dist/claudecode.d.ts.map +1 -0
- package/dist/claudecode.js +375 -0
- package/dist/claudecode.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +761 -0
- package/dist/cli.js.map +1 -0
- package/dist/credentials.d.ts +36 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +109 -0
- package/dist/credentials.js.map +1 -0
- package/dist/cursor.d.ts +132 -0
- package/dist/cursor.d.ts.map +1 -0
- package/dist/cursor.js +432 -0
- package/dist/cursor.js.map +1 -0
- package/dist/gemini.d.ts +36 -0
- package/dist/gemini.d.ts.map +1 -0
- package/dist/gemini.js +125 -0
- package/dist/gemini.js.map +1 -0
- package/dist/graph-types.d.ts +152 -0
- package/dist/graph-types.d.ts.map +1 -0
- package/dist/graph-types.js +6 -0
- package/dist/graph-types.js.map +1 -0
- package/dist/graph.d.ts +29 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +383 -0
- package/dist/graph.js.map +1 -0
- package/dist/native-runner.d.ts +12 -0
- package/dist/native-runner.d.ts.map +1 -0
- package/dist/native-runner.js +89 -0
- package/dist/native-runner.js.map +1 -0
- package/dist/native.d.ts +116 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +359 -0
- package/dist/native.js.map +1 -0
- package/dist/opencode.d.ts +40 -0
- package/dist/opencode.d.ts.map +1 -0
- package/dist/opencode.js +69 -0
- package/dist/opencode.js.map +1 -0
- package/dist/pricing.d.ts +58 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +232 -0
- package/dist/pricing.js.map +1 -0
- package/dist/sessions/claudecode.d.ts +8 -0
- package/dist/sessions/claudecode.d.ts.map +1 -0
- package/dist/sessions/claudecode.js +84 -0
- package/dist/sessions/claudecode.js.map +1 -0
- package/dist/sessions/codex.d.ts +8 -0
- package/dist/sessions/codex.d.ts.map +1 -0
- package/dist/sessions/codex.js +158 -0
- package/dist/sessions/codex.js.map +1 -0
- package/dist/sessions/gemini.d.ts +8 -0
- package/dist/sessions/gemini.d.ts.map +1 -0
- package/dist/sessions/gemini.js +66 -0
- package/dist/sessions/gemini.js.map +1 -0
- package/dist/sessions/index.d.ts +32 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +96 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/opencode.d.ts +8 -0
- package/dist/sessions/opencode.d.ts.map +1 -0
- package/dist/sessions/opencode.js +54 -0
- package/dist/sessions/opencode.js.map +1 -0
- package/dist/sessions/reports.d.ts +58 -0
- package/dist/sessions/reports.d.ts.map +1 -0
- package/dist/sessions/reports.js +337 -0
- package/dist/sessions/reports.js.map +1 -0
- package/dist/sessions/types.d.ts +30 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +29 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/spinner.d.ts +75 -0
- package/dist/spinner.d.ts.map +1 -0
- package/dist/spinner.js +203 -0
- package/dist/spinner.js.map +1 -0
- package/dist/submit.d.ts +21 -0
- package/dist/submit.d.ts.map +1 -0
- package/dist/submit.js +128 -0
- package/dist/submit.js.map +1 -0
- package/dist/table.d.ts +42 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +181 -0
- package/dist/table.js.map +1 -0
- package/dist/test-selection.d.ts +2 -0
- package/dist/test-selection.d.ts.map +1 -0
- package/dist/test-selection.jsx +32 -0
- package/dist/test-selection.jsx.map +1 -0
- package/dist/tui/App.d.ts +4 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +167 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/App.jsx +281 -0
- package/dist/tui/App.jsx.map +1 -0
- package/dist/tui/components/BarChart.d.ts +17 -0
- package/dist/tui/components/BarChart.d.ts.map +1 -0
- package/dist/tui/components/BarChart.js +63 -0
- package/dist/tui/components/BarChart.js.map +1 -0
- package/dist/tui/components/BarChart.jsx +163 -0
- package/dist/tui/components/BarChart.jsx.map +1 -0
- package/dist/tui/components/DailyView.d.ts +13 -0
- package/dist/tui/components/DailyView.d.ts.map +1 -0
- package/dist/tui/components/DailyView.js +32 -0
- package/dist/tui/components/DailyView.js.map +1 -0
- package/dist/tui/components/DailyView.jsx +84 -0
- package/dist/tui/components/DailyView.jsx.map +1 -0
- package/dist/tui/components/DateBreakdownPanel.d.ts +7 -0
- package/dist/tui/components/DateBreakdownPanel.d.ts.map +1 -0
- package/dist/tui/components/DateBreakdownPanel.jsx +61 -0
- package/dist/tui/components/DateBreakdownPanel.jsx.map +1 -0
- package/dist/tui/components/Footer.d.ts +26 -0
- package/dist/tui/components/Footer.d.ts.map +1 -0
- package/dist/tui/components/Footer.js +15 -0
- package/dist/tui/components/Footer.js.map +1 -0
- package/dist/tui/components/Footer.jsx +158 -0
- package/dist/tui/components/Footer.jsx.map +1 -0
- package/dist/tui/components/Header.d.ts +9 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +12 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/Header.jsx +38 -0
- package/dist/tui/components/Header.jsx.map +1 -0
- package/dist/tui/components/Legend.d.ts +7 -0
- package/dist/tui/components/Legend.d.ts.map +1 -0
- package/dist/tui/components/Legend.js +9 -0
- package/dist/tui/components/Legend.js.map +1 -0
- package/dist/tui/components/Legend.jsx +27 -0
- package/dist/tui/components/Legend.jsx.map +1 -0
- package/dist/tui/components/LoadingSpinner.d.ts +8 -0
- package/dist/tui/components/LoadingSpinner.d.ts.map +1 -0
- package/dist/tui/components/LoadingSpinner.jsx +62 -0
- package/dist/tui/components/LoadingSpinner.jsx.map +1 -0
- package/dist/tui/components/ModelListItem.d.ts +11 -0
- package/dist/tui/components/ModelListItem.d.ts.map +1 -0
- package/dist/tui/components/ModelListItem.js +18 -0
- package/dist/tui/components/ModelListItem.js.map +1 -0
- package/dist/tui/components/ModelListItem.jsx +17 -0
- package/dist/tui/components/ModelListItem.jsx.map +1 -0
- package/dist/tui/components/ModelRow.d.ts +13 -0
- package/dist/tui/components/ModelRow.d.ts.map +1 -0
- package/dist/tui/components/ModelRow.jsx +28 -0
- package/dist/tui/components/ModelRow.jsx.map +1 -0
- package/dist/tui/components/ModelView.d.ts +13 -0
- package/dist/tui/components/ModelView.d.ts.map +1 -0
- package/dist/tui/components/ModelView.js +34 -0
- package/dist/tui/components/ModelView.js.map +1 -0
- package/dist/tui/components/ModelView.jsx +111 -0
- package/dist/tui/components/ModelView.jsx.map +1 -0
- package/dist/tui/components/OverviewView.d.ts +14 -0
- package/dist/tui/components/OverviewView.d.ts.map +1 -0
- package/dist/tui/components/OverviewView.js +24 -0
- package/dist/tui/components/OverviewView.js.map +1 -0
- package/dist/tui/components/OverviewView.jsx +79 -0
- package/dist/tui/components/OverviewView.jsx.map +1 -0
- package/dist/tui/components/StatsView.d.ts +12 -0
- package/dist/tui/components/StatsView.d.ts.map +1 -0
- package/dist/tui/components/StatsView.js +43 -0
- package/dist/tui/components/StatsView.js.map +1 -0
- package/dist/tui/components/StatsView.jsx +180 -0
- package/dist/tui/components/StatsView.jsx.map +1 -0
- package/dist/tui/components/TokenBreakdown.d.ts +14 -0
- package/dist/tui/components/TokenBreakdown.d.ts.map +1 -0
- package/dist/tui/components/TokenBreakdown.jsx +27 -0
- package/dist/tui/components/TokenBreakdown.jsx.map +1 -0
- package/dist/tui/components/index.d.ts +16 -0
- package/dist/tui/components/index.d.ts.map +1 -0
- package/dist/tui/components/index.js +13 -0
- package/dist/tui/components/index.js.map +1 -0
- package/dist/tui/config/settings.d.ts +12 -0
- package/dist/tui/config/settings.d.ts.map +1 -0
- package/dist/tui/config/settings.js +105 -0
- package/dist/tui/config/settings.js.map +1 -0
- package/dist/tui/config/themes.d.ts +15 -0
- package/dist/tui/config/themes.d.ts.map +1 -0
- package/dist/tui/config/themes.js +82 -0
- package/dist/tui/config/themes.js.map +1 -0
- package/dist/tui/hooks/useData.d.ts +17 -0
- package/dist/tui/hooks/useData.d.ts.map +1 -0
- package/dist/tui/hooks/useData.js +430 -0
- package/dist/tui/hooks/useData.js.map +1 -0
- package/dist/tui/index.d.ts +4 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/index.jsx +35 -0
- package/dist/tui/index.jsx.map +1 -0
- package/dist/tui/types/index.d.ts +133 -0
- package/dist/tui/types/index.d.ts.map +1 -0
- package/dist/tui/types/index.js +21 -0
- package/dist/tui/types/index.js.map +1 -0
- package/dist/tui/utils/cleanup.d.ts +22 -0
- package/dist/tui/utils/cleanup.d.ts.map +1 -0
- package/dist/tui/utils/cleanup.js +59 -0
- package/dist/tui/utils/cleanup.js.map +1 -0
- package/dist/tui/utils/colors.d.ts +18 -0
- package/dist/tui/utils/colors.d.ts.map +1 -0
- package/dist/tui/utils/colors.js +55 -0
- package/dist/tui/utils/colors.js.map +1 -0
- package/dist/tui/utils/format.d.ts +7 -0
- package/dist/tui/utils/format.d.ts.map +1 -0
- package/dist/tui/utils/format.js +45 -0
- package/dist/tui/utils/format.js.map +1 -0
- package/dist/tui/utils/responsive.d.ts +5 -0
- package/dist/tui/utils/responsive.d.ts.map +1 -0
- package/dist/tui/utils/responsive.js +5 -0
- package/dist/tui/utils/responsive.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/sessions/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI session parser
|
|
3
|
+
* Reads from ~/.gemini/tmp/{projectHash}/chats/session-*.json
|
|
4
|
+
*/
|
|
5
|
+
import { type UnifiedMessage } from "./types.js";
|
|
6
|
+
export declare function getGeminiBasePath(): string;
|
|
7
|
+
export declare function parseGeminiMessages(): UnifiedMessage[];
|
|
8
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/sessions/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAwB,KAAK,cAAc,EAAuB,MAAM,YAAY,CAAC;AA0B5F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAqEtD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI session parser
|
|
3
|
+
* Reads from ~/.gemini/tmp/{projectHash}/chats/session-*.json
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import * as os from "node:os";
|
|
8
|
+
import { createUnifiedMessage } from "./types.js";
|
|
9
|
+
export function getGeminiBasePath() {
|
|
10
|
+
return path.join(os.homedir(), ".gemini");
|
|
11
|
+
}
|
|
12
|
+
export function parseGeminiMessages() {
|
|
13
|
+
const basePath = getGeminiBasePath();
|
|
14
|
+
const tmpPath = path.join(basePath, "tmp");
|
|
15
|
+
if (!fs.existsSync(tmpPath)) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const messages = [];
|
|
19
|
+
try {
|
|
20
|
+
// Find all project directories
|
|
21
|
+
const projectDirs = fs
|
|
22
|
+
.readdirSync(tmpPath, { withFileTypes: true })
|
|
23
|
+
.filter((d) => d.isDirectory())
|
|
24
|
+
.map((d) => path.join(tmpPath, d.name));
|
|
25
|
+
for (const projectDir of projectDirs) {
|
|
26
|
+
const chatsDir = path.join(projectDir, "chats");
|
|
27
|
+
if (!fs.existsSync(chatsDir))
|
|
28
|
+
continue;
|
|
29
|
+
// Find all session JSON files
|
|
30
|
+
const sessionFiles = fs
|
|
31
|
+
.readdirSync(chatsDir)
|
|
32
|
+
.filter((f) => f.startsWith("session-") && f.endsWith(".json"));
|
|
33
|
+
for (const sessionFile of sessionFiles) {
|
|
34
|
+
try {
|
|
35
|
+
const content = fs.readFileSync(path.join(chatsDir, sessionFile), "utf-8");
|
|
36
|
+
const session = JSON.parse(content);
|
|
37
|
+
for (const msg of session.messages) {
|
|
38
|
+
// Only process gemini messages with token data and timestamp
|
|
39
|
+
if (msg.type !== "gemini" || !msg.tokens || !msg.model || !msg.timestamp)
|
|
40
|
+
continue;
|
|
41
|
+
const timestamp = new Date(msg.timestamp).getTime();
|
|
42
|
+
// Skip invalid timestamps
|
|
43
|
+
if (isNaN(timestamp))
|
|
44
|
+
continue;
|
|
45
|
+
const tokens = {
|
|
46
|
+
input: msg.tokens.input || 0,
|
|
47
|
+
output: msg.tokens.output || 0,
|
|
48
|
+
cacheRead: msg.tokens.cached || 0,
|
|
49
|
+
cacheWrite: 0, // Gemini doesn't track cache write
|
|
50
|
+
reasoning: msg.tokens.thoughts || 0,
|
|
51
|
+
};
|
|
52
|
+
messages.push(createUnifiedMessage("gemini", msg.model, "google", session.sessionId, timestamp, tokens));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Skip malformed files
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Skip inaccessible directories
|
|
63
|
+
}
|
|
64
|
+
return messages;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/sessions/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session parsers for different AI coding assistant formats
|
|
3
|
+
*
|
|
4
|
+
* This module provides TypeScript fallback parsers that match the Rust
|
|
5
|
+
* implementations in packages/core/src/sessions/. Used when native module
|
|
6
|
+
* is not available.
|
|
7
|
+
*/
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export { parseOpenCodeMessages, getOpenCodeStoragePath } from "./opencode.js";
|
|
10
|
+
export { parseClaudeCodeMessages, getClaudeCodeProjectsPath } from "./claudecode.js";
|
|
11
|
+
export { parseCodexMessages, getCodexSessionsPath } from "./codex.js";
|
|
12
|
+
export { parseGeminiMessages, getGeminiBasePath } from "./gemini.js";
|
|
13
|
+
import type { UnifiedMessage, SourceType } from "./types.js";
|
|
14
|
+
export interface ParsedMessages {
|
|
15
|
+
messages: UnifiedMessage[];
|
|
16
|
+
opencodeCount: number;
|
|
17
|
+
claudeCount: number;
|
|
18
|
+
codexCount: number;
|
|
19
|
+
geminiCount: number;
|
|
20
|
+
processingTimeMs: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ParseOptions {
|
|
23
|
+
sources?: SourceType[];
|
|
24
|
+
since?: string;
|
|
25
|
+
until?: string;
|
|
26
|
+
year?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse all local session sources using TypeScript fallback parsers
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseLocalSources(options?: ParseOptions): ParsedMessages;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAwBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,YAAiB,GAAG,cAAc,CAgE5E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session parsers for different AI coding assistant formats
|
|
3
|
+
*
|
|
4
|
+
* This module provides TypeScript fallback parsers that match the Rust
|
|
5
|
+
* implementations in packages/core/src/sessions/. Used when native module
|
|
6
|
+
* is not available.
|
|
7
|
+
*/
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
export { parseOpenCodeMessages, getOpenCodeStoragePath } from "./opencode.js";
|
|
10
|
+
export { parseClaudeCodeMessages, getClaudeCodeProjectsPath } from "./claudecode.js";
|
|
11
|
+
export { parseCodexMessages, getCodexSessionsPath } from "./codex.js";
|
|
12
|
+
export { parseGeminiMessages, getGeminiBasePath } from "./gemini.js";
|
|
13
|
+
import { parseOpenCodeMessages } from "./opencode.js";
|
|
14
|
+
import { parseClaudeCodeMessages } from "./claudecode.js";
|
|
15
|
+
import { parseCodexMessages } from "./codex.js";
|
|
16
|
+
import { parseGeminiMessages } from "./gemini.js";
|
|
17
|
+
/**
|
|
18
|
+
* Check if a message date is within the filter range
|
|
19
|
+
*/
|
|
20
|
+
function isDateInRange(date, since, until, year) {
|
|
21
|
+
// Year filter
|
|
22
|
+
if (year && !date.startsWith(year)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// Since filter
|
|
26
|
+
if (since && date < since) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Until filter
|
|
30
|
+
if (until && date > until) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse all local session sources using TypeScript fallback parsers
|
|
37
|
+
*/
|
|
38
|
+
export function parseLocalSources(options = {}) {
|
|
39
|
+
const startTime = performance.now();
|
|
40
|
+
const sources = options.sources;
|
|
41
|
+
const allMessages = [];
|
|
42
|
+
let opencodeCount = 0;
|
|
43
|
+
let claudeCount = 0;
|
|
44
|
+
let codexCount = 0;
|
|
45
|
+
let geminiCount = 0;
|
|
46
|
+
// Parse OpenCode
|
|
47
|
+
if (!sources || sources.includes("opencode")) {
|
|
48
|
+
const messages = parseOpenCodeMessages();
|
|
49
|
+
for (const msg of messages) {
|
|
50
|
+
if (isDateInRange(msg.date, options.since, options.until, options.year)) {
|
|
51
|
+
allMessages.push(msg);
|
|
52
|
+
opencodeCount++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Parse Claude Code
|
|
57
|
+
if (!sources || sources.includes("claude")) {
|
|
58
|
+
const messages = parseClaudeCodeMessages();
|
|
59
|
+
for (const msg of messages) {
|
|
60
|
+
if (isDateInRange(msg.date, options.since, options.until, options.year)) {
|
|
61
|
+
allMessages.push(msg);
|
|
62
|
+
claudeCount++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Parse Codex
|
|
67
|
+
if (!sources || sources.includes("codex")) {
|
|
68
|
+
const messages = parseCodexMessages();
|
|
69
|
+
for (const msg of messages) {
|
|
70
|
+
if (isDateInRange(msg.date, options.since, options.until, options.year)) {
|
|
71
|
+
allMessages.push(msg);
|
|
72
|
+
codexCount++;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Parse Gemini
|
|
77
|
+
if (!sources || sources.includes("gemini")) {
|
|
78
|
+
const messages = parseGeminiMessages();
|
|
79
|
+
for (const msg of messages) {
|
|
80
|
+
if (isDateInRange(msg.date, options.since, options.until, options.year)) {
|
|
81
|
+
allMessages.push(msg);
|
|
82
|
+
geminiCount++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const processingTimeMs = performance.now() - startTime;
|
|
87
|
+
return {
|
|
88
|
+
messages: allMessages,
|
|
89
|
+
opencodeCount,
|
|
90
|
+
claudeCount,
|
|
91
|
+
codexCount,
|
|
92
|
+
geminiCount,
|
|
93
|
+
processingTimeMs,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode session parser
|
|
3
|
+
* Reads from ~/.local/share/opencode/storage/message/
|
|
4
|
+
*/
|
|
5
|
+
import { type UnifiedMessage } from "./types.js";
|
|
6
|
+
export declare function getOpenCodeStoragePath(): string;
|
|
7
|
+
export declare function parseOpenCodeMessages(): UnifiedMessage[];
|
|
8
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/sessions/opencode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAwB,KAAK,cAAc,EAAuB,MAAM,YAAY,CAAC;AAwB5F,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED,wBAAgB,qBAAqB,IAAI,cAAc,EAAE,CAwDxD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode session parser
|
|
3
|
+
* Reads from ~/.local/share/opencode/storage/message/
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import * as os from "node:os";
|
|
8
|
+
import { createUnifiedMessage } from "./types.js";
|
|
9
|
+
export function getOpenCodeStoragePath() {
|
|
10
|
+
const dataHome = process.env.XDG_DATA_HOME || path.join(os.homedir(), ".local", "share");
|
|
11
|
+
return path.join(dataHome, "opencode", "storage");
|
|
12
|
+
}
|
|
13
|
+
export function parseOpenCodeMessages() {
|
|
14
|
+
const storagePath = getOpenCodeStoragePath();
|
|
15
|
+
const messagePath = path.join(storagePath, "message");
|
|
16
|
+
if (!fs.existsSync(messagePath)) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const messages = [];
|
|
20
|
+
try {
|
|
21
|
+
const sessionDirs = fs
|
|
22
|
+
.readdirSync(messagePath)
|
|
23
|
+
.map((dir) => path.join(messagePath, dir))
|
|
24
|
+
.filter((dir) => fs.statSync(dir).isDirectory());
|
|
25
|
+
for (const sessionDir of sessionDirs) {
|
|
26
|
+
const sessionId = path.basename(sessionDir);
|
|
27
|
+
const files = fs.readdirSync(sessionDir).filter((f) => f.endsWith(".json"));
|
|
28
|
+
for (const file of files) {
|
|
29
|
+
try {
|
|
30
|
+
const content = fs.readFileSync(path.join(sessionDir, file), "utf-8");
|
|
31
|
+
const msg = JSON.parse(content);
|
|
32
|
+
if (msg.role === "assistant" && msg.tokens && msg.modelID) {
|
|
33
|
+
const tokens = {
|
|
34
|
+
input: msg.tokens.input || 0,
|
|
35
|
+
output: msg.tokens.output || 0,
|
|
36
|
+
cacheRead: msg.tokens.cache?.read || 0,
|
|
37
|
+
cacheWrite: msg.tokens.cache?.write || 0,
|
|
38
|
+
reasoning: msg.tokens.reasoning || 0,
|
|
39
|
+
};
|
|
40
|
+
messages.push(createUnifiedMessage("opencode", msg.modelID, msg.providerID || "unknown", sessionId, msg.time.created, tokens, msg.cost || 0));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Skip malformed files
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Skip inaccessible directories
|
|
51
|
+
}
|
|
52
|
+
return messages;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/sessions/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript fallback report generators
|
|
3
|
+
*
|
|
4
|
+
* Used when native Rust module is not available.
|
|
5
|
+
*/
|
|
6
|
+
import type { UnifiedMessage } from "./types.js";
|
|
7
|
+
import type { PricingEntry } from "../pricing.js";
|
|
8
|
+
import type { TokenContributionData } from "../graph-types.js";
|
|
9
|
+
export interface ModelUsage {
|
|
10
|
+
source: string;
|
|
11
|
+
model: string;
|
|
12
|
+
provider: string;
|
|
13
|
+
input: number;
|
|
14
|
+
output: number;
|
|
15
|
+
cacheRead: number;
|
|
16
|
+
cacheWrite: number;
|
|
17
|
+
reasoning: number;
|
|
18
|
+
messageCount: number;
|
|
19
|
+
cost: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ModelReport {
|
|
22
|
+
entries: ModelUsage[];
|
|
23
|
+
totalInput: number;
|
|
24
|
+
totalOutput: number;
|
|
25
|
+
totalCacheRead: number;
|
|
26
|
+
totalCacheWrite: number;
|
|
27
|
+
totalMessages: number;
|
|
28
|
+
totalCost: number;
|
|
29
|
+
processingTimeMs: number;
|
|
30
|
+
}
|
|
31
|
+
export interface MonthlyUsage {
|
|
32
|
+
month: string;
|
|
33
|
+
models: string[];
|
|
34
|
+
input: number;
|
|
35
|
+
output: number;
|
|
36
|
+
cacheRead: number;
|
|
37
|
+
cacheWrite: number;
|
|
38
|
+
messageCount: number;
|
|
39
|
+
cost: number;
|
|
40
|
+
}
|
|
41
|
+
export interface MonthlyReport {
|
|
42
|
+
entries: MonthlyUsage[];
|
|
43
|
+
totalCost: number;
|
|
44
|
+
processingTimeMs: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate model report from parsed messages
|
|
48
|
+
*/
|
|
49
|
+
export declare function generateModelReport(messages: UnifiedMessage[], pricing: PricingEntry[], startTime: number): ModelReport;
|
|
50
|
+
/**
|
|
51
|
+
* Generate monthly report from parsed messages
|
|
52
|
+
*/
|
|
53
|
+
export declare function generateMonthlyReport(messages: UnifiedMessage[], pricing: PricingEntry[], startTime: number): MonthlyReport;
|
|
54
|
+
/**
|
|
55
|
+
* Generate graph data from parsed messages
|
|
56
|
+
*/
|
|
57
|
+
export declare function generateGraphData(messages: UnifiedMessage[], pricing: PricingEntry[], startTime: number): TokenContributionData;
|
|
58
|
+
//# sourceMappingURL=reports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/sessions/reports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA8B,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AA8ED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,WAAW,CA6Db;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,aAAa,CAkEf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAkMvB"}
|