@susu-eng/gralkor 26.0.7 → 26.0.9

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
@@ -77,16 +77,30 @@ The install is idempotent — running it again with the same version is a no-op.
77
77
 
78
78
  **What the installer handles:**
79
79
 
80
- 1. Clears `plugins.slots.memory` if it references a missing plugin (prevents "Config invalid" errors that block all openclaw commands)
81
- 2. Checks the installed version skips if already current, uninstalls the old version if upgrading
82
- 3. Runs `openclaw plugins install @susu-eng/gralkor@latest` (tolerates config warnings from stale `plugins.allow`/`plugins.entries` references)
83
- 4. Enables the plugin (`openclaw plugins enable gralkor`)
84
- 5. Sets `plugins.slots.memory` to `gralkor`
85
- 6. Applies any `--config`/`--set` values
80
+ 1. Checks the installed version skips if already current, uninstalls the old version if upgrading
81
+ 2. Runs `openclaw plugins install @susu-eng/gralkor@latest` (tolerates config warnings from stale references)
82
+ 3. Applies any `--config`/`--set` values
86
83
 
87
- **What you must handle:**
84
+ The installer does **not** modify `plugins.slots.memory` or `plugins.allow` — those are your responsibility.
85
+
86
+ **Recommended sequencing for init scripts:**
87
+
88
+ ```bash
89
+ # 1. Set allowlist (before install, so openclaw commands don't warn)
90
+ openclaw config set --json plugins.allow '["gralkor", ...]'
91
+
92
+ # 2. Install (or upgrade) the plugin
93
+ npx @susu-eng/gralkor@latest install
94
+
95
+ # 3. Assign the memory slot (after install, so the plugin exists)
96
+ openclaw config set plugins.slots.memory gralkor
97
+
98
+ # 4. Plugin config (via install flags or directly)
99
+ openclaw config set plugins.entries.gralkor.config.test true
100
+ ```
101
+
102
+ **Other prerequisites:**
88
103
 
89
- - **`plugins.allow`**: If your config uses an allowlist, add `"gralkor"` to it. The installer does not modify the allowlist — stale references produce warnings but don't break anything.
90
104
  - **API keys**: Set `GOOGLE_API_KEY` (default), `OPENAI_API_KEY`, or the relevant provider key in the environment before starting OpenClaw.
91
105
  - **`uv`**: Must be on PATH. The installer does not install it.
92
106
 
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAOD,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FjE"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAOD,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EjE"}
@@ -23,11 +23,6 @@ export async function install(opts) {
23
23
  return;
24
24
  }
25
25
  const targetVersion = extractVersionFromTarball(source) ?? extractVersionFromNpmRef(source);
26
- // 3. Clear stale memory slot before listing plugins.
27
- // plugins.slots.memory referencing a missing plugin causes "Config invalid"
28
- // which blocks ALL openclaw commands. Other stale references (plugins.allow,
29
- // plugins.entries) only produce warnings that installPlugin tolerates.
30
- await oc.setConfig("plugins.slots.memory", "").catch(() => { });
31
26
  let plugins;
32
27
  try {
33
28
  plugins = await oc.getInstalledPlugins();
@@ -68,16 +63,7 @@ export async function install(opts) {
68
63
  execute: () => oc.installPlugin(source),
69
64
  });
70
65
  }
71
- // 6. Enable + slot
72
- actions.push({
73
- description: "Enable gralkor",
74
- execute: () => oc.enablePlugin("gralkor"),
75
- });
76
- actions.push({
77
- description: "Set memory slot → gralkor",
78
- execute: () => oc.setConfig("plugins.slots.memory", "gralkor"),
79
- });
80
- // 7. Config
66
+ // 6. Config
81
67
  const configEntries = buildConfigEntries(opts);
82
68
  for (const [key, value] of configEntries) {
83
69
  actions.push({
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,3 @@
1
- export interface ExecResult {
2
- stdout: string;
3
- stderr: string;
4
- exitCode: number;
5
- }
6
1
  export interface PluginInfo {
7
2
  id: string;
8
3
  version: string | null;
@@ -13,16 +8,8 @@ export declare function checkOpenclaw(): Promise<string>;
13
8
  export declare function parsePluginList(stdout: string): PluginInfo[];
14
9
  export declare function getInstalledPlugins(): Promise<PluginInfo[]>;
15
10
  export declare function getPluginInfo(pluginId: string): Promise<PluginInfo | null>;
16
- /**
17
- * Check if openclaw output contains only config warnings (no real errors).
18
- * openclaw plugins install exits non-zero for stale config references
19
- * (e.g. plugins.allow referencing a not-yet-installed plugin).
20
- * These are harmless — the install succeeded despite the exit code.
21
- */
22
- export declare function isConfigWarningOnly(output: string): boolean;
23
11
  export declare function installPlugin(source: string): Promise<void>;
24
12
  export declare function uninstallPlugin(pluginId: string): Promise<void>;
25
- export declare function enablePlugin(pluginId: string): Promise<void>;
26
13
  export declare function setConfig(key: string, value: string): Promise<void>;
27
14
  export declare function getConfig(key: string): Promise<string | null>;
28
15
  //# sourceMappingURL=openclaw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/openclaw.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AA4BD,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAMrD;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAiB5D;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAMjE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAGhF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjE;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrE;AAGD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKnE"}
1
+ {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/openclaw.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AASD,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAErD;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAiB5D;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAEjE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAGhF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOnE"}
@@ -1,33 +1,14 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
3
  const execFileAsync = promisify(execFile);
4
- async function exec(args) {
5
- try {
6
- const { stdout, stderr } = await execFileAsync("openclaw", args, {
7
- timeout: 30_000,
8
- });
9
- return { stdout, stderr, exitCode: 0 };
10
- }
11
- catch (err) {
12
- if (isExecError(err)) {
13
- return {
14
- stdout: err.stdout ?? "",
15
- stderr: err.stderr ?? "",
16
- exitCode: err.code ?? 1,
17
- };
18
- }
19
- throw new Error("openclaw not found on PATH. Install: https://docs.openclaw.ai/install");
20
- }
21
- }
22
- function isExecError(err) {
23
- return err instanceof Error && "code" in err;
4
+ async function openclaw(...args) {
5
+ const { stdout } = await execFileAsync("openclaw", args, {
6
+ timeout: 30_000,
7
+ });
8
+ return stdout;
24
9
  }
25
10
  export async function checkOpenclaw() {
26
- const result = await exec(["--version"]);
27
- if (result.exitCode !== 0) {
28
- throw new Error("openclaw returned non-zero exit code");
29
- }
30
- return result.stdout.trim();
11
+ return (await openclaw("--version")).trim();
31
12
  }
32
13
  /** Parse `openclaw plugins list` output into structured plugin info. */
33
14
  export function parsePluginList(stdout) {
@@ -49,60 +30,28 @@ export function parsePluginList(stdout) {
49
30
  return plugins;
50
31
  }
51
32
  export async function getInstalledPlugins() {
52
- const result = await exec(["plugins", "list"]);
53
- if (result.exitCode !== 0) {
54
- throw new Error(`Failed to list plugins: ${result.stderr}`);
55
- }
56
- return parsePluginList(result.stdout);
33
+ return parsePluginList(await openclaw("plugins", "list"));
57
34
  }
58
35
  export async function getPluginInfo(pluginId) {
59
36
  const plugins = await getInstalledPlugins();
60
37
  return plugins.find((p) => p.id === pluginId) ?? null;
61
38
  }
62
- /**
63
- * Check if openclaw output contains only config warnings (no real errors).
64
- * openclaw plugins install exits non-zero for stale config references
65
- * (e.g. plugins.allow referencing a not-yet-installed plugin).
66
- * These are harmless — the install succeeded despite the exit code.
67
- */
68
- export function isConfigWarningOnly(output) {
69
- return output.includes("Config warnings:") &&
70
- !output.includes("ENOENT") &&
71
- !output.includes("npm error") &&
72
- !output.includes("404");
73
- }
74
39
  export async function installPlugin(source) {
75
- const result = await exec(["plugins", "install", source]);
76
- if (result.exitCode !== 0) {
77
- const output = result.stderr || result.stdout;
78
- if (!isConfigWarningOnly(output)) {
79
- throw new Error(`Install failed: ${output}`);
80
- }
81
- }
40
+ await openclaw("plugins", "install", source);
82
41
  }
83
42
  export async function uninstallPlugin(pluginId) {
84
- const result = await exec(["plugins", "uninstall", pluginId]);
85
- if (result.exitCode !== 0) {
86
- throw new Error(`Uninstall failed: ${result.stderr || result.stdout}`);
87
- }
88
- }
89
- export async function enablePlugin(pluginId) {
90
- const result = await exec(["plugins", "enable", pluginId]);
91
- if (result.exitCode !== 0) {
92
- throw new Error(`Enable failed: ${result.stderr || result.stdout}`);
93
- }
43
+ await openclaw("plugins", "uninstall", pluginId);
94
44
  }
95
45
  export async function setConfig(key, value) {
96
- const result = await exec(["config", "set", key, value]);
97
- if (result.exitCode !== 0) {
98
- throw new Error(`Config set failed: ${result.stderr || result.stdout}`);
99
- }
46
+ await openclaw("config", "set", key, value);
100
47
  }
101
48
  export async function getConfig(key) {
102
- const result = await exec(["config", "get", key]);
103
- if (result.exitCode !== 0)
49
+ try {
50
+ const val = (await openclaw("config", "get", key)).trim();
51
+ return val || null;
52
+ }
53
+ catch {
104
54
  return null;
105
- const val = result.stdout.trim();
106
- return val || null;
55
+ }
107
56
  }
108
57
  //# sourceMappingURL=openclaw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/cli/lib/openclaw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/cli/lib/openclaw.ts"],"names":[],"mappings":"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"}
@@ -95,5 +95,5 @@
95
95
  "label": "Test mode (verbose logging)"
96
96
  }
97
97
  },
98
- "version": "26.0.7"
98
+ "version": "26.0.9"
99
99
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@susu-eng/gralkor",
3
- "version": "26.0.7",
3
+ "version": "26.0.9",
4
4
  "description": "OpenClaw memory plugin powered by Graphiti knowledge graphs and FalkorDB",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",