@archipelagolab/lobi 1.0.0

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 (315) hide show
  1. package/CHANGELOG.md +164 -0
  2. package/ENDOFFILE +0 -0
  3. package/EOF +0 -0
  4. package/LICENSE +21 -0
  5. package/SPEC-SUPPORT.md +116 -0
  6. package/YAMLEND +0 -0
  7. package/api.ts +18 -0
  8. package/archipelagolab-lobi-1.0.0.tgz +0 -0
  9. package/auth-presence.ts +56 -0
  10. package/channel-plugin-api.ts +3 -0
  11. package/cli-metadata.ts +11 -0
  12. package/contract-api.ts +17 -0
  13. package/docs/CHECKLIST.md +83 -0
  14. package/docs/FORK_SDK_GUIDE.md +279 -0
  15. package/helper-api.ts +3 -0
  16. package/index.test.ts +61 -0
  17. package/index.ts +65 -0
  18. package/openclaw.plugin.json +23 -0
  19. package/package.json +52 -0
  20. package/plugin-entry.handlers.runtime.ts +1 -0
  21. package/runtime-api.ts +54 -0
  22. package/runtime-heavy-api.ts +1 -0
  23. package/scripts/migrate-to-lobi.sh +72 -0
  24. package/secret-contract-api.ts +5 -0
  25. package/setup-entry.ts +13 -0
  26. package/src/account-selection.test.ts +124 -0
  27. package/src/account-selection.ts +226 -0
  28. package/src/actions.account-propagation.test.ts +251 -0
  29. package/src/actions.test.ts +251 -0
  30. package/src/actions.ts +336 -0
  31. package/src/approval-auth.test.ts +23 -0
  32. package/src/approval-auth.ts +25 -0
  33. package/src/approval-handler.runtime.test.ts +46 -0
  34. package/src/approval-handler.runtime.ts +400 -0
  35. package/src/approval-ids.ts +6 -0
  36. package/src/approval-native.test.ts +329 -0
  37. package/src/approval-native.ts +336 -0
  38. package/src/approval-reactions.test.ts +107 -0
  39. package/src/approval-reactions.ts +158 -0
  40. package/src/auth-precedence.ts +61 -0
  41. package/src/channel-account-paths.ts +92 -0
  42. package/src/channel.account-paths.test.ts +102 -0
  43. package/src/channel.directory.test.ts +601 -0
  44. package/src/channel.resolve.test.ts +38 -0
  45. package/src/channel.runtime.ts +16 -0
  46. package/src/channel.setup.test.ts +269 -0
  47. package/src/channel.ts +570 -0
  48. package/src/cli-metadata.ts +19 -0
  49. package/src/cli.test.ts +1015 -0
  50. package/src/cli.ts +1198 -0
  51. package/src/config-adapter.ts +41 -0
  52. package/src/config-schema.test.ts +90 -0
  53. package/src/config-schema.ts +114 -0
  54. package/src/directory-live.test.ts +200 -0
  55. package/src/directory-live.ts +238 -0
  56. package/src/doctor-contract.ts +287 -0
  57. package/src/doctor.test.ts +440 -0
  58. package/src/doctor.ts +262 -0
  59. package/src/env-vars.ts +92 -0
  60. package/src/exec-approval-resolver.test.ts +68 -0
  61. package/src/exec-approval-resolver.ts +23 -0
  62. package/src/exec-approvals.test.ts +483 -0
  63. package/src/exec-approvals.ts +290 -0
  64. package/src/group-mentions.ts +41 -0
  65. package/src/legacy-crypto-inspector-availability.test.ts +81 -0
  66. package/src/legacy-crypto-inspector-availability.ts +60 -0
  67. package/src/legacy-crypto.test.ts +234 -0
  68. package/src/legacy-crypto.ts +549 -0
  69. package/src/legacy-state.test.ts +86 -0
  70. package/src/legacy-state.ts +156 -0
  71. package/src/matrix/account-config.ts +150 -0
  72. package/src/matrix/accounts.readiness.test.ts +27 -0
  73. package/src/matrix/accounts.test.ts +757 -0
  74. package/src/matrix/accounts.ts +194 -0
  75. package/src/matrix/actions/client.test.ts +215 -0
  76. package/src/matrix/actions/client.ts +31 -0
  77. package/src/matrix/actions/devices.test.ts +114 -0
  78. package/src/matrix/actions/devices.ts +34 -0
  79. package/src/matrix/actions/limits.test.ts +15 -0
  80. package/src/matrix/actions/limits.ts +6 -0
  81. package/src/matrix/actions/messages.test.ts +289 -0
  82. package/src/matrix/actions/messages.ts +123 -0
  83. package/src/matrix/actions/pins.test.ts +74 -0
  84. package/src/matrix/actions/pins.ts +64 -0
  85. package/src/matrix/actions/polls.test.ts +71 -0
  86. package/src/matrix/actions/polls.ts +109 -0
  87. package/src/matrix/actions/profile.test.ts +109 -0
  88. package/src/matrix/actions/profile.ts +37 -0
  89. package/src/matrix/actions/reactions.test.ts +135 -0
  90. package/src/matrix/actions/reactions.ts +59 -0
  91. package/src/matrix/actions/room.test.ts +79 -0
  92. package/src/matrix/actions/room.ts +71 -0
  93. package/src/matrix/actions/summary.test.ts +87 -0
  94. package/src/matrix/actions/summary.ts +88 -0
  95. package/src/matrix/actions/types.ts +82 -0
  96. package/src/matrix/actions/verification.test.ts +105 -0
  97. package/src/matrix/actions/verification.ts +237 -0
  98. package/src/matrix/actions.ts +37 -0
  99. package/src/matrix/active-client.ts +26 -0
  100. package/src/matrix/async-lock.ts +18 -0
  101. package/src/matrix/backup-health.ts +115 -0
  102. package/src/matrix/client/config-runtime-api.ts +14 -0
  103. package/src/matrix/client/config-secret-input.runtime.ts +1 -0
  104. package/src/matrix/client/config.ts +982 -0
  105. package/src/matrix/client/create-client.test.ts +115 -0
  106. package/src/matrix/client/create-client.ts +101 -0
  107. package/src/matrix/client/env-auth.ts +6 -0
  108. package/src/matrix/client/file-sync-store.test.ts +265 -0
  109. package/src/matrix/client/file-sync-store.ts +289 -0
  110. package/src/matrix/client/logging.ts +123 -0
  111. package/src/matrix/client/migration-snapshot.runtime.ts +1 -0
  112. package/src/matrix/client/private-network-host.ts +56 -0
  113. package/src/matrix/client/runtime.ts +4 -0
  114. package/src/matrix/client/shared.test.ts +344 -0
  115. package/src/matrix/client/shared.ts +306 -0
  116. package/src/matrix/client/storage.test.ts +634 -0
  117. package/src/matrix/client/storage.ts +544 -0
  118. package/src/matrix/client/types.ts +50 -0
  119. package/src/matrix/client-bootstrap.test.ts +84 -0
  120. package/src/matrix/client-bootstrap.ts +164 -0
  121. package/src/matrix/client-resolver.test-helpers.ts +147 -0
  122. package/src/matrix/client.test.ts +1521 -0
  123. package/src/matrix/client.ts +23 -0
  124. package/src/matrix/config-paths.ts +31 -0
  125. package/src/matrix/config-update.test.ts +237 -0
  126. package/src/matrix/config-update.ts +291 -0
  127. package/src/matrix/credentials-read.ts +206 -0
  128. package/src/matrix/credentials-write.runtime.ts +26 -0
  129. package/src/matrix/credentials.test.ts +501 -0
  130. package/src/matrix/credentials.ts +95 -0
  131. package/src/matrix/deps.test.ts +74 -0
  132. package/src/matrix/deps.ts +225 -0
  133. package/src/matrix/device-health.test.ts +45 -0
  134. package/src/matrix/device-health.ts +31 -0
  135. package/src/matrix/direct-management.test.ts +350 -0
  136. package/src/matrix/direct-management.ts +347 -0
  137. package/src/matrix/direct-room.test.ts +61 -0
  138. package/src/matrix/direct-room.ts +128 -0
  139. package/src/matrix/draft-stream.test.ts +406 -0
  140. package/src/matrix/draft-stream.ts +216 -0
  141. package/src/matrix/encryption-guidance.ts +27 -0
  142. package/src/matrix/errors.ts +21 -0
  143. package/src/matrix/format.test.ts +340 -0
  144. package/src/matrix/format.ts +428 -0
  145. package/src/matrix/legacy-crypto-inspector.ts +95 -0
  146. package/src/matrix/media-errors.ts +20 -0
  147. package/src/matrix/media-text.ts +169 -0
  148. package/src/matrix/monitor/access-state.test.ts +45 -0
  149. package/src/matrix/monitor/access-state.ts +77 -0
  150. package/src/matrix/monitor/ack-config.test.ts +57 -0
  151. package/src/matrix/monitor/ack-config.ts +26 -0
  152. package/src/matrix/monitor/allowlist.test.ts +45 -0
  153. package/src/matrix/monitor/allowlist.ts +94 -0
  154. package/src/matrix/monitor/auto-join.test.ts +203 -0
  155. package/src/matrix/monitor/auto-join.ts +86 -0
  156. package/src/matrix/monitor/config.test.ts +197 -0
  157. package/src/matrix/monitor/config.ts +303 -0
  158. package/src/matrix/monitor/context-summary.ts +43 -0
  159. package/src/matrix/monitor/direct.test.ts +529 -0
  160. package/src/matrix/monitor/direct.ts +270 -0
  161. package/src/matrix/monitor/events.test.ts +1524 -0
  162. package/src/matrix/monitor/events.ts +213 -0
  163. package/src/matrix/monitor/handler.body-for-agent.test.ts +396 -0
  164. package/src/matrix/monitor/handler.group-history.test.ts +648 -0
  165. package/src/matrix/monitor/handler.media-failure.test.ts +267 -0
  166. package/src/matrix/monitor/handler.test-helpers.ts +308 -0
  167. package/src/matrix/monitor/handler.test.ts +2952 -0
  168. package/src/matrix/monitor/handler.thread-root-media.test.ts +82 -0
  169. package/src/matrix/monitor/handler.ts +1679 -0
  170. package/src/matrix/monitor/inbound-dedupe.test.ts +146 -0
  171. package/src/matrix/monitor/inbound-dedupe.ts +267 -0
  172. package/src/matrix/monitor/index.test.ts +920 -0
  173. package/src/matrix/monitor/index.ts +434 -0
  174. package/src/matrix/monitor/legacy-crypto-restore.test.ts +206 -0
  175. package/src/matrix/monitor/legacy-crypto-restore.ts +139 -0
  176. package/src/matrix/monitor/location.ts +100 -0
  177. package/src/matrix/monitor/media.test.ts +159 -0
  178. package/src/matrix/monitor/media.ts +119 -0
  179. package/src/matrix/monitor/mentions.test.ts +289 -0
  180. package/src/matrix/monitor/mentions.ts +177 -0
  181. package/src/matrix/monitor/reaction-events.test.ts +326 -0
  182. package/src/matrix/monitor/reaction-events.ts +187 -0
  183. package/src/matrix/monitor/recent-invite.test.ts +92 -0
  184. package/src/matrix/monitor/recent-invite.ts +30 -0
  185. package/src/matrix/monitor/replies.test.ts +265 -0
  186. package/src/matrix/monitor/replies.ts +136 -0
  187. package/src/matrix/monitor/reply-context.test.ts +276 -0
  188. package/src/matrix/monitor/reply-context.ts +92 -0
  189. package/src/matrix/monitor/room-history.test.ts +258 -0
  190. package/src/matrix/monitor/room-history.ts +301 -0
  191. package/src/matrix/monitor/room-info.test.ts +201 -0
  192. package/src/matrix/monitor/room-info.ts +126 -0
  193. package/src/matrix/monitor/rooms.test.ts +121 -0
  194. package/src/matrix/monitor/rooms.ts +52 -0
  195. package/src/matrix/monitor/route.test.ts +255 -0
  196. package/src/matrix/monitor/route.ts +178 -0
  197. package/src/matrix/monitor/runtime-api.ts +31 -0
  198. package/src/matrix/monitor/startup-verification.test.ts +294 -0
  199. package/src/matrix/monitor/startup-verification.ts +237 -0
  200. package/src/matrix/monitor/startup.test.ts +257 -0
  201. package/src/matrix/monitor/startup.ts +218 -0
  202. package/src/matrix/monitor/status.ts +111 -0
  203. package/src/matrix/monitor/sync-lifecycle.test.ts +224 -0
  204. package/src/matrix/monitor/sync-lifecycle.ts +91 -0
  205. package/src/matrix/monitor/task-runner.ts +38 -0
  206. package/src/matrix/monitor/thread-context.test.ts +149 -0
  207. package/src/matrix/monitor/thread-context.ts +108 -0
  208. package/src/matrix/monitor/threads.test.ts +68 -0
  209. package/src/matrix/monitor/threads.ts +85 -0
  210. package/src/matrix/monitor/types.ts +30 -0
  211. package/src/matrix/monitor/verification-events.ts +627 -0
  212. package/src/matrix/monitor/verification-utils.test.ts +47 -0
  213. package/src/matrix/monitor/verification-utils.ts +46 -0
  214. package/src/matrix/outbound-media-runtime.ts +1 -0
  215. package/src/matrix/poll-summary.ts +110 -0
  216. package/src/matrix/poll-types.test.ts +205 -0
  217. package/src/matrix/poll-types.ts +433 -0
  218. package/src/matrix/probe.runtime.ts +4 -0
  219. package/src/matrix/probe.test.ts +154 -0
  220. package/src/matrix/probe.ts +96 -0
  221. package/src/matrix/profile.test.ts +154 -0
  222. package/src/matrix/profile.ts +184 -0
  223. package/src/matrix/reaction-common.test.ts +96 -0
  224. package/src/matrix/reaction-common.ts +147 -0
  225. package/src/matrix/sdk/crypto-bootstrap.test.ts +505 -0
  226. package/src/matrix/sdk/crypto-bootstrap.ts +341 -0
  227. package/src/matrix/sdk/crypto-facade.test.ts +197 -0
  228. package/src/matrix/sdk/crypto-facade.ts +207 -0
  229. package/src/matrix/sdk/crypto-node.runtime.test.ts +27 -0
  230. package/src/matrix/sdk/crypto-node.runtime.ts +9 -0
  231. package/src/matrix/sdk/crypto-runtime.ts +11 -0
  232. package/src/matrix/sdk/decrypt-bridge.ts +356 -0
  233. package/src/matrix/sdk/event-helpers.test.ts +60 -0
  234. package/src/matrix/sdk/event-helpers.ts +71 -0
  235. package/src/matrix/sdk/http-client.test.ts +134 -0
  236. package/src/matrix/sdk/http-client.ts +87 -0
  237. package/src/matrix/sdk/idb-persistence-lock.ts +51 -0
  238. package/src/matrix/sdk/idb-persistence.lock-order.test.ts +108 -0
  239. package/src/matrix/sdk/idb-persistence.test-helpers.ts +88 -0
  240. package/src/matrix/sdk/idb-persistence.test.ts +149 -0
  241. package/src/matrix/sdk/idb-persistence.ts +283 -0
  242. package/src/matrix/sdk/logger.test.ts +25 -0
  243. package/src/matrix/sdk/logger.ts +108 -0
  244. package/src/matrix/sdk/read-response-with-limit.ts +19 -0
  245. package/src/matrix/sdk/recovery-key-store.test.ts +385 -0
  246. package/src/matrix/sdk/recovery-key-store.ts +430 -0
  247. package/src/matrix/sdk/transport.test.ts +161 -0
  248. package/src/matrix/sdk/transport.ts +344 -0
  249. package/src/matrix/sdk/types.ts +236 -0
  250. package/src/matrix/sdk/verification-manager.test.ts +509 -0
  251. package/src/matrix/sdk/verification-manager.ts +694 -0
  252. package/src/matrix/sdk/verification-status.ts +23 -0
  253. package/src/matrix/sdk.test.ts +2568 -0
  254. package/src/matrix/sdk.ts +1789 -0
  255. package/src/matrix/send/client.test.ts +174 -0
  256. package/src/matrix/send/client.ts +90 -0
  257. package/src/matrix/send/formatting.ts +189 -0
  258. package/src/matrix/send/media.ts +244 -0
  259. package/src/matrix/send/targets.test.ts +254 -0
  260. package/src/matrix/send/targets.ts +104 -0
  261. package/src/matrix/send/types.ts +134 -0
  262. package/src/matrix/send.test.ts +958 -0
  263. package/src/matrix/send.ts +609 -0
  264. package/src/matrix/session-store-metadata.ts +108 -0
  265. package/src/matrix/startup-abort.ts +44 -0
  266. package/src/matrix/sync-state.ts +27 -0
  267. package/src/matrix/target-ids.ts +102 -0
  268. package/src/matrix/thread-bindings-shared.ts +201 -0
  269. package/src/matrix/thread-bindings.test.ts +673 -0
  270. package/src/matrix/thread-bindings.ts +577 -0
  271. package/src/matrix-migration.runtime.ts +9 -0
  272. package/src/migration-config.test.ts +228 -0
  273. package/src/migration-config.ts +243 -0
  274. package/src/migration-snapshot-backup.ts +117 -0
  275. package/src/migration-snapshot.test.ts +184 -0
  276. package/src/migration-snapshot.ts +55 -0
  277. package/src/onboarding.resolve.test.ts +55 -0
  278. package/src/onboarding.test-harness.ts +158 -0
  279. package/src/onboarding.test.ts +665 -0
  280. package/src/onboarding.ts +773 -0
  281. package/src/outbound.test.ts +173 -0
  282. package/src/outbound.ts +78 -0
  283. package/src/plugin-entry.runtime.js +159 -0
  284. package/src/plugin-entry.runtime.test.ts +108 -0
  285. package/src/plugin-entry.runtime.ts +68 -0
  286. package/src/profile-update.ts +68 -0
  287. package/src/record-shared.ts +3 -0
  288. package/src/resolve-targets.test.ts +178 -0
  289. package/src/resolve-targets.ts +175 -0
  290. package/src/resolver.ts +21 -0
  291. package/src/runtime-api.ts +144 -0
  292. package/src/runtime.ts +7 -0
  293. package/src/secret-contract.ts +174 -0
  294. package/src/session-route.test.ts +315 -0
  295. package/src/session-route.ts +113 -0
  296. package/src/setup-bootstrap.ts +94 -0
  297. package/src/setup-config.ts +222 -0
  298. package/src/setup-contract.ts +89 -0
  299. package/src/setup-core.test.ts +326 -0
  300. package/src/setup-core.ts +50 -0
  301. package/src/setup-surface.ts +4 -0
  302. package/src/startup-maintenance.test.ts +227 -0
  303. package/src/startup-maintenance.ts +114 -0
  304. package/src/storage-paths.ts +92 -0
  305. package/src/test-helpers.ts +42 -0
  306. package/src/test-mocks.ts +55 -0
  307. package/src/test-runtime.ts +72 -0
  308. package/src/test-support/monitor-route-test-support.ts +8 -0
  309. package/src/tool-actions.runtime.ts +1 -0
  310. package/src/tool-actions.test.ts +422 -0
  311. package/src/tool-actions.ts +498 -0
  312. package/src/types.ts +230 -0
  313. package/test-api.ts +2 -0
  314. package/thread-bindings-runtime.ts +4 -0
  315. package/tsconfig.json +16 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,164 @@
1
+ # Changelog
2
+
3
+ ## 2026.4.10
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core OpenClaw release numbers.
8
+
9
+ ## 2026.4.8
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core OpenClaw release numbers.
14
+
15
+ ## 2026.4.7
16
+
17
+ ### Changes
18
+
19
+ - Version alignment with core OpenClaw release numbers.
20
+
21
+ ## 2026.4.6
22
+
23
+ ### Changes
24
+
25
+ - Version alignment with core OpenClaw release numbers.
26
+
27
+ ## 2026.4.5
28
+
29
+ ### Changes
30
+
31
+ - Version alignment with core OpenClaw release numbers.
32
+
33
+ ## 2026.4.4
34
+
35
+ ### Changes
36
+
37
+ - Version alignment with core OpenClaw release numbers.
38
+
39
+ ## 2026.4.1-beta.1
40
+
41
+ ### Changes
42
+
43
+ - Version alignment with core OpenClaw release numbers.
44
+
45
+ ## 2026.4.1
46
+
47
+ ### Changes
48
+
49
+ - Version alignment with core OpenClaw release numbers.
50
+
51
+ ## 2026.3.31
52
+
53
+ ### Changes
54
+
55
+ - Version alignment with core OpenClaw release numbers.
56
+
57
+ ## 2026.3.14
58
+
59
+ ### Changes
60
+
61
+ - Version alignment with core OpenClaw release numbers.
62
+
63
+ ## 2026.3.13
64
+
65
+ ### Changes
66
+
67
+ - Version alignment with core OpenClaw release numbers.
68
+
69
+ ## 2026.3.12
70
+
71
+ ### Changes
72
+
73
+ - Version alignment with core OpenClaw release numbers.
74
+
75
+ ## 2026.3.11
76
+
77
+ ### Changes
78
+
79
+ - Version alignment with core OpenClaw release numbers.
80
+
81
+ ## 2026.3.10
82
+
83
+ ### Changes
84
+
85
+ - Version alignment with core OpenClaw release numbers.
86
+
87
+ ## 2026.3.9
88
+
89
+ ### Changes
90
+
91
+ - Version alignment with core OpenClaw release numbers.
92
+
93
+ ## 2026.3.8-beta.1
94
+
95
+ ### Changes
96
+
97
+ - Version alignment with core OpenClaw release numbers.
98
+
99
+ ## 2026.3.8
100
+
101
+ ### Changes
102
+
103
+ - Version alignment with core OpenClaw release numbers.
104
+
105
+ ## 2026.3.7
106
+
107
+ ### Changes
108
+
109
+ - Version alignment with core OpenClaw release numbers.
110
+
111
+ ## 2026.3.3
112
+
113
+ ### Changes
114
+
115
+ - Version alignment with core OpenClaw release numbers.
116
+
117
+ ## 2026.3.2
118
+
119
+ ### Changes
120
+
121
+ - Version alignment with core OpenClaw release numbers.
122
+
123
+ ## 2026.3.1
124
+
125
+ ### Changes
126
+
127
+ - Version alignment with core OpenClaw release numbers.
128
+
129
+ ## 2026.2.26
130
+
131
+ ### Changes
132
+
133
+ - Version alignment with core OpenClaw release numbers.
134
+
135
+ ## 2026.2.25
136
+
137
+ ### Changes
138
+
139
+ - Version alignment with core OpenClaw release numbers.
140
+
141
+ ## 2026.2.24
142
+
143
+ ### Changes
144
+
145
+ - Version alignment with core OpenClaw release numbers.
146
+
147
+ ## 2026.2.22
148
+
149
+ ### Changes
150
+
151
+ - Version alignment with core OpenClaw release numbers.
152
+
153
+ ## 2026.1.14
154
+
155
+ ### Features
156
+
157
+ - Matrix channel plugin with homeserver + user ID auth (access token or password login with device name).
158
+ - Direct messages with pairing/allowlist/open/disabled policies and allowFrom support.
159
+ - Group/room controls: allowlist policy, per-room config, mention gating, auto-reply, per-room skills/system prompts.
160
+ - Threads: replyToMode controls and thread replies (off/inbound/always).
161
+ - Messaging: text chunking, media uploads with size caps, reactions, polls, typing, and message edits/deletes.
162
+ - Actions: read messages, list/remove reactions, pin/unpin/list pins, member info, room info.
163
+ - Auto-join invites with allowlist support.
164
+ - Status + probe reporting for health checks.
package/ENDOFFILE ADDED
File without changes
package/EOF ADDED
File without changes
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Peter Steinberger
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,116 @@
1
+ # Matrix Spec Support
2
+
3
+ Current Matrix spec/event support tracked for the bundled Matrix plugin.
4
+
5
+ Scope:
6
+
7
+ - code-backed today-state only
8
+ - plugin behavior only; not a claim of full Matrix spec coverage
9
+ - update this file when adding or removing Matrix event/spec support
10
+
11
+ Legend:
12
+
13
+ - `in`: inbound handling
14
+ - `out`: outbound send/edit/emit
15
+ - `tools`: CLI/action/runtime tooling built on that surface
16
+
17
+ ## Support Matrix
18
+
19
+ | Surface | Spec / event ids | Support | Notes | Evidence |
20
+ | ------------------------ | -------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
21
+ | Core messages | `m.room.message` | in/out/tools | base text/media message surface | `src/matrix/send/types.ts`, `src/matrix/actions/messages.ts` |
22
+ | Rich text | `org.matrix.custom.html` | out | Markdown rendered to Matrix HTML | `src/matrix/send/formatting.ts` |
23
+ | Replies | `m.in_reply_to` | in/out | reply relation support | `src/matrix/send/formatting.ts` |
24
+ | Edits | `m.replace` | in/out/tools | Matrix edit flow; edit body uses `* <text>` fallback format | `src/matrix/send/types.ts`, `src/matrix/draft-stream.test.ts` |
25
+ | Threads | `m.thread` | in/out/tools | thread send, routing, session/thread policy | `src/matrix/send/types.ts`, `src/matrix/monitor/types.ts`, `src/matrix/monitor/threads.test.ts` |
26
+ | Direct rooms | `m.direct` | in/out/tools | DM routing, cache, repair, outbound target selection | `src/matrix/send/types.ts`, `src/matrix/sdk.ts`, `src/matrix/send/targets.test.ts`, `src/matrix/direct-management.test.ts` |
27
+ | Reactions | `m.reaction`, `m.annotation` | in/out/tools | send, summarize, inbound reaction routing | `src/matrix/reaction-common.ts`, `src/matrix/monitor/reaction-events.test.ts` |
28
+ | Read receipts | `m.read` | out | sent on inbound message receipt | `src/matrix/sdk.ts`, `src/matrix/monitor/handler.ts` |
29
+ | Typing | typing API | out | typing keepalive while reply runs | `src/matrix/sdk.ts`, `src/matrix/send.ts`, `src/matrix/monitor/handler.ts` |
30
+ | Mentions | `m.mentions` | in/out/tools | stable mention metadata on sends/edits/media captions/poll fallback text | `src/matrix/send/formatting.ts`, `src/matrix/monitor/mentions.ts`, `src/matrix/send.test.ts` |
31
+ | Mention link compat | `https://matrix.to/#/...` | in/out | emit + validate visible-label mentions in formatted HTML | `src/matrix/format.ts`, `src/matrix/monitor/mentions.ts` |
32
+ | Polls | `m.poll.start`, `m.poll.response`, `m.poll.end` | in/out/tools | stable poll create/read/vote/summary flow | `src/matrix/poll-types.ts`, `src/matrix/actions/polls.ts`, `src/matrix/poll-summary.ts` |
33
+ | Poll compat | `org.matrix.msc3381.poll.start`, `org.matrix.msc3381.poll.response`, `org.matrix.msc3381.poll.end` | in/out | unstable poll compat still emitted/parsed where needed | `src/matrix/poll-types.ts`, `src/matrix/send.test.ts` |
34
+ | Poll relations | `m.reference` | in/out/tools | poll votes/results linked to root poll event | `src/matrix/poll-types.ts`, `src/matrix/actions/polls.ts`, `src/matrix/poll-summary.ts` |
35
+ | Extensible text fallback | `org.matrix.msc1767.text` | in/out | poll text fallback/compat | `src/matrix/poll-types.ts` |
36
+ | Voice messages | `org.matrix.msc3245.voice` | out | voice-bubble marker on compatible audio sends | `src/matrix/send/media.ts`, `src/matrix/send/types.ts` |
37
+ | Voice audio metadata | `org.matrix.msc1767.audio` | out | duration metadata for voice sends | `src/matrix/send/media.ts`, `src/matrix/send/types.ts` |
38
+ | Location | `m.location`, `geo:` | in | inbound parse to text/context; no outbound location send tracked here | `src/matrix/monitor/types.ts`, `src/matrix/monitor/location.ts`, `src/matrix/monitor/handler.ts` |
39
+ | E2EE room events | `m.room.encrypted` | in/out/tools | encrypted event hydration, decrypt, encrypted media send | `src/matrix/monitor/types.ts`, `src/matrix/sdk.ts`, `docs/channels/matrix.md` |
40
+ | Encrypted media previews | `file`, `thumbnail_file` | out | encrypted thumbnails for encrypted image events | `src/matrix/send/media.ts`, `docs/channels/matrix.md` |
41
+ | Device verification | `m.key.verification.*`, `m.key.verification.request` | in/tools | request/ready/start/SAS/done/cancel notices and CLI flows | `src/matrix/monitor/verification-utils.ts`, `src/matrix/monitor/events.test.ts`, `docs/channels/matrix.md` |
42
+ | Streaming/live markers | `org.matrix.msc4357.live` | out | live draft/edit markers for partial streaming | `src/matrix/send/types.ts`, `src/matrix/send.ts`, `src/matrix/draft-stream.ts` |
43
+
44
+ ## Explicit MSCs In Use
45
+
46
+ These MSCs are explicitly referenced in the plugin today:
47
+
48
+ - `MSC3381`: polls
49
+ - `MSC1767`: extensible-events fallback fields used for polls and voice metadata
50
+ - `MSC3245`: voice message marker
51
+ - `MSC4357`: live streaming marker
52
+
53
+ Evidence:
54
+
55
+ - `src/matrix/poll-types.ts`
56
+ - `src/matrix/send/media.ts`
57
+ - `src/matrix/send/types.ts`
58
+ - `src/matrix/draft-stream.ts`
59
+
60
+ ## Non-goals
61
+
62
+ This file does not claim:
63
+
64
+ - full client-server API coverage
65
+ - full room-state/event coverage inherited from `matrix-js-sdk`
66
+ - outbound support for any surface not listed above
67
+
68
+ If a new Matrix feature lands, add a row with:
69
+
70
+ 1. exact event/spec id
71
+ 2. support shape (`in`, `out`, `tools`)
72
+ 3. at least one code path proving it
73
+
74
+ ## Missing / Candidate Specs
75
+
76
+ Recommended next additions, prioritized by user-visible value and closeness to current code:
77
+
78
+ | Priority | Surface | Spec / event ids | Why add it | Current gap |
79
+ | -------- | ----------------------------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
80
+ | high | Sticker messages | `m.sticker` | stable spec; common client surface; we already classify sticker attachments on read paths | no explicit inbound `m.sticker` event handling and no outbound sticker send path |
81
+ | high | Outbound location messages | `m.location`, `geo_uri` | stable spec; docs already say Matrix supports location, but current implementation is inbound-only | no outbound location send/action API |
82
+ | medium | Private + richer read markers | `m.read.private`, `m.fully_read` | stable spec; better privacy and cleaner read-state behavior than public-only `m.read` | current code only sends public `m.read` receipts |
83
+ | medium | Thread-aware receipts | `m.read` with `thread_id` | stable spec; better alignment with Matrix thread UX | current receipt send path has no `thread_id` support |
84
+ | medium | Unread markers | `m.marked_unread` | stable spec; useful for operator workflows and room triage tooling | no room account-data support for unread markers |
85
+ | low | Emote messages | `m.emote` | stable spec; easy parity win for bots/action tools | no explicit send/action support |
86
+ | low | Poll close parity | `m.poll.end`, `org.matrix.msc3381.poll.end` | completes the poll lifecycle on a surface we already parse | plugin parses poll-end events but does not expose an outbound close flow |
87
+ | low | Animated media metadata | `info.is_animated` on `m.image` / `m.sticker` | newer stable metadata; helps clients decide whether to fetch/render animated originals | media info builders do not populate animation metadata |
88
+
89
+ ### Why these are listed
90
+
91
+ - `m.sticker` is a stable spec surface in the latest Matrix Client-Server API, and the plugin already has partial sticker awareness in message summarization.
92
+ - `m.location` is a stable spec surface in the latest Matrix Client-Server API. The plugin currently parses inbound location events from `geo_uri`, but does not send them.
93
+ - `m.read.private`, `m.fully_read`, and threaded receipts are stable read-marker/read-receipt surfaces in the latest Matrix Client-Server API. The plugin currently posts plain `m.read` receipts only.
94
+ - `m.marked_unread` is a stable room account-data surface in the latest Matrix Client-Server API and would be useful if Matrix actions grow more operator/client-like room triage controls.
95
+ - `m.emote` is a stable message type and a relatively small addition compared with the items above.
96
+ - `m.poll.end` is already represented in local poll types, so exposing a close-poll send/tool flow is a contained follow-up.
97
+ - `info.is_animated` is a smaller metadata-parity item, but easy to miss once sticker support exists.
98
+
99
+ ### Probably not worth prioritizing here
100
+
101
+ - VoIP / `m.call.*`: valid Matrix spec area and a plausible future direction here, just not a near-term priority relative to messaging, receipt, and room-state gaps.
102
+
103
+ ### Gap Evidence
104
+
105
+ - sticker partial only: `src/matrix/media-text.ts`
106
+ - location inbound only: `src/matrix/monitor/location.ts`, `src/matrix/monitor/handler.ts`
107
+ - public receipt only: `src/matrix/sdk.ts`, `src/matrix/send.ts`, `src/matrix/monitor/handler.ts`
108
+ - poll-end constants only: `src/matrix/poll-types.ts`
109
+ - no animation metadata emit: `src/matrix/send/media.ts`
110
+
111
+ ### External Spec References
112
+
113
+ - latest Matrix Client-Server API: <https://spec.matrix.org/latest/client-server-api/index.html>
114
+ - `m.sticker`: <https://spec.matrix.org/latest/client-server-api/#msticker>
115
+ - `m.location`: <https://spec.matrix.org/latest/client-server-api/#mlocation>
116
+ - receipts and read markers (`m.read.private`, `m.fully_read`, `m.marked_unread`): <https://spec.matrix.org/latest/client-server-api/#receipts>
package/YAMLEND ADDED
File without changes
package/api.ts ADDED
@@ -0,0 +1,18 @@
1
+ export { matrixPlugin } from "./src/channel.js";
2
+ export * from "./src/setup-core.js";
3
+ export * from "./src/setup-surface.js";
4
+ export * from "./src/account-selection.js";
5
+ export * from "./src/env-vars.js";
6
+ export * from "./src/storage-paths.js";
7
+ export {
8
+ createMatrixThreadBindingManager,
9
+ getMatrixThreadBindingManager,
10
+ resetMatrixThreadBindingsForTests,
11
+ } from "./src/matrix/thread-bindings.js";
12
+ export {
13
+ setMatrixThreadBindingIdleTimeoutBySessionKey,
14
+ setMatrixThreadBindingMaxAgeBySessionKey,
15
+ } from "./src/matrix/thread-bindings-shared.js";
16
+ export { matrixOnboardingAdapter as matrixSetupWizard } from "./src/onboarding.js";
17
+
18
+ export const matrixSessionBindingAdapterChannels = ["matrix"] as const;
Binary file
@@ -0,0 +1,56 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
5
+ import { resolveStateDir } from "openclaw/plugin-sdk/state-paths";
6
+ import {
7
+ resolveMatrixCredentialsDir,
8
+ resolveMatrixCredentialsFilename,
9
+ } from "./src/storage-paths.js";
10
+
11
+ type MatrixAuthPresenceParams =
12
+ | {
13
+ cfg: OpenClawConfig;
14
+ env?: NodeJS.ProcessEnv;
15
+ }
16
+ | OpenClawConfig;
17
+
18
+ function listMatrixCredentialPaths(
19
+ _cfg: OpenClawConfig,
20
+ env: NodeJS.ProcessEnv = process.env,
21
+ ): readonly string[] {
22
+ const credentialsDir = resolveMatrixCredentialsDir(resolveStateDir(env, os.homedir));
23
+ const paths = new Set<string>([
24
+ resolveMatrixCredentialsFilename(),
25
+ resolveMatrixCredentialsFilename("default"),
26
+ ]);
27
+
28
+ try {
29
+ const entries = fs.readdirSync(credentialsDir, { withFileTypes: true });
30
+ for (const entry of entries) {
31
+ if (entry.isFile() && /^credentials(?:-[a-z0-9._-]+)?\.json$/i.test(entry.name)) {
32
+ paths.add(entry.name);
33
+ }
34
+ }
35
+ } catch {
36
+ // Missing credentials directories mean no persisted Matrix auth state.
37
+ }
38
+
39
+ return [...paths].map((filename) => path.join(credentialsDir, filename));
40
+ }
41
+
42
+ export function hasAnyLobiAuth(
43
+ params: MatrixAuthPresenceParams,
44
+ env: NodeJS.ProcessEnv = process.env,
45
+ ): boolean {
46
+ const cfg = params && typeof params === "object" && "cfg" in params ? params.cfg : params;
47
+ const resolvedEnv =
48
+ params && typeof params === "object" && "cfg" in params ? (params.env ?? env) : env;
49
+ return listMatrixCredentialPaths(cfg, resolvedEnv).some((filePath) => {
50
+ try {
51
+ return fs.existsSync(filePath);
52
+ } catch {
53
+ return false;
54
+ }
55
+ });
56
+ }
@@ -0,0 +1,3 @@
1
+ // Keep bundled channel entry imports narrow so bootstrap/discovery paths do
2
+ // not pull the broad Matrix API barrel into lightweight plugin loads.
3
+ export { matrixPlugin } from "./src/channel.js";
@@ -0,0 +1,11 @@
1
+ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
2
+ import { registerMatrixCliMetadata } from "./src/cli-metadata.js";
3
+
4
+ export { registerMatrixCliMetadata } from "./src/cli-metadata.js";
5
+
6
+ export default definePluginEntry({
7
+ id: "lobi",
8
+ name: "Lobi",
9
+ description: "Lobi - The official A2A (Agent-to-Agent) messaging platform by Lobisland. Purpose-built for AI agents to communicate and collaborate seamlessly.",
10
+ register: registerMatrixCliMetadata,
11
+ });
@@ -0,0 +1,17 @@
1
+ export {
2
+ createMatrixThreadBindingManager,
3
+ resetMatrixThreadBindingsForTests,
4
+ } from "./src/matrix/thread-bindings.js";
5
+ export { setMatrixRuntime } from "./src/runtime.js";
6
+ export { normalizeCompatibilityConfig, legacyConfigRules } from "./src/doctor-contract.js";
7
+ export {
8
+ namedAccountPromotionKeys,
9
+ resolveSingleAccountPromotionTarget,
10
+ singleAccountKeysToMove,
11
+ } from "./src/setup-contract.js";
12
+ export {
13
+ collectRuntimeConfigAssignments,
14
+ secretTargetRegistryEntries,
15
+ } from "./src/secret-contract.js";
16
+ export { matrixSetupAdapter } from "./src/setup-core.js";
17
+ export { matrixSetupWizard } from "./src/setup-surface.js";
@@ -0,0 +1,83 @@
1
+ # Matrix 到 Lobi 迁移检查清单
2
+
3
+ ## 阶段 1: Fork SDK
4
+
5
+ - [ ] Fork matrix-js-sdk 官方仓库
6
+ - [ ] 检出 v41.3.0 标签
7
+ - [ ] 创建 lobi-fork 分支
8
+ - [ ] 执行路径替换脚本
9
+ - [ ] 验证替换结果(无残留 `_matrix` 路径)
10
+ - [ ] 修改 package.json 包名为 `@your-org/lobi-js-sdk`
11
+ - [ ] 构建 SDK
12
+ - [ ] 发布到 npm/registry
13
+
14
+ ## 阶段 2: 修改插件代码
15
+
16
+ ### package.json 修改
17
+ - [ ] 替换 `matrix-js-sdk` 为 `@your-org/lobi-js-sdk`
18
+ - [ ] 更新版本号
19
+
20
+ ### 导入路径替换
21
+ 需要修改以下文件中的 `from "matrix-js-sdk` 为 `from "@your-org/lobi-js-sdk`:
22
+
23
+ - [ ] `src/matrix/sdk.ts`
24
+ - [ ] `src/matrix/client/logging.ts`
25
+ - [ ] `src/matrix/client/file-sync-store.ts`
26
+ - [ ] `src/matrix/sdk/decrypt-bridge.ts`
27
+ - [ ] `src/matrix/sdk/verification-manager.ts`
28
+ - [ ] `src/matrix/sdk/crypto-bootstrap.ts`
29
+ - [ ] `src/matrix/sdk/recovery-key-store.ts`
30
+ - [ ] `src/matrix/sdk/event-helpers.ts`
31
+ - [ ] `src/matrix/sdk/crypto-facade.ts`
32
+
33
+ ### 硬编码 API 路径替换
34
+ 需要修改以下文件中的 `/_matrix/` 为 `/_lobi/`:
35
+
36
+ - [ ] `src/matrix/client/config.ts` (2 处)
37
+ - [ ] Line 143: `/_matrix/client/v3/account/whoami`
38
+ - [ ] Line 860: `/_matrix/client/v3/login`
39
+
40
+ - [ ] `src/matrix/sdk.ts` (7 处)
41
+ - [ ] Line 689: `/_matrix/client/v3/account/whoami`
42
+ - [ ] Line 882: `/_matrix/client/v1/media/download/...`
43
+ - [ ] Line 891: `/_matrix/media/v3/download/...`
44
+ - [ ] Line 969: `/_matrix/client/v3/rooms/.../receipt/m.read/...`
45
+ - [ ] Line 1288: `/_matrix/client/v3/room_keys/version/...`
46
+ - [ ] Line 1361: `/_matrix/client/v3/keys/query`
47
+ - [ ] Line 1624: `/_matrix/client/v3/room_keys/version`
48
+
49
+ - [ ] `src/directory-live.ts` (4 处)
50
+ - [ ] Line 126: `/_matrix/client/v3/user_directory/search`
51
+ - [ ] Line 158: `/_matrix/client/v3/directory/room/...`
52
+ - [ ] Line 173: `/_matrix/client/v3/rooms/.../state/m.room.name`
53
+ - [ ] Line 214: `/_matrix/client/v3/joined_rooms`
54
+
55
+ - [ ] `src/matrix/actions/messages.ts` (1 处)
56
+ - [ ] Line 86: `/_matrix/client/v3/rooms/.../messages`
57
+
58
+ - [ ] `src/matrix/reaction-common.ts` (1 处)
59
+ - [ ] Line 61: `/_matrix/client/v1/rooms/.../relations/...`
60
+
61
+ ## 阶段 3: 安装与构建
62
+
63
+ - [ ] 删除 node_modules 和 lock 文件
64
+ - [ ] 运行 `pnpm install`
65
+ - [ ] 运行 `pnpm build`
66
+ - [ ] 检查构建输出无错误
67
+
68
+ ## 阶段 4: 测试验证
69
+
70
+ - [ ] 运行单元测试
71
+ - [ ] 配置 Lobi 服务器连接
72
+ - [ ] 测试登录功能
73
+ - [ ] 测试消息发送
74
+ - [ ] 测试消息接收
75
+ - [ ] 测试房间操作
76
+ - [ ] 测试加密功能(如启用)
77
+
78
+ ## 已知问题与注意事项
79
+
80
+ 1. **加密模块**: 检查 `@matrix-org/matrix-sdk-crypto-nodejs` 是否也包含硬编码路径
81
+ 2. **媒体下载**: SDK 内部可能使用 `/_matrix/media/v3/download` 路径
82
+ 3. **版本升级**: 记录当前使用的 SDK 版本 (v41.3.0)
83
+ 4. **API 兼容性**: 确认 Lobi 与 Matrix 协议的兼容性