@assistant-ui/react-ag-ui 0.1.3 → 0.1.5

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.
@@ -42,11 +42,13 @@ export declare class AgUiThreadController {
42
42
  private state;
43
43
  private abortController;
44
44
  private activeRunAgent;
45
+ private runCount;
45
46
  private history;
46
47
  private readonly assistantHistoryParents;
47
48
  private readonly subagentParentToolCallIds;
48
49
  private readonly snapshotHistoryIds;
49
50
  private readonly persistedHistoryIds;
51
+ private readonly unappendedHistoryIds;
50
52
  private readonly historyWrites;
51
53
  private _historyImportPromise;
52
54
  private _loadPromise;
@@ -79,6 +81,8 @@ export declare class AgUiThreadController {
79
81
  reload(parentId: string | null, config?: {
80
82
  runConfig?: RunConfig;
81
83
  }): Promise<void>;
84
+ /** Deletes a message that has no replies under it, and its stored history entry. */
85
+ deleteMessage(messageId: string): Promise<void>;
82
86
  cancel(): Promise<void>;
83
87
  private abortActiveRun;
84
88
  private supersedeActiveRun;
@@ -179,6 +183,7 @@ export declare class AgUiThreadController {
179
183
  private markPendingAssistantHistory;
180
184
  private persistSettledAssistant;
181
185
  private persistAssistantHistory;
186
+ private appendOnce;
182
187
  private appendHistoryItem;
183
188
  }
184
189
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"AgUiThreadController.d.ts","sourceRoot":"","sources":["../../src/runtime/AgUiThreadController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgUiThreadController.d.ts","sourceRoot":"","sources":["../../src/runtime/AgUiThreadController.ts"],"names":[],"mappings":"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"}
@@ -94,13 +94,29 @@ const replaceTextParts = (content, source) => {
94
94
  }
95
95
  return result;
96
96
  };
97
- const settleNestedContent = (content, status) => mapToolCallPartsDeep(content, (part) => part.messages ? {
98
- ...part,
99
- messages: part.messages.map((message) => message.role === "assistant" && message.status?.type === "running" ? {
100
- ...message,
101
- status
102
- } : message)
103
- } : part).content;
97
+ /**
98
+ * Settles nested sub-agent messages with `status`. Without `runSubagentIds`,
99
+ * only running messages settle. With it, only that run's sub-agent messages
100
+ * settle, and an incomplete `status` also settles one still waiting on its own
101
+ * tool call: the run that could answer it has ended.
102
+ */
103
+ const settleNestedContent = (content, status, runSubagentIds) => mapToolCallPartsDeep(content, (part) => {
104
+ if (!part.messages) return part;
105
+ let changed = false;
106
+ const messages = part.messages.map((message) => {
107
+ if (message.role !== "assistant") return message;
108
+ if (!(!runSubagentIds ? message.status?.type === "running" : runSubagentIds.has(message.id) && (message.status?.type === "running" || status.type === "incomplete" && message.status?.type === "requires-action" && message.status.reason === "tool-calls"))) return message;
109
+ changed = true;
110
+ return {
111
+ ...message,
112
+ status
113
+ };
114
+ });
115
+ return changed ? {
116
+ ...part,
117
+ messages
118
+ } : part;
119
+ }).content;
104
120
  const invokeRuntimeCallback = (name, callback, ...args) => {
105
121
  invokeUserCallback("react-ag-ui", name, callback, ...args);
106
122
  };
@@ -149,11 +165,13 @@ var AgUiThreadController = class {
149
165
  state = createAgUiThreadState();
150
166
  abortController = null;
151
167
  activeRunAgent = null;
168
+ runCount = 0;
152
169
  history;
153
170
  assistantHistoryParents = /* @__PURE__ */ new Map();
154
171
  subagentParentToolCallIds = /* @__PURE__ */ new Map();
155
172
  snapshotHistoryIds = /* @__PURE__ */ new Set();
156
173
  persistedHistoryIds = /* @__PURE__ */ new Set();
174
+ unappendedHistoryIds = /* @__PURE__ */ new Set();
157
175
  historyWrites = createHistoryWriteChain();
158
176
  _historyImportPromise;
159
177
  _loadPromise;
@@ -252,6 +270,7 @@ var AgUiThreadController = class {
252
270
  this.subagentParentToolCallIds.clear();
253
271
  this.snapshotHistoryIds.clear();
254
272
  this.persistedHistoryIds.clear();
273
+ this.unappendedHistoryIds.clear();
255
274
  for (const { message } of repo.messages) this.persistedHistoryIds.add(message.id);
256
275
  this.publishUpdate();
257
276
  if (repo.state !== void 0) this.loadExternalState(repo.state);
@@ -355,6 +374,19 @@ var AgUiThreadController = class {
355
374
  this.maybeAutoCancelPendingToolCalls();
356
375
  await this.startRun(parentId, config.runConfig);
357
376
  }
377
+ /** Deletes a message that has no replies under it, and its stored history entry. */
378
+ async deleteMessage(messageId) {
379
+ const item = this.session.tryGetMessage(messageId);
380
+ if (!item) return;
381
+ const parentId = item.parentId ?? null;
382
+ this.session.deleteMessage(messageId, parentId);
383
+ this.snapshotHistoryIds.delete(messageId);
384
+ this.publishUpdate();
385
+ await this.history?.delete?.([{
386
+ parentId,
387
+ message: item.message
388
+ }]);
389
+ }
358
390
  async cancel() {
359
391
  this.dispatch({ type: "historyMutationAdvanced" });
360
392
  this.abortActiveRun();
@@ -975,6 +1007,8 @@ var AgUiThreadController = class {
975
1007
  const assistantParentId = parent ? parentId : this.session.headId;
976
1008
  let assistantMessageId;
977
1009
  let snapshotAssistantId;
1010
+ const importedRunAssistants = /* @__PURE__ */ new Set();
1011
+ const runSubagentIds = /* @__PURE__ */ new Set();
978
1012
  let replayInterruptMessageId;
979
1013
  let assistantCollided = false;
980
1014
  const heldMessages = /* @__PURE__ */ new Map();
@@ -1249,9 +1283,29 @@ var AgUiThreadController = class {
1249
1283
  adoptServerMessageId(serverId, true, frameOpenIds);
1250
1284
  }
1251
1285
  });
1286
+ const settleRunSubagents = (status) => {
1287
+ if (runSubagentIds.size === 0) return;
1288
+ for (const message of this.session.getMessages()) {
1289
+ if (message.role !== "assistant") continue;
1290
+ const content = settleNestedContent(message.content, status, runSubagentIds);
1291
+ if (content === message.content) continue;
1292
+ this.updateAssistantMessage(message.id, { content });
1293
+ this.persistSettledAssistant(message.id);
1294
+ }
1295
+ };
1296
+ const persistRunAssistants = (aboveAnswer) => {
1297
+ for (const message of this.session.getMessages()) {
1298
+ if (message.id === assistantMessageId) {
1299
+ if (aboveAnswer) return;
1300
+ continue;
1301
+ }
1302
+ if (message.role === "assistant" && !runStartMessageIds.has(message.id)) this.persistAssistantHistory(message.id);
1303
+ }
1304
+ };
1252
1305
  let runFinished = false;
1253
1306
  const dispatch = (event) => {
1254
1307
  if (this.abortController !== abortController) return;
1308
+ if (event.type === "SUBAGENT_STARTED") runSubagentIds.add(event.subagentRunId);
1255
1309
  if (event.type === "RUN_FINISHED") {
1256
1310
  runFinished = true;
1257
1311
  if (event.outcome?.type === "interrupt") replayInterruptMessageId = assistantMessageId ?? replayTail;
@@ -1263,10 +1317,21 @@ var AgUiThreadController = class {
1263
1317
  for (const openToolCallIds of heldMessages.values()) openToolCallIds.delete(event.toolCallId);
1264
1318
  }
1265
1319
  settlingRun = event.type === "RUN_FINISHED" || event.type === "RUN_ERROR" || event.type === "RUN_CANCELLED";
1320
+ if (settlingRun) persistRunAssistants(true);
1266
1321
  const beforeSnapshot = event.type === "MESSAGES_SNAPSHOT" ? this.session.getMessages() : [];
1267
1322
  try {
1268
1323
  const nextAssistantMessageId = this.handleEvent(aggregator, event, assistantMessageId, joinStrategy, runStartMessageIds, hasRunUserBoundary, candidateContexts.size ? reconcileReplaySnapshot : void 0);
1269
1324
  if (event.type === "MESSAGES_SNAPSHOT") {
1325
+ const previousIds = new Set(beforeSnapshot.map(({ id }) => id));
1326
+ for (const message of this.session.getMessages()) {
1327
+ if (message.role !== "assistant" || runStartMessageIds.has(message.id)) continue;
1328
+ if (!previousIds.has(message.id)) importedRunAssistants.add(message.id);
1329
+ if (!this.persistedHistoryIds.has(message.id) && this.historyWrites.pending(message.id) === void 0) this.snapshotHistoryIds.delete(message.id);
1330
+ }
1331
+ for (const messageId of importedRunAssistants) {
1332
+ const item = this.session.tryGetMessage(messageId);
1333
+ if (item) this.markPendingAssistantHistory(messageId, item.parentId);
1334
+ }
1270
1335
  for (const message of beforeSnapshot) {
1271
1336
  const context = replayContexts.get(message.id);
1272
1337
  const current = this.session.tryGetMessage(message.id)?.message;
@@ -1285,6 +1350,16 @@ var AgUiThreadController = class {
1285
1350
  snapshotAssistantId = tail?.role === "assistant" ? tail.id : void 0;
1286
1351
  }
1287
1352
  }
1353
+ if (event.type === "RUN_ERROR") settleRunSubagents({
1354
+ type: "incomplete",
1355
+ reason: "error",
1356
+ ...event.message !== void 0 ? { error: event.message } : {}
1357
+ });
1358
+ else if (event.type === "RUN_CANCELLED") settleRunSubagents({
1359
+ type: "incomplete",
1360
+ reason: "cancelled"
1361
+ });
1362
+ if (settlingRun) persistRunAssistants(false);
1288
1363
  } finally {
1289
1364
  settlingRun = false;
1290
1365
  }
@@ -1292,6 +1367,7 @@ var AgUiThreadController = class {
1292
1367
  this.abortController = abortController;
1293
1368
  const runAgentInstance = this.agent;
1294
1369
  this.activeRunAgent = runAgentInstance;
1370
+ const runNumber = ++this.runCount;
1295
1371
  let cancelRun = () => dispatch({ type: "RUN_CANCELLED" });
1296
1372
  abortSignal.addEventListener("abort", () => {
1297
1373
  cancelRun();
@@ -1354,6 +1430,7 @@ var AgUiThreadController = class {
1354
1430
  } finally {
1355
1431
  const current = assistantMessageId ? this.session.tryGetMessage(assistantMessageId)?.message : void 0;
1356
1432
  if (this.abortController === abortController && current?.role === "assistant" && current.status?.type === "running") {
1433
+ persistRunAssistants(true);
1357
1434
  const status = {
1358
1435
  type: "incomplete",
1359
1436
  reason: "error",
@@ -1365,6 +1442,15 @@ var AgUiThreadController = class {
1365
1442
  content: settleNestedContent(current.content, status)
1366
1443
  });
1367
1444
  }
1445
+ if (this.abortController === abortController && !runFinished) {
1446
+ const settled = assistantMessageId ? this.session.tryGetMessage(assistantMessageId)?.message : void 0;
1447
+ settleRunSubagents(settled?.status?.type === "incomplete" ? settled.status : {
1448
+ type: "incomplete",
1449
+ reason: "error",
1450
+ error: "The connection ended before the answer finished."
1451
+ });
1452
+ }
1453
+ if (this.runCount === runNumber) persistRunAssistants(false);
1368
1454
  this.finishRun(abortController);
1369
1455
  }
1370
1456
  if (pendingError) {
@@ -1582,9 +1668,11 @@ var AgUiThreadController = class {
1582
1668
  if (!collidesWithExisting) ids.add(newId);
1583
1669
  }
1584
1670
  const pendingWrite = this.historyWrites.move(oldId, collidesWithExisting ? void 0 : newId);
1671
+ if (this.unappendedHistoryIds.delete(oldId) && !collidesWithExisting) this.unappendedHistoryIds.add(newId);
1585
1672
  if (pendingWrite && !collidesWithExisting) pendingWrite.then(() => {
1586
1673
  this.persistedHistoryIds.delete(oldId);
1587
1674
  this.persistedHistoryIds.add(newId);
1675
+ this.unappendedHistoryIds.delete(newId);
1588
1676
  }, () => {});
1589
1677
  this.publishUpdate();
1590
1678
  return !collidesWithExisting;
@@ -2109,7 +2197,10 @@ var AgUiThreadController = class {
2109
2197
  const wasPersisted = this.persistedHistoryIds.has(messageId);
2110
2198
  const update = history.update;
2111
2199
  if (update !== void 0 && (wasPersisted || this.snapshotHistoryIds.has(messageId) || this.historyWrites.pending(messageId) !== void 0)) {
2112
- const write = this.historyWrites.chain(messageId, () => update.call(history, {
2200
+ const write = this.historyWrites.chain(messageId, () => this.unappendedHistoryIds.has(messageId) ? this.appendOnce(history, messageId, {
2201
+ parentId,
2202
+ message
2203
+ }) : update.call(history, {
2113
2204
  parentId,
2114
2205
  message
2115
2206
  }));
@@ -2136,12 +2227,17 @@ var AgUiThreadController = class {
2136
2227
  this.logger.error?.("[agui] failed to append history entry", error);
2137
2228
  });
2138
2229
  }
2230
+ async appendOnce(history, messageId, item) {
2231
+ await history.append(item);
2232
+ this.unappendedHistoryIds.delete(messageId);
2233
+ }
2139
2234
  appendHistoryItem(parentId, message) {
2140
2235
  if (!this.history || this.persistedHistoryIds.has(message.id)) return;
2141
2236
  const pending = this.historyWrites.pending(message.id);
2142
2237
  if (pending) return pending;
2143
- const append = this.history.append.bind(this.history);
2144
- const write = this.historyWrites.chain(message.id, () => append({
2238
+ const history = this.history;
2239
+ this.unappendedHistoryIds.add(message.id);
2240
+ const write = this.historyWrites.chain(message.id, () => this.appendOnce(history, message.id, {
2145
2241
  parentId,
2146
2242
  message
2147
2243
  }));