@yourgpt/llm-sdk 2.5.1-beta.3 → 2.5.1-beta.4

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.
@@ -1305,6 +1305,11 @@ var AnthropicAdapter = class {
1305
1305
  content,
1306
1306
  toolCalls,
1307
1307
  thinking: thinking || void 0,
1308
+ usage: response.usage ? {
1309
+ promptTokens: response.usage.input_tokens ?? 0,
1310
+ completionTokens: response.usage.output_tokens ?? 0,
1311
+ totalTokens: (response.usage.input_tokens ?? 0) + (response.usage.output_tokens ?? 0)
1312
+ } : void 0,
1308
1313
  rawResponse: response
1309
1314
  };
1310
1315
  } catch (error) {
@@ -2163,6 +2168,11 @@ var GoogleAdapter = class {
2163
2168
  return {
2164
2169
  content: textContent,
2165
2170
  toolCalls,
2171
+ usage: response.usageMetadata ? {
2172
+ promptTokens: response.usageMetadata.promptTokenCount ?? 0,
2173
+ completionTokens: (response.usageMetadata.candidatesTokenCount ?? 0) + (response.usageMetadata.thoughtsTokenCount ?? 0),
2174
+ totalTokens: response.usageMetadata.totalTokenCount ?? 0
2175
+ } : void 0,
2166
2176
  rawResponse: response
2167
2177
  };
2168
2178
  }
@@ -2391,6 +2401,11 @@ var AzureAdapter = class {
2391
2401
  return {
2392
2402
  content: message?.content || "",
2393
2403
  toolCalls,
2404
+ usage: response.usage ? {
2405
+ promptTokens: response.usage.prompt_tokens ?? 0,
2406
+ completionTokens: response.usage.completion_tokens ?? 0,
2407
+ totalTokens: response.usage.total_tokens ?? (response.usage.prompt_tokens ?? 0) + (response.usage.completion_tokens ?? 0)
2408
+ } : void 0,
2394
2409
  rawResponse: response
2395
2410
  };
2396
2411
  }
@@ -1303,6 +1303,11 @@ var AnthropicAdapter = class {
1303
1303
  content,
1304
1304
  toolCalls,
1305
1305
  thinking: thinking || void 0,
1306
+ usage: response.usage ? {
1307
+ promptTokens: response.usage.input_tokens ?? 0,
1308
+ completionTokens: response.usage.output_tokens ?? 0,
1309
+ totalTokens: (response.usage.input_tokens ?? 0) + (response.usage.output_tokens ?? 0)
1310
+ } : void 0,
1306
1311
  rawResponse: response
1307
1312
  };
1308
1313
  } catch (error) {
@@ -2161,6 +2166,11 @@ var GoogleAdapter = class {
2161
2166
  return {
2162
2167
  content: textContent,
2163
2168
  toolCalls,
2169
+ usage: response.usageMetadata ? {
2170
+ promptTokens: response.usageMetadata.promptTokenCount ?? 0,
2171
+ completionTokens: (response.usageMetadata.candidatesTokenCount ?? 0) + (response.usageMetadata.thoughtsTokenCount ?? 0),
2172
+ totalTokens: response.usageMetadata.totalTokenCount ?? 0
2173
+ } : void 0,
2164
2174
  rawResponse: response
2165
2175
  };
2166
2176
  }
@@ -2389,6 +2399,11 @@ var AzureAdapter = class {
2389
2399
  return {
2390
2400
  content: message?.content || "",
2391
2401
  toolCalls,
2402
+ usage: response.usage ? {
2403
+ promptTokens: response.usage.prompt_tokens ?? 0,
2404
+ completionTokens: response.usage.completion_tokens ?? 0,
2405
+ totalTokens: response.usage.total_tokens ?? (response.usage.prompt_tokens ?? 0) + (response.usage.completion_tokens ?? 0)
2406
+ } : void 0,
2392
2407
  rawResponse: response
2393
2408
  };
2394
2409
  }
package/dist/index.d.mts CHANGED
@@ -1001,7 +1001,7 @@ declare class Runtime {
1001
1001
  * 5. Loop continues until no more tool calls or max iterations reached
1002
1002
  * 6. Returns all new messages in the done event for client to append
1003
1003
  */
1004
- processChatWithLoop(request: ChatRequest, signal?: AbortSignal, _accumulatedMessages?: DoneEventMessage[], _isRecursive?: boolean, _httpRequest?: Request, _toolSearchState?: ToolSearchState): AsyncGenerator<StreamEvent>;
1004
+ processChatWithLoop(request: ChatRequest, signal?: AbortSignal, _accumulatedMessages?: DoneEventMessage[], _isRecursive?: boolean, _httpRequest?: Request, _toolSearchState?: ToolSearchState, _iteration?: number): AsyncGenerator<StreamEvent>;
1005
1005
  /**
1006
1006
  * Non-streaming agent loop implementation
1007
1007
  *
package/dist/index.d.ts CHANGED
@@ -1001,7 +1001,7 @@ declare class Runtime {
1001
1001
  * 5. Loop continues until no more tool calls or max iterations reached
1002
1002
  * 6. Returns all new messages in the done event for client to append
1003
1003
  */
1004
- processChatWithLoop(request: ChatRequest, signal?: AbortSignal, _accumulatedMessages?: DoneEventMessage[], _isRecursive?: boolean, _httpRequest?: Request, _toolSearchState?: ToolSearchState): AsyncGenerator<StreamEvent>;
1004
+ processChatWithLoop(request: ChatRequest, signal?: AbortSignal, _accumulatedMessages?: DoneEventMessage[], _isRecursive?: boolean, _httpRequest?: Request, _toolSearchState?: ToolSearchState, _iteration?: number): AsyncGenerator<StreamEvent>;
1005
1005
  /**
1006
1006
  * Non-streaming agent loop implementation
1007
1007
  *
package/dist/index.js CHANGED
@@ -2112,7 +2112,7 @@ var Runtime = class {
2112
2112
  * 5. Loop continues until no more tool calls or max iterations reached
2113
2113
  * 6. Returns all new messages in the done event for client to append
2114
2114
  */
2115
- async *processChatWithLoop(request, signal, _accumulatedMessages, _isRecursive, _httpRequest, _toolSearchState) {
2115
+ async *processChatWithLoop(request, signal, _accumulatedMessages, _isRecursive, _httpRequest, _toolSearchState, _iteration = 0) {
2116
2116
  const debug = this.config.debug;
2117
2117
  if (request.streaming === false) {
2118
2118
  if (debug) {
@@ -2131,7 +2131,25 @@ var Runtime = class {
2131
2131
  return;
2132
2132
  }
2133
2133
  const newMessages = _accumulatedMessages || [];
2134
- this.config.maxIterations ?? 20;
2134
+ const maxIterations = this.config.maxIterations ?? 20;
2135
+ if (signal?.aborted) {
2136
+ yield {
2137
+ type: "error",
2138
+ message: "Aborted",
2139
+ code: "ABORTED"
2140
+ };
2141
+ return;
2142
+ }
2143
+ if (_iteration >= maxIterations) {
2144
+ if (debug) {
2145
+ console.log(`[Copilot SDK] Max iterations (${maxIterations}) reached`);
2146
+ }
2147
+ yield {
2148
+ type: "done",
2149
+ messages: newMessages.length > 0 ? newMessages : void 0
2150
+ };
2151
+ return;
2152
+ }
2135
2153
  const allTools = this.collectToolsForRequest(request);
2136
2154
  const nativeToolSearch = this.resolveNativeToolSearchForRequest(request);
2137
2155
  const nativeToolCatalog = nativeToolSearch ? this.buildNativeToolCatalogForRequest(request, allTools) : null;
@@ -2393,7 +2411,8 @@ var Runtime = class {
2393
2411
  true,
2394
2412
  // Mark as recursive
2395
2413
  _httpRequest,
2396
- nextToolSearchState
2414
+ nextToolSearchState,
2415
+ _iteration + 1
2397
2416
  )) {
2398
2417
  yield event;
2399
2418
  }
@@ -2490,7 +2509,9 @@ var Runtime = class {
2490
2509
  _accumulatedMessages,
2491
2510
  _isRecursive,
2492
2511
  _httpRequest,
2493
- toolSearchState
2512
+ toolSearchState,
2513
+ iteration
2514
+ // carry the non-streaming loop's depth into the streaming sub-call
2494
2515
  )) {
2495
2516
  yield event;
2496
2517
  }
package/dist/index.mjs CHANGED
@@ -2110,7 +2110,7 @@ var Runtime = class {
2110
2110
  * 5. Loop continues until no more tool calls or max iterations reached
2111
2111
  * 6. Returns all new messages in the done event for client to append
2112
2112
  */
2113
- async *processChatWithLoop(request, signal, _accumulatedMessages, _isRecursive, _httpRequest, _toolSearchState) {
2113
+ async *processChatWithLoop(request, signal, _accumulatedMessages, _isRecursive, _httpRequest, _toolSearchState, _iteration = 0) {
2114
2114
  const debug = this.config.debug;
2115
2115
  if (request.streaming === false) {
2116
2116
  if (debug) {
@@ -2129,7 +2129,25 @@ var Runtime = class {
2129
2129
  return;
2130
2130
  }
2131
2131
  const newMessages = _accumulatedMessages || [];
2132
- this.config.maxIterations ?? 20;
2132
+ const maxIterations = this.config.maxIterations ?? 20;
2133
+ if (signal?.aborted) {
2134
+ yield {
2135
+ type: "error",
2136
+ message: "Aborted",
2137
+ code: "ABORTED"
2138
+ };
2139
+ return;
2140
+ }
2141
+ if (_iteration >= maxIterations) {
2142
+ if (debug) {
2143
+ console.log(`[Copilot SDK] Max iterations (${maxIterations}) reached`);
2144
+ }
2145
+ yield {
2146
+ type: "done",
2147
+ messages: newMessages.length > 0 ? newMessages : void 0
2148
+ };
2149
+ return;
2150
+ }
2133
2151
  const allTools = this.collectToolsForRequest(request);
2134
2152
  const nativeToolSearch = this.resolveNativeToolSearchForRequest(request);
2135
2153
  const nativeToolCatalog = nativeToolSearch ? this.buildNativeToolCatalogForRequest(request, allTools) : null;
@@ -2391,7 +2409,8 @@ var Runtime = class {
2391
2409
  true,
2392
2410
  // Mark as recursive
2393
2411
  _httpRequest,
2394
- nextToolSearchState
2412
+ nextToolSearchState,
2413
+ _iteration + 1
2395
2414
  )) {
2396
2415
  yield event;
2397
2416
  }
@@ -2488,7 +2507,9 @@ var Runtime = class {
2488
2507
  _accumulatedMessages,
2489
2508
  _isRecursive,
2490
2509
  _httpRequest,
2491
- toolSearchState
2510
+ toolSearchState,
2511
+ iteration
2512
+ // carry the non-streaming loop's depth into the streaming sub-call
2492
2513
  )) {
2493
2514
  yield event;
2494
2515
  }
@@ -980,6 +980,11 @@ var AnthropicAdapter = class {
980
980
  content,
981
981
  toolCalls,
982
982
  thinking: thinking || void 0,
983
+ usage: response.usage ? {
984
+ promptTokens: response.usage.input_tokens ?? 0,
985
+ completionTokens: response.usage.output_tokens ?? 0,
986
+ totalTokens: (response.usage.input_tokens ?? 0) + (response.usage.output_tokens ?? 0)
987
+ } : void 0,
983
988
  rawResponse: response
984
989
  };
985
990
  } catch (error) {
@@ -978,6 +978,11 @@ var AnthropicAdapter = class {
978
978
  content,
979
979
  toolCalls,
980
980
  thinking: thinking || void 0,
981
+ usage: response.usage ? {
982
+ promptTokens: response.usage.input_tokens ?? 0,
983
+ completionTokens: response.usage.output_tokens ?? 0,
984
+ totalTokens: (response.usage.input_tokens ?? 0) + (response.usage.output_tokens ?? 0)
985
+ } : void 0,
981
986
  rawResponse: response
982
987
  };
983
988
  } catch (error) {
@@ -419,6 +419,11 @@ var AzureAdapter = class {
419
419
  return {
420
420
  content: message?.content || "",
421
421
  toolCalls,
422
+ usage: response.usage ? {
423
+ promptTokens: response.usage.prompt_tokens ?? 0,
424
+ completionTokens: response.usage.completion_tokens ?? 0,
425
+ totalTokens: response.usage.total_tokens ?? (response.usage.prompt_tokens ?? 0) + (response.usage.completion_tokens ?? 0)
426
+ } : void 0,
422
427
  rawResponse: response
423
428
  };
424
429
  }
@@ -417,6 +417,11 @@ var AzureAdapter = class {
417
417
  return {
418
418
  content: message?.content || "",
419
419
  toolCalls,
420
+ usage: response.usage ? {
421
+ promptTokens: response.usage.prompt_tokens ?? 0,
422
+ completionTokens: response.usage.completion_tokens ?? 0,
423
+ totalTokens: response.usage.total_tokens ?? (response.usage.prompt_tokens ?? 0) + (response.usage.completion_tokens ?? 0)
424
+ } : void 0,
420
425
  rawResponse: response
421
426
  };
422
427
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yourgpt/llm-sdk",
3
- "version": "2.5.1-beta.3",
3
+ "version": "2.5.1-beta.4",
4
4
  "description": "AI SDK for building AI Agents with any LLM",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",