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.
- package/dist/chat/transcriptTailer.js +19 -3
- package/dist/chat/transcriptTailer.js.map +1 -1
- package/dist/codex/codexRolloutTailer.d.ts +5 -0
- package/dist/codex/codexRolloutTailer.js +22 -4
- package/dist/codex/codexRolloutTailer.js.map +1 -1
- package/dist/engine/engine.js +5 -1
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/handlers/conversation.js +55 -0
- package/dist/engine/handlers/conversation.js.map +1 -1
- package/dist/engine/handlers/session.js +6 -3
- package/dist/engine/handlers/session.js.map +1 -1
- package/dist/hub/historyPage.d.ts +22 -0
- package/dist/hub/historyPage.js +125 -0
- package/dist/hub/historyPage.js.map +1 -0
- package/dist/hub/hubProtocol.d.ts +32 -0
- package/dist/hub/hubProtocol.js +42 -0
- package/dist/hub/hubProtocol.js.map +1 -1
- package/dist/hub/sessionHub.d.ts +21 -0
- package/dist/hub/sessionHub.js +228 -1
- package/dist/hub/sessionHub.js.map +1 -1
- package/dist/protocol/decode.d.ts +2 -0
- package/dist/protocol/decode.js +50 -1
- package/dist/protocol/decode.js.map +1 -1
- package/dist/protocol/messages.d.ts +52 -1
- package/dist/shared/clientBuild.d.ts +1 -1
- package/dist/shared/clientBuild.js +1 -1
- package/package.json +3 -3
|
@@ -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;
|
package/dist/hub/hubProtocol.js
CHANGED
|
@@ -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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"}
|
package/dist/hub/sessionHub.d.ts
CHANGED
|
@@ -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 {};
|
package/dist/hub/sessionHub.js
CHANGED
|
@@ -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
|
-
|
|
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)
|