tailii-host 0.13.0 → 0.15.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/backend/tmux.d.ts +40 -0
- package/dist/backend/tmux.js +147 -7
- package/dist/backend/tmux.js.map +1 -1
- package/dist/chat/chatTailController.js +2 -1
- package/dist/chat/chatTailController.js.map +1 -1
- package/dist/chat/subagentTailer.js +20 -5
- package/dist/chat/subagentTailer.js.map +1 -1
- package/dist/chat/subagentTranscript.js +29 -0
- package/dist/chat/subagentTranscript.js.map +1 -1
- package/dist/chat/transcriptTailer.d.ts +13 -1
- package/dist/chat/transcriptTailer.js +113 -2
- package/dist/chat/transcriptTailer.js.map +1 -1
- package/dist/codex/codexAppServer.d.ts +9 -2
- package/dist/codex/codexAppServer.js +34 -5
- package/dist/codex/codexAppServer.js.map +1 -1
- package/dist/codex/codexAsyncQuestion.d.ts +53 -0
- package/dist/codex/codexAsyncQuestion.js +186 -0
- package/dist/codex/codexAsyncQuestion.js.map +1 -0
- package/dist/codex/codexMessagePhase.d.ts +16 -0
- package/dist/codex/codexMessagePhase.js +22 -0
- package/dist/codex/codexMessagePhase.js.map +1 -0
- package/dist/codex/codexNativeTurnController.d.ts +62 -0
- package/dist/codex/codexNativeTurnController.js +383 -8
- package/dist/codex/codexNativeTurnController.js.map +1 -1
- package/dist/codex/codexRolloutTailer.js +31 -5
- package/dist/codex/codexRolloutTailer.js.map +1 -1
- package/dist/codex/codexSessionStore.d.ts +16 -1
- package/dist/codex/codexSessionStore.js +90 -19
- package/dist/codex/codexSessionStore.js.map +1 -1
- package/dist/codex/codexSubagentTracker.js +16 -0
- package/dist/codex/codexSubagentTracker.js.map +1 -1
- package/dist/codex/codexSystemNotice.d.ts +7 -0
- package/dist/codex/codexSystemNotice.js +13 -0
- package/dist/codex/codexSystemNotice.js.map +1 -1
- package/dist/engine/engine.js +17 -3
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/handlers/conversation.js +32 -19
- package/dist/engine/handlers/conversation.js.map +1 -1
- package/dist/engine/handlers/mode.js +93 -3
- package/dist/engine/handlers/mode.js.map +1 -1
- package/dist/engine/handlers/session.js +3 -1
- package/dist/engine/handlers/session.js.map +1 -1
- package/dist/hub/hubDaemon.js +6 -2
- package/dist/hub/hubDaemon.js.map +1 -1
- package/dist/hub/hubProtocol.d.ts +7 -2
- package/dist/hub/hubProtocol.js +5 -2
- package/dist/hub/hubProtocol.js.map +1 -1
- package/dist/hub/panePreviewPump.d.ts +23 -0
- package/dist/hub/panePreviewPump.js +55 -1
- package/dist/hub/panePreviewPump.js.map +1 -1
- package/dist/hub/questionInjection.d.ts +7 -0
- package/dist/hub/questionInjection.js +18 -0
- package/dist/hub/questionInjection.js.map +1 -1
- package/dist/hub/sessionHub.d.ts +21 -1
- package/dist/hub/sessionHub.js +108 -4
- package/dist/hub/sessionHub.js.map +1 -1
- package/dist/protocol/decode.js +19 -1
- package/dist/protocol/decode.js.map +1 -1
- package/dist/protocol/encode.js +4 -0
- package/dist/protocol/encode.js.map +1 -1
- package/dist/protocol/messages.d.ts +50 -0
- package/dist/protocol/messages.js +17 -0
- package/dist/protocol/messages.js.map +1 -1
- package/dist/sessions/claudeSessionStore.d.ts +13 -1
- package/dist/sessions/claudeSessionStore.js +72 -7
- package/dist/sessions/claudeSessionStore.js.map +1 -1
- package/dist/sessions/listMemoFile.d.ts +24 -0
- package/dist/sessions/listMemoFile.js +133 -0
- package/dist/sessions/listMemoFile.js.map +1 -0
- package/dist/sessions/sessionSearch.js +5 -0
- package/dist/sessions/sessionSearch.js.map +1 -1
- package/dist/shared/clientBuild.d.ts +1 -1
- package/dist/shared/clientBuild.js +1 -1
- package/dist/shared/commandExpansion.d.ts +13 -0
- package/dist/shared/commandExpansion.js +31 -0
- package/dist/shared/commandExpansion.js.map +1 -0
- package/dist/shared/readFailures.d.ts +4 -0
- package/dist/shared/readFailures.js +20 -0
- package/dist/shared/readFailures.js.map +1 -0
- package/dist/shared/usageLimitWait.d.ts +28 -1
- package/dist/shared/usageLimitWait.js +197 -16
- package/dist/shared/usageLimitWait.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,44 +3,225 @@
|
|
|
3
3
|
// (純ロジック, TESTABLE, usage-limit-wait)。iOS 側 `UsageLimitWaitParser` と同じ規則。
|
|
4
4
|
//
|
|
5
5
|
// CLI は claude.ai の使用量制限に当たると、ターンを終えて(transcript には `isApiErrorMessage`
|
|
6
|
-
// の合成 assistant 行 = api_error lifecycle
|
|
7
|
-
// 固定プロンプトで作業を再開する(docs/interactive-mode「Wait for a usage limit to reset
|
|
6
|
+
// の合成 assistant 行 = api_error lifecycle)入力欄の下に待機表示を出し、リセット時刻に
|
|
7
|
+
// 固定プロンプトで作業を再開する(docs/interactive-mode「Wait for a usage limit to reset」)。
|
|
8
|
+
//
|
|
9
|
+
// 入力欄の下の待機表示は **2.1.284 から 2 行の組**(状態行 `limit-status` + 次の手 `limit-next`)。
|
|
10
|
+
// 2.1.289 の組み立て(バイナリ実読):
|
|
11
|
+
// - 待機中: `Usage limit reached · limit resets 3:45pm` / `Continuing automatically at 3:45pm · esc to cancel`
|
|
12
|
+
// (時刻不明は `… when it resets · esc to cancel`。後ろに ` · /usage-credits to continue now` が続くことがある)
|
|
13
|
+
// - 再開中: `Usage limit reached · limit resets 3:45pm` / `Continuing shortly · esc to cancel`
|
|
14
|
+
// - Enter 待ち(30 分超のスリープ後): `Your usage limit has reset` / `Press enter to continue`
|
|
15
|
+
// 2 行目だけでは本文の引用と区別できないので、**直上の非空行に `limit` があること**を組の条件にする
|
|
16
|
+
// (状態行は `Usage limit …` か、wrap-up 表示の `… limit resets …`)。
|
|
17
|
+
//
|
|
18
|
+
// 会話面に流れる通知行(1 行で完結。2.1.278 以前のフッターもこの形):
|
|
8
19
|
// - `Usage limit reached · continuing automatically at 3:45pm · esc to cancel`(待機中)
|
|
9
|
-
// - `
|
|
10
|
-
// - `
|
|
11
|
-
//
|
|
20
|
+
// - `Usage limit reached again · continuing automatically at …`(再到達)
|
|
21
|
+
// - `continuing shortly` / `Usage limit reset · continuing automatically` /
|
|
22
|
+
// `Usage limit available again · continuing now`(再開中)
|
|
23
|
+
// - `Your usage limit has reset · press enter to continue` / `Usage limit has reset · press enter to continue`(Enter 待ち)
|
|
24
|
+
// - `Automatic continue stopped …` / `Automatic continue was turned off …`(停止)
|
|
25
|
+
// - `Automatic continue cancelled · /rate-limit-options to re-arm`(利用者が Esc で取り消した)
|
|
26
|
+
// 取り消しの通知より上に残る古い待機通知を拾わないよう、取り消し行に当たったら探索を打ち切る。
|
|
12
27
|
// pane capture の末尾数行だけを見る(本文引用に反応しない)。ANSI は念のため剥がす。
|
|
13
28
|
/** フッター探索の行数(入力欄 + ショートカット行 + 待機行が収まる十分な幅)。 */
|
|
14
29
|
const FOOTER_SCAN_LINES = 16;
|
|
15
30
|
const ANSI_PATTERN = /\u001b\[[0-9;?]*[ -/]*[@-~]/g;
|
|
16
|
-
/**
|
|
31
|
+
/** 入力欄の直上で見る通知行の数(停止 / 取り消しの通知は入力欄のすぐ上に追記される)。 */
|
|
32
|
+
const NOTICE_SCAN_LINES = 4;
|
|
33
|
+
/** 入力欄のプロンプト記号(backend/tmux.ts `INPUT_PROMPT_SIGILS` と同じ)。 */
|
|
34
|
+
const INPUT_PROMPT_SIGILS = ["❯", "›", "!"];
|
|
35
|
+
/**
|
|
36
|
+
* pane 全文から待機状態を読む。該当なしは null。
|
|
37
|
+
*
|
|
38
|
+
* 待機中・再開中・Enter 待ちは**入力欄の下罫線より下(フッター)だけ**から読む。会話面の通知行は
|
|
39
|
+
* transcript に追記されてスクロールバックに残り続け、本文が待機表示を引用することもあるので、
|
|
40
|
+
* フッター以外から読むと終わった待機のカードや「続行」ボタンが出る。会話面からは入力欄の直上
|
|
41
|
+
* 数行の停止 / 取り消しの通知だけを読む。罫線はあるが入力欄の枠と確かめられない画面(承認・`/login`
|
|
42
|
+
* などのダイアログ表示中)は待機と読まない。罫線が 1 本も無い画面は従来どおり末尾全体から読む。
|
|
43
|
+
*/
|
|
17
44
|
export function parseUsageLimitWait(paneText) {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
45
|
+
const screen = paneLines(paneText);
|
|
46
|
+
const frame = findInputFrame(screen);
|
|
47
|
+
if (frame === "no-rule")
|
|
48
|
+
return parseLegacyTail(nonEmptyTail(screen));
|
|
49
|
+
if (frame === null)
|
|
50
|
+
return null;
|
|
51
|
+
return parseUsageLimitFooter(nonEmpty(screen.slice(frame.bottom + 1)))
|
|
52
|
+
?? parseRecentNotices(noticeLinesAboveInput(screen, frame.top));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 自動再開を取り消した(Esc)/ 走らなかった直後か(TESTABLE): その通知が入力欄の**すぐ上の最後の項目**
|
|
56
|
+
* のときだけ true(transcript に残った古い通知の後に会話が進んでいれば false)。取り消しの直後は
|
|
57
|
+
* フッターの待機表示が消えるので、`parseUsageLimitWait` だけでは「制限待ちの Esc」と分からない
|
|
58
|
+
* (prompt-cancelled 判定のスキップに使う)。入力欄の枠が見つからない画面は false。
|
|
59
|
+
*/
|
|
60
|
+
export function usageLimitAutoContinueCancelled(paneText) {
|
|
61
|
+
const screen = paneLines(paneText);
|
|
62
|
+
const frame = findInputFrame(screen);
|
|
63
|
+
if (frame === null || frame === "no-rule")
|
|
64
|
+
return false;
|
|
65
|
+
const nearest = noticeLinesAboveInput(screen, frame.top).at(-1);
|
|
66
|
+
return nearest !== undefined && isCancelNotice(nearest.toLowerCase());
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 入力欄の下(フッター)の行から待機状態を読む(TESTABLE)。2.1.284+ の 2 行組は状態行が端末幅で
|
|
70
|
+
* 折り返すので、2 行目の条件は「フッター内でそれより上の行に `limit` がある」で見る。2 行目の文言は
|
|
71
|
+
* サーバー設定で変わり得る(`{when}` を含むテンプレート)ので、状態行の下の `esc to cancel` を含む行も
|
|
72
|
+
* 待機中(時刻不明)とみなす。
|
|
73
|
+
*/
|
|
74
|
+
export function parseUsageLimitFooter(footer) {
|
|
75
|
+
for (let i = footer.length - 1; i >= 0; i -= 1) {
|
|
76
|
+
const line = footer[i];
|
|
77
|
+
const lower = line.toLowerCase();
|
|
78
|
+
// 2.1.283 以前の 1 行フッター(停止はフッターには出ない)。
|
|
79
|
+
const single = parseUsageLimitWaitLine(line);
|
|
80
|
+
if (single !== null && single.kind !== "stopped")
|
|
81
|
+
return single;
|
|
82
|
+
const above = footer.slice(0, i).join(" ").toLowerCase();
|
|
83
|
+
if (lower.startsWith("press enter to continue") && above.includes("usage limit"))
|
|
84
|
+
return { kind: "needs_enter" };
|
|
85
|
+
if (lower.startsWith("continuing automatically") && above.includes("limit")) {
|
|
86
|
+
// `… at` で折り返して時刻が次の行へ送られたときだけ次の行を繋ぐ(下のフッター行を飲み込まない)。
|
|
87
|
+
const next = footer[i + 1];
|
|
88
|
+
const wrapped = /\bat$/i.test(line) && next !== undefined ? `${line} ${next}` : line;
|
|
89
|
+
return { kind: "waiting", resumeAt: resumeTime(wrapped) };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for (let i = footer.length - 1; i >= 0; i -= 1) {
|
|
93
|
+
if (!footer[i].toLowerCase().includes("esc to cancel"))
|
|
94
|
+
continue;
|
|
95
|
+
if (footer.slice(0, i).join(" ").toLowerCase().includes("usage limit"))
|
|
96
|
+
return { kind: "waiting", resumeAt: null };
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/** ANSI を剥がし、行末の空白だけ落とした全行(字下げは入力欄の続き行の判定に使う)。 */
|
|
101
|
+
function paneLines(paneText) {
|
|
102
|
+
return paneText.split(/\r?\n/).map((line) => line.replace(ANSI_PATTERN, "").trimEnd());
|
|
103
|
+
}
|
|
104
|
+
function nonEmpty(lines) {
|
|
105
|
+
return lines.map((line) => line.trim()).filter((line) => line.length > 0);
|
|
106
|
+
}
|
|
107
|
+
function nonEmptyTail(lines) {
|
|
108
|
+
return nonEmpty(lines).slice(-FOOTER_SCAN_LINES);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 入力欄の枠(上下の罫線)。末尾 FOOTER_SCAN_LINES 非空行のうち最後の「`─` / `━` だけの行」を下罫線とし、
|
|
112
|
+
* そこから上へ字下げの続き行・空行を飛ばした行がプロンプト記号で始まり、その 1 つ上が罫線で終わる
|
|
113
|
+
* 行(名前付きの会話はタイトルが埋まる)なら入力欄と認める(backend/tmux.ts `findFrameAbovePrompt` と
|
|
114
|
+
* 同じ規則)。pane に罫線が 1 本も無ければ "no-rule"、罫線はあるが入力欄と確かめられなければ null。
|
|
115
|
+
*/
|
|
116
|
+
function findInputFrame(lines) {
|
|
117
|
+
let seen = 0;
|
|
118
|
+
let bottom = -1;
|
|
119
|
+
for (let index = lines.length - 1; index >= 0 && seen < FOOTER_SCAN_LINES; index -= 1) {
|
|
120
|
+
const text = lines[index].trim();
|
|
121
|
+
if (text.length === 0)
|
|
122
|
+
continue;
|
|
123
|
+
seen += 1;
|
|
124
|
+
if (isPureRuleLine(text)) {
|
|
125
|
+
bottom = index;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// 末尾に罫線が無くても、pane のどこかに罫線があれば旧規則へは戻さない(本文の長いダイアログの上罫線が
|
|
130
|
+
// 窓から外れた画面を、末尾全体を読む旧規則で読むと差分本文の文言を待機と取り違える)。
|
|
131
|
+
if (bottom < 0)
|
|
132
|
+
return lines.some(isPureRuleLine) ? null : "no-rule";
|
|
133
|
+
let index = bottom - 1;
|
|
134
|
+
while (index >= 0 && /^(?: {2}|\s*$)/u.test(lines[index]))
|
|
135
|
+
index -= 1;
|
|
136
|
+
if (index < 1)
|
|
137
|
+
return null;
|
|
138
|
+
if (!INPUT_PROMPT_SIGILS.some((sigil) => lines[index].startsWith(sigil)))
|
|
139
|
+
return null;
|
|
140
|
+
return /[─━]\s*$/u.test(lines[index - 1]) ? { top: index - 1, bottom } : null;
|
|
141
|
+
}
|
|
142
|
+
/** `─` / `━` だけの 8 字以上の行(入力欄の下罫線の形)。 */
|
|
143
|
+
function isPureRuleLine(line) {
|
|
144
|
+
const scalars = [...line.trim()];
|
|
145
|
+
return scalars.length >= 8 && scalars.every((char) => char === "─" || char === "━");
|
|
146
|
+
}
|
|
147
|
+
/** 入力欄の上罫線より上の、直近の通知行(非空・下が新しい。pane 全体から探す)。 */
|
|
148
|
+
function noticeLinesAboveInput(lines, top) {
|
|
149
|
+
return nonEmpty(lines.slice(0, top)).slice(-NOTICE_SCAN_LINES);
|
|
150
|
+
}
|
|
151
|
+
/** 直近の通知行(下が新しい)から停止を読む。取り消し / 不発の通知、利用者の発話が先に来たら null。 */
|
|
152
|
+
function parseRecentNotices(notices) {
|
|
153
|
+
for (let i = notices.length - 1; i >= 0; i -= 1) {
|
|
154
|
+
const line = notices[i];
|
|
155
|
+
const lower = line.toLowerCase();
|
|
156
|
+
if (isCancelNotice(lower))
|
|
157
|
+
return null;
|
|
158
|
+
if (isStoppedNotice(lower))
|
|
159
|
+
return { kind: "stopped" };
|
|
160
|
+
// 停止の後に利用者が発話した(transcript の発話行)なら、その停止は過去のもの。
|
|
161
|
+
if (INPUT_PROMPT_SIGILS.some((sigil) => line.startsWith(sigil)) || line.startsWith(">"))
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/** 罫線が 1 本も無い画面の読み方(2.1.283 以前の規則 + 2 行組の直上 1 行条件)。 */
|
|
167
|
+
function parseLegacyTail(tail) {
|
|
23
168
|
for (let i = tail.length - 1; i >= 0; i -= 1) {
|
|
24
|
-
const
|
|
169
|
+
const line = tail[i];
|
|
170
|
+
if (isCancelNotice(line.toLowerCase()))
|
|
171
|
+
return null;
|
|
172
|
+
const state = parseUsageLimitWaitLine(line) ?? parseUsageLimitNextLine(line, tail[i - 1] ?? null);
|
|
25
173
|
if (state !== null)
|
|
26
174
|
return state;
|
|
27
175
|
}
|
|
28
176
|
return null;
|
|
29
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* 2.1.284+ の 2 行組の 2 行目(`limit-next`)を、直上の非空行(`limit-status`)と合わせて解釈する
|
|
180
|
+
* (TESTABLE。入力欄の罫線が見つからない画面用)。直上に `limit` が無ければ本文の引用とみなして null。
|
|
181
|
+
*/
|
|
182
|
+
export function parseUsageLimitNextLine(line, above) {
|
|
183
|
+
if (above === null || !above.toLowerCase().includes("limit"))
|
|
184
|
+
return null;
|
|
185
|
+
const lower = line.toLowerCase();
|
|
186
|
+
if (lower.startsWith("press enter to continue") && above.toLowerCase().includes("usage limit")) {
|
|
187
|
+
return { kind: "needs_enter" };
|
|
188
|
+
}
|
|
189
|
+
if (lower.startsWith("continuing automatically")) {
|
|
190
|
+
return { kind: "waiting", resumeAt: resumeTime(line) };
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
/** 取り消し(Esc)/ 不発(自動再開が走らなかった)の通知。これより上の古い待機通知は読まない。 */
|
|
195
|
+
function isCancelNotice(lower) {
|
|
196
|
+
return lower.includes("automatic continue cancelled") || lower.includes("automatic continue did not run");
|
|
197
|
+
}
|
|
198
|
+
/** 停止の通知(連続到達 / 24 時間超 / 無効化)。 */
|
|
199
|
+
function isStoppedNotice(lower) {
|
|
200
|
+
return lower.includes("automatic continue stopped") || lower.includes("automatic continue was turned off");
|
|
201
|
+
}
|
|
202
|
+
/** `continuing automatically at <時刻>` の時刻表記(区切り `·` `•` `・` `|` か行末まで)。 */
|
|
203
|
+
function resumeTime(line) {
|
|
204
|
+
const at = /continuing automatically at\s+(.+?)(?:\s+[·•・|]\s*|\s*$)/i.exec(line);
|
|
205
|
+
return at !== null ? at[1].trim() : null;
|
|
206
|
+
}
|
|
30
207
|
/** 1 行を待機状態へ解釈する(TESTABLE)。該当なしは null。 */
|
|
31
208
|
export function parseUsageLimitWaitLine(line) {
|
|
32
209
|
const lower = line.toLowerCase();
|
|
33
|
-
if (lower
|
|
210
|
+
if (isStoppedNotice(lower))
|
|
34
211
|
return { kind: "stopped" };
|
|
35
212
|
if (lower.includes("usage limit") && lower.includes("press enter to continue"))
|
|
36
213
|
return { kind: "needs_enter" };
|
|
37
214
|
if (lower.includes("usage limit reset") && lower.includes("continuing"))
|
|
38
215
|
return { kind: "resuming" };
|
|
216
|
+
if (lower.includes("usage limit available again") && lower.includes("continuing"))
|
|
217
|
+
return { kind: "resuming" };
|
|
39
218
|
if (lower.includes("continuing shortly"))
|
|
40
219
|
return { kind: "resuming" };
|
|
220
|
+
// 再到達の通知でリセット時刻を過ぎていると `continuing automatically shortly`(= 再開中)。
|
|
221
|
+
if (lower.includes("continuing automatically shortly"))
|
|
222
|
+
return { kind: "resuming" };
|
|
41
223
|
if (lower.includes("usage limit") && lower.includes("continuing automatically")) {
|
|
42
|
-
|
|
43
|
-
return { kind: "waiting", resumeAt: at !== null ? at[1].trim() : null };
|
|
224
|
+
return { kind: "waiting", resumeAt: resumeTime(line) };
|
|
44
225
|
}
|
|
45
226
|
return null;
|
|
46
227
|
}
|
|
@@ -66,7 +247,7 @@ export function describeUsageLimitWait(state) {
|
|
|
66
247
|
case "needs_enter":
|
|
67
248
|
return "使用量制限がリセットされました。続行するには「続行」を押してください";
|
|
68
249
|
case "stopped":
|
|
69
|
-
return "
|
|
250
|
+
return "使用量制限の自動再開が止まりました(/rate-limit-options で対処を選べます)";
|
|
70
251
|
}
|
|
71
252
|
}
|
|
72
253
|
//# sourceMappingURL=usageLimitWait.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usageLimitWait.js","sourceRoot":"","sources":["../../src/shared/usageLimitWait.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,iEAAiE;AACjE,0EAA0E;AAC1E,EAAE;AACF,wEAAwE;AACxE,
|
|
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.15.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.15.0",
|
|
54
|
+
"@tailii/quic-gw-darwin-x64": "0.15.0"
|
|
55
55
|
}
|
|
56
56
|
}
|