@dexto/tui 1.6.22 → 1.6.25

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 (41) hide show
  1. package/dist/agent-backend.d.ts +1 -1
  2. package/dist/agent-backend.d.ts.map +1 -1
  3. package/dist/components/overlays/InsufficientCreditsOverlay.cjs +264 -0
  4. package/dist/components/overlays/InsufficientCreditsOverlay.d.ts +14 -0
  5. package/dist/components/overlays/InsufficientCreditsOverlay.d.ts.map +1 -0
  6. package/dist/components/overlays/InsufficientCreditsOverlay.js +252 -0
  7. package/dist/components/overlays/custom-model-wizard/provider-config.cjs +1 -1
  8. package/dist/components/overlays/custom-model-wizard/provider-config.js +1 -1
  9. package/dist/containers/OverlayContainer.cjs +75 -22
  10. package/dist/containers/OverlayContainer.d.ts.map +1 -1
  11. package/dist/containers/OverlayContainer.js +75 -22
  12. package/dist/hooks/useAgentEvents.cjs +5 -2
  13. package/dist/hooks/useAgentEvents.d.ts.map +1 -1
  14. package/dist/hooks/useAgentEvents.js +5 -2
  15. package/dist/hooks/useCLIState.cjs +1 -0
  16. package/dist/hooks/useCLIState.d.ts.map +1 -1
  17. package/dist/hooks/useCLIState.js +1 -0
  18. package/dist/host/index.cjs +16 -0
  19. package/dist/host/index.d.ts +12 -0
  20. package/dist/host/index.d.ts.map +1 -1
  21. package/dist/host/index.js +14 -0
  22. package/dist/index.d.cts +7 -1
  23. package/dist/services/processStream.cjs +74 -14
  24. package/dist/services/processStream.d.ts.map +1 -1
  25. package/dist/services/processStream.js +75 -15
  26. package/dist/services/processStream.test.cjs +94 -0
  27. package/dist/services/processStream.test.js +95 -1
  28. package/dist/state/initialState.cjs +1 -0
  29. package/dist/state/initialState.d.ts.map +1 -1
  30. package/dist/state/initialState.js +1 -0
  31. package/dist/state/types.d.ts +5 -1
  32. package/dist/state/types.d.ts.map +1 -1
  33. package/dist/utils/dexto-auth-refresh.cjs +55 -0
  34. package/dist/utils/dexto-auth-refresh.d.ts +3 -0
  35. package/dist/utils/dexto-auth-refresh.d.ts.map +1 -0
  36. package/dist/utils/dexto-auth-refresh.js +31 -0
  37. package/dist/utils/dexto-auth-refresh.test.cjs +122 -0
  38. package/dist/utils/dexto-auth-refresh.test.d.ts +2 -0
  39. package/dist/utils/dexto-auth-refresh.test.d.ts.map +1 -0
  40. package/dist/utils/dexto-auth-refresh.test.js +121 -0
  41. package/package.json +4 -4
@@ -48,6 +48,53 @@ function buildErrorContent(error, prefix) {
48
48
  }
49
49
  return errorContent;
50
50
  }
51
+ function getErrorCode(error) {
52
+ if (typeof error !== "object" || error === null) {
53
+ return null;
54
+ }
55
+ const code = Reflect.get(error, "code");
56
+ return typeof code === "string" && code.length > 0 ? code : null;
57
+ }
58
+ function extractInsufficientCreditsBalance(error) {
59
+ if (typeof error === "object" && error !== null) {
60
+ const context = Reflect.get(error, "context");
61
+ if (typeof context === "object" && context !== null) {
62
+ const balance = Reflect.get(context, "balance");
63
+ if (typeof balance === "number" && Number.isFinite(balance)) {
64
+ return balance;
65
+ }
66
+ if (typeof balance === "string") {
67
+ const parsed2 = Number.parseFloat(balance);
68
+ if (Number.isFinite(parsed2)) {
69
+ return parsed2;
70
+ }
71
+ }
72
+ }
73
+ }
74
+ const message = error instanceof Error ? error.message : String(error);
75
+ const match = message.match(/Balance:\s*\$?(-?[\d.]+)/i);
76
+ if (!match) {
77
+ return null;
78
+ }
79
+ const parsed = Number.parseFloat(match[1] ?? "");
80
+ return Number.isFinite(parsed) ? parsed : null;
81
+ }
82
+ function buildInsufficientCreditsContent(balance) {
83
+ if (balance === null) {
84
+ return "Out of Dexto Nova credits.\nUse the billing prompt to top up and retry your request.";
85
+ }
86
+ return `Out of Dexto Nova credits. Current balance: $${balance.toFixed(2)}.
87
+ Use the billing prompt to top up and retry your request.`;
88
+ }
89
+ function hasMeaningfulTokenUsageForAnalytics(tokenUsage, estimatedCost) {
90
+ if (estimatedCost !== void 0) {
91
+ return true;
92
+ }
93
+ if (!tokenUsage) {
94
+ return false;
95
+ }
96
+ return (tokenUsage.inputTokens ?? 0) > 0 || (tokenUsage.outputTokens ?? 0) > 0 || (tokenUsage.reasoningTokens ?? 0) > 0 || (tokenUsage.cacheReadTokens ?? 0) > 0 || (tokenUsage.cacheWriteTokens ?? 0) > 0 || (tokenUsage.totalTokens ?? 0) > 0;
97
+ }
51
98
  async function processStream(iterator, setters, options) {
52
99
  const {
53
100
  setMessages,
@@ -323,13 +370,12 @@ async function processStream(iterator, setters, options) {
323
370
  state.cumulativeOutputTokens += event.tokenUsage.outputTokens;
324
371
  }
325
372
  }
326
- if (event.tokenUsage && (event.tokenUsage.inputTokens || event.tokenUsage.outputTokens)) {
373
+ if (hasMeaningfulTokenUsageForAnalytics(event.tokenUsage, event.estimatedCost)) {
327
374
  let estimateAccuracyPercent;
328
- if (event.estimatedInputTokens !== void 0 && event.tokenUsage.inputTokens) {
329
- const diff = event.estimatedInputTokens - event.tokenUsage.inputTokens;
330
- estimateAccuracyPercent = Math.round(
331
- diff / event.tokenUsage.inputTokens * 100
332
- );
375
+ const actualInputTokens = event.tokenUsage?.inputTokens;
376
+ if (event.estimatedInputTokens !== void 0 && actualInputTokens) {
377
+ const diff = event.estimatedInputTokens - actualInputTokens;
378
+ estimateAccuracyPercent = Math.round(diff / actualInputTokens * 100);
333
379
  }
334
380
  (0, import_host.captureAnalytics)("dexto_llm_tokens_consumed", {
335
381
  source: "cli",
@@ -338,12 +384,18 @@ async function processStream(iterator, setters, options) {
338
384
  model: event.model,
339
385
  reasoningVariant: event.reasoningVariant ?? void 0,
340
386
  reasoningBudgetTokens: event.reasoningBudgetTokens ?? void 0,
341
- inputTokens: event.tokenUsage.inputTokens,
342
- outputTokens: event.tokenUsage.outputTokens,
343
- reasoningTokens: event.tokenUsage.reasoningTokens,
344
- totalTokens: event.tokenUsage.totalTokens,
345
- cacheReadTokens: event.tokenUsage.cacheReadTokens,
346
- cacheWriteTokens: event.tokenUsage.cacheWriteTokens,
387
+ inputTokens: event.tokenUsage?.inputTokens,
388
+ outputTokens: event.tokenUsage?.outputTokens,
389
+ reasoningTokens: event.tokenUsage?.reasoningTokens,
390
+ totalTokens: event.tokenUsage?.totalTokens,
391
+ cacheReadTokens: event.tokenUsage?.cacheReadTokens,
392
+ cacheWriteTokens: event.tokenUsage?.cacheWriteTokens,
393
+ estimatedCostUsd: event.estimatedCost,
394
+ inputCostUsd: event.costBreakdown?.inputUsd,
395
+ outputCostUsd: event.costBreakdown?.outputUsd,
396
+ reasoningCostUsd: event.costBreakdown?.reasoningUsd,
397
+ cacheReadCostUsd: event.costBreakdown?.cacheReadUsd,
398
+ cacheWriteCostUsd: event.costBreakdown?.cacheWriteUsd,
347
399
  estimatedInputTokens: event.estimatedInputTokens,
348
400
  estimateAccuracyPercent
349
401
  });
@@ -564,7 +616,9 @@ ${import_chalk.default.dim(callDescription)}`;
564
616
  break;
565
617
  }
566
618
  case "llm:error": {
567
- const errorContent = buildErrorContent(event.error, "Error: ");
619
+ const insufficientCredits = getErrorCode(event.error) === import_core.LLMErrorCode.INSUFFICIENT_CREDITS;
620
+ const insufficientCreditsBalance = insufficientCredits ? extractInsufficientCreditsBalance(event.error) : null;
621
+ const errorContent = insufficientCredits ? buildInsufficientCreditsContent(insufficientCreditsBalance) : buildErrorContent(event.error, "Error: ");
568
622
  setMessages((prev) => [
569
623
  ...prev,
570
624
  {
@@ -585,7 +639,13 @@ ${import_chalk.default.dim(callDescription)}`;
585
639
  ...prev,
586
640
  isProcessing: false,
587
641
  isCancelling: false,
588
- isThinking: false
642
+ isThinking: false,
643
+ ...insufficientCredits ? {
644
+ activeOverlay: "insufficient-credits",
645
+ insufficientCredits: {
646
+ balanceUsd: insufficientCreditsBalance
647
+ }
648
+ } : {}
589
649
  }));
590
650
  }
591
651
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../src/services/processStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AAGvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAwBvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,oFAAoF;IACpF,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,kEAAkE;IAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3F,yDAAyD;IACzD,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC/F,4DAA4D;IAC5D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,uDAAuD;IACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,mBAAmB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1C,wFAAwF;IACxF,oBAAoB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,yDAAyD;IACzD,QAAQ,EAAE,IAAI,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,+BAA+B,EAAE,wBAAwB,CAAC;IAChF,kEAAkE;IAClE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;CAC3F;AA8BD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6qCf"}
1
+ {"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../src/services/processStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AAGvE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAc,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAoEvE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2DAA2D;IAC3D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,oFAAoF;IACpF,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACpE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,kEAAkE;IAClE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3F,yDAAyD;IACzD,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAC/F,4DAA4D;IAC5D,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,uDAAuD;IACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;CAC7E;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,mBAAmB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC1C,wFAAwF;IACxF,oBAAoB,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,yDAAyD;IACzD,QAAQ,EAAE,IAAI,CAAC,OAAO,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,+BAA+B,EAAE,wBAAwB,CAAC;IAChF,kEAAkE;IAClE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;CAC3F;AAoDD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC,EAC/C,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6rCf"}
@@ -1,5 +1,5 @@
1
1
  import { createDebugLogger } from "../utils/debugLog.js";
2
- import { ApprovalType as ApprovalTypeEnum, ApprovalStatus } from "@dexto/core";
2
+ import { ApprovalType as ApprovalTypeEnum, ApprovalStatus, LLMErrorCode } from "@dexto/core";
3
3
  import { generateMessageId } from "../utils/idGenerator.js";
4
4
  import { checkForSplit } from "../utils/streamSplitter.js";
5
5
  import { formatToolHeader, shouldHideTool } from "../utils/messageFormatting.js";
@@ -15,6 +15,53 @@ function buildErrorContent(error, prefix) {
15
15
  }
16
16
  return errorContent;
17
17
  }
18
+ function getErrorCode(error) {
19
+ if (typeof error !== "object" || error === null) {
20
+ return null;
21
+ }
22
+ const code = Reflect.get(error, "code");
23
+ return typeof code === "string" && code.length > 0 ? code : null;
24
+ }
25
+ function extractInsufficientCreditsBalance(error) {
26
+ if (typeof error === "object" && error !== null) {
27
+ const context = Reflect.get(error, "context");
28
+ if (typeof context === "object" && context !== null) {
29
+ const balance = Reflect.get(context, "balance");
30
+ if (typeof balance === "number" && Number.isFinite(balance)) {
31
+ return balance;
32
+ }
33
+ if (typeof balance === "string") {
34
+ const parsed2 = Number.parseFloat(balance);
35
+ if (Number.isFinite(parsed2)) {
36
+ return parsed2;
37
+ }
38
+ }
39
+ }
40
+ }
41
+ const message = error instanceof Error ? error.message : String(error);
42
+ const match = message.match(/Balance:\s*\$?(-?[\d.]+)/i);
43
+ if (!match) {
44
+ return null;
45
+ }
46
+ const parsed = Number.parseFloat(match[1] ?? "");
47
+ return Number.isFinite(parsed) ? parsed : null;
48
+ }
49
+ function buildInsufficientCreditsContent(balance) {
50
+ if (balance === null) {
51
+ return "Out of Dexto Nova credits.\nUse the billing prompt to top up and retry your request.";
52
+ }
53
+ return `Out of Dexto Nova credits. Current balance: $${balance.toFixed(2)}.
54
+ Use the billing prompt to top up and retry your request.`;
55
+ }
56
+ function hasMeaningfulTokenUsageForAnalytics(tokenUsage, estimatedCost) {
57
+ if (estimatedCost !== void 0) {
58
+ return true;
59
+ }
60
+ if (!tokenUsage) {
61
+ return false;
62
+ }
63
+ return (tokenUsage.inputTokens ?? 0) > 0 || (tokenUsage.outputTokens ?? 0) > 0 || (tokenUsage.reasoningTokens ?? 0) > 0 || (tokenUsage.cacheReadTokens ?? 0) > 0 || (tokenUsage.cacheWriteTokens ?? 0) > 0 || (tokenUsage.totalTokens ?? 0) > 0;
64
+ }
18
65
  async function processStream(iterator, setters, options) {
19
66
  const {
20
67
  setMessages,
@@ -290,13 +337,12 @@ async function processStream(iterator, setters, options) {
290
337
  state.cumulativeOutputTokens += event.tokenUsage.outputTokens;
291
338
  }
292
339
  }
293
- if (event.tokenUsage && (event.tokenUsage.inputTokens || event.tokenUsage.outputTokens)) {
340
+ if (hasMeaningfulTokenUsageForAnalytics(event.tokenUsage, event.estimatedCost)) {
294
341
  let estimateAccuracyPercent;
295
- if (event.estimatedInputTokens !== void 0 && event.tokenUsage.inputTokens) {
296
- const diff = event.estimatedInputTokens - event.tokenUsage.inputTokens;
297
- estimateAccuracyPercent = Math.round(
298
- diff / event.tokenUsage.inputTokens * 100
299
- );
342
+ const actualInputTokens = event.tokenUsage?.inputTokens;
343
+ if (event.estimatedInputTokens !== void 0 && actualInputTokens) {
344
+ const diff = event.estimatedInputTokens - actualInputTokens;
345
+ estimateAccuracyPercent = Math.round(diff / actualInputTokens * 100);
300
346
  }
301
347
  captureAnalytics("dexto_llm_tokens_consumed", {
302
348
  source: "cli",
@@ -305,12 +351,18 @@ async function processStream(iterator, setters, options) {
305
351
  model: event.model,
306
352
  reasoningVariant: event.reasoningVariant ?? void 0,
307
353
  reasoningBudgetTokens: event.reasoningBudgetTokens ?? void 0,
308
- inputTokens: event.tokenUsage.inputTokens,
309
- outputTokens: event.tokenUsage.outputTokens,
310
- reasoningTokens: event.tokenUsage.reasoningTokens,
311
- totalTokens: event.tokenUsage.totalTokens,
312
- cacheReadTokens: event.tokenUsage.cacheReadTokens,
313
- cacheWriteTokens: event.tokenUsage.cacheWriteTokens,
354
+ inputTokens: event.tokenUsage?.inputTokens,
355
+ outputTokens: event.tokenUsage?.outputTokens,
356
+ reasoningTokens: event.tokenUsage?.reasoningTokens,
357
+ totalTokens: event.tokenUsage?.totalTokens,
358
+ cacheReadTokens: event.tokenUsage?.cacheReadTokens,
359
+ cacheWriteTokens: event.tokenUsage?.cacheWriteTokens,
360
+ estimatedCostUsd: event.estimatedCost,
361
+ inputCostUsd: event.costBreakdown?.inputUsd,
362
+ outputCostUsd: event.costBreakdown?.outputUsd,
363
+ reasoningCostUsd: event.costBreakdown?.reasoningUsd,
364
+ cacheReadCostUsd: event.costBreakdown?.cacheReadUsd,
365
+ cacheWriteCostUsd: event.costBreakdown?.cacheWriteUsd,
314
366
  estimatedInputTokens: event.estimatedInputTokens,
315
367
  estimateAccuracyPercent
316
368
  });
@@ -531,7 +583,9 @@ ${chalk.dim(callDescription)}`;
531
583
  break;
532
584
  }
533
585
  case "llm:error": {
534
- const errorContent = buildErrorContent(event.error, "Error: ");
586
+ const insufficientCredits = getErrorCode(event.error) === LLMErrorCode.INSUFFICIENT_CREDITS;
587
+ const insufficientCreditsBalance = insufficientCredits ? extractInsufficientCreditsBalance(event.error) : null;
588
+ const errorContent = insufficientCredits ? buildInsufficientCreditsContent(insufficientCreditsBalance) : buildErrorContent(event.error, "Error: ");
535
589
  setMessages((prev) => [
536
590
  ...prev,
537
591
  {
@@ -552,7 +606,13 @@ ${chalk.dim(callDescription)}`;
552
606
  ...prev,
553
607
  isProcessing: false,
554
608
  isCancelling: false,
555
- isThinking: false
609
+ isThinking: false,
610
+ ...insufficientCredits ? {
611
+ activeOverlay: "insufficient-credits",
612
+ insufficientCredits: {
613
+ balanceUsd: insufficientCreditsBalance
614
+ }
615
+ } : {}
556
616
  }));
557
617
  }
558
618
  break;
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  var import_vitest = require("vitest");
3
+ var import_core = require("@dexto/core");
3
4
  var import_processStream = require("./processStream.js");
5
+ const { captureAnalyticsMock } = import_vitest.vi.hoisted(() => ({
6
+ captureAnalyticsMock: import_vitest.vi.fn()
7
+ }));
8
+ import_vitest.vi.mock("../host/index.js", () => ({
9
+ captureAnalytics: captureAnalyticsMock
10
+ }));
4
11
  function isStateUpdater(action) {
5
12
  return typeof action === "function";
6
13
  }
@@ -49,6 +56,7 @@ function createSetters() {
49
56
  backgroundTasksExpanded: false,
50
57
  backgroundTasks: [],
51
58
  chatgptRateLimitStatus: null,
59
+ insufficientCredits: null,
52
60
  planModeActive: false,
53
61
  planModeInitialized: false,
54
62
  commandOutput: null,
@@ -77,6 +85,9 @@ function createSetters() {
77
85
  };
78
86
  }
79
87
  (0, import_vitest.describe)("processStream (reasoning)", () => {
88
+ (0, import_vitest.beforeEach)(() => {
89
+ captureAnalyticsMock.mockClear();
90
+ });
80
91
  (0, import_vitest.it)("attaches streamed reasoning chunks to the assistant message", async () => {
81
92
  const { getMessages, getPendingMessages, setters } = createSetters();
82
93
  const events = [
@@ -253,4 +264,87 @@ function createSetters() {
253
264
  (0, import_vitest.expect)(assistantMessages[1]?.content).toBe("Final");
254
265
  (0, import_vitest.expect)(assistantMessages[1]?.reasoning).toBeUndefined();
255
266
  });
267
+ (0, import_vitest.it)("shows the billing recovery overlay for insufficient credits", async () => {
268
+ const { getMessages, getUi, setters } = createSetters();
269
+ const error = Object.assign(new Error("Insufficient Dexto credits. Balance: $0.00"), {
270
+ code: import_core.LLMErrorCode.INSUFFICIENT_CREDITS,
271
+ context: {
272
+ balance: 0
273
+ },
274
+ recovery: "Run `dexto billing` to check your balance"
275
+ });
276
+ const events = [
277
+ {
278
+ name: "llm:error",
279
+ sessionId: "test-session",
280
+ error
281
+ }
282
+ ];
283
+ await (0, import_processStream.processStream)(eventStream(events), setters, {
284
+ useStreaming: true,
285
+ autoApproveEditsRef: { current: false },
286
+ bypassPermissionsRef: { current: false },
287
+ eventBus: { emit: import_vitest.vi.fn() }
288
+ });
289
+ const ui = getUi();
290
+ (0, import_vitest.expect)(ui.activeOverlay).toBe("insufficient-credits");
291
+ (0, import_vitest.expect)(ui.insufficientCredits).toEqual({ balanceUsd: 0 });
292
+ (0, import_vitest.expect)(ui.isProcessing).toBe(false);
293
+ const latestMessage = getMessages().at(-1);
294
+ (0, import_vitest.expect)(latestMessage?.content).toContain("Out of Dexto Nova credits");
295
+ (0, import_vitest.expect)(latestMessage?.content).not.toContain("Error:");
296
+ });
297
+ (0, import_vitest.it)("captures analytics cost fields for priced llm responses", async () => {
298
+ const { setters } = createSetters();
299
+ const events = [
300
+ { name: "llm:thinking", sessionId: "test-session" },
301
+ {
302
+ name: "llm:response",
303
+ sessionId: "test-session",
304
+ content: "Priced response",
305
+ provider: "openai",
306
+ model: "gpt-4",
307
+ estimatedCost: 15e-4,
308
+ costBreakdown: {
309
+ inputUsd: 1e-3,
310
+ outputUsd: 5e-4,
311
+ reasoningUsd: 0,
312
+ cacheReadUsd: 0,
313
+ cacheWriteUsd: 0,
314
+ totalUsd: 15e-4
315
+ },
316
+ tokenUsage: {
317
+ inputTokens: 10,
318
+ outputTokens: 20,
319
+ totalTokens: 30
320
+ }
321
+ },
322
+ {
323
+ name: "run:complete",
324
+ sessionId: "test-session",
325
+ finishReason: "stop",
326
+ stepCount: 1,
327
+ durationMs: 1
328
+ }
329
+ ];
330
+ await (0, import_processStream.processStream)(eventStream(events), setters, {
331
+ useStreaming: false,
332
+ autoApproveEditsRef: { current: false },
333
+ bypassPermissionsRef: { current: false },
334
+ eventBus: { emit: import_vitest.vi.fn() }
335
+ });
336
+ (0, import_vitest.expect)(captureAnalyticsMock).toHaveBeenCalledWith(
337
+ "dexto_llm_tokens_consumed",
338
+ import_vitest.expect.objectContaining({
339
+ source: "cli",
340
+ sessionId: "test-session",
341
+ estimatedCostUsd: 15e-4,
342
+ inputCostUsd: 1e-3,
343
+ outputCostUsd: 5e-4,
344
+ reasoningCostUsd: 0,
345
+ cacheReadCostUsd: 0,
346
+ cacheWriteCostUsd: 0
347
+ })
348
+ );
349
+ });
256
350
  });
@@ -1,5 +1,12 @@
1
- import { describe, expect, it, vi } from "vitest";
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { LLMErrorCode } from "@dexto/core";
2
3
  import { processStream } from "./processStream.js";
4
+ const { captureAnalyticsMock } = vi.hoisted(() => ({
5
+ captureAnalyticsMock: vi.fn()
6
+ }));
7
+ vi.mock("../host/index.js", () => ({
8
+ captureAnalytics: captureAnalyticsMock
9
+ }));
3
10
  function isStateUpdater(action) {
4
11
  return typeof action === "function";
5
12
  }
@@ -48,6 +55,7 @@ function createSetters() {
48
55
  backgroundTasksExpanded: false,
49
56
  backgroundTasks: [],
50
57
  chatgptRateLimitStatus: null,
58
+ insufficientCredits: null,
51
59
  planModeActive: false,
52
60
  planModeInitialized: false,
53
61
  commandOutput: null,
@@ -76,6 +84,9 @@ function createSetters() {
76
84
  };
77
85
  }
78
86
  describe("processStream (reasoning)", () => {
87
+ beforeEach(() => {
88
+ captureAnalyticsMock.mockClear();
89
+ });
79
90
  it("attaches streamed reasoning chunks to the assistant message", async () => {
80
91
  const { getMessages, getPendingMessages, setters } = createSetters();
81
92
  const events = [
@@ -252,4 +263,87 @@ describe("processStream (reasoning)", () => {
252
263
  expect(assistantMessages[1]?.content).toBe("Final");
253
264
  expect(assistantMessages[1]?.reasoning).toBeUndefined();
254
265
  });
266
+ it("shows the billing recovery overlay for insufficient credits", async () => {
267
+ const { getMessages, getUi, setters } = createSetters();
268
+ const error = Object.assign(new Error("Insufficient Dexto credits. Balance: $0.00"), {
269
+ code: LLMErrorCode.INSUFFICIENT_CREDITS,
270
+ context: {
271
+ balance: 0
272
+ },
273
+ recovery: "Run `dexto billing` to check your balance"
274
+ });
275
+ const events = [
276
+ {
277
+ name: "llm:error",
278
+ sessionId: "test-session",
279
+ error
280
+ }
281
+ ];
282
+ await processStream(eventStream(events), setters, {
283
+ useStreaming: true,
284
+ autoApproveEditsRef: { current: false },
285
+ bypassPermissionsRef: { current: false },
286
+ eventBus: { emit: vi.fn() }
287
+ });
288
+ const ui = getUi();
289
+ expect(ui.activeOverlay).toBe("insufficient-credits");
290
+ expect(ui.insufficientCredits).toEqual({ balanceUsd: 0 });
291
+ expect(ui.isProcessing).toBe(false);
292
+ const latestMessage = getMessages().at(-1);
293
+ expect(latestMessage?.content).toContain("Out of Dexto Nova credits");
294
+ expect(latestMessage?.content).not.toContain("Error:");
295
+ });
296
+ it("captures analytics cost fields for priced llm responses", async () => {
297
+ const { setters } = createSetters();
298
+ const events = [
299
+ { name: "llm:thinking", sessionId: "test-session" },
300
+ {
301
+ name: "llm:response",
302
+ sessionId: "test-session",
303
+ content: "Priced response",
304
+ provider: "openai",
305
+ model: "gpt-4",
306
+ estimatedCost: 15e-4,
307
+ costBreakdown: {
308
+ inputUsd: 1e-3,
309
+ outputUsd: 5e-4,
310
+ reasoningUsd: 0,
311
+ cacheReadUsd: 0,
312
+ cacheWriteUsd: 0,
313
+ totalUsd: 15e-4
314
+ },
315
+ tokenUsage: {
316
+ inputTokens: 10,
317
+ outputTokens: 20,
318
+ totalTokens: 30
319
+ }
320
+ },
321
+ {
322
+ name: "run:complete",
323
+ sessionId: "test-session",
324
+ finishReason: "stop",
325
+ stepCount: 1,
326
+ durationMs: 1
327
+ }
328
+ ];
329
+ await processStream(eventStream(events), setters, {
330
+ useStreaming: false,
331
+ autoApproveEditsRef: { current: false },
332
+ bypassPermissionsRef: { current: false },
333
+ eventBus: { emit: vi.fn() }
334
+ });
335
+ expect(captureAnalyticsMock).toHaveBeenCalledWith(
336
+ "dexto_llm_tokens_consumed",
337
+ expect.objectContaining({
338
+ source: "cli",
339
+ sessionId: "test-session",
340
+ estimatedCostUsd: 15e-4,
341
+ inputCostUsd: 1e-3,
342
+ outputCostUsd: 5e-4,
343
+ reasoningCostUsd: 0,
344
+ cacheReadCostUsd: 0,
345
+ cacheWriteCostUsd: 0
346
+ })
347
+ );
348
+ });
255
349
  });
@@ -62,6 +62,7 @@ function createInitialState(initialModelName = "") {
62
62
  planModeActive: false,
63
63
  planModeInitialized: false,
64
64
  chatgptRateLimitStatus: null,
65
+ insufficientCredits: null,
65
66
  commandOutput: null
66
67
  },
67
68
  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,CAmD1E"}
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,CAoD1E"}
@@ -39,6 +39,7 @@ function createInitialState(initialModelName = "") {
39
39
  planModeActive: false,
40
40
  planModeInitialized: false,
41
41
  chatgptRateLimitStatus: null,
42
+ insufficientCredits: null,
42
43
  commandOutput: null
43
44
  },
44
45
  session: {
@@ -278,10 +278,13 @@ export interface InputState {
278
278
  /** Counter for generating sequential paste numbers */
279
279
  pasteCounter: number;
280
280
  }
281
+ export interface InsufficientCreditsState {
282
+ balanceUsd: number | null;
283
+ }
281
284
  /**
282
285
  * Available overlay types
283
286
  */
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';
287
+ 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' | 'insufficient-credits' | '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
288
  /**
286
289
  * Temporary modal output for slash commands (e.g., /help, /stats).
287
290
  */
@@ -365,6 +368,7 @@ export interface UIState {
365
368
  }>;
366
369
  /** Best-effort ChatGPT Login usage-cap status for the current session. */
367
370
  chatgptRateLimitStatus: CodexRateLimitSnapshot | null;
371
+ insufficientCredits: InsufficientCreditsState | null;
368
372
  planModeActive: boolean;
369
373
  planModeInitialized: boolean;
370
374
  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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"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var dexto_auth_refresh_exports = {};
20
+ __export(dexto_auth_refresh_exports, {
21
+ refreshDextoNovaAuthAfterLogin: () => refreshDextoNovaAuthAfterLogin
22
+ });
23
+ module.exports = __toCommonJS(dexto_auth_refresh_exports);
24
+ const DEXTO_API_KEY_ENV_REF = "$DEXTO_API_KEY";
25
+ function buildDextoNovaRefreshUpdate(model) {
26
+ return {
27
+ provider: "dexto-nova",
28
+ model,
29
+ apiKey: DEXTO_API_KEY_ENV_REF
30
+ };
31
+ }
32
+ async function refreshDextoNovaAuthAfterLogin(agent, sessionId) {
33
+ let refreshed = false;
34
+ const globalConfig = agent.getCurrentLLMConfig();
35
+ if (globalConfig.provider === "dexto-nova") {
36
+ await agent.switchLLM(buildDextoNovaRefreshUpdate(globalConfig.model));
37
+ refreshed = true;
38
+ }
39
+ if (!sessionId) {
40
+ return refreshed;
41
+ }
42
+ if (!agent.hasSessionLLMOverride(sessionId)) {
43
+ return refreshed;
44
+ }
45
+ const sessionConfig = agent.getCurrentLLMConfig(sessionId);
46
+ if (sessionConfig.provider !== "dexto-nova") {
47
+ return refreshed;
48
+ }
49
+ await agent.switchLLM(buildDextoNovaRefreshUpdate(sessionConfig.model), sessionId);
50
+ return true;
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ refreshDextoNovaAuthAfterLogin
55
+ });
@@ -0,0 +1,3 @@
1
+ import type { TuiAgentBackend } from '../agent-backend.js';
2
+ export declare function refreshDextoNovaAuthAfterLogin(agent: Pick<TuiAgentBackend, 'getCurrentLLMConfig' | 'hasSessionLLMOverride' | 'switchLLM'>, sessionId?: string): Promise<boolean>;
3
+ //# sourceMappingURL=dexto-auth-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dexto-auth-refresh.d.ts","sourceRoot":"","sources":["../../src/utils/dexto-auth-refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAY3D,wBAAsB,8BAA8B,CAChD,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,qBAAqB,GAAG,uBAAuB,GAAG,WAAW,CAAC,EAC3F,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAwBlB"}