@openclaw/nostr 2026.8.2 → 2026.8.34

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.
@@ -1,7 +1,7 @@
1
- import { a as listNostrAccountIds, c as normalizePubkey, n as nostrSetupContract, o as resolveDefaultNostrAccountId, r as nostrSetupWizard, s as resolveNostrAccount } from "./setup-surface-mA5PMspO.js";
2
- import { a as collectStatusIssuesFromLastError, i as buildChannelConfigSchema, n as NostrProfileSchema, o as createDefaultChannelRuntimeState, r as DEFAULT_ACCOUNT_ID, s as formatPairingApproveHint, t as NostrConfigSchema } from "./config-schema-CkYd8ACn.js";
3
- import { c as validatePrivateKey, l as DEFAULT_RELAYS } from "./setup-adapter-KJ_iGKiG.js";
4
- import { t as normalizeNostrStateAccountId } from "./state-account-id-CvBZ9s6P.js";
1
+ import { a as listNostrAccountIds, c as normalizePubkey, n as nostrSetupContract, o as resolveDefaultNostrAccountId, r as nostrSetupWizard, s as resolveNostrAccount } from "./setup-surface-Dx8QxWSP.mjs";
2
+ import { a as collectStatusIssuesFromLastError, i as buildChannelConfigSchema, n as NostrProfileSchema, o as createDefaultChannelRuntimeState, r as DEFAULT_ACCOUNT_ID, s as formatPairingApproveHint, t as NostrConfigSchema } from "./config-schema-CkYd8ACn.mjs";
3
+ import { c as validatePrivateKey, l as DEFAULT_RELAYS } from "./setup-adapter-KJ_iGKiG.mjs";
4
+ import { t as normalizeNostrStateAccountId } from "./state-account-id-CvBZ9s6P.mjs";
5
5
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
6
6
  import { createScopedDmSecurityResolver, createTopLevelChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
7
7
  import { createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
@@ -1418,7 +1418,7 @@ const startNostrGatewayAccount = async (ctx) => {
1418
1418
  ctx.log?.warn?.(`[${account.accountId}] dropping Nostr DM after preflight drift (${senderPubkey}, ${resolvedAccess.senderAccess.reasonCode})`);
1419
1419
  return;
1420
1420
  }
1421
- const { dispatchInboundDirectDm } = await import("./inbound-direct-dm-runtime-DHn9NoYN.js");
1421
+ const { dispatchInboundDirectDm } = await import("./inbound-direct-dm-runtime-DHn9NoYN.mjs");
1422
1422
  await dispatchInboundDirectDm({
1423
1423
  channelRuntime,
1424
1424
  resolveChannelIngress: async (contextBinding) => {
@@ -0,0 +1,2 @@
1
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-api-nVWula4c.mjs";
2
+ export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -0,0 +1,37 @@
1
+ import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
2
+ import { collectSecretInputAssignment, createChannelSecretTargetRegistryEntries, getChannelRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
3
+ //#region extensions/nostr/src/secret-contract.ts
4
+ const secretTargetRegistryEntries = createChannelSecretTargetRegistryEntries({
5
+ channelKey: "nostr",
6
+ channel: ["privateKey"]
7
+ });
8
+ function collectRuntimeConfigAssignments(params) {
9
+ const nostr = getChannelRecord(params.config, "nostr");
10
+ if (!nostr) return;
11
+ const accountId = normalizeAccountId(typeof nostr.defaultAccount === "string" ? nostr.defaultAccount : void 0);
12
+ collectSecretInputAssignment({
13
+ value: nostr.privateKey,
14
+ path: "channels.nostr.privateKey",
15
+ expected: "string",
16
+ defaults: params.defaults,
17
+ context: params.context,
18
+ active: nostr.enabled !== false,
19
+ inactiveReason: "Nostr channel is disabled.",
20
+ owner: {
21
+ ownerKind: "account",
22
+ ownerId: `nostr:${accountId}`,
23
+ requiredForGateway: false,
24
+ disposition: "isolate",
25
+ contract: nostr
26
+ },
27
+ apply: (value) => {
28
+ nostr.privateKey = value;
29
+ }
30
+ });
31
+ }
32
+ const channelSecrets = {
33
+ secretTargetRegistryEntries,
34
+ collectRuntimeConfigAssignments
35
+ };
36
+ //#endregion
37
+ export { collectRuntimeConfigAssignments as n, secretTargetRegistryEntries as r, channelSecrets as t };
@@ -0,0 +1,2 @@
1
+ import { t as nostrSetupPlugin } from "./setup-plugin-api-B7qtJE84.mjs";
2
+ export { nostrSetupPlugin };
@@ -0,0 +1,82 @@
1
+ import { i as buildChannelConfigSchema, t as NostrConfigSchema } from "./config-schema-CkYd8ACn.mjs";
2
+ import { i as createNostrSetupStatus, l as DEFAULT_RELAYS, n as createNostrSetupAdapter, o as hasConfiguredNostrPrivateKey, r as createNostrSetupContract, s as resolveNostrPrivateKey } from "./setup-adapter-KJ_iGKiG.mjs";
3
+ import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
4
+ import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
5
+ import { createDelegatedSetupWizardProxy } from "openclaw/plugin-sdk/setup-runtime";
6
+ //#region extensions/nostr/src/channel.setup.ts
7
+ const channel = "nostr";
8
+ function getNostrConfig(cfg) {
9
+ return cfg.channels?.nostr;
10
+ }
11
+ function resolveDefaultSetupNostrAccountId(cfg) {
12
+ return normalizeAccountId(getNostrConfig(cfg)?.defaultAccount);
13
+ }
14
+ function resolveSetupNostrAccount(params) {
15
+ const nostrCfg = getNostrConfig(params.cfg);
16
+ const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSetupNostrAccountId(params.cfg));
17
+ const privateKey = resolveNostrPrivateKey(nostrCfg?.privateKey);
18
+ const configured = hasConfiguredNostrPrivateKey(nostrCfg?.privateKey);
19
+ return {
20
+ accountId,
21
+ name: typeof nostrCfg?.name === "string" ? nostrCfg.name : void 0,
22
+ enabled: nostrCfg?.enabled !== false,
23
+ configured,
24
+ privateKey,
25
+ publicKey: "",
26
+ relays: nostrCfg?.relays ?? DEFAULT_RELAYS,
27
+ profile: nostrCfg?.profile,
28
+ config: {
29
+ enabled: nostrCfg?.enabled,
30
+ name: nostrCfg?.name,
31
+ privateKey: nostrCfg?.privateKey,
32
+ relays: nostrCfg?.relays,
33
+ dmPolicy: nostrCfg?.dmPolicy,
34
+ allowFrom: nostrCfg?.allowFrom,
35
+ profile: nostrCfg?.profile
36
+ }
37
+ };
38
+ }
39
+ const nostrSetupWizard = createDelegatedSetupWizardProxy({
40
+ channel,
41
+ loadWizard: async () => (await import("./setup-surface-Dx8QxWSP.mjs").then((n) => n.i)).nostrSetupWizard,
42
+ status: createNostrSetupStatus(resolveSetupNostrAccount),
43
+ resolveShouldPromptAccountIds: () => false,
44
+ delegatePrepare: true,
45
+ delegateFinalize: true
46
+ });
47
+ const nostrSetupPlugin = {
48
+ id: channel,
49
+ meta: {
50
+ id: channel,
51
+ label: "Nostr",
52
+ selectionLabel: "Nostr",
53
+ docsPath: "/channels/nostr",
54
+ docsLabel: "nostr",
55
+ blurb: "Decentralized DMs via Nostr relays (NIP-04)",
56
+ order: 100
57
+ },
58
+ capabilities: {
59
+ chatTypes: ["direct"],
60
+ media: false
61
+ },
62
+ reload: { configPrefixes: ["channels.nostr"] },
63
+ configSchema: buildChannelConfigSchema(NostrConfigSchema),
64
+ setupContract: createNostrSetupContract(createNostrSetupAdapter({ resolveAccountId: (cfg, accountId) => accountId?.trim() || resolveDefaultSetupNostrAccountId(cfg) })),
65
+ setupWizard: nostrSetupWizard,
66
+ config: {
67
+ listAccountIds: (cfg) => resolveSetupNostrAccount({ cfg }).configured ? [resolveDefaultSetupNostrAccountId(cfg)] : [],
68
+ resolveAccount: (cfg, accountId) => resolveSetupNostrAccount({
69
+ cfg,
70
+ accountId
71
+ }),
72
+ defaultAccountId: resolveDefaultSetupNostrAccountId,
73
+ isConfigured: (account) => account.configured,
74
+ describeAccount: (account) => describeAccountSnapshot({
75
+ account,
76
+ configured: account.configured,
77
+ extra: { publicKey: account.publicKey }
78
+ })
79
+ }
80
+ };
81
+ //#endregion
82
+ export { nostrSetupPlugin as t };
@@ -1,4 +1,4 @@
1
- import { a as parseRelayUrls, c as validatePrivateKey, i as createNostrSetupStatus, l as DEFAULT_RELAYS, n as createNostrSetupAdapter, o as hasConfiguredNostrPrivateKey, r as createNostrSetupContract, s as resolveNostrPrivateKey, t as buildNostrSetupPatch } from "./setup-adapter-KJ_iGKiG.js";
1
+ import { a as parseRelayUrls, c as validatePrivateKey, i as createNostrSetupStatus, l as DEFAULT_RELAYS, n as createNostrSetupAdapter, o as hasConfiguredNostrPrivateKey, r as createNostrSetupContract, s as resolveNostrPrivateKey, t as buildNostrSetupPatch } from "./setup-adapter-KJ_iGKiG.mjs";
2
2
  import { createAccountListHelpers } from "openclaw/plugin-sdk/account-helpers";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
package/dist/api.js CHANGED
@@ -1,7 +1,7 @@
1
- import { s as resolveNostrAccount } from "./setup-surface-mA5PMspO.js";
1
+ import { s as resolveNostrAccount } from "./.setup/setup-surface-Dx8QxWSP.mjs";
2
2
  import { getPluginRuntimeGatewayRequestScope } from "./runtime-api.js";
3
- import { n as NostrProfileSchema } from "./config-schema-CkYd8ACn.js";
4
- import { a as getNostrRuntime, i as contentToProfile, n as nostrPlugin, o as setNostrRuntime, r as publishNostrProfile, t as getNostrProfileState } from "./channel-CLybVB2-.js";
3
+ import { n as NostrProfileSchema } from "./.setup/config-schema-CkYd8ACn.mjs";
4
+ import { a as getNostrRuntime, i as contentToProfile, n as nostrPlugin, o as setNostrRuntime, r as publishNostrProfile, t as getNostrProfileState } from "./.setup/channel-B_gAHZXU.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { z } from "zod";
7
7
  import { SimplePool } from "nostr-tools";
@@ -1,2 +1,2 @@
1
- import { n as nostrPlugin } from "./channel-CLybVB2-.js";
1
+ import { n as nostrPlugin } from "./.setup/channel-B_gAHZXU.mjs";
2
2
  export { nostrPlugin };
@@ -1,4 +1,4 @@
1
- import { t as normalizeNostrStateAccountId } from "./state-account-id-CvBZ9s6P.js";
1
+ import { t as normalizeNostrStateAccountId } from "./.setup/state-account-id-CvBZ9s6P.mjs";
2
2
  import { asFiniteNumber } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
@@ -1,37 +1,2 @@
1
- import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
2
- import { collectSecretInputAssignment, createChannelSecretTargetRegistryEntries, getChannelRecord } from "openclaw/plugin-sdk/channel-secret-basic-runtime";
3
- //#region extensions/nostr/src/secret-contract.ts
4
- const secretTargetRegistryEntries = createChannelSecretTargetRegistryEntries({
5
- channelKey: "nostr",
6
- channel: ["privateKey"]
7
- });
8
- function collectRuntimeConfigAssignments(params) {
9
- const nostr = getChannelRecord(params.config, "nostr");
10
- if (!nostr) return;
11
- const accountId = normalizeAccountId(typeof nostr.defaultAccount === "string" ? nostr.defaultAccount : void 0);
12
- collectSecretInputAssignment({
13
- value: nostr.privateKey,
14
- path: "channels.nostr.privateKey",
15
- expected: "string",
16
- defaults: params.defaults,
17
- context: params.context,
18
- active: nostr.enabled !== false,
19
- inactiveReason: "Nostr channel is disabled.",
20
- owner: {
21
- ownerKind: "account",
22
- ownerId: `nostr:${accountId}`,
23
- requiredForGateway: false,
24
- disposition: "isolate",
25
- contract: nostr
26
- },
27
- apply: (value) => {
28
- nostr.privateKey = value;
29
- }
30
- });
31
- }
32
- const channelSecrets = {
33
- secretTargetRegistryEntries,
34
- collectRuntimeConfigAssignments
35
- };
36
- //#endregion
1
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./.setup/secret-contract-api-nVWula4c.mjs";
37
2
  export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
package/dist/setup-api.js CHANGED
@@ -1,2 +1,2 @@
1
- import { r as nostrSetupWizard, t as nostrSetupAdapter } from "./setup-surface-mA5PMspO.js";
1
+ import { r as nostrSetupWizard, t as nostrSetupAdapter } from "./.setup/setup-surface-Dx8QxWSP.mjs";
2
2
  export { nostrSetupAdapter, nostrSetupWizard };
@@ -1,13 +1,14 @@
1
1
  import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
+ import { fileURLToPath } from "node:url";
2
3
  //#region extensions/nostr/setup-entry.ts
3
4
  var setup_entry_default = defineBundledChannelSetupEntry({
4
5
  importMetaUrl: import.meta.url,
5
6
  plugin: {
6
- specifier: "./setup-plugin-api.js",
7
+ specifier: fileURLToPath(new URL(".setup/setup-plugin-api-B7i5rR6T.mjs", import.meta.url).href),
7
8
  exportName: "nostrSetupPlugin"
8
9
  },
9
10
  secrets: {
10
- specifier: "./secret-contract-api.js",
11
+ specifier: fileURLToPath(new URL(".setup/secret-contract-api-DUmw8THQ.mjs", import.meta.url).href),
11
12
  exportName: "channelSecrets"
12
13
  }
13
14
  });
@@ -1,82 +1,2 @@
1
- import { i as buildChannelConfigSchema, t as NostrConfigSchema } from "./config-schema-CkYd8ACn.js";
2
- import { i as createNostrSetupStatus, l as DEFAULT_RELAYS, n as createNostrSetupAdapter, o as hasConfiguredNostrPrivateKey, r as createNostrSetupContract, s as resolveNostrPrivateKey } from "./setup-adapter-KJ_iGKiG.js";
3
- import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
4
- import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
5
- import { createDelegatedSetupWizardProxy } from "openclaw/plugin-sdk/setup-runtime";
6
- //#region extensions/nostr/src/channel.setup.ts
7
- const channel = "nostr";
8
- function getNostrConfig(cfg) {
9
- return cfg.channels?.nostr;
10
- }
11
- function resolveDefaultSetupNostrAccountId(cfg) {
12
- return normalizeAccountId(getNostrConfig(cfg)?.defaultAccount);
13
- }
14
- function resolveSetupNostrAccount(params) {
15
- const nostrCfg = getNostrConfig(params.cfg);
16
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSetupNostrAccountId(params.cfg));
17
- const privateKey = resolveNostrPrivateKey(nostrCfg?.privateKey);
18
- const configured = hasConfiguredNostrPrivateKey(nostrCfg?.privateKey);
19
- return {
20
- accountId,
21
- name: typeof nostrCfg?.name === "string" ? nostrCfg.name : void 0,
22
- enabled: nostrCfg?.enabled !== false,
23
- configured,
24
- privateKey,
25
- publicKey: "",
26
- relays: nostrCfg?.relays ?? DEFAULT_RELAYS,
27
- profile: nostrCfg?.profile,
28
- config: {
29
- enabled: nostrCfg?.enabled,
30
- name: nostrCfg?.name,
31
- privateKey: nostrCfg?.privateKey,
32
- relays: nostrCfg?.relays,
33
- dmPolicy: nostrCfg?.dmPolicy,
34
- allowFrom: nostrCfg?.allowFrom,
35
- profile: nostrCfg?.profile
36
- }
37
- };
38
- }
39
- const nostrSetupWizard = createDelegatedSetupWizardProxy({
40
- channel,
41
- loadWizard: async () => (await import("./setup-surface-mA5PMspO.js").then((n) => n.i)).nostrSetupWizard,
42
- status: createNostrSetupStatus(resolveSetupNostrAccount),
43
- resolveShouldPromptAccountIds: () => false,
44
- delegatePrepare: true,
45
- delegateFinalize: true
46
- });
47
- const nostrSetupPlugin = {
48
- id: channel,
49
- meta: {
50
- id: channel,
51
- label: "Nostr",
52
- selectionLabel: "Nostr",
53
- docsPath: "/channels/nostr",
54
- docsLabel: "nostr",
55
- blurb: "Decentralized DMs via Nostr relays (NIP-04)",
56
- order: 100
57
- },
58
- capabilities: {
59
- chatTypes: ["direct"],
60
- media: false
61
- },
62
- reload: { configPrefixes: ["channels.nostr"] },
63
- configSchema: buildChannelConfigSchema(NostrConfigSchema),
64
- setupContract: createNostrSetupContract(createNostrSetupAdapter({ resolveAccountId: (cfg, accountId) => accountId?.trim() || resolveDefaultSetupNostrAccountId(cfg) })),
65
- setupWizard: nostrSetupWizard,
66
- config: {
67
- listAccountIds: (cfg) => resolveSetupNostrAccount({ cfg }).configured ? [resolveDefaultSetupNostrAccountId(cfg)] : [],
68
- resolveAccount: (cfg, accountId) => resolveSetupNostrAccount({
69
- cfg,
70
- accountId
71
- }),
72
- defaultAccountId: resolveDefaultSetupNostrAccountId,
73
- isConfigured: (account) => account.configured,
74
- describeAccount: (account) => describeAccountSnapshot({
75
- account,
76
- configured: account.configured,
77
- extra: { publicKey: account.publicKey }
78
- })
79
- }
80
- };
81
- //#endregion
1
+ import { t as nostrSetupPlugin } from "./.setup/setup-plugin-api-B7qtJE84.mjs";
82
2
  export { nostrSetupPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/nostr",
3
- "version": "2026.8.2",
3
+ "version": "2026.8.34",
4
4
  "description": "OpenClaw Nostr channel plugin for NIP-04 encrypted direct messages.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "zod": "4.4.3"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.8.2"
15
+ "openclaw": ">=2026.8.34"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -79,10 +79,10 @@
79
79
  "minHostVersion": ">=2026.4.10"
80
80
  },
81
81
  "compat": {
82
- "pluginApi": ">=2026.8.2"
82
+ "pluginApi": ">=2026.8.34"
83
83
  },
84
84
  "build": {
85
- "openclawVersion": "2026.8.2"
85
+ "openclawVersion": "2026.8.34"
86
86
  },
87
87
  "release": {
88
88
  "publishToClawHub": true,