@openclaw/matrix 2026.5.27-beta.1 → 2026.5.28-beta.1

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 (72) hide show
  1. package/dist/api.js +4 -4
  2. package/dist/{approval-handler.runtime-D2nZfRw6.js → approval-handler.runtime-DluqYmxg.js} +7 -37
  3. package/dist/{approval-ids-DzBw_AG3.js → approval-ids-CFZrzmvI.js} +1 -1
  4. package/dist/{approval-reaction-auth-BvK3dXMH.js → approval-reaction-auth-D0qxpl_o.js} +2 -2
  5. package/dist/{channel-BLuA_9If.js → channel-NWX4upHC.js} +15 -15
  6. package/dist/channel-plugin-api.js +1 -1
  7. package/dist/{channel.runtime-CCAsyp75.js → channel.runtime-Bj0ZZFxY.js} +7 -7
  8. package/dist/{cli-Bo50M7l4.js → cli-CLRLY_-i.js} +15 -14
  9. package/dist/{cli-metadata-CqUHNx_0.js → cli-metadata-3lBoQ4Zu.js} +1 -1
  10. package/dist/cli-metadata.js +1 -1
  11. package/dist/{client-QO7vDxm0.js → client-DMLL7BD3.js} +2 -2
  12. package/dist/{client-BgsOzckO.js → client-PgC6QxFp.js} +2 -2
  13. package/dist/{client-bootstrap-DK9i3KZ5.js → client-bootstrap-DDWICVDG.js} +1 -1
  14. package/dist/{config-schema-DuSRVdwT.js → config-schema-DLcRkLoI.js} +1 -1
  15. package/dist/contract-api.js +3 -3
  16. package/dist/{create-client-hdBEoEIm.js → create-client-DuDqSLm5.js} +2 -2
  17. package/dist/{crypto-runtime-BcQzS9DV.js → crypto-runtime-DW4yyphN.js} +4 -4
  18. package/dist/{deps-CAdiytPJ.js → deps-BVWGd2XS.js} +12 -2
  19. package/dist/{directory-live-2-Vb6nss.js → directory-live-B1uWLPJc.js} +2 -2
  20. package/dist/{doctor-qLh9PyE4.js → doctor-CENc9ks0.js} +1 -1
  21. package/dist/{draft-stream-BBVqdEbn.js → draft-stream-CQOHHA1L.js} +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/{legacy-crypto-inspector-BRdo-WqV.js → legacy-crypto-inspector-tJOj25VL.js} +1 -1
  24. package/dist/{logging-BR-gcAjp.js → logging-Bs8MnTq3.js} +2 -9
  25. package/dist/{matrix-migration.runtime-BhJb4ZII.js → matrix-migration.runtime-CZOep_JX.js} +1 -1
  26. package/dist/{media-text-C6q1S0AJ.js → media-text-Bl2T_Tej.js} +1 -1
  27. package/dist/{messages-D-VxmWkC.js → messages-IJd7lTpT.js} +3 -3
  28. package/dist/{monitor-DO1yiHWm.js → monitor-BtYrCwXE.js} +24 -25
  29. package/dist/plugin-entry.handlers.runtime.js +1 -1
  30. package/dist/probe.runtime-DFzGeW9y.js +3 -0
  31. package/dist/{profile-update-B_LpeC8E.js → profile-update--OKomd5A.js} +2 -2
  32. package/dist/{reaction-events-BefH3-Gu.js → reaction-events-Cw229qBs.js} +1 -1
  33. package/dist/recovery-key-store-0i4do66_.js +294 -0
  34. package/dist/{resolve-targets-BPhBqXyj.js → resolve-targets-DICyeq1_.js} +1 -1
  35. package/dist/{resolver.runtime-BOS3foyc.js → resolver.runtime-BiecZkY9.js} +1 -1
  36. package/dist/{runtime-api-B-jlPE4A.js → runtime-api-CsF7Kokd.js} +2 -2
  37. package/dist/runtime-api.js +1 -1
  38. package/dist/runtime-heavy-api.js +1 -1
  39. package/dist/{sdk-BKBZkPKt.js → sdk-Bb6cggYW.js} +8 -303
  40. package/dist/{send-DivaFHb1.js → send-6c-_Pb_x.js} +1 -1
  41. package/dist/{setup-bootstrap-ClcP-tDQ.js → setup-bootstrap-DO6nQjiO.js} +2 -2
  42. package/dist/{setup-core-s8s_Qudu.js → setup-core-CcMpf9nt.js} +1 -1
  43. package/dist/setup-plugin-api.js +3 -3
  44. package/dist/{setup-surface-BOt10HNf.js → setup-surface-eTmNGZRP.js} +5 -5
  45. package/dist/{shared-3K27tl8e.js → shared-cY7hRlYO.js} +111 -4
  46. package/dist/{thread-bindings-CLjJrThw.js → thread-bindings-LZukDWcn.js} +1 -1
  47. package/dist/{tool-actions.runtime-Vky1krcK.js → tool-actions.runtime-DmgBERwn.js} +20 -21
  48. package/dist/{verification-Dar6QON4.js → verification-aUpgCdQU.js} +1 -1
  49. package/node_modules/linkify-it/build/index.cjs.js +99 -94
  50. package/node_modules/linkify-it/index.mjs +99 -94
  51. package/node_modules/linkify-it/package.json +11 -1
  52. package/node_modules/markdown-it/README.md +13 -17
  53. package/node_modules/markdown-it/dist/index.cjs.js +111 -31
  54. package/node_modules/markdown-it/dist/markdown-it.js +117 -31
  55. package/node_modules/markdown-it/dist/markdown-it.min.js +2 -2
  56. package/node_modules/markdown-it/lib/common/utils.mjs +30 -1
  57. package/node_modules/markdown-it/lib/index.mjs +1 -1
  58. package/node_modules/markdown-it/lib/rules_block/heading.mjs +2 -2
  59. package/node_modules/markdown-it/lib/rules_block/html_block.mjs +12 -1
  60. package/node_modules/markdown-it/lib/rules_block/lheading.mjs +4 -1
  61. package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +3 -1
  62. package/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +37 -21
  63. package/node_modules/markdown-it/lib/rules_inline/entity.mjs +2 -2
  64. package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +37 -6
  65. package/node_modules/markdown-it/package.json +14 -3
  66. package/node_modules/matrix-js-sdk/CHANGELOG.md +7 -0
  67. package/node_modules/matrix-js-sdk/package.json +1 -1
  68. package/npm-shrinkwrap.json +35 -15
  69. package/package.json +6 -6
  70. package/dist/probe.runtime-9S17Q3Mo.js +0 -3
  71. package/dist/startup-abort-Bs0Up_Qx.js +0 -109
  72. package/dist/test-api.js +0 -4
@@ -179,6 +179,10 @@ function isPunctChar (ch) {
179
179
  return ucmicro.P.test(ch) || ucmicro.S.test(ch)
180
180
  }
181
181
 
182
+ function isPunctCharCode (code) {
183
+ return isPunctChar(fromCodePoint(code))
184
+ }
185
+
182
186
  // Markdown ASCII punctuation characters.
183
187
  //
184
188
  // !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, or ~
@@ -240,6 +244,7 @@ function normalizeReference (str) {
240
244
  // (remove this when node v10 is no longer supported).
241
245
  //
242
246
  if ('ẞ'.toLowerCase() === 'Ṿ') {
247
+ /* c8 ignore next 2 */
243
248
  str = str.replace(/ẞ/g, 'ß')
244
249
  }
245
250
 
@@ -278,6 +283,28 @@ function normalizeReference (str) {
278
283
  return str.toLowerCase().toUpperCase()
279
284
  }
280
285
 
286
+ function isAsciiTrimmable (c) {
287
+ return c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d
288
+ }
289
+
290
+ // "Light" .trim() for blocks (headers, paragraphs), where unicode spaces
291
+ // should be preserved.
292
+ function asciiTrim (str) {
293
+ let start = 0
294
+ for (; start < str.length; start++) {
295
+ if (!isAsciiTrimmable(str.charCodeAt(start))) {
296
+ break
297
+ }
298
+ }
299
+ let end = str.length - 1
300
+ for (; end >= start; end--) {
301
+ if (!isAsciiTrimmable(str.charCodeAt(end))) {
302
+ break
303
+ }
304
+ }
305
+ return str.slice(start, end + 1)
306
+ }
307
+
281
308
  // Re-export libraries commonly used in both markdown-it and its plugins,
282
309
  // so plugins won't have to depend on them explicitly, which reduces their
283
310
  // bundled size (e.g. a browser build).
@@ -299,6 +326,8 @@ export {
299
326
  isWhiteSpace,
300
327
  isMdAsciiPunct,
301
328
  isPunctChar,
329
+ isPunctCharCode,
302
330
  escapeRE,
303
- normalizeReference
331
+ normalizeReference,
332
+ asciiTrim
304
333
  }
@@ -352,7 +352,7 @@ function MarkdownIt (presetName, options) {
352
352
  * ```javascript
353
353
  * var md = require('markdown-it')()
354
354
  * .set({ html: true, breaks: true })
355
- * .set({ typographer, true });
355
+ * .set({ typographer: true });
356
356
  * ```
357
357
  *
358
358
  * __Note:__ To achieve the best possible performance, don't modify a
@@ -1,6 +1,6 @@
1
1
  // heading (#, ##, ...)
2
2
 
3
- import { isSpace } from '../common/utils.mjs'
3
+ import { isSpace, asciiTrim } from '../common/utils.mjs'
4
4
 
5
5
  export default function heading (state, startLine, endLine, silent) {
6
6
  let pos = state.bMarks[startLine] + state.tShift[startLine]
@@ -40,7 +40,7 @@ export default function heading (state, startLine, endLine, silent) {
40
40
  token_o.map = [startLine, state.line]
41
41
 
42
42
  const token_i = state.push('inline', '', 0)
43
- token_i.content = state.src.slice(pos, max).trim()
43
+ token_i.content = asciiTrim(state.src.slice(pos, max))
44
44
  token_i.map = [startLine, state.line]
45
45
  token_i.children = []
46
46
 
@@ -42,11 +42,22 @@ export default function html_block (state, startLine, endLine, silent) {
42
42
 
43
43
  let nextLine = startLine + 1
44
44
 
45
+ // Block types 6 and 7 (the only ones whose end condition is a blank line)
46
+ // have `/^$/` as their closing regexp. For all other types (1-5, e.g.
47
+ // `<!--` comments), a blank line is regular content and must not terminate
48
+ // the block - it ends only when its closing sequence is found.
49
+ const endsOnBlankLine = HTML_SEQUENCES[i][1].test('')
50
+
45
51
  // If we are here - we detected HTML block.
46
52
  // Let's roll down till block end.
47
53
  if (!HTML_SEQUENCES[i][1].test(lineText)) {
48
54
  for (; nextLine < endLine; nextLine++) {
49
- if (state.sCount[nextLine] < state.blkIndent) { break }
55
+ if (state.sCount[nextLine] < state.blkIndent) {
56
+ // An outdented blank line shouldn't end a block that doesn't end on a
57
+ // blank line (e.g. a `<!--` comment inside a list item). Such blocks
58
+ // must continue until their closing sequence regardless of indent.
59
+ if (endsOnBlankLine || !state.isEmpty(nextLine)) { break }
60
+ }
50
61
 
51
62
  pos = state.bMarks[nextLine] + state.tShift[nextLine]
52
63
  max = state.eMarks[nextLine]
@@ -1,5 +1,7 @@
1
1
  // lheading (---, ===)
2
2
 
3
+ import { asciiTrim } from '../common/utils.mjs'
4
+
3
5
  export default function lheading (state, startLine, endLine/*, silent */) {
4
6
  const terminatorRules = state.md.block.ruler.getRules('paragraph')
5
7
 
@@ -57,10 +59,11 @@ export default function lheading (state, startLine, endLine/*, silent */) {
57
59
 
58
60
  if (!level) {
59
61
  // Didn't find valid underline
62
+ state.parentType = oldParentType
60
63
  return false
61
64
  }
62
65
 
63
- const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()
66
+ const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false))
64
67
 
65
68
  state.line = nextLine + 1
66
69
 
@@ -1,5 +1,7 @@
1
1
  // Paragraph
2
2
 
3
+ import { asciiTrim } from '../common/utils.mjs'
4
+
3
5
  export default function paragraph (state, startLine, endLine) {
4
6
  const terminatorRules = state.md.block.ruler.getRules('paragraph')
5
7
  const oldParentType = state.parentType
@@ -26,7 +28,7 @@ export default function paragraph (state, startLine, endLine) {
26
28
  if (terminate) { break }
27
29
  }
28
30
 
29
- const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim()
31
+ const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false))
30
32
 
31
33
  state.line = nextLine
32
34
 
@@ -1,20 +1,42 @@
1
1
  // Convert straight quotation marks to typographic ones
2
2
  //
3
3
 
4
- import { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'
4
+ import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'
5
5
 
6
6
  const QUOTE_TEST_RE = /['"]/
7
7
  const QUOTE_RE = /['"]/g
8
8
  const APOSTROPHE = '\u2019' /* ’ */
9
9
 
10
- function replaceAt (str, index, ch) {
11
- return str.slice(0, index) + ch + str.slice(index + 1)
10
+ function addReplacement (replacements, tokenIdx, pos, ch) {
11
+ if (!replacements[tokenIdx]) {
12
+ replacements[tokenIdx] = []
13
+ }
14
+
15
+ replacements[tokenIdx].push({ pos, ch })
16
+ }
17
+
18
+ function applyReplacements (str, replacements) {
19
+ let result = ''
20
+ let lastPos = 0
21
+
22
+ replacements.sort((a, b) => a.pos - b.pos)
23
+
24
+ for (let i = 0; i < replacements.length; i++) {
25
+ const replacement = replacements[i]
26
+
27
+ result += str.slice(lastPos, replacement.pos) + replacement.ch
28
+ lastPos = replacement.pos + 1
29
+ }
30
+
31
+ return result + str.slice(lastPos)
12
32
  }
13
33
 
14
34
  function process_inlines (tokens, state) {
15
35
  let j
16
36
 
17
37
  const stack = []
38
+ // token index -> list of replacements in the original token content
39
+ const replacements = {}
18
40
 
19
41
  for (let i = 0; i < tokens.length; i++) {
20
42
  const token = tokens[i]
@@ -28,9 +50,9 @@ function process_inlines (tokens, state) {
28
50
 
29
51
  if (token.type !== 'text') { continue }
30
52
 
31
- let text = token.content
53
+ const text = token.content
32
54
  let pos = 0
33
- let max = text.length
55
+ const max = text.length
34
56
 
35
57
  /* eslint no-labels:0,block-scoped-var:0 */
36
58
  OUTER:
@@ -78,8 +100,8 @@ function process_inlines (tokens, state) {
78
100
  }
79
101
  }
80
102
 
81
- const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))
82
- const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))
103
+ const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar)
104
+ const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar)
83
105
 
84
106
  const isLastWhiteSpace = isWhiteSpace(lastChar)
85
107
  const isNextWhiteSpace = isWhiteSpace(nextChar)
@@ -122,7 +144,7 @@ function process_inlines (tokens, state) {
122
144
  if (!canOpen && !canClose) {
123
145
  // middle of word
124
146
  if (isSingle) {
125
- token.content = replaceAt(token.content, t.index, APOSTROPHE)
147
+ addReplacement(replacements, i, t.index, APOSTROPHE)
126
148
  }
127
149
  continue
128
150
  }
@@ -145,18 +167,8 @@ function process_inlines (tokens, state) {
145
167
  closeQuote = state.md.options.quotes[1]
146
168
  }
147
169
 
148
- // replace token.content *before* tokens[item.token].content,
149
- // because, if they are pointing at the same token, replaceAt
150
- // could mess up indices when quote length != 1
151
- token.content = replaceAt(token.content, t.index, closeQuote)
152
- tokens[item.token].content = replaceAt(
153
- tokens[item.token].content, item.pos, openQuote)
154
-
155
- pos += closeQuote.length - 1
156
- if (item.token === i) { pos += openQuote.length - 1 }
157
-
158
- text = token.content
159
- max = text.length
170
+ addReplacement(replacements, i, t.index, closeQuote)
171
+ addReplacement(replacements, item.token, item.pos, openQuote)
160
172
 
161
173
  stack.length = j
162
174
  continue OUTER
@@ -172,10 +184,14 @@ function process_inlines (tokens, state) {
172
184
  level: thisLevel
173
185
  })
174
186
  } else if (canClose && isSingle) {
175
- token.content = replaceAt(token.content, t.index, APOSTROPHE)
187
+ addReplacement(replacements, i, t.index, APOSTROPHE)
176
188
  }
177
189
  }
178
190
  }
191
+
192
+ Object.keys(replacements).forEach(function (tokenIdx) {
193
+ tokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx])
194
+ })
179
195
  }
180
196
 
181
197
  export default function smartquotes (state) {
@@ -1,6 +1,6 @@
1
1
  // Process html entity - &#123;, &#xAF;, &quot;, ...
2
2
 
3
- import { decodeHTML } from 'entities'
3
+ import { decodeHTMLStrict } from 'entities'
4
4
  import { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'
5
5
 
6
6
  const DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i
@@ -33,7 +33,7 @@ export default function entity (state, silent) {
33
33
  } else {
34
34
  const match = state.src.slice(pos).match(NAMED_RE)
35
35
  if (match) {
36
- const decoded = decodeHTML(match[0])
36
+ const decoded = decodeHTMLStrict(match[0])
37
37
  if (decoded !== match[0]) {
38
38
  if (!silent) {
39
39
  const token = state.push('text_special', '', 0)
@@ -1,7 +1,7 @@
1
1
  // Inline parser state
2
2
 
3
3
  import Token from '../token.mjs'
4
- import { isWhiteSpace, isPunctChar, isMdAsciiPunct } from '../common/utils.mjs'
4
+ import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'
5
5
 
6
6
  function StateInline (src, md, env, outTokens) {
7
7
  this.src = src
@@ -89,8 +89,30 @@ StateInline.prototype.scanDelims = function (start, canSplitWord) {
89
89
  const max = this.posMax
90
90
  const marker = this.src.charCodeAt(start)
91
91
 
92
- // treat beginning of the line as a whitespace
93
- const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20
92
+ // Astral characters below are combined manually, because .codePointAt()
93
+ // does not guarantee numeric type output. And we don't wish JIT cache issues.
94
+ // The broken surrogate pairs are evaluated as U+FFFD to prevent possible
95
+ // crashes.
96
+
97
+ let lastChar
98
+ if (start === 0) {
99
+ // treat beginning of the line as a whitespace
100
+ lastChar = 0x20
101
+ } else if (start === 1) {
102
+ lastChar = this.src.charCodeAt(0)
103
+ if ((lastChar & 0xF800) === 0xD800) { lastChar = 0xFFFD }
104
+ } else {
105
+ lastChar = this.src.charCodeAt(start - 1)
106
+ if ((lastChar & 0xFC00) === 0xDC00) {
107
+ // low surrogate => add high one, replace broken pair with U+FFFD
108
+ const highSurr = this.src.charCodeAt(start - 2)
109
+ lastChar = (highSurr & 0xFC00) === 0xD800
110
+ ? 0x10000 + ((highSurr - 0xD800) << 10) + (lastChar - 0xDC00)
111
+ : 0xFFFD
112
+ } else if ((lastChar & 0xFC00) === 0xD800) {
113
+ lastChar = 0xFFFD
114
+ }
115
+ }
94
116
 
95
117
  let pos = start
96
118
  while (pos < max && this.src.charCodeAt(pos) === marker) { pos++ }
@@ -98,10 +120,19 @@ StateInline.prototype.scanDelims = function (start, canSplitWord) {
98
120
  const count = pos - start
99
121
 
100
122
  // treat end of the line as a whitespace
101
- const nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20
123
+ let nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20
124
+ if ((nextChar & 0xFC00) === 0xD800) {
125
+ // high surrogate => add low one, replace broken pair with U+FFFD
126
+ const lowSurr = this.src.charCodeAt(pos + 1)
127
+ nextChar = (lowSurr & 0xFC00) === 0xDC00
128
+ ? 0x10000 + ((nextChar - 0xD800) << 10) + (lowSurr - 0xDC00)
129
+ : 0xFFFD
130
+ } else if ((nextChar & 0xFC00) === 0xDC00) {
131
+ nextChar = 0xFFFD
132
+ }
102
133
 
103
- const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar))
104
- const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar))
134
+ const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar)
135
+ const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar)
105
136
 
106
137
  const isLastWhiteSpace = isWhiteSpace(lastChar)
107
138
  const isNextWhiteSpace = isWhiteSpace(nextChar)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "markdown-it",
3
- "version": "14.1.1",
3
+ "version": "14.2.0",
4
4
  "description": "Markdown-it - modern pluggable markdown parser.",
5
5
  "keywords": [
6
6
  "markdown",
@@ -11,6 +11,16 @@
11
11
  ],
12
12
  "repository": "markdown-it/markdown-it",
13
13
  "license": "MIT",
14
+ "funding": [
15
+ {
16
+ "type": "github",
17
+ "url": "https://github.com/sponsors/puzrin"
18
+ },
19
+ {
20
+ "type": "github",
21
+ "url": "https://github.com/sponsors/markdown-it"
22
+ }
23
+ ],
14
24
  "main": "dist/index.cjs.js",
15
25
  "module": "index.mjs",
16
26
  "exports": {
@@ -28,7 +38,7 @@
28
38
  },
29
39
  "scripts": {
30
40
  "lint": "eslint .",
31
- "test": "npm run lint && CJS_ONLY=1 npm run build && c8 --exclude dist --exclude test -r text -r html -r lcov mocha && node support/specsplit.mjs",
41
+ "test": "npm run lint && cross-env CJS_ONLY=1 npm run build && c8 --exclude dist --exclude test -r text -r html -r lcov mocha && node support/specsplit.mjs",
32
42
  "doc": "node support/build_doc.mjs",
33
43
  "gh-doc": "npm run doc && gh-pages -d apidoc -f",
34
44
  "demo": "npm run lint && node support/build_demo.mjs",
@@ -47,7 +57,7 @@
47
57
  "dependencies": {
48
58
  "argparse": "^2.0.1",
49
59
  "entities": "^4.4.0",
50
- "linkify-it": "^5.0.0",
60
+ "linkify-it": "^5.0.1",
51
61
  "mdurl": "^2.0.0",
52
62
  "punycode.js": "^2.3.1",
53
63
  "uc.micro": "^2.1.0"
@@ -61,6 +71,7 @@
61
71
  "benchmark": "~2.1.0",
62
72
  "c8": "^8.0.1",
63
73
  "chai": "^4.2.0",
74
+ "cross-env": "^7.0.3",
64
75
  "eslint": "^8.4.1",
65
76
  "eslint-config-standard": "^17.1.0",
66
77
  "express": "^4.14.0",
@@ -1,3 +1,10 @@
1
+ Changes in [41.6.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v41.6.0) (2026-05-26)
2
+ ==================================================================================================
3
+ ## 🐛 Bug Fixes
4
+
5
+ * Throw sane error on completeLoginOnNewDevice IdP rejection ([#5321](https://github.com/matrix-org/matrix-js-sdk/pull/5321)). Contributed by @t3chguy.
6
+
7
+
1
8
  Changes in [41.5.0](https://github.com/matrix-org/matrix-js-sdk/releases/tag/v41.5.0) (2026-05-12)
2
9
  ==================================================================================================
3
10
  ## ✨ Features
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matrix-js-sdk",
3
- "version": "41.6.0-rc.0",
3
+ "version": "41.6.0",
4
4
  "description": "Matrix Client-Server SDK for Javascript",
5
5
  "engines": {
6
6
  "node": ">=22.0.0"
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@openclaw/matrix",
3
- "version": "2026.5.27-beta.1",
3
+ "version": "2026.5.28-beta.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/matrix",
9
- "version": "2026.5.27-beta.1",
9
+ "version": "2026.5.28-beta.1",
10
10
  "dependencies": {
11
11
  "@matrix-org/matrix-sdk-crypto-nodejs": "0.4.0",
12
12
  "@matrix-org/matrix-sdk-crypto-wasm": "18.3.0",
13
13
  "fake-indexeddb": "6.2.5",
14
- "markdown-it": "14.1.1",
15
- "matrix-js-sdk": "41.6.0-rc.0",
14
+ "markdown-it": "14.2.0",
15
+ "matrix-js-sdk": "41.6.0",
16
16
  "music-metadata": "11.12.3",
17
17
  "typebox": "1.1.38",
18
18
  "zod": "4.4.3"
19
19
  },
20
20
  "peerDependencies": {
21
- "openclaw": ">=2026.5.27-beta.1"
21
+ "openclaw": ">=2026.5.28-beta.1"
22
22
  },
23
23
  "peerDependenciesMeta": {
24
24
  "openclaw": {
@@ -262,9 +262,19 @@
262
262
  }
263
263
  },
264
264
  "node_modules/linkify-it": {
265
- "version": "5.0.0",
266
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
267
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
265
+ "version": "5.0.1",
266
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz",
267
+ "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==",
268
+ "funding": [
269
+ {
270
+ "type": "github",
271
+ "url": "https://github.com/sponsors/puzrin"
272
+ },
273
+ {
274
+ "type": "github",
275
+ "url": "https://github.com/sponsors/markdown-it"
276
+ }
277
+ ],
268
278
  "license": "MIT",
269
279
  "dependencies": {
270
280
  "uc.micro": "^2.0.0"
@@ -284,14 +294,24 @@
284
294
  }
285
295
  },
286
296
  "node_modules/markdown-it": {
287
- "version": "14.1.1",
288
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
289
- "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
297
+ "version": "14.2.0",
298
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz",
299
+ "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==",
300
+ "funding": [
301
+ {
302
+ "type": "github",
303
+ "url": "https://github.com/sponsors/puzrin"
304
+ },
305
+ {
306
+ "type": "github",
307
+ "url": "https://github.com/sponsors/markdown-it"
308
+ }
309
+ ],
290
310
  "license": "MIT",
291
311
  "dependencies": {
292
312
  "argparse": "^2.0.1",
293
313
  "entities": "^4.4.0",
294
- "linkify-it": "^5.0.0",
314
+ "linkify-it": "^5.0.1",
295
315
  "mdurl": "^2.0.0",
296
316
  "punycode.js": "^2.3.1",
297
317
  "uc.micro": "^2.1.0"
@@ -307,9 +327,9 @@
307
327
  "license": "Apache-2.0"
308
328
  },
309
329
  "node_modules/matrix-js-sdk": {
310
- "version": "41.6.0-rc.0",
311
- "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-41.6.0-rc.0.tgz",
312
- "integrity": "sha512-FcTQyR+Nfh0ASEogYcX393hxGr1936Esg53Z+0f9O4SBsAxl1ZSkLXY3JfLZRLX9dNe38VVwQDQE6QuwnwV7Zw==",
330
+ "version": "41.6.0",
331
+ "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-41.6.0.tgz",
332
+ "integrity": "sha512-FOEQBE9i3I+yRymMzKdDO5ptonawqrbtwxSqlkkpqaiFRnsA5zplaPZozdukt+IjBTuE2KceFY+bjFXiNi/+Eg==",
313
333
  "license": "Apache-2.0",
314
334
  "dependencies": {
315
335
  "@babel/runtime": "^7.12.5",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/matrix",
3
- "version": "2026.5.27-beta.1",
3
+ "version": "2026.5.28-beta.1",
4
4
  "description": "OpenClaw Matrix channel plugin for rooms and direct messages.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,14 +11,14 @@
11
11
  "@matrix-org/matrix-sdk-crypto-nodejs": "0.4.0",
12
12
  "@matrix-org/matrix-sdk-crypto-wasm": "18.3.0",
13
13
  "fake-indexeddb": "6.2.5",
14
- "markdown-it": "14.1.1",
15
- "matrix-js-sdk": "41.6.0-rc.0",
14
+ "markdown-it": "14.2.0",
15
+ "matrix-js-sdk": "41.6.0",
16
16
  "music-metadata": "11.12.3",
17
17
  "typebox": "1.1.38",
18
18
  "zod": "4.4.3"
19
19
  },
20
20
  "peerDependencies": {
21
- "openclaw": ">=2026.5.27-beta.1"
21
+ "openclaw": ">=2026.5.28-beta.1"
22
22
  },
23
23
  "peerDependenciesMeta": {
24
24
  "openclaw": {
@@ -84,10 +84,10 @@
84
84
  "allowInvalidConfigRecovery": true
85
85
  },
86
86
  "compat": {
87
- "pluginApi": ">=2026.5.27-beta.1"
87
+ "pluginApi": ">=2026.5.28-beta.1"
88
88
  },
89
89
  "build": {
90
- "openclawVersion": "2026.5.27-beta.1"
90
+ "openclawVersion": "2026.5.28-beta.1"
91
91
  },
92
92
  "release": {
93
93
  "publishToClawHub": true,
@@ -1,3 +0,0 @@
1
- import { t as createMatrixClient } from "./create-client-hdBEoEIm.js";
2
- import "./client-QO7vDxm0.js";
3
- export { createMatrixClient };
@@ -1,109 +0,0 @@
1
- import { t as getMatrixRuntime } from "./runtime-6S3DNFNv.js";
2
- import { format } from "node:util";
3
- import { redactSensitiveText } from "openclaw/plugin-sdk/logging-core";
4
- //#region extensions/matrix/src/matrix/sdk/logger.ts
5
- function noop() {}
6
- let forceConsoleLogging = false;
7
- function setMatrixConsoleLogging(enabled) {
8
- forceConsoleLogging = enabled;
9
- }
10
- function resolveRuntimeLogger(module) {
11
- if (forceConsoleLogging) return null;
12
- try {
13
- return getMatrixRuntime().logging.getChildLogger({ module: `matrix:${module}` });
14
- } catch {
15
- return null;
16
- }
17
- }
18
- function formatMessage(module, messageOrObject) {
19
- if (messageOrObject.length === 0) return `[${module}]`;
20
- return redactSensitiveText(`[${module}] ${format(...messageOrObject)}`);
21
- }
22
- var ConsoleLogger = class {
23
- emit(level, module, ...messageOrObject) {
24
- const runtimeLogger = resolveRuntimeLogger(module);
25
- const message = formatMessage(module, messageOrObject);
26
- if (runtimeLogger) {
27
- if (level === "debug") {
28
- runtimeLogger.debug?.(message);
29
- return;
30
- }
31
- runtimeLogger[level](message);
32
- return;
33
- }
34
- if (level === "debug") {
35
- console.debug(message);
36
- return;
37
- }
38
- console[level](message);
39
- }
40
- trace(module, ...messageOrObject) {
41
- this.emit("debug", module, ...messageOrObject);
42
- }
43
- debug(module, ...messageOrObject) {
44
- this.emit("debug", module, ...messageOrObject);
45
- }
46
- info(module, ...messageOrObject) {
47
- this.emit("info", module, ...messageOrObject);
48
- }
49
- warn(module, ...messageOrObject) {
50
- this.emit("warn", module, ...messageOrObject);
51
- }
52
- error(module, ...messageOrObject) {
53
- this.emit("error", module, ...messageOrObject);
54
- }
55
- };
56
- let activeLogger = new ConsoleLogger();
57
- const LogService = {
58
- setLogger(logger) {
59
- activeLogger = logger;
60
- },
61
- trace(module, ...messageOrObject) {
62
- activeLogger.trace(module, ...messageOrObject);
63
- },
64
- debug(module, ...messageOrObject) {
65
- activeLogger.debug(module, ...messageOrObject);
66
- },
67
- info(module, ...messageOrObject) {
68
- activeLogger.info(module, ...messageOrObject);
69
- },
70
- warn(module, ...messageOrObject) {
71
- activeLogger.warn(module, ...messageOrObject);
72
- },
73
- error(module, ...messageOrObject) {
74
- activeLogger.error(module, ...messageOrObject);
75
- }
76
- };
77
- //#endregion
78
- //#region extensions/matrix/src/matrix/startup-abort.ts
79
- function createMatrixStartupAbortError() {
80
- const error = /* @__PURE__ */ new Error("Matrix startup aborted");
81
- error.name = "AbortError";
82
- return error;
83
- }
84
- function throwIfMatrixStartupAborted(abortSignal) {
85
- if (abortSignal?.aborted === true) throw createMatrixStartupAbortError();
86
- }
87
- function isMatrixStartupAbortError(error) {
88
- return error instanceof Error && error.name === "AbortError";
89
- }
90
- async function awaitMatrixStartupWithAbort(promise, abortSignal) {
91
- if (!abortSignal) return await promise;
92
- if (abortSignal.aborted) throw createMatrixStartupAbortError();
93
- return await new Promise((resolve, reject) => {
94
- const onAbort = () => {
95
- abortSignal.removeEventListener("abort", onAbort);
96
- reject(createMatrixStartupAbortError());
97
- };
98
- abortSignal.addEventListener("abort", onAbort, { once: true });
99
- promise.then((value) => {
100
- abortSignal.removeEventListener("abort", onAbort);
101
- resolve(value);
102
- }, (error) => {
103
- abortSignal.removeEventListener("abort", onAbort);
104
- reject(error);
105
- });
106
- });
107
- }
108
- //#endregion
109
- export { ConsoleLogger as a, setMatrixConsoleLogging as c, throwIfMatrixStartupAborted as i, createMatrixStartupAbortError as n, LogService as o, isMatrixStartupAbortError as r, noop as s, awaitMatrixStartupWithAbort as t };
package/dist/test-api.js DELETED
@@ -1,4 +0,0 @@
1
- import { r as setMatrixRuntime } from "./runtime-6S3DNFNv.js";
2
- import { t as matrixPlugin } from "./channel-BLuA_9If.js";
3
- import { t as MatrixClient } from "./sdk-BKBZkPKt.js";
4
- export { MatrixClient, matrixPlugin, setMatrixRuntime };