tailii-host 0.12.0 → 0.13.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.
@@ -19,6 +19,15 @@ export type HubClientMessage = {
19
19
  id: string;
20
20
  session: string;
21
21
  nodeId: string;
22
+ }
23
+ /** 会話履歴のページ取得(history-page)。before* の行より前の最後の limit 行ぶん。 */
24
+ | {
25
+ type: "conversation_history_page_request";
26
+ id: string;
27
+ session: string;
28
+ beforeStreamId?: string;
29
+ beforeToolId?: string;
30
+ limit: number;
22
31
  } | {
23
32
  type: "hub_state_request";
24
33
  id: string;
@@ -87,6 +96,13 @@ export type HubClientMessage = {
87
96
  clientMessageId: string;
88
97
  kind: "chat" | "codex";
89
98
  }
99
+ /** Claude 発話の配送状態の照会(engine→hub, restored-receipt-probe)。何も登録しない。 */
100
+ | {
101
+ type: "chat_receipt_query";
102
+ id: string;
103
+ session: string;
104
+ clientMessageId: string;
105
+ }
90
106
  /** CLI のキューに溜まっている発話を今すぐ届ける(engine→hub, chat-send-now)。 */
91
107
  | {
92
108
  type: "chat_send_now";
@@ -134,6 +150,18 @@ export type HubServerMessage = {
134
150
  payload: Extract<ControlMessage, {
135
151
  type: "subagent_transcript_response";
136
152
  }>;
153
+ }
154
+ /** 履歴ページ(history-page)。`lines` は ControlMessage の wire 行(古い順)。読めなければ `failed`。 */
155
+ | {
156
+ type: "conversation_history_page_response";
157
+ id: string;
158
+ session: string;
159
+ lines: string[];
160
+ hasMore: boolean;
161
+ hostNowMs: number;
162
+ failed?: boolean;
163
+ /** 終端の行が host の履歴に見つからない(iOS は次の行を終端にして取り直す)。 */
164
+ anchorMissing?: boolean;
137
165
  } | {
138
166
  type: "conversation_pane_preview";
139
167
  session: string;
@@ -192,6 +220,10 @@ export type HubServerMessage = {
192
220
  id: string;
193
221
  status: "deleted" | "not_found" | "processing" | "failed";
194
222
  error?: string;
223
+ } | {
224
+ type: "chat_receipt_query_result";
225
+ id: string;
226
+ status: "delivered" | "deleted" | "uncertain" | "pending" | "unknown";
195
227
  } | {
196
228
  type: "chat_send_now_result";
197
229
  id: string;
@@ -52,6 +52,18 @@ export function decodeHubClientLine(line) {
52
52
  ? { type: "conversation_subagent_transcript_request", id, session, nodeId }
53
53
  : null;
54
54
  }
55
+ if (record["type"] === "conversation_history_page_request") {
56
+ const id = record["id"], session = record["session"], limit = record["limit"];
57
+ const beforeStreamId = record["beforeStreamId"], beforeToolId = record["beforeToolId"];
58
+ if (typeof id !== "string" || id.length === 0 || typeof session !== "string" || session.length === 0 ||
59
+ typeof limit !== "number" || !Number.isInteger(limit) || limit < 1 ||
60
+ (beforeStreamId !== undefined && typeof beforeStreamId !== "string") ||
61
+ (beforeToolId !== undefined && typeof beforeToolId !== "string"))
62
+ return null;
63
+ return { type: "conversation_history_page_request", id, session, limit,
64
+ ...(typeof beforeStreamId === "string" ? { beforeStreamId } : {}),
65
+ ...(typeof beforeToolId === "string" ? { beforeToolId } : {}) };
66
+ }
55
67
  if (record["type"] === "hub_state_request") {
56
68
  const id = record["id"];
57
69
  const session = record["session"];
@@ -152,6 +164,14 @@ export function decodeHubClientLine(line) {
152
164
  ? { type: "pending_message_delete", id, session, clientMessageId, kind }
153
165
  : null;
154
166
  }
167
+ if (record["type"] === "chat_receipt_query") {
168
+ const id = record["id"], session = record["session"], clientMessageId = record["clientMessageId"];
169
+ return typeof id === "string" && id.length > 0 &&
170
+ typeof session === "string" && session.length > 0 &&
171
+ typeof clientMessageId === "string" && clientMessageId.length > 0
172
+ ? { type: "chat_receipt_query", id, session, clientMessageId }
173
+ : null;
174
+ }
155
175
  if (record["type"] === "chat_send_now") {
156
176
  const id = record["id"], session = record["session"];
157
177
  return typeof id === "string" && id.length > 0 && typeof session === "string" && session.length > 0
@@ -285,6 +305,14 @@ export function decodeHubServerLine(line) {
285
305
  ...(typeof error === "string" ? { error } : {}),
286
306
  };
287
307
  }
308
+ if (record["type"] === "chat_receipt_query_result") {
309
+ const id = record["id"], status = record["status"];
310
+ if (typeof id !== "string" ||
311
+ (status !== "delivered" && status !== "deleted" && status !== "uncertain" &&
312
+ status !== "pending" && status !== "unknown"))
313
+ return null;
314
+ return { type: "chat_receipt_query_result", id, status };
315
+ }
288
316
  if (record["type"] === "chat_send_now_result") {
289
317
  const id = record["id"], status = record["status"], error = record["error"];
290
318
  if (typeof id !== "string" ||
@@ -317,6 +345,20 @@ export function decodeHubServerLine(line) {
317
345
  ? { type: record["type"], id, session, payload }
318
346
  : null;
319
347
  }
348
+ if (record["type"] === "conversation_history_page_response") {
349
+ const id = record["id"], session = record["session"], lines = record["lines"];
350
+ const hasMore = record["hasMore"], hostNowMs = record["hostNowMs"], failed = record["failed"];
351
+ const anchorMissing = record["anchorMissing"];
352
+ if (typeof id !== "string" || id.length === 0 || typeof session !== "string" || session.length === 0 ||
353
+ !Array.isArray(lines) || !lines.every((line) => typeof line === "string") ||
354
+ typeof hasMore !== "boolean" || typeof hostNowMs !== "number" ||
355
+ (failed !== undefined && typeof failed !== "boolean") ||
356
+ (anchorMissing !== undefined && typeof anchorMissing !== "boolean"))
357
+ return null;
358
+ return { type: "conversation_history_page_response", id, session, lines: lines, hasMore, hostNowMs,
359
+ ...(failed === true ? { failed: true } : {}),
360
+ ...(anchorMissing === true ? { anchorMissing: true } : {}) };
361
+ }
320
362
  if (record["type"] === "conversation_liveness") {
321
363
  // live-pill Phase 2: 死亡だけを配る(alive:true は送らない設計上の割り切り)。
322
364
  const session = record["session"];
@@ -1 +1 @@
1
- {"version":3,"file":"hubProtocol.js","sourceRoot":"","sources":["../../src/hub/hubProtocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hubProtocol.js","sourceRoot":"","sources":["../../src/hub/hubProtocol.ts"],"names":[],"mappings":"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"}
@@ -300,6 +300,13 @@ export declare class SessionHub {
300
300
  private codexStartsInFlight;
301
301
  private modePushSeq;
302
302
  private chatReceiptsDirty;
303
+ /**
304
+ * 片付け(retire)・世代不一致で actor ごと消えた会話の Claude 配送済み receipt(clientMessageId →
305
+ * 配送時刻)。clientMessageId は UUID で会話をまたいで一意なので、actor が消えても「配送済み」の
306
+ * 事実は変わらない。`chat_receipt_query` がこれを見て、ACK を取りこぼした iOS の Outbox を
307
+ * 安全に解決できるようにする(restored-receipt-probe)。保持は通常の receipt と同じ 30 日。
308
+ */
309
+ private retiredChatDeliveries;
303
310
  private readonly activeCodexTurns;
304
311
  private codexTurnController;
305
312
  constructor(options: SessionHubOptions);
@@ -362,6 +369,13 @@ export declare class SessionHub {
362
369
  private publishCodexContent;
363
370
  private publishConversationEvent;
364
371
  private startBackfill;
372
+ /** 直近に読んだ会話の全履歴(ページを遡るたびに transcript を頭から読み直さない)。 */
373
+ private readonly historyPageCache;
374
+ /** 会話ごとの読み取り中の Promise(同じ会話の全履歴を並行して二重に読まない)。 */
375
+ private readonly historyPageReads;
376
+ private answerHistoryPage;
377
+ /** 全履歴の再送と同じ tail で transcript を最後まで読み、出力を集める(購読者へは流さない)。 */
378
+ private readFullHistory;
365
379
  private canReplay;
366
380
  /** watch 状態・処理中遷移で全 actor の pump 要否を見直す(対象は疎なので全走査で足りる)。 */
367
381
  private syncAllPreviews;
@@ -446,6 +460,13 @@ export declare class SessionHub {
446
460
  private persistPendingQuestions;
447
461
  private readPendingQuestions;
448
462
  private persistChatReceipts;
463
+ private readRetiredChatDeliveries;
464
+ /**
465
+ * Claude 発話の配送状態を、何も登録せずに答える(`chat_receipt_query`, restored-receipt-probe)。
466
+ * `chat_send` と違い、どの記録にも無い ID を新規として受け付けない(unknown を返すだけ)。
467
+ * 会話が片付いた後も配送済みは台帳から答える。actor が無ければ作らない。
468
+ */
469
+ private chatReceiptStatus;
449
470
  private readChatReceipts;
450
471
  }
451
472
  export {};
@@ -5,8 +5,10 @@ import * as fs from "node:fs";
5
5
  import * as path from "node:path";
6
6
  import { bumpHeartbeat, listHeartbeatSessions, readHeartbeat, writeHeartbeat } from "../sessions/heartbeat.js";
7
7
  import { ensureDirectory0700 } from "../shared/paths.js";
8
+ import { encodeControlMessage } from "../protocol.js";
8
9
  import { decodeHubClientLine, encodeHubMessage, } from "./hubProtocol.js";
9
10
  import { HISTORY_DONE_STREAM_ID, findTrailingTurnEndMarkerMs, findTrailingUserPromptText, } from "../chat/transcriptTailer.js";
11
+ import { sliceHistoryPage } from "./historyPage.js";
10
12
  import { sameUsageLimitWait } from "../shared/usageLimitWait.js";
11
13
  import { PROTOCOL_V1, PROTOCOL_V2 } from "../protocol.js";
12
14
  import { ChatInjectionRejectedError, LoginCodeError, SEND_NOW_BLOCKED_BY_DIALOG, SEND_NOW_EXPIRED_IN_QUEUE, } from "../backend/tmux.js";
@@ -20,6 +22,12 @@ import { claudeTranscriptPathFor } from "../sessions/transcriptPath.js";
20
22
  * ければ強制的に live へ切り替える。進捗があるうちは延長するので、巨大な transcript の再生を
21
23
  * 途中で打ち切ることはない。
22
24
  */
25
+ /** 履歴ページ用に transcript を読み切るまでの上限(画像の多い巨大な会話でも返事を返す)。 */
26
+ const HISTORY_PAGE_READ_TIMEOUT_MS = 20_000;
27
+ /** 履歴ページ用に全履歴を覚えておく会話の数。 */
28
+ const HISTORY_PAGE_CACHE_LIMIT = 3;
29
+ /** 履歴ページ用に覚えた全履歴を使い回す期間(遡り中の連続要求だけを速くし、メモリに長く残さない)。 */
30
+ const HISTORY_PAGE_CACHE_TTL_MS = 10 * 60_000;
23
31
  const BACKFILL_STALL_TIMEOUT_MS = 15_000;
24
32
  const DELIVERED_RECEIPT_TTL_MS = 30 * 24 * 60 * 60 * 1_000;
25
33
  const MAX_DELIVERED_RECEIPTS_PER_SESSION = 10_000;
@@ -59,6 +67,13 @@ export class SessionHub {
59
67
  codexStartsInFlight = 0;
60
68
  modePushSeq = 0;
61
69
  chatReceiptsDirty = false;
70
+ /**
71
+ * 片付け(retire)・世代不一致で actor ごと消えた会話の Claude 配送済み receipt(clientMessageId →
72
+ * 配送時刻)。clientMessageId は UUID で会話をまたいで一意なので、actor が消えても「配送済み」の
73
+ * 事実は変わらない。`chat_receipt_query` がこれを見て、ACK を取りこぼした iOS の Outbox を
74
+ * 安全に解決できるようにする(restored-receipt-probe)。保持は通常の receipt と同じ 30 日。
75
+ */
76
+ retiredChatDeliveries = new Map();
62
77
  activeCodexTurns = new Set();
63
78
  codexTurnController = null;
64
79
  constructor(options) {
@@ -176,12 +191,19 @@ export class SessionHub {
176
191
  /** daemon 再起動前に durable enqueue 済みだった chat_send と receipt を復元する。 */
177
192
  restoreChatReceipts() {
178
193
  const persisted = this.readChatReceipts();
194
+ const restoredLedgerAt = Date.now();
195
+ for (const [clientMessageId, deliveredAt] of Object.entries(this.readRetiredChatDeliveries())) {
196
+ this.retiredChatDeliveries.set(clientMessageId, deliveredAt);
197
+ }
198
+ compactRetiredChatDeliveries(this.retiredChatDeliveries, restoredLedgerAt);
179
199
  let discardedStaleSession = false;
180
200
  for (const [session, state] of Object.entries(persisted)) {
181
201
  const currentSessionIdentity = receiptSessionIdentity(this.options.metadataStore.get(session));
182
202
  if (state.sessionIdentity !== undefined && state.sessionIdentity !== currentSessionIdentity) {
183
203
  // session 名は再利用される。旧世代の durable queue を同名の新 pane へ注入しない。
184
204
  // metadata が消失・破損した場合も identity を証明できないため安全側で破棄する。
205
+ // 配送済みの事実(UUID の clientMessageId)だけは照会用の台帳へ残す。
206
+ adoptRetiredChatDeliveries(this.retiredChatDeliveries, new Map(state.delivered.map((id) => [id, state.deliveredAtMs?.[id] ?? restoredLedgerAt])), restoredLedgerAt);
185
207
  discardedStaleSession = true;
186
208
  this.options.log?.(`stale chat receipt 破棄 session=${session}`);
187
209
  continue;
@@ -335,6 +357,10 @@ export class SessionHub {
335
357
  }
336
358
  return;
337
359
  }
360
+ if (message.type === "conversation_history_page_request") {
361
+ void this.answerHistoryPage(client, message);
362
+ return;
363
+ }
338
364
  if (message.type === "conversation_subagent_transcript_request") {
339
365
  const actor = this.actors.get(message.session);
340
366
  const transcript = actor?.tail?.subagentTranscript?.(message.nodeId) ?? {
@@ -678,6 +704,13 @@ export class SessionHub {
678
704
  void this.runSendNow(message.session, actor);
679
705
  return;
680
706
  }
707
+ if (message.type === "chat_receipt_query") {
708
+ this.sendTo(client, {
709
+ type: "chat_receipt_query_result", id: message.id,
710
+ status: this.chatReceiptStatus(message.session, message.clientMessageId),
711
+ });
712
+ return;
713
+ }
681
714
  if (message.type === "pending_message_delete") {
682
715
  // 対象不在も成功だが、client 保存前 crash で同じ Outbox が復元されても実行しないよう
683
716
  // 削除 tombstone は durable に残す。actor 不在でもここだけは軽量 actor を作る。
@@ -827,6 +860,7 @@ export class SessionHub {
827
860
  }
828
861
  // drain が injector / App Server の await 中でも、復帰後に同じ actor 参照から次の旧入力へ
829
862
  // 進めないよう durable queue の実体も空にする。現在実行中の1件は復帰時のidentity検査で捨てる。
863
+ adoptRetiredChatDeliveries(this.retiredChatDeliveries, actor.deliveredChatMessageIds);
830
864
  actor.chatQueue.length = 0;
831
865
  actor.chatOrder.length = 0;
832
866
  actor.pendingChatMessages.clear();
@@ -890,6 +924,22 @@ export class SessionHub {
890
924
  actor.previewPump?.resendLastIfInteractive?.();
891
925
  actor.previewPump?.armJumpToLatest?.();
892
926
  }
927
+ // 開き直し(reattach-since)は iOS のキャッシュが追いついていた時刻以降を transcript から
928
+ // 読み直す。背景購読の replay buffer だけでは履歴完了マーカーが届かず、iOS の
929
+ // 「最新分を取り込み中」が解けない。
930
+ if (!existing.backfilling && newerThanMs !== undefined) {
931
+ if (this.options.tailFactory === undefined || this.options.metadataStore.get(session) === null) {
932
+ // 読み直せない会話でも完了を知らせる(iOS の「最新分を取り込み中」と遡りの待ちを解く)。
933
+ this.sendTo(client, {
934
+ type: "conversation_event", session, serverSeq: 0,
935
+ payload: { type: "chat_output", v: PROTOCOL_V1, streamId: "pc:history-cancelled",
936
+ role: "system", text: "", eof: true },
937
+ });
938
+ return;
939
+ }
940
+ this.startBackfill(client, session, actor, newerThanMs);
941
+ return;
942
+ }
893
943
  // preview=false 中に engine が route できなかった image/subagent event を、同じ
894
944
  // subscriber の前面昇格時にも afterSeq から回収する。既存購読だからと no-op にしない。
895
945
  if (!existing.backfilling && afterSeq !== undefined) {
@@ -1463,6 +1513,114 @@ export class SessionHub {
1463
1513
  if (!finished)
1464
1514
  armStallTimer(BACKFILL_STALL_TIMEOUT_MS);
1465
1515
  }
1516
+ // ---- 履歴ページ(history-page) ----
1517
+ /** 直近に読んだ会話の全履歴(ページを遡るたびに transcript を頭から読み直さない)。 */
1518
+ historyPageCache = new Map();
1519
+ /** 会話ごとの読み取り中の Promise(同じ会話の全履歴を並行して二重に読まない)。 */
1520
+ historyPageReads = new Map();
1521
+ async answerHistoryPage(client, message) {
1522
+ const anchor = message.beforeStreamId !== undefined || message.beforeToolId !== undefined
1523
+ ? { ...(message.beforeStreamId !== undefined ? { streamId: message.beforeStreamId } : {}),
1524
+ ...(message.beforeToolId !== undefined ? { toolId: message.beforeToolId } : {}) }
1525
+ : null;
1526
+ let response;
1527
+ try {
1528
+ // 最新のページは常に読み直す(新しい行が増えている)。遡るページは直近の読み取りを使い、
1529
+ // 終端の行がそこに無いときだけ読み直す。
1530
+ // 期限切れの全履歴は要求のたびに捨てる(常駐 daemon に base64 サムネごと残し続けない)。
1531
+ for (const [session, cached] of this.historyPageCache) {
1532
+ if (Date.now() - cached.hostNowMs > HISTORY_PAGE_CACHE_TTL_MS)
1533
+ this.historyPageCache.delete(session);
1534
+ }
1535
+ let history = anchor === null ? undefined : this.historyPageCache.get(message.session);
1536
+ let slice = history === undefined ? null : sliceHistoryPage(history.events, anchor, message.limit);
1537
+ if (slice === null || !slice.anchorFound) {
1538
+ history = await this.readFullHistory(message.session);
1539
+ slice = sliceHistoryPage(history.events, anchor, message.limit);
1540
+ }
1541
+ response = {
1542
+ type: "conversation_history_page_response", id: message.id, session: message.session,
1543
+ lines: slice.events.map((event) => encodeControlMessage(event)),
1544
+ hasMore: slice.hasMore, hostNowMs: history.hostNowMs,
1545
+ ...(slice.anchorFound ? {} : { anchorMissing: true }),
1546
+ };
1547
+ }
1548
+ catch (error) {
1549
+ this.options.log?.(`audit history-page-failed session=${message.session} error=${String(error)}`);
1550
+ response = {
1551
+ type: "conversation_history_page_response", id: message.id, session: message.session,
1552
+ lines: [], hasMore: false, hostNowMs: Date.now(), failed: true,
1553
+ };
1554
+ }
1555
+ this.sendTo(client, response);
1556
+ }
1557
+ /** 全履歴の再送と同じ tail で transcript を最後まで読み、出力を集める(購読者へは流さない)。 */
1558
+ readFullHistory(session) {
1559
+ const inFlight = this.historyPageReads.get(session);
1560
+ if (inFlight !== undefined)
1561
+ return inFlight;
1562
+ const read = new Promise((resolve, reject) => {
1563
+ const factory = this.options.tailFactory;
1564
+ const meta = this.options.metadataStore.get(session);
1565
+ if (factory === undefined || meta === null) {
1566
+ reject(new Error(factory === undefined ? "tail unavailable" : "session metadata not found"));
1567
+ return;
1568
+ }
1569
+ const hostNowMs = Date.now();
1570
+ const events = [];
1571
+ let settled = false;
1572
+ let tail = null;
1573
+ let timer = null;
1574
+ const settle = (error) => {
1575
+ if (settled)
1576
+ return;
1577
+ settled = true;
1578
+ if (timer !== null)
1579
+ clearTimeout(timer);
1580
+ tail?.stop();
1581
+ if (error !== null) {
1582
+ reject(error);
1583
+ return;
1584
+ }
1585
+ const history = { events, hostNowMs };
1586
+ // 直近数件だけ持つ(会話を行き来しても読み直しを減らし、メモリは際限なく持たない)。
1587
+ this.historyPageCache.delete(session);
1588
+ this.historyPageCache.set(session, history);
1589
+ while (this.historyPageCache.size > HISTORY_PAGE_CACHE_LIMIT) {
1590
+ this.historyPageCache.delete(this.historyPageCache.keys().next().value);
1591
+ }
1592
+ resolve(history);
1593
+ };
1594
+ tail = factory((payload) => {
1595
+ if (settled)
1596
+ return;
1597
+ if (payload.type === "chat_output" && payload.streamId === HISTORY_DONE_STREAM_ID) {
1598
+ settle(null);
1599
+ return;
1600
+ }
1601
+ events.push(payload);
1602
+ });
1603
+ if (settled) {
1604
+ tail.stop();
1605
+ return;
1606
+ }
1607
+ timer = setTimeout(() => settle(new Error("history read timed out")), HISTORY_PAGE_READ_TIMEOUT_MS);
1608
+ timer.unref();
1609
+ try {
1610
+ tail.open(meta.cwd, meta.providerSessionId ?? meta.claudeSessionId ?? null, null, meta.agent ?? "claude");
1611
+ }
1612
+ catch (error) {
1613
+ settle(error instanceof Error ? error : new Error(String(error)));
1614
+ }
1615
+ });
1616
+ this.historyPageReads.set(session, read);
1617
+ const clear = () => {
1618
+ if (this.historyPageReads.get(session) === read)
1619
+ this.historyPageReads.delete(session);
1620
+ };
1621
+ read.then(clear, clear);
1622
+ return read;
1623
+ }
1466
1624
  canReplay(actor, afterSeq) {
1467
1625
  const first = actor.replayBuffer[0]?.serverSeq ?? actor.nextServerSeq;
1468
1626
  const last = actor.nextServerSeq - 1;
@@ -2491,7 +2649,12 @@ export class SessionHub {
2491
2649
  };
2492
2650
  }
2493
2651
  try {
2494
- const contents = JSON.stringify({ version: 1, sessions });
2652
+ compactRetiredChatDeliveries(this.retiredChatDeliveries);
2653
+ const contents = JSON.stringify({
2654
+ version: 1, sessions,
2655
+ ...(this.retiredChatDeliveries.size > 0
2656
+ ? { retiredChatDeliveredAtMs: Object.fromEntries(this.retiredChatDeliveries) } : {}),
2657
+ });
2495
2658
  if (this.options.chatReceiptsWriter !== undefined) {
2496
2659
  this.options.chatReceiptsWriter(target, contents);
2497
2660
  }
@@ -2510,6 +2673,49 @@ export class SessionHub {
2510
2673
  return false;
2511
2674
  }
2512
2675
  }
2676
+ readRetiredChatDeliveries() {
2677
+ const target = this.options.chatReceiptsPath;
2678
+ if (target === undefined)
2679
+ return {};
2680
+ try {
2681
+ const parsed = JSON.parse(fs.readFileSync(target, "utf8"));
2682
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
2683
+ return {};
2684
+ const ledger = parsed["retiredChatDeliveredAtMs"];
2685
+ if (typeof ledger !== "object" || ledger === null || Array.isArray(ledger))
2686
+ return {};
2687
+ const result = {};
2688
+ for (const [clientMessageId, deliveredAt] of Object.entries(ledger)) {
2689
+ if (typeof deliveredAt === "number" && Number.isFinite(deliveredAt))
2690
+ result[clientMessageId] = deliveredAt;
2691
+ }
2692
+ return result;
2693
+ }
2694
+ catch {
2695
+ return {};
2696
+ }
2697
+ }
2698
+ /**
2699
+ * Claude 発話の配送状態を、何も登録せずに答える(`chat_receipt_query`, restored-receipt-probe)。
2700
+ * `chat_send` と違い、どの記録にも無い ID を新規として受け付けない(unknown を返すだけ)。
2701
+ * 会話が片付いた後も配送済みは台帳から答える。actor が無ければ作らない。
2702
+ */
2703
+ chatReceiptStatus(session, clientMessageId) {
2704
+ const actor = this.actors.get(session);
2705
+ if (actor !== undefined) {
2706
+ if (hasDeliveredReceipt(actor.deletedChatMessageIds, clientMessageId))
2707
+ return "deleted";
2708
+ if (hasDeliveredReceipt(actor.deliveredChatMessageIds, clientMessageId))
2709
+ return "delivered";
2710
+ if (actor.uncertainChatMessages.has(clientMessageId))
2711
+ return "uncertain";
2712
+ if (actor.pendingChatMessages.has(clientMessageId))
2713
+ return "pending";
2714
+ }
2715
+ if (hasDeliveredReceipt(this.retiredChatDeliveries, clientMessageId))
2716
+ return "delivered";
2717
+ return "unknown";
2718
+ }
2513
2719
  readChatReceipts() {
2514
2720
  const target = this.options.chatReceiptsPath;
2515
2721
  if (target === undefined)
@@ -2677,6 +2883,27 @@ function compactDeliveredReceipts(receipts, now = Date.now()) {
2677
2883
  receipts.delete(oldest);
2678
2884
  }
2679
2885
  }
2886
+ /** 片付けた会話の配送済み receipt の上限(全会話合計)。 */
2887
+ const MAX_RETIRED_CHAT_DELIVERIES = 20_000;
2888
+ function adoptRetiredChatDeliveries(ledger, delivered, now = Date.now()) {
2889
+ for (const [clientMessageId, deliveredAt] of delivered) {
2890
+ ledger.delete(clientMessageId);
2891
+ ledger.set(clientMessageId, deliveredAt);
2892
+ }
2893
+ compactRetiredChatDeliveries(ledger, now);
2894
+ }
2895
+ function compactRetiredChatDeliveries(ledger, now = Date.now()) {
2896
+ for (const [id, deliveredAt] of ledger) {
2897
+ if (now - deliveredAt > DELIVERED_RECEIPT_TTL_MS)
2898
+ ledger.delete(id);
2899
+ }
2900
+ while (ledger.size > MAX_RETIRED_CHAT_DELIVERIES) {
2901
+ const oldest = ledger.keys().next().value;
2902
+ if (oldest === undefined)
2903
+ break;
2904
+ ledger.delete(oldest);
2905
+ }
2906
+ }
2680
2907
  function removeOrderedID(order, id) {
2681
2908
  const index = order.indexOf(id);
2682
2909
  if (index >= 0)