@agentdeck/bridge 1.0.21 → 1.0.23
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/apme/activity-history.d.ts +59 -0
- package/dist/apme/activity-history.d.ts.map +1 -0
- package/dist/apme/activity-history.js +265 -0
- package/dist/apme/activity-history.js.map +1 -0
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +40 -6
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts +1 -0
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +9 -0
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/runner.d.ts +20 -0
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +57 -0
- package/dist/apme/runner.js.map +1 -1
- package/dist/apme/settings.d.ts +21 -4
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +29 -5
- package/dist/apme/settings.js.map +1 -1
- package/dist/apme/store.d.ts +7 -0
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +35 -0
- package/dist/apme/store.js.map +1 -1
- package/dist/ble-sync-spawn.d.ts +27 -0
- package/dist/ble-sync-spawn.d.ts.map +1 -1
- package/dist/ble-sync-spawn.js +32 -0
- package/dist/ble-sync-spawn.js.map +1 -1
- package/dist/bridge-core.d.ts +21 -4
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +52 -23
- package/dist/bridge-core.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +261 -13
- package/dist/cli.js.map +1 -1
- package/dist/codex-rate-limits-live.d.ts +58 -9
- package/dist/codex-rate-limits-live.d.ts.map +1 -1
- package/dist/codex-rate-limits-live.js +64 -15
- package/dist/codex-rate-limits-live.js.map +1 -1
- package/dist/codex-rate-limits.d.ts +2 -2
- package/dist/codex-rate-limits.d.ts.map +1 -1
- package/dist/codex-rate-limits.js +34 -16
- package/dist/codex-rate-limits.js.map +1 -1
- package/dist/daemon-server.d.ts +46 -2
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +165 -44
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon-takeover.d.ts +3 -0
- package/dist/daemon-takeover.d.ts.map +1 -1
- package/dist/daemon-takeover.js +5 -0
- package/dist/daemon-takeover.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/esp32-flash-lease.d.ts +47 -0
- package/dist/esp32-flash-lease.d.ts.map +1 -0
- package/dist/esp32-flash-lease.js +84 -0
- package/dist/esp32-flash-lease.js.map +1 -0
- package/dist/esp32-flash-transport.d.ts +90 -0
- package/dist/esp32-flash-transport.d.ts.map +1 -0
- package/dist/esp32-flash-transport.js +157 -0
- package/dist/esp32-flash-transport.js.map +1 -0
- package/dist/esp32-flash.d.ts +171 -0
- package/dist/esp32-flash.d.ts.map +1 -0
- package/dist/esp32-flash.js +523 -0
- package/dist/esp32-flash.js.map +1 -0
- package/dist/esp32-serial.d.ts +9 -1
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +74 -1
- package/dist/esp32-serial.js.map +1 -1
- package/dist/esptool-js-node.d.ts +17 -0
- package/dist/esptool-js-node.d.ts.map +1 -0
- package/dist/esptool-js-node.js +17 -0
- package/dist/esptool-js-node.js.map +1 -0
- package/dist/hook-server.d.ts.map +1 -1
- package/dist/hook-server.js +17 -0
- package/dist/hook-server.js.map +1 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts.map +1 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.js +13 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/python-ble-runtime.d.ts +2 -0
- package/dist/python-ble-runtime.d.ts.map +1 -1
- package/dist/python-ble-runtime.js +101 -7
- package/dist/python-ble-runtime.js.map +1 -1
- package/dist/review-runner.d.ts.map +1 -1
- package/dist/review-runner.js +27 -9
- package/dist/review-runner.js.map +1 -1
- package/dist/timebox/timebox-daemon-sync.d.ts.map +1 -1
- package/dist/timebox/timebox-daemon-sync.js +11 -1
- package/dist/timebox/timebox-daemon-sync.js.map +1 -1
- package/dist/timeline-summarizer.d.ts +7 -2
- package/dist/timeline-summarizer.d.ts.map +1 -1
- package/dist/timeline-summarizer.js +13 -69
- package/dist/timeline-summarizer.js.map +1 -1
- package/dist/usage-api.d.ts +28 -1
- package/dist/usage-api.d.ts.map +1 -1
- package/dist/usage-api.js +74 -33
- package/dist/usage-api.js.map +1 -1
- package/dist/usage-event.d.ts.map +1 -1
- package/dist/usage-event.js +2 -17
- package/dist/usage-event.js.map +1 -1
- package/package.json +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-runner.js","sourceRoot":"","sources":["../src/review-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-runner.js","sourceRoot":"","sources":["../src/review-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timebox-daemon-sync.d.ts","sourceRoot":"","sources":["../../src/timebox/timebox-daemon-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"timebox-daemon-sync.d.ts","sourceRoot":"","sources":["../../src/timebox/timebox-daemon-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AA+B/B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA+BvD;AA8DD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,qBAAqB,EAAE,MAAM,GAAG,eAAe,CAWlF"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* writer. This code is terminal-managed CLI daemon only.
|
|
7
7
|
*/
|
|
8
8
|
import { deviceId, loadTimeboxDevices } from './timebox-settings.js';
|
|
9
|
-
import { createSyncCycleSquelch, spawnPythonSync, terminateSyncChild } from '../ble-sync-spawn.js';
|
|
9
|
+
import { createSigabrtCircuitBreaker, createSyncCycleSquelch, spawnPythonSync, terminateSyncChild, } from '../ble-sync-spawn.js';
|
|
10
10
|
import { createBleLinkTracker, mergeBleLinkSnapshots, } from '../ble-sync-status.js';
|
|
11
11
|
import { getBleRuntimeStatus } from '../python-ble-runtime.js';
|
|
12
12
|
const entries = new Map();
|
|
@@ -44,6 +44,7 @@ export function startTimeboxSync(httpPort) {
|
|
|
44
44
|
startedAt: 0,
|
|
45
45
|
squelch: createSyncCycleSquelch(log),
|
|
46
46
|
link: createBleLinkTracker(),
|
|
47
|
+
abortBreaker: createSigabrtCircuitBreaker(`Timebox BLE sync for ${id}`),
|
|
47
48
|
};
|
|
48
49
|
entries.set(id, entry);
|
|
49
50
|
spawnSync(entry, runtime.python, runtime.paths.scripts.timeboxSync, httpPort);
|
|
@@ -85,6 +86,15 @@ function spawnSync(entry, venvPython, syncScript, httpPort) {
|
|
|
85
86
|
const delay = Math.min(MAX_BACKOFF_MS, BASE_BACKOFF_MS * entry.consecutiveFailures);
|
|
86
87
|
const tail = stderrTail() || outputTail();
|
|
87
88
|
const why = tail ? `; output: ${tail}` : '';
|
|
89
|
+
// A streak of SIGABRT kills means the OS is refusing the client (TCC on
|
|
90
|
+
// macOS) — respawning can only produce another crash dialog, so halt and
|
|
91
|
+
// say why instead of looping forever.
|
|
92
|
+
const halt = entry.abortBreaker.noteExit(signal);
|
|
93
|
+
if (halt) {
|
|
94
|
+
log(halt);
|
|
95
|
+
entry.link.noteUnavailable(halt);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
88
98
|
entry.link.noteExit(tail || `sync exited (code=${code} signal=${signal})`, Date.now() + delay);
|
|
89
99
|
entry.squelch.logExit(code, signal, uptimeMs, tail, `sync for ${id} exited (code=${code} signal=${signal})${why}; respawning in ${Math.round(delay / 1000)}s`);
|
|
90
100
|
entry.respawnTimer = setTimeout(() => spawnSync(entry, venvPython, syncScript, httpPort), delay);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timebox-daemon-sync.js","sourceRoot":"","sources":["../../src/timebox/timebox-daemon-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;AACzF,OAAO,
|
|
1
|
+
{"version":3,"file":"timebox-daemon-sync.js","sourceRoot":"","sources":["../../src/timebox/timebox-daemon-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,15 +3,20 @@
|
|
|
3
3
|
* of OpenClaw chat responses for timeline display.
|
|
4
4
|
*
|
|
5
5
|
* Tries: on-device Foundation Models → local mlx-serve qwen (port 8800) →
|
|
6
|
-
*
|
|
6
|
+
* heuristic fallback. Non-blocking — caller should fire-and-forget,
|
|
7
7
|
* update entry when ready.
|
|
8
8
|
*
|
|
9
9
|
* The provider order is the Node mirror of Swift's `TimelineSummarizer`
|
|
10
|
-
* `.auto` chain (FoundationModels → MLX →
|
|
10
|
+
* `.auto` chain (FoundationModels → MLX → heuristic). It was
|
|
11
11
|
* MLX-first for a long time, which meant a CLI-only user on macOS 26 with
|
|
12
12
|
* Apple Intelligence available still got heuristic rows unless they also ran
|
|
13
13
|
* an MLX server — the same machine summarized differently depending on which
|
|
14
14
|
* daemon happened to be up. Keep the two chains in the same order.
|
|
15
|
+
*
|
|
16
|
+
* The Ollama tier was removed 2026-08-22: it hard-pinned `qwen2.5:7b`, a
|
|
17
|
+
* model two generations behind anything the model-eval fleet measures, and
|
|
18
|
+
* the Settings UI never offered it as a choice. MLX rides whatever model the
|
|
19
|
+
* server actually serves (probed), so it cannot go stale the same way.
|
|
15
20
|
*/
|
|
16
21
|
export { extractTopicHint } from '@agentdeck/shared';
|
|
17
22
|
/** Reset the cached provider availability (tests only). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-summarizer.d.ts","sourceRoot":"","sources":["../src/timeline-summarizer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"timeline-summarizer.d.ts","sourceRoot":"","sources":["../src/timeline-summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgCrD,2DAA2D;AAC3D,wBAAgB,oCAAoC,IAAI,IAAI,CAO3D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmE5E"}
|
|
@@ -3,15 +3,20 @@
|
|
|
3
3
|
* of OpenClaw chat responses for timeline display.
|
|
4
4
|
*
|
|
5
5
|
* Tries: on-device Foundation Models → local mlx-serve qwen (port 8800) →
|
|
6
|
-
*
|
|
6
|
+
* heuristic fallback. Non-blocking — caller should fire-and-forget,
|
|
7
7
|
* update entry when ready.
|
|
8
8
|
*
|
|
9
9
|
* The provider order is the Node mirror of Swift's `TimelineSummarizer`
|
|
10
|
-
* `.auto` chain (FoundationModels → MLX →
|
|
10
|
+
* `.auto` chain (FoundationModels → MLX → heuristic). It was
|
|
11
11
|
* MLX-first for a long time, which meant a CLI-only user on macOS 26 with
|
|
12
12
|
* Apple Intelligence available still got heuristic rows unless they also ran
|
|
13
13
|
* an MLX server — the same machine summarized differently depending on which
|
|
14
14
|
* daemon happened to be up. Keep the two chains in the same order.
|
|
15
|
+
*
|
|
16
|
+
* The Ollama tier was removed 2026-08-22: it hard-pinned `qwen2.5:7b`, a
|
|
17
|
+
* model two generations behind anything the model-eval fleet measures, and
|
|
18
|
+
* the Settings UI never offered it as a choice. MLX rides whatever model the
|
|
19
|
+
* server actually serves (probed), so it cannot go stale the same way.
|
|
15
20
|
*/
|
|
16
21
|
import { debug, log } from './logger.js';
|
|
17
22
|
import { SUMMARY_SYSTEM_PROMPT, cleanLLMOutput, mlxChatUrl, resolveMlxModel } from '@agentdeck/shared';
|
|
@@ -38,24 +43,19 @@ async function resolveModelForCall() {
|
|
|
38
43
|
}
|
|
39
44
|
return resolveMlxModel(probedFirstModel);
|
|
40
45
|
}
|
|
41
|
-
const OLLAMA_URL = 'http://localhost:11434/api/chat';
|
|
42
46
|
const TIMEOUT_MS = 30_000; // 30s — first inference needs model load time
|
|
43
47
|
const MAX_INPUT_CHARS = 2000;
|
|
44
48
|
let fmAvailable = null;
|
|
45
49
|
let mlxAvailable = null;
|
|
46
|
-
let ollamaAvailable = null;
|
|
47
50
|
let fmFailedAt = 0;
|
|
48
51
|
let mlxFailedAt = 0;
|
|
49
|
-
let ollamaFailedAt = 0;
|
|
50
52
|
const RETRY_INTERVAL_MS = 60_000; // retry failed providers after 60s
|
|
51
53
|
/** Reset the cached provider availability (tests only). */
|
|
52
54
|
export function clearSummarizerProviderCacheForTests() {
|
|
53
55
|
fmAvailable = null;
|
|
54
56
|
mlxAvailable = null;
|
|
55
|
-
ollamaAvailable = null;
|
|
56
57
|
fmFailedAt = 0;
|
|
57
58
|
mlxFailedAt = 0;
|
|
58
|
-
ollamaFailedAt = 0;
|
|
59
59
|
probedFirstModel = null;
|
|
60
60
|
probedAt = 0;
|
|
61
61
|
}
|
|
@@ -70,13 +70,12 @@ export async function summarizeResponse(text) {
|
|
|
70
70
|
? text.slice(0, MAX_INPUT_CHARS) + '...'
|
|
71
71
|
: text;
|
|
72
72
|
let mlxJustFailed = false;
|
|
73
|
-
let ollamaJustFailed = false;
|
|
74
73
|
// Try on-device Foundation Models first — no server for the user to run,
|
|
75
74
|
// and it is the same helper process the APME judge already keeps warm.
|
|
76
75
|
// A miss here is not an error state: off-macOS, on macOS < 26, or with
|
|
77
76
|
// Apple Intelligence disabled the probe simply reports unavailable and the
|
|
78
|
-
// chain moves on. Only MLX
|
|
79
|
-
//
|
|
77
|
+
// chain moves on. Only MLX failing is worth telling the user about
|
|
78
|
+
// (that is what the user opts into by installing it).
|
|
80
79
|
if (fmAvailable !== false || (Date.now() - fmFailedAt > RETRY_INTERVAL_MS)) {
|
|
81
80
|
try {
|
|
82
81
|
const result = await callFoundationModels(input);
|
|
@@ -113,37 +112,16 @@ export async function summarizeResponse(text) {
|
|
|
113
112
|
debug('summarizer', `MLX not available: ${String(err)}`);
|
|
114
113
|
}
|
|
115
114
|
}
|
|
116
|
-
// Try Ollama (retry after RETRY_INTERVAL_MS)
|
|
117
|
-
if (ollamaAvailable !== false || (Date.now() - ollamaFailedAt > RETRY_INTERVAL_MS)) {
|
|
118
|
-
try {
|
|
119
|
-
const result = await callOllama(input);
|
|
120
|
-
if (result) {
|
|
121
|
-
if (ollamaAvailable === false) {
|
|
122
|
-
debug('summarizer', 'Ollama recovered');
|
|
123
|
-
}
|
|
124
|
-
ollamaAvailable = true;
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
ollamaJustFailed = ollamaAvailable !== false;
|
|
130
|
-
ollamaAvailable = false;
|
|
131
|
-
ollamaFailedAt = Date.now();
|
|
132
|
-
debug('summarizer', `Ollama not available: ${String(err)}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
115
|
// Surface backend-down state to the user — but ONLY on the transition
|
|
136
|
-
// (first time we observe
|
|
116
|
+
// (first time we observe the provider failing) and via `log`, NOT
|
|
137
117
|
// `logError`. The summarizer is *optional* — when the user hasn't
|
|
138
|
-
// installed MLX
|
|
118
|
+
// installed MLX, the heuristic row is the intended UX. Routing
|
|
139
119
|
// through `log` means PTY mode (`agentdeck claude`) suppresses it
|
|
140
120
|
// entirely (the message would otherwise bleed into Claude's terminal
|
|
141
121
|
// session and read as a critical error). Daemon/CLI surfaces still see
|
|
142
122
|
// it in stderr as a regular `[agentdeck]` info line.
|
|
143
|
-
if (
|
|
144
|
-
|
|
145
|
-
|| (ollamaJustFailed && mlxAvailable === false)) {
|
|
146
|
-
log(`[timeline] LLM summary backend offline (on-device Foundation Models: ${fmAvailable === false ? 'unavailable' : 'not reached'}, MLX:8800, Ollama:11434).`, 'Timeline rows will use heuristic summaries.', 'Install MLX (`mlx_vlm.server`) or Ollama to get LLM-summarized chat_end rows.');
|
|
123
|
+
if (mlxJustFailed) {
|
|
124
|
+
log(`[timeline] LLM summary backend offline (on-device Foundation Models: ${fmAvailable === false ? 'unavailable' : 'not reached'}, MLX:8800).`, 'Timeline rows will use heuristic summaries.', 'Install MLX (`mlx_vlm.server`) to get LLM-summarized chat_end rows.');
|
|
147
125
|
}
|
|
148
126
|
return null;
|
|
149
127
|
}
|
|
@@ -203,38 +181,4 @@ async function callMLX(input) {
|
|
|
203
181
|
throw err;
|
|
204
182
|
}
|
|
205
183
|
}
|
|
206
|
-
async function callOllama(input) {
|
|
207
|
-
const controller = new AbortController();
|
|
208
|
-
const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
|
|
209
|
-
try {
|
|
210
|
-
const resp = await fetch(OLLAMA_URL, {
|
|
211
|
-
method: 'POST',
|
|
212
|
-
headers: { 'Content-Type': 'application/json' },
|
|
213
|
-
body: JSON.stringify({
|
|
214
|
-
model: 'qwen2.5:7b',
|
|
215
|
-
messages: [
|
|
216
|
-
{ role: 'system', content: SUMMARY_SYSTEM_PROMPT },
|
|
217
|
-
{ role: 'user', content: input },
|
|
218
|
-
],
|
|
219
|
-
stream: false,
|
|
220
|
-
}),
|
|
221
|
-
signal: controller.signal,
|
|
222
|
-
});
|
|
223
|
-
clearTimeout(timer);
|
|
224
|
-
if (!resp.ok)
|
|
225
|
-
throw new Error(`Ollama ${resp.status}`);
|
|
226
|
-
const data = await resp.json();
|
|
227
|
-
const content = data.message?.content?.trim();
|
|
228
|
-
if (!content)
|
|
229
|
-
return null;
|
|
230
|
-
const result = cleanLLMOutput(content);
|
|
231
|
-
if (result)
|
|
232
|
-
debug('summarizer', `Ollama summary: ${result}`);
|
|
233
|
-
return result;
|
|
234
|
-
}
|
|
235
|
-
catch (err) {
|
|
236
|
-
clearTimeout(timer);
|
|
237
|
-
throw err;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
184
|
//# sourceMappingURL=timeline-summarizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-summarizer.js","sourceRoot":"","sources":["../src/timeline-summarizer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"timeline-summarizer.js","sourceRoot":"","sources":["../src/timeline-summarizer.ts"],"names":[],"mappings":"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"}
|
package/dist/usage-api.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { ScopedUsageLimit } from './types.js';
|
|
2
|
+
/** True when the on-disk cache is old enough that a poller should go to the network.
|
|
3
|
+
* Exported for the slack regression test — the bug it prevents is invisible in
|
|
4
|
+
* any single call and only shows up as a cadence, so pin the predicate. */
|
|
5
|
+
export declare function fileCacheExpired(fetchedAt: number, nowMs?: number): boolean;
|
|
2
6
|
export interface ApiUsageData {
|
|
3
7
|
fiveHourPercent: number | null;
|
|
4
8
|
fiveHourResetsAt: string | null;
|
|
@@ -15,6 +19,29 @@ export interface ApiUsageData {
|
|
|
15
19
|
/** Inferred from API response: subscription if rate-limit fields present, api if 401/no fields */
|
|
16
20
|
inferredBillingType: 'subscription' | 'api' | null;
|
|
17
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A usage reading plus whether it is a LIVE one.
|
|
24
|
+
*
|
|
25
|
+
* Freshness must not be folded into the data or into a null return. Every
|
|
26
|
+
* failure branch below can still produce numbers — the last good ones off the
|
|
27
|
+
* shared cache file — and a caller that cannot tell those apart from a live
|
|
28
|
+
* reading will stamp them as fresh: that is exactly what happened before this
|
|
29
|
+
* type existed. `fetchUsageFromApi` returned `fileCache?.data ?? null` on 429 /
|
|
30
|
+
* 401 / !ok / API-error / network-throw, so `BridgeCore.updateApiUsage()` ran on
|
|
31
|
+
* the truthy value, pushed `lastApiFetchTime` forward and cleared
|
|
32
|
+
* `apiUsageStale`. The `usageStale` wire flag was therefore unreachable for the
|
|
33
|
+
* commonest failure mode, `USAGE_STALE_TTL` never tripped, and a 7-minute freeze
|
|
34
|
+
* on 2026-08-19 shipped a stale 0% to every surface marked `usageStale: false`.
|
|
35
|
+
*
|
|
36
|
+
* `null` now means only "no numbers at all" (no cache file and no live fetch).
|
|
37
|
+
*/
|
|
38
|
+
export interface UsageFetchResult {
|
|
39
|
+
data: ApiUsageData;
|
|
40
|
+
/** True only when `data` came from the network, or from a cache entry a
|
|
41
|
+
* network fetch wrote within the TTL. False when it is a fallback served
|
|
42
|
+
* because the fetch could not be made or failed. */
|
|
43
|
+
fresh: boolean;
|
|
44
|
+
}
|
|
18
45
|
export type TokenStatus = 'valid' | 'expired' | 'missing' | 'unknown';
|
|
19
46
|
export declare function didLastFetchFail(): boolean;
|
|
20
47
|
export declare function getTokenStatus(): TokenStatus;
|
|
@@ -61,6 +88,6 @@ export declare function hasOAuthToken(): boolean;
|
|
|
61
88
|
* re-emitting them here would double-count. Sorted worst-first so the encoder's
|
|
62
89
|
* default "triple" view can headline `scopedLimits[0]` as the binding limit. */
|
|
63
90
|
export declare function parseScopedLimits(limits: unknown): ScopedUsageLimit[];
|
|
64
|
-
export declare function fetchUsageFromApi(): Promise<
|
|
91
|
+
export declare function fetchUsageFromApi(): Promise<UsageFetchResult | null>;
|
|
65
92
|
export { formatResetTime } from '@agentdeck/shared';
|
|
66
93
|
//# sourceMappingURL=usage-api.d.ts.map
|
package/dist/usage-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-api.d.ts","sourceRoot":"","sources":["../src/usage-api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-api.d.ts","sourceRoot":"","sources":["../src/usage-api.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA2BnD;;4EAE4E;AAC5E,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,OAAO,CAE/E;AAKD,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;4DAEwD;IACxD,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,kGAAkG;IAClG,mBAAmB,EAAE,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;CACpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB;;yDAEqD;IACrD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAatE,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAkCD,yFAAyF;AACzF,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAID,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;iCAGiC;AACjC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kFAAkF;IAClF,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/C;wEACoE;IACpE,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACrC;AAsBD;;;;2CAI2C;AAC3C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAYrF;AAwBD;;;;;mFAKmF;AACnF,wBAAgB,gBAAgB,IAAI,WAAW,CAQ9C;AAUD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAgED;;;;iFAIiF;AACjF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,EAAE,CA+BrE;AAID,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkJ1E;AAGD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/usage-api.js
CHANGED
|
@@ -2,13 +2,35 @@ import { execSync } from 'child_process';
|
|
|
2
2
|
import { readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import { homedir } from 'os';
|
|
5
|
-
import { debug } from './logger.js';
|
|
5
|
+
import { debug, logTagged } from './logger.js';
|
|
6
6
|
const USAGE_API_URL = 'https://api.anthropic.com/api/oauth/usage';
|
|
7
7
|
const KEYCHAIN_SERVICE = 'Claude Code-credentials';
|
|
8
8
|
const AGENTDECK_DIR = join(homedir(), '.agentdeck');
|
|
9
9
|
const USAGE_CACHE_FILE = join(AGENTDECK_DIR, 'usage-cache.json');
|
|
10
10
|
/** Shared file cache TTL — multiple bridge sessions share one cache file */
|
|
11
11
|
const FILE_CACHE_TTL_MS = 120_000; // 120s — reduced from 60s to avoid 429 from multiple pollers
|
|
12
|
+
/**
|
|
13
|
+
* Slack subtracted from the TTL when testing expiry.
|
|
14
|
+
*
|
|
15
|
+
* `fetchedAt` is stamped AFTER the HTTP round trip completes, so a poller whose
|
|
16
|
+
* interval divides the TTL always arrives a few hundred ms EARLY at the tick
|
|
17
|
+
* that should have expired the cache: it reads a hit and then waits a whole
|
|
18
|
+
* extra interval. With the daemon's 60s poll and a 120s TTL that turned the
|
|
19
|
+
* intended 120s refresh into a hard 180s floor — measured 2026-08-19, three
|
|
20
|
+
* consecutive network fetches at 08:25:43 / 08:28:43 / 08:31:43, exact to the
|
|
21
|
+
* second, never once landing on 120s.
|
|
22
|
+
*
|
|
23
|
+
* The slack must exceed fetch latency plus timer drift, and stay well under the
|
|
24
|
+
* poll interval so the cross-session dedupe the TTL exists for is preserved
|
|
25
|
+
* (effective TTL 105s — still comfortably above the 60s this started at).
|
|
26
|
+
*/
|
|
27
|
+
const FILE_CACHE_SLACK_MS = 15_000;
|
|
28
|
+
/** True when the on-disk cache is old enough that a poller should go to the network.
|
|
29
|
+
* Exported for the slack regression test — the bug it prevents is invisible in
|
|
30
|
+
* any single call and only shows up as a cadence, so pin the predicate. */
|
|
31
|
+
export function fileCacheExpired(fetchedAt, nowMs = Date.now()) {
|
|
32
|
+
return (nowMs - fetchedAt) >= (FILE_CACHE_TTL_MS - FILE_CACHE_SLACK_MS);
|
|
33
|
+
}
|
|
12
34
|
/** Token expiry safety margin — skip fetch if token expires within this window */
|
|
13
35
|
const TOKEN_EXPIRY_MARGIN_MS = 10 * 60 * 1000; // 10 minutes
|
|
14
36
|
// ===== Error tracking =====
|
|
@@ -26,6 +48,33 @@ export function resetConsecutiveFailures() {
|
|
|
26
48
|
consecutiveFailures = 0;
|
|
27
49
|
lastFetchFailed = false;
|
|
28
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Record a failed fetch and make it visible in the daemon's own log.
|
|
53
|
+
*
|
|
54
|
+
* `debug()` was the only breadcrumb here, and the daemon runs without DEBUG —
|
|
55
|
+
* so a run of failed fetches left NO record anywhere. The 2026-08-19 freeze had
|
|
56
|
+
* to be reconstructed from cache-file mtimes, and the reason for it is still
|
|
57
|
+
* unknown because nothing wrote it down. Log the first failure and every fifth
|
|
58
|
+
* after it: a persistent outage stays visible without flooding a file that a
|
|
59
|
+
* 60s poller writes to.
|
|
60
|
+
*/
|
|
61
|
+
function noteFailure(reason) {
|
|
62
|
+
lastFetchFailed = true;
|
|
63
|
+
consecutiveFailures++;
|
|
64
|
+
if (consecutiveFailures === 1 || consecutiveFailures % 5 === 0) {
|
|
65
|
+
logTagged('usage', `Claude usage fetch failed (${consecutiveFailures}x): ${reason} — serving cached values as stale, next attempt after ${Math.round(getBackoffMs() / 1000)}s backoff`);
|
|
66
|
+
}
|
|
67
|
+
debug('UsageAPI', `Fetch failed (${consecutiveFailures}x): ${reason}`);
|
|
68
|
+
}
|
|
69
|
+
/** Clear failure state after a live fetch, announcing recovery if one was needed. */
|
|
70
|
+
function noteSuccess() {
|
|
71
|
+
if (consecutiveFailures > 0) {
|
|
72
|
+
logTagged('usage', `Claude usage fetch recovered after ${consecutiveFailures} failure(s)`);
|
|
73
|
+
}
|
|
74
|
+
lastFetchFailed = false;
|
|
75
|
+
consecutiveFailures = 0;
|
|
76
|
+
lastTokenStatus = 'valid';
|
|
77
|
+
}
|
|
29
78
|
/** Backoff interval based on consecutive failures: 0→0, 1→45s, 2→90s, 3→180s, 4+→300s */
|
|
30
79
|
export function getBackoffMs() {
|
|
31
80
|
if (consecutiveFailures <= 0)
|
|
@@ -232,21 +281,24 @@ export function parseScopedLimits(limits) {
|
|
|
232
281
|
}
|
|
233
282
|
// ===== Main fetch =====
|
|
234
283
|
export async function fetchUsageFromApi() {
|
|
284
|
+
// A cached reading served because the live path could not run or failed. Never
|
|
285
|
+
// `fresh` — see UsageFetchResult.
|
|
286
|
+
const stale = (fc) => (fc ? { data: fc.data, fresh: false } : null);
|
|
235
287
|
// 1. Check file cache first — shared across all bridge sessions
|
|
236
288
|
const fileCache = readFileCache();
|
|
237
|
-
if (fileCache && (
|
|
289
|
+
if (fileCache && !fileCacheExpired(fileCache.fetchedAt)) {
|
|
238
290
|
debug('UsageAPI', `File cache hit (age ${Math.round((Date.now() - fileCache.fetchedAt) / 1000)}s)`);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
return fileCache.data;
|
|
291
|
+
// A within-TTL entry was written by a real network fetch (only the success
|
|
292
|
+
// path writes it), so this IS a fresh reading — just a shared one.
|
|
293
|
+
noteSuccess();
|
|
294
|
+
return { data: fileCache.data, fresh: true };
|
|
243
295
|
}
|
|
244
296
|
// 2. Read OAuth credentials
|
|
245
297
|
const creds = getOAuthCredentials();
|
|
246
298
|
if (!creds) {
|
|
247
299
|
debug('UsageAPI', 'No OAuth token available');
|
|
248
300
|
lastTokenStatus = 'missing';
|
|
249
|
-
return fileCache
|
|
301
|
+
return stale(fileCache); // last known values, explicitly not fresh
|
|
250
302
|
}
|
|
251
303
|
// 3. Token expiry check
|
|
252
304
|
if (creds.expiresAt) {
|
|
@@ -255,19 +307,19 @@ export async function fetchUsageFromApi() {
|
|
|
255
307
|
debug('UsageAPI', 'OAuth token expired — waiting for Claude Code to refresh');
|
|
256
308
|
lastTokenStatus = 'expired';
|
|
257
309
|
lastFetchFailed = true;
|
|
258
|
-
return fileCache
|
|
310
|
+
return stale(fileCache);
|
|
259
311
|
}
|
|
260
312
|
if (timeUntilExpiry < TOKEN_EXPIRY_MARGIN_MS) {
|
|
261
313
|
debug('UsageAPI', `OAuth token expires in ${Math.round(timeUntilExpiry / 60000)}m — skipping fetch`);
|
|
262
314
|
lastTokenStatus = 'expired';
|
|
263
|
-
return fileCache
|
|
315
|
+
return stale(fileCache);
|
|
264
316
|
}
|
|
265
317
|
}
|
|
266
318
|
// 4. Exponential backoff — skip if too soon after consecutive failures
|
|
267
319
|
const backoff = getBackoffMs();
|
|
268
320
|
if (backoff > 0 && fileCache && (Date.now() - fileCache.fetchedAt) < backoff) {
|
|
269
321
|
debug('UsageAPI', `Backoff active (${consecutiveFailures} failures, next in ${Math.round((backoff - (Date.now() - fileCache.fetchedAt)) / 1000)}s)`);
|
|
270
|
-
return fileCache
|
|
322
|
+
return stale(fileCache); // holding off on purpose — the numbers are still old
|
|
271
323
|
}
|
|
272
324
|
// 5. Actual API fetch
|
|
273
325
|
try {
|
|
@@ -282,8 +334,7 @@ export async function fetchUsageFromApi() {
|
|
|
282
334
|
});
|
|
283
335
|
// 429 — respect Retry-After header, backoff on next poll
|
|
284
336
|
if (res.status === 429) {
|
|
285
|
-
|
|
286
|
-
lastFetchFailed = true;
|
|
337
|
+
noteFailure('rate limited (429)');
|
|
287
338
|
const retryAfter = res.headers.get('retry-after');
|
|
288
339
|
if (retryAfter) {
|
|
289
340
|
const retrySec = parseInt(retryAfter, 10);
|
|
@@ -310,21 +361,17 @@ export async function fetchUsageFromApi() {
|
|
|
310
361
|
else {
|
|
311
362
|
debug('UsageAPI', `Rate limited (429), consecutive failures: ${consecutiveFailures}, backoff: ${getBackoffMs() / 1000}s`);
|
|
312
363
|
}
|
|
313
|
-
return fileCache
|
|
364
|
+
return stale(fileCache);
|
|
314
365
|
}
|
|
315
366
|
// 401/403 — token issue
|
|
316
367
|
if (res.status === 401 || res.status === 403) {
|
|
317
|
-
debug('UsageAPI', `Auth error ${res.status} — token may be invalid or expired`);
|
|
318
368
|
lastTokenStatus = 'expired';
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
return fileCache?.data ?? null;
|
|
369
|
+
noteFailure(`auth error ${res.status} — token may be invalid or expired`);
|
|
370
|
+
return stale(fileCache);
|
|
322
371
|
}
|
|
323
372
|
if (!res.ok) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
consecutiveFailures++;
|
|
327
|
-
return fileCache?.data ?? null;
|
|
373
|
+
noteFailure(`API returned ${res.status} ${res.statusText}`);
|
|
374
|
+
return stale(fileCache);
|
|
328
375
|
}
|
|
329
376
|
const data = await res.json();
|
|
330
377
|
// DEBUG: dump raw response to diagnose field structure changes
|
|
@@ -338,10 +385,8 @@ export async function fetchUsageFromApi() {
|
|
|
338
385
|
}
|
|
339
386
|
catch { /* ignore */ }
|
|
340
387
|
if (data.error) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
consecutiveFailures++;
|
|
344
|
-
return fileCache?.data ?? null;
|
|
388
|
+
noteFailure(`API error: ${data.error.type}`);
|
|
389
|
+
return stale(fileCache);
|
|
345
390
|
}
|
|
346
391
|
const extraUsage = data.extra_usage;
|
|
347
392
|
const hasRateLimitData = data.five_hour != null || data.seven_day != null;
|
|
@@ -359,17 +404,13 @@ export async function fetchUsageFromApi() {
|
|
|
359
404
|
};
|
|
360
405
|
debug('UsageAPI', `5h: ${result.fiveHourPercent}%, 7d: ${result.sevenDayPercent}%, extra: ${result.extraUsageEnabled ? 'enabled' : 'disabled'}`);
|
|
361
406
|
// Success — reset counters, write cache
|
|
362
|
-
|
|
363
|
-
consecutiveFailures = 0;
|
|
364
|
-
lastTokenStatus = 'valid';
|
|
407
|
+
noteSuccess();
|
|
365
408
|
writeFileCache(result);
|
|
366
|
-
return result;
|
|
409
|
+
return { data: result, fresh: true };
|
|
367
410
|
}
|
|
368
411
|
catch (err) {
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
consecutiveFailures++;
|
|
372
|
-
return fileCache?.data ?? null;
|
|
412
|
+
noteFailure(String(err).slice(0, 160));
|
|
413
|
+
return stale(fileCache);
|
|
373
414
|
}
|
|
374
415
|
}
|
|
375
416
|
// formatResetTime is now in @agentdeck/shared/format-utils
|