remote-codex 0.11.13 → 0.11.15

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.
@@ -16492,8 +16492,11 @@ function historyItemSequence(item) {
16492
16492
  function historyItemTranscriptOrder(item) {
16493
16493
  return typeof item.transcriptOrder === "number" && Number.isFinite(item.transcriptOrder) ? item.transcriptOrder : null;
16494
16494
  }
16495
- function copyPersistedOrderingHints(item, persistedItem) {
16495
+ function copyPersistedOrderingHints(item, persistedItem, turnStartedAt) {
16496
16496
  let nextItem = item;
16497
+ if (persistedItem.createdAt && (!nextItem.createdAt || nextItem.kind === "agentMessage" && nextItem.createdAt === turnStartedAt)) {
16498
+ nextItem = { ...nextItem, createdAt: persistedItem.createdAt };
16499
+ }
16497
16500
  if (hasHistoryItemSequence(persistedItem)) {
16498
16501
  const sequence = historyItemSequence(persistedItem);
16499
16502
  if (nextItem.sequence !== sequence) {
@@ -16631,7 +16634,8 @@ function mergePersistedHistoryItemsIntoTurns(turns, persistedItemsByTurnId, defe
16631
16634
  };
16632
16635
  const sequencedItem = copyPersistedOrderingHints(
16633
16636
  itemWithTranscriptOrder,
16634
- persistedItemWithTranscriptOrder
16637
+ persistedItemWithTranscriptOrder,
16638
+ turn.startedAt
16635
16639
  );
16636
16640
  if (sequencedItem !== item) {
16637
16641
  changed = true;
@@ -16812,6 +16816,11 @@ var ThreadLiveStateStore = class {
16812
16816
  return this.threadTurnItemOrder.get(localThreadId) ?? /* @__PURE__ */ new Map();
16813
16817
  }
16814
16818
  finalTurnAgentMessageOrderingHints(localThreadId, turnId, items, options = {}) {
16819
+ return new Map(
16820
+ [...this.finalTurnAgentMessageOrderingMetadata(localThreadId, turnId, items, options)].map(([itemId, metadata]) => [itemId, metadata.sequence])
16821
+ );
16822
+ }
16823
+ finalTurnAgentMessageOrderingMetadata(localThreadId, turnId, items, options = {}) {
16815
16824
  const hints = /* @__PURE__ */ new Map();
16816
16825
  const turnOrder = this.threadTurnItemOrder.get(localThreadId)?.get(turnId);
16817
16826
  const liveAgentMessages = [
@@ -16819,17 +16828,21 @@ var ThreadLiveStateStore = class {
16819
16828
  ].map((item) => ({
16820
16829
  id: item.id,
16821
16830
  text: normalizeAgentMessageForMatching(item.text),
16822
- sequence: item.sequence
16831
+ sequence: item.sequence,
16832
+ createdAt: item.createdAt
16823
16833
  }));
16824
16834
  const usedLiveAgentIds = /* @__PURE__ */ new Set();
16825
16835
  const finalAgentItems = items.filter((item) => item.kind === "agentMessage");
16826
16836
  for (const item of finalAgentItems) {
16827
16837
  const existingSequence = turnOrder?.get(item.id);
16828
16838
  if (existingSequence !== void 0) {
16829
- hints.set(item.id, existingSequence);
16830
16839
  const matchingLiveAgent = liveAgentMessages.find(
16831
16840
  (liveAgent) => liveAgent.id === item.id || liveAgent.sequence === existingSequence
16832
16841
  );
16842
+ hints.set(item.id, {
16843
+ sequence: existingSequence,
16844
+ createdAt: matchingLiveAgent?.createdAt ?? null
16845
+ });
16833
16846
  if (matchingLiveAgent) {
16834
16847
  usedLiveAgentIds.add(matchingLiveAgent.id);
16835
16848
  }
@@ -16851,12 +16864,16 @@ var ThreadLiveStateStore = class {
16851
16864
  bestMatch = {
16852
16865
  id: liveAgent.id,
16853
16866
  sequence: liveAgent.sequence,
16867
+ createdAt: liveAgent.createdAt,
16854
16868
  score
16855
16869
  };
16856
16870
  }
16857
16871
  if (bestMatch) {
16858
16872
  usedLiveAgentIds.add(bestMatch.id);
16859
- hints.set(item.id, bestMatch.sequence);
16873
+ hints.set(item.id, {
16874
+ sequence: bestMatch.sequence,
16875
+ createdAt: bestMatch.createdAt
16876
+ });
16860
16877
  }
16861
16878
  }
16862
16879
  if (options.allowUnmatchedFallback ?? true) {
@@ -16870,7 +16887,10 @@ var ThreadLiveStateStore = class {
16870
16887
  if (!liveAgent) {
16871
16888
  break;
16872
16889
  }
16873
- hints.set(item.id, liveAgent.sequence);
16890
+ hints.set(item.id, {
16891
+ sequence: liveAgent.sequence,
16892
+ createdAt: liveAgent.createdAt
16893
+ });
16874
16894
  remainingLiveAgentIndex += 1;
16875
16895
  }
16876
16896
  }
@@ -16892,7 +16912,8 @@ var ThreadLiveStateStore = class {
16892
16912
  const current = this.threadLiveItems.get(localThreadId);
16893
16913
  const currentItems = current?.turnId === turnId ? current.items : [];
16894
16914
  const existingIndex = currentItems.findIndex((entry) => entry.id === item.id);
16895
- const nextItems = existingIndex >= 0 ? currentItems.map((entry, index) => index === existingIndex ? item : entry) : [...currentItems, item];
16915
+ const nextItem = existingIndex >= 0 && !item.createdAt && currentItems[existingIndex]?.createdAt ? { ...item, createdAt: currentItems[existingIndex].createdAt } : item;
16916
+ const nextItems = existingIndex >= 0 ? currentItems.map((entry, index) => index === existingIndex ? nextItem : entry) : [...currentItems, nextItem];
16896
16917
  this.setLiveItems(localThreadId, {
16897
16918
  turnId,
16898
16919
  items: sortHistoryItemsBySequence(nextItems),
@@ -16909,7 +16930,7 @@ var ThreadLiveStateStore = class {
16909
16930
  sequence: input.sequence
16910
16931
  } : {
16911
16932
  id: input.itemId,
16912
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
16933
+ createdAt: input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
16913
16934
  kind: "agentMessage",
16914
16935
  text: input.delta,
16915
16936
  sequence: input.sequence
@@ -16948,7 +16969,8 @@ var ThreadLiveStateStore = class {
16948
16969
  turnHints.set(item.id, {
16949
16970
  id: item.id,
16950
16971
  text: item.text,
16951
- sequence
16972
+ sequence,
16973
+ createdAt: item.createdAt ?? null
16952
16974
  });
16953
16975
  }
16954
16976
  reconcileLiveItems(localThreadId, turns) {
@@ -17505,8 +17527,9 @@ var ThreadRuntimeEventProjector = class {
17505
17527
  if (!turnId) {
17506
17528
  return;
17507
17529
  }
17530
+ const eventTimestamp = (/* @__PURE__ */ new Date()).toISOString();
17508
17531
  const liveItem = {
17509
- ...event.item,
17532
+ ...withHistoryItemCreatedAt(event.item, eventTimestamp),
17510
17533
  sequence: liveState.recordTurnItemOrder(record.id, turnId, event.item.id)
17511
17534
  };
17512
17535
  const transportLiveItem = deferHistoryItemDetailForTransport(liveItem);
@@ -17537,8 +17560,9 @@ var ThreadRuntimeEventProjector = class {
17537
17560
  displayTurnId,
17538
17561
  event.item.id
17539
17562
  );
17563
+ const eventTimestamp = (/* @__PURE__ */ new Date()).toISOString();
17540
17564
  const orderedLiveItem = {
17541
- ...event.item,
17565
+ ...withHistoryItemCreatedAt(event.item, eventTimestamp),
17542
17566
  sequence
17543
17567
  };
17544
17568
  const transportLiveItem = deferHistoryItemDetailForTransport(orderedLiveItem);
@@ -17590,18 +17614,21 @@ var ThreadRuntimeEventProjector = class {
17590
17614
  displayTurnId,
17591
17615
  event.itemId
17592
17616
  );
17617
+ const createdAt = (/* @__PURE__ */ new Date()).toISOString();
17593
17618
  callbacks.appendLiveAgentMessageDelta({
17594
17619
  localThreadId: record.id,
17595
17620
  turnId: displayTurnId,
17596
17621
  itemId: event.itemId,
17597
17622
  delta: event.delta,
17598
- sequence
17623
+ sequence,
17624
+ createdAt
17599
17625
  });
17600
17626
  callbacks.emitThreadEvent("thread.output.delta", record.id, {
17601
17627
  turnId: displayTurnId,
17602
17628
  itemId: event.itemId,
17603
17629
  sequence,
17604
- delta: event.delta
17630
+ delta: event.delta,
17631
+ createdAt
17605
17632
  });
17606
17633
  return;
17607
17634
  }
@@ -17701,6 +17728,9 @@ var ThreadRuntimeEventProjector = class {
17701
17728
  return typeof value === "object" && value !== null && !Array.isArray(value);
17702
17729
  }
17703
17730
  };
17731
+ function withHistoryItemCreatedAt(item, createdAt) {
17732
+ return item.createdAt ? item : { ...item, createdAt };
17733
+ }
17704
17734
 
17705
17735
  // src/provider-request-coordinator.ts
17706
17736
  var LOCAL_PLAN_DECISION_PREFIX = "plan-decision:";
@@ -18245,7 +18275,7 @@ function cacheKeyForDetailOptions(options) {
18245
18275
  }
18246
18276
  function applyLiveAgentMessageOrderingHints(turns, localThreadId, liveState) {
18247
18277
  return turns.map((turn) => {
18248
- const orderingHints = liveState.finalTurnAgentMessageOrderingHints(
18278
+ const orderingHints = liveState.finalTurnAgentMessageOrderingMetadata(
18249
18279
  localThreadId,
18250
18280
  turn.id,
18251
18281
  turn.items,
@@ -18259,15 +18289,21 @@ function applyLiveAgentMessageOrderingHints(turns, localThreadId, liveState) {
18259
18289
  if (item.kind !== "agentMessage") {
18260
18290
  return item;
18261
18291
  }
18262
- const sequence = orderingHints.get(item.id);
18263
- if (sequence === void 0 || item.sequence === sequence) {
18292
+ const metadata = orderingHints.get(item.id);
18293
+ if (!metadata) {
18264
18294
  return item;
18265
18295
  }
18266
- changed = true;
18267
- return {
18268
- ...item,
18269
- sequence
18270
- };
18296
+ let nextItem = item;
18297
+ if (nextItem.sequence !== metadata.sequence) {
18298
+ nextItem = { ...nextItem, sequence: metadata.sequence };
18299
+ }
18300
+ if (metadata.createdAt && (!nextItem.createdAt || nextItem.createdAt === turn.startedAt)) {
18301
+ nextItem = { ...nextItem, createdAt: metadata.createdAt };
18302
+ }
18303
+ if (nextItem !== item) {
18304
+ changed = true;
18305
+ }
18306
+ return nextItem;
18271
18307
  });
18272
18308
  return changed ? {
18273
18309
  ...turn,
@@ -19340,7 +19376,7 @@ var ThreadHistoryPersistenceCoordinator = class {
19340
19376
  deleteThreadHistoryItemRecordsByThreadAndTurnId(this.db, localThreadId, turnId);
19341
19377
  }
19342
19378
  persistFinalTurnOrderingHints(localThreadId, turnId, items) {
19343
- const orderingHints = this.liveState.finalTurnAgentMessageOrderingHints(
19379
+ const orderingHints = this.liveState.finalTurnAgentMessageOrderingMetadata(
19344
19380
  localThreadId,
19345
19381
  turnId,
19346
19382
  items
@@ -19349,8 +19385,8 @@ var ThreadHistoryPersistenceCoordinator = class {
19349
19385
  if (item.kind !== "agentMessage" || !shouldPersistRuntimeFinalHistoryItem(item)) {
19350
19386
  continue;
19351
19387
  }
19352
- const sequence = orderingHints.get(item.id);
19353
- if (sequence === void 0) {
19388
+ const metadata = orderingHints.get(item.id);
19389
+ if (!metadata) {
19354
19390
  continue;
19355
19391
  }
19356
19392
  upsertThreadHistoryItemRecord(this.db, {
@@ -19359,7 +19395,8 @@ var ThreadHistoryPersistenceCoordinator = class {
19359
19395
  itemId: item.id,
19360
19396
  itemJson: JSON.stringify({
19361
19397
  ...item,
19362
- sequence,
19398
+ sequence: metadata.sequence,
19399
+ createdAt: item.createdAt ?? metadata.createdAt,
19363
19400
  sourceTurnId: turnId
19364
19401
  })
19365
19402
  });
@@ -21313,7 +21350,8 @@ var ThreadService = class {
21313
21350
  input.turnId,
21314
21351
  input.itemId,
21315
21352
  input.delta,
21316
- input.sequence
21353
+ input.sequence,
21354
+ input.createdAt
21317
21355
  ),
21318
21356
  clearPendingPlanDecisionRequests: (localThreadId, emitEvents) => this.clearPendingPlanDecisionRequests(localThreadId, emitEvents),
21319
21357
  clearPendingSteersForTurn: (localThreadId, turnId) => this.auxiliaryState.clearPendingSteersForTurn(localThreadId, turnId),
@@ -22225,13 +22263,14 @@ var ThreadService = class {
22225
22263
  listPendingRequests(localThreadId, options = {}) {
22226
22264
  return this.requestCoordinator.listPendingRequests(localThreadId, options);
22227
22265
  }
22228
- appendLiveAgentMessageDelta(localThreadId, turnId, itemId, delta, sequence) {
22266
+ appendLiveAgentMessageDelta(localThreadId, turnId, itemId, delta, sequence, createdAt) {
22229
22267
  this.liveState.appendLiveAgentMessageDelta({
22230
22268
  localThreadId,
22231
22269
  turnId,
22232
22270
  itemId,
22233
22271
  delta,
22234
- sequence
22272
+ sequence,
22273
+ createdAt
22235
22274
  });
22236
22275
  }
22237
22276
  createPendingPlanDecisionRequest(localThreadId, turnId, emitEvents) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildApp
3
- } from "./chunk-ZTQPMDTP.js";
3
+ } from "./chunk-ZYCD54EZ.js";
4
4
 
5
5
  // src/index.ts
6
6
  import fs from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildApp
3
- } from "./chunk-ZTQPMDTP.js";
3
+ } from "./chunk-ZYCD54EZ.js";
4
4
 
5
5
  // src/worker-index.ts
6
6
  import fs2 from "fs";