tailii-host 0.10.0 → 0.11.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.
Files changed (67) hide show
  1. package/dist/approval/hook.d.ts +2 -0
  2. package/dist/approval/hook.js +38 -3
  3. package/dist/approval/hook.js.map +1 -1
  4. package/dist/backend/herdr.d.ts +31 -23
  5. package/dist/backend/herdr.js +181 -50
  6. package/dist/backend/herdr.js.map +1 -1
  7. package/dist/backend/sessionBackend.d.ts +8 -1
  8. package/dist/backend/sessionBackend.js +3 -0
  9. package/dist/backend/sessionBackend.js.map +1 -1
  10. package/dist/backend/tmux.d.ts +387 -2
  11. package/dist/backend/tmux.js +936 -55
  12. package/dist/backend/tmux.js.map +1 -1
  13. package/dist/chat/subagentTranscript.js +11 -3
  14. package/dist/chat/subagentTranscript.js.map +1 -1
  15. package/dist/chat/transcriptTailer.d.ts +3 -1
  16. package/dist/chat/transcriptTailer.js +65 -4
  17. package/dist/chat/transcriptTailer.js.map +1 -1
  18. package/dist/commands/launch.js +4 -2
  19. package/dist/commands/launch.js.map +1 -1
  20. package/dist/engine/engine.js +1 -0
  21. package/dist/engine/engine.js.map +1 -1
  22. package/dist/engine/handlers/conversation.js +29 -2
  23. package/dist/engine/handlers/conversation.js.map +1 -1
  24. package/dist/hub/hubDaemon.js +18 -5
  25. package/dist/hub/hubDaemon.js.map +1 -1
  26. package/dist/hub/hubProtocol.d.ts +16 -0
  27. package/dist/hub/hubProtocol.js +26 -2
  28. package/dist/hub/hubProtocol.js.map +1 -1
  29. package/dist/hub/reaper.d.ts +31 -0
  30. package/dist/hub/reaper.js +122 -4
  31. package/dist/hub/reaper.js.map +1 -1
  32. package/dist/hub/sessionHub.d.ts +76 -0
  33. package/dist/hub/sessionHub.js +177 -12
  34. package/dist/hub/sessionHub.js.map +1 -1
  35. package/dist/protocol/decode.js +11 -0
  36. package/dist/protocol/decode.js.map +1 -1
  37. package/dist/protocol/messages.d.ts +30 -0
  38. package/dist/sessions/claudeLiveStatus.d.ts +62 -0
  39. package/dist/sessions/claudeLiveStatus.js +202 -0
  40. package/dist/sessions/claudeLiveStatus.js.map +1 -0
  41. package/dist/sessions/claudeSessionStore.js +13 -0
  42. package/dist/sessions/claudeSessionStore.js.map +1 -1
  43. package/dist/sessions/cronSchedule.d.ts +20 -0
  44. package/dist/sessions/cronSchedule.js +172 -0
  45. package/dist/sessions/cronSchedule.js.map +1 -0
  46. package/dist/sessions/heartbeat.d.ts +44 -3
  47. package/dist/sessions/heartbeat.js +44 -4
  48. package/dist/sessions/heartbeat.js.map +1 -1
  49. package/dist/sessions/sessionSearch.js +9 -0
  50. package/dist/sessions/sessionSearch.js.map +1 -1
  51. package/dist/shared/clientBuild.d.ts +1 -1
  52. package/dist/shared/clientBuild.js +1 -1
  53. package/dist/shared/crossSession.d.ts +10 -3
  54. package/dist/shared/crossSession.js +105 -1
  55. package/dist/shared/crossSession.js.map +1 -1
  56. package/dist/shared/localCommandModelCopy.d.ts +2 -0
  57. package/dist/shared/localCommandModelCopy.js +43 -0
  58. package/dist/shared/localCommandModelCopy.js.map +1 -0
  59. package/dist/shared/narration.d.ts +7 -0
  60. package/dist/shared/narration.js +119 -0
  61. package/dist/shared/narration.js.map +1 -0
  62. package/dist/shared/pastedContent.d.ts +7 -0
  63. package/dist/shared/pastedContent.js +113 -0
  64. package/dist/shared/pastedContent.js.map +1 -0
  65. package/dist/shared/systemNotice.js +4 -1
  66. package/dist/shared/systemNotice.js.map +1 -1
  67. package/package.json +3 -3
@@ -15,6 +15,17 @@
15
15
  // bump が止まって timeout を超えた active は「死んだターン」→ そのまま kill してよい。
16
16
  // Hub は bump 代行しない(すると bump 停止=ターン死亡のシグナルが壊れる)。
17
17
  //
18
+ // claude の idle が timeout を超えても、背景作業が残っていれば殺さない(Stop hook は背景の
19
+ // サブエージェント・シェル・予約が残っていても発火して idle になるため):
20
+ // - Claude Code 自身の状態ファイル `~/.claude/sessions/<pid>.json` の status が仕事中
21
+ // (busy=背景サブエージェント等 / shell=背景シェル・Monitor / waiting=承認・ダイアログ待ち)なら bump。
22
+ // 完了通知に依存しない生の申告。同じ status のまま 24h を超えたら保護しない。照合は tmux=`tmux` 欄の
23
+ // セッション名、herdr=pane の前面 pid(取れなければ、tmux 欄の無い生きた記録がちょうど 1 件の
24
+ // ときだけ session id)。
25
+ // - Stop hook が記録した予約(/loop・ScheduleWakeup・CronCreate)が未発火で、それを持つ Claude
26
+ // プロセス(pid)が生きていれば bump。1 回きり=発火時刻+10 分(記録から 7 日上限)、繰り返し=最初に
27
+ // 見てから 7 日(Claude Code の自動失効)+最終発火の猶予、解釈不能=24h で保護を外す。
28
+ //
18
29
  // 対象は tailii が作る `cs-*` / `s-*` セッションのみ。ユーザーの他の tmux セッションには触れない。
19
30
  // heartbeat 未採番の生存セッション(過去の残骸)は「今を idle」として採番し、次周期から計時する。
20
31
  // 対象セッションが 0 になったら自然終了する(次の engine 接続 / hook 発火で ensure され再起動)。
@@ -25,10 +36,40 @@ import { HerdrSessionManager, isDefaultHerdrTabLabel } from "../backend/herdr.js
25
36
  import { CodexAppServerManager } from "../codex/codexAppServer.js";
26
37
  import { ClaudeSessionStore, transcriptTitle } from "../sessions/claudeSessionStore.js";
27
38
  import { paneCommandLooksLikeAgent } from "../backend/tmux.js";
39
+ import { claudeProcessAlive, defaultClaudeSessionsDir, findClaudeLiveRecords, isClaudeWorking, readClaudeLiveRecordOf, } from "../sessions/claudeLiveStatus.js";
28
40
  /** 一律のアイドル timeout(秒)。idle/active(bump 停止)の両方に同じ値を使う。 */
29
41
  export const REAPER_IDLE_TIMEOUT_SECONDS = 1800;
30
42
  /** 巡回間隔(秒)。 */
31
43
  export const REAPER_CHECK_INTERVAL_SECONDS = 60;
44
+ /**
45
+ * Claude 自身が「仕事中(背景のサブエージェント・シェル等)」と申告している間の保護上限(秒)。
46
+ * 申告が同じ status のまま固着しても、これを超えたら通常の計時へ戻す(永続保護にしない)。
47
+ */
48
+ export const CLAUDE_WORKING_MAX_SECONDS = 24 * 3600;
49
+ /** 1 回きりの予約の発火時刻から、発火後のターンが始まるまでを待つ猶予(秒)。 */
50
+ export const SCHEDULED_ONE_SHOT_GRACE_SECONDS = 10 * 60;
51
+ /**
52
+ * 予約による保護の上限(秒)。Claude Code は繰り返し予約を作成から 7 日で自動失効させる
53
+ * (最後に 1 回発火してから消える)ので、繰り返しは最初に見た時刻から数える。
54
+ * 1 回きりにも記録時刻から同じ上限を掛ける: ターン中に発火時刻を過ぎた予約は Stop の一覧に残り、
55
+ * 「次の一致」が翌日(ScheduleWakeup の日付 `*`)や翌年(日付固定)になる。通常は Stop 直後に
56
+ * 発火して次の Stop で消えるが、そのターンが中断・API エラーで Stop なく終わると記録が残り続けるため。
57
+ */
58
+ export const SCHEDULED_MAX_SECONDS = 7 * 24 * 3600;
59
+ /** 繰り返し予約の失効前の最終発火を待つ猶予(秒)。繰り返しは最大 30 分遅れて発火する。 */
60
+ export const SCHEDULED_RECURRING_FINAL_GRACE_SECONDS = 40 * 60;
61
+ /** 解釈できない予約の保護期限(秒)。 */
62
+ export const SCHEDULED_UNPARSED_MAX_SECONDS = 24 * 3600;
63
+ /** Stop 時点の予約がまだ先に残っているか。 */
64
+ export function scheduledPending(scheduled, now) {
65
+ if (scheduled.recurring.some((entry) => now < entry.firstSeenTs + SCHEDULED_MAX_SECONDS + SCHEDULED_RECURRING_FINAL_GRACE_SECONDS))
66
+ return true;
67
+ if (scheduled.unparsed && now < scheduled.atTs + SCHEDULED_UNPARSED_MAX_SECONDS)
68
+ return true;
69
+ if (now >= scheduled.atTs + SCHEDULED_MAX_SECONDS)
70
+ return false;
71
+ return scheduled.oneShotTs.some((fireTs) => now < fireTs + SCHEDULED_ONE_SHOT_GRACE_SECONDS);
72
+ }
32
73
  /** tailii が管理する tmux セッション名(これ以外は絶対に触らない)。 */
33
74
  export const TAILII_SESSION_PATTERN = /^(cs|s)-/;
34
75
  /** 存在するパスは symlink / `..` / 大文字小文字表記を実体パスへ寄せる。 */
@@ -140,12 +181,68 @@ export async function reaperTick(options) {
140
181
  }
141
182
  return localServerCwdsPromise;
142
183
  };
184
+ const claudeSessionsDir = options.claudeSessionsDir !== undefined ? options.claudeSessionsDir : defaultClaudeSessionsDir();
185
+ /**
186
+ * timeout 超過の claude セッションを生かす理由(無ければ null)。
187
+ * - working-<status>: Claude の状態ファイルが仕事中(背景サブエージェント=busy / 背景シェル=shell /
188
+ * 承認待ち=waiting)。完了通知に依存しない生の申告。status が 24h 変わらなければ保護しない。
189
+ * - scheduled: Stop 時点の予約(/loop・ScheduleWakeup・CronCreate)が未発火で、プロセスが生きている。
190
+ */
191
+ const claudeKeepAliveReason = async (name, heartbeat, agentAlive, claudeMatch) => {
192
+ const processAlive = options.claudeProcessAlive ?? claudeProcessAlive;
193
+ let records = [];
194
+ if (claudeSessionsDir !== null) {
195
+ const meta = metadataStore.get(name);
196
+ const claudeSessionId = claudeMatch.useSessionId ? meta?.providerSessionId ?? meta?.claudeSessionId : undefined;
197
+ try {
198
+ records = await findClaudeLiveRecords({
199
+ dir: claudeSessionsDir,
200
+ sessionName: name,
201
+ ...(claudeMatch.paneProcessIds !== undefined ? { paneProcessIds: claudeMatch.paneProcessIds } : {}),
202
+ ...(claudeSessionId !== undefined ? { claudeSessionId } : {}),
203
+ processAlive,
204
+ });
205
+ }
206
+ catch (error) {
207
+ log(`claude 状態ファイル読取失敗(保護なしで継続): ${name}: ${String(error)}`);
208
+ }
209
+ for (const record of records) {
210
+ if (!isClaudeWorking(record.status) || record.statusSinceMs === null)
211
+ continue;
212
+ // 時計の巻き戻り等で未来の時刻になっていたら上限を判定できないので信用しない。
213
+ const age = now - record.statusSinceMs / 1_000;
214
+ if (age > -300 && age < CLAUDE_WORKING_MAX_SECONDS)
215
+ return `working-${record.status}`;
216
+ }
217
+ }
218
+ const scheduled = heartbeat.scheduled;
219
+ if (scheduled === undefined || !scheduledPending(scheduled, now))
220
+ return null;
221
+ // 予約はそれを作ったプロセス内にしか無い。
222
+ if (scheduled.pid !== undefined) {
223
+ // 持ち主の pid が分かっていれば、その pid が(起動時刻まで一致して)生きていて pane にも
224
+ // エージェントがいることを直接確かめる(状態ファイルの照合が外れても古い予約で新しい
225
+ // プロセスを守らない)。
226
+ if (records.some((record) => record.pid === scheduled.pid))
227
+ return "scheduled";
228
+ const ownRecord = claudeSessionsDir !== null ? readClaudeLiveRecordOf(claudeSessionsDir, scheduled.pid) : null;
229
+ const ownerAlive = await processAlive(scheduled.pid, ownRecord?.procStart ?? null);
230
+ return ownerAlive && records.length === 0 && await agentAlive() ? "scheduled" : null;
231
+ }
232
+ // pid 不明(解決できなかった Stop): session id で照合し、記録が無ければ pane の生存で代える。
233
+ if (records.length > 0) {
234
+ return records.some((record) => scheduled.sessionId === undefined || record.sessionId === scheduled.sessionId)
235
+ ? "scheduled"
236
+ : null;
237
+ }
238
+ return await agentAlive() ? "scheduled" : null;
239
+ };
143
240
  /**
144
241
  * 1 セッション分の判定(tmux / herdr 共通)。heartbeat のルールは backend に依らない:
145
242
  * 未採番=adopt / attach 中=bump / claude active+alive=bump 代行 / active+dead=idle 降格 /
146
- * idle・codex active の timeout 超過=kill。
243
+ * claude の背景作業・予約あり=bump / idle・codex active の timeout 超過=kill。
147
244
  */
148
- const judge = async (name, isAttached, agentAlive, kill) => {
245
+ const judge = async (name, isAttached, agentAlive, kill, claudeMatch) => {
149
246
  const heartbeat = readHeartbeat(heartbeatDir, name);
150
247
  if (heartbeat === null) {
151
248
  // 未採番(engine 再起動をまたいだ残骸等)。今を idle 起点として採番し次周期から計時。
@@ -166,7 +263,8 @@ export async function reaperTick(options) {
166
263
  }
167
264
  else {
168
265
  // active のままプロセスだけ死んだ(クラッシュ等)。idle へ倒して通常計時に載せる。
169
- writeHeartbeat(heartbeatDir, name, { ts: now, state: "idle", event: "agent-process-dead" });
266
+ // プロセスと一緒に予約(プロセス内にしか無い)も消えている。
267
+ writeHeartbeat(heartbeatDir, name, { ts: now, state: "idle", event: "agent-process-dead", scheduled: null });
170
268
  demoted.push(name);
171
269
  log(`demote ${name} (agent process dead)`);
172
270
  }
@@ -175,6 +273,16 @@ export async function reaperTick(options) {
175
273
  // idle、および codex の active(bump 停止=ターン死亡)は一律 timeout で kill。
176
274
  if (now - heartbeat.ts < timeoutSeconds)
177
275
  return;
276
+ // Stop hook は背景のサブエージェント・シェル・予約が残っていても発火して idle になる。
277
+ // Claude 自身の申告(生の状態)と Stop 時点の予約を見て、背景作業ごと殺さない。
278
+ if (agent === "claude") {
279
+ const reason = await claudeKeepAliveReason(name, heartbeat, agentAlive, claudeMatch);
280
+ if (reason !== null) {
281
+ bumpHeartbeat(heartbeatDir, name, now, `daemon-claude-${reason}`);
282
+ log(`protect ${name} (claude ${reason})`);
283
+ return;
284
+ }
285
+ }
178
286
  // 同じプロジェクト配下でローカル開発サーバーが LISTEN 中なら、その pane を閉じると
179
287
  // server まで巻き添え終了する。server 自体を利用中の activity とみなし、停止後に改めて
180
288
  // timeout 分の猶予を取る(herdr は attach 状態を取得できないため特に重要)。
@@ -210,7 +318,10 @@ export async function reaperTick(options) {
210
318
  if (result.exitCode !== 0) {
211
319
  log(`kill 失敗(掃除して継続): ${name}: ${result.stderr.trim()}`);
212
320
  }
213
- });
321
+ },
322
+ // tmux 内の Claude は状態ファイルに `tmux` 欄(セッション名)を書くのでそれだけで照合する。
323
+ // session id は同じ会話の複製インスタンス(Mac のターミナル等)と一致してしまうため使わない。
324
+ { useSessionId: false });
214
325
  }
215
326
  // --- herdr backend の巡回(tailii named session の pane)---
216
327
  // attach 保護は無し(herdr API にクライアント attach 情報が無い)。claude の
@@ -247,6 +358,13 @@ export async function reaperTick(options) {
247
358
  catch (error) {
248
359
  log(`kill 失敗(掃除して継続): ${name}: ${String(error)}`);
249
360
  }
361
+ },
362
+ // herdr は `tmux` 欄が無いので pane の前面 pid で照合し、取れないときだけ session id に頼る。
363
+ {
364
+ ...(herdrOps.agentProcessIds !== undefined
365
+ ? { paneProcessIds: () => herdrOps.agentProcessIds(name) }
366
+ : {}),
367
+ useSessionId: true,
250
368
  });
251
369
  }
252
370
  // 生存 Tailii セッションが 0 なら空 server を回収する(tmux server の自動終了に対応)。
@@ -1 +1 @@
1
- {"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../src/hub/reaper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reaper.js","sourceRoot":"","sources":["../../src/hub/reaper.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import type { ImageService } from "../chat/imageService.js";
8
8
  import type { PanePreviewMode } from "./panePreviewPump.js";
9
9
  import { type UsageLimitWaitState } from "../shared/usageLimitWait.js";
10
10
  import type { QuestionAnswer } from "../protocol.js";
11
+ import { type SendQueuedNowOutcome } from "../backend/tmux.js";
11
12
  import { type CodexAppServerThreadRuntime, type CodexNativeTurnControllerOptions, type CodexTurnControllerRuntime } from "../codex/codexNativeTurnController.js";
12
13
  import { type CodexTurnLifecycleEvent } from "../codex/codexRolloutTailer.js";
13
14
  import type { SessionMeta } from "../sessions/sessionMetadataStore.js";
@@ -34,6 +35,15 @@ export interface HubPreviewPump {
34
35
  export interface ChatInjectContext {
35
36
  /** transcript に記録済みの直近の発話本文(claude 会話のみ。不明は null)。 */
36
37
  recordedPromptText: () => string | null;
38
+ /**
39
+ * 選択ダイアログが開いていたら Esc で閉じてから送る(chat-cancel-choice)。利用者が
40
+ * 「この設問に答えずに送る」と決めた送信(`chat_send.cancelQuestionId`)が、いま未回答の
41
+ * 設問を指しているときだけ true。hub が設問を持っていない送信では決して true にしない
42
+ * (回答キーの注入中や、無関係な確認ダイアログを Esc で潰さないため)。
43
+ */
44
+ cancelChoice: boolean;
45
+ /** backend が選択ダイアログを実際に閉じたときに呼ぶ(hub は未回答の設問を片付ける)。 */
46
+ onChoiceCancelled: () => void;
37
47
  }
38
48
  export type HubTailFactory = (write: (payload: ControlMessage) => void, onCodexTurnLifecycle?: (event: CodexTurnLifecycleEvent) => void, onClaudeTurnLifecycle?: (event: ClaudeTurnLifecycleEvent) => void) => HubTail;
39
49
  export type HubPreviewPumpFactory = (write: (payload: ControlMessage) => void, onPermissionMode?: (mode: string) => void,
@@ -69,6 +79,11 @@ export type SessionHubOptions = Omit<ReaperTickOptions, "now"> & {
69
79
  kind: "resumed";
70
80
  }) => void;
71
81
  chatInjector?: (text: string, session: string, context: ChatInjectContext) => Promise<void>;
82
+ /**
83
+ * CLI のキューに溜まっている発話を今すぐ届ける(chat-send-now)。backend の `sendQueuedNow`。
84
+ * hub は chat の注入・設問の回答キーと重ならないように直列化してから呼ぶ。
85
+ */
86
+ sendNowInjector?: (session: string) => Promise<SendQueuedNowOutcome>;
72
87
  codexAppServerFactory?: () => CodexAppServerThreadRuntime;
73
88
  codexTurnControllerFactory?: (options: CodexNativeTurnControllerOptions) => CodexTurnControllerRuntime;
74
89
  /** 未回答設問の永続化先。省略時は永続化しない(daemon は既定パスを明示する)。 */
@@ -223,11 +238,50 @@ interface SessionActor {
223
238
  chatOrder: string[];
224
239
  chatDrainRunning: boolean;
225
240
  chatDrainBlocked: boolean;
241
+ /**
242
+ * 設問の回答キーを TUI へ注入している最中の件数。この間は chat を注入しない: 回答キーと本文が
243
+ * 同じ pane で混ざると、回答途中の設問を Esc で潰したり、残りの回答キーが入力欄へ落ちて
244
+ * 独立メッセージとして送信されたりする(chat-cancel-choice のレビュー指摘)。
245
+ */
246
+ questionAnswerInjections: number;
247
+ /**
248
+ * chat の注入が Esc で閉じようとしている設問の id(閉じ終わるか、諦めるまで)。この間に届いた
249
+ * 同じ設問への回答は受理しない(回答キーが、閉じた後の入力欄へ落ちる)。
250
+ */
251
+ cancellingQuestionId: string | null;
252
+ /**
253
+ * Esc で閉じられなかった設問と、そのとき失敗させた発話。同じ設問に対して、保留していた発話ごとに
254
+ * Esc を撃ち直して全部を送信失敗にしない(閉じられなかったら残りは保留へ戻す)。
255
+ * 解くのは、利用者が**新しい発話**で改めて「答えずに送る」を送ったときだけ。失敗させた発話の
256
+ * 再送(アプリの自動再送は flush のたびに起きる)では解かない = そのたびに Esc を撃ち直さない。
257
+ */
258
+ choiceCancelFailed: {
259
+ questionId: string;
260
+ clientMessageIds: Set<string>;
261
+ } | null;
262
+ /**
263
+ * 「今すぐ送信」の chord を pane へ送っている最中か(chat-send-now)。この間は chat を注入しない:
264
+ * 本文を打ち終えて Enter を撃つ前に chord が届くと、打ちかけの本文がその場で送信され、
265
+ * 実行中のターンまで打ち切られる(入力欄に文字がある状態の chord の挙動。実測 2.1.283)。
266
+ */
267
+ sendNowRunning: boolean;
268
+ /** 先行する chat の注入が終わるのを待っている「今すぐ送信」の応答先(受け付けた時刻つき)。 */
269
+ sendNowWaiters: Array<{
270
+ client: object;
271
+ id: string;
272
+ receivedAtMs: number;
273
+ }>;
226
274
  codexQueue: PendingCodexTurn[];
227
275
  codexOrder: string[];
228
276
  codexDrainRunning: boolean;
229
277
  codexDrainBlocked: boolean;
230
278
  }
279
+ /**
280
+ * 「今すぐ送信」が順番(先行する chat の注入)を待てる上限(ms)。engine は hub の応答を 30 秒で
281
+ * 諦める。それより後に chord を送ると、アプリに失敗と出した後で実行中のターンが打ち切られる。
282
+ * chord の後の確認(約 6 秒)と撮り直し(約 1.5 秒)を引いた残りより短くする。
283
+ */
284
+ export declare const SEND_NOW_QUEUE_WAIT_LIMIT_MS = 20000;
231
285
  export declare class SessionHub {
232
286
  private readonly options;
233
287
  private readonly clients;
@@ -311,6 +365,28 @@ export declare class SessionHub {
311
365
  private claimInput;
312
366
  private deletePendingChatMessage;
313
367
  private deletePendingCodexTurn;
368
+ /**
369
+ * 未回答の設問が chat の注入を止めているか。
370
+ *
371
+ * 設問ダイアログの表示中に本文を打つと選択肢へ落ちるので、原則は回答(または TUI 側での解消)まで
372
+ * durable queue に保留する。回答キーの注入中も同じ(受理の時点で `pendingQuestion` は clear
373
+ * 済みだが、pane にはまだ設問が出ている)。
374
+ *
375
+ * 例外は利用者が「この設問に答えずに送る」と決めた送信が queue にあるとき(chat-cancel-choice):
376
+ * 設問を Esc で閉じてから注入するので保留しない。**`cancelQuestionId` がいま未回答の設問の id と
377
+ * 一致するときだけ**解く。利用者が見ていない別の設問(queue に残っていた送信が、後から出た
378
+ * 設問に出会う等)は閉じない。queue のどこかに 1 件あれば先頭から順に流す(FIFO を崩して
379
+ * 後続だけを先に送らない。先に保留されていた発話も同じ利用者の発話で、設問を閉じれば届けられる)。
380
+ * Codex の設問(App Server の request)は pane のダイアログではなく Esc で閉じられないため対象外。
381
+ */
382
+ private chatDrainHeldByQuestion;
383
+ /**
384
+ * 「今すぐ送信」を pane へ送る(chat-send-now)。chat の注入と同じ pane を触るので直列化する:
385
+ * 注入の最中なら終わるのを待ち(`drainChatQueue` の終わりで呼び直される)、送っている間は
386
+ * 注入を始めさせない。設問の表示中・回答キーの注入中は 1 キーも送らずに断る(chord は
387
+ * ダイアログでは効かず、キーだけが選択肢へ落ちる)。
388
+ */
389
+ private runSendNow;
314
390
  private drainChatQueue;
315
391
  private ensureCodexTurnController;
316
392
  private drainCodexQueue;