dexto 1.5.0 → 1.5.1

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 (42) hide show
  1. package/dist/cli/commands/interactive-commands/command-parser.d.ts +1 -1
  2. package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
  3. package/dist/cli/commands/interactive-commands/command-parser.js +11 -1
  4. package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
  5. package/dist/cli/commands/interactive-commands/general-commands.js +63 -0
  6. package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
  7. package/dist/cli/commands/interactive-commands/system/system-commands.js +3 -2
  8. package/dist/cli/commands/setup.d.ts.map +1 -1
  9. package/dist/cli/commands/setup.js +163 -28
  10. package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +1 -1
  11. package/dist/cli/ink-cli/components/TextBufferInput.js +7 -3
  12. package/dist/cli/ink-cli/components/chat/Header.js +1 -1
  13. package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
  14. package/dist/cli/ink-cli/components/chat/MessageItem.js +4 -1
  15. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -1
  16. package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +1 -1
  17. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +1 -1
  18. package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +19 -8
  19. package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +1 -1
  20. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +2 -1
  21. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
  22. package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +64 -2
  23. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +1 -1
  24. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +44 -1
  25. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts +6 -0
  26. package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts.map +1 -1
  27. package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
  28. package/dist/cli/ink-cli/containers/OverlayContainer.js +2 -2
  29. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +8 -1
  30. package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
  31. package/dist/cli/ink-cli/hooks/useAgentEvents.js +144 -6
  32. package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -1
  33. package/dist/cli/ink-cli/hooks/useCLIState.js +3 -0
  34. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +11 -7
  35. package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -1
  36. package/dist/cli/ink-cli/hooks/useTokenCounter.js +41 -18
  37. package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -1
  38. package/dist/cli/ink-cli/services/processStream.js +20 -8
  39. package/dist/cli/ink-cli/state/types.d.ts +2 -2
  40. package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
  41. package/dist/index.js +24 -3
  42. package/package.json +7 -7
@@ -88,14 +88,17 @@ export function useCLIState({ agent, initialSessionId, startupInfo, onKeyboardSc
88
88
  const overlayContainerRef = useRef(null);
89
89
  // Setup event bus subscriptions for non-streaming events
90
90
  // (streaming events are handled directly via agent.stream() iterator in InputContainer)
91
+ // Also handles external triggers (run:invoke) from scheduler, A2A, API
91
92
  useAgentEvents({
92
93
  agent,
93
94
  setMessages,
95
+ setPendingMessages,
94
96
  setUi,
95
97
  setSession,
96
98
  setApproval,
97
99
  setApprovalQueue,
98
100
  setQueuedMessages,
101
+ currentSessionId: session.id,
99
102
  });
100
103
  // Create input handlers for the orchestrator
101
104
  // Note: Main input is NOT routed through orchestrator - TextBufferInput handles it directly
@@ -1,11 +1,15 @@
1
1
  /**
2
2
  * useTokenCounter Hook
3
- * Tracks token usage during streaming with live estimates and actual counts
3
+ * Tracks token usage during streaming with live estimates
4
4
  *
5
5
  * Accumulation strategy for multi-step turns:
6
- * - totalActualTokens: Accumulated from all llm:response events in the turn
6
+ * - lastInputTokens: Input tokens from the most recent LLM call (not summed to avoid double-counting)
7
+ * - cumulativeOutputTokens: Sum of output tokens across all LLM calls in the turn
7
8
  * - currentSegmentEstimate: Estimated tokens for current streaming segment
8
- * - Display = totalActual + currentEstimate (shows running total + live estimate)
9
+ * - Display = lastInput + cumulativeOutput + currentEstimate
10
+ *
11
+ * This approach avoids double-counting shared context (system prompt, history) across
12
+ * multiple LLM calls in a single turn while accurately capturing output generation.
9
13
  *
10
14
  * For queued messages: Tokens continue accumulating (same turn)
11
15
  * Reset only when isActive transitions false→true (new turn)
@@ -18,7 +22,7 @@ export interface TokenCounterOptions {
18
22
  isActive: boolean;
19
23
  }
20
24
  export interface TokenCounterResult {
21
- /** Total accumulated actual tokens from all responses in this turn */
25
+ /** Total actual tokens (lastInput + cumulativeOutput) */
22
26
  totalActualTokens: number;
23
27
  /** Estimated tokens for current streaming segment */
24
28
  currentSegmentEstimate: number;
@@ -32,11 +36,11 @@ export interface TokenCounterResult {
32
36
  /**
33
37
  * Hook that tracks token usage during LLM streaming
34
38
  *
35
- * Accumulates tokens across multi-step turns (text → tool → text → tool)
36
- * and queued messages (which continue the same turn).
39
+ * Tracks tokens across multi-step turns (text → tool → text → tool)
40
+ * using: lastInputTokens + cumulativeOutputTokens to avoid double-counting.
37
41
  *
38
42
  * @param options - Configuration options
39
- * @returns Token counts (accumulated actual + current segment estimate)
43
+ * @returns Token counts (actual + current segment estimate)
40
44
  */
41
45
  export declare function useTokenCounter({ agent, isActive }: TokenCounterOptions): TokenCounterResult;
42
46
  //# sourceMappingURL=useTokenCounter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenCounter.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useTokenCounter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACrB;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAG,kBAAkB,CAyE5F"}
1
+ {"version":3,"file":"useTokenCounter.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/hooks/useTokenCounter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACrB;AAsBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,GAAG,kBAAkB,CA0F5F"}
@@ -1,11 +1,15 @@
1
1
  /**
2
2
  * useTokenCounter Hook
3
- * Tracks token usage during streaming with live estimates and actual counts
3
+ * Tracks token usage during streaming with live estimates
4
4
  *
5
5
  * Accumulation strategy for multi-step turns:
6
- * - totalActualTokens: Accumulated from all llm:response events in the turn
6
+ * - lastInputTokens: Input tokens from the most recent LLM call (not summed to avoid double-counting)
7
+ * - cumulativeOutputTokens: Sum of output tokens across all LLM calls in the turn
7
8
  * - currentSegmentEstimate: Estimated tokens for current streaming segment
8
- * - Display = totalActual + currentEstimate (shows running total + live estimate)
9
+ * - Display = lastInput + cumulativeOutput + currentEstimate
10
+ *
11
+ * This approach avoids double-counting shared context (system prompt, history) across
12
+ * multiple LLM calls in a single turn while accurately capturing output generation.
9
13
  *
10
14
  * For queued messages: Tokens continue accumulating (same turn)
11
15
  * Reset only when isActive transitions false→true (new turn)
@@ -21,25 +25,29 @@ function estimateTokens(charCount) {
21
25
  }
22
26
  /**
23
27
  * Format token count for display
28
+ * Only shows count when >= 1000, using x.xK format
24
29
  */
25
30
  function formatTokenCount(count, includesEstimate) {
26
- if (count === 0)
31
+ if (count < 1000)
27
32
  return '';
28
33
  const prefix = includesEstimate ? '~' : '';
29
- return `${prefix}${count} tokens`;
34
+ const kValue = (count / 1000).toFixed(1);
35
+ return `${prefix}${kValue}K tokens`;
30
36
  }
31
37
  /**
32
38
  * Hook that tracks token usage during LLM streaming
33
39
  *
34
- * Accumulates tokens across multi-step turns (text → tool → text → tool)
35
- * and queued messages (which continue the same turn).
40
+ * Tracks tokens across multi-step turns (text → tool → text → tool)
41
+ * using: lastInputTokens + cumulativeOutputTokens to avoid double-counting.
36
42
  *
37
43
  * @param options - Configuration options
38
- * @returns Token counts (accumulated actual + current segment estimate)
44
+ * @returns Token counts (actual + current segment estimate)
39
45
  */
40
46
  export function useTokenCounter({ agent, isActive }) {
41
- // Accumulated actual tokens from all llm:response events in this turn
42
- const [totalActualTokens, setTotalActualTokens] = useState(0);
47
+ // Input tokens from the most recent LLM response (replaced, not summed)
48
+ const [lastInputTokens, setLastInputTokens] = useState(0);
49
+ // Cumulative output tokens across all LLM responses in this turn
50
+ const [cumulativeOutputTokens, setCumulativeOutputTokens] = useState(0);
43
51
  // Estimated tokens for current streaming segment (resets after each response)
44
52
  const [currentSegmentEstimate, setCurrentSegmentEstimate] = useState(0);
45
53
  // Character count for current segment (ref to avoid re-renders on each chunk)
@@ -47,7 +55,8 @@ export function useTokenCounter({ agent, isActive }) {
47
55
  useEffect(() => {
48
56
  if (!isActive) {
49
57
  // Reset when turn ends (isActive becomes false)
50
- setTotalActualTokens(0);
58
+ setLastInputTokens(0);
59
+ setCumulativeOutputTokens(0);
51
60
  setCurrentSegmentEstimate(0);
52
61
  currentCharCountRef.current = 0;
53
62
  return;
@@ -56,9 +65,9 @@ export function useTokenCounter({ agent, isActive }) {
56
65
  const controller = new AbortController();
57
66
  const { signal } = controller;
58
67
  // Reset on new turn (isActive just became true)
59
- // This handles the transition from inactive to active
60
68
  currentCharCountRef.current = 0;
61
- setTotalActualTokens(0);
69
+ setLastInputTokens(0);
70
+ setCumulativeOutputTokens(0);
62
71
  setCurrentSegmentEstimate(0);
63
72
  // Track streaming chunks - accumulate estimate for current segment
64
73
  bus.on('llm:chunk', (payload) => {
@@ -67,11 +76,23 @@ export function useTokenCounter({ agent, isActive }) {
67
76
  setCurrentSegmentEstimate(estimateTokens(currentCharCountRef.current));
68
77
  }
69
78
  }, { signal });
70
- // On response: add actual to total, reset current segment estimate
79
+ // On response: update input (replace), accumulate output, reset estimate
71
80
  bus.on('llm:response', (payload) => {
72
- if (payload.tokenUsage?.outputTokens !== undefined) {
73
- // Accumulate actual tokens from this response
74
- setTotalActualTokens((prev) => prev + payload.tokenUsage.outputTokens);
81
+ const usage = payload.tokenUsage;
82
+ if (usage) {
83
+ // Replace input tokens (most recent call's context)
84
+ // Subtract cacheWriteTokens to exclude system prompt on first call
85
+ const rawInputTokens = usage.inputTokens ?? 0;
86
+ const cacheWriteTokens = usage.cacheWriteTokens ?? 0;
87
+ const inputTokens = Math.max(0, rawInputTokens - cacheWriteTokens);
88
+ if (inputTokens > 0) {
89
+ setLastInputTokens(inputTokens);
90
+ }
91
+ // Accumulate output tokens (additive across calls)
92
+ const outputTokens = usage.outputTokens ?? 0;
93
+ if (outputTokens > 0) {
94
+ setCumulativeOutputTokens((prev) => prev + outputTokens);
95
+ }
75
96
  }
76
97
  // Reset current segment for next streaming segment
77
98
  currentCharCountRef.current = 0;
@@ -83,7 +104,9 @@ export function useTokenCounter({ agent, isActive }) {
83
104
  controller.abort();
84
105
  };
85
106
  }, [agent, isActive]);
86
- // Display = accumulated actual + current segment estimate
107
+ // Total = lastInput + cumulativeOutput (avoids double-counting shared context)
108
+ const totalActualTokens = lastInputTokens + cumulativeOutputTokens;
109
+ // Display = actual + current streaming estimate
87
110
  const displayCount = totalActualTokens + currentSegmentEstimate;
88
111
  const includesEstimate = currentSegmentEstimate > 0;
89
112
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/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;AA4BvE;;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,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,qDAAqD;IACrD,QAAQ,EAAE,OAAO,aAAa,EAAE,aAAa,CAAC;CACjD;AAuBD;;;;;;;;;;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,CAmxBf"}
1
+ {"version":3,"file":"processStream.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/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;AA4BvE;;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,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,qDAAqD;IACrD,QAAQ,EAAE,OAAO,aAAa,EAAE,aAAa,CAAC;CACjD;AA0BD;;;;;;;;;;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,CA+xBf"}
@@ -58,7 +58,8 @@ export async function processStream(iterator, setters, options) {
58
58
  const state = {
59
59
  messageId: null,
60
60
  content: '',
61
- outputTokens: 0,
61
+ lastInputTokens: 0,
62
+ cumulativeOutputTokens: 0,
62
63
  finalizedContent: '',
63
64
  splitCounter: 0,
64
65
  textFinalizedBeforeTool: false,
@@ -239,7 +240,8 @@ export async function processStream(iterator, setters, options) {
239
240
  setUi((prev) => ({ ...prev, isThinking: true }));
240
241
  state.messageId = null;
241
242
  state.content = '';
242
- state.outputTokens = 0;
243
+ state.lastInputTokens = 0;
244
+ state.cumulativeOutputTokens = 0;
243
245
  state.finalizedContent = '';
244
246
  state.splitCounter = 0;
245
247
  state.textFinalizedBeforeTool = false;
@@ -314,9 +316,18 @@ export async function processStream(iterator, setters, options) {
314
316
  if (!useStreaming) {
315
317
  setUi((prev) => ({ ...prev, isThinking: false }));
316
318
  }
317
- // Accumulate token usage
318
- if (event.tokenUsage?.outputTokens) {
319
- state.outputTokens += event.tokenUsage.outputTokens;
319
+ // Track token usage: replace input (last context), accumulate output
320
+ // Subtract cacheWriteTokens to exclude system prompt on first call
321
+ if (event.tokenUsage) {
322
+ const rawInputTokens = event.tokenUsage.inputTokens ?? 0;
323
+ const cacheWriteTokens = event.tokenUsage.cacheWriteTokens ?? 0;
324
+ const inputTokens = Math.max(0, rawInputTokens - cacheWriteTokens);
325
+ if (inputTokens > 0) {
326
+ state.lastInputTokens = inputTokens;
327
+ }
328
+ if (event.tokenUsage.outputTokens) {
329
+ state.cumulativeOutputTokens += event.tokenUsage.outputTokens;
330
+ }
320
331
  }
321
332
  // Track token usage analytics
322
333
  if (event.tokenUsage &&
@@ -575,14 +586,15 @@ export async function processStream(iterator, setters, options) {
575
586
  }
576
587
  case 'run:complete': {
577
588
  const { durationMs } = event;
578
- const { outputTokens } = state;
589
+ // Total = lastInput + cumulativeOutput (avoids double-counting shared context)
590
+ const totalTokens = state.lastInputTokens + state.cumulativeOutputTokens;
579
591
  // Ensure any remaining pending messages are finalized
580
592
  finalizeAllPending();
581
593
  // Add run summary message at the END (not inserted in middle)
582
594
  // IMPORTANT: Ink's <Static> tracks rendered items by array position, not key.
583
595
  // Inserting in the middle shifts existing items, causing them to re-render.
584
596
  // Always append to avoid duplicate rendering.
585
- if (durationMs > 0 || outputTokens > 0) {
597
+ if (durationMs > 0 || totalTokens > 0) {
586
598
  const summaryMessage = {
587
599
  id: generateMessageId('summary'),
588
600
  role: 'system',
@@ -591,7 +603,7 @@ export async function processStream(iterator, setters, options) {
591
603
  styledType: 'run-summary',
592
604
  styledData: {
593
605
  durationMs,
594
- outputTokens,
606
+ totalTokens,
595
607
  },
596
608
  };
597
609
  setMessages((prev) => [...prev, summaryMessage]);
@@ -98,8 +98,8 @@ export interface LogConfigStyledData {
98
98
  export interface RunSummaryStyledData {
99
99
  /** Duration in milliseconds */
100
100
  durationMs: number;
101
- /** Output tokens used */
102
- outputTokens: number;
101
+ /** Total tokens used (lastInput + cumulativeOutput) */
102
+ totalTokens: number;
103
103
  }
104
104
  export interface PromptsStyledData {
105
105
  mcpPrompts: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,gBAAgB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrD,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACvB,QAAQ,GACR,OAAO,GACP,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,aAAa,GACb,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,GAAG,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACN;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;KACtB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACjC,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,aAAa,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,aAAa,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACN,CAAC,CAAC;CACN;AAED,MAAM,MAAM,UAAU,GAChB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,wBAAwB,GACxB,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,CAAC;AAE1B;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mFAAmF;IACnF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,mDAAmD;IACnD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACjB,MAAM,GACN,oBAAoB,GACpB,uBAAuB,GACvB,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,0BAA0B,GAC1B,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,6BAA6B,GAC7B,eAAe,GACf,QAAQ,GACR,UAAU,GACV,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,mBAAmB,GACnB,wBAAwB,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,WAAW,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC9C,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,kBAAkB,CAAC;IAClC,eAAe,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IAErB,KAAK,EAAE,UAAU,CAAC;IAGlB,EAAE,EAAE,OAAO,CAAC;IAGZ,OAAO,EAAE,YAAY,CAAC;IAGtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,eAAe,EAAE,CAAC;CACpC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/state/types.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -88,6 +88,7 @@ program
88
88
  .option('--port <port>', 'port for the server (default: 3000 for web, 3001 for server mode)')
89
89
  .option('--no-auto-install', 'Disable automatic installation of missing agents from registry')
90
90
  .option('--image <package>', 'Image package to load (e.g., @dexto/image-local). Overrides config image field.')
91
+ .option('--privacy-mode', 'Hide full file paths from display (useful for screen recording/sharing). Can also set DEXTO_PRIVACY_MODE=true')
91
92
  .enablePositionalOptions();
92
93
  // 2) `create-app` SUB-COMMAND
93
94
  program
@@ -187,7 +188,12 @@ program
187
188
  catch (err) {
188
189
  if (err instanceof ExitSignal)
189
190
  throw err;
190
- console.error(`❌ dexto setup command failed: ${err}. Check logs in ~/.dexto/logs/dexto.log for more information`);
191
+ if (process.env.DEXTO_PRIVACY_MODE === 'true') {
192
+ console.error(`❌ dexto setup command failed: ${err}. Check logs for more information`);
193
+ }
194
+ else {
195
+ console.error(`❌ dexto setup command failed: ${err}. Check logs in ~/.dexto/logs/dexto.log for more information`);
196
+ }
191
197
  safeExit('setup', 1, 'error');
192
198
  }
193
199
  }));
@@ -469,7 +475,12 @@ program
469
475
  const globalOpts = program.opts();
470
476
  const nameOrPath = globalOpts.agent;
471
477
  const configPath = await resolveAgentPath(nameOrPath, globalOpts.autoInstall !== false);
472
- console.log(`📄 Loading Dexto config from: ${configPath}`);
478
+ if (process.env.DEXTO_PRIVACY_MODE === 'true') {
479
+ console.log(`📄 Loading Dexto config...`);
480
+ }
481
+ else {
482
+ console.log(`📄 Loading Dexto config from: ${configPath}`);
483
+ }
473
484
  const config = await loadAgentConfig(configPath);
474
485
  logger.info(`Validating MCP servers...`);
475
486
  // Validate that MCP servers are configured
@@ -536,6 +547,10 @@ program
536
547
  logger.debug('WARNING: .env file not found; copy .env.example and set your API keys.');
537
548
  }
538
549
  const opts = program.opts();
550
+ // Set privacy mode early to gate all path-related output
551
+ if (opts.privacyMode) {
552
+ process.env.DEXTO_PRIVACY_MODE = 'true';
553
+ }
539
554
  // ——— LOAD DEFAULT MODE FROM PREFERENCES ———
540
555
  // If --mode was not explicitly provided on CLI, use defaultMode from preferences
541
556
  const modeSource = program.getOptionValueSource('mode');
@@ -892,7 +907,13 @@ program
892
907
  let agent;
893
908
  let derivedAgentId;
894
909
  try {
895
- console.error(`🚀 Initializing Dexto with config: ${resolvedPath}`);
910
+ // Show startup message (respecting privacy mode)
911
+ if (process.env.DEXTO_PRIVACY_MODE === 'true') {
912
+ console.error(`🚀 Initializing Dexto...`);
913
+ }
914
+ else {
915
+ console.error(`🚀 Initializing Dexto with config: ${resolvedPath}`);
916
+ }
896
917
  // Set run mode for tool confirmation provider
897
918
  process.env.DEXTO_RUN_MODE = opts.mode;
898
919
  // Apply --strict flag to all server configs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dexto",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "dexto": "./dist/index.js"
@@ -40,12 +40,12 @@
40
40
  "ws": "^8.18.1",
41
41
  "yaml": "^2.7.1",
42
42
  "zod": "^3.25.0",
43
- "@dexto/agent-management": "1.5.0",
44
- "@dexto/analytics": "1.5.0",
45
- "@dexto/core": "1.5.0",
46
- "@dexto/image-local": "1.5.0",
47
- "@dexto/registry": "1.5.0",
48
- "@dexto/server": "1.5.0"
43
+ "@dexto/agent-management": "1.5.1",
44
+ "@dexto/analytics": "1.5.1",
45
+ "@dexto/core": "1.5.1",
46
+ "@dexto/image-local": "1.5.1",
47
+ "@dexto/registry": "1.5.1",
48
+ "@dexto/server": "1.5.1"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/react": "^19.0.0",