@dexto/tui 1.6.12 → 1.6.13

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 (66) hide show
  1. package/dist/InkCLIRefactored.cjs +39 -29
  2. package/dist/InkCLIRefactored.d.ts.map +1 -1
  3. package/dist/InkCLIRefactored.js +39 -29
  4. package/dist/components/Footer.cjs +9 -2
  5. package/dist/components/Footer.d.ts +3 -2
  6. package/dist/components/Footer.d.ts.map +1 -1
  7. package/dist/components/Footer.js +17 -3
  8. package/dist/components/modes/AlternateBufferCLI.cjs +2 -1
  9. package/dist/components/modes/AlternateBufferCLI.d.ts.map +1 -1
  10. package/dist/components/modes/AlternateBufferCLI.js +2 -1
  11. package/dist/components/modes/StaticCLI.cjs +2 -1
  12. package/dist/components/modes/StaticCLI.d.ts.map +1 -1
  13. package/dist/components/modes/StaticCLI.js +2 -1
  14. package/dist/components/overlays/ChatGPTUsageCapOverlay.cjs +90 -0
  15. package/dist/components/overlays/ChatGPTUsageCapOverlay.d.ts +19 -0
  16. package/dist/components/overlays/ChatGPTUsageCapOverlay.d.ts.map +1 -0
  17. package/dist/components/overlays/ChatGPTUsageCapOverlay.js +70 -0
  18. package/dist/components/overlays/ModelSelectorRefactored.cjs +263 -38
  19. package/dist/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  20. package/dist/components/overlays/ModelSelectorRefactored.js +267 -38
  21. package/dist/components/overlays/ReasoningOverlay.cjs +1 -1
  22. package/dist/components/overlays/ReasoningOverlay.js +1 -1
  23. package/dist/containers/OverlayContainer.cjs +104 -13
  24. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  25. package/dist/containers/OverlayContainer.js +104 -13
  26. package/dist/hooks/useAgentEvents.cjs +33 -2
  27. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  28. package/dist/hooks/useAgentEvents.js +35 -3
  29. package/dist/hooks/useCLIState.cjs +1 -0
  30. package/dist/hooks/useCLIState.d.ts.map +1 -1
  31. package/dist/hooks/useCLIState.js +1 -0
  32. package/dist/interactive-commands/exit-stats.cjs +16 -0
  33. package/dist/interactive-commands/exit-stats.d.ts +4 -0
  34. package/dist/interactive-commands/exit-stats.d.ts.map +1 -1
  35. package/dist/interactive-commands/exit-stats.js +15 -0
  36. package/dist/interactive-commands/general-commands.cjs +13 -2
  37. package/dist/interactive-commands/general-commands.d.ts.map +1 -1
  38. package/dist/interactive-commands/general-commands.js +14 -3
  39. package/dist/interactive-commands/general-commands.test.cjs +152 -0
  40. package/dist/interactive-commands/general-commands.test.d.ts +2 -0
  41. package/dist/interactive-commands/general-commands.test.d.ts.map +1 -0
  42. package/dist/interactive-commands/general-commands.test.js +151 -0
  43. package/dist/services/processStream.test.cjs +1 -0
  44. package/dist/services/processStream.test.js +1 -0
  45. package/dist/state/initialState.cjs +1 -0
  46. package/dist/state/initialState.d.ts.map +1 -1
  47. package/dist/state/initialState.js +1 -0
  48. package/dist/state/types.d.ts +4 -2
  49. package/dist/state/types.d.ts.map +1 -1
  50. package/dist/utils/chatgpt-rate-limit.cjs +72 -0
  51. package/dist/utils/chatgpt-rate-limit.d.ts +11 -0
  52. package/dist/utils/chatgpt-rate-limit.d.ts.map +1 -0
  53. package/dist/utils/chatgpt-rate-limit.js +49 -0
  54. package/dist/utils/chatgpt-rate-limit.test.cjs +46 -0
  55. package/dist/utils/chatgpt-rate-limit.test.d.ts +2 -0
  56. package/dist/utils/chatgpt-rate-limit.test.d.ts.map +1 -0
  57. package/dist/utils/chatgpt-rate-limit.test.js +49 -0
  58. package/dist/utils/llm-provider-display.cjs +11 -1
  59. package/dist/utils/llm-provider-display.d.ts +2 -2
  60. package/dist/utils/llm-provider-display.d.ts.map +1 -1
  61. package/dist/utils/llm-provider-display.js +11 -1
  62. package/dist/utils/llm-provider-display.test.cjs +15 -0
  63. package/dist/utils/llm-provider-display.test.d.ts +2 -0
  64. package/dist/utils/llm-provider-display.test.d.ts.map +1 -0
  65. package/dist/utils/llm-provider-display.test.js +14 -0
  66. package/package.json +4 -4
@@ -69,6 +69,7 @@ function useCLIState({
69
69
  backgroundTasksRunning: 0,
70
70
  backgroundTasksExpanded: false,
71
71
  backgroundTasks: [],
72
+ chatgptRateLimitStatus: null,
72
73
  planModeActive: false,
73
74
  planModeInitialized: false,
74
75
  commandOutput: null
@@ -1 +1 @@
1
- {"version":3,"file":"useCLIState.d.ts","sourceRoot":"","sources":["../../src/hooks/useCLIState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCLIState.d.ts","sourceRoot":"","sources":["../../src/hooks/useCLIState.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ function useCLIState({
49
49
  backgroundTasksRunning: 0,
50
50
  backgroundTasksExpanded: false,
51
51
  backgroundTasks: [],
52
+ chatgptRateLimitStatus: null,
52
53
  planModeActive: false,
53
54
  planModeInitialized: false,
54
55
  commandOutput: null
@@ -20,9 +20,18 @@ var exit_stats_exports = {};
20
20
  __export(exit_stats_exports, {
21
21
  clearExitStats: () => clearExitStats,
22
22
  getExitStats: () => getExitStats,
23
+ hasMeaningfulTokenUsage: () => hasMeaningfulTokenUsage,
23
24
  setExitStats: () => setExitStats
24
25
  });
25
26
  module.exports = __toCommonJS(exit_stats_exports);
27
+ const TOKEN_USAGE_FIELDS = [
28
+ "inputTokens",
29
+ "outputTokens",
30
+ "reasoningTokens",
31
+ "cacheReadTokens",
32
+ "cacheWriteTokens",
33
+ "totalTokens"
34
+ ];
26
35
  let exitStats = null;
27
36
  function setExitStats(stats) {
28
37
  exitStats = stats;
@@ -33,9 +42,16 @@ function getExitStats() {
33
42
  function clearExitStats() {
34
43
  exitStats = null;
35
44
  }
45
+ function hasMeaningfulTokenUsage(tokenUsage) {
46
+ if (!tokenUsage) {
47
+ return false;
48
+ }
49
+ return TOKEN_USAGE_FIELDS.some((field) => (tokenUsage[field] ?? 0) > 0);
50
+ }
36
51
  // Annotate the CommonJS export names for ESM import in node:
37
52
  0 && (module.exports = {
38
53
  clearExitStats,
39
54
  getExitStats,
55
+ hasMeaningfulTokenUsage,
40
56
  setExitStats
41
57
  });
@@ -6,6 +6,7 @@
6
6
  * ensuring they appear at the bottom of the terminal.
7
7
  */
8
8
  import type { SessionMetadata } from '@dexto/core';
9
+ type ExitTokenUsage = NonNullable<SessionMetadata['tokenUsage']>;
9
10
  export interface ExitSessionStats {
10
11
  sessionId?: string;
11
12
  duration?: string;
@@ -17,8 +18,11 @@ export interface ExitSessionStats {
17
18
  tokenUsage?: NonNullable<SessionMetadata['tokenUsage']>;
18
19
  estimatedCost?: SessionMetadata['estimatedCost'];
19
20
  modelStats?: NonNullable<SessionMetadata['modelStats']>;
21
+ usageNote?: string;
20
22
  }
21
23
  export declare function setExitStats(stats: ExitSessionStats): void;
22
24
  export declare function getExitStats(): ExitSessionStats | null;
23
25
  export declare function clearExitStats(): void;
26
+ export declare function hasMeaningfulTokenUsage(tokenUsage: SessionMetadata['tokenUsage'] | undefined): tokenUsage is ExitTokenUsage;
27
+ export {};
24
28
  //# sourceMappingURL=exit-stats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit-stats.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/exit-stats.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;CAC3D;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAEtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
1
+ {"version":3,"file":"exit-stats.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/exit-stats.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;AAWjE,MAAM,WAAW,gBAAgB;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAE1D;AAED,wBAAgB,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAEtD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,SAAS,GACtD,UAAU,IAAI,cAAc,CAM9B"}
@@ -1,3 +1,11 @@
1
+ const TOKEN_USAGE_FIELDS = [
2
+ "inputTokens",
3
+ "outputTokens",
4
+ "reasoningTokens",
5
+ "cacheReadTokens",
6
+ "cacheWriteTokens",
7
+ "totalTokens"
8
+ ];
1
9
  let exitStats = null;
2
10
  function setExitStats(stats) {
3
11
  exitStats = stats;
@@ -8,8 +16,15 @@ function getExitStats() {
8
16
  function clearExitStats() {
9
17
  exitStats = null;
10
18
  }
19
+ function hasMeaningfulTokenUsage(tokenUsage) {
20
+ if (!tokenUsage) {
21
+ return false;
22
+ }
23
+ return TOKEN_USAGE_FIELDS.some((field) => (tokenUsage[field] ?? 0) > 0);
24
+ }
11
25
  export {
12
26
  clearExitStats,
13
27
  getExitStats,
28
+ hasMeaningfulTokenUsage,
14
29
  setExitStats
15
30
  };
@@ -34,6 +34,7 @@ __export(general_commands_exports, {
34
34
  module.exports = __toCommonJS(general_commands_exports);
35
35
  var import_chalk = __toESM(require("chalk"), 1);
36
36
  var import_child_process = require("child_process");
37
+ var import_core = require("@dexto/core");
37
38
  var import_format_output = require("./utils/format-output.js");
38
39
  var import_command_output = require("./utils/command-output.js");
39
40
  var import_clipboardUtils = require("../utils/clipboardUtils.js");
@@ -60,6 +61,10 @@ function wrapCommandWithRcSource(command, shell) {
60
61
  }
61
62
  return `source "${rcFile}" 2>/dev/null; eval '${escapedCommand}'`;
62
63
  }
64
+ function isChatGPTLoginConfig(agent, sessionId) {
65
+ const llmConfig = agent.getCurrentLLMConfig(sessionId);
66
+ return llmConfig.provider === "openai-compatible" && (0, import_core.parseCodexBaseURL)(llmConfig.baseURL)?.authMode === "chatgpt";
67
+ }
63
68
  async function executeShellCommand(command, cwd, timeoutMs = 3e4) {
64
69
  return new Promise((resolve) => {
65
70
  const userShell = process.env.SHELL || "/bin/sh";
@@ -161,6 +166,11 @@ const generalCommands = [
161
166
  agent.getSessionHistory(sessionId)
162
167
  ]);
163
168
  if (sessionMetadata) {
169
+ const usedChatGPTLogin = sessionMetadata.usageTracking?.hasUntrackedChatGPTLoginUsage || isChatGPTLoginConfig(agent, sessionId);
170
+ const hasTrackedTokenUsage = (0, import_exit_stats.hasMeaningfulTokenUsage)(
171
+ sessionMetadata.tokenUsage
172
+ );
173
+ const usageNote = usedChatGPTLogin && hasTrackedTokenUsage ? "Partial totals only. This session used ChatGPT Login and other tracked models; ChatGPT token counts are not available in Dexto." : usedChatGPTLogin ? "Tracked via ChatGPT Login. Token counts are not available in Dexto for this session." : void 0;
164
174
  let durationStr;
165
175
  if (sessionMetadata.createdAt) {
166
176
  const duration = Date.now() - new Date(sessionMetadata.createdAt).getTime();
@@ -177,7 +187,7 @@ const generalCommands = [
177
187
  ...sessionId && { sessionId },
178
188
  ...durationStr && { duration: durationStr },
179
189
  messageCount,
180
- ...sessionMetadata.tokenUsage && {
190
+ ...sessionMetadata.tokenUsage && hasTrackedTokenUsage && {
181
191
  tokenUsage: sessionMetadata.tokenUsage
182
192
  },
183
193
  ...sessionMetadata.estimatedCost !== void 0 && {
@@ -185,7 +195,8 @@ const generalCommands = [
185
195
  },
186
196
  ...sessionMetadata.modelStats && {
187
197
  modelStats: sessionMetadata.modelStats
188
- }
198
+ },
199
+ ...usageNote && { usageNote }
189
200
  });
190
201
  }
191
202
  }
@@ -1 +1 @@
1
- {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AAkGnG;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,iBAAiB,EAAE,GAAG,iBAAiB,CAgC9F;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAyd9C,CAAC"}
1
+ {"version":3,"file":"general-commands.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/general-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAwC,MAAM,qBAAqB,CAAC;AA0GnG;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,iBAAiB,EAAE,GAAG,iBAAiB,CAgC9F;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,EAwe9C,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import chalk from "chalk";
2
2
  import { spawn } from "child_process";
3
+ import { parseCodexBaseURL } from "@dexto/core";
3
4
  import { formatForInkCli } from "./utils/format-output.js";
4
5
  import { CommandOutputHelper } from "./utils/command-output.js";
5
6
  import { writeToClipboard } from "../utils/clipboardUtils.js";
6
- import { setExitStats } from "./exit-stats.js";
7
+ import { hasMeaningfulTokenUsage, setExitStats } from "./exit-stats.js";
7
8
  import { triggerExit } from "./exit-handler.js";
8
9
  function getShellRcFile(shell) {
9
10
  const home = process.env.HOME;
@@ -26,6 +27,10 @@ function wrapCommandWithRcSource(command, shell) {
26
27
  }
27
28
  return `source "${rcFile}" 2>/dev/null; eval '${escapedCommand}'`;
28
29
  }
30
+ function isChatGPTLoginConfig(agent, sessionId) {
31
+ const llmConfig = agent.getCurrentLLMConfig(sessionId);
32
+ return llmConfig.provider === "openai-compatible" && parseCodexBaseURL(llmConfig.baseURL)?.authMode === "chatgpt";
33
+ }
29
34
  async function executeShellCommand(command, cwd, timeoutMs = 3e4) {
30
35
  return new Promise((resolve) => {
31
36
  const userShell = process.env.SHELL || "/bin/sh";
@@ -127,6 +132,11 @@ const generalCommands = [
127
132
  agent.getSessionHistory(sessionId)
128
133
  ]);
129
134
  if (sessionMetadata) {
135
+ const usedChatGPTLogin = sessionMetadata.usageTracking?.hasUntrackedChatGPTLoginUsage || isChatGPTLoginConfig(agent, sessionId);
136
+ const hasTrackedTokenUsage = hasMeaningfulTokenUsage(
137
+ sessionMetadata.tokenUsage
138
+ );
139
+ const usageNote = usedChatGPTLogin && hasTrackedTokenUsage ? "Partial totals only. This session used ChatGPT Login and other tracked models; ChatGPT token counts are not available in Dexto." : usedChatGPTLogin ? "Tracked via ChatGPT Login. Token counts are not available in Dexto for this session." : void 0;
130
140
  let durationStr;
131
141
  if (sessionMetadata.createdAt) {
132
142
  const duration = Date.now() - new Date(sessionMetadata.createdAt).getTime();
@@ -143,7 +153,7 @@ const generalCommands = [
143
153
  ...sessionId && { sessionId },
144
154
  ...durationStr && { duration: durationStr },
145
155
  messageCount,
146
- ...sessionMetadata.tokenUsage && {
156
+ ...sessionMetadata.tokenUsage && hasTrackedTokenUsage && {
147
157
  tokenUsage: sessionMetadata.tokenUsage
148
158
  },
149
159
  ...sessionMetadata.estimatedCost !== void 0 && {
@@ -151,7 +161,8 @@ const generalCommands = [
151
161
  },
152
162
  ...sessionMetadata.modelStats && {
153
163
  modelStats: sessionMetadata.modelStats
154
- }
164
+ },
165
+ ...usageNote && { usageNote }
155
166
  });
156
167
  }
157
168
  }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var import_vitest = require("vitest");
3
+ var import_general_commands = require("./general-commands.js");
4
+ var import_exit_stats = require("./exit-stats.js");
5
+ const { mockTriggerExit } = import_vitest.vi.hoisted(() => ({
6
+ mockTriggerExit: import_vitest.vi.fn()
7
+ }));
8
+ import_vitest.vi.mock("./exit-handler.js", () => ({
9
+ triggerExit: mockTriggerExit
10
+ }));
11
+ function getExitCommand() {
12
+ const exitCommand = import_general_commands.generalCommands.find((command) => command.name === "exit");
13
+ if (!exitCommand) {
14
+ throw new Error("Exit command not found");
15
+ }
16
+ return exitCommand;
17
+ }
18
+ (0, import_vitest.describe)("generalCommands /exit", () => {
19
+ (0, import_vitest.beforeEach)(() => {
20
+ (0, import_exit_stats.clearExitStats)();
21
+ mockTriggerExit.mockReset();
22
+ });
23
+ (0, import_vitest.it)("shows a ChatGPT usage note instead of zero token totals", async () => {
24
+ const exitCommand = getExitCommand();
25
+ const agent = {
26
+ sessionManager: {
27
+ getSessionMetadata: import_vitest.vi.fn().mockResolvedValue({
28
+ createdAt: Date.now() - 65e3,
29
+ tokenUsage: {
30
+ inputTokens: 0,
31
+ outputTokens: 0,
32
+ reasoningTokens: 0,
33
+ cacheReadTokens: 0,
34
+ cacheWriteTokens: 0,
35
+ totalTokens: 0
36
+ },
37
+ usageTracking: {
38
+ hasUntrackedChatGPTLoginUsage: true
39
+ }
40
+ })
41
+ },
42
+ getSessionHistory: import_vitest.vi.fn().mockResolvedValue([
43
+ { role: "user", content: "hi" },
44
+ { role: "assistant", content: "hello" }
45
+ ]),
46
+ getCurrentLLMConfig: import_vitest.vi.fn().mockReturnValue({
47
+ provider: "openai-compatible",
48
+ model: "gpt-5.4",
49
+ baseURL: "codex://chatgpt"
50
+ }),
51
+ logger: {
52
+ debug: import_vitest.vi.fn(),
53
+ error: import_vitest.vi.fn()
54
+ }
55
+ };
56
+ const result = await exitCommand.handler([], agent, {
57
+ sessionId: "session-1",
58
+ configFilePath: null
59
+ });
60
+ (0, import_vitest.expect)(result).toBe(true);
61
+ (0, import_vitest.expect)(mockTriggerExit).toHaveBeenCalledTimes(1);
62
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()).toMatchObject({
63
+ sessionId: "session-1",
64
+ messageCount: {
65
+ total: 2,
66
+ user: 1,
67
+ assistant: 1
68
+ },
69
+ usageNote: "Tracked via ChatGPT Login. Token counts are not available in Dexto for this session."
70
+ });
71
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()?.tokenUsage).toBeUndefined();
72
+ });
73
+ (0, import_vitest.it)("shows partial usage note for mixed ChatGPT and tracked models", async () => {
74
+ const exitCommand = getExitCommand();
75
+ const tokenUsage = {
76
+ inputTokens: 120,
77
+ outputTokens: 45,
78
+ reasoningTokens: 10,
79
+ cacheReadTokens: 5,
80
+ cacheWriteTokens: 2,
81
+ totalTokens: 175
82
+ };
83
+ const agent = {
84
+ sessionManager: {
85
+ getSessionMetadata: import_vitest.vi.fn().mockResolvedValue({
86
+ createdAt: Date.now() - 3e4,
87
+ tokenUsage,
88
+ usageTracking: {
89
+ hasUntrackedChatGPTLoginUsage: true
90
+ }
91
+ })
92
+ },
93
+ getSessionHistory: import_vitest.vi.fn().mockResolvedValue([
94
+ { role: "user", content: "hi" },
95
+ { role: "assistant", content: "hello" }
96
+ ]),
97
+ getCurrentLLMConfig: import_vitest.vi.fn().mockReturnValue({
98
+ provider: "openai",
99
+ model: "gpt-5"
100
+ }),
101
+ logger: {
102
+ debug: import_vitest.vi.fn(),
103
+ error: import_vitest.vi.fn()
104
+ }
105
+ };
106
+ await exitCommand.handler([], agent, {
107
+ sessionId: "session-mixed",
108
+ configFilePath: null
109
+ });
110
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()?.tokenUsage).toEqual(tokenUsage);
111
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()?.usageNote).toBe(
112
+ "Partial totals only. This session used ChatGPT Login and other tracked models; ChatGPT token counts are not available in Dexto."
113
+ );
114
+ });
115
+ (0, import_vitest.it)("preserves token totals for standard providers", async () => {
116
+ const exitCommand = getExitCommand();
117
+ const tokenUsage = {
118
+ inputTokens: 120,
119
+ outputTokens: 45,
120
+ reasoningTokens: 10,
121
+ cacheReadTokens: 5,
122
+ cacheWriteTokens: 2,
123
+ totalTokens: 175
124
+ };
125
+ const agent = {
126
+ sessionManager: {
127
+ getSessionMetadata: import_vitest.vi.fn().mockResolvedValue({
128
+ createdAt: Date.now() - 3e4,
129
+ tokenUsage
130
+ })
131
+ },
132
+ getSessionHistory: import_vitest.vi.fn().mockResolvedValue([
133
+ { role: "user", content: "hi" },
134
+ { role: "assistant", content: "hello" }
135
+ ]),
136
+ getCurrentLLMConfig: import_vitest.vi.fn().mockReturnValue({
137
+ provider: "openai",
138
+ model: "gpt-5"
139
+ }),
140
+ logger: {
141
+ debug: import_vitest.vi.fn(),
142
+ error: import_vitest.vi.fn()
143
+ }
144
+ };
145
+ await exitCommand.handler([], agent, {
146
+ sessionId: "session-2",
147
+ configFilePath: null
148
+ });
149
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()?.tokenUsage).toEqual(tokenUsage);
150
+ (0, import_vitest.expect)((0, import_exit_stats.getExitStats)()?.usageNote).toBeUndefined();
151
+ });
152
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=general-commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general-commands.test.d.ts","sourceRoot":"","sources":["../../src/interactive-commands/general-commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,151 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { generalCommands } from "./general-commands.js";
3
+ import { clearExitStats, getExitStats } from "./exit-stats.js";
4
+ const { mockTriggerExit } = vi.hoisted(() => ({
5
+ mockTriggerExit: vi.fn()
6
+ }));
7
+ vi.mock("./exit-handler.js", () => ({
8
+ triggerExit: mockTriggerExit
9
+ }));
10
+ function getExitCommand() {
11
+ const exitCommand = generalCommands.find((command) => command.name === "exit");
12
+ if (!exitCommand) {
13
+ throw new Error("Exit command not found");
14
+ }
15
+ return exitCommand;
16
+ }
17
+ describe("generalCommands /exit", () => {
18
+ beforeEach(() => {
19
+ clearExitStats();
20
+ mockTriggerExit.mockReset();
21
+ });
22
+ it("shows a ChatGPT usage note instead of zero token totals", async () => {
23
+ const exitCommand = getExitCommand();
24
+ const agent = {
25
+ sessionManager: {
26
+ getSessionMetadata: vi.fn().mockResolvedValue({
27
+ createdAt: Date.now() - 65e3,
28
+ tokenUsage: {
29
+ inputTokens: 0,
30
+ outputTokens: 0,
31
+ reasoningTokens: 0,
32
+ cacheReadTokens: 0,
33
+ cacheWriteTokens: 0,
34
+ totalTokens: 0
35
+ },
36
+ usageTracking: {
37
+ hasUntrackedChatGPTLoginUsage: true
38
+ }
39
+ })
40
+ },
41
+ getSessionHistory: vi.fn().mockResolvedValue([
42
+ { role: "user", content: "hi" },
43
+ { role: "assistant", content: "hello" }
44
+ ]),
45
+ getCurrentLLMConfig: vi.fn().mockReturnValue({
46
+ provider: "openai-compatible",
47
+ model: "gpt-5.4",
48
+ baseURL: "codex://chatgpt"
49
+ }),
50
+ logger: {
51
+ debug: vi.fn(),
52
+ error: vi.fn()
53
+ }
54
+ };
55
+ const result = await exitCommand.handler([], agent, {
56
+ sessionId: "session-1",
57
+ configFilePath: null
58
+ });
59
+ expect(result).toBe(true);
60
+ expect(mockTriggerExit).toHaveBeenCalledTimes(1);
61
+ expect(getExitStats()).toMatchObject({
62
+ sessionId: "session-1",
63
+ messageCount: {
64
+ total: 2,
65
+ user: 1,
66
+ assistant: 1
67
+ },
68
+ usageNote: "Tracked via ChatGPT Login. Token counts are not available in Dexto for this session."
69
+ });
70
+ expect(getExitStats()?.tokenUsage).toBeUndefined();
71
+ });
72
+ it("shows partial usage note for mixed ChatGPT and tracked models", async () => {
73
+ const exitCommand = getExitCommand();
74
+ const tokenUsage = {
75
+ inputTokens: 120,
76
+ outputTokens: 45,
77
+ reasoningTokens: 10,
78
+ cacheReadTokens: 5,
79
+ cacheWriteTokens: 2,
80
+ totalTokens: 175
81
+ };
82
+ const agent = {
83
+ sessionManager: {
84
+ getSessionMetadata: vi.fn().mockResolvedValue({
85
+ createdAt: Date.now() - 3e4,
86
+ tokenUsage,
87
+ usageTracking: {
88
+ hasUntrackedChatGPTLoginUsage: true
89
+ }
90
+ })
91
+ },
92
+ getSessionHistory: vi.fn().mockResolvedValue([
93
+ { role: "user", content: "hi" },
94
+ { role: "assistant", content: "hello" }
95
+ ]),
96
+ getCurrentLLMConfig: vi.fn().mockReturnValue({
97
+ provider: "openai",
98
+ model: "gpt-5"
99
+ }),
100
+ logger: {
101
+ debug: vi.fn(),
102
+ error: vi.fn()
103
+ }
104
+ };
105
+ await exitCommand.handler([], agent, {
106
+ sessionId: "session-mixed",
107
+ configFilePath: null
108
+ });
109
+ expect(getExitStats()?.tokenUsage).toEqual(tokenUsage);
110
+ expect(getExitStats()?.usageNote).toBe(
111
+ "Partial totals only. This session used ChatGPT Login and other tracked models; ChatGPT token counts are not available in Dexto."
112
+ );
113
+ });
114
+ it("preserves token totals for standard providers", async () => {
115
+ const exitCommand = getExitCommand();
116
+ const tokenUsage = {
117
+ inputTokens: 120,
118
+ outputTokens: 45,
119
+ reasoningTokens: 10,
120
+ cacheReadTokens: 5,
121
+ cacheWriteTokens: 2,
122
+ totalTokens: 175
123
+ };
124
+ const agent = {
125
+ sessionManager: {
126
+ getSessionMetadata: vi.fn().mockResolvedValue({
127
+ createdAt: Date.now() - 3e4,
128
+ tokenUsage
129
+ })
130
+ },
131
+ getSessionHistory: vi.fn().mockResolvedValue([
132
+ { role: "user", content: "hi" },
133
+ { role: "assistant", content: "hello" }
134
+ ]),
135
+ getCurrentLLMConfig: vi.fn().mockReturnValue({
136
+ provider: "openai",
137
+ model: "gpt-5"
138
+ }),
139
+ logger: {
140
+ debug: vi.fn(),
141
+ error: vi.fn()
142
+ }
143
+ };
144
+ await exitCommand.handler([], agent, {
145
+ sessionId: "session-2",
146
+ configFilePath: null
147
+ });
148
+ expect(getExitStats()?.tokenUsage).toEqual(tokenUsage);
149
+ expect(getExitStats()?.usageNote).toBeUndefined();
150
+ });
151
+ });
@@ -48,6 +48,7 @@ function createSetters() {
48
48
  backgroundTasksRunning: 0,
49
49
  backgroundTasksExpanded: false,
50
50
  backgroundTasks: [],
51
+ chatgptRateLimitStatus: null,
51
52
  planModeActive: false,
52
53
  planModeInitialized: false,
53
54
  commandOutput: null,
@@ -47,6 +47,7 @@ function createSetters() {
47
47
  backgroundTasksRunning: 0,
48
48
  backgroundTasksExpanded: false,
49
49
  backgroundTasks: [],
50
+ chatgptRateLimitStatus: null,
50
51
  planModeActive: false,
51
52
  planModeInitialized: false,
52
53
  commandOutput: null,
@@ -61,6 +61,7 @@ function createInitialState(initialModelName = "") {
61
61
  backgroundTasks: [],
62
62
  planModeActive: false,
63
63
  planModeInitialized: false,
64
+ chatgptRateLimitStatus: null,
64
65
  commandOutput: null
65
66
  },
66
67
  session: {
@@ -1 +1 @@
1
- {"version":3,"file":"initialState.d.ts","sourceRoot":"","sources":["../../src/state/initialState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,GAAE,MAAW,GAAG,QAAQ,CAkD1E"}
1
+ {"version":3,"file":"initialState.d.ts","sourceRoot":"","sources":["../../src/state/initialState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,GAAE,MAAW,GAAG,QAAQ,CAmD1E"}
@@ -38,6 +38,7 @@ function createInitialState(initialModelName = "") {
38
38
  backgroundTasks: [],
39
39
  planModeActive: false,
40
40
  planModeInitialized: false,
41
+ chatgptRateLimitStatus: null,
41
42
  commandOutput: null
42
43
  },
43
44
  session: {
@@ -3,7 +3,7 @@
3
3
  * Central type definitions for the CLI state machine
4
4
  */
5
5
  import type { ApprovalRequest } from '../components/ApprovalPrompt.js';
6
- import type { ToolDisplayData, ContentPart, McpConnectionStatus, McpServerType, LLMProvider, ReasoningVariant } from '@dexto/core';
6
+ import type { CodexRateLimitSnapshot, ToolDisplayData, ContentPart, McpConnectionStatus, McpServerType, LLMProvider, ReasoningVariant } from '@dexto/core';
7
7
  /**
8
8
  * Update information for version check
9
9
  */
@@ -281,7 +281,7 @@ export interface InputState {
281
281
  /**
282
282
  * Available overlay types
283
283
  */
284
- export type OverlayType = 'none' | 'slash-autocomplete' | 'resource-autocomplete' | 'model-selector' | 'reasoning' | 'custom-model-wizard' | 'session-selector' | 'mcp-server-list' | 'mcp-server-actions' | 'mcp-add-choice' | 'mcp-add-selector' | 'mcp-custom-type-selector' | 'mcp-custom-wizard' | 'log-level-selector' | 'stream-selector' | 'sounds-selector' | 'session-subcommand-selector' | 'api-key-input' | 'login' | 'logout' | 'search' | 'approval' | 'tool-browser' | 'prompt-list' | 'prompt-add-choice' | 'prompt-add-wizard' | 'prompt-delete-selector' | 'session-rename' | 'context-stats' | 'export-wizard' | 'plugin-manager' | 'plugin-list' | 'plugin-actions' | 'marketplace-browser' | 'marketplace-add' | 'command-output';
284
+ export type OverlayType = 'none' | 'slash-autocomplete' | 'resource-autocomplete' | 'model-selector' | 'reasoning' | 'custom-model-wizard' | 'session-selector' | 'mcp-server-list' | 'mcp-server-actions' | 'mcp-add-choice' | 'mcp-add-selector' | 'mcp-custom-type-selector' | 'mcp-custom-wizard' | 'log-level-selector' | 'stream-selector' | 'sounds-selector' | 'session-subcommand-selector' | 'api-key-input' | 'chatgpt-usage-cap' | 'login' | 'logout' | 'search' | 'approval' | 'tool-browser' | 'prompt-list' | 'prompt-add-choice' | 'prompt-add-wizard' | 'prompt-delete-selector' | 'session-rename' | 'context-stats' | 'export-wizard' | 'plugin-manager' | 'plugin-list' | 'plugin-actions' | 'marketplace-browser' | 'marketplace-add' | 'command-output';
285
285
  /**
286
286
  * Temporary modal output for slash commands (e.g., /help, /stats).
287
287
  */
@@ -363,6 +363,8 @@ export interface UIState {
363
363
  status: 'running' | 'completed' | 'failed' | 'cancelled';
364
364
  description?: string;
365
365
  }>;
366
+ /** Best-effort ChatGPT Login usage-cap status for the current session. */
367
+ chatgptRateLimitStatus: CodexRateLimitSnapshot | null;
366
368
  planModeActive: boolean;
367
369
  planModeInitialized: boolean;
368
370
  commandOutput: CommandOutputState | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"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"}