@remnic/plugin-openclaw 9.3.613 → 9.3.614

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
@@ -43,14 +43,15 @@ launchctl kickstart -k gui/501/ai.openclaw.gateway
43
43
 
44
44
  ## Compatibility Policy
45
45
 
46
- Remnic supports OpenClaw releases from at least the previous 60 days. For the
47
- June 3, 2026 compatibility sweep, that means releases back to April 4, 2026.
46
+ Remnic supports OpenClaw releases from at least the previous 60 days. As of
47
+ June 7, 2026, that means releases back to April 8, 2026.
48
48
  The package metadata keeps the installer compatibility floor at the single
49
49
  `>=2026.4.1` shape OpenClaw setup expects because that older floor is still
50
50
  more permissive than the active 60-day requirement. The peer and plugin-API
51
51
  compatibility ranges explicitly include reviewed prerelease hosts in that
52
- window. The adapter separately records `2026.6.3-alpha.1` as the latest
53
- reviewed OpenClaw source-tag target.
52
+ window. The adapter separately records `2026.6.6-alpha.1` as the latest
53
+ reviewed OpenClaw source-tag target (plugin SDK surface verified against the
54
+ newest npm-published build, `2026.6.5-beta.2`).
54
55
 
55
56
  When adding newer OpenClaw manifest surfaces, keep older-compatible metadata in
56
57
  place for hosts inside that 60-day window unless an upstream breaking change is
@@ -179,7 +180,12 @@ CI jobs that provision OpenClaw should use
179
180
  `npm run check:openclaw-sdk-surface:required` or pass
180
181
  `-- --require --package-root <path>` so a missing SDK fails instead of skipping.
181
182
 
182
- Last compatibility sweep: June 3, 2026. The SDK surface check passed against
183
+ Last compatibility sweep: June 6, 2026 (issues #1338, #1348, #1387, #1412,
184
+ #1423, #1424), with a June 7, 2026 follow-up adding `openclaw@2026.6.5-beta.2`.
185
+ The latest reviewed npm build is `openclaw@2026.6.5-beta.2`; its
186
+ plugin SDK surface is additive-only versus the recorded snapshot (no removals),
187
+ so no Remnic adapter change was required — see `docs/plugins/openclaw.md` for
188
+ the full sweep notes. Earlier sweeps: the SDK surface check passed against
183
189
  `openclaw@2026.5.3`, `openclaw@2026.5.3-1`, `openclaw@2026.5.4-beta.1`,
184
190
  `openclaw@2026.5.4-beta.2`, `openclaw@2026.5.4-beta.3`,
185
191
  `openclaw@2026.5.4`, `openclaw@2026.5.5`, `openclaw@2026.5.6`,
package/dist/index.js CHANGED
@@ -2902,6 +2902,7 @@ Returns: Performance trace data with timing breakdown`,
2902
2902
  import { registerLcmTools } from "@remnic/core/lcm/index";
2903
2903
  import { estimateTokens as estimateLcmTokens } from "@remnic/core/lcm/archive";
2904
2904
  import { registerCli } from "@remnic/core/cli";
2905
+ import { FallbackLlmClient, fallbackLlmRuntimeContextFromConfig } from "@remnic/core/fallback-llm";
2905
2906
 
2906
2907
  // ../../src/objective-state.ts
2907
2908
  var objective_state_exports = {};
@@ -3231,6 +3232,22 @@ function buildMemorySearchTool(orchestrator, options = {}) {
3231
3232
  }
3232
3233
 
3233
3234
  // src/runtime-surfaces.ts
3235
+ import { gatewayTaskChainOptions } from "@remnic/core/fallback-llm";
3236
+ function resolveDreamNarrativeRoute(config, directClientAvailable) {
3237
+ if (config.modelSource === "gateway") {
3238
+ const narrativeModel = typeof config.dreaming.narrativeModel === "string" ? config.dreaming.narrativeModel.trim() : "";
3239
+ const hasExplicitModel = narrativeModel.length > 0;
3240
+ return {
3241
+ kind: "gateway",
3242
+ hasExplicitModel,
3243
+ options: {
3244
+ ...gatewayTaskChainOptions(config),
3245
+ ...hasExplicitModel ? { model: narrativeModel } : {}
3246
+ }
3247
+ };
3248
+ }
3249
+ return directClientAvailable ? { kind: "direct" } : { kind: "skip" };
3250
+ }
3234
3251
  var DREAM_SURFACE_TYPE = "dream";
3235
3252
  var HEARTBEAT_SURFACE_TYPE = "heartbeat";
3236
3253
  var DREAM_ENTRY_ID_KEY = "remnicDreamEntryId";
@@ -4970,7 +4987,8 @@ var pluginDefinition = {
4970
4987
  principal: cfg.agentAccessHttp.principal,
4971
4988
  maxBodyBytes: cfg.agentAccessHttp.maxBodyBytes,
4972
4989
  citationsEnabled: cfg.citationsEnabled,
4973
- citationsAutoDetect: cfg.citationsAutoDetect
4990
+ citationsAutoDetect: cfg.citationsAutoDetect,
4991
+ emitLegacyTools: cfg.emitLegacyTools
4974
4992
  });
4975
4993
  globalThis[keys.ACCESS_HTTP_SERVER] = accessHttpServer;
4976
4994
  const pluginStateDir = path3.join(cfg.memoryDir, "state", "plugins", serviceId);
@@ -5073,8 +5091,11 @@ var pluginDefinition = {
5073
5091
  }
5074
5092
  async function maybeAppendDreamFromConsolidation(observation) {
5075
5093
  if (!cfg.dreaming.enabled) return;
5076
- if (!dreamNarrativeClient) {
5077
- logger_exports.log.debug("dreaming narrative skipped: direct OpenAI Responses client unavailable");
5094
+ const route = resolveDreamNarrativeRoute(cfg, !!dreamNarrativeClient);
5095
+ if (route.kind === "skip") {
5096
+ logger_exports.log.debug(
5097
+ "dreaming narrative skipped: no LLM available (set openaiApiKey or use modelSource=gateway)"
5098
+ );
5078
5099
  return;
5079
5100
  }
5080
5101
  const journalPath = resolveDreamJournalPath();
@@ -5086,23 +5107,46 @@ var pluginDefinition = {
5086
5107
  });
5087
5108
  if (!plan) return;
5088
5109
  const styleInstruction = cfg.dreaming.narrativePromptStyle === "diary" ? "Write like a compact private diary entry." : cfg.dreaming.narrativePromptStyle === "analytical" ? "Write like an analytical retrospective with explicit patterns." : "Write like a reflective narrative that notices patterns and emotional tone.";
5089
- let rawNarrative = "";
5090
- try {
5091
- const response = await dreamNarrativeClient.responses.create({
5092
- model: cfg.dreaming.narrativeModel ?? cfg.model,
5093
- instructions: `You write short reflective dream-journal entries for an AI memory system. ${styleInstruction} Return exactly this structure:
5110
+ const instructions = `You write short reflective dream-journal entries for an AI memory system. ${styleInstruction} Return exactly this structure:
5094
5111
  Title: <short title>
5095
5112
  Tags: #tag #tag
5096
5113
  Body:
5097
- <2-4 concise paragraphs>`,
5098
- input: `The last consolidation spanned ${plan.sessionLikeCount} session-like windows.
5114
+ <2-4 concise paragraphs>`;
5115
+ const input = `The last consolidation spanned ${plan.sessionLikeCount} session-like windows.
5099
5116
  Keep the reflection grounded in the evidence below.
5100
5117
 
5101
- ` + plan.memoryContext.join("\n"),
5102
- temperature: 0.4,
5103
- max_output_tokens: 400
5104
- });
5105
- rawNarrative = typeof response.output_text === "string" ? response.output_text : JSON.stringify(response.output_text ?? "");
5118
+ ` + plan.memoryContext.join("\n");
5119
+ let rawNarrative = "";
5120
+ try {
5121
+ if (route.kind === "gateway") {
5122
+ const llm = new FallbackLlmClient(
5123
+ cfg.gatewayConfig,
5124
+ fallbackLlmRuntimeContextFromConfig(cfg)
5125
+ );
5126
+ if (!route.hasExplicitModel && !llm.isAvailable(route.options)) {
5127
+ logger_exports.log.debug(
5128
+ "dreaming narrative skipped: no gateway model configured (set dreaming.narrativeModel or taskModelChain)"
5129
+ );
5130
+ return;
5131
+ }
5132
+ const response = await llm.chatCompletion(
5133
+ [
5134
+ { role: "system", content: instructions },
5135
+ { role: "user", content: input }
5136
+ ],
5137
+ { temperature: 0.4, maxTokens: 400, ...route.options }
5138
+ );
5139
+ rawNarrative = response?.content ?? "";
5140
+ } else {
5141
+ const response = await dreamNarrativeClient.responses.create({
5142
+ model: cfg.dreaming.narrativeModel ?? cfg.model,
5143
+ instructions,
5144
+ input,
5145
+ temperature: 0.4,
5146
+ max_output_tokens: 400
5147
+ });
5148
+ rawNarrative = typeof response.output_text === "string" ? response.output_text : JSON.stringify(response.output_text ?? "");
5149
+ }
5106
5150
  } catch (error) {
5107
5151
  logger_exports.log.warn(`dreaming narrative generation failed: ${String(error)}`);
5108
5152
  return;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-remnic",
3
3
  "name": "Remnic OpenClaw Plugin",
4
- "version": "9.3.613",
4
+ "version": "9.3.614",
5
5
  "kind": "memory",
6
6
  "description": "Local semantic memory for OpenClaw with bundled Remnic core runtime. Requires plugins.slots.memory set to this plugin id for hooks to fire.",
7
7
  "setup": {
@@ -314,6 +314,32 @@
314
314
  "default": true,
315
315
  "description": "When false, ask supported QMD versions to skip the built-in rerank step"
316
316
  },
317
+ "qmdSearchStrategy": {
318
+ "type": "string",
319
+ "enum": [
320
+ "hybrid",
321
+ "lex-vec",
322
+ "lex"
323
+ ],
324
+ "default": "hybrid",
325
+ "description": "Daemon search plan. 'hybrid' (default) runs lex+vec+hyde for best recall; 'lex-vec' drops the expensive HyDE generate leg; 'lex' is BM25-only (fastest). Lower tiers trade recall for latency on CPU-only models. Default preserves existing behavior (issue #1335)."
326
+ },
327
+ "qmdSubprocessStrategy": {
328
+ "type": "string",
329
+ "enum": [
330
+ "query",
331
+ "search"
332
+ ],
333
+ "default": "query",
334
+ "description": "Command for the QMD CLI subprocess fallback, used only when the daemon is unavailable. 'query' (default) keeps LLM query expansion + rerank; 'search' is BM25-only and faster on very large collections but loses expansion/rerank. Default preserves existing behavior (issue #1335)."
335
+ },
336
+ "qmdDaemonTimeoutMs": {
337
+ "type": "number",
338
+ "minimum": 1000,
339
+ "maximum": 120000,
340
+ "default": 8000,
341
+ "description": "Per-call timeout (ms) for QMD daemon searches. Default 8000; raise (e.g. 20000) to give CPU-only HyDE queries more headroom before the daemon call times out (issue #1335)."
342
+ },
317
343
  "qmdIndexName": {
318
344
  "type": "string",
319
345
  "description": "Optional QMD named index forwarded as qmd --index <name> when supported. Leave unset during upgrades unless existing QMD data already lives in that named index."
@@ -485,7 +511,8 @@
485
511
  },
486
512
  "narrativeModel": {
487
513
  "type": "string",
488
- "default": ""
514
+ "default": "",
515
+ "description": "Model used to write dream-journal narratives. Under modelSource=plugin this must be an OpenAI model id used with the direct OpenAI key. Under modelSource=gateway it accepts a provider-qualified id (e.g. zai/glm-4.7-flash) routed through gateway providers — no direct OpenAI key required; leave empty to fall back to taskModelChain / the gateway default chain."
489
516
  },
490
517
  "narrativePromptStyle": {
491
518
  "type": "string",
@@ -1288,6 +1315,11 @@
1288
1315
  "default": true,
1289
1316
  "description": "Auto-regenerate RESOLVER.md when the taxonomy changes."
1290
1317
  },
1318
+ "emitLegacyTools": {
1319
+ "type": "boolean",
1320
+ "default": true,
1321
+ "description": "Advertise legacy engram_* / engram.* MCP tool aliases alongside the canonical remnic_* names (issue #1427). Default true for backward compatibility. Set false to halve the advertised tools/list surface (only remnic_* names); tools remain callable under both names. Also settable via REMNIC_EMIT_LEGACY_TOOLS."
1322
+ },
1291
1323
  "citationsEnabled": {
1292
1324
  "type": "boolean",
1293
1325
  "default": false,
@@ -1878,10 +1910,15 @@
1878
1910
  "default": true,
1879
1911
  "description": "Use lightweight retrieve-vs-think planning to avoid unnecessary recall work."
1880
1912
  },
1913
+ "recallPlannerLlmEnabled": {
1914
+ "type": "boolean",
1915
+ "default": false,
1916
+ "description": "Opt in to LLM-based recall planning (issue #1367). When false, recall mode is decided by the regex heuristic. When true, the configured recallPlannerModel classifies recall intent via the gateway/fallback LLM chain (provider-agnostic) and falls back to the heuristic on timeout/error. Requires recallPlannerEnabled."
1917
+ },
1881
1918
  "recallPlannerModel": {
1882
1919
  "type": "string",
1883
1920
  "default": "gpt-5.5",
1884
- "description": "Model to use for the recall planner."
1921
+ "description": "Model for LLM-based recall planning (recallPlannerLlmEnabled). A 'provider/model' string resolved through the gateway providers/chain — any configured provider works (OpenAI, Anthropic, Ollama, Codex, gateway personas). Tried first, with taskModelChain / gateway defaults as fallback."
1885
1922
  },
1886
1923
  "recallPlannerTimeoutMs": {
1887
1924
  "type": "number",
@@ -1891,7 +1928,7 @@
1891
1928
  "recallPlannerUseResponsesApi": {
1892
1929
  "type": "boolean",
1893
1930
  "default": true,
1894
- "description": "Use OpenAI Responses API for recall planner calls."
1931
+ "description": "Reserved. The chat vs Responses API dialect is chosen per-provider by the gateway/fallback client based on each provider's api field, so this flag does not override routing; OpenAI providers already use Responses (gotcha #1)."
1895
1932
  },
1896
1933
  "recallPlannerMaxPromptChars": {
1897
1934
  "type": "number",
@@ -1901,7 +1938,7 @@
1901
1938
  "recallPlannerMaxMemoryHints": {
1902
1939
  "type": "number",
1903
1940
  "default": 24,
1904
- "description": "Maximum number of recent memory hints included in the recall planner prompt."
1941
+ "description": "Reserved. Caps recent-memory hints in the recall planner prompt when a caller supplies them; the default recall path does not populate hints (the LLM planner classifies on the prompt alone)."
1905
1942
  },
1906
1943
  "recallPlannerShadowMode": {
1907
1944
  "type": "boolean",
@@ -3125,6 +3162,30 @@
3125
3162
  "default": "",
3126
3163
  "description": "Agent persona ID for fast-tier ops (rerank, entity summaries, compression guidelines). When modelSource is 'gateway' and this is empty, fast ops use the same chain as gatewayAgentId."
3127
3164
  },
3165
+ "taskModelChain": {
3166
+ "type": "object",
3167
+ "description": "Optional task-specific gateway model chain for Remnic's background LLM work (extraction, fact/profile/identity consolidation, summarization, causal consolidation). When set, this chain is resolved through gateway providers instead of gatewayAgentId or agents.defaults.model. Only applies when modelSource is 'gateway'.",
3168
+ "required": [
3169
+ "primary"
3170
+ ],
3171
+ "additionalProperties": false,
3172
+ "properties": {
3173
+ "primary": {
3174
+ "type": "string",
3175
+ "minLength": 1,
3176
+ "description": "Primary gateway model, e.g. zai/glm-4.7-flash"
3177
+ },
3178
+ "fallbacks": {
3179
+ "type": "array",
3180
+ "items": {
3181
+ "type": "string",
3182
+ "minLength": 1
3183
+ },
3184
+ "default": [],
3185
+ "description": "Fallback gateway models tried after primary"
3186
+ }
3187
+ }
3188
+ },
3128
3189
  "localLlmEnabled": {
3129
3190
  "type": "boolean",
3130
3191
  "default": false,
@@ -5037,6 +5098,23 @@
5037
5098
  "label": "QMD Query Rerank",
5038
5099
  "advanced": true
5039
5100
  },
5101
+ "qmdSearchStrategy": {
5102
+ "label": "QMD Search Strategy",
5103
+ "advanced": true,
5104
+ "placeholder": "hybrid",
5105
+ "help": "hybrid = lex+vec+hyde (default, best recall). lex-vec drops HyDE. lex = BM25-only (fastest). Lower tiers reduce CPU latency at the cost of recall."
5106
+ },
5107
+ "qmdSubprocessStrategy": {
5108
+ "label": "QMD Subprocess Strategy",
5109
+ "advanced": true,
5110
+ "placeholder": "query",
5111
+ "help": "query = qmd query with LLM expansion + rerank (default). search = BM25-only fallback, faster on huge collections but loses expansion/rerank."
5112
+ },
5113
+ "qmdDaemonTimeoutMs": {
5114
+ "label": "QMD Daemon Timeout (ms)",
5115
+ "advanced": true,
5116
+ "placeholder": "8000"
5117
+ },
5040
5118
  "qmdIndexName": {
5041
5119
  "label": "QMD Index Name",
5042
5120
  "advanced": true,
@@ -5430,6 +5508,11 @@
5430
5508
  "placeholder": "engram-llm-fast",
5431
5509
  "help": "Agent persona ID for fast-tier ops. Leave empty to use the primary gatewayAgentId."
5432
5510
  },
5511
+ "taskModelChain": {
5512
+ "label": "Task Model Chain",
5513
+ "advanced": true,
5514
+ "help": "Optional primary/fallback gateway model chain for Remnic background tasks (extraction, consolidation, summarization). Overrides gatewayAgentId/defaults for these tasks only. Requires modelSource: 'gateway'."
5515
+ },
5433
5516
  "localLlmEnabled": {
5434
5517
  "label": "Enable Local LLM",
5435
5518
  "help": "Use local LLM (LM Studio, Ollama, etc.) for extraction and summaries. Falls back to OpenAI if unavailable."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/plugin-openclaw",
3
- "version": "9.3.613",
3
+ "version": "9.3.614",
4
4
  "description": "OpenClaw adapter for Remnic memory with bundled @remnic/core runtime",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,11 +28,11 @@
28
28
  "./dist/index.js"
29
29
  ],
30
30
  "compat": {
31
- "pluginApi": ">=2026.4.1 || 2026.4.7-1 || 2026.4.9-beta.1 || 2026.4.11-beta.1 || 2026.4.12-beta.1 || 2026.4.14-beta.1 || 2026.4.15-beta.1 || 2026.4.15-beta.2 || 2026.4.19-beta.1 || 2026.4.19-beta.2 || 2026.4.20-beta.1 || 2026.4.20-beta.2 || 2026.4.22-beta.1 || 2026.4.23-beta.1 || 2026.4.23-beta.2 || 2026.4.23-beta.3 || 2026.4.23-beta.4 || 2026.4.23-beta.5 || 2026.4.23-beta.6 || 2026.4.24-beta.1 || 2026.4.24-beta.2 || 2026.4.24-beta.3 || 2026.4.24-beta.4 || 2026.4.24-beta.5 || 2026.4.24-beta.6 || 2026.4.25-beta.1 || 2026.4.25-beta.2 || 2026.4.25-beta.3 || 2026.4.25-beta.4 || 2026.4.25-beta.5 || 2026.4.25-beta.6 || 2026.4.25-beta.7 || 2026.4.25-beta.8 || 2026.4.25-beta.9 || 2026.4.25-beta.10 || 2026.4.25-beta.11 || 2026.4.26-beta.1 || 2026.4.27-beta.1 || 2026.4.29-beta.1 || 2026.4.29-beta.2 || 2026.4.29-beta.3 || 2026.4.29-beta.4 || 2026.4.30-beta.1 || 2026.5.2-beta.1 || 2026.5.2-beta.2 || 2026.5.2-beta.3 || 2026.5.3-1 || 2026.5.3-beta.1 || 2026.5.3-beta.2 || 2026.5.3-beta.3 || 2026.5.3-beta.4 || 2026.5.4-beta.1 || 2026.5.4-beta.2 || 2026.5.4-beta.3 || 2026.5.5-beta.1 || 2026.5.5-beta.2 || 2026.5.6-beta.1 || 2026.5.7-beta.1 || 2026.5.9-beta.1 || 2026.5.10-beta.1 || 2026.5.10-beta.2 || 2026.5.10-beta.3 || 2026.5.10-beta.4 || 2026.5.10-beta.5 || 2026.5.10-beta.6 || 2026.5.12-beta.1 || 2026.5.12-beta.2 || 2026.5.12-beta.3 || 2026.5.12-beta.4 || 2026.5.12-beta.5 || 2026.5.12-beta.6 || 2026.5.12-beta.7 || 2026.5.12-beta.8 || 2026.5.14-beta.1 || 2026.5.14-beta.2 || 2026.5.16-beta.1 || 2026.5.16-beta.2 || 2026.5.16-beta.3 || 2026.5.16-beta.4 || 2026.5.16-beta.5 || 2026.5.16-beta.6 || 2026.5.16-beta.7 || 2026.5.18-beta.1 || 2026.5.19-alpha.1 || 2026.5.19-beta.1 || 2026.5.19-beta.2 || 2026.5.20-beta.1 || 2026.5.20-beta.2 || 2026.5.21-alpha.1 || 2026.5.21-beta.1 || 2026.5.22-beta.1 || 2026.5.23-alpha.1 || 2026.5.24-alpha.1 || 2026.5.24-beta.1 || 2026.5.24-beta.2 || 2026.5.25-alpha.1 || 2026.5.25-alpha.2 || 2026.5.25-beta.1 || 2026.5.26-beta.1 || 2026.5.26-beta.2 || 2026.5.27-alpha.1 || 2026.5.27-beta.1 || 2026.5.28-alpha.1 || 2026.5.28-beta.1 || 2026.5.28-beta.2 || 2026.5.28-beta.3 || 2026.5.28-beta.4 || 2026.5.29-alpha.1 || 2026.5.30-beta.1 || 2026.5.30-beta.2 || 2026.5.31-alpha.1 || 2026.5.31-beta.1 || 2026.5.31-beta.2 || 2026.5.31-beta.3 || 2026.5.31-beta.4 || 2026.6.1-alpha.1 || 2026.6.1-alpha.2 || 2026.6.1-alpha.3 || 2026.6.1-beta.1 || 2026.6.1-beta.2 || 2026.6.1-beta.3 || 2026.6.2-alpha.1 || 2026.6.2-alpha.2 || 2026.6.3-alpha.1"
31
+ "pluginApi": ">=2026.4.1 || 2026.4.7-1 || 2026.4.9-beta.1 || 2026.4.11-beta.1 || 2026.4.12-beta.1 || 2026.4.14-beta.1 || 2026.4.15-beta.1 || 2026.4.15-beta.2 || 2026.4.19-beta.1 || 2026.4.19-beta.2 || 2026.4.20-beta.1 || 2026.4.20-beta.2 || 2026.4.22-beta.1 || 2026.4.23-beta.1 || 2026.4.23-beta.2 || 2026.4.23-beta.3 || 2026.4.23-beta.4 || 2026.4.23-beta.5 || 2026.4.23-beta.6 || 2026.4.24-beta.1 || 2026.4.24-beta.2 || 2026.4.24-beta.3 || 2026.4.24-beta.4 || 2026.4.24-beta.5 || 2026.4.24-beta.6 || 2026.4.25-beta.1 || 2026.4.25-beta.2 || 2026.4.25-beta.3 || 2026.4.25-beta.4 || 2026.4.25-beta.5 || 2026.4.25-beta.6 || 2026.4.25-beta.7 || 2026.4.25-beta.8 || 2026.4.25-beta.9 || 2026.4.25-beta.10 || 2026.4.25-beta.11 || 2026.4.26-beta.1 || 2026.4.27-beta.1 || 2026.4.29-beta.1 || 2026.4.29-beta.2 || 2026.4.29-beta.3 || 2026.4.29-beta.4 || 2026.4.30-beta.1 || 2026.5.2-beta.1 || 2026.5.2-beta.2 || 2026.5.2-beta.3 || 2026.5.3-1 || 2026.5.3-beta.1 || 2026.5.3-beta.2 || 2026.5.3-beta.3 || 2026.5.3-beta.4 || 2026.5.4-beta.1 || 2026.5.4-beta.2 || 2026.5.4-beta.3 || 2026.5.5-beta.1 || 2026.5.5-beta.2 || 2026.5.6-beta.1 || 2026.5.7-beta.1 || 2026.5.9-beta.1 || 2026.5.10-beta.1 || 2026.5.10-beta.2 || 2026.5.10-beta.3 || 2026.5.10-beta.4 || 2026.5.10-beta.5 || 2026.5.10-beta.6 || 2026.5.12-beta.1 || 2026.5.12-beta.2 || 2026.5.12-beta.3 || 2026.5.12-beta.4 || 2026.5.12-beta.5 || 2026.5.12-beta.6 || 2026.5.12-beta.7 || 2026.5.12-beta.8 || 2026.5.14-beta.1 || 2026.5.14-beta.2 || 2026.5.16-beta.1 || 2026.5.16-beta.2 || 2026.5.16-beta.3 || 2026.5.16-beta.4 || 2026.5.16-beta.5 || 2026.5.16-beta.6 || 2026.5.16-beta.7 || 2026.5.18-beta.1 || 2026.5.19-alpha.1 || 2026.5.19-beta.1 || 2026.5.19-beta.2 || 2026.5.20-beta.1 || 2026.5.20-beta.2 || 2026.5.21-alpha.1 || 2026.5.21-beta.1 || 2026.5.22-beta.1 || 2026.5.23-alpha.1 || 2026.5.24-alpha.1 || 2026.5.24-beta.1 || 2026.5.24-beta.2 || 2026.5.25-alpha.1 || 2026.5.25-alpha.2 || 2026.5.25-beta.1 || 2026.5.26-beta.1 || 2026.5.26-beta.2 || 2026.5.27-alpha.1 || 2026.5.27-beta.1 || 2026.5.28-alpha.1 || 2026.5.28-beta.1 || 2026.5.28-beta.2 || 2026.5.28-beta.3 || 2026.5.28-beta.4 || 2026.5.29-alpha.1 || 2026.5.30-beta.1 || 2026.5.30-beta.2 || 2026.5.31-alpha.1 || 2026.5.31-beta.1 || 2026.5.31-beta.2 || 2026.5.31-beta.3 || 2026.5.31-beta.4 || 2026.6.1-alpha.1 || 2026.6.1-alpha.2 || 2026.6.1-alpha.3 || 2026.6.1-beta.1 || 2026.6.1-beta.2 || 2026.6.1-beta.3 || 2026.6.2-alpha.1 || 2026.6.2-alpha.2 || 2026.6.2-beta.1 || 2026.6.3-alpha.1 || 2026.6.4-alpha.1 || 2026.6.5-alpha.1 || 2026.6.5-alpha.2 || 2026.6.5-beta.1 || 2026.6.5-beta.2 || 2026.6.6-alpha.1"
32
32
  },
33
33
  "build": {
34
- "openclawVersion": "2026.6.3-alpha.1",
35
- "pluginSdkVersion": "2026.6.3-alpha.1"
34
+ "openclawVersion": "2026.6.6-alpha.1",
35
+ "pluginSdkVersion": "2026.6.6-alpha.1"
36
36
  },
37
37
  "install": {
38
38
  "clawhubSpec": "clawhub:@remnic/plugin-openclaw",
@@ -72,17 +72,17 @@
72
72
  "dependencies": {
73
73
  "@sinclair/typebox": "^0.34.0",
74
74
  "openai": "^6.0.0",
75
- "@remnic/core": "^9.3.613"
75
+ "@remnic/core": "^9.3.614"
76
76
  },
77
77
  "peerDependencies": {
78
- "openclaw": ">=2026.4.1 || 2026.4.7-1 || 2026.4.9-beta.1 || 2026.4.11-beta.1 || 2026.4.12-beta.1 || 2026.4.14-beta.1 || 2026.4.15-beta.1 || 2026.4.15-beta.2 || 2026.4.19-beta.1 || 2026.4.19-beta.2 || 2026.4.20-beta.1 || 2026.4.20-beta.2 || 2026.4.22-beta.1 || 2026.4.23-beta.1 || 2026.4.23-beta.2 || 2026.4.23-beta.3 || 2026.4.23-beta.4 || 2026.4.23-beta.5 || 2026.4.23-beta.6 || 2026.4.24-beta.1 || 2026.4.24-beta.2 || 2026.4.24-beta.3 || 2026.4.24-beta.4 || 2026.4.24-beta.5 || 2026.4.24-beta.6 || 2026.4.25-beta.1 || 2026.4.25-beta.2 || 2026.4.25-beta.3 || 2026.4.25-beta.4 || 2026.4.25-beta.5 || 2026.4.25-beta.6 || 2026.4.25-beta.7 || 2026.4.25-beta.8 || 2026.4.25-beta.9 || 2026.4.25-beta.10 || 2026.4.25-beta.11 || 2026.4.26-beta.1 || 2026.4.27-beta.1 || 2026.4.29-beta.1 || 2026.4.29-beta.2 || 2026.4.29-beta.3 || 2026.4.29-beta.4 || 2026.4.30-beta.1 || 2026.5.2-beta.1 || 2026.5.2-beta.2 || 2026.5.2-beta.3 || 2026.5.3-1 || 2026.5.3-beta.1 || 2026.5.3-beta.2 || 2026.5.3-beta.3 || 2026.5.3-beta.4 || 2026.5.4-beta.1 || 2026.5.4-beta.2 || 2026.5.4-beta.3 || 2026.5.5-beta.1 || 2026.5.5-beta.2 || 2026.5.6-beta.1 || 2026.5.7-beta.1 || 2026.5.9-beta.1 || 2026.5.10-beta.1 || 2026.5.10-beta.2 || 2026.5.10-beta.3 || 2026.5.10-beta.4 || 2026.5.10-beta.5 || 2026.5.10-beta.6 || 2026.5.12-beta.1 || 2026.5.12-beta.2 || 2026.5.12-beta.3 || 2026.5.12-beta.4 || 2026.5.12-beta.5 || 2026.5.12-beta.6 || 2026.5.12-beta.7 || 2026.5.12-beta.8 || 2026.5.14-beta.1 || 2026.5.14-beta.2 || 2026.5.16-beta.1 || 2026.5.16-beta.2 || 2026.5.16-beta.3 || 2026.5.16-beta.4 || 2026.5.16-beta.5 || 2026.5.16-beta.6 || 2026.5.16-beta.7 || 2026.5.18-beta.1 || 2026.5.19-alpha.1 || 2026.5.19-beta.1 || 2026.5.19-beta.2 || 2026.5.20-beta.1 || 2026.5.20-beta.2 || 2026.5.21-alpha.1 || 2026.5.21-beta.1 || 2026.5.22-beta.1 || 2026.5.23-alpha.1 || 2026.5.24-alpha.1 || 2026.5.24-beta.1 || 2026.5.24-beta.2 || 2026.5.25-alpha.1 || 2026.5.25-alpha.2 || 2026.5.25-beta.1 || 2026.5.26-beta.1 || 2026.5.26-beta.2 || 2026.5.27-alpha.1 || 2026.5.27-beta.1 || 2026.5.28-alpha.1 || 2026.5.28-beta.1 || 2026.5.28-beta.2 || 2026.5.28-beta.3 || 2026.5.28-beta.4 || 2026.5.29-alpha.1 || 2026.5.30-beta.1 || 2026.5.30-beta.2 || 2026.5.31-alpha.1 || 2026.5.31-beta.1 || 2026.5.31-beta.2 || 2026.5.31-beta.3 || 2026.5.31-beta.4 || 2026.6.1-alpha.1 || 2026.6.1-alpha.2 || 2026.6.1-alpha.3 || 2026.6.1-beta.1 || 2026.6.1-beta.2 || 2026.6.1-beta.3 || 2026.6.2-alpha.1 || 2026.6.2-alpha.2 || 2026.6.3-alpha.1"
78
+ "openclaw": ">=2026.4.1 || 2026.4.7-1 || 2026.4.9-beta.1 || 2026.4.11-beta.1 || 2026.4.12-beta.1 || 2026.4.14-beta.1 || 2026.4.15-beta.1 || 2026.4.15-beta.2 || 2026.4.19-beta.1 || 2026.4.19-beta.2 || 2026.4.20-beta.1 || 2026.4.20-beta.2 || 2026.4.22-beta.1 || 2026.4.23-beta.1 || 2026.4.23-beta.2 || 2026.4.23-beta.3 || 2026.4.23-beta.4 || 2026.4.23-beta.5 || 2026.4.23-beta.6 || 2026.4.24-beta.1 || 2026.4.24-beta.2 || 2026.4.24-beta.3 || 2026.4.24-beta.4 || 2026.4.24-beta.5 || 2026.4.24-beta.6 || 2026.4.25-beta.1 || 2026.4.25-beta.2 || 2026.4.25-beta.3 || 2026.4.25-beta.4 || 2026.4.25-beta.5 || 2026.4.25-beta.6 || 2026.4.25-beta.7 || 2026.4.25-beta.8 || 2026.4.25-beta.9 || 2026.4.25-beta.10 || 2026.4.25-beta.11 || 2026.4.26-beta.1 || 2026.4.27-beta.1 || 2026.4.29-beta.1 || 2026.4.29-beta.2 || 2026.4.29-beta.3 || 2026.4.29-beta.4 || 2026.4.30-beta.1 || 2026.5.2-beta.1 || 2026.5.2-beta.2 || 2026.5.2-beta.3 || 2026.5.3-1 || 2026.5.3-beta.1 || 2026.5.3-beta.2 || 2026.5.3-beta.3 || 2026.5.3-beta.4 || 2026.5.4-beta.1 || 2026.5.4-beta.2 || 2026.5.4-beta.3 || 2026.5.5-beta.1 || 2026.5.5-beta.2 || 2026.5.6-beta.1 || 2026.5.7-beta.1 || 2026.5.9-beta.1 || 2026.5.10-beta.1 || 2026.5.10-beta.2 || 2026.5.10-beta.3 || 2026.5.10-beta.4 || 2026.5.10-beta.5 || 2026.5.10-beta.6 || 2026.5.12-beta.1 || 2026.5.12-beta.2 || 2026.5.12-beta.3 || 2026.5.12-beta.4 || 2026.5.12-beta.5 || 2026.5.12-beta.6 || 2026.5.12-beta.7 || 2026.5.12-beta.8 || 2026.5.14-beta.1 || 2026.5.14-beta.2 || 2026.5.16-beta.1 || 2026.5.16-beta.2 || 2026.5.16-beta.3 || 2026.5.16-beta.4 || 2026.5.16-beta.5 || 2026.5.16-beta.6 || 2026.5.16-beta.7 || 2026.5.18-beta.1 || 2026.5.19-alpha.1 || 2026.5.19-beta.1 || 2026.5.19-beta.2 || 2026.5.20-beta.1 || 2026.5.20-beta.2 || 2026.5.21-alpha.1 || 2026.5.21-beta.1 || 2026.5.22-beta.1 || 2026.5.23-alpha.1 || 2026.5.24-alpha.1 || 2026.5.24-beta.1 || 2026.5.24-beta.2 || 2026.5.25-alpha.1 || 2026.5.25-alpha.2 || 2026.5.25-beta.1 || 2026.5.26-beta.1 || 2026.5.26-beta.2 || 2026.5.27-alpha.1 || 2026.5.27-beta.1 || 2026.5.28-alpha.1 || 2026.5.28-beta.1 || 2026.5.28-beta.2 || 2026.5.28-beta.3 || 2026.5.28-beta.4 || 2026.5.29-alpha.1 || 2026.5.30-beta.1 || 2026.5.30-beta.2 || 2026.5.31-alpha.1 || 2026.5.31-beta.1 || 2026.5.31-beta.2 || 2026.5.31-beta.3 || 2026.5.31-beta.4 || 2026.6.1-alpha.1 || 2026.6.1-alpha.2 || 2026.6.1-alpha.3 || 2026.6.1-beta.1 || 2026.6.1-beta.2 || 2026.6.1-beta.3 || 2026.6.2-alpha.1 || 2026.6.2-alpha.2 || 2026.6.2-beta.1 || 2026.6.3-alpha.1 || 2026.6.4-alpha.1 || 2026.6.5-alpha.1 || 2026.6.5-alpha.2 || 2026.6.5-beta.1 || 2026.6.5-beta.2 || 2026.6.6-alpha.1"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@openclaw/plugin-inspector": "0.3.10",
82
82
  "acorn": "^8.16.0",
83
83
  "tsup": "^8.5.1",
84
84
  "typescript": "^5.9.3",
85
- "@remnic/core": "^9.3.613"
85
+ "@remnic/core": "^9.3.614"
86
86
  },
87
87
  "license": "MIT",
88
88
  "repository": {