@clwnt/clawnet 0.5.2 → 0.5.4

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/index.ts CHANGED
@@ -120,7 +120,8 @@ const plugin = {
120
120
  }
121
121
 
122
122
  if (args !== "link" && args !== "link reset") {
123
- return { text: "Commands:\n /clawnet status show plugin configuration and health\n /clawnet test — test delivery to this chat\n /clawnet link — pin message delivery to this chat (use if messages aren't arriving)\n /clawnet link reset — unpin and return to automatic delivery\n /clawnet pause — temporarily stop polling\n /clawnet resume — restart polling" };
123
+ const { PLUGIN_VERSION } = await import("./src/service.js");
124
+ return { text: `ClawNet Plugin v${PLUGIN_VERSION}\n\nCommands:\n /clawnet status — show plugin configuration and health\n /clawnet test — test delivery to this chat\n /clawnet link — pin message delivery to this chat (use if messages aren't arriving)\n /clawnet link reset — unpin and return to automatic delivery\n /clawnet pause — temporarily stop polling\n /clawnet resume — restart polling\n\nUpdate: openclaw plugins update clawnet` };
124
125
  }
125
126
 
126
127
  // Load config and find clawnet accounts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clwnt/clawnet",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "type": "module",
5
5
  "description": "ClawNet integration for OpenClaw — poll inbox, route messages to hooks",
6
6
  "files": [
package/src/cli.ts CHANGED
@@ -5,6 +5,7 @@ import * as fs from "node:fs/promises";
5
5
  import * as path from "node:path";
6
6
  import * as os from "node:os";
7
7
  import type { ClawnetConfig } from "./config.js";
8
+ import { PLUGIN_VERSION } from "./service.js";
8
9
 
9
10
  const API_BASE = "https://api.clwnt.com";
10
11
  const DEVICE_POLL_INTERVAL_MS = 3000;
@@ -148,6 +149,7 @@ export function buildStatusText(api: any): string {
148
149
 
149
150
  lines.push("**ClawNet Status**\n");
150
151
 
152
+ lines.push(`Plugin version: ${PLUGIN_VERSION}`);
151
153
  lines.push(`Plugin enabled: ${pluginEntry?.enabled ?? false}`);
152
154
  if (pluginCfg) {
153
155
  if (pluginCfg.paused) {
@@ -578,6 +580,7 @@ export function registerClawnetCli(params: { program: Command; api: any; cfg: Cl
578
580
  console.log("\n ClawNet Status\n");
579
581
 
580
582
  // Plugin
583
+ console.log(` Plugin version: ${PLUGIN_VERSION}`);
581
584
  console.log(` Plugin enabled: ${pluginEntry?.enabled ?? false}`);
582
585
  if (pluginCfg) {
583
586
  console.log(` Poll interval: ${pluginCfg.pollEverySeconds ?? "?"}s`);
@@ -684,11 +687,11 @@ export function registerClawnetCli(params: { program: Command; api: any; cfg: Cl
684
687
  console.log("");
685
688
  });
686
689
 
687
- // --- uninstall ---
690
+ // --- disable ---
688
691
  root
689
- .command("uninstall")
690
- .option("--purge", "Remove config entirely (default: just disable)")
691
- .description("Disable ClawNet plugin and remove hook mapping")
692
+ .command("disable")
693
+ .option("--purge", "Also remove account config (tokens, accounts)")
694
+ .description("Disable ClawNet plugin and remove hook mappings")
692
695
  .action(async (opts) => {
693
696
  const currentConfig = api.runtime.config.loadConfig();
694
697
  const cfg = { ...currentConfig };
@@ -713,20 +716,69 @@ export function registerClawnetCli(params: { program: Command; api: any; cfg: Cl
713
716
  }
714
717
  const removedCount = beforeCount - (cfg.hooks?.mappings?.length ?? 0);
715
718
 
716
- console.log("\n ClawNet uninstalled.\n");
717
- console.log(" - Plugin disabled");
719
+ console.log("\n ClawNet disabled.\n");
720
+ console.log(" - Plugin disabled (polling stopped)");
721
+ console.log(" - Hook mappings removed");
718
722
  if (removedCount > 0) {
719
- console.log(` - ${removedCount} hook mapping(s) removed`);
723
+ console.log(` (${removedCount} mapping(s) cleaned up)`);
720
724
  }
725
+ console.log("");
726
+ console.log(" To re-enable: openclaw clawnet setup");
727
+ console.log(" To fully remove: openclaw plugins uninstall clawnet");
721
728
 
722
729
  // Do NOT touch: hooks.enabled, hooks.token, allowedSessionKeyPrefixes, allowedAgentIds
723
730
 
724
731
  await api.runtime.config.writeConfigFile(cfg);
725
732
 
726
- console.log(" - hooks.enabled, hooks.token left untouched");
727
733
  if (opts.purge) {
728
- console.log(" - Plugin config purged");
734
+ console.log(" - Account config purged");
735
+ }
736
+ console.log("\n Restart the Gateway to apply: openclaw gateway restart\n");
737
+ });
738
+
739
+ // --- enable ---
740
+ root
741
+ .command("enable")
742
+ .description("Re-enable a previously disabled ClawNet plugin")
743
+ .action(async () => {
744
+ const currentConfig = api.runtime.config.loadConfig();
745
+ const cfg = structuredClone(currentConfig);
746
+
747
+ const pluginEntry = cfg.plugins?.entries?.clawnet;
748
+ if (!pluginEntry) {
749
+ console.log("\n No ClawNet config found. Run `openclaw clawnet setup` first.\n");
750
+ return;
729
751
  }
752
+
753
+ if (pluginEntry.enabled) {
754
+ console.log("\n ClawNet is already enabled.\n");
755
+ return;
756
+ }
757
+
758
+ pluginEntry.enabled = true;
759
+
760
+ // Restore hook mappings from accounts
761
+ const accounts: any[] = pluginEntry.config?.accounts ?? [];
762
+ const enabled = accounts.filter((a: any) => a.enabled !== false);
763
+ if (enabled.length > 0) {
764
+ cfg.hooks ??= {};
765
+ let mappings = cfg.hooks.mappings ?? [];
766
+ for (const account of enabled) {
767
+ const channel = pluginEntry.config?.deliver?.channel ?? "last";
768
+ mappings = upsertMapping(mappings, buildClawnetMapping(
769
+ account.id,
770
+ channel,
771
+ account.openclawAgentId ?? account.id,
772
+ ));
773
+ }
774
+ cfg.hooks.mappings = mappings;
775
+ }
776
+
777
+ await api.runtime.config.writeConfigFile(cfg);
778
+
779
+ console.log("\n ClawNet enabled.\n");
780
+ console.log(` - Plugin enabled (${enabled.length} account(s))`);
781
+ console.log(` - Hook mappings restored`);
730
782
  console.log("\n Restart the Gateway to apply: openclaw gateway restart\n");
731
783
  });
732
784
  }
package/src/service.ts CHANGED
@@ -72,7 +72,7 @@ async function reloadOnboardingMessage(): Promise<void> {
72
72
 
73
73
  const SKILL_UPDATE_INTERVAL_MS = 6 * 60 * 60 * 1000; // 6 hours
74
74
  const SKILL_FILES = ["skill.json", "api-reference.md", "inbox-handler.md", "capabilities.json", "hook-template.txt", "tool-descriptions.json", "onboarding-message.txt"];
75
- const PLUGIN_VERSION = "0.5.2"; // Reported to server via PATCH /me every 6h
75
+ export const PLUGIN_VERSION = "0.5.4"; // Reported to server via PATCH /me every 6h
76
76
 
77
77
  // --- Service ---
78
78