tailii-host 0.7.0 → 0.8.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/subagentTranscript.d.ts +7 -0
- package/dist/chat/subagentTranscript.js +44 -0
- package/dist/chat/subagentTranscript.js.map +1 -1
- package/dist/chat/transcriptTailer.d.ts +18 -0
- package/dist/chat/transcriptTailer.js +194 -10
- package/dist/chat/transcriptTailer.js.map +1 -1
- package/dist/commands/launch.d.ts +58 -1
- package/dist/commands/launch.js +161 -4
- package/dist/commands/launch.js.map +1 -1
- package/dist/engine/engine.js +6 -4
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/handlers/claudeModels.js +5 -1
- package/dist/engine/handlers/claudeModels.js.map +1 -1
- package/dist/engine/handlers/conversation.js +38 -0
- package/dist/engine/handlers/conversation.js.map +1 -1
- package/dist/engine/handlers/mode.js +9 -1
- package/dist/engine/handlers/mode.js.map +1 -1
- package/dist/engine/handlers/session.js +11 -2
- package/dist/engine/handlers/session.js.map +1 -1
- package/dist/hub/hubDaemon.js +8 -2
- package/dist/hub/hubDaemon.js.map +1 -1
- package/dist/hub/panePreviewPump.d.ts +8 -0
- package/dist/hub/panePreviewPump.js +15 -0
- package/dist/hub/panePreviewPump.js.map +1 -1
- package/dist/hub/questionInjection.d.ts +12 -0
- package/dist/hub/questionInjection.js +70 -3
- package/dist/hub/questionInjection.js.map +1 -1
- package/dist/hub/sessionHub.d.ts +35 -1
- package/dist/hub/sessionHub.js +145 -4
- package/dist/hub/sessionHub.js.map +1 -1
- package/dist/protocol/decode.d.ts +4 -0
- package/dist/protocol/decode.js +54 -4
- 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 +45 -0
- package/dist/push/approvalPushNotifier.d.ts +19 -0
- package/dist/push/approvalPushNotifier.js +26 -2
- package/dist/push/approvalPushNotifier.js.map +1 -1
- package/dist/push/pushTypes.d.ts +4 -1
- package/dist/push/pushTypes.js +4 -2
- package/dist/push/pushTypes.js.map +1 -1
- package/dist/services/claudeModelCatalog.d.ts +14 -0
- package/dist/services/claudeModelCatalog.js +47 -0
- package/dist/services/claudeModelCatalog.js.map +1 -1
- package/dist/services/peerSessions.d.ts +36 -0
- package/dist/services/peerSessions.js +114 -0
- package/dist/services/peerSessions.js.map +1 -0
- package/dist/shared/clientBuild.d.ts +18 -0
- package/dist/shared/clientBuild.js +29 -2
- package/dist/shared/clientBuild.js.map +1 -1
- package/dist/shared/systemNotice.js +9 -0
- package/dist/shared/systemNotice.js.map +1 -1
- package/dist/shared/usageLimitWait.d.ts +18 -0
- package/dist/shared/usageLimitWait.js +72 -0
- package/dist/shared/usageLimitWait.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** 登録簿 1 件の正規化形。 */
|
|
2
|
+
export interface PeerSessionRecord {
|
|
3
|
+
pid: number;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
name: string;
|
|
7
|
+
/** `busy` | `idle`(不明は null)。 */
|
|
8
|
+
status: string | null;
|
|
9
|
+
kind: string | null;
|
|
10
|
+
entrypoint: string | null;
|
|
11
|
+
/** Remote Control(公式アプリ / claude.ai)にも繋がっているか(`bridgeSessionId` あり)。 */
|
|
12
|
+
bridged: boolean;
|
|
13
|
+
messagingSocketPath: string | null;
|
|
14
|
+
startedAt: number | null;
|
|
15
|
+
}
|
|
16
|
+
/** 既定の登録簿ディレクトリ。 */
|
|
17
|
+
export declare function defaultPeerSessionsDir(): string;
|
|
18
|
+
/** 登録簿 JSON 1 件を寛容に読む(必須: pid / sessionId / cwd / name)。 */
|
|
19
|
+
export declare function parsePeerSessionRecord(raw: unknown): PeerSessionRecord | null;
|
|
20
|
+
export interface PeerSessionListOptions {
|
|
21
|
+
dir?: string;
|
|
22
|
+
/** pid 生存判定(テスト注入用)。既定は `process.kill(pid, 0)`。 */
|
|
23
|
+
isPidAlive?: (pid: number) => boolean;
|
|
24
|
+
}
|
|
25
|
+
/** 生きているセッションの登録簿を列挙する(名前昇順)。読めない/壊れた件は黙って飛ばす。 */
|
|
26
|
+
export declare function listPeerSessions(options?: PeerSessionListOptions): PeerSessionRecord[];
|
|
27
|
+
/**
|
|
28
|
+
* 会話一覧の行へ「Tailii 管理外の生存インスタンス」を注記する(純関数, peer-live)。
|
|
29
|
+
* Tailii 自身が起動した claude も登録簿に載るため、`liveSessionName`(Tailii の pane)を持つ行には
|
|
30
|
+
* 付けない。同じ会話 id を複数の CLI が掴んでいる場合は Remote Control 接続を優先し、次に名前順。
|
|
31
|
+
*/
|
|
32
|
+
export declare function annotatePeerSessions<T extends {
|
|
33
|
+
sessionId: string;
|
|
34
|
+
agent?: "claude" | "codex";
|
|
35
|
+
liveSessionName?: string;
|
|
36
|
+
}>(sessions: readonly T[], peers: readonly PeerSessionRecord[]): T[];
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// peerSessions.ts
|
|
2
|
+
// tailii (TS host) — 同じマシンで生きている Claude Code セッションの登録簿(`~/.claude/sessions/<pid>.json`)
|
|
3
|
+
// を読む(peer-sessions)。cross-session messaging(`@名前` 指名 / SendMessage)の宛先候補と、
|
|
4
|
+
// 「Tailii 管理外の CLI / Remote Control が同じ会話を掴んでいる」検知(dual-instance の予防)に使う。
|
|
5
|
+
//
|
|
6
|
+
// 登録簿 1 件(Claude Code 2.1.270 実測):
|
|
7
|
+
// {"pid":23402,"sessionId":"40ef…","cwd":"/Users/…","startedAt":…,"version":"2.1.270",
|
|
8
|
+
// "kind":"interactive","entrypoint":"cli","messagingSocketPath":"/tmp/cc-socks/23402.sock",
|
|
9
|
+
// "name":"code0630-d2","nameSource":"derived","status":"busy","bridgeSessionId":"session_…"}
|
|
10
|
+
// 生存判定は pid の存在(kill 0)で行い、登録簿の残骸(異常終了)は除く。
|
|
11
|
+
import * as fs from "node:fs";
|
|
12
|
+
import * as os from "node:os";
|
|
13
|
+
import * as path from "node:path";
|
|
14
|
+
/** 既定の登録簿ディレクトリ。 */
|
|
15
|
+
export function defaultPeerSessionsDir() {
|
|
16
|
+
return path.join(os.homedir(), ".claude", "sessions");
|
|
17
|
+
}
|
|
18
|
+
/** 登録簿 JSON 1 件を寛容に読む(必須: pid / sessionId / cwd / name)。 */
|
|
19
|
+
export function parsePeerSessionRecord(raw) {
|
|
20
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
21
|
+
return null;
|
|
22
|
+
const rec = raw;
|
|
23
|
+
const pid = rec["pid"];
|
|
24
|
+
const sessionId = rec["sessionId"];
|
|
25
|
+
const cwd = rec["cwd"];
|
|
26
|
+
const name = rec["name"];
|
|
27
|
+
if (typeof pid !== "number" || !Number.isInteger(pid) || pid <= 0)
|
|
28
|
+
return null;
|
|
29
|
+
if (typeof sessionId !== "string" || sessionId.length === 0)
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof cwd !== "string" || cwd.length === 0)
|
|
32
|
+
return null;
|
|
33
|
+
if (typeof name !== "string" || name.length === 0)
|
|
34
|
+
return null;
|
|
35
|
+
const str = (key) => typeof rec[key] === "string" && rec[key].length > 0 ? rec[key] : null;
|
|
36
|
+
return {
|
|
37
|
+
pid,
|
|
38
|
+
sessionId,
|
|
39
|
+
cwd,
|
|
40
|
+
name,
|
|
41
|
+
status: str("status"),
|
|
42
|
+
kind: str("kind"),
|
|
43
|
+
entrypoint: str("entrypoint"),
|
|
44
|
+
bridged: str("bridgeSessionId") !== null,
|
|
45
|
+
messagingSocketPath: str("messagingSocketPath"),
|
|
46
|
+
startedAt: typeof rec["startedAt"] === "number" ? rec["startedAt"] : null,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function processAlive(pid) {
|
|
50
|
+
try {
|
|
51
|
+
process.kill(pid, 0);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
// EPERM = 存在するが権限なし(別ユーザー)。存在はしているので生存扱い。
|
|
56
|
+
return error.code === "EPERM";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** 生きているセッションの登録簿を列挙する(名前昇順)。読めない/壊れた件は黙って飛ばす。 */
|
|
60
|
+
export function listPeerSessions(options = {}) {
|
|
61
|
+
const dir = options.dir ?? defaultPeerSessionsDir();
|
|
62
|
+
const isAlive = options.isPidAlive ?? processAlive;
|
|
63
|
+
let entries;
|
|
64
|
+
try {
|
|
65
|
+
entries = fs.readdirSync(dir);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
const out = [];
|
|
71
|
+
for (const entry of entries) {
|
|
72
|
+
if (!/^\d+\.json$/.test(entry))
|
|
73
|
+
continue;
|
|
74
|
+
let parsed;
|
|
75
|
+
try {
|
|
76
|
+
parsed = JSON.parse(fs.readFileSync(path.join(dir, entry), "utf8"));
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const record = parsePeerSessionRecord(parsed);
|
|
82
|
+
if (record === null)
|
|
83
|
+
continue;
|
|
84
|
+
if (!isAlive(record.pid))
|
|
85
|
+
continue;
|
|
86
|
+
out.push(record);
|
|
87
|
+
}
|
|
88
|
+
return out.sort((lhs, rhs) => (lhs.name < rhs.name ? -1 : lhs.name > rhs.name ? 1 : 0));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 会話一覧の行へ「Tailii 管理外の生存インスタンス」を注記する(純関数, peer-live)。
|
|
92
|
+
* Tailii 自身が起動した claude も登録簿に載るため、`liveSessionName`(Tailii の pane)を持つ行には
|
|
93
|
+
* 付けない。同じ会話 id を複数の CLI が掴んでいる場合は Remote Control 接続を優先し、次に名前順。
|
|
94
|
+
*/
|
|
95
|
+
export function annotatePeerSessions(sessions, peers) {
|
|
96
|
+
const byConversation = new Map();
|
|
97
|
+
for (const peer of [...peers].sort((lhs, rhs) => {
|
|
98
|
+
if (lhs.bridged !== rhs.bridged)
|
|
99
|
+
return lhs.bridged ? -1 : 1;
|
|
100
|
+
return lhs.name < rhs.name ? -1 : lhs.name > rhs.name ? 1 : 0;
|
|
101
|
+
})) {
|
|
102
|
+
if (!byConversation.has(peer.sessionId))
|
|
103
|
+
byConversation.set(peer.sessionId, peer);
|
|
104
|
+
}
|
|
105
|
+
return sessions.map((session) => {
|
|
106
|
+
if ((session.agent ?? "claude") !== "claude" || session.liveSessionName !== undefined)
|
|
107
|
+
return session;
|
|
108
|
+
const peer = byConversation.get(session.sessionId);
|
|
109
|
+
if (peer === undefined)
|
|
110
|
+
return session;
|
|
111
|
+
return { ...session, peerSessionName: peer.name, ...(peer.bridged ? { peerBridged: true } : {}) };
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=peerSessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peerSessions.js","sourceRoot":"","sources":["../../src/services/peerSessions.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,wFAAwF;AACxF,4EAA4E;AAC5E,0EAA0E;AAC1E,EAAE;AACF,mCAAmC;AACnC,yFAAyF;AACzF,+FAA+F;AAC/F,gGAAgG;AAChG,4CAA4C;AAE5C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAkBlC,oBAAoB;AACpB,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,GAAG,GAAG,CAAC,GAAW,EAAiB,EAAE,CACzC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAK,GAAG,CAAC,GAAG,CAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAChG,OAAO;QACL,GAAG;QACH,SAAS;QACT,GAAG;QACH,IAAI;QACJ,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;QACrB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC;QAC7B,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI;QACxC,mBAAmB,EAAE,GAAG,CAAC,qBAAqB,CAAC;QAC/C,SAAS,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,WAAW,CAAY,CAAC,CAAC,CAAC,IAAI;KACtF,CAAC;AACJ,CAAC;AAQD,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;QAC1C,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAA2B,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;IACnD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,SAAS;QACnC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAElC,QAAsB,EAAE,KAAmC;IAC3D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,EAAE,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACtG,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACvC,OAAO,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -6,6 +6,19 @@ export interface ClientBuildRecord {
|
|
|
6
6
|
/** 記録した時刻(epoch ms)。 */
|
|
7
7
|
tsMs: number;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* この host 版がリリース時点で把握しているアプリの最新ビルド(CFBundleVersion)。
|
|
11
|
+
*
|
|
12
|
+
* 観測値(このホストへ接続してきた中で最も新しいビルド)だけを広告すると、
|
|
13
|
+
* **host が先に更新された場合に古いアプリへ何も促せない**(新しいビルドが一度も
|
|
14
|
+
* 接続していないため記録が育たない)。広告値はこのピンと観測値の新しい方を採り、
|
|
15
|
+
* どちらが先に更新されても古い側にだけ更新導線が出るようにする。
|
|
16
|
+
*
|
|
17
|
+
* **アプリの新ビルドを配布したときに上げる**。配布前に上げると、まだ入手できない
|
|
18
|
+
* ビルドへの更新を促すことになる(host のピンをアプリ側が持つ関係の裏返し。
|
|
19
|
+
* 順序は docs/host-auto-update.md を参照)。
|
|
20
|
+
*/
|
|
21
|
+
export declare const CLIENT_BUILD_PIN = "6";
|
|
9
22
|
/** 記録ファイルの既定パス(self-update の管理ルートと同じ ~/.tailii/host/ 配下)。 */
|
|
10
23
|
export declare function clientBuildRecordPath(): string;
|
|
11
24
|
/** "4" / "1.2.3" を整数タプルへ。Apple の CFBundleVersion 規約外は null。 */
|
|
@@ -24,3 +37,8 @@ export declare function recordClientBuild(info: {
|
|
|
24
37
|
clientBuild: string;
|
|
25
38
|
clientVersion?: string;
|
|
26
39
|
}, filePath?: string, nowMs?: number): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* hello で広告するビルド番号を決める(ピンと観測値の新しい方)。
|
|
42
|
+
* どちらも無い / 規約外なら null(広告しない = 誤警報より沈黙)。
|
|
43
|
+
*/
|
|
44
|
+
export declare function advertisedClientBuild(observed: string | null, pin?: string | null): string | null;
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
// アプリは channel_hello に自分の `clientVersion`(CFBundleShortVersionString, 例 "1.0.0") と
|
|
4
4
|
// `clientBuild`(CFBundleVersion, 例 "4") を載せる。host はこのホストへ接続してきた
|
|
5
5
|
// 「最も新しいビルド番号」を ~/.tailii/host/client-build.json に記録し、次回以降の
|
|
6
|
-
// channel_hello で `latestClientBuild`
|
|
7
|
-
//
|
|
6
|
+
// channel_hello で `latestClientBuild` として広告する(記録が無い / 古い間は host 版が持つ
|
|
7
|
+
// ピン CLIENT_BUILD_PIN を使う)。アプリは自分のビルド番号と比較し、より新しいビルドが
|
|
8
|
+
// あれば「アプリを更新」を促す
|
|
8
9
|
// (TestFlight 配布ではマーケティング版 1.0.0 が据え置かれたままビルド番号だけ進むため、
|
|
9
10
|
// 版文字列ではなくビルド番号で判定する)。
|
|
10
11
|
//
|
|
@@ -13,6 +14,19 @@
|
|
|
13
14
|
import fs from "node:fs";
|
|
14
15
|
import os from "node:os";
|
|
15
16
|
import path from "node:path";
|
|
17
|
+
/**
|
|
18
|
+
* この host 版がリリース時点で把握しているアプリの最新ビルド(CFBundleVersion)。
|
|
19
|
+
*
|
|
20
|
+
* 観測値(このホストへ接続してきた中で最も新しいビルド)だけを広告すると、
|
|
21
|
+
* **host が先に更新された場合に古いアプリへ何も促せない**(新しいビルドが一度も
|
|
22
|
+
* 接続していないため記録が育たない)。広告値はこのピンと観測値の新しい方を採り、
|
|
23
|
+
* どちらが先に更新されても古い側にだけ更新導線が出るようにする。
|
|
24
|
+
*
|
|
25
|
+
* **アプリの新ビルドを配布したときに上げる**。配布前に上げると、まだ入手できない
|
|
26
|
+
* ビルドへの更新を促すことになる(host のピンをアプリ側が持つ関係の裏返し。
|
|
27
|
+
* 順序は docs/host-auto-update.md を参照)。
|
|
28
|
+
*/
|
|
29
|
+
export const CLIENT_BUILD_PIN = "6";
|
|
16
30
|
/** 記録ファイルの既定パス(self-update の管理ルートと同じ ~/.tailii/host/ 配下)。 */
|
|
17
31
|
export function clientBuildRecordPath() {
|
|
18
32
|
return path.join(os.homedir(), ".tailii", "host", "client-build.json");
|
|
@@ -86,4 +100,17 @@ export function recordClientBuild(info, filePath = clientBuildRecordPath(), nowM
|
|
|
86
100
|
return false;
|
|
87
101
|
}
|
|
88
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* hello で広告するビルド番号を決める(ピンと観測値の新しい方)。
|
|
105
|
+
* どちらも無い / 規約外なら null(広告しない = 誤警報より沈黙)。
|
|
106
|
+
*/
|
|
107
|
+
export function advertisedClientBuild(observed, pin = CLIENT_BUILD_PIN) {
|
|
108
|
+
const validObserved = observed !== null && parseBuildTuple(observed) !== null ? observed : null;
|
|
109
|
+
const validPin = pin !== null && parseBuildTuple(pin) !== null ? pin : null;
|
|
110
|
+
if (validPin === null)
|
|
111
|
+
return validObserved;
|
|
112
|
+
if (validObserved === null)
|
|
113
|
+
return validPin;
|
|
114
|
+
return (compareBuild(validObserved, validPin) ?? 0) >= 0 ? validObserved : validPin;
|
|
115
|
+
}
|
|
89
116
|
//# sourceMappingURL=clientBuild.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientBuild.js","sourceRoot":"","sources":["../../src/shared/clientBuild.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,mFAAmF;AACnF,gEAAgE;AAChE,4DAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"clientBuild.js","sourceRoot":"","sources":["../../src/shared/clientBuild.ts"],"names":[],"mappings":"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"}
|
|
@@ -144,6 +144,15 @@ export function systemNoticeText(rec, ctx) {
|
|
|
144
144
|
return (`⚠️ ${fromName} は利用クレジットが必要なため、この会話は ${toName} へ切り替わりました。` +
|
|
145
145
|
`/model で変更できます。`);
|
|
146
146
|
}
|
|
147
|
+
// --- 別セッションの待機通知(SendMessage の notify_when_idle, Claude Code 2.1.236〜) ---
|
|
148
|
+
// 通知は level=notice の informational 行 `<name> is idle`(実測 2026-09-14。封筒なし)で届く。
|
|
149
|
+
// notice 級は従来一律に落としていたため、この形だけを ⇄ 注記へ転写する(cross-session)。
|
|
150
|
+
if (subtype === "informational" && level === "notice") {
|
|
151
|
+
// 形は `<name> is idle` だけを採る(`… exited` は未観測で、背景コマンドの終了文言と衝突し得る)。
|
|
152
|
+
const idle = /^(.+?) is idle$/u.exec(content);
|
|
153
|
+
if (idle !== null)
|
|
154
|
+
return `⇄ ${idle[1]} は待機状態になりました(別セッションからの通知)`;
|
|
155
|
+
}
|
|
147
156
|
// --- API エラー ---
|
|
148
157
|
// 出す条件: 初回試行 / エラー種別が直前の告知と変わった / 認証・権限・レート系 / 再試行上限。
|
|
149
158
|
// 同じエラーの再試行ごとの連投は出さない(実データ: 502 ×1 → 401 ×n。旧実装は初回だけで
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemNotice.js","sourceRoot":"","sources":["../../src/shared/systemNotice.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"systemNotice.js","sourceRoot":"","sources":["../../src/shared/systemNotice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type UsageLimitWaitState = {
|
|
2
|
+
kind: "waiting";
|
|
3
|
+
resumeAt: string | null;
|
|
4
|
+
} | {
|
|
5
|
+
kind: "resuming";
|
|
6
|
+
} | {
|
|
7
|
+
kind: "needs_enter";
|
|
8
|
+
} | {
|
|
9
|
+
kind: "stopped";
|
|
10
|
+
};
|
|
11
|
+
/** pane 全文から待機状態を読む。該当なしは null。 */
|
|
12
|
+
export declare function parseUsageLimitWait(paneText: string): UsageLimitWaitState | null;
|
|
13
|
+
/** 1 行を待機状態へ解釈する(TESTABLE)。該当なしは null。 */
|
|
14
|
+
export declare function parseUsageLimitWaitLine(line: string): UsageLimitWaitState | null;
|
|
15
|
+
/** 2 状態の同値判定(遷移検知用)。 */
|
|
16
|
+
export declare function sameUsageLimitWait(lhs: UsageLimitWaitState | null, rhs: UsageLimitWaitState | null): boolean;
|
|
17
|
+
/** 通知(push / 注記)向けの日本語 1 行。 */
|
|
18
|
+
export declare function describeUsageLimitWait(state: UsageLimitWaitState): string;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// usageLimitWait.ts
|
|
2
|
+
// tailii (TS host) — Claude Code 2.1.234+ の「使用量制限の自動再開」待機フッターの転写
|
|
3
|
+
// (純ロジック, TESTABLE, usage-limit-wait)。iOS 側 `UsageLimitWaitParser` と同じ規則。
|
|
4
|
+
//
|
|
5
|
+
// CLI は claude.ai の使用量制限に当たると、ターンを終えて(transcript には `isApiErrorMessage`
|
|
6
|
+
// の合成 assistant 行 = api_error lifecycle)入力欄の下に 1 行の待機表示を出し、リセット時刻に
|
|
7
|
+
// 固定プロンプトで作業を再開する(docs/interactive-mode「Wait for a usage limit to reset」):
|
|
8
|
+
// - `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`(待機中)
|
|
9
|
+
// - `continuing shortly` / `Usage limit reset · continuing automatically`(再開中)
|
|
10
|
+
// - `Your usage limit has reset · press enter to continue`(30 分超のスリープ後。Enter 待ち)
|
|
11
|
+
// - `Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again`
|
|
12
|
+
// pane capture の末尾数行だけを見る(本文引用に反応しない)。ANSI は念のため剥がす。
|
|
13
|
+
/** フッター探索の行数(入力欄 + ショートカット行 + 待機行が収まる十分な幅)。 */
|
|
14
|
+
const FOOTER_SCAN_LINES = 16;
|
|
15
|
+
const ANSI_PATTERN = /\u001b\[[0-9;?]*[ -/]*[@-~]/g;
|
|
16
|
+
/** pane 全文から待機状態を読む。該当なしは null。 */
|
|
17
|
+
export function parseUsageLimitWait(paneText) {
|
|
18
|
+
const lines = paneText
|
|
19
|
+
.split(/\r?\n/)
|
|
20
|
+
.map((line) => line.replace(ANSI_PATTERN, "").trim())
|
|
21
|
+
.filter((line) => line.length > 0);
|
|
22
|
+
const tail = lines.slice(-FOOTER_SCAN_LINES);
|
|
23
|
+
for (let i = tail.length - 1; i >= 0; i -= 1) {
|
|
24
|
+
const state = parseUsageLimitWaitLine(tail[i]);
|
|
25
|
+
if (state !== null)
|
|
26
|
+
return state;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
/** 1 行を待機状態へ解釈する(TESTABLE)。該当なしは null。 */
|
|
31
|
+
export function parseUsageLimitWaitLine(line) {
|
|
32
|
+
const lower = line.toLowerCase();
|
|
33
|
+
if (lower.includes("automatic continue stopped"))
|
|
34
|
+
return { kind: "stopped" };
|
|
35
|
+
if (lower.includes("usage limit") && lower.includes("press enter to continue"))
|
|
36
|
+
return { kind: "needs_enter" };
|
|
37
|
+
if (lower.includes("usage limit reset") && lower.includes("continuing"))
|
|
38
|
+
return { kind: "resuming" };
|
|
39
|
+
if (lower.includes("continuing shortly"))
|
|
40
|
+
return { kind: "resuming" };
|
|
41
|
+
if (lower.includes("usage limit") && lower.includes("continuing automatically")) {
|
|
42
|
+
const at = /continuing automatically at\s+(.+?)(?:\s+[·•・|]\s*|\s*$)/i.exec(line);
|
|
43
|
+
return { kind: "waiting", resumeAt: at !== null ? at[1].trim() : null };
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/** 2 状態の同値判定(遷移検知用)。 */
|
|
48
|
+
export function sameUsageLimitWait(lhs, rhs) {
|
|
49
|
+
if (lhs === null || rhs === null)
|
|
50
|
+
return lhs === rhs;
|
|
51
|
+
if (lhs.kind !== rhs.kind)
|
|
52
|
+
return false;
|
|
53
|
+
if (lhs.kind === "waiting" && rhs.kind === "waiting")
|
|
54
|
+
return lhs.resumeAt === rhs.resumeAt;
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
/** 通知(push / 注記)向けの日本語 1 行。 */
|
|
58
|
+
export function describeUsageLimitWait(state) {
|
|
59
|
+
switch (state.kind) {
|
|
60
|
+
case "waiting":
|
|
61
|
+
return state.resumeAt !== null
|
|
62
|
+
? `使用量制限に達しました。${state.resumeAt} に自動再開します`
|
|
63
|
+
: "使用量制限に達しました。リセット後に自動再開します";
|
|
64
|
+
case "resuming":
|
|
65
|
+
return "使用量制限がリセットされ、作業を自動再開しています";
|
|
66
|
+
case "needs_enter":
|
|
67
|
+
return "使用量制限がリセットされました。続行するには「続行」を押してください";
|
|
68
|
+
case "stopped":
|
|
69
|
+
return "使用量制限に繰り返し達したため自動再開を停止しました(/rate-limit-options)";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=usageLimitWait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usageLimitWait.js","sourceRoot":"","sources":["../../src/shared/usageLimitWait.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tailii-host",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Tailii host — control Claude Code / Codex sessions on your machine from the Tailii mobile app",
|
|
5
5
|
"author": "Namasugi",
|
|
6
6
|
"license": "MIT",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"ws": "^8.21.1"
|
|
51
51
|
},
|
|
52
52
|
"optionalDependencies": {
|
|
53
|
-
"@tailii/quic-gw-darwin-arm64": "0.
|
|
54
|
-
"@tailii/quic-gw-darwin-x64": "0.
|
|
53
|
+
"@tailii/quic-gw-darwin-arm64": "0.8.0",
|
|
54
|
+
"@tailii/quic-gw-darwin-x64": "0.8.0"
|
|
55
55
|
}
|
|
56
56
|
}
|