@agentdeck/bridge 1.0.22 → 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/cli.d.ts.map +1 -1
- package/dist/cli.js +248 -13
- package/dist/cli.js.map +1 -1
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +100 -4
- 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/review-runner.d.ts.map +1 -1
- package/dist/review-runner.js +27 -9
- package/dist/review-runner.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/package.json +6 -4
|
@@ -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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentdeck/bridge",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=22"
|
|
6
6
|
},
|
|
@@ -49,11 +49,12 @@
|
|
|
49
49
|
"start": "node dist/cli.js claude"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@agentdeck/hooks": "1.0.
|
|
53
|
-
"@agentdeck/shared": "1.0.
|
|
52
|
+
"@agentdeck/hooks": "1.0.23",
|
|
53
|
+
"@agentdeck/shared": "1.0.23",
|
|
54
54
|
"@anthropic-ai/sdk": "^0.111.0",
|
|
55
55
|
"bonjour-service": "^1.3.0",
|
|
56
56
|
"commander": "^14.0.3",
|
|
57
|
+
"esptool-js": "^0.6.1",
|
|
57
58
|
"express": "^5.2.1",
|
|
58
59
|
"qrcode": "^1.5.4",
|
|
59
60
|
"sharp": "^0.34.5",
|
|
@@ -65,7 +66,8 @@
|
|
|
65
66
|
"@picovoice/pvrecorder-node": "^1.2.8",
|
|
66
67
|
"@resvg/resvg-js": "^2.6.2",
|
|
67
68
|
"better-sqlite3": "^12.9.0",
|
|
68
|
-
"node-pty": "^1.1.0"
|
|
69
|
+
"node-pty": "^1.1.0",
|
|
70
|
+
"serialport": "^13.0.0"
|
|
69
71
|
},
|
|
70
72
|
"compatibleClaudeCode": ">=2.1.50",
|
|
71
73
|
"compatibleCodex": ">=0.141.0",
|