@karmaniverous/jeeves-watcher-openclaw 0.3.9 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -132,6 +132,33 @@ function patchConfig(config, mode, options = {}) {
132
132
  slots.memory = 'memory-core';
133
133
  messages.push(`Reverted plugins.slots.memory to "memory-core"`);
134
134
  }
135
+ // memory-core.enabled — disable when claiming memory slot to prevent
136
+ // core memory tools from shadowing the plugin's tools
137
+ const memoryCoreEntry = entries['memory-core'];
138
+ if (mode === 'add' && options.memory) {
139
+ if (!memoryCoreEntry) {
140
+ entries['memory-core'] = { enabled: false };
141
+ messages.push('Set memory-core.enabled to false');
142
+ }
143
+ else if (memoryCoreEntry.enabled !== false) {
144
+ memoryCoreEntry.enabled = false;
145
+ messages.push('Set memory-core.enabled to false');
146
+ }
147
+ }
148
+ else if (mode === 'add' && !options.memory) {
149
+ // Non-memory install: re-enable memory-core if we disabled it
150
+ if (memoryCoreEntry && memoryCoreEntry.enabled === false) {
151
+ memoryCoreEntry.enabled = true;
152
+ messages.push('Re-enabled memory-core (non-memory install)');
153
+ }
154
+ }
155
+ else if (mode === 'remove') {
156
+ // Uninstall: re-enable memory-core if we disabled it
157
+ if (memoryCoreEntry && memoryCoreEntry.enabled === false) {
158
+ memoryCoreEntry.enabled = true;
159
+ messages.push('Re-enabled memory-core');
160
+ }
161
+ }
135
162
  // tools.allow
136
163
  const tools = (config.tools ?? {});
137
164
  const toolAllow = patchAllowList(tools, 'allow', 'tools.allow', mode);
package/dist/index.js CHANGED
@@ -265,7 +265,7 @@ function createMemoryTools(api, baseUrl) {
265
265
  });
266
266
  const minScore = typeof params.minScore === 'number' ? params.minScore : 0;
267
267
  const filtered = results.filter((r) => typeof r.score === 'number' && r.score >= minScore);
268
- return ok(filtered);
268
+ return ok({ provider: 'jeeves-watcher', results: filtered });
269
269
  }
270
270
  catch (error) {
271
271
  state.initialized = false;
@@ -289,9 +289,9 @@ function createMemoryTools(api, baseUrl) {
289
289
  ? Number(params.lines)
290
290
  : lines.length - startIdx;
291
291
  const sliced = lines.slice(startIdx, startIdx + count);
292
- return ok(sliced.join('\n'));
292
+ return ok({ provider: 'jeeves-watcher', content: sliced.join('\n') });
293
293
  }
294
- return ok(content);
294
+ return ok({ provider: 'jeeves-watcher', content });
295
295
  }
296
296
  catch (error) {
297
297
  return fail(error);
@@ -105,30 +105,35 @@ The plugin supports two install modes, controlled by the `--memory` flag during
105
105
 
106
106
  **Standard mode** (`npx @karmaniverous/jeeves-watcher-openclaw install`):
107
107
  - Registers `watcher_*` tools only (search, enrich, status, query, validate, config_apply, reindex, issues)
108
- - OpenClaw's built-in `memory-core` remains the memory provider
108
+ - OpenClaw's built-in `memory-core` remains the memory provider (re-enabled if previously disabled)
109
109
  - Use when the watcher is a supplementary search tool alongside native memory
110
110
 
111
111
  **Memory mode** (`npx @karmaniverous/jeeves-watcher-openclaw install --memory`):
112
112
  - Registers all tools: `watcher_*` plus `memory_search` and `memory_get`
113
113
  - Claims the OpenClaw memory slot — the watcher becomes the memory provider
114
+ - Disables `memory-core` (`plugins.entries.memory-core.enabled: false`) to prevent core memory tools from shadowing the plugin's tools
114
115
  - MEMORY.md and memory/*.md files are indexed and searched via the watcher's vector store
115
116
  - Use when the watcher should be the single source of truth for both archive search and agent memory
116
117
 
117
- **How to tell which mode you're in:** If `memory_search` and `memory_get` are in your available tools, you're in memory mode. If you only see `watcher_*` tools, you're in standard mode.
118
+ **Why `memory-core` must be disabled:** OpenClaw's built-in `memory-core` plugin registers its own `memory_search` and `memory_get` tools. If both `memory-core` and this plugin are enabled, the core tools shadow the plugin's tools (same name, core registers first). Disabling `memory-core` ensures the plugin's Qdrant-backed implementations are the ones that execute.
119
+
120
+ **How to tell which mode you're in:** Check the response from `memory_search` or `memory_get`. In memory mode (watcher-backed), responses include `"provider": "jeeves-watcher"`. In standard mode (memory-core), responses are bare arrays/strings with no `provider` field.
118
121
 
119
122
  ## Proactive Posture
120
123
 
121
- **If you're in standard mode and the deployment would benefit from memory mode, say so.** The watcher's vector store with 3072-dimension Gemini embeddings provides significantly better semantic memory than flat file search. If you notice:
124
+ **On your first `memory_search` or `memory_get` call each session, check the response for the `provider` field.**
125
+
126
+ - **If the response is `{ provider: "jeeves-watcher", ... }`:** You're in memory mode. The watcher is serving memory. No action needed.
127
+ - **If the response has any other shape** (bare array, bare string, different provider, no `provider` field): The watcher is NOT serving memory. Another provider is active. Check whether an upgrade is warranted.
122
128
 
123
- - The user has a substantial archive (>10K points)
124
- - Memory searches are returning poor results via native memory
125
- - The user is asking questions that span multiple memory files
129
+ **When to suggest upgrading to memory mode:**
130
+ Call `watcher_status` to check the archive size. If the watcher has >10K points, the deployment has a substantial archive and would benefit from semantic memory. Offer to run the upgrade yourself:
126
131
 
127
- ...then suggest the upgrade:
132
+ > "I notice memory queries are running on flat file search, but the watcher has [N] points with semantic embeddings. I can upgrade to memory mode now — this runs `npx @karmaniverous/jeeves-watcher-openclaw install --memory` and restarts the gateway. Shall I go ahead?"
128
133
 
129
- > "The watcher is running with a large archive but I'm using basic file memory. Upgrading to memory mode would give semantic search over your memory files too. To upgrade: `npx @karmaniverous/jeeves-watcher-openclaw install --memory` and restart the gateway."
134
+ If the user agrees, execute the install and gateway restart. Don't hand them a CLI command when you can do it yourself.
130
135
 
131
- **Don't nag.** Suggest once per session at most, and only when there's a concrete benefit. If the user declines or doesn't respond, drop it.
136
+ **Don't nag.** Suggest once per session at most. If the user declines, drop it.
132
137
 
133
138
  ## Tools
134
139
 
@@ -138,7 +143,8 @@ Semantically search MEMORY.md and memory/*.md files. Powered by the watcher's ve
138
143
  - `maxResults` (number, optional) — maximum results to return
139
144
  - `minScore` (number, optional) — minimum similarity score threshold
140
145
 
141
- Returns: `[{ path, from, to, snippet, score }]` where `from`/`to` are 1-indexed line numbers.
146
+ **Response (memory mode):** `{ provider: "jeeves-watcher", results: [{ path, from, to, snippet, score }] }` where `from`/`to` are 1-indexed line numbers.
147
+ **Response (standard mode / memory-core):** `[{ path, from, to, snippet, score }]` — bare array, no `provider` field.
142
148
 
143
149
  ### `memory_get`
144
150
  Read content from MEMORY.md or memory/*.md files with optional line range.
@@ -146,6 +152,9 @@ Read content from MEMORY.md or memory/*.md files with optional line range.
146
152
  - `from` (number, optional) — line number to start reading from (1-indexed)
147
153
  - `lines` (number, optional) — number of lines to read
148
154
 
155
+ **Response (memory mode):** `{ provider: "jeeves-watcher", content: "file content..." }`
156
+ **Response (standard mode / memory-core):** `"file content..."` — bare string, no `provider` field.
157
+
149
158
  Path validation: only files within the workspace's MEMORY.md and memory/**/*.md are accessible.
150
159
 
151
160
  ### `watcher_search`
@@ -2,7 +2,7 @@
2
2
  "id": "jeeves-watcher-openclaw",
3
3
  "name": "Jeeves Watcher",
4
4
  "description": "Semantic search, metadata enrichment, and instance administration for a jeeves-watcher deployment.",
5
- "version": "0.3.9",
5
+ "version": "0.3.11",
6
6
  "skills": [
7
7
  "dist/skills/jeeves-watcher"
8
8
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@karmaniverous/jeeves-watcher-openclaw",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "author": "Jason Williscroft",
5
5
  "description": "OpenClaw plugin for jeeves-watcher — semantic search and metadata enrichment tools",
6
6
  "license": "BSD-3-Clause",