@praeviso/code-env-switch 0.1.4 → 0.1.5

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.
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCodexUsageTotalsFromInput = getCodexUsageTotalsFromInput;
4
+ exports.getCodexInputUsage = getCodexInputUsage;
5
+ const utils_1 = require("../utils");
6
+ function resolveOutputTokens(record) {
7
+ var _a, _b;
8
+ const outputTokens = (_a = (0, utils_1.firstNumber)(record.outputTokens, record.output, record.output_tokens)) !== null && _a !== void 0 ? _a : null;
9
+ const reasoningTokens = (_b = (0, utils_1.firstNumber)(record.reasoning_output_tokens, record.reasoningOutputTokens, record.reasoning_output)) !== null && _b !== void 0 ? _b : null;
10
+ if (outputTokens === null && reasoningTokens === null)
11
+ return null;
12
+ if (reasoningTokens === null)
13
+ return outputTokens;
14
+ return (outputTokens || 0) + reasoningTokens;
15
+ }
16
+ function parseCodexUsageTotalsRecord(record) {
17
+ var _a, _b, _c, _d;
18
+ const inputTokens = (_a = (0, utils_1.firstNumber)(record.inputTokens, record.input, record.input_tokens)) !== null && _a !== void 0 ? _a : null;
19
+ const outputTokens = resolveOutputTokens(record);
20
+ const cacheRead = (_b = (0, utils_1.firstNumber)(record.cached_input_tokens, record.cachedInputTokens, record.cache_read_input_tokens, record.cacheReadInputTokens, record.cache_read, record.cacheRead)) !== null && _b !== void 0 ? _b : null;
21
+ const cacheWrite = (_c = (0, utils_1.firstNumber)(record.cache_creation_input_tokens, record.cacheCreationInputTokens, record.cache_write_input_tokens, record.cacheWriteInputTokens, record.cache_write, record.cacheWrite)) !== null && _c !== void 0 ? _c : null;
22
+ const totalTokens = (_d = (0, utils_1.firstNumber)(record.totalTokens, record.total, record.total_tokens)) !== null && _d !== void 0 ? _d : null;
23
+ let computedTotal = null;
24
+ if (inputTokens !== null ||
25
+ outputTokens !== null ||
26
+ cacheRead !== null ||
27
+ cacheWrite !== null) {
28
+ computedTotal =
29
+ (inputTokens || 0) +
30
+ (outputTokens || 0) +
31
+ (cacheRead || 0) +
32
+ (cacheWrite || 0);
33
+ }
34
+ const resolvedTotal = totalTokens !== null && totalTokens !== void 0 ? totalTokens : computedTotal;
35
+ if (inputTokens === null &&
36
+ outputTokens === null &&
37
+ cacheRead === null &&
38
+ cacheWrite === null &&
39
+ resolvedTotal === null) {
40
+ return null;
41
+ }
42
+ return {
43
+ inputTokens,
44
+ outputTokens,
45
+ cacheReadTokens: cacheRead,
46
+ cacheWriteTokens: cacheWrite,
47
+ totalTokens: resolvedTotal,
48
+ };
49
+ }
50
+ function parseCodexInputUsageRecord(record) {
51
+ var _a, _b, _c, _d, _e, _f;
52
+ const todayTokens = (_a = (0, utils_1.firstNumber)(record.todayTokens, record.today, record.today_tokens, record.daily, record.daily_tokens)) !== null && _a !== void 0 ? _a : null;
53
+ const totalTokens = (_b = (0, utils_1.firstNumber)(record.totalTokens, record.total, record.total_tokens)) !== null && _b !== void 0 ? _b : null;
54
+ const inputTokens = (_c = (0, utils_1.firstNumber)(record.inputTokens, record.input, record.input_tokens)) !== null && _c !== void 0 ? _c : null;
55
+ const outputTokens = resolveOutputTokens(record);
56
+ const cacheRead = (_d = (0, utils_1.firstNumber)(record.cached_input_tokens, record.cachedInputTokens, record.cache_read_input_tokens, record.cacheReadInputTokens, record.cache_read, record.cacheRead)) !== null && _d !== void 0 ? _d : null;
57
+ const cacheWrite = (_e = (0, utils_1.firstNumber)(record.cache_creation_input_tokens, record.cacheCreationInputTokens, record.cache_write_input_tokens, record.cacheWriteInputTokens, record.cache_write, record.cacheWrite)) !== null && _e !== void 0 ? _e : null;
58
+ if (todayTokens === null &&
59
+ totalTokens === null &&
60
+ inputTokens === null &&
61
+ outputTokens === null &&
62
+ cacheRead === null &&
63
+ cacheWrite === null) {
64
+ return null;
65
+ }
66
+ const hasCacheTokens = cacheRead !== null || cacheWrite !== null;
67
+ const computedTotal = hasCacheTokens
68
+ ? (inputTokens || 0) +
69
+ (outputTokens || 0) +
70
+ (cacheRead || 0) +
71
+ (cacheWrite || 0)
72
+ : null;
73
+ const resolvedTodayTokens = hasCacheTokens
74
+ ? (_f = todayTokens !== null && todayTokens !== void 0 ? todayTokens : totalTokens) !== null && _f !== void 0 ? _f : computedTotal
75
+ : todayTokens;
76
+ return {
77
+ todayTokens: resolvedTodayTokens,
78
+ totalTokens: totalTokens !== null && totalTokens !== void 0 ? totalTokens : null,
79
+ inputTokens,
80
+ outputTokens,
81
+ cacheReadTokens: cacheRead,
82
+ cacheWriteTokens: cacheWrite,
83
+ };
84
+ }
85
+ function resolveNestedRecord(record, ...keys) {
86
+ for (const key of keys) {
87
+ if ((0, utils_1.isRecord)(record[key])) {
88
+ return record[key];
89
+ }
90
+ }
91
+ return null;
92
+ }
93
+ function getCodexUsageTotalsFromInput(input) {
94
+ if (!input)
95
+ return null;
96
+ const tokenUsage = input.token_usage;
97
+ if (typeof tokenUsage === "number") {
98
+ return {
99
+ inputTokens: null,
100
+ outputTokens: null,
101
+ cacheReadTokens: null,
102
+ cacheWriteTokens: null,
103
+ totalTokens: (0, utils_1.coerceNumber)(tokenUsage),
104
+ };
105
+ }
106
+ if ((0, utils_1.isRecord)(tokenUsage)) {
107
+ const totalUsage = resolveNestedRecord(tokenUsage, "total_token_usage", "totalTokenUsage");
108
+ if (totalUsage) {
109
+ const parsed = parseCodexUsageTotalsRecord(totalUsage);
110
+ if (parsed)
111
+ return parsed;
112
+ }
113
+ const lastUsage = resolveNestedRecord(tokenUsage, "last_token_usage", "lastTokenUsage");
114
+ if (lastUsage) {
115
+ const parsed = parseCodexUsageTotalsRecord(lastUsage);
116
+ if (parsed)
117
+ return parsed;
118
+ }
119
+ const parsed = parseCodexUsageTotalsRecord(tokenUsage);
120
+ if (parsed)
121
+ return parsed;
122
+ }
123
+ if ((0, utils_1.isRecord)(input.usage)) {
124
+ return parseCodexUsageTotalsRecord(input.usage);
125
+ }
126
+ return null;
127
+ }
128
+ function getCodexInputUsage(input) {
129
+ if (!input)
130
+ return null;
131
+ if ((0, utils_1.isRecord)(input.usage)) {
132
+ const parsed = parseCodexInputUsageRecord(input.usage);
133
+ if (parsed)
134
+ return parsed;
135
+ return input.usage;
136
+ }
137
+ const tokenUsage = input.token_usage;
138
+ if (tokenUsage !== null && tokenUsage !== undefined) {
139
+ if (typeof tokenUsage === "number") {
140
+ return {
141
+ todayTokens: null,
142
+ totalTokens: (0, utils_1.coerceNumber)(tokenUsage),
143
+ inputTokens: null,
144
+ outputTokens: null,
145
+ cacheReadTokens: null,
146
+ cacheWriteTokens: null,
147
+ };
148
+ }
149
+ if ((0, utils_1.isRecord)(tokenUsage)) {
150
+ const totalUsage = resolveNestedRecord(tokenUsage, "total_token_usage", "totalTokenUsage");
151
+ if (totalUsage) {
152
+ const parsed = parseCodexInputUsageRecord(totalUsage);
153
+ if (parsed)
154
+ return parsed;
155
+ }
156
+ const lastUsage = resolveNestedRecord(tokenUsage, "last_token_usage", "lastTokenUsage");
157
+ if (lastUsage) {
158
+ const parsed = parseCodexInputUsageRecord(lastUsage);
159
+ if (parsed)
160
+ return parsed;
161
+ }
162
+ const parsed = parseCodexInputUsageRecord(tokenUsage);
163
+ if (parsed)
164
+ return parsed;
165
+ }
166
+ }
167
+ return null;
168
+ }
@@ -1,88 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseUsageTotalsRecord = parseUsageTotalsRecord;
4
3
  exports.getUsageTotalsFromInput = getUsageTotalsFromInput;
5
4
  exports.normalizeInputUsage = normalizeInputUsage;
6
5
  exports.resolveUsageFromRecords = resolveUsageFromRecords;
7
6
  const type_1 = require("../profile/type");
8
7
  const usage_1 = require("../usage");
9
8
  const utils_1 = require("./utils");
10
- function parseUsageTotalsRecord(record) {
11
- var _a, _b, _c, _d, _e;
12
- const inputTokens = (_a = (0, utils_1.firstNumber)(record.inputTokens, record.input, record.input_tokens)) !== null && _a !== void 0 ? _a : null;
13
- const outputTokens = (_b = (0, utils_1.firstNumber)(record.outputTokens, record.output, record.output_tokens)) !== null && _b !== void 0 ? _b : null;
14
- const totalTokens = (_c = (0, utils_1.firstNumber)(record.totalTokens, record.total, record.total_tokens)) !== null && _c !== void 0 ? _c : null;
15
- const cacheRead = (_d = (0, utils_1.firstNumber)(record.cache_read_input_tokens, record.cacheReadInputTokens, record.cache_read, record.cacheRead)) !== null && _d !== void 0 ? _d : null;
16
- const cacheWrite = (_e = (0, utils_1.firstNumber)(record.cache_creation_input_tokens, record.cacheCreationInputTokens, record.cache_write_input_tokens, record.cacheWriteInputTokens, record.cache_write, record.cacheWrite)) !== null && _e !== void 0 ? _e : null;
17
- let computedTotal = null;
18
- if (inputTokens !== null ||
19
- outputTokens !== null ||
20
- cacheRead !== null ||
21
- cacheWrite !== null) {
22
- computedTotal =
23
- (inputTokens || 0) +
24
- (outputTokens || 0) +
25
- (cacheRead || 0) +
26
- (cacheWrite || 0);
27
- }
28
- const resolvedTotal = totalTokens !== null && totalTokens !== void 0 ? totalTokens : computedTotal;
29
- if (inputTokens === null &&
30
- outputTokens === null &&
31
- resolvedTotal === null) {
32
- return null;
33
- }
34
- return {
35
- inputTokens,
36
- outputTokens,
37
- totalTokens: resolvedTotal,
38
- };
39
- }
40
- function getUsageTotalsFromInput(input) {
41
- var _a, _b;
9
+ const claude_1 = require("./usage/claude");
10
+ const codex_1 = require("./usage/codex");
11
+ function getUsageTotalsFromInput(input, type) {
42
12
  if (!input)
43
13
  return null;
44
- const contextWindow = (0, utils_1.isRecord)(input.context_window)
45
- ? input.context_window
46
- : (0, utils_1.isRecord)(input.contextWindow)
47
- ? input.contextWindow
48
- : null;
49
- if (contextWindow) {
50
- const totalInputTokens = (_a = (0, utils_1.firstNumber)(contextWindow.total_input_tokens, contextWindow.totalInputTokens)) !== null && _a !== void 0 ? _a : null;
51
- const totalOutputTokens = (_b = (0, utils_1.firstNumber)(contextWindow.total_output_tokens, contextWindow.totalOutputTokens)) !== null && _b !== void 0 ? _b : null;
52
- if (totalInputTokens !== null || totalOutputTokens !== null) {
53
- return {
54
- inputTokens: totalInputTokens,
55
- outputTokens: totalOutputTokens,
56
- totalTokens: (totalInputTokens || 0) + (totalOutputTokens || 0),
57
- };
58
- }
59
- }
60
- if (typeof input.token_usage === "number") {
61
- return {
62
- inputTokens: null,
63
- outputTokens: null,
64
- totalTokens: (0, utils_1.coerceNumber)(input.token_usage),
65
- };
66
- }
67
- if ((0, utils_1.isRecord)(input.token_usage)) {
68
- const tokenUsage = input.token_usage;
69
- const totalUsage = ((0, utils_1.isRecord)(tokenUsage.total_token_usage)
70
- ? tokenUsage.total_token_usage
71
- : null) ||
72
- ((0, utils_1.isRecord)(tokenUsage.totalTokenUsage)
73
- ? tokenUsage.totalTokenUsage
74
- : null);
75
- if (totalUsage) {
76
- const parsed = parseUsageTotalsRecord(totalUsage);
77
- if (parsed)
78
- return parsed;
79
- }
80
- return parseUsageTotalsRecord(tokenUsage);
14
+ const normalized = (0, type_1.normalizeType)(type || "");
15
+ if (normalized === "codex") {
16
+ return (0, codex_1.getCodexUsageTotalsFromInput)(input);
81
17
  }
82
- if ((0, utils_1.isRecord)(input.usage)) {
83
- return parseUsageTotalsRecord(input.usage);
18
+ if (normalized === "claude") {
19
+ return (0, claude_1.getClaudeUsageTotalsFromInput)(input);
84
20
  }
85
- return null;
21
+ return ((0, codex_1.getCodexUsageTotalsFromInput)(input) ||
22
+ (0, claude_1.getClaudeUsageTotalsFromInput)(input));
86
23
  }
87
24
  function normalizeInputUsage(inputUsage) {
88
25
  if (!inputUsage)
@@ -92,14 +29,19 @@ function normalizeInputUsage(inputUsage) {
92
29
  totalTokens: (0, utils_1.coerceNumber)(inputUsage.totalTokens),
93
30
  inputTokens: (0, utils_1.coerceNumber)(inputUsage.inputTokens),
94
31
  outputTokens: (0, utils_1.coerceNumber)(inputUsage.outputTokens),
32
+ cacheReadTokens: (0, utils_1.coerceNumber)(inputUsage.cacheReadTokens),
33
+ cacheWriteTokens: (0, utils_1.coerceNumber)(inputUsage.cacheWriteTokens),
95
34
  };
96
35
  const hasUsage = usage.todayTokens !== null ||
97
36
  usage.totalTokens !== null ||
98
37
  usage.inputTokens !== null ||
99
- usage.outputTokens !== null;
38
+ usage.outputTokens !== null ||
39
+ usage.cacheReadTokens !== null ||
40
+ usage.cacheWriteTokens !== null;
100
41
  return hasUsage ? usage : null;
101
42
  }
102
43
  function resolveUsageFromRecords(config, configPath, type, profileKey, profileName, syncUsage) {
44
+ var _a, _b, _c, _d;
103
45
  try {
104
46
  const normalized = (0, type_1.normalizeType)(type || "");
105
47
  if (!normalized || (!profileKey && !profileName))
@@ -113,8 +55,10 @@ function resolveUsageFromRecords(config, configPath, type, profileKey, profileNa
113
55
  return {
114
56
  todayTokens: usage.today,
115
57
  totalTokens: usage.total,
116
- inputTokens: null,
117
- outputTokens: null,
58
+ inputTokens: (_a = usage.todayInput) !== null && _a !== void 0 ? _a : null,
59
+ outputTokens: (_b = usage.todayOutput) !== null && _b !== void 0 ? _b : null,
60
+ cacheReadTokens: (_c = usage.todayCacheRead) !== null && _c !== void 0 ? _c : null,
61
+ cacheWriteTokens: (_d = usage.todayCacheWrite) !== null && _d !== void 0 ? _d : null,
118
62
  };
119
63
  }
120
64
  catch {