@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 +2 -1
- package/package.json +1 -1
- package/src/cli.ts +61 -9
- package/src/service.ts +1 -1
package/index.ts
CHANGED
|
@@ -120,7 +120,8 @@ const plugin = {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
if (args !== "link" && args !== "link reset") {
|
|
123
|
-
|
|
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
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
|
-
// ---
|
|
690
|
+
// --- disable ---
|
|
688
691
|
root
|
|
689
|
-
.command("
|
|
690
|
-
.option("--purge", "
|
|
691
|
-
.description("Disable ClawNet plugin and remove hook
|
|
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
|
|
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(`
|
|
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(" -
|
|
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.
|
|
75
|
+
export const PLUGIN_VERSION = "0.5.4"; // Reported to server via PATCH /me every 6h
|
|
76
76
|
|
|
77
77
|
// --- Service ---
|
|
78
78
|
|