remote-codex 0.11.39 → 0.11.40

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.
@@ -11717,6 +11717,21 @@ import { pathToFileURL } from "url";
11717
11717
  import { promisify } from "util";
11718
11718
  var execFileAsync = promisify(execFile);
11719
11719
  var promptPhotoTokenPattern2 = /\[PHOTO\s+([^\]]+)\]/g;
11720
+ var activeTranscriptMatchWindowMs = 12e4;
11721
+ function normalizePromptForTurnReconciliation(value) {
11722
+ return value.replace(/\[PHOTO\s+[^\]]+\]/g, " ").replace(/\s+/g, " ").trim();
11723
+ }
11724
+ function userPromptForTurn(turn) {
11725
+ return turn.items.find((item) => item.kind === "userMessage")?.text ?? null;
11726
+ }
11727
+ function isRecentActiveTranscriptTurn(turn, activeStartedAt) {
11728
+ if (!turn.startedAt) {
11729
+ return true;
11730
+ }
11731
+ const transcriptStartedAt = Date.parse(turn.startedAt);
11732
+ const activeStartedAtMs = Date.parse(activeStartedAt);
11733
+ return !Number.isFinite(transcriptStartedAt) || !Number.isFinite(activeStartedAtMs) || Math.abs(transcriptStartedAt - activeStartedAtMs) <= activeTranscriptMatchWindowMs;
11734
+ }
11720
11735
  function mimeTypeForImagePath(filePath) {
11721
11736
  const extension = path10.extname(filePath).toLowerCase();
11722
11737
  switch (extension) {
@@ -12993,9 +13008,11 @@ var ClaudeRuntimeAdapter = class extends EventEmitter5 {
12993
13008
  }
12994
13009
  const activeUserItem = userMessageHistoryItem(`${activeTurn.providerTurnId}:user`, prompt);
12995
13010
  const activeItems = [...activeTurn.itemOrder].map((itemId) => activeTurn.items.get(itemId)).filter((item) => Boolean(item));
12996
- const transcriptTurnIndex = turns.findLastIndex(
12997
- (turn) => turn.status === "completed" && turn.items.some((item) => item.kind === "userMessage") && !turn.items.some((item) => item.kind === "agentMessage")
12998
- );
13011
+ const normalizedPrompt = normalizePromptForTurnReconciliation(prompt);
13012
+ const transcriptTurnIndex = turns.findLastIndex((turn) => {
13013
+ const transcriptPrompt = userPromptForTurn(turn);
13014
+ return turn.status === "completed" && transcriptPrompt !== null && normalizePromptForTurnReconciliation(transcriptPrompt) === normalizedPrompt && !turn.items.some((item) => item.kind === "agentMessage") && isRecentActiveTranscriptTurn(turn, activeTurn.startedAt);
13015
+ });
12999
13016
  if (transcriptTurnIndex < 0) {
13000
13017
  return turns;
13001
13018
  }
@@ -13006,6 +13023,11 @@ var ClaudeRuntimeAdapter = class extends EventEmitter5 {
13006
13023
  aliases = /* @__PURE__ */ new Map();
13007
13024
  this.historicalTurnIdAliases.set(providerSessionId, aliases);
13008
13025
  }
13026
+ for (const [historicalTurnId, displayTurnId] of aliases) {
13027
+ if (displayTurnId === activeTurn.providerTurnId && historicalTurnId !== transcriptTurn.providerTurnId) {
13028
+ aliases.delete(historicalTurnId);
13029
+ }
13030
+ }
13009
13031
  aliases.set(transcriptTurn.providerTurnId, activeTurn.providerTurnId);
13010
13032
  }
13011
13033
  return turns.map((turn, index) => {
@@ -13028,9 +13050,16 @@ var ClaudeRuntimeAdapter = class extends EventEmitter5 {
13028
13050
  if (!aliases || aliases.size === 0) {
13029
13051
  return turns;
13030
13052
  }
13053
+ const rawTurnIds = new Set(turns.map((turn) => turn.providerTurnId));
13054
+ const usedTurnIds = /* @__PURE__ */ new Set();
13031
13055
  return turns.map((turn) => {
13032
13056
  const providerTurnId = aliases.get(turn.providerTurnId);
13033
- return providerTurnId ? { ...turn, providerTurnId } : turn;
13057
+ if (!providerTurnId || usedTurnIds.has(providerTurnId) || providerTurnId !== turn.providerTurnId && rawTurnIds.has(providerTurnId)) {
13058
+ usedTurnIds.add(turn.providerTurnId);
13059
+ return turn;
13060
+ }
13061
+ usedTurnIds.add(providerTurnId);
13062
+ return { ...turn, providerTurnId };
13034
13063
  });
13035
13064
  }
13036
13065
  async listMcpServers() {