@theia/ai-core 1.62.1 → 1.63.0-next.24

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.
@@ -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;CA2C/B"}
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
- result.push({
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;IAuExD,CAAC;IApEa,IAAI;QACV,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACnB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC,eAAe,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,MAAoB;QAC7C,iBAAiB;QACjB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAIpB,CAAC;QAEL,4BAA4B;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,QAAQ,EAAE,CAAC;gBACX,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;gBAC1C,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC;gBAE5C,gDAAgD;gBAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjF,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;gBACxC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;oBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,QAAQ,EAAE,KAAK,CAAC,SAAS;iBAC5B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,MAAM,MAAM,GAA0B,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC;gBACR,OAAO;gBACP,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAA;AAlFY,sEAA6B;AAGnB;IADlB,IAAA,kBAAM,EAAC,kCAAuB,CAAC;;8EACoC;AAGjD;IADlB,IAAA,kBAAM,EAAC,uCAAiB,CAAC;;wEAC8B;AAQ9C;IADT,IAAA,yBAAa,GAAE;;;;yDAOf;wCApBQ,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CAkFzC"}
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;;;AAkBhF;;GAEG;AACU,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
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,5 +1,6 @@
1
1
  import { interfaces } from '@theia/core/shared/inversify';
2
2
  import { ToolRequest } from './language-model';
3
+ import { Event } from '@theia/core';
3
4
  export declare const ToolInvocationRegistry: unique symbol;
4
5
  /**
5
6
  * Registry for all the function calls available to Agents.
@@ -39,6 +40,10 @@ export interface ToolInvocationRegistry {
39
40
  * @param providerName - The name of the tool provider whose tools should be removed (as specificed in the `ToolRequest`).
40
41
  */
41
42
  unregisterAllTools(providerName: string): void;
43
+ /**
44
+ * Event that is fired whenever the registry changes (tool registered or unregistered).
45
+ */
46
+ onDidChange: Event<void>;
42
47
  }
43
48
  export declare const ToolProvider: unique symbol;
44
49
  export interface ToolProvider {
@@ -48,6 +53,8 @@ export interface ToolProvider {
48
53
  export declare function bindToolProvider(identifier: interfaces.Newable<ToolProvider>, bind: interfaces.Bind): void;
49
54
  export declare class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
50
55
  private tools;
56
+ private readonly onDidChangeEmitter;
57
+ readonly onDidChange: Event<void>;
51
58
  private providers;
52
59
  init(): void;
53
60
  unregisterAllTools(providerName: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-invocation-registry.d.ts","sourceRoot":"","sources":["../../src/common/tool-invocation-registry.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA4C,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAErD;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAElD;;;;OAIG;IACH,eAAe,IAAI,WAAW,EAAE,CAAC;IAEjC;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,MAAM,WAAW,YAAY;IACzB,OAAO,IAAI,WAAW,CAAC;CAC1B;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAG1G;AAED,qBACa,0BAA2B,YAAW,sBAAsB;IAErE,OAAO,CAAC,KAAK,CAA4D;IAIzE,OAAO,CAAC,SAAS,CAAqC;IAGtD,IAAI,IAAI,IAAI;IAMZ,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAS9C,eAAe,IAAI,WAAW,EAAE;IAIhC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAQrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD,YAAY,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;CAWpD"}
1
+ {"version":3,"file":"tool-invocation-registry.d.ts","sourceRoot":"","sources":["../../src/common/tool-invocation-registry.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA4C,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAiC,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,sBAAsB,eAAmC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAErD;;;;;;OAMG;IACH,YAAY,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAElD;;;;OAIG;IACH,eAAe,IAAI,WAAW,EAAE,CAAC;IAEjC;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/C;;OAEG;IACH,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,MAAM,WAAW,YAAY;IACzB,OAAO,IAAI,WAAW,CAAC;CAC1B;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAG1G;AAED,qBACa,0BAA2B,YAAW,sBAAsB;IAErE,OAAO,CAAC,KAAK,CAA4D;IAEzE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuB;IAC1D,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAiC;IAIlE,OAAO,CAAC,SAAS,CAAqC;IAGtD,IAAI,IAAI,IAAI;IAMZ,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAiB9C,eAAe,IAAI,WAAW,EAAE;IAIhC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IASrC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD,YAAY,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;CAWpD"}
@@ -30,6 +30,8 @@ exports.bindToolProvider = bindToolProvider;
30
30
  let ToolInvocationRegistryImpl = class ToolInvocationRegistryImpl {
31
31
  constructor() {
32
32
  this.tools = new Map();
33
+ this.onDidChangeEmitter = new core_1.Emitter();
34
+ this.onDidChange = this.onDidChangeEmitter.event;
33
35
  }
34
36
  init() {
35
37
  this.providers.getContributions().forEach(provider => {
@@ -43,7 +45,15 @@ let ToolInvocationRegistryImpl = class ToolInvocationRegistryImpl {
43
45
  toolsToRemove.push(id);
44
46
  }
45
47
  }
46
- toolsToRemove.forEach(id => this.tools.delete(id));
48
+ let changed = false;
49
+ toolsToRemove.forEach(id => {
50
+ if (this.tools.delete(id)) {
51
+ changed = true;
52
+ }
53
+ });
54
+ if (changed) {
55
+ this.onDidChangeEmitter.fire();
56
+ }
47
57
  }
48
58
  getAllFunctions() {
49
59
  return Array.from(this.tools.values());
@@ -54,6 +64,7 @@ let ToolInvocationRegistryImpl = class ToolInvocationRegistryImpl {
54
64
  }
55
65
  else {
56
66
  this.tools.set(tool.id, tool);
67
+ this.onDidChangeEmitter.fire();
57
68
  }
58
69
  }
59
70
  getFunction(toolId) {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-invocation-registry.js","sourceRoot":"","sources":["../../src/common/tool-invocation-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-invocation-registry.js","sourceRoot":"","sources":["../../src/common/tool-invocation-registry.ts"],"names":[],"mappings":"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"}
@@ -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;IAkB9E;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAGhD"}
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
- console.log(`Input Tokens: ${params.inputTokens}; Output Tokens: ${params.outputTokens}; Model: ${model}${params.requestId ? `; RequestId: ${params.requestId}` : ''}`);
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;IAiCpD,CAAC;IAxCG;;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,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,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,oBAAoB,MAAM,CAAC,YAAY,YAAY,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxK,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;AA3CY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,sBAAU,GAAE;GACA,qBAAqB,CA2CjC"}
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.62.1",
3
+ "version": "1.63.0-next.24+83b50cc66",
4
4
  "description": "Theia - AI Core",
5
5
  "dependencies": {
6
- "@theia/core": "1.62.1",
7
- "@theia/editor": "1.62.1",
8
- "@theia/filesystem": "1.62.1",
9
- "@theia/monaco": "1.62.1",
6
+ "@theia/core": "1.63.0-next.24+83b50cc66",
7
+ "@theia/editor": "1.63.0-next.24+83b50cc66",
8
+ "@theia/filesystem": "1.63.0-next.24+83b50cc66",
9
+ "@theia/monaco": "1.63.0-next.24+83b50cc66",
10
10
  "@theia/monaco-editor-core": "1.96.302",
11
- "@theia/output": "1.62.1",
12
- "@theia/variable-resolver": "1.62.1",
13
- "@theia/workspace": "1.62.1",
11
+ "@theia/output": "1.63.0-next.24+83b50cc66",
12
+ "@theia/variable-resolver": "1.63.0-next.24+83b50cc66",
13
+ "@theia/workspace": "1.63.0-next.24+83b50cc66",
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.62.1"
56
+ "@theia/ext-scripts": "1.62.0"
57
57
  },
58
58
  "nyc": {
59
59
  "extends": "../../configs/nyc.json"
60
60
  },
61
- "gitHead": "0cdb67623c7b5ce0a2d41a1440ed0a78bce890de"
61
+ "gitHead": "83b50cc66b001a5b9100ccd944dcace04cd4ae2e"
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
- result.push({
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
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { inject, injectable, named, postConstruct, interfaces } from '@theia/core/shared/inversify';
18
18
  import { ToolRequest } from './language-model';
19
- import { ContributionProvider } from '@theia/core';
19
+ import { ContributionProvider, Emitter, Event } from '@theia/core';
20
20
 
21
21
  export const ToolInvocationRegistry = Symbol('ToolInvocationRegistry');
22
22
 
@@ -62,6 +62,11 @@ export interface ToolInvocationRegistry {
62
62
  * @param providerName - The name of the tool provider whose tools should be removed (as specificed in the `ToolRequest`).
63
63
  */
64
64
  unregisterAllTools(providerName: string): void;
65
+
66
+ /**
67
+ * Event that is fired whenever the registry changes (tool registered or unregistered).
68
+ */
69
+ onDidChange: Event<void>;
65
70
  }
66
71
 
67
72
  export const ToolProvider = Symbol('ToolProvider');
@@ -80,6 +85,9 @@ export class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
80
85
 
81
86
  private tools: Map<string, ToolRequest> = new Map<string, ToolRequest>();
82
87
 
88
+ private readonly onDidChangeEmitter = new Emitter<void>();
89
+ readonly onDidChange: Event<void> = this.onDidChangeEmitter.event;
90
+
83
91
  @inject(ContributionProvider)
84
92
  @named(ToolProvider)
85
93
  private providers: ContributionProvider<ToolProvider>;
@@ -98,7 +106,15 @@ export class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
98
106
  toolsToRemove.push(id);
99
107
  }
100
108
  }
101
- toolsToRemove.forEach(id => this.tools.delete(id));
109
+ let changed = false;
110
+ toolsToRemove.forEach(id => {
111
+ if (this.tools.delete(id)) {
112
+ changed = true;
113
+ }
114
+ });
115
+ if (changed) {
116
+ this.onDidChangeEmitter.fire();
117
+ }
102
118
  }
103
119
  getAllFunctions(): ToolRequest[] {
104
120
  return Array.from(this.tools.values());
@@ -109,6 +125,7 @@ export class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
109
125
  console.warn(`Function with id ${tool.id} is already registered.`);
110
126
  } else {
111
127
  this.tools.set(tool.id, tool);
128
+ this.onDidChangeEmitter.fire();
112
129
  }
113
130
  }
114
131
 
@@ -128,3 +145,4 @@ export class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
128
145
  return tools;
129
146
  }
130
147
  }
148
+
@@ -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
- console.log(`Input Tokens: ${params.inputTokens}; Output Tokens: ${params.outputTokens}; Model: ${model}${params.requestId ? `; RequestId: ${params.requestId}` : ''}`);
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();