@openclaw/nostr 2026.7.2-beta.2 → 2026.7.2-beta.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.
Files changed (46) hide show
  1. package/dist/api.js +20 -6
  2. package/dist/{channel-B51rExHD.js → channel-DqbdMXMg.js} +810 -428
  3. package/dist/channel-plugin-api.js +1 -1
  4. package/dist/inbound-direct-dm-runtime-DHn9NoYN.js +2 -0
  5. package/dist/{setup-adapter-DEU3o8MF.js → setup-adapter-BjKmSwdW.js} +31 -1
  6. package/dist/setup-api.js +1 -1
  7. package/dist/setup-plugin-api.js +5 -3
  8. package/dist/{setup-surface-B52P4uo2.js → setup-surface-ChtM-WSY.js} +6 -4
  9. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js +35 -3
  10. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js.map +2 -2
  11. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js +30 -2
  12. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js.map +2 -2
  13. package/node_modules/nostr-tools/lib/cjs/index.js +35 -3
  14. package/node_modules/nostr-tools/lib/cjs/index.js.map +2 -2
  15. package/node_modules/nostr-tools/lib/cjs/nip46.js +35 -3
  16. package/node_modules/nostr-tools/lib/cjs/nip46.js.map +2 -2
  17. package/node_modules/nostr-tools/lib/cjs/nipb0.js +4 -1
  18. package/node_modules/nostr-tools/lib/cjs/nipb0.js.map +2 -2
  19. package/node_modules/nostr-tools/lib/cjs/pool.js +35 -3
  20. package/node_modules/nostr-tools/lib/cjs/pool.js.map +2 -2
  21. package/node_modules/nostr-tools/lib/cjs/relay.js +30 -2
  22. package/node_modules/nostr-tools/lib/cjs/relay.js.map +2 -2
  23. package/node_modules/nostr-tools/lib/esm/abstract-pool.js +35 -3
  24. package/node_modules/nostr-tools/lib/esm/abstract-pool.js.map +2 -2
  25. package/node_modules/nostr-tools/lib/esm/abstract-relay.js +30 -2
  26. package/node_modules/nostr-tools/lib/esm/abstract-relay.js.map +2 -2
  27. package/node_modules/nostr-tools/lib/esm/index.js +35 -3
  28. package/node_modules/nostr-tools/lib/esm/index.js.map +2 -2
  29. package/node_modules/nostr-tools/lib/esm/nip46.js +35 -3
  30. package/node_modules/nostr-tools/lib/esm/nip46.js.map +2 -2
  31. package/node_modules/nostr-tools/lib/esm/nipb0.js +4 -1
  32. package/node_modules/nostr-tools/lib/esm/nipb0.js.map +2 -2
  33. package/node_modules/nostr-tools/lib/esm/pool.js +35 -3
  34. package/node_modules/nostr-tools/lib/esm/pool.js.map +2 -2
  35. package/node_modules/nostr-tools/lib/esm/relay.js +30 -2
  36. package/node_modules/nostr-tools/lib/esm/relay.js.map +2 -2
  37. package/node_modules/nostr-tools/lib/nostr.bundle.js +35 -3
  38. package/node_modules/nostr-tools/lib/nostr.bundle.js.map +2 -2
  39. package/node_modules/nostr-tools/lib/types/abstract-pool.d.ts +1 -0
  40. package/node_modules/nostr-tools/lib/types/abstract-relay.d.ts +5 -0
  41. package/node_modules/nostr-tools/lib/types/relay.d.ts +2 -2
  42. package/node_modules/nostr-tools/package.json +1 -1
  43. package/npm-shrinkwrap.json +7 -7
  44. package/openclaw.plugin.json +0 -5
  45. package/package.json +41 -15
  46. package/dist/inbound-direct-dm-runtime-EdLLVtkh.js +0 -2
package/dist/api.js CHANGED
@@ -1,14 +1,14 @@
1
- import { o as resolveNostrAccount } from "./setup-surface-B52P4uo2.js";
1
+ import { s as resolveNostrAccount } from "./setup-surface-ChtM-WSY.js";
2
2
  import { getPluginRuntimeGatewayRequestScope } from "./runtime-api.js";
3
3
  import { n as NostrProfileSchema } from "./config-schema-CelPzg1N.js";
4
- import { a as setNostrRuntime, i as getNostrRuntime, n as nostrPlugin, o as contentToProfile, r as publishNostrProfile, t as getNostrProfileState } from "./channel-B51rExHD.js";
4
+ import { a as getNostrRuntime, i as contentToProfile, n as nostrPlugin, o as setNostrRuntime, r as publishNostrProfile, t as getNostrProfileState } from "./channel-DqbdMXMg.js";
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";
8
- import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
9
8
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
10
9
  import { readJsonBodyWithLimit, requestBodyErrorToText } from "openclaw/plugin-sdk/webhook-request-guards";
11
10
  import { createFixedWindowRateLimiter } from "openclaw/plugin-sdk/webhook-ingress";
11
+ import { resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
12
12
  import { isBlockedHostnameOrIp } from "openclaw/plugin-sdk/ssrf-runtime";
13
13
  //#region extensions/nostr/src/nostr-profile-url-safety.ts
14
14
  function validateUrlSafety(urlStr) {
@@ -115,9 +115,9 @@ async function importProfileFromRelays(opts) {
115
115
  relaysQueried
116
116
  };
117
117
  const bestEvent = events.reduce((current, candidate) => candidate.event.created_at > current.event.created_at ? candidate : current);
118
- let content;
118
+ let parsedContent;
119
119
  try {
120
- content = JSON.parse(bestEvent.event.content);
120
+ parsedContent = JSON.parse(bestEvent.event.content);
121
121
  } catch {
122
122
  return {
123
123
  ok: false,
@@ -126,9 +126,23 @@ async function importProfileFromRelays(opts) {
126
126
  sourceRelay: bestEvent.relay
127
127
  };
128
128
  }
129
+ if (typeof parsedContent !== "object" || parsedContent === null || Array.isArray(parsedContent)) return {
130
+ ok: false,
131
+ error: "Profile event content must be a JSON object",
132
+ relaysQueried,
133
+ sourceRelay: bestEvent.relay
134
+ };
135
+ const sanitizedProfile = sanitizeProfileUrls(contentToProfile(parsedContent));
136
+ const validatedProfile = NostrProfileSchema.safeParse(sanitizedProfile);
137
+ if (!validatedProfile.success) return {
138
+ ok: false,
139
+ error: "Profile event content has invalid fields",
140
+ relaysQueried,
141
+ sourceRelay: bestEvent.relay
142
+ };
129
143
  return {
130
144
  ok: true,
131
- profile: sanitizeProfileUrls(contentToProfile(content)),
145
+ profile: validatedProfile.data,
132
146
  event: {
133
147
  id: bestEvent.event.id,
134
148
  pubkey: bestEvent.event.pubkey,