refactor: rename to openclaw

This commit is contained in:
Peter Steinberger
2026-01-30 03:15:10 +01:00
parent 4583f88626
commit 9a7160786a
2357 changed files with 16688 additions and 16788 deletions
+5 -5
View File
@@ -3,27 +3,27 @@
## 2026.1.29
### Changes
- Version alignment with core Moltbot release numbers.
- Version alignment with core OpenClaw release numbers.
## 2026.1.23
### Changes
- Version alignment with core Moltbot release numbers.
- Version alignment with core OpenClaw release numbers.
## 2026.1.22
### Changes
- Version alignment with core Moltbot release numbers.
- Version alignment with core OpenClaw release numbers.
## 2026.1.21
### Changes
- Version alignment with core Moltbot release numbers.
- Version alignment with core OpenClaw release numbers.
## 2026.1.20
### Changes
- Version alignment with core Moltbot release numbers.
- Version alignment with core OpenClaw release numbers.
## 2026.1.19-1
+5 -5
View File
@@ -1,10 +1,10 @@
# @clawdbot/nostr
# @openclaw/nostr
Nostr DM channel plugin for Clawdbot using NIP-04 encrypted direct messages.
Nostr DM channel plugin for OpenClaw using NIP-04 encrypted direct messages.
## Overview
This extension adds Nostr as a messaging channel to Clawdbot. It enables your bot to:
This extension adds Nostr as a messaging channel to OpenClaw. It enables your bot to:
- Receive encrypted DMs from Nostr users
- Send encrypted responses back
@@ -13,7 +13,7 @@ This extension adds Nostr as a messaging channel to Clawdbot. It enables your bo
## Installation
```bash
clawdbot plugins install @clawdbot/nostr
openclaw plugins install @openclaw/nostr
```
## Quick Setup
@@ -90,7 +90,7 @@ clawdbot plugins install @clawdbot/nostr
# Using strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
# Configure clawdbot to use local relay
# Configure openclaw to use local relay
"relays": ["ws://localhost:7777"]
```
+6 -6
View File
@@ -1,5 +1,5 @@
import type { MoltbotPluginApi, MoltbotConfig } from "clawdbot/plugin-sdk";
import { emptyPluginConfigSchema } from "clawdbot/plugin-sdk";
import type { OpenClawConfig, OpenClawPluginApi } from "openclaw/plugin-sdk";
import { emptyPluginConfigSchema } from "openclaw/plugin-sdk";
import { nostrPlugin } from "./src/channel.js";
import { setNostrRuntime, getNostrRuntime } from "./src/runtime.js";
@@ -12,7 +12,7 @@ const plugin = {
name: "Nostr",
description: "Nostr DM channel plugin via NIP-04",
configSchema: emptyPluginConfigSchema(),
register(api: MoltbotPluginApi) {
register(api: OpenClawPluginApi) {
setNostrRuntime(api.runtime);
api.registerChannel({ plugin: nostrPlugin });
@@ -20,13 +20,13 @@ const plugin = {
const httpHandler = createNostrProfileHttpHandler({
getConfigProfile: (accountId: string) => {
const runtime = getNostrRuntime();
const cfg = runtime.config.loadConfig() as MoltbotConfig;
const cfg = runtime.config.loadConfig() as OpenClawConfig;
const account = resolveNostrAccount({ cfg, accountId });
return account.profile;
},
updateConfigProfile: async (accountId: string, profile: NostrProfile) => {
const runtime = getNostrRuntime();
const cfg = runtime.config.loadConfig() as MoltbotConfig;
const cfg = runtime.config.loadConfig() as OpenClawConfig;
// Build the config patch for channels.nostr.profile
const channels = (cfg.channels ?? {}) as Record<string, unknown>;
@@ -49,7 +49,7 @@ const plugin = {
},
getAccountInfo: (accountId: string) => {
const runtime = getNostrRuntime();
const cfg = runtime.config.loadConfig() as MoltbotConfig;
const cfg = runtime.config.loadConfig() as OpenClawConfig;
const account = resolveNostrAccount({ cfg, accountId });
if (!account.configured || !account.publicKey) {
return null;
+6 -6
View File
@@ -1,9 +1,9 @@
{
"name": "@moltbot/nostr",
"version": "2026.1.29",
"name": "@openclaw/nostr",
"version": "2026.1.27-beta.1",
"type": "module",
"description": "Moltbot Nostr channel plugin for NIP-04 encrypted DMs",
"moltbot": {
"description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
"openclaw": {
"extensions": [
"./index.ts"
],
@@ -18,13 +18,13 @@
"quickstartAllowFrom": true
},
"install": {
"npmSpec": "@moltbot/nostr",
"npmSpec": "@openclaw/nostr",
"localPath": "extensions/nostr",
"defaultChoice": "npm"
}
},
"dependencies": {
"moltbot": "workspace:*",
"openclaw": "workspace:*",
"nostr-tools": "^2.20.0",
"zod": "^4.3.6"
}
+2 -2
View File
@@ -3,7 +3,7 @@ import {
DEFAULT_ACCOUNT_ID,
formatPairingApproveHint,
type ChannelPlugin,
} from "clawdbot/plugin-sdk";
} from "openclaw/plugin-sdk";
import { NostrConfigSchema } from "./config-schema.js";
import { getNostrRuntime } from "./runtime.js";
@@ -221,7 +221,7 @@ export const nostrPlugin: ChannelPlugin<ResolvedNostrAccount> = {
onMessage: async (senderPubkey, text, reply) => {
ctx.log?.debug(`[${account.accountId}] DM from ${senderPubkey}: ${text.slice(0, 50)}...`);
// Forward to moltbot's message pipeline
// Forward to OpenClaw's message pipeline
await runtime.channel.reply.handleInboundMessage({
channel: "nostr",
accountId: account.accountId,
+1 -1
View File
@@ -1,4 +1,4 @@
import { MarkdownConfigSchema, buildChannelConfigSchema } from "clawdbot/plugin-sdk";
import { MarkdownConfigSchema, buildChannelConfigSchema } from "openclaw/plugin-sdk";
import { z } from "zod";
const allowFromEntry = z.union([z.string(), z.number()]);
@@ -3,7 +3,7 @@ import os from "node:os";
import path from "node:path";
import { describe, expect, it } from "vitest";
import type { PluginRuntime } from "clawdbot/plugin-sdk";
import type { PluginRuntime } from "openclaw/plugin-sdk";
import {
readNostrBusState,
@@ -13,23 +13,24 @@ import {
import { setNostrRuntime } from "./runtime.js";
async function withTempStateDir<T>(fn: (dir: string) => Promise<T>) {
const previous = process.env.CLAWDBOT_STATE_DIR;
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "moltbot-nostr-"));
process.env.CLAWDBOT_STATE_DIR = dir;
const previous = process.env.OPENCLAW_STATE_DIR;
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-nostr-"));
process.env.OPENCLAW_STATE_DIR = dir;
setNostrRuntime({
state: {
resolveStateDir: (env, homedir) => {
const override = env.CLAWDBOT_STATE_DIR?.trim();
const override =
env.OPENCLAW_STATE_DIR?.trim() || env.OPENCLAW_STATE_DIR?.trim();
if (override) return override;
return path.join(homedir(), ".clawdbot");
return path.join(homedir(), ".openclaw");
},
},
} as PluginRuntime);
try {
return await fn(dir);
} finally {
if (previous === undefined) delete process.env.CLAWDBOT_STATE_DIR;
else process.env.CLAWDBOT_STATE_DIR = previous;
if (previous === undefined) delete process.env.OPENCLAW_STATE_DIR;
else process.env.OPENCLAW_STATE_DIR = previous;
await fs.rm(dir, { recursive: true, force: true });
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
import type { PluginRuntime } from "clawdbot/plugin-sdk";
import type { PluginRuntime } from "openclaw/plugin-sdk";
let runtime: PluginRuntime | null = null;
+4 -4
View File
@@ -1,4 +1,4 @@
import type { MoltbotConfig } from "clawdbot/plugin-sdk";
import type { OpenClawConfig } from "openclaw/plugin-sdk";
import { getPublicKeyFromPrivate } from "./nostr-bus.js";
import { DEFAULT_RELAYS } from "./nostr-bus.js";
import type { NostrProfile } from "./config-schema.js";
@@ -30,7 +30,7 @@ const DEFAULT_ACCOUNT_ID = "default";
/**
* List all configured Nostr account IDs
*/
export function listNostrAccountIds(cfg: MoltbotConfig): string[] {
export function listNostrAccountIds(cfg: OpenClawConfig): string[] {
const nostrCfg = (cfg.channels as Record<string, unknown> | undefined)?.nostr as
| NostrAccountConfig
| undefined;
@@ -46,7 +46,7 @@ export function listNostrAccountIds(cfg: MoltbotConfig): string[] {
/**
* Get the default account ID
*/
export function resolveDefaultNostrAccountId(cfg: MoltbotConfig): string {
export function resolveDefaultNostrAccountId(cfg: OpenClawConfig): string {
const ids = listNostrAccountIds(cfg);
if (ids.includes(DEFAULT_ACCOUNT_ID)) return DEFAULT_ACCOUNT_ID;
return ids[0] ?? DEFAULT_ACCOUNT_ID;
@@ -56,7 +56,7 @@ export function resolveDefaultNostrAccountId(cfg: MoltbotConfig): string {
* Resolve a Nostr account from config
*/
export function resolveNostrAccount(opts: {
cfg: MoltbotConfig;
cfg: OpenClawConfig;
accountId?: string | null;
}): ResolvedNostrAccount {
const accountId = opts.accountId ?? DEFAULT_ACCOUNT_ID;