@deepagents/context 0.22.0 → 0.23.0

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.js CHANGED
@@ -412,6 +412,18 @@ import {
412
412
  createUIMessageStream as createUIMessageStream2,
413
413
  generateId as generateId3
414
414
  } from "ai";
415
+ function toMessageFragment(item) {
416
+ if (isFragment(item) && isMessageFragment(item)) {
417
+ return item;
418
+ }
419
+ return message(item);
420
+ }
421
+ function chatMessageToUIMessage(item) {
422
+ if (isFragment(item) && isMessageFragment(item)) {
423
+ return item.codec.decode();
424
+ }
425
+ return item;
426
+ }
415
427
  async function chat(agent2, messages, options) {
416
428
  const context = agent2.context;
417
429
  if (!context) {
@@ -422,17 +434,20 @@ async function chat(agent2, messages, options) {
422
434
  if (messages.length === 0) {
423
435
  throw new Error("messages must not be empty");
424
436
  }
425
- const lastMessage = messages[messages.length - 1];
437
+ const lastItem = messages[messages.length - 1];
438
+ const lastFragment = toMessageFragment(lastItem);
439
+ const lastUIMessage = chatMessageToUIMessage(lastItem);
426
440
  let assistantMsgId;
427
- if (lastMessage.role === "assistant") {
428
- context.set(message(lastMessage));
441
+ if (lastUIMessage.role === "assistant") {
442
+ context.set(lastFragment);
429
443
  await context.save({ branch: false });
430
- assistantMsgId = lastMessage.id;
444
+ assistantMsgId = lastUIMessage.id;
431
445
  } else {
432
- context.set(message(lastMessage));
446
+ context.set(lastFragment);
433
447
  await context.save();
434
448
  assistantMsgId = options?.generateMessageId?.() ?? generateId3();
435
449
  }
450
+ const uiMessages = messages.map(chatMessageToUIMessage);
436
451
  const streamContextVariables = options?.contextVariables === void 0 ? {} : options.contextVariables;
437
452
  const result = await agent2.stream(streamContextVariables, {
438
453
  transform: options?.transform
@@ -443,12 +458,12 @@ async function chat(agent2, messages, options) {
443
458
  sendFinish: true,
444
459
  sendReasoning: true,
445
460
  sendSources: true,
446
- originalMessages: messages,
461
+ originalMessages: uiMessages,
447
462
  generateMessageId: () => assistantMsgId,
448
463
  messageMetadata: options?.messageMetadata
449
464
  });
450
465
  return createUIMessageStream2({
451
- originalMessages: messages,
466
+ originalMessages: uiMessages,
452
467
  generateId: () => assistantMsgId,
453
468
  onStepFinish: async ({ responseMessage }) => {
454
469
  const normalizedMessage = {
@@ -4106,7 +4121,7 @@ var SqliteContextStore = class extends ContextStore {
4106
4121
  ).all(chatId);
4107
4122
  const nodes = messageRows.map((row) => {
4108
4123
  const data = JSON.parse(row.data);
4109
- const content = typeof data === "string" ? data : JSON.stringify(data);
4124
+ const content = typeof data === "string" ? data : Array.isArray(data.parts) ? data.parts.filter((p) => p.type === "text").map((p) => p.text).join(" ") : JSON.stringify(data);
4110
4125
  return {
4111
4126
  id: row.id,
4112
4127
  parentId: row.parentId,
@@ -6485,6 +6500,7 @@ export {
6485
6500
  assistant,
6486
6501
  assistantText,
6487
6502
  chat,
6503
+ chatMessageToUIMessage,
6488
6504
  clarification,
6489
6505
  correction,
6490
6506
  createAdaptivePollingState,
@@ -6538,6 +6554,7 @@ export {
6538
6554
  structuredOutput,
6539
6555
  styleGuide,
6540
6556
  term,
6557
+ toMessageFragment,
6541
6558
  useSandbox,
6542
6559
  user,
6543
6560
  userContext,