@theia/ai-core 1.61.0 → 1.61.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.
- package/lib/browser/token-usage-frontend-service-impl.d.ts.map +1 -1
- package/lib/browser/token-usage-frontend-service-impl.js +20 -2
- package/lib/browser/token-usage-frontend-service-impl.js.map +1 -1
- package/lib/browser/token-usage-frontend-service.d.ts +4 -0
- package/lib/browser/token-usage-frontend-service.d.ts.map +1 -1
- package/lib/browser/token-usage-frontend-service.js.map +1 -1
- package/lib/common/token-usage-service.d.ts +8 -0
- package/lib/common/token-usage-service.d.ts.map +1 -1
- package/lib/node/token-usage-service-impl.d.ts.map +1 -1
- package/lib/node/token-usage-service-impl.js +14 -1
- package/lib/node/token-usage-service-impl.js.map +1 -1
- package/package.json +10 -10
- package/src/browser/token-usage-frontend-service-impl.ts +27 -2
- package/src/browser/token-usage-frontend-service.ts +4 -0
- package/src/common/token-usage-service.ts +8 -0
- package/src/node/token-usage-service-impl.ts +19 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-frontend-service-impl.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,2BAA4B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,QAAQ,CAAC,mBAAmB,0CAAmC;IAE/D,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAI5C;AAED,qBACa,6BAA8B,YAAW,yBAAyB;IAG3E,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,QAAQ,CAAC,mBAAmB,qDAAmC;IAE/D,OAAO,CAAC,eAAe,CAA6B;IAGpD,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAWzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"token-usage-frontend-service-impl.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,2BAA4B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,QAAQ,CAAC,mBAAmB,0CAAmC;IAE/D,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAI5C;AAED,qBACa,6BAA8B,YAAW,yBAAyB;IAG3E,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,QAAQ,CAAC,mBAAmB,qDAAmC;IAE/D,OAAO,CAAC,eAAe,CAA6B;IAGpD,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAWzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAoE/B"}
|
|
@@ -73,6 +73,14 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
|
|
|
73
73
|
if (existing) {
|
|
74
74
|
existing.inputTokens += usage.inputTokens;
|
|
75
75
|
existing.outputTokens += usage.outputTokens;
|
|
76
|
+
// Add cached tokens if they exist
|
|
77
|
+
if (usage.cachedInputTokens !== undefined) {
|
|
78
|
+
existing.cachedInputTokens += usage.cachedInputTokens;
|
|
79
|
+
}
|
|
80
|
+
// Add read cached tokens if they exist
|
|
81
|
+
if (usage.readCachedInputTokens !== undefined) {
|
|
82
|
+
existing.readCachedInputTokens += usage.readCachedInputTokens;
|
|
83
|
+
}
|
|
76
84
|
// Update last used if this usage is more recent
|
|
77
85
|
if (!existing.lastUsed || (usage.timestamp && usage.timestamp > existing.lastUsed)) {
|
|
78
86
|
existing.lastUsed = usage.timestamp;
|
|
@@ -82,6 +90,8 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
|
|
|
82
90
|
modelMap.set(usage.model, {
|
|
83
91
|
inputTokens: usage.inputTokens,
|
|
84
92
|
outputTokens: usage.outputTokens,
|
|
93
|
+
cachedInputTokens: usage.cachedInputTokens || 0,
|
|
94
|
+
readCachedInputTokens: usage.readCachedInputTokens || 0,
|
|
85
95
|
lastUsed: usage.timestamp
|
|
86
96
|
});
|
|
87
97
|
}
|
|
@@ -89,12 +99,20 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
|
|
|
89
99
|
// Convert map to array of model usage data
|
|
90
100
|
const result = [];
|
|
91
101
|
for (const [modelId, data] of modelMap.entries()) {
|
|
92
|
-
|
|
102
|
+
const modelData = {
|
|
93
103
|
modelId,
|
|
94
104
|
inputTokens: data.inputTokens,
|
|
95
105
|
outputTokens: data.outputTokens,
|
|
96
106
|
lastUsed: data.lastUsed
|
|
97
|
-
}
|
|
107
|
+
};
|
|
108
|
+
// Only include cache-related fields if they have non-zero values
|
|
109
|
+
if (data.cachedInputTokens > 0) {
|
|
110
|
+
modelData.cachedInputTokens = data.cachedInputTokens;
|
|
111
|
+
}
|
|
112
|
+
if (data.readCachedInputTokens > 0) {
|
|
113
|
+
modelData.readCachedInputTokens = data.readCachedInputTokens;
|
|
114
|
+
}
|
|
115
|
+
result.push(modelData);
|
|
98
116
|
}
|
|
99
117
|
return result;
|
|
100
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-frontend-service-impl.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAiF;AACjF,sCAAsC;AAEtC,uEAA8E;AAC9E,iDAA6D;AAGtD,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAAjC;QACc,yBAAoB,GAAG,IAAI,cAAO,EAAc,CAAC;QACzD,wBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAMnE,CAAC;IAJG,gBAAgB,CAAC,KAAiB;QAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CAEJ,CAAA;AARY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CAQvC;AAGM,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAAnC;QAQc,yBAAoB,GAAG,IAAI,cAAO,EAAyB,CAAC;QACpE,wBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAEvD,oBAAe,GAA0B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage-frontend-service-impl.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,10 @@ export interface ModelTokenUsageData {
|
|
|
9
9
|
inputTokens: number;
|
|
10
10
|
/** Number of output tokens used */
|
|
11
11
|
outputTokens: number;
|
|
12
|
+
/** Number of input tokens written to cache */
|
|
13
|
+
cachedInputTokens?: number;
|
|
14
|
+
/** Number of input tokens read from cache */
|
|
15
|
+
readCachedInputTokens?: number;
|
|
12
16
|
/** Date when the model was last used */
|
|
13
17
|
lastUsed?: Date;
|
|
14
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-frontend-service.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACvD"}
|
|
1
|
+
{"version":3,"file":"token-usage-frontend-service.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-frontend-service.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"token-usage-frontend-service.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAsBhF;;GAEG;AACU,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
|
|
@@ -5,6 +5,10 @@ export interface TokenUsage {
|
|
|
5
5
|
inputTokens: number;
|
|
6
6
|
/** The output token count */
|
|
7
7
|
outputTokens: number;
|
|
8
|
+
/** Input tokens written to cache */
|
|
9
|
+
cachedInputTokens?: number;
|
|
10
|
+
/** Input tokens read from cache */
|
|
11
|
+
readCachedInputTokens?: number;
|
|
8
12
|
/** The model identifier */
|
|
9
13
|
model: string;
|
|
10
14
|
/** The timestamp of when the tokens were used */
|
|
@@ -17,6 +21,10 @@ export interface TokenUsageParams {
|
|
|
17
21
|
inputTokens: number;
|
|
18
22
|
/** The output token count */
|
|
19
23
|
outputTokens: number;
|
|
24
|
+
/** Input tokens placed in cache */
|
|
25
|
+
cachedInputTokens?: number;
|
|
26
|
+
/** Input tokens read from cache */
|
|
27
|
+
readCachedInputTokens?: number;
|
|
20
28
|
/** Request identifier */
|
|
21
29
|
requestId: string;
|
|
22
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-service.d.ts","sourceRoot":"","sources":["../../src/common/token-usage-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACvB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,SAAS,EAAE,IAAI,CAAC;IAChB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAExC,SAAS,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC9D"}
|
|
1
|
+
{"version":3,"file":"token-usage-service.d.ts","sourceRoot":"","sources":["../../src/common/token-usage-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACvB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,SAAS,EAAE,IAAI,CAAC;IAChB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B;;;;;;OAMG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAExC,SAAS,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-service-impl.d.ts","sourceRoot":"","sources":["../../src/node/token-usage-service-impl.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,qBAAsB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,MAAM,CAAsC;IAEpD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAAG,IAAI;IAI5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage-service-impl.d.ts","sourceRoot":"","sources":["../../src/node/token-usage-service-impl.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,qBAAsB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,MAAM,CAAsC;IAEpD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAAG,IAAI;IAI5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEhD;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC9E;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAGhD"}
|
|
@@ -39,6 +39,8 @@ let TokenUsageServiceImpl = class TokenUsageServiceImpl {
|
|
|
39
39
|
var _a;
|
|
40
40
|
const usage = {
|
|
41
41
|
inputTokens: params.inputTokens,
|
|
42
|
+
cachedInputTokens: params.cachedInputTokens,
|
|
43
|
+
readCachedInputTokens: params.readCachedInputTokens,
|
|
42
44
|
outputTokens: params.outputTokens,
|
|
43
45
|
model,
|
|
44
46
|
timestamp: new Date(),
|
|
@@ -46,7 +48,18 @@ let TokenUsageServiceImpl = class TokenUsageServiceImpl {
|
|
|
46
48
|
};
|
|
47
49
|
this.tokenUsages.push(usage);
|
|
48
50
|
(_a = this.client) === null || _a === void 0 ? void 0 : _a.notifyTokenUsage(usage);
|
|
49
|
-
|
|
51
|
+
let logMessage = `Input Tokens: ${params.inputTokens};`;
|
|
52
|
+
if (params.cachedInputTokens) {
|
|
53
|
+
logMessage += ` Input Tokens written to cache: ${params.cachedInputTokens};`;
|
|
54
|
+
}
|
|
55
|
+
if (params.readCachedInputTokens) {
|
|
56
|
+
logMessage += ` Input Tokens read from cache: ${params.readCachedInputTokens};`;
|
|
57
|
+
}
|
|
58
|
+
logMessage += ` Output Tokens: ${params.outputTokens}; Model: ${model};`;
|
|
59
|
+
if (params.requestId) {
|
|
60
|
+
logMessage += `; RequestId: ${params.requestId}`;
|
|
61
|
+
}
|
|
62
|
+
console.debug(logMessage);
|
|
50
63
|
// For now we just store in memory
|
|
51
64
|
// In the future, this could be persisted to disk, a database, or sent to a service
|
|
52
65
|
return Promise.resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-service-impl.js","sourceRoot":"","sources":["../../src/node/token-usage-service-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAKnD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QAUc,gBAAW,GAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage-service-impl.js","sourceRoot":"","sources":["../../src/node/token-usage-service-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAKnD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QAUc,gBAAW,GAAiB,EAAE,CAAC;IAmDpD,CAAC;IA1DG;;OAEG;IACH,SAAS,CAAC,MAA2C;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAID;;;;;;OAMG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,MAAwB;;QAC1D,MAAM,KAAK,GAAe;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC9B,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,UAAU,GAAG,iBAAiB,MAAM,CAAC,WAAW,GAAG,CAAC;QAExD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,UAAU,IAAI,mCAAmC,MAAM,CAAC,iBAAiB,GAAG,CAAC;QACjF,CAAC;QAED,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC/B,UAAU,IAAI,kCAAkC,MAAM,CAAC,qBAAqB,GAAG,CAAC;QACpF,CAAC;QAED,UAAU,IAAI,mBAAmB,MAAM,CAAC,YAAY,YAAY,KAAK,GAAG,CAAC;QAEzE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,UAAU,IAAI,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1B,kCAAkC;QAClC,mFAAmF;QACnF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;CACJ,CAAA;AA7DY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,sBAAU,GAAE;GACA,qBAAqB,CA6DjC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-core",
|
|
3
|
-
"version": "1.61.
|
|
3
|
+
"version": "1.61.1",
|
|
4
4
|
"description": "Theia - AI Core",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.61.
|
|
7
|
-
"@theia/editor": "1.61.
|
|
8
|
-
"@theia/filesystem": "1.61.
|
|
9
|
-
"@theia/monaco": "1.61.
|
|
6
|
+
"@theia/core": "1.61.1",
|
|
7
|
+
"@theia/editor": "1.61.1",
|
|
8
|
+
"@theia/filesystem": "1.61.1",
|
|
9
|
+
"@theia/monaco": "1.61.1",
|
|
10
10
|
"@theia/monaco-editor-core": "1.96.302",
|
|
11
|
-
"@theia/output": "1.61.
|
|
12
|
-
"@theia/variable-resolver": "1.61.
|
|
13
|
-
"@theia/workspace": "1.61.
|
|
11
|
+
"@theia/output": "1.61.1",
|
|
12
|
+
"@theia/variable-resolver": "1.61.1",
|
|
13
|
+
"@theia/workspace": "1.61.1",
|
|
14
14
|
"@types/js-yaml": "^4.0.9",
|
|
15
15
|
"fast-deep-equal": "^3.1.3",
|
|
16
16
|
"js-yaml": "^4.1.0",
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"watch": "theiaext watch"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@theia/ext-scripts": "1.61.
|
|
56
|
+
"@theia/ext-scripts": "1.61.1"
|
|
57
57
|
},
|
|
58
58
|
"nyc": {
|
|
59
59
|
"extends": "../../configs/nyc.json"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "5ea3cf6111aded4ccf1d5ccaf67b04e6588a6dea"
|
|
62
62
|
}
|
|
@@ -76,6 +76,8 @@ export class TokenUsageFrontendServiceImpl implements TokenUsageFrontendService
|
|
|
76
76
|
const modelMap = new Map<string, {
|
|
77
77
|
inputTokens: number;
|
|
78
78
|
outputTokens: number;
|
|
79
|
+
cachedInputTokens: number;
|
|
80
|
+
readCachedInputTokens: number;
|
|
79
81
|
lastUsed?: Date;
|
|
80
82
|
}>();
|
|
81
83
|
|
|
@@ -87,6 +89,16 @@ export class TokenUsageFrontendServiceImpl implements TokenUsageFrontendService
|
|
|
87
89
|
existing.inputTokens += usage.inputTokens;
|
|
88
90
|
existing.outputTokens += usage.outputTokens;
|
|
89
91
|
|
|
92
|
+
// Add cached tokens if they exist
|
|
93
|
+
if (usage.cachedInputTokens !== undefined) {
|
|
94
|
+
existing.cachedInputTokens += usage.cachedInputTokens;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Add read cached tokens if they exist
|
|
98
|
+
if (usage.readCachedInputTokens !== undefined) {
|
|
99
|
+
existing.readCachedInputTokens += usage.readCachedInputTokens;
|
|
100
|
+
}
|
|
101
|
+
|
|
90
102
|
// Update last used if this usage is more recent
|
|
91
103
|
if (!existing.lastUsed || (usage.timestamp && usage.timestamp > existing.lastUsed)) {
|
|
92
104
|
existing.lastUsed = usage.timestamp;
|
|
@@ -95,6 +107,8 @@ export class TokenUsageFrontendServiceImpl implements TokenUsageFrontendService
|
|
|
95
107
|
modelMap.set(usage.model, {
|
|
96
108
|
inputTokens: usage.inputTokens,
|
|
97
109
|
outputTokens: usage.outputTokens,
|
|
110
|
+
cachedInputTokens: usage.cachedInputTokens || 0,
|
|
111
|
+
readCachedInputTokens: usage.readCachedInputTokens || 0,
|
|
98
112
|
lastUsed: usage.timestamp
|
|
99
113
|
});
|
|
100
114
|
}
|
|
@@ -104,12 +118,23 @@ export class TokenUsageFrontendServiceImpl implements TokenUsageFrontendService
|
|
|
104
118
|
const result: ModelTokenUsageData[] = [];
|
|
105
119
|
|
|
106
120
|
for (const [modelId, data] of modelMap.entries()) {
|
|
107
|
-
|
|
121
|
+
const modelData: ModelTokenUsageData = {
|
|
108
122
|
modelId,
|
|
109
123
|
inputTokens: data.inputTokens,
|
|
110
124
|
outputTokens: data.outputTokens,
|
|
111
125
|
lastUsed: data.lastUsed
|
|
112
|
-
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// Only include cache-related fields if they have non-zero values
|
|
129
|
+
if (data.cachedInputTokens > 0) {
|
|
130
|
+
modelData.cachedInputTokens = data.cachedInputTokens;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (data.readCachedInputTokens > 0) {
|
|
134
|
+
modelData.readCachedInputTokens = data.readCachedInputTokens;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
result.push(modelData);
|
|
113
138
|
}
|
|
114
139
|
|
|
115
140
|
return result;
|
|
@@ -26,6 +26,10 @@ export interface ModelTokenUsageData {
|
|
|
26
26
|
inputTokens: number;
|
|
27
27
|
/** Number of output tokens used */
|
|
28
28
|
outputTokens: number;
|
|
29
|
+
/** Number of input tokens written to cache */
|
|
30
|
+
cachedInputTokens?: number;
|
|
31
|
+
/** Number of input tokens read from cache */
|
|
32
|
+
readCachedInputTokens?: number;
|
|
29
33
|
/** Date when the model was last used */
|
|
30
34
|
lastUsed?: Date;
|
|
31
35
|
}
|
|
@@ -23,6 +23,10 @@ export interface TokenUsage {
|
|
|
23
23
|
inputTokens: number;
|
|
24
24
|
/** The output token count */
|
|
25
25
|
outputTokens: number;
|
|
26
|
+
/** Input tokens written to cache */
|
|
27
|
+
cachedInputTokens?: number;
|
|
28
|
+
/** Input tokens read from cache */
|
|
29
|
+
readCachedInputTokens?: number;
|
|
26
30
|
/** The model identifier */
|
|
27
31
|
model: string;
|
|
28
32
|
/** The timestamp of when the tokens were used */
|
|
@@ -36,6 +40,10 @@ export interface TokenUsageParams {
|
|
|
36
40
|
inputTokens: number;
|
|
37
41
|
/** The output token count */
|
|
38
42
|
outputTokens: number;
|
|
43
|
+
/** Input tokens placed in cache */
|
|
44
|
+
cachedInputTokens?: number;
|
|
45
|
+
/** Input tokens read from cache */
|
|
46
|
+
readCachedInputTokens?: number;
|
|
39
47
|
/** Request identifier */
|
|
40
48
|
requestId: string;
|
|
41
49
|
}
|
|
@@ -41,6 +41,8 @@ export class TokenUsageServiceImpl implements TokenUsageService {
|
|
|
41
41
|
async recordTokenUsage(model: string, params: TokenUsageParams): Promise<void> {
|
|
42
42
|
const usage: TokenUsage = {
|
|
43
43
|
inputTokens: params.inputTokens,
|
|
44
|
+
cachedInputTokens: params.cachedInputTokens,
|
|
45
|
+
readCachedInputTokens: params.readCachedInputTokens,
|
|
44
46
|
outputTokens: params.outputTokens,
|
|
45
47
|
model,
|
|
46
48
|
timestamp: new Date(),
|
|
@@ -50,7 +52,23 @@ export class TokenUsageServiceImpl implements TokenUsageService {
|
|
|
50
52
|
this.tokenUsages.push(usage);
|
|
51
53
|
this.client?.notifyTokenUsage(usage);
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
let logMessage = `Input Tokens: ${params.inputTokens};`;
|
|
56
|
+
|
|
57
|
+
if (params.cachedInputTokens) {
|
|
58
|
+
logMessage += ` Input Tokens written to cache: ${params.cachedInputTokens};`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (params.readCachedInputTokens) {
|
|
62
|
+
logMessage += ` Input Tokens read from cache: ${params.readCachedInputTokens};`;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
logMessage += ` Output Tokens: ${params.outputTokens}; Model: ${model};`;
|
|
66
|
+
|
|
67
|
+
if (params.requestId) {
|
|
68
|
+
logMessage += `; RequestId: ${params.requestId}`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
console.debug(logMessage);
|
|
54
72
|
// For now we just store in memory
|
|
55
73
|
// In the future, this could be persisted to disk, a database, or sent to a service
|
|
56
74
|
return Promise.resolve();
|