ai-sdk-provider-claude-code 2.2.1 → 2.2.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.
package/dist/index.cjs CHANGED
@@ -1189,6 +1189,9 @@ var ClaudeCodeLanguageModel = class _ClaudeCodeLanguageModel {
1189
1189
  options.abortSignal.addEventListener("abort", abortListener, { once: true });
1190
1190
  }
1191
1191
  const queryOptions = this.createQueryOptions(abortController, options.responseFormat);
1192
+ if (queryOptions.includePartialMessages === void 0) {
1193
+ queryOptions.includePartialMessages = true;
1194
+ }
1192
1195
  const warnings = this.generateAllWarnings(
1193
1196
  options,
1194
1197
  messagesPrompt
@@ -1260,6 +1263,8 @@ var ClaudeCodeLanguageModel = class _ClaudeCodeLanguageModel {
1260
1263
  let usage = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
1261
1264
  let accumulatedText = "";
1262
1265
  let textPartId;
1266
+ let streamedTextLength = 0;
1267
+ let hasReceivedStreamEvents = false;
1263
1268
  try {
1264
1269
  controller.enqueue({ type: "stream-start", warnings });
1265
1270
  if (this.settings.canUseTool && this.settings.permissionPromptToolName) {
@@ -1282,6 +1287,34 @@ var ClaudeCodeLanguageModel = class _ClaudeCodeLanguageModel {
1282
1287
  });
1283
1288
  for await (const message of response) {
1284
1289
  this.logger.debug(`[claude-code] Stream received message type: ${message.type}`);
1290
+ if (message.type === "stream_event") {
1291
+ const streamEvent = message;
1292
+ const event = streamEvent.event;
1293
+ if (event.type === "content_block_delta" && event.delta.type === "text_delta" && "text" in event.delta && event.delta.text) {
1294
+ const deltaText = event.delta.text;
1295
+ hasReceivedStreamEvents = true;
1296
+ if (options.responseFormat?.type === "json") {
1297
+ accumulatedText += deltaText;
1298
+ streamedTextLength += deltaText.length;
1299
+ continue;
1300
+ }
1301
+ if (!textPartId) {
1302
+ textPartId = (0, import_provider_utils.generateId)();
1303
+ controller.enqueue({
1304
+ type: "text-start",
1305
+ id: textPartId
1306
+ });
1307
+ }
1308
+ controller.enqueue({
1309
+ type: "text-delta",
1310
+ id: textPartId,
1311
+ delta: deltaText
1312
+ });
1313
+ accumulatedText += deltaText;
1314
+ streamedTextLength += deltaText.length;
1315
+ }
1316
+ continue;
1317
+ }
1285
1318
  if (message.type === "assistant") {
1286
1319
  if (!message.message?.content) {
1287
1320
  this.logger.warn(
@@ -1344,20 +1377,41 @@ var ClaudeCodeLanguageModel = class _ClaudeCodeLanguageModel {
1344
1377
  }
1345
1378
  const text = content.map((c) => c.type === "text" ? c.text : "").join("");
1346
1379
  if (text) {
1347
- accumulatedText += text;
1348
- if (options.responseFormat?.type !== "json") {
1349
- if (!textPartId) {
1350
- textPartId = (0, import_provider_utils.generateId)();
1380
+ if (hasReceivedStreamEvents) {
1381
+ const newTextStart = streamedTextLength;
1382
+ const deltaText = text.length > newTextStart ? text.slice(newTextStart) : "";
1383
+ accumulatedText = text;
1384
+ if (options.responseFormat?.type !== "json" && deltaText) {
1385
+ if (!textPartId) {
1386
+ textPartId = (0, import_provider_utils.generateId)();
1387
+ controller.enqueue({
1388
+ type: "text-start",
1389
+ id: textPartId
1390
+ });
1391
+ }
1351
1392
  controller.enqueue({
1352
- type: "text-start",
1353
- id: textPartId
1393
+ type: "text-delta",
1394
+ id: textPartId,
1395
+ delta: deltaText
1396
+ });
1397
+ }
1398
+ streamedTextLength = text.length;
1399
+ } else {
1400
+ accumulatedText += text;
1401
+ if (options.responseFormat?.type !== "json") {
1402
+ if (!textPartId) {
1403
+ textPartId = (0, import_provider_utils.generateId)();
1404
+ controller.enqueue({
1405
+ type: "text-start",
1406
+ id: textPartId
1407
+ });
1408
+ }
1409
+ controller.enqueue({
1410
+ type: "text-delta",
1411
+ id: textPartId,
1412
+ delta: text
1354
1413
  });
1355
1414
  }
1356
- controller.enqueue({
1357
- type: "text-delta",
1358
- id: textPartId,
1359
- delta: text
1360
- });
1361
1415
  }
1362
1416
  }
1363
1417
  } else if (message.type === "user") {