vibetracking 0.1.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 (46) hide show
  1. package/README.md +77 -0
  2. package/dist/auth.d.ts +17 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +162 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/cli.d.ts +8 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +440 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/credentials.d.ts +36 -0
  11. package/dist/credentials.d.ts.map +1 -0
  12. package/dist/credentials.js +82 -0
  13. package/dist/credentials.js.map +1 -0
  14. package/dist/cursor.d.ts +136 -0
  15. package/dist/cursor.d.ts.map +1 -0
  16. package/dist/cursor.js +400 -0
  17. package/dist/cursor.js.map +1 -0
  18. package/dist/graph-types.d.ts +152 -0
  19. package/dist/graph-types.d.ts.map +1 -0
  20. package/dist/graph-types.js +6 -0
  21. package/dist/graph-types.js.map +1 -0
  22. package/dist/native-runner.d.ts +11 -0
  23. package/dist/native-runner.d.ts.map +1 -0
  24. package/dist/native-runner.js +61 -0
  25. package/dist/native-runner.js.map +1 -0
  26. package/dist/native.d.ts +98 -0
  27. package/dist/native.d.ts.map +1 -0
  28. package/dist/native.js +309 -0
  29. package/dist/native.js.map +1 -0
  30. package/dist/sessions/types.d.ts +28 -0
  31. package/dist/sessions/types.d.ts.map +1 -0
  32. package/dist/sessions/types.js +27 -0
  33. package/dist/sessions/types.js.map +1 -0
  34. package/dist/spinner.d.ts +75 -0
  35. package/dist/spinner.d.ts.map +1 -0
  36. package/dist/spinner.js +203 -0
  37. package/dist/spinner.js.map +1 -0
  38. package/dist/submit.d.ts +23 -0
  39. package/dist/submit.d.ts.map +1 -0
  40. package/dist/submit.js +144 -0
  41. package/dist/submit.js.map +1 -0
  42. package/dist/table.d.ts +6 -0
  43. package/dist/table.d.ts.map +1 -0
  44. package/dist/table.js +10 -0
  45. package/dist/table.js.map +1 -0
  46. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Unified message types for session parsers (matches Rust UnifiedMessage)
3
+ */
4
+ export interface TokenBreakdown {
5
+ input: number;
6
+ output: number;
7
+ cacheRead: number;
8
+ cacheWrite: number;
9
+ reasoning: number;
10
+ }
11
+ export interface UnifiedMessage {
12
+ source: string;
13
+ modelId: string;
14
+ providerId: string;
15
+ sessionId: string;
16
+ timestamp: number;
17
+ date: string;
18
+ tokens: TokenBreakdown;
19
+ cost: number;
20
+ agent?: string;
21
+ }
22
+ export type SourceType = "opencode" | "claude" | "codex" | "gemini" | "cursor" | "amp" | "droid";
23
+ /**
24
+ * Convert Unix milliseconds timestamp to YYYY-MM-DD date string
25
+ */
26
+ export declare function timestampToDate(timestampMs: number): string;
27
+ export declare function createUnifiedMessage(source: string, modelId: string, providerId: string, sessionId: string, timestamp: number, tokens: TokenBreakdown, cost?: number, agent?: string): UnifiedMessage;
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjG;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,cAAc,CAYhB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Unified message types for session parsers (matches Rust UnifiedMessage)
3
+ */
4
+ /**
5
+ * Convert Unix milliseconds timestamp to YYYY-MM-DD date string
6
+ */
7
+ export function timestampToDate(timestampMs) {
8
+ const date = new Date(timestampMs);
9
+ const year = date.getUTCFullYear();
10
+ const month = String(date.getUTCMonth() + 1).padStart(2, "0");
11
+ const day = String(date.getUTCDate()).padStart(2, "0");
12
+ return `${year}-${month}-${day}`;
13
+ }
14
+ export function createUnifiedMessage(source, modelId, providerId, sessionId, timestamp, tokens, cost = 0, agent) {
15
+ return {
16
+ source,
17
+ modelId,
18
+ providerId,
19
+ sessionId,
20
+ timestamp,
21
+ date: timestampToDate(timestamp),
22
+ tokens,
23
+ cost,
24
+ agent,
25
+ };
26
+ }
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sessions/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,OAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,MAAsB,EACtB,OAAe,CAAC,EAChB,KAAc;IAEd,OAAO;QACL,MAAM;QACN,OAAO;QACP,UAAU;QACV,SAAS;QACT,SAAS;QACT,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC;QAChC,MAAM;QACN,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * OpenCode-style Knight Rider Spinner
3
+ * Accurate port from: https://github.com/sst/opencode/blob/dev/packages/opencode/src/cli/cmd/tui/ui/spinner.ts
4
+ *
5
+ * Features:
6
+ * - Bidirectional sweep (left→right→left)
7
+ * - Hold frames at each end (pause effect)
8
+ * - Color gradient trail using ANSI 256 colors
9
+ * - Same characters as OpenCode: ■ (active) / ⬝ (inactive)
10
+ */
11
+ type ColorName = "cyan" | "green" | "magenta" | "yellow" | "red" | "blue" | "white";
12
+ interface SpinnerOptions {
13
+ /** Width of the spinner in characters (default: 8) */
14
+ width?: number;
15
+ /** Frames to hold at start position (default: 30) */
16
+ holdStart?: number;
17
+ /** Frames to hold at end position (default: 9) */
18
+ holdEnd?: number;
19
+ /** Trail length - number of colored blocks behind lead (default: 4) */
20
+ trailLength?: number;
21
+ /** Color theme (default: "cyan") */
22
+ color?: ColorName;
23
+ /** Frame interval in ms (default: 40) */
24
+ interval?: number;
25
+ }
26
+ export declare class Spinner {
27
+ private intervalId;
28
+ private frameIndex;
29
+ private width;
30
+ private holdStart;
31
+ private holdEnd;
32
+ private trailLength;
33
+ private gradient;
34
+ private interval;
35
+ private message;
36
+ private totalFrames;
37
+ constructor(options?: SpinnerOptions);
38
+ /**
39
+ * Start the spinner with a message
40
+ */
41
+ start(message: string): void;
42
+ /**
43
+ * Update the spinner message while running
44
+ */
45
+ update(message: string): void;
46
+ /**
47
+ * Stop the spinner and show a success message
48
+ */
49
+ success(message: string): void;
50
+ /**
51
+ * Stop the spinner and show an error message
52
+ */
53
+ error(message: string): void;
54
+ /**
55
+ * Stop the spinner without a message
56
+ */
57
+ stop(): void;
58
+ /**
59
+ * Check if spinner is currently running
60
+ */
61
+ isSpinning(): boolean;
62
+ }
63
+ /**
64
+ * Create a spinner with default OpenCode settings
65
+ */
66
+ export declare function createSpinner(options?: SpinnerOptions): Spinner;
67
+ /**
68
+ * Run an async function with a spinner
69
+ */
70
+ export declare function withSpinner<T>(message: string, fn: () => Promise<T>, options?: SpinnerOptions & {
71
+ successMessage?: string;
72
+ errorMessage?: string;
73
+ }): Promise<T>;
74
+ export {};
75
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../src/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAmBpF,UAAU,cAAc;IACtB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkGD,qBAAa,OAAO;IAClB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,cAAmB;IAaxC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAsB5B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK5B;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,cAAc,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,CAAC,CAAC,CAYZ"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * OpenCode-style Knight Rider Spinner
3
+ * Accurate port from: https://github.com/sst/opencode/blob/dev/packages/opencode/src/cli/cmd/tui/ui/spinner.ts
4
+ *
5
+ * Features:
6
+ * - Bidirectional sweep (left→right→left)
7
+ * - Hold frames at each end (pause effect)
8
+ * - Color gradient trail using ANSI 256 colors
9
+ * - Same characters as OpenCode: ■ (active) / ⬝ (inactive)
10
+ */
11
+ // =============================================================================
12
+ // ANSI Color Helpers
13
+ // =============================================================================
14
+ function ansi256Fg(code) {
15
+ return `\x1b[38;5;${code}m`;
16
+ }
17
+ const RESET = "\x1b[0m";
18
+ const HIDE_CURSOR = "\x1B[?25l";
19
+ const SHOW_CURSOR = "\x1B[?25h";
20
+ const CLEAR_LINE = "\r\x1B[K";
21
+ const COLOR_GRADIENTS = {
22
+ // Bright → dim (6 steps for trail)
23
+ cyan: [51, 44, 37, 30, 23, 17],
24
+ green: [46, 40, 34, 28, 22, 22],
25
+ magenta: [201, 165, 129, 93, 57, 53],
26
+ yellow: [226, 220, 214, 178, 136, 94],
27
+ red: [196, 160, 124, 88, 52, 52],
28
+ blue: [33, 27, 21, 18, 17, 17],
29
+ white: [255, 250, 245, 240, 236, 232],
30
+ };
31
+ const INACTIVE_COLOR = 240; // Gray for ⬝
32
+ /**
33
+ * Calculate scanner state for a given frame index
34
+ * Matches OpenCode's getScannerState() exactly
35
+ */
36
+ function getScannerState(frameIndex, width, holdStart, holdEnd) {
37
+ const forwardFrames = width;
38
+ const backwardFrames = width - 1;
39
+ const totalCycle = forwardFrames + holdEnd + backwardFrames + holdStart;
40
+ // Normalize frame index to cycle
41
+ const normalizedFrame = frameIndex % totalCycle;
42
+ if (normalizedFrame < forwardFrames) {
43
+ // Phase 1: Moving forward (0 → width-1)
44
+ return {
45
+ activePosition: normalizedFrame,
46
+ isMovingForward: true,
47
+ };
48
+ }
49
+ else if (normalizedFrame < forwardFrames + holdEnd) {
50
+ // Phase 2: Holding at end
51
+ return {
52
+ activePosition: width - 1,
53
+ isMovingForward: true,
54
+ };
55
+ }
56
+ else if (normalizedFrame < forwardFrames + holdEnd + backwardFrames) {
57
+ // Phase 3: Moving backward (width-2 → 0)
58
+ const backwardIndex = normalizedFrame - forwardFrames - holdEnd;
59
+ return {
60
+ activePosition: width - 2 - backwardIndex,
61
+ isMovingForward: false,
62
+ };
63
+ }
64
+ else {
65
+ // Phase 4: Holding at start
66
+ return {
67
+ activePosition: 0,
68
+ isMovingForward: false,
69
+ };
70
+ }
71
+ }
72
+ /**
73
+ * Generate a single frame string with colors
74
+ */
75
+ function generateColoredFrame(frameIndex, width, holdStart, holdEnd, trailLength, gradient) {
76
+ const state = getScannerState(frameIndex, width, holdStart, holdEnd);
77
+ const { activePosition, isMovingForward } = state;
78
+ let result = "";
79
+ for (let i = 0; i < width; i++) {
80
+ // Calculate directional distance (positive = trailing behind)
81
+ const directionalDistance = isMovingForward
82
+ ? activePosition - i // Forward: trail is to the left
83
+ : i - activePosition; // Backward: trail is to the right
84
+ if (directionalDistance >= 0 && directionalDistance < trailLength) {
85
+ // Active position with color gradient
86
+ const colorIdx = Math.min(directionalDistance, gradient.length - 1);
87
+ result += ansi256Fg(gradient[colorIdx]) + "■" + RESET;
88
+ }
89
+ else {
90
+ // Inactive position
91
+ result += ansi256Fg(INACTIVE_COLOR) + "⬝" + RESET;
92
+ }
93
+ }
94
+ return result;
95
+ }
96
+ /**
97
+ * Calculate total frames in one complete cycle
98
+ */
99
+ function getTotalFrames(width, holdStart, holdEnd) {
100
+ return width + holdEnd + (width - 1) + holdStart;
101
+ }
102
+ // =============================================================================
103
+ // Spinner Class
104
+ // =============================================================================
105
+ export class Spinner {
106
+ intervalId = null;
107
+ frameIndex = 0;
108
+ width;
109
+ holdStart;
110
+ holdEnd;
111
+ trailLength;
112
+ gradient;
113
+ interval;
114
+ message = "";
115
+ totalFrames;
116
+ constructor(options = {}) {
117
+ this.width = options.width ?? 8;
118
+ this.holdStart = options.holdStart ?? 30;
119
+ this.holdEnd = options.holdEnd ?? 9;
120
+ this.trailLength = options.trailLength ?? 4;
121
+ this.interval = options.interval ?? 40;
122
+ const colorName = options.color ?? "cyan";
123
+ this.gradient = COLOR_GRADIENTS[colorName] || COLOR_GRADIENTS.cyan;
124
+ this.totalFrames = getTotalFrames(this.width, this.holdStart, this.holdEnd);
125
+ }
126
+ /**
127
+ * Start the spinner with a message
128
+ */
129
+ start(message) {
130
+ this.message = message;
131
+ this.frameIndex = 0;
132
+ // Hide cursor
133
+ process.stdout.write(HIDE_CURSOR);
134
+ this.intervalId = setInterval(() => {
135
+ const frame = generateColoredFrame(this.frameIndex, this.width, this.holdStart, this.holdEnd, this.trailLength, this.gradient);
136
+ process.stdout.write(`${CLEAR_LINE} ${frame} ${this.message}`);
137
+ this.frameIndex = (this.frameIndex + 1) % this.totalFrames;
138
+ }, this.interval);
139
+ }
140
+ /**
141
+ * Update the spinner message while running
142
+ */
143
+ update(message) {
144
+ this.message = message;
145
+ }
146
+ /**
147
+ * Stop the spinner and show a success message
148
+ */
149
+ success(message) {
150
+ this.stop();
151
+ console.log(` \x1b[32m✓\x1b[0m ${message}`);
152
+ }
153
+ /**
154
+ * Stop the spinner and show an error message
155
+ */
156
+ error(message) {
157
+ this.stop();
158
+ console.log(` \x1b[31m✗\x1b[0m ${message}`);
159
+ }
160
+ /**
161
+ * Stop the spinner without a message
162
+ */
163
+ stop() {
164
+ if (this.intervalId) {
165
+ clearInterval(this.intervalId);
166
+ this.intervalId = null;
167
+ }
168
+ process.stdout.write(CLEAR_LINE);
169
+ process.stdout.write(SHOW_CURSOR);
170
+ }
171
+ /**
172
+ * Check if spinner is currently running
173
+ */
174
+ isSpinning() {
175
+ return this.intervalId !== null;
176
+ }
177
+ }
178
+ // =============================================================================
179
+ // Convenience Functions
180
+ // =============================================================================
181
+ /**
182
+ * Create a spinner with default OpenCode settings
183
+ */
184
+ export function createSpinner(options) {
185
+ return new Spinner(options);
186
+ }
187
+ /**
188
+ * Run an async function with a spinner
189
+ */
190
+ export async function withSpinner(message, fn, options) {
191
+ const spinner = new Spinner(options);
192
+ spinner.start(message);
193
+ try {
194
+ const result = await fn();
195
+ spinner.success(options?.successMessage ?? message);
196
+ return result;
197
+ }
198
+ catch (error) {
199
+ spinner.error(options?.errorMessage ?? `Failed: ${message}`);
200
+ throw error;
201
+ }
202
+ }
203
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../src/spinner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Vibetracking CLI Submit Command
3
+ * Submits local token usage data to the platform
4
+ */
5
+ interface SubmitOptions {
6
+ opencode?: boolean;
7
+ claude?: boolean;
8
+ codex?: boolean;
9
+ gemini?: boolean;
10
+ cursor?: boolean;
11
+ amp?: boolean;
12
+ droid?: boolean;
13
+ since?: string;
14
+ until?: string;
15
+ year?: string;
16
+ dryRun?: boolean;
17
+ }
18
+ /**
19
+ * Submit command - sends usage data to the platform
20
+ */
21
+ export declare function submit(options?: SubmitOptions): Promise<void>;
22
+ export {};
23
+ //# sourceMappingURL=submit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAuBD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IvE"}
package/dist/submit.js ADDED
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Vibetracking CLI Submit Command
3
+ * Submits local token usage data to the platform
4
+ */
5
+ import pc from "picocolors";
6
+ import { loadCredentials, getApiBaseUrl } from "./credentials.js";
7
+ import { parseLocalSourcesAsync, finalizeReportAndGraphAsync } from "./native.js";
8
+ import { syncCursorCache, loadCursorCredentials } from "./cursor.js";
9
+ import { formatCurrency } from "./table.js";
10
+ /**
11
+ * Submit command - sends usage data to the platform
12
+ */
13
+ export async function submit(options = {}) {
14
+ // Step 1: Check if logged in
15
+ const credentials = loadCredentials();
16
+ if (!credentials) {
17
+ console.log(pc.yellow("\n Not logged in."));
18
+ console.log(pc.gray(" Run 'vibetracking login' first.\n"));
19
+ process.exit(1);
20
+ }
21
+ console.log(pc.cyan("\n Vibetracking - Submit Usage Data\n"));
22
+ console.log(pc.gray(" Scanning local session data..."));
23
+ const hasFilter = options.opencode || options.claude || options.codex || options.gemini || options.cursor || options.amp || options.droid;
24
+ let sources;
25
+ let includeCursor = true;
26
+ if (hasFilter) {
27
+ sources = [];
28
+ if (options.opencode)
29
+ sources.push("opencode");
30
+ if (options.claude)
31
+ sources.push("claude");
32
+ if (options.codex)
33
+ sources.push("codex");
34
+ if (options.gemini)
35
+ sources.push("gemini");
36
+ if (options.cursor)
37
+ sources.push("cursor");
38
+ if (options.amp)
39
+ sources.push("amp");
40
+ if (options.droid)
41
+ sources.push("droid");
42
+ includeCursor = sources.includes("cursor");
43
+ }
44
+ // Filter out cursor from local sources (it's handled separately via sync)
45
+ const localSources = sources?.filter((s) => s !== "cursor");
46
+ let data;
47
+ try {
48
+ // Two-phase processing (same as TUI) for consistency:
49
+ // Phase 1: Parse local sources + sync cursor in parallel
50
+ const [localMessages, cursorSync] = await Promise.all([
51
+ parseLocalSourcesAsync({
52
+ sources: localSources,
53
+ since: options.since,
54
+ until: options.until,
55
+ year: options.year,
56
+ }),
57
+ includeCursor && loadCursorCredentials()
58
+ ? syncCursorCache()
59
+ : Promise.resolve({ synced: false, rows: 0 }),
60
+ ]);
61
+ // Phase 2: Finalize with pricing (combines local + cursor)
62
+ // Single subprocess call ensures consistent pricing for both report and graph
63
+ const { report, graph } = await finalizeReportAndGraphAsync({
64
+ localMessages,
65
+ includeCursor: includeCursor && cursorSync.synced,
66
+ since: options.since,
67
+ until: options.until,
68
+ year: options.year,
69
+ });
70
+ // Use graph structure for submission, report's cost for display
71
+ data = graph;
72
+ data.summary.totalCost = report.totalCost;
73
+ }
74
+ catch (error) {
75
+ console.error(pc.red(`\n Error generating data: ${error.message}\n`));
76
+ process.exit(1);
77
+ }
78
+ // Step 4: Show summary
79
+ console.log(pc.white(" Data to submit:"));
80
+ console.log(pc.gray(` Date range: ${data.meta.dateRange.start} to ${data.meta.dateRange.end}`));
81
+ console.log(pc.gray(` Active days: ${data.summary.activeDays}`));
82
+ console.log(pc.gray(` Total tokens: ${data.summary.totalTokens.toLocaleString()}`));
83
+ console.log(pc.gray(` Total cost: ${formatCurrency(data.summary.totalCost)}`));
84
+ console.log(pc.gray(` Sources: ${data.summary.sources.join(", ")}`));
85
+ console.log(pc.gray(` Models: ${data.summary.models.length} models`));
86
+ console.log();
87
+ if (data.summary.totalTokens === 0) {
88
+ console.log(pc.yellow(" No usage data found to submit.\n"));
89
+ return;
90
+ }
91
+ // Step 5: Dry run check
92
+ if (options.dryRun) {
93
+ console.log(pc.yellow(" Dry run - not submitting data.\n"));
94
+ return;
95
+ }
96
+ // Step 6: Submit to server
97
+ console.log(pc.gray(" Submitting to server..."));
98
+ const baseUrl = getApiBaseUrl();
99
+ try {
100
+ const response = await fetch(`${baseUrl}/api/submit`, {
101
+ method: "POST",
102
+ headers: {
103
+ "Content-Type": "application/json",
104
+ Authorization: `Bearer ${credentials.token}`,
105
+ },
106
+ body: JSON.stringify(data),
107
+ });
108
+ const result = await response.json();
109
+ if (!response.ok) {
110
+ console.error(pc.red(`\n Error: ${result.error || "Submission failed"}`));
111
+ if (result.details) {
112
+ for (const detail of result.details) {
113
+ console.error(pc.gray(` - ${detail}`));
114
+ }
115
+ }
116
+ console.log();
117
+ process.exit(1);
118
+ }
119
+ // Success!
120
+ console.log(pc.green("\n Successfully submitted!"));
121
+ console.log();
122
+ console.log(pc.white(" Summary:"));
123
+ console.log(pc.gray(` Submission ID: ${result.submissionId}`));
124
+ console.log(pc.gray(` Total tokens: ${result.metrics?.totalTokens?.toLocaleString()}`));
125
+ console.log(pc.gray(` Total cost: ${formatCurrency(result.metrics?.totalCost || 0)}`));
126
+ console.log(pc.gray(` Active days: ${result.metrics?.activeDays}`));
127
+ console.log();
128
+ console.log(pc.cyan(` View your profile: ${baseUrl}/u/${credentials.username}`));
129
+ console.log();
130
+ if (result.warnings && result.warnings.length > 0) {
131
+ console.log(pc.yellow(" Warnings:"));
132
+ for (const warning of result.warnings) {
133
+ console.log(pc.gray(` - ${warning}`));
134
+ }
135
+ console.log();
136
+ }
137
+ }
138
+ catch (error) {
139
+ console.error(pc.red(`\n Error: Failed to connect to server.`));
140
+ console.error(pc.gray(` ${error.message}\n`));
141
+ process.exit(1);
142
+ }
143
+ }
144
+ //# sourceMappingURL=submit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../src/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Table formatting utilities for CLI output
3
+ */
4
+ export declare function formatCurrency(amount: number): string;
5
+ export declare function formatNumber(num: number): string;
6
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
package/dist/table.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Table formatting utilities for CLI output
3
+ */
4
+ export function formatCurrency(amount) {
5
+ return `$${amount.toFixed(2)}`;
6
+ }
7
+ export function formatNumber(num) {
8
+ return num.toLocaleString("en-US");
9
+ }
10
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "vibetracking",
3
+ "version": "0.1.0",
4
+ "description": "Track AI coding assistant token usage and costs across Claude Code, Codex, Cursor, and more.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/cli.js",
8
+ "bin": {
9
+ "vibetracking": "./dist/cli.js"
10
+ },
11
+ "files": [
12
+ "dist/**/*"
13
+ ],
14
+ "os": [
15
+ "darwin",
16
+ "linux",
17
+ "win32"
18
+ ],
19
+ "publishConfig": {
20
+ "registry": "https://registry.npmjs.org/",
21
+ "access": "public"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/lfglabs/vibetracking.git",
26
+ "directory": "packages/cli"
27
+ },
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "dev": "bun run --conditions=browser src/cli.ts",
31
+ "start": "bun run --conditions=browser dist/cli.js",
32
+ "prepublishOnly": "bun run build"
33
+ },
34
+ "dependencies": {
35
+ "@starknetid/vibetracking-core": "^0.1.0",
36
+ "clipboardy": "^5.0.2",
37
+ "commander": "^14.0.2",
38
+ "csv-parse": "^5.6.0",
39
+ "date-fns": "^4.1.0",
40
+ "open": "^10.1.0",
41
+ "pako": "^2.1.0",
42
+ "picocolors": "^1.1.1"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^20.0.0",
46
+ "@types/pako": "^2.0.4",
47
+ "typescript": "^5.0.0"
48
+ },
49
+ "engines": {
50
+ "bun": ">= 1.0"
51
+ },
52
+ "keywords": [
53
+ "vibetracking",
54
+ "claude-code",
55
+ "cursor",
56
+ "codex",
57
+ "ai-usage",
58
+ "token-tracker",
59
+ "cli"
60
+ ]
61
+ }