@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 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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA67BA,QAAA,MAAM,MAAM;;;;;kBAKI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAmiBtC,CAAC;AAEF,eAAe,MAAM,CAAC"}
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
- // Minimal fallback context used before the workspace instructions are fetched.
11
- // Initialized lazily per mode (gateway vs standalone) in register().
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
- // Session-level refresh token for token renewal
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
- const data = await response.json();
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
- mkdirSync(dirname(storePath), { recursive: true });
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
- if (typeof on === 'function') {
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
- _sessionRefreshToken = null;
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
- // Clean up on process exit
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
- async function tryRefreshToken(mcpUrl) {
447
- if (!_sessionRefreshToken || !sessionClientId || !sessionIssuer)
448
- return false;
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 body = {
451
- grant_type: 'refresh_token',
452
- client_id: sessionClientId,
453
- refresh_token: _sessionRefreshToken,
454
- };
455
- if (sessionClientSecret) {
456
- body.client_secret = sessionClientSecret;
457
- }
458
- const response = await fetch(`${sessionIssuer}/oauth/token`, {
459
- method: 'POST',
460
- headers: { 'Content-Type': 'application/json' },
461
- body: JSON.stringify(body),
462
- });
463
- if (!response.ok)
464
- return false;
465
- const data = (await response.json());
466
- if (typeof data.access_token !== 'string')
467
- return false;
468
- sessionToken = data.access_token;
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: _sessionRefreshToken,
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
- return false;
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 result;
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 ${tools.length} MCP tools`);
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
- // Gateway mode: proxy handles auth + tools. Nothing to check at startup.
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
- _sessionRefreshToken = stored.refreshToken || null;
872
+ sessionRefreshToken = stored.refreshToken || null;
774
873
  sessionClientId = stored.clientId || null;
775
874
  sessionClientSecret = stored.clientSecret || null;
776
875
  sessionIssuer = stored.issuer || null;
777
- // Proactively refresh the token — the persisted access token may be expired
778
- if (_sessionRefreshToken && sessionIssuer && sessionClientId) {
779
- try {
780
- const body = {
781
- grant_type: 'refresh_token',
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
- _sessionRefreshToken = result.refreshToken || null;
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 doRecall = async (query) => {
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
- on('before_prompt_build', async (event) => {
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
- // Find the most recent assistant+user pair (the previous turn)
1200
- let lastUser = null;
1201
- let lastAssistant = null;
1202
- for (let i = messages.length - 1; i >= 0; i--) {
1203
- const m = messages[i];
1204
- if (!isRecord(m))
1205
- continue;
1206
- const text = typeof m.content === 'string'
1207
- ? m.content
1208
- : Array.isArray(m.content)
1209
- ? m.content
1210
- .filter((p) => isRecord(p) && p.type === 'text')
1211
- .map((p) => (isRecord(p) && typeof p.text === 'string' ? p.text : ''))
1212
- .join('\n')
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 prompt build
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,
@@ -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": "6.1.1",
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",