@lobu/openclaw-plugin 6.1.1 → 7.1.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/README.md +30 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +337 -307
- package/dist/index.js.map +1 -1
- package/dist/openclaw.plugin.json +14 -0
- package/openclaw.plugin.json +14 -0
- package/package.json +10 -3
package/README.md
CHANGED
|
@@ -32,9 +32,39 @@ Replace `<mcp-url>` with your workspace MCP URL (for example `https://lobu.ai/mc
|
|
|
32
32
|
| `autoRecall` | Search Lobu memory for relevant memories before each prompt. Default `true`. |
|
|
33
33
|
| `recallLimit` | Maximum recalled memory records per request. Default `6`. |
|
|
34
34
|
| `autoCapture` | Capture conversation observations as long-term memories after each session. Default `true`. |
|
|
35
|
+
| `memoryWikiCompat` | Spike/compat mode. `true` (or `{ enabled: true }`) registers OpenClaw memory-wiki tools (`wiki_status`, `wiki_search`, `wiki_get`, `wiki_apply`, `wiki_lint`) and the `memory_search`/`memory_get` aliases. Default `false`. |
|
|
35
36
|
|
|
36
37
|
See [`openclaw.plugin.json`](./openclaw.plugin.json) for the full schema.
|
|
37
38
|
|
|
39
|
+
## Memory-wiki compatibility mode
|
|
40
|
+
|
|
41
|
+
When `memoryWikiCompat` is enabled the plugin registers an OpenClaw-flavoured tool surface backed by existing Lobu MCP primitives — there is no separate wiki vault, no markdown export, and no MCP contract changes.
|
|
42
|
+
|
|
43
|
+
> **MCP surface note.** Watcher and knowledge admin operations (`list_watchers`, `get_watcher`, `read_knowledge`, `manage_watchers`) are registered as `INTERNAL_REST_TOOLS` in Lobu and **not** exposed on the MCP wire (`internal: true` hides them from `tools/list`). The compatibility layer therefore reaches those capabilities by scripting over the ClientSDK via the two MCP tools that *are* exposed for sandboxed execution: `query_sdk` (read-only) and `run_sdk` (writes). The sandbox requires `isolated-vm` in the host process — if it isn't installed, `query_sdk` returns `{ success: false, error: { name: 'RuntimeUnavailable', ... } }` and this layer surfaces it to the agent as a clear error instead of returning empty results.
|
|
44
|
+
|
|
45
|
+
| Compat tool | Backed by | Notes |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| `wiki_status` | `query_sdk` (`client.watchers.list`) + `search_memory` probe | Reports `corpus = memory \| wiki \| all`, watcher count, MCP reachability. The SDK probe failure is caught internally so status itself always returns. |
|
|
48
|
+
| `wiki_search` | `search_memory` for `corpus=memory`; `query_sdk` running a single SDK script that fans out to `client.watchers.list` + `client.knowledge.read({ semantic_type: 'claim' })` + `client.knowledge.read({ semantic_type: 'synthesis' })` for `corpus=wiki`; merges both for `corpus=all` | Short queries (<3 chars) embed `includeContent=false` so the SDK script skips the knowledge calls. |
|
|
49
|
+
| `wiki_get` | `query_sdk` running `client.watchers.get` / `client.knowledge.read({ window_id })` / `client.knowledge.read({ content_ids })` / `client.knowledge.read({ query })` | Lookup parser accepts `event:123`, `watcher:7`, `window:9`, `reports/watchers/4`, or a free-text query. |
|
|
50
|
+
| `wiki_apply` | `save_memory` (MCP) for `create_synthesis`; `run_sdk` running `client.watchers.submitFeedback` for `update_metadata` with `watcher_id`/`window_id`/`corrections`; `save_memory` claim fallback otherwise | Corrections must contain `field_path`; empty or malformed arrays throw before MCP is called. |
|
|
51
|
+
| `wiki_lint` | In-plugin session ring buffer (cap 32) | Warns when `wiki_apply` was called with no evidence, when `status=active` confidence is below `0.5`, and when a wiki/memory search returned zero results. |
|
|
52
|
+
| `memory_search`, `memory_get` | `search_memory` (MCP); `query_sdk` running `client.knowledge.read` | OpenClaw-named aliases. `memory_search` does not route corpus — use `wiki_search` for that. |
|
|
53
|
+
|
|
54
|
+
`corpus` always means `memory | wiki | all` inside the agent's authenticated Lobu org. It is **not** an org/workspace selector.
|
|
55
|
+
|
|
56
|
+
### Tracing the compatibility tools against a live Lobu
|
|
57
|
+
|
|
58
|
+
`scripts/lobu/run-memory-wiki-compat-trace.ts` exercises the compat layer against a running Lobu MCP and emits a markdown comparison alongside the baseline (raw `search_memory`/`read_knowledge`/`list_watchers`) calls:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
LOBU_MCP_URL=http://localhost:8787/mcp/<org-slug> \
|
|
62
|
+
LOBU_MCP_TOKEN=$BENCH_TOKEN \
|
|
63
|
+
bun run scripts/lobu/run-memory-wiki-compat-trace.ts
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The script writes `.lobu/benchmarks/memory/wiki-compat-trace.{md,json}`. It captures tool-surface differences (fan-out, latency, error shape) rather than retrieval recall — the existing retrieval-only benchmark in `packages/server/src/benchmarks/memory/` would show no difference between compat-on and compat-off, since both paths fetch the same underlying records.
|
|
67
|
+
|
|
38
68
|
## License
|
|
39
69
|
|
|
40
70
|
BUSL-1.1. See the repository [LICENSE](../../LICENSE).
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export declare const KNOWN_MCP_TOOL_NAMES: Set<string>;
|
|
2
|
+
export declare const LOGIN_TOOL_NAMES: readonly ["lobu_login", "lobu_login_check"];
|
|
3
|
+
/**
|
|
4
|
+
* Run `work` with a hard wall-clock deadline. On timeout, the supplied
|
|
5
|
+
* `AbortSignal` is aborted (so an in-flight `fetch` cancels instead of
|
|
6
|
+
* lingering) and `onTimeout` is returned regardless of what is still pending.
|
|
7
|
+
* `work` is responsible for swallowing its own rejections; if it rejects after
|
|
8
|
+
* the deadline, the rejection is observed and ignored.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runWithAbortDeadline<T>(work: (signal: AbortSignal) => Promise<T>, timeoutMs: number, onTimeout: T): Promise<T>;
|
|
1
11
|
declare const plugin: {
|
|
2
12
|
id: string;
|
|
3
13
|
name: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,oBAAoB,aAQ/B,CAAC;AAGH,eAAO,MAAM,gBAAgB,6CAA8C,CAAC;AAO5E;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,GACX,OAAO,CAAC,CAAC,CAAC,CAeZ;AA88BD,QAAA,MAAM,MAAM;;;;;kBAKI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAietC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,10 +7,53 @@ import { promisify } from 'node:util';
|
|
|
7
7
|
import { renderFallbackSystemContext } from './lobu-guidance.js';
|
|
8
8
|
const AUTH_REQUIRED_MSG = 'Lobu memory is not connected. Call the lobu_login tool to authenticate, then show the user the login URL and code. After the user completes login in their browser, call lobu_login_check to finish authentication.';
|
|
9
9
|
const DEFAULT_RECALL_LIMIT = 6;
|
|
10
|
-
//
|
|
11
|
-
//
|
|
10
|
+
// Lobu MCP server tools exposed via `tools/list` (see packages/server/src/tools/registry.ts).
|
|
11
|
+
// Each is registered with OpenClaw as `lobu_<name>`. OpenClaw 2026.5.x requires every
|
|
12
|
+
// runtime-registered tool to appear in `contracts.tools` in openclaw.plugin.json — keep the
|
|
13
|
+
// `lobu_*` entries there in sync with this set (a unit test enforces it). Server tools not
|
|
14
|
+
// listed here are skipped rather than registered (and rejected) until this plugin is updated
|
|
15
|
+
// to declare them.
|
|
16
|
+
export const KNOWN_MCP_TOOL_NAMES = new Set([
|
|
17
|
+
'search_memory',
|
|
18
|
+
'save_memory',
|
|
19
|
+
'list_organizations',
|
|
20
|
+
'search_sdk',
|
|
21
|
+
'query_sdk',
|
|
22
|
+
'query_sql',
|
|
23
|
+
'run_sdk',
|
|
24
|
+
]);
|
|
25
|
+
// Auth tools the plugin always registers in standalone mode (see register()).
|
|
26
|
+
export const LOGIN_TOOL_NAMES = ['lobu_login', 'lobu_login_check'];
|
|
27
|
+
// `before_prompt_build` / `before_agent_start` run inside OpenClaw's hook budget
|
|
28
|
+
// (~15s) — a slow `search_memory` must not blow that. Bound the recall round-trip
|
|
29
|
+
// well under it and degrade to "no recall" rather than letting OpenClaw kill the hook.
|
|
30
|
+
const RECALL_TIMEOUT_MS = 8_000;
|
|
31
|
+
/**
|
|
32
|
+
* Run `work` with a hard wall-clock deadline. On timeout, the supplied
|
|
33
|
+
* `AbortSignal` is aborted (so an in-flight `fetch` cancels instead of
|
|
34
|
+
* lingering) and `onTimeout` is returned regardless of what is still pending.
|
|
35
|
+
* `work` is responsible for swallowing its own rejections; if it rejects after
|
|
36
|
+
* the deadline, the rejection is observed and ignored.
|
|
37
|
+
*/
|
|
38
|
+
export async function runWithAbortDeadline(work, timeoutMs, onTimeout) {
|
|
39
|
+
const controller = new AbortController();
|
|
40
|
+
let timer;
|
|
41
|
+
const deadline = new Promise((resolveDeadline) => {
|
|
42
|
+
timer = setTimeout(() => {
|
|
43
|
+
controller.abort();
|
|
44
|
+
resolveDeadline(onTimeout);
|
|
45
|
+
}, timeoutMs);
|
|
46
|
+
});
|
|
47
|
+
const guarded = work(controller.signal).catch(() => onTimeout);
|
|
48
|
+
try {
|
|
49
|
+
return await Promise.race([guarded, deadline]);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
if (timer)
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
12
56
|
let FALLBACK_SYSTEM_CONTEXT = null;
|
|
13
|
-
// Workspace instructions fetched from MCP server (includes entity types, event kinds, schemas).
|
|
14
57
|
let cachedWorkspaceInstructions = null;
|
|
15
58
|
const DEFAULT_RPC_VERSION = '2.0';
|
|
16
59
|
const DEFAULT_MCP_SCOPE = 'mcp:read mcp:write profile:read';
|
|
@@ -25,19 +68,16 @@ const PLUGIN_VERSION = (() => {
|
|
|
25
68
|
return '0.0.0';
|
|
26
69
|
}
|
|
27
70
|
})();
|
|
28
|
-
// Session-level token obtained via device code login flow
|
|
29
71
|
let sessionToken = null;
|
|
30
|
-
|
|
31
|
-
let _sessionRefreshToken = null;
|
|
72
|
+
let sessionRefreshToken = null;
|
|
32
73
|
let sessionClientId = null;
|
|
33
74
|
let sessionClientSecret = null;
|
|
34
75
|
let sessionIssuer = null;
|
|
35
|
-
// MCP Streamable HTTP session ID (obtained from initialize handshake)
|
|
36
76
|
let mcpSessionId = null;
|
|
37
77
|
const MCP_PROTOCOL_VERSION = '2025-03-26';
|
|
38
78
|
// Make an MCP JSON-RPC request with session management.
|
|
39
79
|
// Server returns plain JSON when Accept doesn't include text/event-stream.
|
|
40
|
-
async function mcpFetch(url, body, extraHeaders) {
|
|
80
|
+
async function mcpFetch(url, body, extraHeaders, signal) {
|
|
41
81
|
const headers = {
|
|
42
82
|
'Content-Type': 'application/json',
|
|
43
83
|
Accept: 'application/json',
|
|
@@ -50,16 +90,46 @@ async function mcpFetch(url, body, extraHeaders) {
|
|
|
50
90
|
method: 'POST',
|
|
51
91
|
headers,
|
|
52
92
|
body: JSON.stringify(body),
|
|
93
|
+
signal,
|
|
53
94
|
});
|
|
54
95
|
const newSessionId = response.headers.get('mcp-session-id');
|
|
55
96
|
if (newSessionId) {
|
|
56
97
|
mcpSessionId = newSessionId;
|
|
57
98
|
}
|
|
58
|
-
|
|
99
|
+
// A misbehaving proxy can return HTML (502/504) or empty body — never let
|
|
100
|
+
// a non-JSON payload throw out of mcpFetch and bury the HTTP status. The
|
|
101
|
+
// caller inspects `response.ok` / `response.status` and `parseErrorMessage`
|
|
102
|
+
// tolerates `data` being null.
|
|
103
|
+
let data = null;
|
|
104
|
+
try {
|
|
105
|
+
data = await response.json();
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
data = null;
|
|
109
|
+
}
|
|
59
110
|
return { data, response };
|
|
60
111
|
}
|
|
61
112
|
// Worker daemon process (auto-started after login)
|
|
62
113
|
let workerProcess = null;
|
|
114
|
+
let workerCleanupRegistered = false;
|
|
115
|
+
function registerWorkerCleanupOnce() {
|
|
116
|
+
if (workerCleanupRegistered)
|
|
117
|
+
return;
|
|
118
|
+
workerCleanupRegistered = true;
|
|
119
|
+
const cleanup = () => {
|
|
120
|
+
if (workerProcess && workerProcess.exitCode === null && !workerProcess.killed) {
|
|
121
|
+
try {
|
|
122
|
+
workerProcess.kill();
|
|
123
|
+
}
|
|
124
|
+
catch { }
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
// Module-scope registration prevents listener accumulation across re-registers
|
|
128
|
+
// (would otherwise trip MaxListenersExceededWarning).
|
|
129
|
+
process.on('exit', cleanup);
|
|
130
|
+
process.on('SIGINT', cleanup);
|
|
131
|
+
process.on('SIGTERM', cleanup);
|
|
132
|
+
}
|
|
63
133
|
function getTokenStorePath() {
|
|
64
134
|
return resolve(homedir(), '.lobu', 'openclaw-auth.json');
|
|
65
135
|
}
|
|
@@ -116,9 +186,9 @@ function saveStoredSession(mcpUrl, data) {
|
|
|
116
186
|
updatedAt: new Date().toISOString(),
|
|
117
187
|
};
|
|
118
188
|
store.activeServer = key;
|
|
119
|
-
// Keep legacy field for backward compat with older CLI versions
|
|
120
189
|
store.activeContext = key;
|
|
121
|
-
|
|
190
|
+
// 0o700 on the parent dir, 0o600 on the file — both hold OAuth tokens.
|
|
191
|
+
mkdirSync(dirname(storePath), { recursive: true, mode: 0o700 });
|
|
122
192
|
writeFileSync(storePath, JSON.stringify(store, null, 2) + '\n', { mode: 0o600 });
|
|
123
193
|
}
|
|
124
194
|
const fallbackLogger = {
|
|
@@ -154,12 +224,7 @@ function getLogger(api) {
|
|
|
154
224
|
}
|
|
155
225
|
function getHookRegistrar(api) {
|
|
156
226
|
const on = api.on;
|
|
157
|
-
|
|
158
|
-
return on;
|
|
159
|
-
}
|
|
160
|
-
return () => {
|
|
161
|
-
/* no-op */
|
|
162
|
-
};
|
|
227
|
+
return typeof on === 'function' ? on : () => { };
|
|
163
228
|
}
|
|
164
229
|
function readPluginConfig(api, pluginId) {
|
|
165
230
|
if (isRecord(api.pluginConfig)) {
|
|
@@ -261,58 +326,9 @@ function hasAuthConfigured(config) {
|
|
|
261
326
|
function getWorkerToken() {
|
|
262
327
|
return asString(process.env.WORKER_TOKEN);
|
|
263
328
|
}
|
|
264
|
-
async function gatewayDeviceAuthStart(gatewayAuthUrl) {
|
|
265
|
-
const workerToken = getWorkerToken();
|
|
266
|
-
if (!workerToken)
|
|
267
|
-
throw new Error('WORKER_TOKEN not set');
|
|
268
|
-
const response = await fetch(`${gatewayAuthUrl}/internal/device-auth/start`, {
|
|
269
|
-
method: 'POST',
|
|
270
|
-
headers: {
|
|
271
|
-
'Content-Type': 'application/json',
|
|
272
|
-
Authorization: `Bearer ${workerToken}`,
|
|
273
|
-
},
|
|
274
|
-
body: JSON.stringify({ mcpId: 'lobu' }),
|
|
275
|
-
});
|
|
276
|
-
if (!response.ok) {
|
|
277
|
-
const errText = await response.text();
|
|
278
|
-
throw new Error(`Gateway device auth start failed: ${errText}`);
|
|
279
|
-
}
|
|
280
|
-
return (await response.json());
|
|
281
|
-
}
|
|
282
|
-
async function gatewayDeviceAuthPoll(gatewayAuthUrl) {
|
|
283
|
-
const workerToken = getWorkerToken();
|
|
284
|
-
if (!workerToken)
|
|
285
|
-
throw new Error('WORKER_TOKEN not set');
|
|
286
|
-
const response = await fetch(`${gatewayAuthUrl}/internal/device-auth/poll`, {
|
|
287
|
-
method: 'POST',
|
|
288
|
-
headers: {
|
|
289
|
-
'Content-Type': 'application/json',
|
|
290
|
-
Authorization: `Bearer ${workerToken}`,
|
|
291
|
-
},
|
|
292
|
-
body: JSON.stringify({ mcpId: 'lobu' }),
|
|
293
|
-
});
|
|
294
|
-
return (await response.json());
|
|
295
|
-
}
|
|
296
|
-
async function gatewayDeviceAuthCheck(gatewayAuthUrl) {
|
|
297
|
-
const workerToken = getWorkerToken();
|
|
298
|
-
if (!workerToken)
|
|
299
|
-
return false;
|
|
300
|
-
try {
|
|
301
|
-
const response = await fetch(`${gatewayAuthUrl}/internal/device-auth/status?mcpId=lobu`, {
|
|
302
|
-
headers: { Authorization: `Bearer ${workerToken}` },
|
|
303
|
-
});
|
|
304
|
-
if (!response.ok)
|
|
305
|
-
return false;
|
|
306
|
-
const data = (await response.json());
|
|
307
|
-
return !!data.authenticated;
|
|
308
|
-
}
|
|
309
|
-
catch {
|
|
310
|
-
return false;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
329
|
function clearSessionTokens() {
|
|
314
330
|
sessionToken = null;
|
|
315
|
-
|
|
331
|
+
sessionRefreshToken = null;
|
|
316
332
|
}
|
|
317
333
|
function deriveOAuthBaseUrl(mcpUrl) {
|
|
318
334
|
const base = new URL(mcpUrl);
|
|
@@ -338,21 +354,15 @@ function spawnWorkerDaemon(mcpUrl, accessToken, log) {
|
|
|
338
354
|
env: { ...process.env, WORKER_API_TOKEN: accessToken },
|
|
339
355
|
});
|
|
340
356
|
workerProcess.unref();
|
|
357
|
+
// `spawn()` can throw synchronously for some failures, but missing
|
|
358
|
+
// binaries / EACCES / EPERM surface as an async 'error' event. Without
|
|
359
|
+
// a listener Node treats the error as uncaught and crashes the gateway.
|
|
360
|
+
workerProcess.on('error', (err) => {
|
|
361
|
+
log.warn(`lobu: worker daemon process error: ${err instanceof Error ? err.message : String(err)}`);
|
|
362
|
+
workerProcess = null;
|
|
363
|
+
});
|
|
341
364
|
log.info(`lobu: worker daemon spawned (pid=${workerProcess.pid})`);
|
|
342
|
-
|
|
343
|
-
const cleanup = () => {
|
|
344
|
-
if (workerProcess && workerProcess.exitCode === null && !workerProcess.killed) {
|
|
345
|
-
try {
|
|
346
|
-
workerProcess.kill();
|
|
347
|
-
}
|
|
348
|
-
catch {
|
|
349
|
-
// Best-effort cleanup
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
process.on('exit', cleanup);
|
|
354
|
-
process.on('SIGINT', cleanup);
|
|
355
|
-
process.on('SIGTERM', cleanup);
|
|
365
|
+
registerWorkerCleanupOnce();
|
|
356
366
|
}
|
|
357
367
|
catch (err) {
|
|
358
368
|
log.warn(`lobu: failed to spawn worker daemon: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -374,7 +384,7 @@ async function initiateDeviceLogin(mcpUrl, scope, resource) {
|
|
|
374
384
|
}),
|
|
375
385
|
});
|
|
376
386
|
if (!regResponse.ok) {
|
|
377
|
-
const errText = await regResponse.text();
|
|
387
|
+
const errText = (await regResponse.text()).slice(0, 500);
|
|
378
388
|
throw new Error(`Client registration failed: ${errText}`);
|
|
379
389
|
}
|
|
380
390
|
const registration = (await regResponse.json());
|
|
@@ -389,7 +399,7 @@ async function initiateDeviceLogin(mcpUrl, scope, resource) {
|
|
|
389
399
|
}),
|
|
390
400
|
});
|
|
391
401
|
if (!deviceResponse.ok) {
|
|
392
|
-
const errText = await deviceResponse.text();
|
|
402
|
+
const errText = (await deviceResponse.text()).slice(0, 500);
|
|
393
403
|
throw new Error(`Device authorization failed: ${errText}`);
|
|
394
404
|
}
|
|
395
405
|
const deviceAuth = (await deviceResponse.json());
|
|
@@ -443,51 +453,129 @@ async function pollDeviceLogin(state) {
|
|
|
443
453
|
const desc = typeof data.error_description === 'string' ? data.error_description : error;
|
|
444
454
|
return { status: 'error', message: desc || 'Unknown error during login' };
|
|
445
455
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
456
|
+
/**
|
|
457
|
+
* Synchronous variant of {@link tryRefreshToken}, used at plugin `register()`
|
|
458
|
+
* time before the worker daemon is spawned. The daemon reads `WORKER_API_TOKEN`
|
|
459
|
+
* from its env once at process start, so a lazy refresh in `callMcpTool` (which
|
|
460
|
+
* only updates the in-process `sessionToken`) wouldn't reach it — we must hand
|
|
461
|
+
* the daemon a fresh token up front. Runs the refresh in a short-lived `node -e`
|
|
462
|
+
* subprocess; the OAuth params are passed via env vars, never interpolated into
|
|
463
|
+
* the script source.
|
|
464
|
+
*/
|
|
465
|
+
function refreshStoredTokenSync(mcpUrl) {
|
|
466
|
+
if (!sessionRefreshToken || !sessionClientId || !sessionIssuer)
|
|
467
|
+
return;
|
|
468
|
+
const body = {
|
|
469
|
+
grant_type: 'refresh_token',
|
|
470
|
+
client_id: sessionClientId,
|
|
471
|
+
refresh_token: sessionRefreshToken,
|
|
472
|
+
};
|
|
473
|
+
if (sessionClientSecret)
|
|
474
|
+
body.client_secret = sessionClientSecret;
|
|
475
|
+
const script = `
|
|
476
|
+
async function run() {
|
|
477
|
+
const r = await fetch(process.env.__TOKEN_URL, {
|
|
478
|
+
method: 'POST',
|
|
479
|
+
headers: { 'Content-Type': 'application/json' },
|
|
480
|
+
body: process.env.__TOKEN_BODY,
|
|
481
|
+
});
|
|
482
|
+
if (!r.ok) return;
|
|
483
|
+
const d = await r.json();
|
|
484
|
+
process.stdout.write(JSON.stringify({ access_token: d.access_token, refresh_token: d.refresh_token }));
|
|
485
|
+
}
|
|
486
|
+
run().catch(() => {});
|
|
487
|
+
`;
|
|
449
488
|
try {
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (typeof data.refresh_token === 'string') {
|
|
470
|
-
_sessionRefreshToken = data.refresh_token;
|
|
471
|
-
}
|
|
472
|
-
// Persist refreshed tokens
|
|
489
|
+
const out = spawnSync('node', ['-e', script], {
|
|
490
|
+
timeout: 10_000,
|
|
491
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
492
|
+
env: {
|
|
493
|
+
...process.env,
|
|
494
|
+
__TOKEN_URL: `${sessionIssuer}/oauth/token`,
|
|
495
|
+
__TOKEN_BODY: JSON.stringify(body),
|
|
496
|
+
},
|
|
497
|
+
})
|
|
498
|
+
.stdout?.toString()
|
|
499
|
+
.trim();
|
|
500
|
+
if (!out)
|
|
501
|
+
return;
|
|
502
|
+
const tokens = JSON.parse(out);
|
|
503
|
+
if (typeof tokens.access_token !== 'string')
|
|
504
|
+
return;
|
|
505
|
+
sessionToken = tokens.access_token;
|
|
506
|
+
if (typeof tokens.refresh_token === 'string')
|
|
507
|
+
sessionRefreshToken = tokens.refresh_token;
|
|
473
508
|
try {
|
|
474
509
|
saveStoredSession(mcpUrl, {
|
|
475
510
|
issuer: sessionIssuer,
|
|
476
511
|
clientId: sessionClientId,
|
|
477
512
|
clientSecret: sessionClientSecret,
|
|
478
|
-
refreshToken:
|
|
513
|
+
refreshToken: sessionRefreshToken,
|
|
479
514
|
accessToken: sessionToken,
|
|
480
515
|
});
|
|
481
516
|
}
|
|
482
|
-
catch {
|
|
483
|
-
// Best-effort persist
|
|
484
|
-
}
|
|
485
|
-
return true;
|
|
517
|
+
catch { }
|
|
486
518
|
}
|
|
487
519
|
catch {
|
|
488
|
-
|
|
520
|
+
// Fall back to the persisted (possibly stale) token.
|
|
489
521
|
}
|
|
490
522
|
}
|
|
523
|
+
// Refresh tokens are single-use on most OAuth servers: if two concurrent
|
|
524
|
+
// callers both hit a 401 they'd each post the same refresh_token and the
|
|
525
|
+
// second request would fail (or worse, invalidate the just-issued access
|
|
526
|
+
// token). Funnel concurrent refreshes through a single in-flight promise.
|
|
527
|
+
let inFlightRefresh = null;
|
|
528
|
+
async function tryRefreshToken(mcpUrl) {
|
|
529
|
+
if (!sessionRefreshToken || !sessionClientId || !sessionIssuer)
|
|
530
|
+
return false;
|
|
531
|
+
if (inFlightRefresh)
|
|
532
|
+
return inFlightRefresh;
|
|
533
|
+
inFlightRefresh = (async () => {
|
|
534
|
+
try {
|
|
535
|
+
const body = {
|
|
536
|
+
grant_type: 'refresh_token',
|
|
537
|
+
client_id: sessionClientId,
|
|
538
|
+
refresh_token: sessionRefreshToken,
|
|
539
|
+
};
|
|
540
|
+
if (sessionClientSecret) {
|
|
541
|
+
body.client_secret = sessionClientSecret;
|
|
542
|
+
}
|
|
543
|
+
const response = await fetch(`${sessionIssuer}/oauth/token`, {
|
|
544
|
+
method: 'POST',
|
|
545
|
+
headers: { 'Content-Type': 'application/json' },
|
|
546
|
+
body: JSON.stringify(body),
|
|
547
|
+
signal: AbortSignal.timeout(30_000),
|
|
548
|
+
});
|
|
549
|
+
if (!response.ok)
|
|
550
|
+
return false;
|
|
551
|
+
const data = (await response.json());
|
|
552
|
+
if (typeof data.access_token !== 'string')
|
|
553
|
+
return false;
|
|
554
|
+
sessionToken = data.access_token;
|
|
555
|
+
if (typeof data.refresh_token === 'string') {
|
|
556
|
+
sessionRefreshToken = data.refresh_token;
|
|
557
|
+
}
|
|
558
|
+
try {
|
|
559
|
+
saveStoredSession(mcpUrl, {
|
|
560
|
+
issuer: sessionIssuer,
|
|
561
|
+
clientId: sessionClientId,
|
|
562
|
+
clientSecret: sessionClientSecret,
|
|
563
|
+
refreshToken: sessionRefreshToken,
|
|
564
|
+
accessToken: sessionToken,
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
catch { }
|
|
568
|
+
return true;
|
|
569
|
+
}
|
|
570
|
+
catch {
|
|
571
|
+
return false;
|
|
572
|
+
}
|
|
573
|
+
finally {
|
|
574
|
+
inFlightRefresh = null;
|
|
575
|
+
}
|
|
576
|
+
})();
|
|
577
|
+
return inFlightRefresh;
|
|
578
|
+
}
|
|
491
579
|
async function reinitializeMcpSession(config) {
|
|
492
580
|
if (!config.mcpUrl)
|
|
493
581
|
return false;
|
|
@@ -525,12 +613,15 @@ async function reinitializeMcpSession(config) {
|
|
|
525
613
|
return false;
|
|
526
614
|
}
|
|
527
615
|
}
|
|
528
|
-
async function callMcpTool(config, toolName, args) {
|
|
616
|
+
async function callMcpTool(config, toolName, args, options) {
|
|
529
617
|
if (!config.mcpUrl)
|
|
530
618
|
return null;
|
|
531
619
|
const token = await resolveAuthToken(config);
|
|
532
620
|
const rpcId = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
533
621
|
const authHeaders = { ...config.headers };
|
|
622
|
+
if (options?.rawJson) {
|
|
623
|
+
authHeaders['X-MCP-Format'] = 'json';
|
|
624
|
+
}
|
|
534
625
|
if (token) {
|
|
535
626
|
authHeaders.Authorization = `Bearer ${token}`;
|
|
536
627
|
}
|
|
@@ -540,21 +631,17 @@ async function callMcpTool(config, toolName, args) {
|
|
|
540
631
|
method: 'tools/call',
|
|
541
632
|
params: { name: toolName, arguments: args },
|
|
542
633
|
};
|
|
543
|
-
let
|
|
544
|
-
try {
|
|
545
|
-
result = await mcpFetch(config.mcpUrl, rpcBody, authHeaders);
|
|
546
|
-
}
|
|
547
|
-
catch (err) {
|
|
548
|
-
throw new Error(`MCP fetch failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
549
|
-
}
|
|
550
|
-
let { data, response } = result;
|
|
634
|
+
let { data, response } = await mcpFetch(config.mcpUrl, rpcBody, authHeaders, options?.signal);
|
|
551
635
|
// Auto-refresh on 401/403 if we have a refresh token
|
|
552
636
|
if ((response.status === 401 || response.status === 403) && config.mcpUrl) {
|
|
637
|
+
if (options?.signal?.aborted) {
|
|
638
|
+
throw new Error('aborted');
|
|
639
|
+
}
|
|
553
640
|
const refreshed = await tryRefreshToken(config.mcpUrl);
|
|
554
|
-
if (refreshed && sessionToken) {
|
|
641
|
+
if (refreshed && sessionToken && !options?.signal?.aborted) {
|
|
555
642
|
authHeaders.Authorization = `Bearer ${sessionToken}`;
|
|
556
643
|
const retryBody = { ...rpcBody, id: `${rpcId}-retry` };
|
|
557
|
-
const retry = await mcpFetch(config.mcpUrl, retryBody, authHeaders);
|
|
644
|
+
const retry = await mcpFetch(config.mcpUrl, retryBody, authHeaders, options?.signal);
|
|
558
645
|
data = retry.data;
|
|
559
646
|
response = retry.response;
|
|
560
647
|
}
|
|
@@ -572,7 +659,7 @@ async function callMcpTool(config, toolName, args) {
|
|
|
572
659
|
const newSession = await reinitializeMcpSession(config);
|
|
573
660
|
if (newSession) {
|
|
574
661
|
const retryBody = { ...rpcBody, id: `${rpcId}-reinit` };
|
|
575
|
-
const retry = await mcpFetch(config.mcpUrl, retryBody, authHeaders);
|
|
662
|
+
const retry = await mcpFetch(config.mcpUrl, retryBody, authHeaders, options?.signal);
|
|
576
663
|
data = retry.data;
|
|
577
664
|
response = retry.response;
|
|
578
665
|
}
|
|
@@ -625,6 +712,11 @@ function extractTextFromContent(content) {
|
|
|
625
712
|
.join('\n');
|
|
626
713
|
}
|
|
627
714
|
async function fetchWorkspaceInstructions(config, log) {
|
|
715
|
+
// Called fire-and-forget from `lobu_login_check`. Without a deadline a
|
|
716
|
+
// hanging MCP server keeps the awaiter alive indefinitely (and pins the
|
|
717
|
+
// plugin's auth state). Bound it the same way recall is bounded.
|
|
718
|
+
const controller = new AbortController();
|
|
719
|
+
const timer = setTimeout(() => controller.abort(), RECALL_TIMEOUT_MS);
|
|
628
720
|
try {
|
|
629
721
|
const token = await resolveAuthToken(config);
|
|
630
722
|
const authHeaders = { ...config.headers };
|
|
@@ -639,7 +731,7 @@ async function fetchWorkspaceInstructions(config, log) {
|
|
|
639
731
|
capabilities: {},
|
|
640
732
|
clientInfo: { name: 'openclaw-lobu', version: '1.0.0' },
|
|
641
733
|
},
|
|
642
|
-
}, authHeaders);
|
|
734
|
+
}, authHeaders, controller.signal);
|
|
643
735
|
if (!response.ok)
|
|
644
736
|
return;
|
|
645
737
|
const rpcResponse = isRecord(data) ? data : null;
|
|
@@ -654,6 +746,9 @@ async function fetchWorkspaceInstructions(config, log) {
|
|
|
654
746
|
catch (err) {
|
|
655
747
|
log.warn(`lobu: failed to fetch workspace instructions: ${err instanceof Error ? err.message : String(err)}`);
|
|
656
748
|
}
|
|
749
|
+
finally {
|
|
750
|
+
clearTimeout(timer);
|
|
751
|
+
}
|
|
657
752
|
}
|
|
658
753
|
function fetchMcpBootstrapSync(config) {
|
|
659
754
|
if (!config.mcpUrl) {
|
|
@@ -727,7 +822,12 @@ function registerMcpTools(config, registerTool, log) {
|
|
|
727
822
|
log.warn('lobu: no MCP tools found (or fetch failed)');
|
|
728
823
|
return;
|
|
729
824
|
}
|
|
825
|
+
let registered = 0;
|
|
730
826
|
for (const tool of tools) {
|
|
827
|
+
if (!KNOWN_MCP_TOOL_NAMES.has(tool.name)) {
|
|
828
|
+
log.warn(`lobu: MCP server exposes tool "${tool.name}" not declared in contracts.tools; skipping. Update @lobu/openclaw-plugin to register it.`);
|
|
829
|
+
continue;
|
|
830
|
+
}
|
|
731
831
|
registerTool({
|
|
732
832
|
name: `lobu_${tool.name}`,
|
|
733
833
|
label: tool.name.replace(/_/g, ' '),
|
|
@@ -738,8 +838,9 @@ function registerMcpTools(config, registerTool, log) {
|
|
|
738
838
|
return { content: result?.content ?? [], details: {} };
|
|
739
839
|
},
|
|
740
840
|
});
|
|
841
|
+
registered++;
|
|
741
842
|
}
|
|
742
|
-
log.info(`lobu: registered ${
|
|
843
|
+
log.info(`lobu: registered ${registered} MCP tools`);
|
|
743
844
|
}
|
|
744
845
|
const plugin = {
|
|
745
846
|
id: 'openclaw-lobu',
|
|
@@ -756,12 +857,10 @@ const plugin = {
|
|
|
756
857
|
if (!config.mcpUrl) {
|
|
757
858
|
log.warn('lobu: missing config.mcpUrl (plugins.entries.openclaw-lobu.config.mcpUrl)');
|
|
758
859
|
}
|
|
759
|
-
// Initialize fallback system context based on mode
|
|
760
860
|
FALLBACK_SYSTEM_CONTEXT = renderFallbackSystemContext({
|
|
761
861
|
gatewayMode: !!config.gatewayAuthUrl,
|
|
762
862
|
});
|
|
763
|
-
//
|
|
764
|
-
// Load persisted token if no auth is configured via config/env (standalone mode only)
|
|
863
|
+
// Load persisted token in standalone mode when no auth is configured via config/env.
|
|
765
864
|
if (config.mcpUrl &&
|
|
766
865
|
!config.gatewayAuthUrl &&
|
|
767
866
|
!config.token &&
|
|
@@ -770,61 +869,15 @@ const plugin = {
|
|
|
770
869
|
const stored = loadStoredSession(config.mcpUrl);
|
|
771
870
|
if (stored?.accessToken) {
|
|
772
871
|
sessionToken = stored.accessToken;
|
|
773
|
-
|
|
872
|
+
sessionRefreshToken = stored.refreshToken || null;
|
|
774
873
|
sessionClientId = stored.clientId || null;
|
|
775
874
|
sessionClientSecret = stored.clientSecret || null;
|
|
776
875
|
sessionIssuer = stored.issuer || null;
|
|
777
|
-
//
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
client_id: sessionClientId,
|
|
783
|
-
refresh_token: _sessionRefreshToken,
|
|
784
|
-
};
|
|
785
|
-
if (sessionClientSecret)
|
|
786
|
-
body.client_secret = sessionClientSecret;
|
|
787
|
-
// spawnSync imported at top-level (ESM-safe)
|
|
788
|
-
const scriptCode = [
|
|
789
|
-
'async function run() {',
|
|
790
|
-
` const r = await fetch(${JSON.stringify(sessionIssuer + '/oauth/token')}, {`,
|
|
791
|
-
' method: "POST",',
|
|
792
|
-
' headers: { "Content-Type": "application/json" },',
|
|
793
|
-
` body: ${JSON.stringify(JSON.stringify(body))},`,
|
|
794
|
-
' });',
|
|
795
|
-
' if (!r.ok) return;',
|
|
796
|
-
' const d = await r.json();',
|
|
797
|
-
' process.stdout.write(JSON.stringify({ access_token: d.access_token, refresh_token: d.refresh_token }));',
|
|
798
|
-
'}',
|
|
799
|
-
'run().catch(() => {});',
|
|
800
|
-
].join('\n');
|
|
801
|
-
const proc = spawnSync('node', ['-e', scriptCode], {
|
|
802
|
-
timeout: 10_000,
|
|
803
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
804
|
-
});
|
|
805
|
-
const out = proc.stdout?.toString().trim() ?? '';
|
|
806
|
-
if (out) {
|
|
807
|
-
const tokens = JSON.parse(out);
|
|
808
|
-
if (tokens.access_token) {
|
|
809
|
-
sessionToken = tokens.access_token;
|
|
810
|
-
if (tokens.refresh_token)
|
|
811
|
-
_sessionRefreshToken = tokens.refresh_token;
|
|
812
|
-
saveStoredSession(config.mcpUrl, {
|
|
813
|
-
issuer: sessionIssuer,
|
|
814
|
-
clientId: sessionClientId,
|
|
815
|
-
clientSecret: sessionClientSecret,
|
|
816
|
-
refreshToken: _sessionRefreshToken,
|
|
817
|
-
accessToken: sessionToken,
|
|
818
|
-
});
|
|
819
|
-
log.info('lobu: refreshed expired access token');
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
catch (refreshErr) {
|
|
824
|
-
log.warn(`lobu: token refresh failed: ${refreshErr instanceof Error ? refreshErr.message : String(refreshErr)}`);
|
|
825
|
-
}
|
|
826
|
-
}
|
|
827
|
-
// Auto-start worker daemon with (possibly refreshed) token
|
|
876
|
+
// The persisted access token may be expired — refresh it before
|
|
877
|
+
// spawning the daemon, which captures WORKER_API_TOKEN at process start
|
|
878
|
+
// and won't see a later lazy refresh from callMcpTool.
|
|
879
|
+
refreshStoredTokenSync(config.mcpUrl);
|
|
880
|
+
// Auto-start worker daemon with the (possibly refreshed) token
|
|
828
881
|
spawnWorkerDaemon(config.mcpUrl, sessionToken, log);
|
|
829
882
|
}
|
|
830
883
|
}
|
|
@@ -844,43 +897,6 @@ const plugin = {
|
|
|
844
897
|
},
|
|
845
898
|
execute: async () => {
|
|
846
899
|
try {
|
|
847
|
-
// Gateway mode: delegate to gateway device-auth endpoints
|
|
848
|
-
if (config.gatewayAuthUrl) {
|
|
849
|
-
// Check if already authenticated via gateway
|
|
850
|
-
const alreadyAuth = await gatewayDeviceAuthCheck(config.gatewayAuthUrl);
|
|
851
|
-
if (alreadyAuth) {
|
|
852
|
-
return {
|
|
853
|
-
content: [
|
|
854
|
-
{
|
|
855
|
-
type: 'text',
|
|
856
|
-
text: JSON.stringify({
|
|
857
|
-
status: 'already_authenticated',
|
|
858
|
-
message: "You are already authenticated with Lobu. Do NOT call lobu_login again. Proceed directly with the user's request using the available lobu tools.",
|
|
859
|
-
}),
|
|
860
|
-
},
|
|
861
|
-
],
|
|
862
|
-
details: {},
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
const started = await gatewayDeviceAuthStart(config.gatewayAuthUrl);
|
|
866
|
-
return {
|
|
867
|
-
content: [
|
|
868
|
-
{
|
|
869
|
-
type: 'text',
|
|
870
|
-
text: JSON.stringify({
|
|
871
|
-
status: 'login_started',
|
|
872
|
-
message: 'Open this URL in your browser and enter the code to connect Lobu:',
|
|
873
|
-
verification_url: started.verificationUriComplete || started.verificationUri,
|
|
874
|
-
user_code: started.userCode,
|
|
875
|
-
expires_in_seconds: started.expiresIn,
|
|
876
|
-
next_step: 'After the user completes login in their browser, call lobu_login_check to finish authentication.',
|
|
877
|
-
}),
|
|
878
|
-
},
|
|
879
|
-
],
|
|
880
|
-
details: {},
|
|
881
|
-
};
|
|
882
|
-
}
|
|
883
|
-
// Standalone mode: direct device flow
|
|
884
900
|
if (sessionToken) {
|
|
885
901
|
return {
|
|
886
902
|
content: [
|
|
@@ -940,57 +956,6 @@ const plugin = {
|
|
|
940
956
|
},
|
|
941
957
|
execute: async () => {
|
|
942
958
|
try {
|
|
943
|
-
// Gateway mode: poll gateway for completion
|
|
944
|
-
if (config.gatewayAuthUrl) {
|
|
945
|
-
const result = await gatewayDeviceAuthPoll(config.gatewayAuthUrl);
|
|
946
|
-
if (result.status === 'complete') {
|
|
947
|
-
log.info('lobu: gateway device auth completed');
|
|
948
|
-
// Fetch workspace instructions now that we're authenticated
|
|
949
|
-
if (!cachedWorkspaceInstructions) {
|
|
950
|
-
fetchWorkspaceInstructions(config, log);
|
|
951
|
-
}
|
|
952
|
-
return {
|
|
953
|
-
content: [
|
|
954
|
-
{
|
|
955
|
-
type: 'text',
|
|
956
|
-
text: JSON.stringify({
|
|
957
|
-
status: 'authenticated',
|
|
958
|
-
message: 'Lobu login successful! Memory tools are now available for this session.',
|
|
959
|
-
}),
|
|
960
|
-
},
|
|
961
|
-
],
|
|
962
|
-
details: {},
|
|
963
|
-
};
|
|
964
|
-
}
|
|
965
|
-
if (result.status === 'pending') {
|
|
966
|
-
return {
|
|
967
|
-
content: [
|
|
968
|
-
{
|
|
969
|
-
type: 'text',
|
|
970
|
-
text: JSON.stringify({
|
|
971
|
-
status: 'pending',
|
|
972
|
-
message: 'Waiting for user to approve in browser...',
|
|
973
|
-
next_step: 'Wait a few seconds, then call lobu_login_check again.',
|
|
974
|
-
}),
|
|
975
|
-
},
|
|
976
|
-
],
|
|
977
|
-
details: {},
|
|
978
|
-
};
|
|
979
|
-
}
|
|
980
|
-
return {
|
|
981
|
-
content: [
|
|
982
|
-
{
|
|
983
|
-
type: 'text',
|
|
984
|
-
text: JSON.stringify({
|
|
985
|
-
status: 'error',
|
|
986
|
-
message: result.message || 'Device auth failed',
|
|
987
|
-
}),
|
|
988
|
-
},
|
|
989
|
-
],
|
|
990
|
-
details: {},
|
|
991
|
-
};
|
|
992
|
-
}
|
|
993
|
-
// Standalone mode: direct device flow polling
|
|
994
959
|
if (!activeDeviceLogin) {
|
|
995
960
|
return {
|
|
996
961
|
content: [
|
|
@@ -1008,7 +973,7 @@ const plugin = {
|
|
|
1008
973
|
const result = await pollDeviceLogin(activeDeviceLogin);
|
|
1009
974
|
if (result.status === 'complete') {
|
|
1010
975
|
sessionToken = result.accessToken;
|
|
1011
|
-
|
|
976
|
+
sessionRefreshToken = result.refreshToken || null;
|
|
1012
977
|
sessionClientId = activeDeviceLogin.clientId;
|
|
1013
978
|
sessionClientSecret = activeDeviceLogin.clientSecret || null;
|
|
1014
979
|
sessionIssuer = activeDeviceLogin.issuer;
|
|
@@ -1105,10 +1070,7 @@ const plugin = {
|
|
|
1105
1070
|
const getSystemContext = () => cachedWorkspaceInstructions
|
|
1106
1071
|
? `<lobu-system>\n${cachedWorkspaceInstructions}\n</lobu-system>`
|
|
1107
1072
|
: FALLBACK_SYSTEM_CONTEXT;
|
|
1108
|
-
const
|
|
1109
|
-
if (!config.autoRecall || !hasAuthConfigured(config)) {
|
|
1110
|
-
return '';
|
|
1111
|
-
}
|
|
1073
|
+
const recallOnce = async (query, signal) => {
|
|
1112
1074
|
try {
|
|
1113
1075
|
const result = await callMcpTool(config, 'search_memory', {
|
|
1114
1076
|
query,
|
|
@@ -1116,7 +1078,7 @@ const plugin = {
|
|
|
1116
1078
|
content_limit: config.recallLimit,
|
|
1117
1079
|
include_connections: false,
|
|
1118
1080
|
limit: 3,
|
|
1119
|
-
});
|
|
1081
|
+
}, { signal });
|
|
1120
1082
|
if (!result)
|
|
1121
1083
|
return '';
|
|
1122
1084
|
const text = extractTextFromContent(result.content);
|
|
@@ -1129,13 +1091,39 @@ const plugin = {
|
|
|
1129
1091
|
'\n</lobu-memory>');
|
|
1130
1092
|
}
|
|
1131
1093
|
catch (err) {
|
|
1132
|
-
if (err instanceof LobuAuthError)
|
|
1094
|
+
if (err instanceof LobuAuthError)
|
|
1095
|
+
return '';
|
|
1096
|
+
if (signal.aborted ||
|
|
1097
|
+
(err instanceof Error && (err.name === 'AbortError' || err.name === 'TimeoutError'))) {
|
|
1098
|
+
log.warn(`lobu recall skipped: search_memory exceeded ${RECALL_TIMEOUT_MS}ms`);
|
|
1133
1099
|
return '';
|
|
1134
1100
|
}
|
|
1135
1101
|
log.error(`lobu recall failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1136
1102
|
return '';
|
|
1137
1103
|
}
|
|
1138
1104
|
};
|
|
1105
|
+
// Hard-bound the recall round-trip so it can never blow OpenClaw's hook
|
|
1106
|
+
// budget: abort the in-flight MCP fetch at RECALL_TIMEOUT_MS and degrade
|
|
1107
|
+
// to "no recall" no matter what is still pending (token command, network).
|
|
1108
|
+
//
|
|
1109
|
+
// OpenClaw fires both `before_prompt_build` and `before_agent_start` for
|
|
1110
|
+
// a turn (often back-to-back with the same prompt text). Memoize the last
|
|
1111
|
+
// (query → recallBlock) so the second event is a free cache hit instead
|
|
1112
|
+
// of a second `search_memory` round-trip.
|
|
1113
|
+
let lastRecallQuery = null;
|
|
1114
|
+
let lastRecallBlock = '';
|
|
1115
|
+
const doRecall = async (query) => {
|
|
1116
|
+
if (!config.autoRecall || !hasAuthConfigured(config)) {
|
|
1117
|
+
return '';
|
|
1118
|
+
}
|
|
1119
|
+
if (query === lastRecallQuery) {
|
|
1120
|
+
return lastRecallBlock;
|
|
1121
|
+
}
|
|
1122
|
+
const block = await runWithAbortDeadline((signal) => recallOnce(query, signal), RECALL_TIMEOUT_MS, '');
|
|
1123
|
+
lastRecallQuery = query;
|
|
1124
|
+
lastRecallBlock = block;
|
|
1125
|
+
return block;
|
|
1126
|
+
};
|
|
1139
1127
|
const buildPrependContext = (recallBlock) => ({
|
|
1140
1128
|
prependContext: getSystemContext() + (recallBlock ? '\n' + recallBlock : ''),
|
|
1141
1129
|
});
|
|
@@ -1187,47 +1175,55 @@ const plugin = {
|
|
|
1187
1175
|
}
|
|
1188
1176
|
if (config.autoCapture) {
|
|
1189
1177
|
let lastCapturedLen = 0;
|
|
1190
|
-
|
|
1178
|
+
const messageText = (m) => {
|
|
1179
|
+
if (!isRecord(m))
|
|
1180
|
+
return '';
|
|
1181
|
+
if (typeof m.content === 'string')
|
|
1182
|
+
return m.content;
|
|
1183
|
+
if (Array.isArray(m.content)) {
|
|
1184
|
+
return m.content
|
|
1185
|
+
.filter((p) => isRecord(p) && p.type === 'text')
|
|
1186
|
+
.map((p) => (isRecord(p) && typeof p.text === 'string' ? p.text : ''))
|
|
1187
|
+
.join('\n');
|
|
1188
|
+
}
|
|
1189
|
+
return '';
|
|
1190
|
+
};
|
|
1191
|
+
// Run on `agent_end` — the turn is complete and `messages` ends with the
|
|
1192
|
+
// assistant reply. (The worker's plugin-loader only honors
|
|
1193
|
+
// before_agent_start / agent_end; a before_prompt_build registration was
|
|
1194
|
+
// silently dropped, so autoCapture never ran inside Lobu.)
|
|
1195
|
+
on('agent_end', async (event) => {
|
|
1191
1196
|
if (!hasAuthConfigured(config))
|
|
1192
1197
|
return;
|
|
1193
1198
|
const messages = event.messages;
|
|
1194
1199
|
if (!Array.isArray(messages) || messages.length < 2)
|
|
1195
1200
|
return;
|
|
1196
|
-
// Only capture when new messages appeared since last capture
|
|
1197
1201
|
if (messages.length <= lastCapturedLen)
|
|
1198
1202
|
return;
|
|
1199
|
-
//
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
if (!text.trim())
|
|
1215
|
-
continue;
|
|
1216
|
-
if (m.role === 'assistant' && !lastAssistant)
|
|
1217
|
-
lastAssistant = text.trim();
|
|
1218
|
-
if (m.role === 'user' && !lastUser)
|
|
1219
|
-
lastUser = text.trim();
|
|
1220
|
-
if (lastUser && lastAssistant)
|
|
1221
|
-
break;
|
|
1222
|
-
}
|
|
1223
|
-
if (!lastUser || !lastAssistant)
|
|
1203
|
+
// Pair the last non-empty assistant message with the user message immediately
|
|
1204
|
+
// before it (the question that prompted it).
|
|
1205
|
+
const findLast = (role, upTo) => {
|
|
1206
|
+
for (let i = upTo; i >= 0; i--) {
|
|
1207
|
+
const m = messages[i];
|
|
1208
|
+
if (isRecord(m) && m.role === role && messageText(m).trim())
|
|
1209
|
+
return i;
|
|
1210
|
+
}
|
|
1211
|
+
return -1;
|
|
1212
|
+
};
|
|
1213
|
+
const assistantIdx = findLast('assistant', messages.length - 1);
|
|
1214
|
+
if (assistantIdx < 1)
|
|
1215
|
+
return;
|
|
1216
|
+
const userIdx = findLast('user', assistantIdx - 1);
|
|
1217
|
+
if (userIdx < 0)
|
|
1224
1218
|
return;
|
|
1219
|
+
const lastUser = messageText(messages[userIdx]).trim();
|
|
1220
|
+
const lastAssistant = messageText(messages[assistantIdx]).trim();
|
|
1225
1221
|
const combined = `User: ${lastUser}\nAssistant: ${lastAssistant}`;
|
|
1226
1222
|
if (combined.length < 16 || combined.includes('<lobu-memory>'))
|
|
1227
1223
|
return;
|
|
1228
1224
|
lastCapturedLen = messages.length;
|
|
1229
1225
|
const content = combined.length > 2000 ? combined.slice(0, 2000) : combined;
|
|
1230
|
-
// Fire-and-forget — don't block
|
|
1226
|
+
// Fire-and-forget — don't block the agent_end path.
|
|
1231
1227
|
callMcpTool(config, 'save_memory', {
|
|
1232
1228
|
content,
|
|
1233
1229
|
semantic_type: 'observation',
|
|
@@ -1238,6 +1234,40 @@ const plugin = {
|
|
|
1238
1234
|
});
|
|
1239
1235
|
}
|
|
1240
1236
|
log.info(`lobu: initialized (configured=${!!config.mcpUrl}, token=${!!config.token}, tokenCommand=${!!config.tokenCommand}, tools=${!!registerTool})`);
|
|
1237
|
+
// OpenClaw 2026.5.x only surfaces plugin tools to agents when the host's
|
|
1238
|
+
// tool-policy allowlist explicitly opts them in. With no `tools.*` section
|
|
1239
|
+
// in the OpenClaw config, `registerTool` calls succeed but the agent's
|
|
1240
|
+
// tool list silently excludes every lobu_*, wiki_*, and memory_* tool —
|
|
1241
|
+
// the plugin appears healthy in logs while the agent has no way to call it.
|
|
1242
|
+
// Detect this and shout, with a copy-pasteable fix.
|
|
1243
|
+
if (registerTool && config.mcpUrl) {
|
|
1244
|
+
const cfg = isRecord(api.config) ? api.config : {};
|
|
1245
|
+
const topTools = isRecord(cfg.tools) ? cfg.tools : null;
|
|
1246
|
+
const agentDefaults = isRecord(cfg.agents) && isRecord(cfg.agents.defaults)
|
|
1247
|
+
? cfg.agents.defaults
|
|
1248
|
+
: null;
|
|
1249
|
+
const agentTools = agentDefaults && isRecord(agentDefaults.tools)
|
|
1250
|
+
? agentDefaults.tools
|
|
1251
|
+
: null;
|
|
1252
|
+
const hasToolPolicy = (t) => !!t &&
|
|
1253
|
+
(typeof t.profile === 'string' ||
|
|
1254
|
+
(Array.isArray(t.allow) && t.allow.length > 0) ||
|
|
1255
|
+
(Array.isArray(t.alsoAllow) && t.alsoAllow.length > 0));
|
|
1256
|
+
if (!hasToolPolicy(topTools) && !hasToolPolicy(agentTools)) {
|
|
1257
|
+
log.warn('lobu: no tools.* policy detected in OpenClaw config. Plugin tools ' +
|
|
1258
|
+
'(lobu_*, wiki_*, memory_*) register successfully but may not ' +
|
|
1259
|
+
'reach the agent on OpenClaw 2026.5.x — every plugin on the host ' +
|
|
1260
|
+
'is gated the same way. The autoRecall hook and autoCapture hook ' +
|
|
1261
|
+
'still write to Lobu in the background (they call MCP directly, ' +
|
|
1262
|
+
'not via registered agent tools), so memory continues to flow; ' +
|
|
1263
|
+
'only deliberate agent-driven tool calls during a conversation ' +
|
|
1264
|
+
'are affected. We have tested tools.profile="full", ' +
|
|
1265
|
+
'tools.allow with [group:plugins], [*], and explicit tool names, ' +
|
|
1266
|
+
'and tools.alsoAllow variants — none surface plugin tools on ' +
|
|
1267
|
+
'OpenClaw 2026.5.2. If you find a host config that works, please ' +
|
|
1268
|
+
'file at https://github.com/lobu-ai/lobu/issues.');
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1241
1271
|
},
|
|
1242
1272
|
};
|
|
1243
1273
|
export default plugin;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-lobu",
|
|
3
|
+
"name": "Lobu",
|
|
3
4
|
"kind": "memory",
|
|
4
5
|
"description": "Lobu memory over MCP. Set mcpUrl to enable. Authentication via token, tokenCommand, or interactive device login.",
|
|
5
6
|
"entry": "./dist/index.js",
|
|
7
|
+
"contracts": {
|
|
8
|
+
"tools": [
|
|
9
|
+
"lobu_login",
|
|
10
|
+
"lobu_login_check",
|
|
11
|
+
"lobu_search_memory",
|
|
12
|
+
"lobu_save_memory",
|
|
13
|
+
"lobu_list_organizations",
|
|
14
|
+
"lobu_search_sdk",
|
|
15
|
+
"lobu_query_sdk",
|
|
16
|
+
"lobu_query_sql",
|
|
17
|
+
"lobu_run_sdk"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
6
20
|
"configSchema": {
|
|
7
21
|
"type": "object",
|
|
8
22
|
"additionalProperties": false,
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-lobu",
|
|
3
|
+
"name": "Lobu",
|
|
3
4
|
"kind": "memory",
|
|
4
5
|
"description": "Lobu memory over MCP. Set mcpUrl to enable. Authentication via token, tokenCommand, or interactive device login.",
|
|
5
6
|
"entry": "./dist/index.js",
|
|
7
|
+
"contracts": {
|
|
8
|
+
"tools": [
|
|
9
|
+
"lobu_login",
|
|
10
|
+
"lobu_login_check",
|
|
11
|
+
"lobu_search_memory",
|
|
12
|
+
"lobu_save_memory",
|
|
13
|
+
"lobu_list_organizations",
|
|
14
|
+
"lobu_search_sdk",
|
|
15
|
+
"lobu_query_sdk",
|
|
16
|
+
"lobu_query_sql",
|
|
17
|
+
"lobu_run_sdk"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
6
20
|
"configSchema": {
|
|
7
21
|
"type": "object",
|
|
8
22
|
"additionalProperties": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobu/openclaw-plugin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"description": "Lobu memory plugin for OpenClaw",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,12 +20,19 @@
|
|
|
20
20
|
"build": "tsc && cp ./openclaw.plugin.json ./dist/openclaw.plugin.json",
|
|
21
21
|
"typecheck": "tsc --noEmit",
|
|
22
22
|
"clean": "rm -rf dist",
|
|
23
|
-
"test:e2e": "vitest run --config test/e2e/vitest.config.ts"
|
|
23
|
+
"test:e2e": "vitest run --config test/e2e/vitest.config.ts",
|
|
24
|
+
"test:unit": "vitest run --config test/unit/vitest.config.ts"
|
|
24
25
|
},
|
|
25
26
|
"openclaw": {
|
|
26
27
|
"extensions": [
|
|
27
28
|
"./dist/index.js"
|
|
28
|
-
]
|
|
29
|
+
],
|
|
30
|
+
"compat": {
|
|
31
|
+
"pluginApi": ">=2026.4.0"
|
|
32
|
+
},
|
|
33
|
+
"build": {
|
|
34
|
+
"openclawVersion": "2026.5.7"
|
|
35
|
+
}
|
|
29
36
|
},
|
|
30
37
|
"devDependencies": {
|
|
31
38
|
"@types/node": "^20.10.0",
|