tailii-host 0.3.0 → 0.5.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/README.md +1 -0
- package/dist/approval/hook.js +10 -0
- package/dist/approval/hook.js.map +1 -1
- package/dist/backend/herdr.d.ts +48 -4
- package/dist/backend/herdr.js +130 -15
- package/dist/backend/herdr.js.map +1 -1
- package/dist/backend/tmux.d.ts +1 -1
- package/dist/backend/tmux.js +11 -2
- package/dist/backend/tmux.js.map +1 -1
- package/dist/chat/subagentTailer.d.ts +41 -0
- package/dist/chat/subagentTailer.js +306 -26
- package/dist/chat/subagentTailer.js.map +1 -1
- package/dist/chat/transcriptTailer.d.ts +9 -0
- package/dist/chat/transcriptTailer.js +55 -1
- package/dist/chat/transcriptTailer.js.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/codex/codexAppServer.js +20 -0
- package/dist/codex/codexAppServer.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -6
- package/dist/commands/doctor.js +2 -29
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/launch.d.ts +2 -0
- package/dist/commands/launch.js +5 -0
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/selfUpdate.d.ts +71 -0
- package/dist/commands/selfUpdate.js +536 -0
- package/dist/commands/selfUpdate.js.map +1 -0
- package/dist/engine/engine.js +41 -22
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/handlers/index.js +2 -0
- package/dist/engine/handlers/index.js.map +1 -1
- package/dist/engine/handlers/selfUpdate.d.ts +2 -0
- package/dist/engine/handlers/selfUpdate.js +52 -0
- package/dist/engine/handlers/selfUpdate.js.map +1 -0
- package/dist/engine/handlers/session.js +5 -3
- package/dist/engine/handlers/session.js.map +1 -1
- package/dist/engine/handlers/workspace.js +38 -1
- package/dist/engine/handlers/workspace.js.map +1 -1
- package/dist/hub/effortDialog.d.ts +20 -0
- package/dist/hub/effortDialog.js +40 -0
- package/dist/hub/effortDialog.js.map +1 -0
- package/dist/hub/hubDaemon.js +12 -1
- package/dist/hub/hubDaemon.js.map +1 -1
- package/dist/hub/questionInjection.js +2 -1
- package/dist/hub/questionInjection.js.map +1 -1
- package/dist/hub/reaper.d.ts +5 -0
- package/dist/hub/reaper.js +25 -7
- package/dist/hub/reaper.js.map +1 -1
- package/dist/hub/sessionHub.js +83 -11
- package/dist/hub/sessionHub.js.map +1 -1
- package/dist/protocol/decode.js +54 -1
- package/dist/protocol/decode.js.map +1 -1
- package/dist/protocol/encode.js +2 -0
- package/dist/protocol/encode.js.map +1 -1
- package/dist/protocol/messages.d.ts +60 -1
- package/dist/services/fileService.d.ts +19 -1
- package/dist/services/fileService.js +126 -0
- package/dist/services/fileService.js.map +1 -1
- package/dist/services/keychainMirror.d.ts +9 -0
- package/dist/services/keychainMirror.js +64 -0
- package/dist/services/keychainMirror.js.map +1 -0
- package/dist/services/officialApps.d.ts +3 -0
- package/dist/services/officialApps.js +28 -7
- package/dist/services/officialApps.js.map +1 -1
- package/dist/services/planUsageFetcher.d.ts +18 -2
- package/dist/services/planUsageFetcher.js +75 -16
- package/dist/services/planUsageFetcher.js.map +1 -1
- package/dist/shared/cliVersions.d.ts +14 -0
- package/dist/shared/cliVersions.js +38 -0
- package/dist/shared/cliVersions.js.map +1 -0
- package/dist/shared/lineWriter.d.ts +7 -0
- package/dist/shared/lineWriter.js +26 -0
- package/dist/shared/lineWriter.js.map +1 -1
- package/package.json +3 -3
package/dist/backend/tmux.js
CHANGED
|
@@ -118,10 +118,19 @@ function splitInputPrompt(bodyLines) {
|
|
|
118
118
|
const text = body.join("\n").trim();
|
|
119
119
|
return { prompt: sigil ?? "", text: isInputPlaceholder(text) ? "" : text };
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* 発行するのは ls / capture-pane / send-keys / kill-session など即応するコマンドだけで、
|
|
123
|
+
* 正当に長引くものは無い。無期限に待つと、これを直列 await する engine の read loop
|
|
124
|
+
* (以後の全メッセージを読まなくなる)と hub の tick ループが同時に止まるため、
|
|
125
|
+
* 上限を切って「失敗」として返す(`gitService` の execFile と同じ規約)。
|
|
126
|
+
*/
|
|
127
|
+
const TMUX_TIMEOUT_MS = 15_000;
|
|
121
128
|
/** 実 tmux を絶対パスで起動する既定ランナー。tmux 非0 exit は throw せず結果で表現する。 */
|
|
122
|
-
export function processTmuxCommandRunner(tmuxPath = DEFAULT_TMUX_PATH) {
|
|
129
|
+
export function processTmuxCommandRunner(tmuxPath = DEFAULT_TMUX_PATH, timeoutMs = TMUX_TIMEOUT_MS) {
|
|
123
130
|
return (args) => new Promise((resolve, reject) => {
|
|
124
|
-
execFile(tmuxPath, args, {
|
|
131
|
+
execFile(tmuxPath, args, {
|
|
132
|
+
maxBuffer: 16 * 1024 * 1024, timeout: timeoutMs,
|
|
133
|
+
}, (error, stdout, stderr) => {
|
|
125
134
|
if (error && typeof error.code === "string") {
|
|
126
135
|
// 実行ファイル起動自体の失敗(ENOENT 等)のみ throw(Swift 版と同じ境界)。
|
|
127
136
|
reject(error);
|
package/dist/backend/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/backend/tmux.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/backend/tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,28 @@ export interface SubagentTailerOptions {
|
|
|
8
8
|
orphanGraceMs?: number;
|
|
9
9
|
/** 孤児判定プローブの間隔(ms)。既定 30s。 */
|
|
10
10
|
orphanProbeIntervalMs?: number;
|
|
11
|
+
/**
|
|
12
|
+
* エージェント孤児の settle に必要な「transcript 静止時間」(ms)。既定 120s。
|
|
13
|
+
* 大きな tool_use 入力のストリーミング中は transcript が無音になるため、
|
|
14
|
+
* コマンド側の猶予より長めに取る。
|
|
15
|
+
*/
|
|
16
|
+
agentOrphanGraceMs?: number;
|
|
11
17
|
/** output ファイルを開いているプロセスの有無(null=判定不能)。テスト差し替え用。 */
|
|
12
18
|
probeOutputOpen?: (filePath: string) => Promise<boolean | null>;
|
|
19
|
+
/**
|
|
20
|
+
* セッション(claude プロセス)の生存判定。テスト・上位配線の差し替え用。
|
|
21
|
+
* true=生存確定 / false=死亡確定 / null=不明(生存扱い・安全側)。
|
|
22
|
+
* lastActivityMs はセッションの transcript 群が最後に更新された時刻(不明なら null)。
|
|
23
|
+
* 既定実装は defaultProbeSessionAlive を参照。
|
|
24
|
+
*/
|
|
25
|
+
probeSessionAlive?: (sessionId: string, lastActivityMs: number | null) => Promise<boolean | null>;
|
|
26
|
+
/**
|
|
27
|
+
* 既定プローブが「argv 不一致 + transcript 静止」を死亡確定とみなす静止時間(ms)。
|
|
28
|
+
* 既定 6h。SendMessage 待機など「生きているが transcript が静かな」セッションを
|
|
29
|
+
* 誤って死亡扱いしないための余裕(実測の最長待機 ~3.8h より広い)。
|
|
30
|
+
* 誤判定しても transcript が伸びれば自動で running へ回復する。
|
|
31
|
+
*/
|
|
32
|
+
sessionStaleMs?: number;
|
|
13
33
|
}
|
|
14
34
|
/** サブエージェント meta/jsonl と親 transcript の tool_result を監視する。 */
|
|
15
35
|
export declare class SubagentTailer {
|
|
@@ -17,7 +37,10 @@ export declare class SubagentTailer {
|
|
|
17
37
|
private readonly tailIndefinitely;
|
|
18
38
|
private readonly orphanGraceMs;
|
|
19
39
|
private readonly orphanProbeIntervalMs;
|
|
40
|
+
private readonly agentOrphanGraceMs;
|
|
20
41
|
private readonly probeOutputOpen;
|
|
42
|
+
private readonly probeSessionAlive;
|
|
43
|
+
private readonly sessionStaleMs;
|
|
21
44
|
private readonly jsonlPaths;
|
|
22
45
|
private readonly outputPaths;
|
|
23
46
|
constructor(options?: SubagentTailerOptions);
|
|
@@ -28,3 +51,21 @@ export declare class SubagentTailer {
|
|
|
28
51
|
streamProjectDir(projectDir: string, preferredSessionId: string | null, newerThanMs?: number | null, signal?: AbortSignal): AsyncGenerator<ControlMessage, void, void>;
|
|
29
52
|
streamSession(mainTranscript: string, signal?: AbortSignal): AsyncGenerator<ControlMessage, void, void>;
|
|
30
53
|
}
|
|
54
|
+
/** プロセスプローブ用の execFile 差し替え口(テスト用)。 */
|
|
55
|
+
export type ProcessProbeExec = (cmd: string, args: string[], callback: (error: (Error & {
|
|
56
|
+
code?: unknown;
|
|
57
|
+
}) | null, stdout: string) => void) => void;
|
|
58
|
+
/**
|
|
59
|
+
* セッションの claude プロセス生存を判定する。
|
|
60
|
+
* 1) argv にセッション id を持つプロセスがいれば生存確定(Tailii が張る engine は
|
|
61
|
+
* `--session-id`/`--resume` で id を運ぶ)。
|
|
62
|
+
* 2) argv 不一致でも bare CLI(argv に id なし)の可能性が残るため、transcript が
|
|
63
|
+
* staleMs 以内に更新されていれば「不明」(生存扱い)。
|
|
64
|
+
* 3) argv 不一致 かつ transcript が staleMs 以上静止しているときだけ「死亡確定」。
|
|
65
|
+
* 生きているのに静かなだけのセッションを誤判定しても、transcript が伸びれば
|
|
66
|
+
* sweep マークは破棄され running へ回復する。
|
|
67
|
+
* プロセス名の照合(`lsof -c claude` 等)は使わない — macOS では CLI の comm が
|
|
68
|
+
* バージョン文字列(例 "2.1.226")になるなど環境・バージョンで壊れるため。
|
|
69
|
+
* プローブ不能(pgrep 不在・タイムアウト等)は常に「不明」= 生存扱いへ倒す。
|
|
70
|
+
*/
|
|
71
|
+
export declare function defaultProbeSessionAlive(sessionId: string, lastActivityMs: number | null, staleMs: number, exec?: ProcessProbeExec): Promise<boolean | null>;
|
|
@@ -15,7 +15,10 @@ export class SubagentTailer {
|
|
|
15
15
|
tailIndefinitely;
|
|
16
16
|
orphanGraceMs;
|
|
17
17
|
orphanProbeIntervalMs;
|
|
18
|
+
agentOrphanGraceMs;
|
|
18
19
|
probeOutputOpen;
|
|
20
|
+
probeSessionAlive;
|
|
21
|
+
sessionStaleMs;
|
|
19
22
|
jsonlPaths = new Map();
|
|
20
23
|
outputPaths = new Map();
|
|
21
24
|
constructor(options = {}) {
|
|
@@ -23,7 +26,11 @@ export class SubagentTailer {
|
|
|
23
26
|
this.tailIndefinitely = options.tailIndefinitely ?? true;
|
|
24
27
|
this.orphanGraceMs = options.orphanGraceMs ?? 60_000;
|
|
25
28
|
this.orphanProbeIntervalMs = options.orphanProbeIntervalMs ?? 30_000;
|
|
29
|
+
this.agentOrphanGraceMs = options.agentOrphanGraceMs ?? 120_000;
|
|
26
30
|
this.probeOutputOpen = options.probeOutputOpen ?? defaultProbeOutputOpen;
|
|
31
|
+
this.sessionStaleMs = options.sessionStaleMs ?? 6 * 60 * 60 * 1000;
|
|
32
|
+
this.probeSessionAlive = options.probeSessionAlive
|
|
33
|
+
?? ((sessionId, lastActivityMs) => defaultProbeSessionAlive(sessionId, lastActivityMs, this.sessionStaleMs));
|
|
27
34
|
}
|
|
28
35
|
/** 現在 tail 中の nodeId から transcript 実体を引く。 */
|
|
29
36
|
jsonlPath(nodeId) {
|
|
@@ -65,10 +72,25 @@ export class SubagentTailer {
|
|
|
65
72
|
// 通知が握り潰された背景コマンドの孤児判定(taskId → 終了扱いにした ts)。
|
|
66
73
|
const bgOrphanTsByTaskId = new Map();
|
|
67
74
|
const bgFirstSeenMsByTaskId = new Map();
|
|
75
|
+
// 通知が配達されえない背景エージェントの孤児判定(nodeId → settle 扱いにした ts)。
|
|
76
|
+
const agentOrphanTsByNodeId = new Map();
|
|
77
|
+
// 死亡セッションの一括 sweep マーク。生存へ転じたら全破棄して回復できるよう、
|
|
78
|
+
// 通常の孤児 settle とは別に持つ。
|
|
79
|
+
const deadSweepByNodeId = new Map();
|
|
80
|
+
// セッション transcript 群の最終更新(生存プローブの補助情報)。
|
|
81
|
+
let lastActivityTsMs = null;
|
|
82
|
+
// セッション(claude プロセス)の生存。false のみが「死亡確定」。null は生存扱い(安全側)。
|
|
83
|
+
let sessionAlive = null;
|
|
84
|
+
let lastSessionProbeMs = 0;
|
|
68
85
|
let lastOrphanProbeMs = 0;
|
|
69
86
|
let aggregateDirty = true;
|
|
87
|
+
let lastMetaRefreshMs = 0;
|
|
70
88
|
while (!signal?.aborted) {
|
|
71
|
-
|
|
89
|
+
// meta の stat/再読込は毎 tick やると重い(ノード数×50ms)。1秒ごとに間引く。
|
|
90
|
+
const refreshMetas = Date.now() - lastMetaRefreshMs >= 1_000;
|
|
91
|
+
if (refreshMetas)
|
|
92
|
+
lastMetaRefreshMs = Date.now();
|
|
93
|
+
if (discoverMetaFiles(subagentsDir, tracked, refreshMetas))
|
|
72
94
|
aggregateDirty = true;
|
|
73
95
|
for (const node of tracked.values()) {
|
|
74
96
|
if (node.jsonlPath !== null)
|
|
@@ -83,6 +105,7 @@ export class SubagentTailer {
|
|
|
83
105
|
if (node !== null) {
|
|
84
106
|
node.currentActivity = null;
|
|
85
107
|
node.lastJsonlTimestampMs = null;
|
|
108
|
+
node.finalReportMarker = null;
|
|
86
109
|
}
|
|
87
110
|
}
|
|
88
111
|
if (node !== null)
|
|
@@ -91,6 +114,9 @@ export class SubagentTailer {
|
|
|
91
114
|
aggregateDirty = true;
|
|
92
115
|
for (const line of read.lines) {
|
|
93
116
|
const lineTs = timestampMs(line);
|
|
117
|
+
if (lineTs !== null && (lastActivityTsMs === null || lineTs > lastActivityTsMs)) {
|
|
118
|
+
lastActivityTsMs = lineTs;
|
|
119
|
+
}
|
|
94
120
|
if (read.state.firstTimestampMs === null && lineTs !== null) {
|
|
95
121
|
read.state.firstTimestampMs = lineTs;
|
|
96
122
|
}
|
|
@@ -141,6 +167,9 @@ export class SubagentTailer {
|
|
|
141
167
|
});
|
|
142
168
|
}
|
|
143
169
|
if (node !== null) {
|
|
170
|
+
const marker = finalReportMarker(line);
|
|
171
|
+
if (marker !== null)
|
|
172
|
+
node.finalReportMarker = marker;
|
|
144
173
|
const activity = latestActivitySummary(line);
|
|
145
174
|
if (activity !== null)
|
|
146
175
|
node.currentActivity = activity;
|
|
@@ -171,34 +200,197 @@ export class SubagentTailer {
|
|
|
171
200
|
}
|
|
172
201
|
aggregateDirty = false;
|
|
173
202
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
203
|
+
const ownerOf = (node) => {
|
|
204
|
+
// meta の直接リンクを優先(forked-skill の子は transcript 相関では解決できない)。
|
|
205
|
+
const pid = node.meta.parentAgentId;
|
|
206
|
+
if (pid !== null && tracked.has(pid))
|
|
207
|
+
return pid;
|
|
208
|
+
const correlated = node.meta.toolUseId === null
|
|
209
|
+
? undefined
|
|
210
|
+
: ownerByToolUseId.get(node.meta.toolUseId);
|
|
211
|
+
// 深さ1は起動元が main(root)と確定できる(forked-skill 親もここに落ちる)。
|
|
212
|
+
return correlated ?? (node.meta.spawnDepth <= 1 ? "root" : undefined);
|
|
213
|
+
};
|
|
214
|
+
const resolveAgentStatus = (node) => {
|
|
215
|
+
const result = node.meta.toolUseId === null
|
|
216
|
+
? null
|
|
217
|
+
: resultByToolUseId.get(node.meta.toolUseId) ?? null;
|
|
178
218
|
if (result !== null && !result.asyncLaunch) {
|
|
179
219
|
// 同期実行: 親 transcript の tool_result が終了信号。
|
|
180
|
-
|
|
181
|
-
|
|
220
|
+
return {
|
|
221
|
+
status: result.isError ? "error" : "completed",
|
|
222
|
+
ts: result.ts ?? node.firstJsonlTimestampMs ?? mtimeMs(node.metaPath),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// バックグラウンド実行(または結果未着): task-notification が終了信号。
|
|
226
|
+
// 通知後に自分の transcript が伸びたら resume とみなし running へ戻す。
|
|
227
|
+
const notification = notificationByTaskId.get(node.nodeId) ?? null;
|
|
228
|
+
const resumedAfter = notification !== null && notification.ts !== null
|
|
229
|
+
&& (node.lastJsonlTimestampMs ?? 0) > notification.ts;
|
|
230
|
+
if (notification !== null && !resumedAfter) {
|
|
231
|
+
return {
|
|
232
|
+
status: notification.status === "completed" ? "completed" : "error",
|
|
233
|
+
ts: notification.ts ?? node.lastJsonlTimestampMs ?? mtimeMs(node.metaPath),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// ユーザー停止済み(TaskStop 等)。通知は残らないため meta の刻印が終了信号。
|
|
237
|
+
if (node.meta.stoppedByUser) {
|
|
238
|
+
return { status: "completed", ts: node.lastJsonlTimestampMs ?? mtimeMs(node.metaPath) };
|
|
239
|
+
}
|
|
240
|
+
// 通知が配達されえず孤児 settle 済みなら completed。settle 後に transcript が
|
|
241
|
+
// 伸びたら resume とみなしマークを破棄して running へ戻す(孤児検知で再評価される)。
|
|
242
|
+
const orphanTs = agentOrphanTsByNodeId.get(node.nodeId);
|
|
243
|
+
if (orphanTs !== undefined) {
|
|
244
|
+
if ((node.lastJsonlTimestampMs ?? 0) > orphanTs) {
|
|
245
|
+
agentOrphanTsByNodeId.delete(node.nodeId);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
return { status: "completed", ts: orphanTs };
|
|
249
|
+
}
|
|
182
250
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
&& (node.lastJsonlTimestampMs ?? 0) > notification.ts;
|
|
189
|
-
if (notification !== null && !resumedAfter) {
|
|
190
|
-
status = notification.status === "completed" ? "completed" : "error";
|
|
191
|
-
ts = notification.ts ?? node.lastJsonlTimestampMs ?? mtimeMs(node.metaPath);
|
|
251
|
+
// 死亡セッションの sweep マーク。transcript が伸びたら破棄(誤判定からの回復)。
|
|
252
|
+
const sweep = deadSweepByNodeId.get(node.nodeId);
|
|
253
|
+
if (sweep !== undefined) {
|
|
254
|
+
if ((node.lastJsonlTimestampMs ?? 0) > sweep.ts) {
|
|
255
|
+
deadSweepByNodeId.delete(node.nodeId);
|
|
192
256
|
}
|
|
193
257
|
else {
|
|
194
|
-
status
|
|
195
|
-
|
|
258
|
+
return { status: sweep.status, ts: sweep.ts };
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return { status: "running", ts: node.firstJsonlTimestampMs ?? mtimeMs(node.metaPath) };
|
|
262
|
+
};
|
|
263
|
+
const nowMs = Date.now();
|
|
264
|
+
if (nowMs - lastSessionProbeMs >= this.orphanProbeIntervalMs) {
|
|
265
|
+
lastSessionProbeMs = nowMs;
|
|
266
|
+
sessionAlive = await this.probeSessionAlive(sessionId, lastActivityTsMs);
|
|
267
|
+
}
|
|
268
|
+
// 孤児判定(エージェント): 背景エージェントの task-notification は「起動元の transcript に、
|
|
269
|
+
// 起動元が次に動くとき」に投函されるため、起動元が子より先に終端した・セッションが死んだ等で
|
|
270
|
+
// 配達が途絶えると二度と届かない。判定はセッション生存で二分する:
|
|
271
|
+
//
|
|
272
|
+
// [死亡確定 (sessionAlive === false)] このセッションの作業は何も動いていない。
|
|
273
|
+
// 静止時間が猶予を超えた running ノードを最終レポートの有無を問わず一括 settle する
|
|
274
|
+
// (中断で tool_use のまま止まった木・同期起動の孤児もここで解消する)。
|
|
275
|
+
//
|
|
276
|
+
// [生存または不明] root(main)起動のノードは settle しない — 生きている main への
|
|
277
|
+
// 通知配達は途絶えないし、SendMessage 待機中の生存エージェントを「完了」に
|
|
278
|
+
// してはならない。settle するのは「実信号(通知/同期結果/停止刻印/過去の settle)で
|
|
279
|
+
// 終端した起動元」に根ざした木だけ。条件:
|
|
280
|
+
// - 背景起動(forked-skill、または async 起動 ack 済み)だが有効な完了信号がない
|
|
281
|
+
// - 最後の message 行が「text のみの assistant」(最終レポート済み。再開注入の
|
|
282
|
+
// user 行でマーカーが倒れるため、再開直後の長考中は候補にならない)
|
|
283
|
+
// - transcript が agentOrphanGraceMs 以上静止(transcript 時刻起点なので
|
|
284
|
+
// tail 張り直し直後でも古い孤児は即 settle できる)
|
|
285
|
+
// - 直下に running かつ非候補の子(エージェント/背景コマンド)がいない(fixpoint。
|
|
286
|
+
// 子の通知で再開されうるため)
|
|
287
|
+
// - 起動元が終端済み、または「終端済みに根ざして承認された候補」(承認は終端
|
|
288
|
+
// アンカーからの伝播のみ。候補同士の相互承認では settle しないので、壊れた
|
|
289
|
+
// meta の循環参照でも誤 settle しない)
|
|
290
|
+
const agentStatusById = new Map();
|
|
291
|
+
for (const node of tracked.values())
|
|
292
|
+
agentStatusById.set(node.nodeId, resolveAgentStatus(node).status);
|
|
293
|
+
const lastActivityMs = (node) => node.lastJsonlTimestampMs ?? mtimeMs(node.jsonlPath ?? node.metaPath);
|
|
294
|
+
if (sessionAlive === false) {
|
|
295
|
+
for (const node of tracked.values()) {
|
|
296
|
+
if (agentStatusById.get(node.nodeId) !== "running")
|
|
297
|
+
continue;
|
|
298
|
+
if (deadSweepByNodeId.has(node.nodeId))
|
|
299
|
+
continue;
|
|
300
|
+
const lastTs = lastActivityMs(node);
|
|
301
|
+
if (lastTs <= 0 || nowMs - lastTs < this.agentOrphanGraceMs)
|
|
302
|
+
continue;
|
|
303
|
+
deadSweepByNodeId.set(node.nodeId, {
|
|
304
|
+
ts: lastTs,
|
|
305
|
+
// 最終レポートの形で止まっていれば完了、tool_use のまま止まっていれば中断(error)。
|
|
306
|
+
status: node.finalReportMarker === true ? "completed" : "error",
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
// 生存(または不明)へ転じたら sweep 由来のマークは全破棄する。
|
|
312
|
+
// 死亡判定が誤りだった場合の回復経路(通常の孤児 settle は保持する)。
|
|
313
|
+
if (deadSweepByNodeId.size > 0)
|
|
314
|
+
deadSweepByNodeId.clear();
|
|
315
|
+
const settleCandidates = new Set();
|
|
316
|
+
for (const node of tracked.values()) {
|
|
317
|
+
if (agentStatusById.get(node.nodeId) !== "running")
|
|
318
|
+
continue;
|
|
319
|
+
const result = node.meta.toolUseId === null
|
|
320
|
+
? null
|
|
321
|
+
: resultByToolUseId.get(node.meta.toolUseId) ?? null;
|
|
322
|
+
const backgroundLaunch = node.meta.toolUseId === null || (result !== null && result.asyncLaunch);
|
|
323
|
+
if (!backgroundLaunch)
|
|
324
|
+
continue;
|
|
325
|
+
if (node.finalReportMarker !== true)
|
|
326
|
+
continue;
|
|
327
|
+
if (node.lastJsonlTimestampMs === null)
|
|
328
|
+
continue;
|
|
329
|
+
if (nowMs - node.lastJsonlTimestampMs < this.agentOrphanGraceMs)
|
|
330
|
+
continue;
|
|
331
|
+
settleCandidates.add(node.nodeId);
|
|
332
|
+
}
|
|
333
|
+
for (;;) {
|
|
334
|
+
const blockedOwners = new Set();
|
|
335
|
+
for (const node of tracked.values()) {
|
|
336
|
+
if (agentStatusById.get(node.nodeId) !== "running")
|
|
337
|
+
continue;
|
|
338
|
+
if (settleCandidates.has(node.nodeId))
|
|
339
|
+
continue;
|
|
340
|
+
const owner = ownerOf(node);
|
|
341
|
+
if (owner !== undefined)
|
|
342
|
+
blockedOwners.add(owner);
|
|
343
|
+
}
|
|
344
|
+
for (const command of bgCommandByTaskId.values()) {
|
|
345
|
+
if (notificationByTaskId.has(command.taskId) || bgOrphanTsByTaskId.has(command.taskId))
|
|
346
|
+
continue;
|
|
347
|
+
blockedOwners.add(command.owner);
|
|
196
348
|
}
|
|
349
|
+
let changed = false;
|
|
350
|
+
for (const id of settleCandidates) {
|
|
351
|
+
if (!blockedOwners.has(id))
|
|
352
|
+
continue;
|
|
353
|
+
settleCandidates.delete(id);
|
|
354
|
+
changed = true;
|
|
355
|
+
}
|
|
356
|
+
if (!changed)
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
const approved = new Set();
|
|
360
|
+
for (;;) {
|
|
361
|
+
let changed = false;
|
|
362
|
+
for (const id of settleCandidates) {
|
|
363
|
+
if (approved.has(id))
|
|
364
|
+
continue;
|
|
365
|
+
const node = tracked.get(id);
|
|
366
|
+
if (node === undefined)
|
|
367
|
+
continue;
|
|
368
|
+
const ownerId = ownerOf(node);
|
|
369
|
+
if (ownerId === undefined || ownerId === "root")
|
|
370
|
+
continue;
|
|
371
|
+
const ownerStatus = agentStatusById.get(ownerId);
|
|
372
|
+
if (ownerStatus !== "completed" && ownerStatus !== "error" && !approved.has(ownerId))
|
|
373
|
+
continue;
|
|
374
|
+
approved.add(id);
|
|
375
|
+
changed = true;
|
|
376
|
+
}
|
|
377
|
+
if (!changed)
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
for (const id of approved) {
|
|
381
|
+
const node = tracked.get(id);
|
|
382
|
+
if (node === undefined)
|
|
383
|
+
continue;
|
|
384
|
+
agentOrphanTsByNodeId.set(id, lastActivityMs(node));
|
|
197
385
|
}
|
|
198
|
-
|
|
386
|
+
}
|
|
387
|
+
for (const node of tracked.values()) {
|
|
388
|
+
const { status, ts } = resolveAgentStatus(node);
|
|
389
|
+
const parentNodeId = ownerOf(node) ?? fallbackParent(node.meta.spawnDepth);
|
|
199
390
|
const messageNode = {
|
|
200
391
|
nodeId: node.nodeId,
|
|
201
|
-
|
|
392
|
+
// forked-skill エージェントに tool_use はない。ワイヤ上は必須 string のため空で送る。
|
|
393
|
+
toolUseId: node.meta.toolUseId ?? "",
|
|
202
394
|
parentNodeId,
|
|
203
395
|
agentType: node.meta.agentType,
|
|
204
396
|
label: node.meta.description,
|
|
@@ -213,11 +405,10 @@ export class SubagentTailer {
|
|
|
213
405
|
node.lastKey = key;
|
|
214
406
|
yield { type: "subagent_node", v: PROTOCOL_V2, node: messageNode };
|
|
215
407
|
}
|
|
216
|
-
//
|
|
217
|
-
//
|
|
408
|
+
// 孤児判定(背景コマンド): task-notification は起動元エージェントが先に終了すると
|
|
409
|
+
// 届かないまま消えることがある(完了信号の消失)。output ファイルを開いているプロセスが
|
|
218
410
|
// いなければ「終了済みなのに通知が来ない孤児」として完了へ落とす。
|
|
219
411
|
// 実行中のコマンドはシェルが output の fd を保持し続けるため誤爆しない。
|
|
220
|
-
const nowMs = Date.now();
|
|
221
412
|
if (nowMs - lastOrphanProbeMs >= this.orphanProbeIntervalMs) {
|
|
222
413
|
lastOrphanProbeMs = nowMs;
|
|
223
414
|
for (const command of bgCommandByTaskId.values()) {
|
|
@@ -277,7 +468,7 @@ export class SubagentTailer {
|
|
|
277
468
|
}
|
|
278
469
|
}
|
|
279
470
|
}
|
|
280
|
-
function discoverMetaFiles(dir, tracked) {
|
|
471
|
+
function discoverMetaFiles(dir, tracked, refreshMetas) {
|
|
281
472
|
let files;
|
|
282
473
|
try {
|
|
283
474
|
files = fs.readdirSync(dir);
|
|
@@ -298,6 +489,18 @@ function discoverMetaFiles(dir, tracked) {
|
|
|
298
489
|
existing.jsonlPath = jsonlPath;
|
|
299
490
|
changed = true;
|
|
300
491
|
}
|
|
492
|
+
// stoppedByUser は停止時に後から書き込まれるため、mtime 変化で meta を読み直す。
|
|
493
|
+
if (refreshMetas) {
|
|
494
|
+
const metaMtime = mtimeMs(existing.metaPath);
|
|
495
|
+
if (metaMtime !== existing.metaMtimeMs) {
|
|
496
|
+
existing.metaMtimeMs = metaMtime;
|
|
497
|
+
const meta = readMeta(existing.metaPath);
|
|
498
|
+
if (meta !== null) {
|
|
499
|
+
existing.meta = meta;
|
|
500
|
+
changed = true;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
301
504
|
continue;
|
|
302
505
|
}
|
|
303
506
|
const metaPath = path.join(dir, file);
|
|
@@ -308,9 +511,11 @@ function discoverMetaFiles(dir, tracked) {
|
|
|
308
511
|
nodeId,
|
|
309
512
|
meta,
|
|
310
513
|
metaPath,
|
|
514
|
+
metaMtimeMs: mtimeMs(metaPath),
|
|
311
515
|
jsonlPath: siblingJsonl(metaPath),
|
|
312
516
|
firstJsonlTimestampMs: null,
|
|
313
517
|
lastJsonlTimestampMs: null,
|
|
518
|
+
finalReportMarker: null,
|
|
314
519
|
currentActivity: null,
|
|
315
520
|
lastKey: null,
|
|
316
521
|
});
|
|
@@ -323,15 +528,16 @@ function readMeta(metaPath) {
|
|
|
323
528
|
const parsed = JSON.parse(fs.readFileSync(metaPath, "utf8"));
|
|
324
529
|
if (typeof parsed["agentType"] !== "string" ||
|
|
325
530
|
typeof parsed["description"] !== "string" ||
|
|
326
|
-
typeof parsed["toolUseId"] !== "string" ||
|
|
327
531
|
typeof parsed["spawnDepth"] !== "number") {
|
|
328
532
|
return null;
|
|
329
533
|
}
|
|
330
534
|
return {
|
|
331
535
|
agentType: parsed["agentType"],
|
|
332
536
|
description: parsed["description"],
|
|
333
|
-
toolUseId: parsed["toolUseId"],
|
|
537
|
+
toolUseId: typeof parsed["toolUseId"] === "string" ? parsed["toolUseId"] : null,
|
|
334
538
|
spawnDepth: parsed["spawnDepth"],
|
|
539
|
+
parentAgentId: typeof parsed["parentAgentId"] === "string" ? parsed["parentAgentId"] : null,
|
|
540
|
+
stoppedByUser: parsed["stoppedByUser"] === true,
|
|
335
541
|
};
|
|
336
542
|
}
|
|
337
543
|
catch {
|
|
@@ -545,6 +751,38 @@ function extractTaskNotification(line) {
|
|
|
545
751
|
ts: timestampMs(line),
|
|
546
752
|
};
|
|
547
753
|
}
|
|
754
|
+
/**
|
|
755
|
+
* message 行の「最終レポートらしさ」を返す:
|
|
756
|
+
* true = text のみの assistant 行(サブエージェントはこの形で停止する)
|
|
757
|
+
* false = それ以外の message 行(user 行・tool_use を含む assistant 行)
|
|
758
|
+
* null = message を持たない行(summary 等。判定を変えない)
|
|
759
|
+
* true のまま transcript が静止していればエージェントは停止済み。再開注入
|
|
760
|
+
* (task-notification / SendMessage)は user 行として届き false へ倒れるため、
|
|
761
|
+
* 再開直後の長考中を「最終レポート済み」と誤認しない。
|
|
762
|
+
*/
|
|
763
|
+
function finalReportMarker(line) {
|
|
764
|
+
try {
|
|
765
|
+
const obj = JSON.parse(line);
|
|
766
|
+
const message = obj["message"];
|
|
767
|
+
if (typeof message !== "object" || message === null)
|
|
768
|
+
return null;
|
|
769
|
+
const rec = message;
|
|
770
|
+
const content = rec["content"];
|
|
771
|
+
if (content === undefined || content === null)
|
|
772
|
+
return null;
|
|
773
|
+
if (rec["role"] !== "assistant")
|
|
774
|
+
return false;
|
|
775
|
+
if (typeof content === "string")
|
|
776
|
+
return true;
|
|
777
|
+
if (!Array.isArray(content))
|
|
778
|
+
return null;
|
|
779
|
+
return !content.some((block) => typeof block === "object" && block !== null
|
|
780
|
+
&& block["type"] === "tool_use");
|
|
781
|
+
}
|
|
782
|
+
catch {
|
|
783
|
+
return null;
|
|
784
|
+
}
|
|
785
|
+
}
|
|
548
786
|
function latestActivitySummary(line) {
|
|
549
787
|
const activities = extractToolActivities(messageContent(line));
|
|
550
788
|
const latest = activities.at(-1);
|
|
@@ -649,6 +887,48 @@ function probeViaLsof(filePath) {
|
|
|
649
887
|
});
|
|
650
888
|
});
|
|
651
889
|
}
|
|
890
|
+
const defaultProbeExec = (cmd, args, callback) => {
|
|
891
|
+
execFile(cmd, args, { timeout: 10_000 }, (error, stdout) => {
|
|
892
|
+
callback(error, stdout ?? "");
|
|
893
|
+
});
|
|
894
|
+
};
|
|
895
|
+
/**
|
|
896
|
+
* セッションの claude プロセス生存を判定する。
|
|
897
|
+
* 1) argv にセッション id を持つプロセスがいれば生存確定(Tailii が張る engine は
|
|
898
|
+
* `--session-id`/`--resume` で id を運ぶ)。
|
|
899
|
+
* 2) argv 不一致でも bare CLI(argv に id なし)の可能性が残るため、transcript が
|
|
900
|
+
* staleMs 以内に更新されていれば「不明」(生存扱い)。
|
|
901
|
+
* 3) argv 不一致 かつ transcript が staleMs 以上静止しているときだけ「死亡確定」。
|
|
902
|
+
* 生きているのに静かなだけのセッションを誤判定しても、transcript が伸びれば
|
|
903
|
+
* sweep マークは破棄され running へ回復する。
|
|
904
|
+
* プロセス名の照合(`lsof -c claude` 等)は使わない — macOS では CLI の comm が
|
|
905
|
+
* バージョン文字列(例 "2.1.226")になるなど環境・バージョンで壊れるため。
|
|
906
|
+
* プローブ不能(pgrep 不在・タイムアウト等)は常に「不明」= 生存扱いへ倒す。
|
|
907
|
+
*/
|
|
908
|
+
export async function defaultProbeSessionAlive(sessionId, lastActivityMs, staleMs, exec = defaultProbeExec) {
|
|
909
|
+
const byArgv = await probeArgvAlive(sessionId, exec);
|
|
910
|
+
if (byArgv === true)
|
|
911
|
+
return true;
|
|
912
|
+
if (byArgv === null)
|
|
913
|
+
return null;
|
|
914
|
+
if (lastActivityMs === null)
|
|
915
|
+
return null;
|
|
916
|
+
return Date.now() - lastActivityMs >= staleMs ? false : null;
|
|
917
|
+
}
|
|
918
|
+
/** argv にセッション id を持つプロセスの有無。true / false / null(判定不能)。 */
|
|
919
|
+
function probeArgvAlive(sessionId, exec) {
|
|
920
|
+
return new Promise((resolve) => {
|
|
921
|
+
exec("pgrep", ["-f", sessionId], (error, stdout) => {
|
|
922
|
+
if (error === null) {
|
|
923
|
+
resolve(stdout.trim().length > 0);
|
|
924
|
+
return;
|
|
925
|
+
}
|
|
926
|
+
// exit 1 = 一致なし。それ以外(pgrep 不在・タイムアウト等)は判定不能。
|
|
927
|
+
const code = error.code;
|
|
928
|
+
resolve(code === 1 ? false : null);
|
|
929
|
+
});
|
|
930
|
+
});
|
|
931
|
+
}
|
|
652
932
|
/** lsof が無い Linux 向けフォールバック。/proc/<pid>/fd を走査する。 */
|
|
653
933
|
function probeViaProcFd(filePath) {
|
|
654
934
|
let target;
|