@theia/ai-ide 1.62.1 → 1.62.2

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.
@@ -13,6 +13,7 @@ export declare class AITokenUsageConfigurationWidget extends ReactWidget {
13
13
  protected refreshData(): Promise<void>;
14
14
  protected formatNumber(num: number): string;
15
15
  protected formatDate(date?: Date): string;
16
+ protected hasCacheData(): boolean;
16
17
  protected renderHeaderRow(): React.ReactNode;
17
18
  protected renderModelRow(model: ModelTokenUsageData): React.ReactNode;
18
19
  protected renderSummaryRow(): React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-configuration-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/ai-configuration/token-usage-configuration-widget.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAO,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAKzH,qBACa,+BAAgC,SAAQ,WAAW;IAE5D,MAAM,CAAC,QAAQ,CAAC,EAAE,mDAAmD;IACrE,MAAM,CAAC,QAAQ,CAAC,KAAK,SAA4D;IAGjF,SAAS,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAM;IAGrD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAGhE,SAAS,CAAC,IAAI,IAAI,IAAI;cAaN,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5C,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI3C,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;IAOzC,SAAS,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS;IAY5C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,SAAS;IAerE,SAAS,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS;IAqB7C,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;CAgCtC"}
1
+ {"version":3,"file":"token-usage-configuration-widget.d.ts","sourceRoot":"","sources":["../../../src/browser/ai-configuration/token-usage-configuration-widget.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAO,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAKzH,qBACa,+BAAgC,SAAQ,WAAW;IAE5D,MAAM,CAAC,QAAQ,CAAC,EAAE,mDAAmD;IACrE,MAAM,CAAC,QAAQ,CAAC,KAAK,SAA4D;IAGjF,SAAS,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAM;IAGrD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAGhE,SAAS,CAAC,IAAI,IAAI,IAAI;cAaN,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5C,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI3C,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM;IAOzC,SAAS,CAAC,YAAY,IAAI,OAAO;IAOjC,SAAS,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS;IA0C5C,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,SAAS;IAuBrE,SAAS,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS;IAmC7C,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;CAgCtC"}
@@ -59,22 +59,36 @@ let AITokenUsageConfigurationWidget = AITokenUsageConfigurationWidget_1 = class
59
59
  }
60
60
  return (0, date_fns_1.formatDistanceToNow)(date, { addSuffix: true });
61
61
  }
62
+ hasCacheData() {
63
+ return this.tokenUsageData.some(model => model.cachedInputTokens !== undefined ||
64
+ model.readCachedInputTokens !== undefined);
65
+ }
62
66
  renderHeaderRow() {
67
+ const showCacheColumns = this.hasCacheData();
63
68
  return (React.createElement("tr", { className: "token-usage-header" },
64
69
  React.createElement("th", { className: "token-usage-model-column" }, core_1.nls.localize('theia/ai/tokenUsage/model', 'Model')),
65
70
  React.createElement("th", { className: "token-usage-column" }, core_1.nls.localize('theia/ai/tokenUsage/inputTokens', 'Input Tokens')),
71
+ showCacheColumns && (React.createElement(React.Fragment, null,
72
+ React.createElement("th", { className: "token-usage-column", title: core_1.nls.localize('theia/ai/tokenUsage/cachedInputTokensTooltip', "Tracked additionally to 'Input Tokens'. Usually more expensive than non-cached tokens.") }, core_1.nls.localize('theia/ai/tokenUsage/cachedInputTokens', 'Input Tokens Written to Cache')),
73
+ React.createElement("th", { className: "token-usage-column", title: core_1.nls.localize('theia/ai/tokenUsage/readCachedInputTokensTooltip', "Tracked additionally to 'Input Token'. Usually much less expensive than not cached. Usually does not count to rate limits.") }, core_1.nls.localize('theia/ai/tokenUsage/readCachedInputTokens', 'Input Tokens Read From Cache')))),
66
74
  React.createElement("th", { className: "token-usage-column" }, core_1.nls.localize('theia/ai/tokenUsage/outputTokens', 'Output Tokens')),
67
- React.createElement("th", { className: "token-usage-column" }, core_1.nls.localize('theia/ai/tokenUsage/totalTokens', 'Total Tokens')),
75
+ React.createElement("th", { className: "token-usage-column", title: core_1.nls.localize('theia/ai/tokenUsage/totalTokensTooltip', "'Input Tokens' + 'Output Tokens'") }, core_1.nls.localize('theia/ai/tokenUsage/totalTokens', 'Total Tokens')),
68
76
  React.createElement("th", { className: "token-usage-column" }, core_1.nls.localize('theia/ai/tokenUsage/lastUsed', 'Last Used'))));
69
77
  }
70
78
  renderModelRow(model) {
79
+ var _a;
71
80
  const lastUsedDate = model.lastUsed ? new Date(model.lastUsed) : undefined;
72
81
  const exactDateString = lastUsedDate ? lastUsedDate.toLocaleString() : '';
82
+ const showCacheColumns = this.hasCacheData();
83
+ const totalTokens = model.inputTokens + model.outputTokens + ((_a = model.cachedInputTokens) !== null && _a !== void 0 ? _a : 0);
73
84
  return (React.createElement("tr", { key: model.modelId, className: "token-usage-row" },
74
85
  React.createElement("td", { className: "token-usage-model-cell" }, model.modelId),
75
86
  React.createElement("td", { className: "token-usage-cell" }, this.formatNumber(model.inputTokens)),
87
+ showCacheColumns && (React.createElement(React.Fragment, null,
88
+ React.createElement("td", { className: "token-usage-cell" }, model.cachedInputTokens !== undefined ? this.formatNumber(model.cachedInputTokens) : '-'),
89
+ React.createElement("td", { className: "token-usage-cell" }, model.readCachedInputTokens !== undefined ? this.formatNumber(model.readCachedInputTokens) : '-'))),
76
90
  React.createElement("td", { className: "token-usage-cell" }, this.formatNumber(model.outputTokens)),
77
- React.createElement("td", { className: "token-usage-cell" }, this.formatNumber(model.inputTokens + model.outputTokens)),
91
+ React.createElement("td", { className: "token-usage-cell" }, this.formatNumber(totalTokens)),
78
92
  React.createElement("td", { className: "token-usage-cell", title: exactDateString }, this.formatDate(lastUsedDate))));
79
93
  }
80
94
  renderSummaryRow() {
@@ -84,12 +98,20 @@ let AITokenUsageConfigurationWidget = AITokenUsageConfigurationWidget_1 = class
84
98
  }
85
99
  const totalInputTokens = this.tokenUsageData.reduce((sum, model) => sum + model.inputTokens, 0);
86
100
  const totalOutputTokens = this.tokenUsageData.reduce((sum, model) => sum + model.outputTokens, 0);
87
- const totalTokens = totalInputTokens + totalOutputTokens;
101
+ const totalCachedInputTokens = this.tokenUsageData.reduce((sum, model) => sum + (model.cachedInputTokens || 0), 0);
102
+ const totalReadCachedInputTokens = this.tokenUsageData.reduce((sum, model) => sum + (model.readCachedInputTokens || 0), 0);
103
+ const totalTokens = totalInputTokens + totalCachedInputTokens + totalOutputTokens;
104
+ const showCacheColumns = this.hasCacheData();
88
105
  return (React.createElement("tr", { className: "token-usage-summary-row" },
89
106
  React.createElement("td", { className: "token-usage-model-cell" },
90
107
  React.createElement("strong", null, core_1.nls.localize('theia/ai/tokenUsage/total', 'Total'))),
91
108
  React.createElement("td", { className: "token-usage-cell" },
92
109
  React.createElement("strong", null, this.formatNumber(totalInputTokens))),
110
+ showCacheColumns && (React.createElement(React.Fragment, null,
111
+ React.createElement("td", { className: "token-usage-cell" },
112
+ React.createElement("strong", null, this.formatNumber(totalCachedInputTokens))),
113
+ React.createElement("td", { className: "token-usage-cell" },
114
+ React.createElement("strong", null, this.formatNumber(totalReadCachedInputTokens))))),
93
115
  React.createElement("td", { className: "token-usage-cell" },
94
116
  React.createElement("strong", null, this.formatNumber(totalOutputTokens))),
95
117
  React.createElement("td", { className: "token-usage-cell" },
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-configuration-widget.js","sourceRoot":"","sources":["../../../src/browser/ai-configuration/token-usage-configuration-widget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-usage-configuration-widget.js","sourceRoot":"","sources":["../../../src/browser/ai-configuration/token-usage-configuration-widget.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/ai-ide",
3
- "version": "1.62.1",
3
+ "version": "1.62.2",
4
4
  "description": "AI IDE Agents Extension",
5
5
  "license": "EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0",
6
6
  "repository": {
@@ -15,19 +15,19 @@
15
15
  "theia-extension"
16
16
  ],
17
17
  "dependencies": {
18
- "@theia/ai-chat": "1.62.1",
19
- "@theia/ai-chat-ui": "1.62.1",
20
- "@theia/ai-core": "1.62.1",
21
- "@theia/ai-mcp": "1.62.1",
22
- "@theia/core": "1.62.1",
23
- "@theia/filesystem": "1.62.1",
24
- "@theia/markers": "1.62.1",
25
- "@theia/monaco": "1.62.1",
26
- "@theia/navigator": "1.62.1",
27
- "@theia/search-in-workspace": "1.62.1",
28
- "@theia/task": "1.62.1",
29
- "@theia/terminal": "1.62.1",
30
- "@theia/workspace": "1.62.1",
18
+ "@theia/ai-chat": "1.62.2",
19
+ "@theia/ai-chat-ui": "1.62.2",
20
+ "@theia/ai-core": "1.62.2",
21
+ "@theia/ai-mcp": "1.62.2",
22
+ "@theia/core": "1.62.2",
23
+ "@theia/filesystem": "1.62.2",
24
+ "@theia/markers": "1.62.2",
25
+ "@theia/monaco": "1.62.2",
26
+ "@theia/navigator": "1.62.2",
27
+ "@theia/search-in-workspace": "1.62.2",
28
+ "@theia/task": "1.62.2",
29
+ "@theia/terminal": "1.62.2",
30
+ "@theia/workspace": "1.62.2",
31
31
  "date-fns": "^4.1.0",
32
32
  "ignore": "^6.0.0",
33
33
  "js-yaml": "^4.1.0",
@@ -37,8 +37,8 @@
37
37
  "access": "public"
38
38
  },
39
39
  "devDependencies": {
40
- "@theia/cli": "1.62.1",
41
- "@theia/test": "1.62.1"
40
+ "@theia/cli": "1.62.2",
41
+ "@theia/test": "1.62.2"
42
42
  },
43
43
  "theiaExtensions": [
44
44
  {
@@ -60,5 +60,5 @@
60
60
  "nyc": {
61
61
  "extends": "../../configs/nyc.json"
62
62
  },
63
- "gitHead": "0cdb67623c7b5ce0a2d41a1440ed0a78bce890de"
63
+ "gitHead": "5752b424369bb2a1a41e4d5b223e71a688b54442"
64
64
  }
@@ -72,28 +72,73 @@ export class AITokenUsageConfigurationWidget extends ReactWidget {
72
72
  return formatDistanceToNow(date, { addSuffix: true });
73
73
  }
74
74
 
75
+ protected hasCacheData(): boolean {
76
+ return this.tokenUsageData.some(model =>
77
+ model.cachedInputTokens !== undefined ||
78
+ model.readCachedInputTokens !== undefined
79
+ );
80
+ }
81
+
75
82
  protected renderHeaderRow(): React.ReactNode {
83
+ const showCacheColumns = this.hasCacheData();
84
+
76
85
  return (
77
86
  <tr className="token-usage-header">
78
87
  <th className="token-usage-model-column">{nls.localize('theia/ai/tokenUsage/model', 'Model')}</th>
79
88
  <th className="token-usage-column">{nls.localize('theia/ai/tokenUsage/inputTokens', 'Input Tokens')}</th>
89
+ {showCacheColumns && (
90
+ <>
91
+ <th
92
+ className="token-usage-column"
93
+ title={nls.localize(
94
+ 'theia/ai/tokenUsage/cachedInputTokensTooltip',
95
+ "Tracked additionally to 'Input Tokens'. Usually more expensive than non-cached tokens."
96
+ )}
97
+ >
98
+ {nls.localize('theia/ai/tokenUsage/cachedInputTokens', 'Input Tokens Written to Cache')}
99
+ </th>
100
+ <th
101
+ className="token-usage-column"
102
+ title={nls.localize(
103
+ 'theia/ai/tokenUsage/readCachedInputTokensTooltip',
104
+ "Tracked additionally to 'Input Token'. Usually much less expensive than not cached. Usually does not count to rate limits."
105
+ )}
106
+ >
107
+ {nls.localize('theia/ai/tokenUsage/readCachedInputTokens', 'Input Tokens Read From Cache')}
108
+ </th>
109
+ </>
110
+ )}
80
111
  <th className="token-usage-column">{nls.localize('theia/ai/tokenUsage/outputTokens', 'Output Tokens')}</th>
81
- <th className="token-usage-column">{nls.localize('theia/ai/tokenUsage/totalTokens', 'Total Tokens')}</th>
112
+ <th
113
+ className="token-usage-column"
114
+ title={nls.localize('theia/ai/tokenUsage/totalTokensTooltip', "'Input Tokens' + 'Output Tokens'"
115
+ )}
116
+ >
117
+ {nls.localize('theia/ai/tokenUsage/totalTokens', 'Total Tokens')}
118
+ </th>
82
119
  <th className="token-usage-column">{nls.localize('theia/ai/tokenUsage/lastUsed', 'Last Used')}</th>
83
- </tr>
120
+ </tr >
84
121
  );
85
122
  }
86
123
 
87
124
  protected renderModelRow(model: ModelTokenUsageData): React.ReactNode {
88
125
  const lastUsedDate = model.lastUsed ? new Date(model.lastUsed) : undefined;
89
126
  const exactDateString = lastUsedDate ? lastUsedDate.toLocaleString() : '';
127
+ const showCacheColumns = this.hasCacheData();
128
+ const totalTokens = model.inputTokens + model.outputTokens + (model.cachedInputTokens ?? 0);
90
129
 
91
130
  return (
92
131
  <tr key={model.modelId} className="token-usage-row">
93
132
  <td className="token-usage-model-cell">{model.modelId}</td>
94
133
  <td className="token-usage-cell">{this.formatNumber(model.inputTokens)}</td>
134
+ {showCacheColumns && (
135
+ <>
136
+ <td className="token-usage-cell">{model.cachedInputTokens !== undefined ? this.formatNumber(model.cachedInputTokens) : '-'}</td>
137
+ <td className="token-usage-cell">{model.readCachedInputTokens !== undefined ? this.formatNumber(model.readCachedInputTokens) : '-'}</td>
138
+ </>
139
+ )}
95
140
  <td className="token-usage-cell">{this.formatNumber(model.outputTokens)}</td>
96
- <td className="token-usage-cell">{this.formatNumber(model.inputTokens + model.outputTokens)}</td>
141
+ <td className="token-usage-cell">{this.formatNumber(totalTokens)}</td>
97
142
  <td className="token-usage-cell" title={exactDateString}>{this.formatDate(lastUsedDate)}</td>
98
143
  </tr>
99
144
  );
@@ -107,12 +152,26 @@ export class AITokenUsageConfigurationWidget extends ReactWidget {
107
152
 
108
153
  const totalInputTokens = this.tokenUsageData.reduce((sum, model) => sum + model.inputTokens, 0);
109
154
  const totalOutputTokens = this.tokenUsageData.reduce((sum, model) => sum + model.outputTokens, 0);
110
- const totalTokens = totalInputTokens + totalOutputTokens;
155
+ const totalCachedInputTokens = this.tokenUsageData.reduce(
156
+ (sum, model) => sum + (model.cachedInputTokens || 0), 0
157
+ );
158
+ const totalReadCachedInputTokens = this.tokenUsageData.reduce(
159
+ (sum, model) => sum + (model.readCachedInputTokens || 0), 0
160
+ );
161
+ const totalTokens = totalInputTokens + totalCachedInputTokens + totalOutputTokens;
162
+
163
+ const showCacheColumns = this.hasCacheData();
111
164
 
112
165
  return (
113
166
  <tr className="token-usage-summary-row">
114
167
  <td className="token-usage-model-cell"><strong>{nls.localize('theia/ai/tokenUsage/total', 'Total')}</strong></td>
115
168
  <td className="token-usage-cell"><strong>{this.formatNumber(totalInputTokens)}</strong></td>
169
+ {showCacheColumns && (
170
+ <>
171
+ <td className="token-usage-cell"><strong>{this.formatNumber(totalCachedInputTokens)}</strong></td>
172
+ <td className="token-usage-cell"><strong>{this.formatNumber(totalReadCachedInputTokens)}</strong></td>
173
+ </>
174
+ )}
116
175
  <td className="token-usage-cell"><strong>{this.formatNumber(totalOutputTokens)}</strong></td>
117
176
  <td className="token-usage-cell"><strong>{this.formatNumber(totalTokens)}</strong></td>
118
177
  <td className="token-usage-cell"></td>