@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.
Files changed (211) hide show
  1. package/dist/auth.d.ts +17 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +162 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/claudecode.d.ts +39 -0
  6. package/dist/claudecode.d.ts.map +1 -0
  7. package/dist/claudecode.js +375 -0
  8. package/dist/claudecode.js.map +1 -0
  9. package/dist/cli.d.ts +9 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +761 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/credentials.d.ts +36 -0
  14. package/dist/credentials.d.ts.map +1 -0
  15. package/dist/credentials.js +109 -0
  16. package/dist/credentials.js.map +1 -0
  17. package/dist/cursor.d.ts +132 -0
  18. package/dist/cursor.d.ts.map +1 -0
  19. package/dist/cursor.js +432 -0
  20. package/dist/cursor.js.map +1 -0
  21. package/dist/gemini.d.ts +36 -0
  22. package/dist/gemini.d.ts.map +1 -0
  23. package/dist/gemini.js +125 -0
  24. package/dist/gemini.js.map +1 -0
  25. package/dist/graph-types.d.ts +152 -0
  26. package/dist/graph-types.d.ts.map +1 -0
  27. package/dist/graph-types.js +6 -0
  28. package/dist/graph-types.js.map +1 -0
  29. package/dist/graph.d.ts +29 -0
  30. package/dist/graph.d.ts.map +1 -0
  31. package/dist/graph.js +383 -0
  32. package/dist/graph.js.map +1 -0
  33. package/dist/native-runner.d.ts +12 -0
  34. package/dist/native-runner.d.ts.map +1 -0
  35. package/dist/native-runner.js +89 -0
  36. package/dist/native-runner.js.map +1 -0
  37. package/dist/native.d.ts +116 -0
  38. package/dist/native.d.ts.map +1 -0
  39. package/dist/native.js +359 -0
  40. package/dist/native.js.map +1 -0
  41. package/dist/opencode.d.ts +40 -0
  42. package/dist/opencode.d.ts.map +1 -0
  43. package/dist/opencode.js +69 -0
  44. package/dist/opencode.js.map +1 -0
  45. package/dist/pricing.d.ts +58 -0
  46. package/dist/pricing.d.ts.map +1 -0
  47. package/dist/pricing.js +232 -0
  48. package/dist/pricing.js.map +1 -0
  49. package/dist/sessions/claudecode.d.ts +8 -0
  50. package/dist/sessions/claudecode.d.ts.map +1 -0
  51. package/dist/sessions/claudecode.js +84 -0
  52. package/dist/sessions/claudecode.js.map +1 -0
  53. package/dist/sessions/codex.d.ts +8 -0
  54. package/dist/sessions/codex.d.ts.map +1 -0
  55. package/dist/sessions/codex.js +158 -0
  56. package/dist/sessions/codex.js.map +1 -0
  57. package/dist/sessions/gemini.d.ts +8 -0
  58. package/dist/sessions/gemini.d.ts.map +1 -0
  59. package/dist/sessions/gemini.js +66 -0
  60. package/dist/sessions/gemini.js.map +1 -0
  61. package/dist/sessions/index.d.ts +32 -0
  62. package/dist/sessions/index.d.ts.map +1 -0
  63. package/dist/sessions/index.js +96 -0
  64. package/dist/sessions/index.js.map +1 -0
  65. package/dist/sessions/opencode.d.ts +8 -0
  66. package/dist/sessions/opencode.d.ts.map +1 -0
  67. package/dist/sessions/opencode.js +54 -0
  68. package/dist/sessions/opencode.js.map +1 -0
  69. package/dist/sessions/reports.d.ts +58 -0
  70. package/dist/sessions/reports.d.ts.map +1 -0
  71. package/dist/sessions/reports.js +337 -0
  72. package/dist/sessions/reports.js.map +1 -0
  73. package/dist/sessions/types.d.ts +30 -0
  74. package/dist/sessions/types.d.ts.map +1 -0
  75. package/dist/sessions/types.js +29 -0
  76. package/dist/sessions/types.js.map +1 -0
  77. package/dist/spinner.d.ts +75 -0
  78. package/dist/spinner.d.ts.map +1 -0
  79. package/dist/spinner.js +203 -0
  80. package/dist/spinner.js.map +1 -0
  81. package/dist/submit.d.ts +21 -0
  82. package/dist/submit.d.ts.map +1 -0
  83. package/dist/submit.js +128 -0
  84. package/dist/submit.js.map +1 -0
  85. package/dist/table.d.ts +42 -0
  86. package/dist/table.d.ts.map +1 -0
  87. package/dist/table.js +181 -0
  88. package/dist/table.js.map +1 -0
  89. package/dist/test-selection.d.ts +2 -0
  90. package/dist/test-selection.d.ts.map +1 -0
  91. package/dist/test-selection.jsx +32 -0
  92. package/dist/test-selection.jsx.map +1 -0
  93. package/dist/tui/App.d.ts +4 -0
  94. package/dist/tui/App.d.ts.map +1 -0
  95. package/dist/tui/App.js +167 -0
  96. package/dist/tui/App.js.map +1 -0
  97. package/dist/tui/App.jsx +281 -0
  98. package/dist/tui/App.jsx.map +1 -0
  99. package/dist/tui/components/BarChart.d.ts +17 -0
  100. package/dist/tui/components/BarChart.d.ts.map +1 -0
  101. package/dist/tui/components/BarChart.js +63 -0
  102. package/dist/tui/components/BarChart.js.map +1 -0
  103. package/dist/tui/components/BarChart.jsx +163 -0
  104. package/dist/tui/components/BarChart.jsx.map +1 -0
  105. package/dist/tui/components/DailyView.d.ts +13 -0
  106. package/dist/tui/components/DailyView.d.ts.map +1 -0
  107. package/dist/tui/components/DailyView.js +32 -0
  108. package/dist/tui/components/DailyView.js.map +1 -0
  109. package/dist/tui/components/DailyView.jsx +84 -0
  110. package/dist/tui/components/DailyView.jsx.map +1 -0
  111. package/dist/tui/components/DateBreakdownPanel.d.ts +7 -0
  112. package/dist/tui/components/DateBreakdownPanel.d.ts.map +1 -0
  113. package/dist/tui/components/DateBreakdownPanel.jsx +61 -0
  114. package/dist/tui/components/DateBreakdownPanel.jsx.map +1 -0
  115. package/dist/tui/components/Footer.d.ts +26 -0
  116. package/dist/tui/components/Footer.d.ts.map +1 -0
  117. package/dist/tui/components/Footer.js +15 -0
  118. package/dist/tui/components/Footer.js.map +1 -0
  119. package/dist/tui/components/Footer.jsx +158 -0
  120. package/dist/tui/components/Footer.jsx.map +1 -0
  121. package/dist/tui/components/Header.d.ts +9 -0
  122. package/dist/tui/components/Header.d.ts.map +1 -0
  123. package/dist/tui/components/Header.js +12 -0
  124. package/dist/tui/components/Header.js.map +1 -0
  125. package/dist/tui/components/Header.jsx +38 -0
  126. package/dist/tui/components/Header.jsx.map +1 -0
  127. package/dist/tui/components/Legend.d.ts +7 -0
  128. package/dist/tui/components/Legend.d.ts.map +1 -0
  129. package/dist/tui/components/Legend.js +9 -0
  130. package/dist/tui/components/Legend.js.map +1 -0
  131. package/dist/tui/components/Legend.jsx +27 -0
  132. package/dist/tui/components/Legend.jsx.map +1 -0
  133. package/dist/tui/components/LoadingSpinner.d.ts +8 -0
  134. package/dist/tui/components/LoadingSpinner.d.ts.map +1 -0
  135. package/dist/tui/components/LoadingSpinner.jsx +62 -0
  136. package/dist/tui/components/LoadingSpinner.jsx.map +1 -0
  137. package/dist/tui/components/ModelListItem.d.ts +11 -0
  138. package/dist/tui/components/ModelListItem.d.ts.map +1 -0
  139. package/dist/tui/components/ModelListItem.js +18 -0
  140. package/dist/tui/components/ModelListItem.js.map +1 -0
  141. package/dist/tui/components/ModelListItem.jsx +17 -0
  142. package/dist/tui/components/ModelListItem.jsx.map +1 -0
  143. package/dist/tui/components/ModelRow.d.ts +13 -0
  144. package/dist/tui/components/ModelRow.d.ts.map +1 -0
  145. package/dist/tui/components/ModelRow.jsx +28 -0
  146. package/dist/tui/components/ModelRow.jsx.map +1 -0
  147. package/dist/tui/components/ModelView.d.ts +13 -0
  148. package/dist/tui/components/ModelView.d.ts.map +1 -0
  149. package/dist/tui/components/ModelView.js +34 -0
  150. package/dist/tui/components/ModelView.js.map +1 -0
  151. package/dist/tui/components/ModelView.jsx +111 -0
  152. package/dist/tui/components/ModelView.jsx.map +1 -0
  153. package/dist/tui/components/OverviewView.d.ts +14 -0
  154. package/dist/tui/components/OverviewView.d.ts.map +1 -0
  155. package/dist/tui/components/OverviewView.js +24 -0
  156. package/dist/tui/components/OverviewView.js.map +1 -0
  157. package/dist/tui/components/OverviewView.jsx +79 -0
  158. package/dist/tui/components/OverviewView.jsx.map +1 -0
  159. package/dist/tui/components/StatsView.d.ts +12 -0
  160. package/dist/tui/components/StatsView.d.ts.map +1 -0
  161. package/dist/tui/components/StatsView.js +43 -0
  162. package/dist/tui/components/StatsView.js.map +1 -0
  163. package/dist/tui/components/StatsView.jsx +180 -0
  164. package/dist/tui/components/StatsView.jsx.map +1 -0
  165. package/dist/tui/components/TokenBreakdown.d.ts +14 -0
  166. package/dist/tui/components/TokenBreakdown.d.ts.map +1 -0
  167. package/dist/tui/components/TokenBreakdown.jsx +27 -0
  168. package/dist/tui/components/TokenBreakdown.jsx.map +1 -0
  169. package/dist/tui/components/index.d.ts +16 -0
  170. package/dist/tui/components/index.d.ts.map +1 -0
  171. package/dist/tui/components/index.js +13 -0
  172. package/dist/tui/components/index.js.map +1 -0
  173. package/dist/tui/config/settings.d.ts +12 -0
  174. package/dist/tui/config/settings.d.ts.map +1 -0
  175. package/dist/tui/config/settings.js +105 -0
  176. package/dist/tui/config/settings.js.map +1 -0
  177. package/dist/tui/config/themes.d.ts +15 -0
  178. package/dist/tui/config/themes.d.ts.map +1 -0
  179. package/dist/tui/config/themes.js +82 -0
  180. package/dist/tui/config/themes.js.map +1 -0
  181. package/dist/tui/hooks/useData.d.ts +17 -0
  182. package/dist/tui/hooks/useData.d.ts.map +1 -0
  183. package/dist/tui/hooks/useData.js +430 -0
  184. package/dist/tui/hooks/useData.js.map +1 -0
  185. package/dist/tui/index.d.ts +4 -0
  186. package/dist/tui/index.d.ts.map +1 -0
  187. package/dist/tui/index.js +8 -0
  188. package/dist/tui/index.js.map +1 -0
  189. package/dist/tui/index.jsx +35 -0
  190. package/dist/tui/index.jsx.map +1 -0
  191. package/dist/tui/types/index.d.ts +133 -0
  192. package/dist/tui/types/index.d.ts.map +1 -0
  193. package/dist/tui/types/index.js +21 -0
  194. package/dist/tui/types/index.js.map +1 -0
  195. package/dist/tui/utils/cleanup.d.ts +22 -0
  196. package/dist/tui/utils/cleanup.d.ts.map +1 -0
  197. package/dist/tui/utils/cleanup.js +59 -0
  198. package/dist/tui/utils/cleanup.js.map +1 -0
  199. package/dist/tui/utils/colors.d.ts +18 -0
  200. package/dist/tui/utils/colors.d.ts.map +1 -0
  201. package/dist/tui/utils/colors.js +55 -0
  202. package/dist/tui/utils/colors.js.map +1 -0
  203. package/dist/tui/utils/format.d.ts +7 -0
  204. package/dist/tui/utils/format.d.ts.map +1 -0
  205. package/dist/tui/utils/format.js +45 -0
  206. package/dist/tui/utils/format.js.map +1 -0
  207. package/dist/tui/utils/responsive.d.ts +5 -0
  208. package/dist/tui/utils/responsive.d.ts.map +1 -0
  209. package/dist/tui/utils/responsive.js +5 -0
  210. package/dist/tui/utils/responsive.js.map +1 -0
  211. package/package.json +64 -0
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Native Runner - Subprocess for non-blocking native Rust calls
4
+ *
5
+ * This script runs in a separate process to keep the main event loop free
6
+ * for UI rendering (e.g., spinner animation).
7
+ *
8
+ * Communication: stdin (JSON input) -> stdout (JSON output)
9
+ * No temp files needed - pure Unix IPC pattern.
10
+ */
11
+ import nativeCore from "@tokscale/core";
12
+ const MAX_INPUT_SIZE = 50 * 1024 * 1024; // 50MB
13
+ const STDIN_TIMEOUT_MS = 30_000; // 30s
14
+ async function readStdinWithLimits() {
15
+ const chunks = [];
16
+ let totalSize = 0;
17
+ let timeoutId = null;
18
+ const timeoutPromise = new Promise((_, reject) => {
19
+ timeoutId = setTimeout(() => reject(new Error(`Stdin read timed out after ${STDIN_TIMEOUT_MS}ms`)), STDIN_TIMEOUT_MS);
20
+ });
21
+ const readPromise = (async () => {
22
+ for await (const chunk of process.stdin) {
23
+ const buf = Buffer.from(chunk);
24
+ totalSize += buf.length;
25
+ if (totalSize > MAX_INPUT_SIZE) {
26
+ throw new Error(`Input exceeds maximum size of ${MAX_INPUT_SIZE} bytes (${Math.round(MAX_INPUT_SIZE / 1024 / 1024)}MB)`);
27
+ }
28
+ chunks.push(buf);
29
+ }
30
+ return Buffer.concat(chunks).toString("utf-8");
31
+ })();
32
+ try {
33
+ const result = await Promise.race([readPromise, timeoutPromise]);
34
+ return result;
35
+ }
36
+ finally {
37
+ if (timeoutId)
38
+ clearTimeout(timeoutId);
39
+ }
40
+ }
41
+ async function main() {
42
+ const input = await readStdinWithLimits();
43
+ if (!input.trim()) {
44
+ process.stderr.write(JSON.stringify({ error: "No input received" }));
45
+ process.exit(1);
46
+ }
47
+ let request;
48
+ try {
49
+ request = JSON.parse(input);
50
+ }
51
+ catch (e) {
52
+ throw new Error(`Malformed JSON input: ${e.message}`);
53
+ }
54
+ const { method, args } = request;
55
+ if (!Array.isArray(args) || args.length === 0) {
56
+ throw new Error(`Invalid args for method '${method}': expected at least 1 argument`);
57
+ }
58
+ let result;
59
+ switch (method) {
60
+ case "parseLocalSources":
61
+ result = nativeCore.parseLocalSources(args[0]);
62
+ break;
63
+ case "finalizeReport":
64
+ result = nativeCore.finalizeReport(args[0]);
65
+ break;
66
+ case "finalizeMonthlyReport":
67
+ result = nativeCore.finalizeMonthlyReport(args[0]);
68
+ break;
69
+ case "finalizeGraph":
70
+ result = nativeCore.finalizeGraph(args[0]);
71
+ break;
72
+ case "generateGraphWithPricing":
73
+ result = nativeCore.generateGraphWithPricing(args[0]);
74
+ break;
75
+ default:
76
+ throw new Error(`Unknown method: ${method}`);
77
+ }
78
+ // Write result to stdout (no newline - pure JSON)
79
+ process.stdout.write(JSON.stringify(result));
80
+ }
81
+ main().catch((e) => {
82
+ const error = e;
83
+ process.stderr.write(JSON.stringify({
84
+ error: error.message,
85
+ stack: error.stack,
86
+ }));
87
+ process.exit(1);
88
+ });
89
+ //# sourceMappingURL=native-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-runner.js","sourceRoot":"","sources":["../src/native-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Native module loader for Rust core
3
+ *
4
+ * Exposes all Rust functions with proper TypeScript types.
5
+ * Falls back to TypeScript implementations when native module is unavailable.
6
+ */
7
+ import type { PricingEntry } from "./pricing.js";
8
+ import type { TokenContributionData, GraphOptions as TSGraphOptions, SourceType } from "./graph-types.js";
9
+ interface NativeScanStats {
10
+ opencodeFiles: number;
11
+ claudeFiles: number;
12
+ codexFiles: number;
13
+ geminiFiles: number;
14
+ totalFiles: number;
15
+ }
16
+ /**
17
+ * Check if native module is available
18
+ */
19
+ export declare function isNativeAvailable(): boolean;
20
+ /**
21
+ * Get native module load error (if any)
22
+ */
23
+ export declare function getNativeLoadError(): Error | null;
24
+ /**
25
+ * Get native module version
26
+ */
27
+ export declare function getNativeVersion(): string | null;
28
+ /**
29
+ * Scan sessions using native module
30
+ */
31
+ export declare function scanSessionsNative(homeDir?: string, sources?: string[]): NativeScanStats | null;
32
+ /**
33
+ * Generate graph data using native module (without pricing - uses embedded costs)
34
+ * @deprecated Use generateGraphWithPricing instead
35
+ */
36
+ export declare function generateGraphNative(options?: TSGraphOptions): TokenContributionData;
37
+ export interface ModelUsage {
38
+ source: string;
39
+ model: string;
40
+ provider: string;
41
+ input: number;
42
+ output: number;
43
+ cacheRead: number;
44
+ cacheWrite: number;
45
+ reasoning: number;
46
+ messageCount: number;
47
+ cost: number;
48
+ }
49
+ export interface ModelReport {
50
+ entries: ModelUsage[];
51
+ totalInput: number;
52
+ totalOutput: number;
53
+ totalCacheRead: number;
54
+ totalCacheWrite: number;
55
+ totalMessages: number;
56
+ totalCost: number;
57
+ processingTimeMs: number;
58
+ }
59
+ export interface MonthlyUsage {
60
+ month: string;
61
+ models: string[];
62
+ input: number;
63
+ output: number;
64
+ cacheRead: number;
65
+ cacheWrite: number;
66
+ messageCount: number;
67
+ cost: number;
68
+ }
69
+ export interface MonthlyReport {
70
+ entries: MonthlyUsage[];
71
+ totalCost: number;
72
+ processingTimeMs: number;
73
+ }
74
+ export interface ParsedMessages {
75
+ messages: Array<{
76
+ source: string;
77
+ modelId: string;
78
+ providerId: string;
79
+ timestamp: number;
80
+ date: string;
81
+ input: number;
82
+ output: number;
83
+ cacheRead: number;
84
+ cacheWrite: number;
85
+ reasoning: number;
86
+ sessionId: string;
87
+ }>;
88
+ opencodeCount: number;
89
+ claudeCount: number;
90
+ codexCount: number;
91
+ geminiCount: number;
92
+ processingTimeMs: number;
93
+ }
94
+ export interface LocalParseOptions {
95
+ sources?: SourceType[];
96
+ since?: string;
97
+ until?: string;
98
+ year?: string;
99
+ }
100
+ export interface FinalizeOptions {
101
+ localMessages: ParsedMessages;
102
+ pricing: PricingEntry[];
103
+ includeCursor: boolean;
104
+ since?: string;
105
+ until?: string;
106
+ year?: string;
107
+ }
108
+ export declare function parseLocalSourcesAsync(options: LocalParseOptions): Promise<ParsedMessages>;
109
+ export declare function finalizeReportAsync(options: FinalizeOptions): Promise<ModelReport>;
110
+ export declare function finalizeMonthlyReportAsync(options: FinalizeOptions): Promise<MonthlyReport>;
111
+ export declare function finalizeGraphAsync(options: FinalizeOptions): Promise<TokenContributionData>;
112
+ export declare function generateGraphWithPricingAsync(options: TSGraphOptions & {
113
+ pricing: PricingEntry[];
114
+ }): Promise<TokenContributionData>;
115
+ export {};
116
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
package/dist/native.js ADDED
@@ -0,0 +1,359 @@
1
+ /**
2
+ * Native module loader for Rust core
3
+ *
4
+ * Exposes all Rust functions with proper TypeScript types.
5
+ * Falls back to TypeScript implementations when native module is unavailable.
6
+ */
7
+ import { parseLocalSources as parseLocalSourcesTS, } from "./sessions/index.js";
8
+ import { generateModelReport as generateModelReportTS, generateMonthlyReport as generateMonthlyReportTS, generateGraphData as generateGraphDataTS, } from "./sessions/reports.js";
9
+ import { readCursorMessagesFromCache } from "./cursor.js";
10
+ // =============================================================================
11
+ // Module loading
12
+ // =============================================================================
13
+ let nativeCore = null;
14
+ let loadError = null;
15
+ try {
16
+ nativeCore = await import("@tokscale/core").then((m) => m.default || m);
17
+ }
18
+ catch (e) {
19
+ loadError = e;
20
+ }
21
+ // =============================================================================
22
+ // Public API
23
+ // =============================================================================
24
+ /**
25
+ * Check if native module is available
26
+ */
27
+ export function isNativeAvailable() {
28
+ return nativeCore !== null;
29
+ }
30
+ /**
31
+ * Get native module load error (if any)
32
+ */
33
+ export function getNativeLoadError() {
34
+ return loadError;
35
+ }
36
+ /**
37
+ * Get native module version
38
+ */
39
+ export function getNativeVersion() {
40
+ return nativeCore?.version() ?? null;
41
+ }
42
+ /**
43
+ * Scan sessions using native module
44
+ */
45
+ export function scanSessionsNative(homeDir, sources) {
46
+ if (!nativeCore) {
47
+ return null;
48
+ }
49
+ return nativeCore.scanSessions(homeDir, sources);
50
+ }
51
+ // =============================================================================
52
+ // Graph generation
53
+ // =============================================================================
54
+ /**
55
+ * Convert TypeScript graph options to native format
56
+ */
57
+ function toNativeOptions(options) {
58
+ return {
59
+ homeDir: undefined,
60
+ sources: options.sources,
61
+ since: options.since,
62
+ until: options.until,
63
+ year: options.year,
64
+ };
65
+ }
66
+ /**
67
+ * Convert native result to TypeScript format
68
+ */
69
+ function fromNativeResult(result) {
70
+ return {
71
+ meta: {
72
+ generatedAt: result.meta.generatedAt,
73
+ version: result.meta.version,
74
+ dateRange: {
75
+ start: result.meta.dateRangeStart,
76
+ end: result.meta.dateRangeEnd,
77
+ },
78
+ },
79
+ summary: {
80
+ totalTokens: result.summary.totalTokens,
81
+ totalCost: result.summary.totalCost,
82
+ totalDays: result.summary.totalDays,
83
+ activeDays: result.summary.activeDays,
84
+ averagePerDay: result.summary.averagePerDay,
85
+ maxCostInSingleDay: result.summary.maxCostInSingleDay,
86
+ sources: result.summary.sources,
87
+ models: result.summary.models,
88
+ },
89
+ years: result.years.map((y) => ({
90
+ year: y.year,
91
+ totalTokens: y.totalTokens,
92
+ totalCost: y.totalCost,
93
+ range: {
94
+ start: y.rangeStart,
95
+ end: y.rangeEnd,
96
+ },
97
+ })),
98
+ contributions: result.contributions.map((c) => ({
99
+ date: c.date,
100
+ totals: {
101
+ tokens: c.totals.tokens,
102
+ cost: c.totals.cost,
103
+ messages: c.totals.messages,
104
+ },
105
+ intensity: c.intensity,
106
+ tokenBreakdown: {
107
+ input: c.tokenBreakdown.input,
108
+ output: c.tokenBreakdown.output,
109
+ cacheRead: c.tokenBreakdown.cacheRead,
110
+ cacheWrite: c.tokenBreakdown.cacheWrite,
111
+ reasoning: c.tokenBreakdown.reasoning,
112
+ },
113
+ sources: c.sources.map((s) => ({
114
+ source: s.source,
115
+ modelId: s.modelId,
116
+ providerId: s.providerId,
117
+ tokens: {
118
+ input: s.tokens.input,
119
+ output: s.tokens.output,
120
+ cacheRead: s.tokens.cacheRead,
121
+ cacheWrite: s.tokens.cacheWrite,
122
+ reasoning: s.tokens.reasoning,
123
+ },
124
+ cost: s.cost,
125
+ messages: s.messages,
126
+ })),
127
+ })),
128
+ };
129
+ }
130
+ /**
131
+ * Generate graph data using native module (without pricing - uses embedded costs)
132
+ * @deprecated Use generateGraphWithPricing instead
133
+ */
134
+ export function generateGraphNative(options = {}) {
135
+ if (!nativeCore) {
136
+ throw new Error("Native module not available: " + (loadError?.message || "unknown error"));
137
+ }
138
+ const nativeOptions = toNativeOptions(options);
139
+ const result = nativeCore.generateGraph(nativeOptions);
140
+ return fromNativeResult(result);
141
+ }
142
+ // =============================================================================
143
+ // Async Subprocess Wrappers (Non-blocking for UI)
144
+ // =============================================================================
145
+ import { spawn } from "bun";
146
+ import { fileURLToPath } from "node:url";
147
+ import { dirname, join } from "node:path";
148
+ const __filename = fileURLToPath(import.meta.url);
149
+ const __dirname = dirname(__filename);
150
+ const DEFAULT_TIMEOUT_MS = 120_000; // 2 minutes default
151
+ const NATIVE_TIMEOUT_MS = parseInt(process.env.TOKSCALE_NATIVE_TIMEOUT_MS || String(DEFAULT_TIMEOUT_MS), 10);
152
+ // Timeout-related exit codes
153
+ const TIMEOUT_EXIT_CODES = new Set([
154
+ 124, // GNU timeout default
155
+ 143, // 128 + 15 (SIGTERM)
156
+ 137, // 128 + 9 (SIGKILL - when SIGTERM fails)
157
+ ]);
158
+ async function runInSubprocess(method, args) {
159
+ const runnerPath = join(__dirname, "native-runner.ts");
160
+ const input = JSON.stringify({ method, args });
161
+ const proc = spawn({
162
+ cmd: ["bun", "run", runnerPath],
163
+ stdin: "pipe",
164
+ stdout: "pipe",
165
+ stderr: "pipe",
166
+ timeout: NATIVE_TIMEOUT_MS,
167
+ killSignal: "SIGTERM",
168
+ });
169
+ // Helper to consume streams (prevents resource leaks)
170
+ const consumeStreams = async () => {
171
+ const [stdout, stderr] = await Promise.all([
172
+ new Response(proc.stdout).text(),
173
+ new Response(proc.stderr).text(),
174
+ ]);
175
+ return { stdout, stderr };
176
+ };
177
+ try {
178
+ proc.stdin.write(input);
179
+ proc.stdin.end();
180
+ }
181
+ catch (e) {
182
+ proc.kill("SIGTERM");
183
+ // Must consume streams even after kill to prevent resource leaks
184
+ await consumeStreams().catch(() => { }); // Ignore stream errors after kill
185
+ await proc.exited.catch(() => { }); // Wait for process to exit
186
+ throw new Error(`Failed to write to subprocess stdin: ${e.message}`);
187
+ }
188
+ const [{ stdout, stderr }, exitCode] = await Promise.all([
189
+ consumeStreams(),
190
+ proc.exited,
191
+ ]);
192
+ // Check for timeout exit codes
193
+ if (TIMEOUT_EXIT_CODES.has(exitCode)) {
194
+ throw new Error(`Subprocess '${method}' timed out after ${NATIVE_TIMEOUT_MS}ms (exit code ${exitCode})`);
195
+ }
196
+ if (exitCode !== 0) {
197
+ let errorMsg = stderr || `Process exited with code ${exitCode}`;
198
+ try {
199
+ const parsed = JSON.parse(stderr);
200
+ if (parsed.error)
201
+ errorMsg = parsed.error;
202
+ }
203
+ catch { }
204
+ throw new Error(`Subprocess '${method}' failed: ${errorMsg}`);
205
+ }
206
+ try {
207
+ return JSON.parse(stdout);
208
+ }
209
+ catch (e) {
210
+ throw new Error(`Failed to parse subprocess output: ${e.message}\nstdout: ${stdout.slice(0, 500)}`);
211
+ }
212
+ }
213
+ export async function parseLocalSourcesAsync(options) {
214
+ // Use TypeScript fallback when native module is not available
215
+ if (!isNativeAvailable()) {
216
+ const result = parseLocalSourcesTS({
217
+ sources: options.sources,
218
+ since: options.since,
219
+ until: options.until,
220
+ year: options.year,
221
+ });
222
+ // Convert TypeScript ParsedMessages to native format
223
+ return {
224
+ messages: result.messages.map((msg) => ({
225
+ source: msg.source,
226
+ modelId: msg.modelId,
227
+ providerId: msg.providerId,
228
+ timestamp: msg.timestamp,
229
+ date: msg.date,
230
+ input: msg.tokens.input,
231
+ output: msg.tokens.output,
232
+ cacheRead: msg.tokens.cacheRead,
233
+ cacheWrite: msg.tokens.cacheWrite,
234
+ reasoning: msg.tokens.reasoning,
235
+ sessionId: msg.sessionId,
236
+ })),
237
+ opencodeCount: result.opencodeCount,
238
+ claudeCount: result.claudeCount,
239
+ codexCount: result.codexCount,
240
+ geminiCount: result.geminiCount,
241
+ processingTimeMs: result.processingTimeMs,
242
+ };
243
+ }
244
+ const nativeOptions = {
245
+ homeDir: undefined,
246
+ sources: options.sources,
247
+ since: options.since,
248
+ until: options.until,
249
+ year: options.year,
250
+ };
251
+ return runInSubprocess("parseLocalSources", [nativeOptions]);
252
+ }
253
+ function buildMessagesForFallback(options) {
254
+ const messages = options.localMessages.messages.map((msg) => ({
255
+ source: msg.source,
256
+ modelId: msg.modelId,
257
+ providerId: msg.providerId,
258
+ sessionId: msg.sessionId,
259
+ timestamp: msg.timestamp,
260
+ date: msg.date,
261
+ tokens: {
262
+ input: msg.input,
263
+ output: msg.output,
264
+ cacheRead: msg.cacheRead,
265
+ cacheWrite: msg.cacheWrite,
266
+ reasoning: msg.reasoning,
267
+ },
268
+ cost: 0,
269
+ }));
270
+ if (options.includeCursor) {
271
+ const cursorMessages = readCursorMessagesFromCache();
272
+ for (const cursor of cursorMessages) {
273
+ const inRange = (!options.year || cursor.date.startsWith(options.year)) &&
274
+ (!options.since || cursor.date >= options.since) &&
275
+ (!options.until || cursor.date <= options.until);
276
+ if (inRange) {
277
+ messages.push(cursor);
278
+ }
279
+ }
280
+ }
281
+ return messages;
282
+ }
283
+ export async function finalizeReportAsync(options) {
284
+ if (!isNativeAvailable()) {
285
+ const startTime = performance.now();
286
+ const messages = buildMessagesForFallback(options);
287
+ return generateModelReportTS(messages, options.pricing, startTime);
288
+ }
289
+ const nativeOptions = {
290
+ homeDir: undefined,
291
+ localMessages: options.localMessages,
292
+ pricing: options.pricing,
293
+ includeCursor: options.includeCursor,
294
+ since: options.since,
295
+ until: options.until,
296
+ year: options.year,
297
+ };
298
+ return runInSubprocess("finalizeReport", [nativeOptions]);
299
+ }
300
+ export async function finalizeMonthlyReportAsync(options) {
301
+ if (!isNativeAvailable()) {
302
+ const startTime = performance.now();
303
+ const messages = buildMessagesForFallback(options);
304
+ return generateMonthlyReportTS(messages, options.pricing, startTime);
305
+ }
306
+ const nativeOptions = {
307
+ homeDir: undefined,
308
+ localMessages: options.localMessages,
309
+ pricing: options.pricing,
310
+ includeCursor: options.includeCursor,
311
+ since: options.since,
312
+ until: options.until,
313
+ year: options.year,
314
+ };
315
+ return runInSubprocess("finalizeMonthlyReport", [nativeOptions]);
316
+ }
317
+ export async function finalizeGraphAsync(options) {
318
+ if (!isNativeAvailable()) {
319
+ const startTime = performance.now();
320
+ const messages = buildMessagesForFallback(options);
321
+ return generateGraphDataTS(messages, options.pricing, startTime);
322
+ }
323
+ const nativeOptions = {
324
+ homeDir: undefined,
325
+ localMessages: options.localMessages,
326
+ pricing: options.pricing,
327
+ includeCursor: options.includeCursor,
328
+ since: options.since,
329
+ until: options.until,
330
+ year: options.year,
331
+ };
332
+ const result = await runInSubprocess("finalizeGraph", [nativeOptions]);
333
+ return fromNativeResult(result);
334
+ }
335
+ export async function generateGraphWithPricingAsync(options) {
336
+ // Use TypeScript fallback when native module is not available
337
+ if (!isNativeAvailable()) {
338
+ const startTime = performance.now();
339
+ // Parse local sources using TS fallback
340
+ const parsed = parseLocalSourcesTS({
341
+ sources: options.sources,
342
+ since: options.since,
343
+ until: options.until,
344
+ year: options.year,
345
+ });
346
+ return generateGraphDataTS(parsed.messages, options.pricing, startTime);
347
+ }
348
+ const nativeOptions = {
349
+ homeDir: undefined,
350
+ sources: options.sources,
351
+ pricing: options.pricing,
352
+ since: options.since,
353
+ until: options.until,
354
+ year: options.year,
355
+ };
356
+ const result = await runInSubprocess("generateGraphWithPricing", [nativeOptions]);
357
+ return fromNativeResult(result);
358
+ }
359
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * OpenCode session data reader
3
+ */
4
+ export interface TokenUsage {
5
+ input: number;
6
+ output: number;
7
+ reasoning: number;
8
+ cache: {
9
+ read: number;
10
+ write: number;
11
+ };
12
+ }
13
+ export interface OpenCodeMessage {
14
+ id: string;
15
+ sessionID: string;
16
+ role: "assistant" | "user";
17
+ modelID?: string;
18
+ providerID?: string;
19
+ cost: number;
20
+ tokens?: TokenUsage;
21
+ time: {
22
+ created: number;
23
+ completed?: number;
24
+ };
25
+ }
26
+ export interface OpenCodeUsageData {
27
+ source: "opencode";
28
+ modelID: string;
29
+ providerID: string;
30
+ messageCount: number;
31
+ input: number;
32
+ output: number;
33
+ reasoning: number;
34
+ cacheRead: number;
35
+ cacheWrite: number;
36
+ }
37
+ export declare function getOpenCodeStoragePath(): string;
38
+ export declare function readOpenCodeMessages(): OpenCodeMessage[];
39
+ export declare function aggregateOpenCodeByModel(messages: OpenCodeMessage[]): Map<string, OpenCodeUsageData>;
40
+ //# sourceMappingURL=opencode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAgCxD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAiCpG"}