tailii-host 0.5.0 → 0.6.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/approval/hook.js +1 -1
- package/dist/approval/hook.js.map +1 -1
- package/dist/backend/herdr.d.ts +19 -0
- package/dist/backend/herdr.js +70 -13
- package/dist/backend/herdr.js.map +1 -1
- package/dist/backend/sessionBackend.d.ts +12 -0
- package/dist/backend/sessionBackend.js +6 -0
- package/dist/backend/sessionBackend.js.map +1 -1
- package/dist/backend/tmux.d.ts +152 -2
- package/dist/backend/tmux.js +477 -12
- package/dist/backend/tmux.js.map +1 -1
- package/dist/chat/chatTailController.d.ts +3 -1
- package/dist/chat/chatTailController.js +3 -0
- package/dist/chat/chatTailController.js.map +1 -1
- package/dist/chat/subagentTailer.d.ts +10 -0
- package/dist/chat/subagentTailer.js +215 -51
- package/dist/chat/subagentTailer.js.map +1 -1
- package/dist/chat/subagentTranscript.js +51 -5
- package/dist/chat/subagentTranscript.js.map +1 -1
- package/dist/chat/transcriptTailer.d.ts +28 -1
- package/dist/chat/transcriptTailer.js +115 -2
- package/dist/chat/transcriptTailer.js.map +1 -1
- package/dist/codex/codexNativeTurnController.js +20 -4
- package/dist/codex/codexNativeTurnController.js.map +1 -1
- package/dist/codex/codexRolloutTailer.d.ts +1 -0
- package/dist/codex/codexRolloutTailer.js +7 -0
- package/dist/codex/codexRolloutTailer.js.map +1 -1
- package/dist/codex/codexSystemNotice.d.ts +16 -0
- package/dist/codex/codexSystemNotice.js +195 -0
- package/dist/codex/codexSystemNotice.js.map +1 -0
- package/dist/engine/handlers/accountUsage.d.ts +17 -0
- package/dist/engine/handlers/accountUsage.js +40 -6
- package/dist/engine/handlers/accountUsage.js.map +1 -1
- package/dist/engine/handlers/mode.js +42 -1
- package/dist/engine/handlers/mode.js.map +1 -1
- package/dist/engine/handlers/usage.js +4 -1
- package/dist/engine/handlers/usage.js.map +1 -1
- package/dist/hub/engineRelaySocket.d.ts +3 -0
- package/dist/hub/engineRelaySocket.js +2 -1
- package/dist/hub/engineRelaySocket.js.map +1 -1
- package/dist/hub/hubDaemon.js +8 -2
- package/dist/hub/hubDaemon.js.map +1 -1
- package/dist/hub/hubProtocol.js +8 -2
- package/dist/hub/hubProtocol.js.map +1 -1
- package/dist/hub/panePreviewPump.d.ts +27 -0
- package/dist/hub/panePreviewPump.js +62 -1
- package/dist/hub/panePreviewPump.js.map +1 -1
- package/dist/hub/sessionHub.d.ts +48 -1
- package/dist/hub/sessionHub.js +165 -14
- package/dist/hub/sessionHub.js.map +1 -1
- package/dist/protocol/decode.js +14 -0
- package/dist/protocol/decode.js.map +1 -1
- package/dist/protocol/messages.d.ts +28 -0
- package/dist/services/accountIdentity.js +3 -1
- package/dist/services/accountIdentity.js.map +1 -1
- package/dist/services/officialApps.d.ts +9 -0
- package/dist/services/officialApps.js +56 -23
- package/dist/services/officialApps.js.map +1 -1
- package/dist/services/planUsageFetcher.d.ts +35 -3
- package/dist/services/planUsageFetcher.js +34 -6
- package/dist/services/planUsageFetcher.js.map +1 -1
- package/dist/sessions/claudeSessionStore.js +30 -0
- package/dist/sessions/claudeSessionStore.js.map +1 -1
- package/dist/sessions/heartbeat.d.ts +7 -1
- package/dist/sessions/heartbeat.js +3 -1
- package/dist/sessions/heartbeat.js.map +1 -1
- package/dist/sessions/sessionSearch.js +23 -5
- package/dist/sessions/sessionSearch.js.map +1 -1
- package/dist/shared/crossSession.d.ts +15 -0
- package/dist/shared/crossSession.js +75 -0
- package/dist/shared/crossSession.js.map +1 -0
- package/dist/shared/harnessReminder.d.ts +32 -0
- package/dist/shared/harnessReminder.js +124 -0
- package/dist/shared/harnessReminder.js.map +1 -0
- package/dist/shared/systemNotice.d.ts +30 -0
- package/dist/shared/systemNotice.js +209 -0
- package/dist/shared/systemNotice.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
// codexSystemNotice.ts
|
|
2
|
+
// tailii (TS host) — Codex App Server / rollout の利用者向けエラー・警告を
|
|
3
|
+
// chat_output(system) へ正規化する。live と rollout の二重経路は同じ streamId / 本文を
|
|
4
|
+
// 作り、Session Hub と iOS の双方で冪等に扱えるようにする。
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
import { PROTOCOL_V1 } from "../protocol.js";
|
|
7
|
+
const NOTICE_STREAM_PREFIX = "codex-notice-";
|
|
8
|
+
const NOTICE_DETAIL_LIMIT = 240;
|
|
9
|
+
const NOTICE_NAME_LIMIT = 80;
|
|
10
|
+
/** Codex 専用 system 注記だけを rollout/live occurrence 照合の対象にする。 */
|
|
11
|
+
export function codexSystemNoticeContentKey(payload) {
|
|
12
|
+
if (payload.type !== "chat_output" || payload.role !== "system" ||
|
|
13
|
+
!payload.streamId.startsWith(NOTICE_STREAM_PREFIX))
|
|
14
|
+
return null;
|
|
15
|
+
return `system\u0000${payload.text}`;
|
|
16
|
+
}
|
|
17
|
+
/** App Server item/completed の mcpToolCall 失敗を表示用注記へ変換する。 */
|
|
18
|
+
export function codexMcpItemErrorNotice(item) {
|
|
19
|
+
if (item["type"] !== "mcpToolCall")
|
|
20
|
+
return null;
|
|
21
|
+
const id = nonEmptyString(item["id"]);
|
|
22
|
+
if (id === null)
|
|
23
|
+
return null;
|
|
24
|
+
const error = asRecord(item["error"]);
|
|
25
|
+
const errorMessage = nonEmptyString(error?.["message"]);
|
|
26
|
+
if (item["status"] !== "failed" && errorMessage === null)
|
|
27
|
+
return null;
|
|
28
|
+
return notice(id, `mcp:${id}`, mcpErrorText(item["server"], item["tool"], errorMessage));
|
|
29
|
+
}
|
|
30
|
+
/** rollout event_msg の利用者向け error / warning を表示用注記へ変換する。 */
|
|
31
|
+
export function codexRolloutSystemNotice(payload) {
|
|
32
|
+
const kind = payload["type"];
|
|
33
|
+
if (kind === "mcp_tool_call_end") {
|
|
34
|
+
const id = nonEmptyString(payload["call_id"]);
|
|
35
|
+
if (id === null)
|
|
36
|
+
return null;
|
|
37
|
+
const result = asRecord(payload["result"]);
|
|
38
|
+
if (result === null)
|
|
39
|
+
return null;
|
|
40
|
+
const transportError = nonEmptyString(result["Err"]);
|
|
41
|
+
const toolResult = asRecord(result["Ok"]);
|
|
42
|
+
const toolReportedError = toolResult?.["isError"] === true || toolResult?.["is_error"] === true;
|
|
43
|
+
if (transportError === null && !toolReportedError)
|
|
44
|
+
return null;
|
|
45
|
+
const invocation = asRecord(payload["invocation"]);
|
|
46
|
+
const detail = transportError ?? textContent(toolResult?.["content"]);
|
|
47
|
+
return notice(id, `mcp:${id}`, mcpErrorText(invocation?.["server"], invocation?.["tool"], detail));
|
|
48
|
+
}
|
|
49
|
+
if (kind !== "error" && kind !== "stream_error" && kind !== "warning")
|
|
50
|
+
return null;
|
|
51
|
+
const message = noticeMessage(payload);
|
|
52
|
+
if (message === null)
|
|
53
|
+
return null;
|
|
54
|
+
const turnId = nonEmptyString(payload["turn_id"]) ?? "unknown-turn";
|
|
55
|
+
const attempt = nonNegativeInteger(payload["retry_attempt"]);
|
|
56
|
+
const maxRetries = nonNegativeInteger(payload["max_retries"]);
|
|
57
|
+
const retrying = kind === "stream_error" &&
|
|
58
|
+
(maxRetries === null || attempt === null || attempt < maxRetries);
|
|
59
|
+
const detail = clip(message, NOTICE_DETAIL_LIMIT);
|
|
60
|
+
const text = kind === "warning"
|
|
61
|
+
? `⚠️ Codex 警告: ${detail}`
|
|
62
|
+
: retrying
|
|
63
|
+
? `⚠️ Codex エラー(自動再試行中): ${detail}`
|
|
64
|
+
: `❌ Codex エラー: ${detail}`;
|
|
65
|
+
// 同じ stream_error の再試行は 1 件へ畳み、上限到達(retrying=false)だけ別注記にする。
|
|
66
|
+
// retry attempt を ID に含めると 502 × 10 回のような一時障害で会話が埋まってしまう。
|
|
67
|
+
const identity = `${String(kind)}:${turnId}:${retrying ? "retrying" : "terminal"}:${detail}`;
|
|
68
|
+
return notice(`rollout:${identity}`, identity, text);
|
|
69
|
+
}
|
|
70
|
+
/** App Server の item 以外の error / warning 通知を表示用注記へ変換する。 */
|
|
71
|
+
export function codexAppServerSystemNotice(method, params) {
|
|
72
|
+
if (params === null)
|
|
73
|
+
return null;
|
|
74
|
+
if (method === "error") {
|
|
75
|
+
const turnId = nonEmptyString(params["turnId"]) ?? "unknown-turn";
|
|
76
|
+
const message = turnErrorMessage(params["error"]);
|
|
77
|
+
const willRetry = params["willRetry"] === true;
|
|
78
|
+
const detail = clip(message ?? "Codex でエラーが発生しました。", NOTICE_DETAIL_LIMIT);
|
|
79
|
+
return willRetry
|
|
80
|
+
? notice(`turn-retry:${turnId}:${detail}`, `turn-retry:${turnId}:${detail}`, `⚠️ Codex エラー(自動再試行中): ${detail}`)
|
|
81
|
+
: notice(`turn-error:${turnId}`, `turn-error:${turnId}`, `❌ Codex エラー: ${detail}`);
|
|
82
|
+
}
|
|
83
|
+
if (method === "turn/completed") {
|
|
84
|
+
const turn = asRecord(params["turn"]);
|
|
85
|
+
if (turn?.["status"] !== "failed")
|
|
86
|
+
return null;
|
|
87
|
+
const turnId = nonEmptyString(turn["id"]) ?? "unknown-turn";
|
|
88
|
+
const detail = clip(turnErrorMessage(turn["error"]) ?? "ターンを完了できませんでした。", NOTICE_DETAIL_LIMIT);
|
|
89
|
+
return notice(`turn-error:${turnId}`, `turn-error:${turnId}`, `❌ Codex エラー: ${detail}`);
|
|
90
|
+
}
|
|
91
|
+
if (method === "mcpServer/startupStatus/updated") {
|
|
92
|
+
if (params["status"] !== "failed")
|
|
93
|
+
return null;
|
|
94
|
+
const name = clip(nonEmptyString(params["name"]) ?? "不明", NOTICE_NAME_LIMIT);
|
|
95
|
+
const detail = nonEmptyString(params["error"])
|
|
96
|
+
?? (params["failureReason"] === "reauthenticationRequired"
|
|
97
|
+
? "再認証が必要です。"
|
|
98
|
+
: "起動できませんでした。");
|
|
99
|
+
const text = `❌ MCP サーバー「${name}」の起動に失敗しました: ${clip(detail, NOTICE_DETAIL_LIMIT)}`;
|
|
100
|
+
return notice(`mcp-startup:${name}:${detail}`, `mcp-startup:${name}:${detail}`, text);
|
|
101
|
+
}
|
|
102
|
+
if (method === "mcpServer/oauthLogin/completed" && params["success"] === false) {
|
|
103
|
+
const name = clip(nonEmptyString(params["name"]) ?? "不明", NOTICE_NAME_LIMIT);
|
|
104
|
+
const detail = clip(nonEmptyString(params["error"]) ?? "ログインできませんでした。", NOTICE_DETAIL_LIMIT);
|
|
105
|
+
return notice(`mcp-login:${name}:${detail}`, `mcp-login:${name}:${detail}`, `❌ MCP サーバー「${name}」のログインに失敗しました: ${detail}`);
|
|
106
|
+
}
|
|
107
|
+
if (method === "warning" || method === "guardianWarning") {
|
|
108
|
+
const message = nonEmptyString(params["message"]);
|
|
109
|
+
if (message === null)
|
|
110
|
+
return null;
|
|
111
|
+
const detail = clip(message, NOTICE_DETAIL_LIMIT);
|
|
112
|
+
const label = method === "guardianWarning" ? "Codex セキュリティ警告" : "Codex 警告";
|
|
113
|
+
return notice(`${method}:${detail}`, `${method}:${detail}`, `⚠️ ${label}: ${detail}`);
|
|
114
|
+
}
|
|
115
|
+
if (method === "configWarning" || method === "deprecationNotice") {
|
|
116
|
+
const summary = nonEmptyString(params["summary"]);
|
|
117
|
+
if (summary === null)
|
|
118
|
+
return null;
|
|
119
|
+
const details = nonEmptyString(params["details"]);
|
|
120
|
+
const body = clip(details === null ? summary : `${summary} — ${details}`, NOTICE_DETAIL_LIMIT);
|
|
121
|
+
const label = method === "configWarning" ? "Codex 設定警告" : "Codex 非推奨機能";
|
|
122
|
+
return notice(`${method}:${body}`, `${method}:${body}`, `⚠️ ${label}: ${body}`);
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
function mcpErrorText(serverValue, toolValue, detailValue) {
|
|
127
|
+
const server = clip(nonEmptyString(serverValue) ?? "不明", NOTICE_NAME_LIMIT);
|
|
128
|
+
const tool = clip(nonEmptyString(toolValue) ?? "不明", NOTICE_NAME_LIMIT);
|
|
129
|
+
const detail = clip(detailValue ?? "ツールがエラーを返しました。", NOTICE_DETAIL_LIMIT);
|
|
130
|
+
return `❌ MCP「${server} / ${tool}」エラー: ${detail}`;
|
|
131
|
+
}
|
|
132
|
+
function notice(itemId, identity, text) {
|
|
133
|
+
const digest = createHash("sha256").update(identity).digest("hex").slice(0, 24);
|
|
134
|
+
return {
|
|
135
|
+
itemId,
|
|
136
|
+
payload: {
|
|
137
|
+
type: "chat_output",
|
|
138
|
+
v: PROTOCOL_V1,
|
|
139
|
+
streamId: `${NOTICE_STREAM_PREFIX}${digest}`,
|
|
140
|
+
role: "system",
|
|
141
|
+
text,
|
|
142
|
+
eof: true,
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function noticeMessage(payload) {
|
|
147
|
+
const direct = nonEmptyString(payload["message"]) ?? nonEmptyString(payload["content"]);
|
|
148
|
+
if (direct !== null)
|
|
149
|
+
return direct;
|
|
150
|
+
return turnErrorMessage(payload["error"]);
|
|
151
|
+
}
|
|
152
|
+
function turnErrorMessage(value) {
|
|
153
|
+
if (typeof value === "string")
|
|
154
|
+
return value.trim().length > 0 ? value : null;
|
|
155
|
+
const error = asRecord(value);
|
|
156
|
+
if (error === null)
|
|
157
|
+
return null;
|
|
158
|
+
const message = nonEmptyString(error["message"]);
|
|
159
|
+
const additional = nonEmptyString(error["additionalDetails"]);
|
|
160
|
+
if (message === null)
|
|
161
|
+
return additional;
|
|
162
|
+
if (additional === null || message.includes(additional))
|
|
163
|
+
return message;
|
|
164
|
+
return `${message} — ${additional}`;
|
|
165
|
+
}
|
|
166
|
+
function textContent(value) {
|
|
167
|
+
if (!Array.isArray(value))
|
|
168
|
+
return null;
|
|
169
|
+
const parts = value.flatMap((entry) => {
|
|
170
|
+
if (typeof entry === "string" && entry.trim().length > 0)
|
|
171
|
+
return [entry];
|
|
172
|
+
const record = asRecord(entry);
|
|
173
|
+
const text = nonEmptyString(record?.["text"]);
|
|
174
|
+
return text === null ? [] : [text];
|
|
175
|
+
});
|
|
176
|
+
return parts.length > 0 ? parts.join("\n") : null;
|
|
177
|
+
}
|
|
178
|
+
/** 改行を 1 段落へ畳み、Unicode scalar 単位で切り詰める。 */
|
|
179
|
+
function clip(text, limit) {
|
|
180
|
+
const flat = text.replace(/\s*\n\s*/g, " ").trim();
|
|
181
|
+
const characters = [...flat];
|
|
182
|
+
return characters.length <= limit ? flat : characters.slice(0, limit).join("") + "…";
|
|
183
|
+
}
|
|
184
|
+
function nonEmptyString(value) {
|
|
185
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
186
|
+
}
|
|
187
|
+
function nonNegativeInteger(value) {
|
|
188
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : null;
|
|
189
|
+
}
|
|
190
|
+
function asRecord(value) {
|
|
191
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
192
|
+
? value
|
|
193
|
+
: null;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=codexSystemNotice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codexSystemNotice.js","sourceRoot":"","sources":["../../src/codex/codexSystemNotice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import type { ClaudeAccountUsage, CodexAccountUsage } from "../../protocol/messages.js";
|
|
2
|
+
import { type PlanUsageFailure } from "../../services/planUsageFetcher.js";
|
|
2
3
|
import type { HandlerRegistry } from "../context.js";
|
|
3
4
|
/** Claude 側 TTL(ms)。使用量 API は分解能が粗く、2 分で十分新しい。 */
|
|
4
5
|
export declare const CLAUDE_ACCOUNT_USAGE_TTL_MS = 120000;
|
|
5
6
|
/** Codex 側 TTL(ms)。App Server 経由なので Claude より短くできる。 */
|
|
6
7
|
export declare const CODEX_ACCOUNT_USAGE_TTL_MS = 60000;
|
|
8
|
+
/**
|
|
9
|
+
* Claude が `login_required`(候補ゼロ / 全候補 401)で失敗したときだけ使う短い TTL(ms)。
|
|
10
|
+
* `/login` し直しの直後にシートを更新して復旧を見せるため。通信断(unavailable)や Codex の
|
|
11
|
+
* 失敗は従来 TTL のまま(オフライン中に 15s ごとに候補×5s timeout や App Server 起動試行を
|
|
12
|
+
* 繰り返すと、アプリの RPC timeout 12s に対して応答が遅れる)。
|
|
13
|
+
*/
|
|
14
|
+
export declare const ACCOUNT_USAGE_FAILURE_TTL_MS = 15000;
|
|
7
15
|
/** Claude 側の取得失敗時に返す理由文(iOS はこれをそのままカードへ出す)。 */
|
|
8
16
|
export declare const CLAUDE_ACCOUNT_USAGE_ERROR = "Claude \u306E\u4F7F\u7528\u91CF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08OAuth \u30C8\u30FC\u30AF\u30F3\u7121\u52B9\u307E\u305F\u306F\u30AA\u30D5\u30E9\u30A4\u30F3\uFF09\u3002";
|
|
17
|
+
/**
|
|
18
|
+
* Claude のログインが切れている(候補ゼロ・全候補 401)ときの理由文。
|
|
19
|
+
* 「トークン無効またはオフライン」の二択を利用者に押し付けず、復旧手順(会話で /login)まで示す。
|
|
20
|
+
*/
|
|
21
|
+
export declare const CLAUDE_ACCOUNT_USAGE_LOGIN_REQUIRED = "Claude \u306E\u30ED\u30B0\u30A4\u30F3\u304C\u5207\u308C\u3066\u3044\u307E\u3059\u3002\u4F1A\u8A71\u3067 /login \u3092\u5B9F\u884C\u3057\u3066\u30ED\u30B0\u30A4\u30F3\u3057\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
9
22
|
/** Codex 側の取得失敗時に返す理由文。 */
|
|
10
23
|
export declare const CODEX_ACCOUNT_USAGE_ERROR = "Codex \u306E\u4F7F\u7528\u91CF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08Codex App Server \u306B\u63A5\u7D9A\u3067\u304D\u307E\u305B\u3093\uFF09\u3002";
|
|
11
24
|
export interface AccountUsageHandlerOptions {
|
|
@@ -13,7 +26,11 @@ export interface AccountUsageHandlerOptions {
|
|
|
13
26
|
now?: () => number;
|
|
14
27
|
claudeTtlMs?: number;
|
|
15
28
|
codexTtlMs?: number;
|
|
29
|
+
/** 失敗エントリの TTL(既定 ACCOUNT_USAGE_FAILURE_TTL_MS)。 */
|
|
30
|
+
failureTtlMs?: number;
|
|
16
31
|
}
|
|
32
|
+
/** Claude 側の失敗理由文(分類に応じて出し分け)。 */
|
|
33
|
+
export declare function claudeAccountUsageErrorText(failure: PlanUsageFailure | null): string;
|
|
17
34
|
/**
|
|
18
35
|
* account_usage ハンドラを作る。TTL メモを閉包に持つため、テストは独自インスタンスを
|
|
19
36
|
* 生成して互いに干渉させない(ENGINE_HANDLERS 側は engine プロセス全体で 1 つを共有する)。
|
|
@@ -10,14 +10,40 @@
|
|
|
10
10
|
// - agent 別 TTL メモを持ち、シートの連打で外部 API を叩かない。TTL 内は前回値を返し、
|
|
11
11
|
// `fetchedAt` は実際に取得した時刻のまま(最も古い方)を載せる — 表示が「いつの値か」で嘘をつかない。
|
|
12
12
|
// - 成功だけでなく失敗もキャッシュする(TTL の目的が外部 API の保護なので、失敗連打も止める)。
|
|
13
|
+
import { isPlanUsageFailure } from "../../services/planUsageFetcher.js";
|
|
13
14
|
/** Claude 側 TTL(ms)。使用量 API は分解能が粗く、2 分で十分新しい。 */
|
|
14
15
|
export const CLAUDE_ACCOUNT_USAGE_TTL_MS = 120_000;
|
|
15
16
|
/** Codex 側 TTL(ms)。App Server 経由なので Claude より短くできる。 */
|
|
16
17
|
export const CODEX_ACCOUNT_USAGE_TTL_MS = 60_000;
|
|
18
|
+
/**
|
|
19
|
+
* Claude が `login_required`(候補ゼロ / 全候補 401)で失敗したときだけ使う短い TTL(ms)。
|
|
20
|
+
* `/login` し直しの直後にシートを更新して復旧を見せるため。通信断(unavailable)や Codex の
|
|
21
|
+
* 失敗は従来 TTL のまま(オフライン中に 15s ごとに候補×5s timeout や App Server 起動試行を
|
|
22
|
+
* 繰り返すと、アプリの RPC timeout 12s に対して応答が遅れる)。
|
|
23
|
+
*/
|
|
24
|
+
export const ACCOUNT_USAGE_FAILURE_TTL_MS = 15_000;
|
|
17
25
|
/** Claude 側の取得失敗時に返す理由文(iOS はこれをそのままカードへ出す)。 */
|
|
18
26
|
export const CLAUDE_ACCOUNT_USAGE_ERROR = "Claude の使用量を取得できませんでした(OAuth トークン無効またはオフライン)。";
|
|
27
|
+
/**
|
|
28
|
+
* Claude のログインが切れている(候補ゼロ・全候補 401)ときの理由文。
|
|
29
|
+
* 「トークン無効またはオフライン」の二択を利用者に押し付けず、復旧手順(会話で /login)まで示す。
|
|
30
|
+
*/
|
|
31
|
+
export const CLAUDE_ACCOUNT_USAGE_LOGIN_REQUIRED = "Claude のログインが切れています。会話で /login を実行してログインし直してください。";
|
|
19
32
|
/** Codex 側の取得失敗時に返す理由文。 */
|
|
20
33
|
export const CODEX_ACCOUNT_USAGE_ERROR = "Codex の使用量を取得できませんでした(Codex App Server に接続できません)。";
|
|
34
|
+
/** キャッシュが TTL 内か(`login_required` の失敗エントリだけ短い failureTtlMs で判定する)。 */
|
|
35
|
+
function cacheFresh(entry, nowMs, successTtlMs, failureTtlMs) {
|
|
36
|
+
if (entry === null)
|
|
37
|
+
return false;
|
|
38
|
+
const ttl = entry.value === null && entry.failure === "login_required" ? failureTtlMs : successTtlMs;
|
|
39
|
+
return nowMs - entry.atMs < ttl;
|
|
40
|
+
}
|
|
41
|
+
/** Claude 側の失敗理由文(分類に応じて出し分け)。 */
|
|
42
|
+
export function claudeAccountUsageErrorText(failure) {
|
|
43
|
+
return failure === "login_required"
|
|
44
|
+
? CLAUDE_ACCOUNT_USAGE_LOGIN_REQUIRED
|
|
45
|
+
: CLAUDE_ACCOUNT_USAGE_ERROR;
|
|
46
|
+
}
|
|
21
47
|
/**
|
|
22
48
|
* Claude usage が同じ OAuth token で account 解決を試みた印。
|
|
23
49
|
* non-enumerable Symbol は JSON に出ず、dropExpiredWindows が加工後のコピーへ明示継承する。
|
|
@@ -31,25 +57,33 @@ export function createAccountUsageHandlers(options = {}) {
|
|
|
31
57
|
const now = options.now ?? (() => Date.now());
|
|
32
58
|
const claudeTtlMs = options.claudeTtlMs ?? CLAUDE_ACCOUNT_USAGE_TTL_MS;
|
|
33
59
|
const codexTtlMs = options.codexTtlMs ?? CODEX_ACCOUNT_USAGE_TTL_MS;
|
|
60
|
+
const failureTtlMs = options.failureTtlMs ?? ACCOUNT_USAGE_FAILURE_TTL_MS;
|
|
34
61
|
let claudeCache = null;
|
|
35
62
|
let codexCache = null;
|
|
36
63
|
async function loadClaude(ctx) {
|
|
37
64
|
const at = now();
|
|
38
|
-
if (claudeCache
|
|
65
|
+
if (cacheFresh(claudeCache, at, claudeTtlMs, failureTtlMs))
|
|
39
66
|
return claudeCache;
|
|
40
67
|
let value = null;
|
|
68
|
+
let failure = null;
|
|
41
69
|
try {
|
|
42
|
-
|
|
70
|
+
const result = await ctx.planUsage();
|
|
71
|
+
if (isPlanUsageFailure(result)) {
|
|
72
|
+
failure = result.failure;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
value = toClaudeAccountUsage(result);
|
|
76
|
+
}
|
|
43
77
|
}
|
|
44
78
|
catch {
|
|
45
79
|
value = null;
|
|
46
80
|
}
|
|
47
|
-
claudeCache = { atMs: at, value };
|
|
81
|
+
claudeCache = { atMs: at, value, failure };
|
|
48
82
|
return claudeCache;
|
|
49
83
|
}
|
|
50
84
|
async function loadCodex(ctx) {
|
|
51
85
|
const at = now();
|
|
52
|
-
if (codexCache
|
|
86
|
+
if (cacheFresh(codexCache, at, codexTtlMs, failureTtlMs))
|
|
53
87
|
return codexCache;
|
|
54
88
|
let value = null;
|
|
55
89
|
try {
|
|
@@ -58,7 +92,7 @@ export function createAccountUsageHandlers(options = {}) {
|
|
|
58
92
|
catch {
|
|
59
93
|
value = null;
|
|
60
94
|
}
|
|
61
|
-
codexCache = { atMs: at, value };
|
|
95
|
+
codexCache = { atMs: at, value, failure: null };
|
|
62
96
|
return codexCache;
|
|
63
97
|
}
|
|
64
98
|
/**
|
|
@@ -108,7 +142,7 @@ export function createAccountUsageHandlers(options = {}) {
|
|
|
108
142
|
id: message.id,
|
|
109
143
|
...(claudeValue !== null
|
|
110
144
|
? { claude: claudeValue }
|
|
111
|
-
: { claudeError:
|
|
145
|
+
: { claudeError: claudeAccountUsageErrorText(claude.failure) }),
|
|
112
146
|
...(codexValue !== null
|
|
113
147
|
? { codex: codexValue }
|
|
114
148
|
: { codexError: CODEX_ACCOUNT_USAGE_ERROR }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accountUsage.js","sourceRoot":"","sources":["../../../src/engine/handlers/accountUsage.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,qEAAqE;AACrE,iEAAiE;AACjE,uBAAuB;AACvB,EAAE;AACF,MAAM;AACN,6CAA6C;AAC7C,gEAAgE;AAChE,oDAAoD;AACpD,0DAA0D;AAC1D,gEAAgE;AAChE,yDAAyD;
|
|
1
|
+
{"version":3,"file":"accountUsage.js","sourceRoot":"","sources":["../../../src/engine/handlers/accountUsage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// Codex TUI 番号付きダイアログへの選択返送(pane_choice_send)。
|
|
4
4
|
import { parsePermissionMode } from "../../shared/permissionMode.js";
|
|
5
5
|
import { sleep } from "../../shared/sleep.js";
|
|
6
|
-
import {
|
|
6
|
+
import { loginCodeErrorMessage } from "../../backend/tmux.js";
|
|
7
|
+
import { engineDiag, writeError, } from "../context.js";
|
|
7
8
|
export const modeHandlers = {
|
|
8
9
|
mode_get: async (message, ctx) => {
|
|
9
10
|
const { writer, state, sessionManager } = ctx;
|
|
@@ -107,7 +108,47 @@ export const modeHandlers = {
|
|
|
107
108
|
});
|
|
108
109
|
}
|
|
109
110
|
},
|
|
111
|
+
login_code_send: async (message, ctx) => {
|
|
112
|
+
// 結果確定まで最大 ~10s 待つ(OAuth 交換の待ち)。engine の read loop は handler を直列 await
|
|
113
|
+
// するため、ここで待つと chat_send / interrupt / pane_preview が全部止まる。起動だけして
|
|
114
|
+
// 応答は非同期に write する(writer は直列化済み)。
|
|
115
|
+
void runLoginCodeSend(message, ctx);
|
|
116
|
+
},
|
|
110
117
|
};
|
|
118
|
+
async function runLoginCodeSend(message, ctx) {
|
|
119
|
+
{
|
|
120
|
+
const { writer, state, sessionManager } = ctx;
|
|
121
|
+
const v = state.negotiatedVersion;
|
|
122
|
+
// `/login` の OAuth コードをコード入力待ちの画面へ渡す(login-code)。通常の chat 注入は
|
|
123
|
+
// 入力欄検証・C-u クリアでコード欄を壊すため、backend の専用経路(literal + Enter)で送る。
|
|
124
|
+
// コードは一度きりの認可コードなので diag ログには長さだけ載せる。
|
|
125
|
+
engineDiag(`login_code_send id=${message.id} session=${message.session} len=${message.code.length}`);
|
|
126
|
+
if (!LOGIN_CODE_PATTERN.test(message.code)) {
|
|
127
|
+
writer.write({
|
|
128
|
+
type: "login_code_send_result", v, id: message.id,
|
|
129
|
+
ok: false, error: "ログインコードの形式が不正です",
|
|
130
|
+
});
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
await sessionManager.sendLoginCode(message.session, message.code);
|
|
135
|
+
writer.write({ type: "login_code_send_result", v, id: message.id, ok: true, error: null });
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// backend の生エラー(tmux の args 等)はコード本文を含みうるので、ログにも応答にも
|
|
139
|
+
// 利用者向け文言だけを載せる。
|
|
140
|
+
const text = loginCodeErrorMessage(error);
|
|
141
|
+
engineDiag(`login_code_send 失敗 id=${message.id}: ${text}`);
|
|
142
|
+
writer.write({ type: "login_code_send_result", v, id: message.id, ok: false, error: text });
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* login_code_send が受理するコード形式。書式は Claude Code 側の仕様(手動コールバックの
|
|
148
|
+
* `<code>#<state>`)で host が握っていないため文字種を狭めず、literal 送出で危険な
|
|
149
|
+
* 空白・改行・制御文字(ESC 等)だけを落とす(印字可能 ASCII のみ、512 文字以内)。
|
|
150
|
+
*/
|
|
151
|
+
const LOGIN_CODE_PATTERN = /^[\x21-\x7e]{1,512}$/;
|
|
111
152
|
/**
|
|
112
153
|
* pane_key_send が受理する制御キー(tmux 互換キー名)。テキスト注入経路には使わせない。
|
|
113
154
|
* Up/Down/Enter は Claude TUI の選択ダイアログ(/remote-control 等)の転写カードから
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../../src/engine/handlers/mode.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,uDAAuD;AACvD,+CAA+C;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../../src/engine/handlers/mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import * as path from "node:path";
|
|
|
6
6
|
import { CodexRolloutTailer } from "../../codex/codexRolloutTailer.js";
|
|
7
7
|
import { aggregateCodexUsage } from "../../codex/codexUsage.js";
|
|
8
8
|
import { claudeProjectSlug } from "../../shared/paths.js";
|
|
9
|
+
import { isPlanUsageFailure } from "../../services/planUsageFetcher.js";
|
|
9
10
|
import { aggregateUsage, emptyUsageTotals } from "../../services/usageAggregator.js";
|
|
10
11
|
import { TranscriptTailer } from "../../chat/transcriptTailer.js";
|
|
11
12
|
export const usageHandlers = {
|
|
@@ -65,7 +66,9 @@ export const usageHandlers = {
|
|
|
65
66
|
const currentMeta = ctx.activeChatSession.name === null ? null : metadataStore?.get(ctx.activeChatSession.name) ?? null;
|
|
66
67
|
const transcript = currentMeta === null ? null : TranscriptTailer.resolveJsonl(path.join(os.homedir(), ".claude", "projects", claudeProjectSlug(currentMeta.cwd)), currentMeta.providerSessionId ?? currentMeta.claudeSessionId ?? null, null);
|
|
67
68
|
const totals = transcript !== null ? aggregateUsage(transcript) : emptyUsageTotals();
|
|
68
|
-
|
|
69
|
+
// 会話スコープの usage_response は plan 系フィールドを省略するだけ(理由文は account_usage が担う)。
|
|
70
|
+
const planResult = await ctx.planUsage();
|
|
71
|
+
const plan = isPlanUsageFailure(planResult) ? null : planResult;
|
|
69
72
|
try {
|
|
70
73
|
writer.write({
|
|
71
74
|
type: "usage_response",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/engine/handlers/usage.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/engine/handlers/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,14 @@ export type RemotePendingMessage = {
|
|
|
19
19
|
* protocol.ts には載せない。iOS へは転送しない)。
|
|
20
20
|
* - active: UserPromptSubmit / PreToolUse / PostToolUse(ハートビート)
|
|
21
21
|
* - done: Stop(応答完了)
|
|
22
|
+
* - event: 発火した hook 名(任意)。Hub は UserPromptSubmit だけをターン開始の権威とし、
|
|
23
|
+
* Pre/PostToolUse は継続(中断直後の遅着は残響として無視)と解釈する。旧 hook は省略。
|
|
22
24
|
*/
|
|
23
25
|
export type SessionProcessingMessage = {
|
|
24
26
|
type: "session_processing";
|
|
25
27
|
session: string;
|
|
26
28
|
state: "active" | "done";
|
|
29
|
+
event?: string;
|
|
27
30
|
};
|
|
28
31
|
/**
|
|
29
32
|
* hook → engine の AskUserQuestion ライフサイクル通知(host 内部 IPC 専用。ワイヤープロトコル外)。
|
|
@@ -74,7 +74,8 @@ function decodeEngineRelayLine(line) {
|
|
|
74
74
|
const session = record["session"];
|
|
75
75
|
const state = record["state"];
|
|
76
76
|
if (typeof session === "string" && session.length > 0 && (state === "active" || state === "done")) {
|
|
77
|
-
|
|
77
|
+
const event = record["event"];
|
|
78
|
+
return { type: "session_processing", session, state, ...(typeof event === "string" ? { event } : {}) };
|
|
78
79
|
}
|
|
79
80
|
return null;
|
|
80
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engineRelaySocket.js","sourceRoot":"","sources":["../../src/hub/engineRelaySocket.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,4EAA4E;AAE5E,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"engineRelaySocket.js","sourceRoot":"","sources":["../../src/hub/engineRelaySocket.ts"],"names":[],"mappings":"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"}
|
package/dist/hub/hubDaemon.js
CHANGED
|
@@ -19,7 +19,8 @@ import { SessionHub } from "./sessionHub.js";
|
|
|
19
19
|
import { SessionMetadataStore } from "../sessions/sessionMetadataStore.js";
|
|
20
20
|
import { abortableSleep } from "../shared/sleep.js";
|
|
21
21
|
import { resolveHubSocketPath } from "../shared/socketPath.js";
|
|
22
|
-
import { processTmuxCommandRunner } from "../backend/tmux.js";
|
|
22
|
+
import { processTmuxCommandRunner, screenInLoginFlow } from "../backend/tmux.js";
|
|
23
|
+
import { screenHasSelectionFooter } from "../backend/herdr.js";
|
|
23
24
|
import { readPackageVersion } from "../shared/version.js";
|
|
24
25
|
import { ChatTailController } from "../chat/chatTailController.js";
|
|
25
26
|
import { TranscriptTailer } from "../chat/transcriptTailer.js";
|
|
@@ -374,20 +375,25 @@ export async function runHubCommand(args) {
|
|
|
374
375
|
pendingQuestionsPath: defaultPendingQuestionsPath(),
|
|
375
376
|
chatReceiptsPath: defaultChatReceiptsPath(),
|
|
376
377
|
log,
|
|
377
|
-
tailFactory: (write, onCodexTurnLifecycle) => new ChatTailController({
|
|
378
|
+
tailFactory: (write, onCodexTurnLifecycle, onClaudeTurnLifecycle) => new ChatTailController({
|
|
378
379
|
writer: controlMessageCallbackWriter(write),
|
|
379
380
|
tailer: new TranscriptTailer({ tailIndefinitely: true, emitReplayDoneMarker: true }),
|
|
380
381
|
projectsRoot: path.join(os.homedir(), ".claude", "projects"),
|
|
381
382
|
imageService,
|
|
382
383
|
protocolVersion: () => PROTOCOL_MAX_SUPPORTED,
|
|
383
384
|
onCodexTurnLifecycle,
|
|
385
|
+
onClaudeTurnLifecycle,
|
|
384
386
|
}),
|
|
385
387
|
previewPumpFactory: (write, onPermissionMode, pollIntervalMs) => new PanePreviewPump({
|
|
386
388
|
writer: controlMessageCallbackWriter(write),
|
|
387
389
|
capture: (session) => sessionBackend.capturePane(session, { lines: 60, joinWrappedLines: true }),
|
|
390
|
+
// プロンプト提案(薄字ゴースト)抽出用の viewport ANSI キャプチャ(prompt-suggestion-chip)。
|
|
391
|
+
captureSuggestion: (session) => sessionBackend.captureVisibleAnsi(session),
|
|
388
392
|
onPermissionMode,
|
|
389
393
|
...(pollIntervalMs !== undefined ? { pollIntervalMs } : {}),
|
|
390
394
|
log,
|
|
395
|
+
// 静止した入力待ちダイアログ(選択 / /login)は初回フレームから送る(開き直しで転写カードを出す)。
|
|
396
|
+
emitInitialIf: (text) => screenHasSelectionFooter(text) || screenInLoginFlow(text),
|
|
391
397
|
}),
|
|
392
398
|
questionInjector: (answers, session) => injectQuestionAnswers(answers, session, sessionBackend),
|
|
393
399
|
// 本文+送信確定は backend 側の 1 操作に委ねる(herdr は本文+CR 単一コール必須。
|