@elizaos/shared 2.0.0-alpha.144

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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/awareness/index.d.ts +2 -0
  3. package/awareness/index.d.ts.map +1 -0
  4. package/awareness/index.js +2 -0
  5. package/awareness/index.js.map +1 -0
  6. package/awareness/registry.d.ts +27 -0
  7. package/awareness/registry.d.ts.map +1 -0
  8. package/awareness/registry.js +162 -0
  9. package/awareness/registry.js.map +1 -0
  10. package/config/types.agent-defaults.d.ts +333 -0
  11. package/config/types.agent-defaults.d.ts.map +1 -0
  12. package/config/types.agent-defaults.js +2 -0
  13. package/config/types.agent-defaults.js.map +1 -0
  14. package/config/types.agents.d.ts +112 -0
  15. package/config/types.agents.d.ts.map +1 -0
  16. package/config/types.agents.js +2 -0
  17. package/config/types.agents.js.map +1 -0
  18. package/config/types.d.ts +8 -0
  19. package/config/types.d.ts.map +1 -0
  20. package/config/types.eliza.d.ts +648 -0
  21. package/config/types.eliza.d.ts.map +1 -0
  22. package/config/types.eliza.js +2 -0
  23. package/config/types.eliza.js.map +1 -0
  24. package/config/types.gateway.d.ts +216 -0
  25. package/config/types.gateway.d.ts.map +1 -0
  26. package/config/types.gateway.js +2 -0
  27. package/config/types.gateway.js.map +1 -0
  28. package/config/types.hooks.d.ts +107 -0
  29. package/config/types.hooks.d.ts.map +1 -0
  30. package/config/types.hooks.js +2 -0
  31. package/config/types.hooks.js.map +1 -0
  32. package/config/types.js +8 -0
  33. package/config/types.js.map +1 -0
  34. package/config/types.messages.d.ts +176 -0
  35. package/config/types.messages.d.ts.map +1 -0
  36. package/config/types.messages.js +2 -0
  37. package/config/types.messages.js.map +1 -0
  38. package/config/types.tools.d.ts +400 -0
  39. package/config/types.tools.d.ts.map +1 -0
  40. package/config/types.tools.js +2 -0
  41. package/config/types.tools.js.map +1 -0
  42. package/connectors.d.ts +13 -0
  43. package/connectors.d.ts.map +1 -0
  44. package/connectors.js +92 -0
  45. package/connectors.js.map +1 -0
  46. package/contracts/apps.d.ts +204 -0
  47. package/contracts/apps.d.ts.map +1 -0
  48. package/contracts/apps.js +189 -0
  49. package/contracts/apps.js.map +1 -0
  50. package/contracts/awareness.d.ts +38 -0
  51. package/contracts/awareness.d.ts.map +1 -0
  52. package/contracts/awareness.js +8 -0
  53. package/contracts/awareness.js.map +1 -0
  54. package/contracts/cloud-topology.d.ts +13 -0
  55. package/contracts/cloud-topology.d.ts.map +1 -0
  56. package/contracts/cloud-topology.js +74 -0
  57. package/contracts/cloud-topology.js.map +1 -0
  58. package/contracts/config.d.ts +146 -0
  59. package/contracts/config.d.ts.map +1 -0
  60. package/contracts/config.js +5 -0
  61. package/contracts/config.js.map +1 -0
  62. package/contracts/content-pack.d.ts +131 -0
  63. package/contracts/content-pack.d.ts.map +1 -0
  64. package/contracts/content-pack.js +103 -0
  65. package/contracts/content-pack.js.map +1 -0
  66. package/contracts/drop.d.ts +20 -0
  67. package/contracts/drop.d.ts.map +1 -0
  68. package/contracts/drop.js +5 -0
  69. package/contracts/drop.js.map +1 -0
  70. package/contracts/index.d.ts +13 -0
  71. package/contracts/index.d.ts.map +1 -0
  72. package/contracts/index.js +13 -0
  73. package/contracts/index.js.map +1 -0
  74. package/contracts/lifeops.d.ts +1337 -0
  75. package/contracts/lifeops.d.ts.map +1 -0
  76. package/contracts/lifeops.js +279 -0
  77. package/contracts/lifeops.js.map +1 -0
  78. package/contracts/onboarding.d.ts +443 -0
  79. package/contracts/onboarding.d.ts.map +1 -0
  80. package/contracts/onboarding.js +1021 -0
  81. package/contracts/onboarding.js.map +1 -0
  82. package/contracts/permissions.d.ts +38 -0
  83. package/contracts/permissions.d.ts.map +1 -0
  84. package/contracts/permissions.js +5 -0
  85. package/contracts/permissions.js.map +1 -0
  86. package/contracts/service-routing.d.ts +77 -0
  87. package/contracts/service-routing.d.ts.map +1 -0
  88. package/contracts/service-routing.js +228 -0
  89. package/contracts/service-routing.js.map +1 -0
  90. package/contracts/theme.d.ts +136 -0
  91. package/contracts/theme.d.ts.map +1 -0
  92. package/contracts/theme.js +134 -0
  93. package/contracts/theme.js.map +1 -0
  94. package/contracts/verification.d.ts +9 -0
  95. package/contracts/verification.d.ts.map +1 -0
  96. package/contracts/verification.js +5 -0
  97. package/contracts/verification.js.map +1 -0
  98. package/contracts/wallet.d.ts +626 -0
  99. package/contracts/wallet.d.ts.map +1 -0
  100. package/contracts/wallet.js +61 -0
  101. package/contracts/wallet.js.map +1 -0
  102. package/dev-settings-banner-style.d.ts +14 -0
  103. package/dev-settings-banner-style.d.ts.map +1 -0
  104. package/dev-settings-banner-style.js +58 -0
  105. package/dev-settings-banner-style.js.map +1 -0
  106. package/dev-settings-figlet-heading.d.ts +22 -0
  107. package/dev-settings-figlet-heading.d.ts.map +1 -0
  108. package/dev-settings-figlet-heading.js +56 -0
  109. package/dev-settings-figlet-heading.js.map +1 -0
  110. package/dev-settings-table.d.ts +47 -0
  111. package/dev-settings-table.d.ts.map +1 -0
  112. package/dev-settings-table.js +189 -0
  113. package/dev-settings-table.js.map +1 -0
  114. package/eliza-core-roles.d.ts +70 -0
  115. package/eliza-core-roles.d.ts.map +1 -0
  116. package/eliza-core-roles.js +546 -0
  117. package/eliza-core-roles.js.map +1 -0
  118. package/env-utils.d.ts +5 -0
  119. package/env-utils.d.ts.map +1 -0
  120. package/env-utils.impl.d.ts +2 -0
  121. package/env-utils.impl.d.ts.map +1 -0
  122. package/env-utils.impl.js +17 -0
  123. package/env-utils.impl.js.map +1 -0
  124. package/env-utils.js +5 -0
  125. package/env-utils.js.map +1 -0
  126. package/i18n/generated/validation-keyword-data.d.ts +1030 -0
  127. package/i18n/generated/validation-keyword-data.d.ts.map +1 -0
  128. package/i18n/generated/validation-keyword-data.js +1034 -0
  129. package/i18n/generated/validation-keyword-data.js.map +1 -0
  130. package/i18n/keyword-matching.d.ts +23 -0
  131. package/i18n/keyword-matching.d.ts.map +1 -0
  132. package/i18n/keyword-matching.js +113 -0
  133. package/i18n/keyword-matching.js.map +1 -0
  134. package/i18n/validation-keywords.d.ts +13 -0
  135. package/i18n/validation-keywords.d.ts.map +1 -0
  136. package/i18n/validation-keywords.js +13 -0
  137. package/i18n/validation-keywords.js.map +1 -0
  138. package/index.d.ts +13 -0
  139. package/index.d.ts.map +1 -0
  140. package/index.js +13 -0
  141. package/index.js.map +1 -0
  142. package/onboarding-presets.characters.d.ts +22 -0
  143. package/onboarding-presets.characters.d.ts.map +1 -0
  144. package/onboarding-presets.characters.js +2607 -0
  145. package/onboarding-presets.characters.js.map +1 -0
  146. package/onboarding-presets.d.ts +40 -0
  147. package/onboarding-presets.d.ts.map +1 -0
  148. package/onboarding-presets.js +177 -0
  149. package/onboarding-presets.js.map +1 -0
  150. package/onboarding-presets.shared.d.ts +2 -0
  151. package/onboarding-presets.shared.d.ts.map +1 -0
  152. package/onboarding-presets.shared.js +8 -0
  153. package/onboarding-presets.shared.js.map +1 -0
  154. package/package.json +173 -0
  155. package/restart.d.ts +27 -0
  156. package/restart.d.ts.map +1 -0
  157. package/restart.js +29 -0
  158. package/restart.js.map +1 -0
  159. package/runtime-env.d.ts +82 -0
  160. package/runtime-env.d.ts.map +1 -0
  161. package/runtime-env.js +243 -0
  162. package/runtime-env.js.map +1 -0
  163. package/settings-debug.d.ts +20 -0
  164. package/settings-debug.d.ts.map +1 -0
  165. package/settings-debug.js +117 -0
  166. package/settings-debug.js.map +1 -0
  167. package/spoken-text.d.ts +2 -0
  168. package/spoken-text.d.ts.map +1 -0
  169. package/spoken-text.js +57 -0
  170. package/spoken-text.js.map +1 -0
  171. package/themes/index.d.ts +7 -0
  172. package/themes/index.d.ts.map +1 -0
  173. package/themes/index.js +6 -0
  174. package/themes/index.js.map +1 -0
  175. package/themes/presets.d.ts +15 -0
  176. package/themes/presets.d.ts.map +1 -0
  177. package/themes/presets.js +789 -0
  178. package/themes/presets.js.map +1 -0
  179. package/types.d.ts +27 -0
  180. package/types.d.ts.map +1 -0
  181. package/types.js +2 -0
  182. package/types.js.map +1 -0
  183. package/validation-keywords.d.ts +2 -0
  184. package/validation-keywords.d.ts.map +1 -0
  185. package/validation-keywords.js +2 -0
  186. package/validation-keywords.js.map +1 -0
@@ -0,0 +1,546 @@
1
+ import { createUniqueUuid, logger, } from "@elizaos/core";
2
+ // Vendored elizaOS roles helpers for published core builds that do not expose
3
+ // the @elizaos/shared/eliza-core-roles subpath yet.
4
+ const DEFAULT_SERVER_ROLE = "NONE";
5
+ export const ROLE_RANK = {
6
+ GUEST: 0,
7
+ USER: 1,
8
+ ADMIN: 2,
9
+ OWNER: 3,
10
+ };
11
+ const CONNECTOR_ADMINS_SETTING_KEY = "ELIZA_ROLES_CONNECTOR_ADMINS_JSON";
12
+ const CANONICAL_OWNER_SETTING_KEY = "ELIZA_ADMIN_ENTITY_ID";
13
+ const OWNER_CONTACTS_SETTING_KEY = "ELIZA_OWNER_CONTACTS_JSON";
14
+ const CONNECTOR_ID_FIELDS = ["userId", "id", "username", "userName"];
15
+ const CONNECTOR_STABLE_ID_FIELDS = ["userId", "id"];
16
+ function asStringArray(value) {
17
+ if (!Array.isArray(value))
18
+ return [];
19
+ return value
20
+ .filter((entry) => typeof entry === "string")
21
+ .map((entry) => entry.trim())
22
+ .filter(Boolean);
23
+ }
24
+ function normalizeConnectorAdminWhitelist(whitelist) {
25
+ if (!whitelist || typeof whitelist !== "object")
26
+ return {};
27
+ return Object.fromEntries(Object.entries(whitelist)
28
+ .map(([connector, values]) => [connector, asStringArray(values)])
29
+ .filter(([, values]) => values.length > 0));
30
+ }
31
+ function normalizeRoleGrantSource(raw) {
32
+ if (raw === "owner" || raw === "manual" || raw === "connector_admin") {
33
+ return raw;
34
+ }
35
+ return null;
36
+ }
37
+ function asRecord(value) {
38
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
39
+ return undefined;
40
+ }
41
+ return value;
42
+ }
43
+ function formatError(error) {
44
+ return error instanceof Error ? error.message : String(error);
45
+ }
46
+ function getRuntimeSettingString(runtime, key) {
47
+ if (typeof runtime.getSetting !== "function") {
48
+ return undefined;
49
+ }
50
+ const value = runtime.getSetting(key);
51
+ if (typeof value !== "string") {
52
+ return undefined;
53
+ }
54
+ const trimmed = value.trim();
55
+ return trimmed.length > 0 ? trimmed : undefined;
56
+ }
57
+ function parseOwnerContactEntityIds(raw) {
58
+ if (!raw) {
59
+ return [];
60
+ }
61
+ try {
62
+ const parsed = JSON.parse(raw);
63
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
64
+ return [];
65
+ }
66
+ return Object.values(parsed)
67
+ .map((entry) => entry && typeof entry.entityId === "string"
68
+ ? entry.entityId.trim()
69
+ : "")
70
+ .filter((entityId) => entityId.length > 0);
71
+ }
72
+ catch (error) {
73
+ logger.warn(`[roles] Failed to parse owner contacts from runtime settings: ${formatError(error)}`);
74
+ return [];
75
+ }
76
+ }
77
+ function getMemoryMetadata(message) {
78
+ return asRecord(message.metadata);
79
+ }
80
+ function getMessageSource(message) {
81
+ return typeof message.content?.source === "string"
82
+ ? message.content.source
83
+ : undefined;
84
+ }
85
+ function getConnectorMetadataFromMemory(message) {
86
+ const memoryMetadata = getMemoryMetadata(message);
87
+ const source = getMessageSource(message);
88
+ if (!source) {
89
+ return undefined;
90
+ }
91
+ const sourceMetadata = asRecord(memoryMetadata?.[source]);
92
+ if (sourceMetadata) {
93
+ return { [source]: sourceMetadata };
94
+ }
95
+ if (source === "discord") {
96
+ const fromId = memoryMetadata?.fromId;
97
+ if (typeof fromId !== "string" || fromId.trim().length === 0) {
98
+ return undefined;
99
+ }
100
+ const entityName = typeof memoryMetadata?.entityName === "string"
101
+ ? memoryMetadata.entityName
102
+ : undefined;
103
+ return {
104
+ discord: {
105
+ userId: fromId,
106
+ id: fromId,
107
+ ...(entityName ? { name: entityName, username: entityName } : {}),
108
+ },
109
+ };
110
+ }
111
+ return undefined;
112
+ }
113
+ async function getEntityMetadata(runtime, entityId) {
114
+ if (typeof runtime.getEntityById !== "function") {
115
+ return undefined;
116
+ }
117
+ try {
118
+ const entity = await runtime.getEntityById(entityId);
119
+ return asRecord(entity?.metadata);
120
+ }
121
+ catch (error) {
122
+ logger.warn(`[roles] Failed to look up entity ${entityId}: ${formatError(error)}`);
123
+ return undefined;
124
+ }
125
+ }
126
+ export async function getUserServerRole(runtime, entityId, serverId) {
127
+ const worldId = createUniqueUuid(runtime, serverId);
128
+ const world = await runtime.getWorld(worldId);
129
+ const worldMetadata = world?.metadata;
130
+ const roles = worldMetadata?.roles;
131
+ if (!roles) {
132
+ return DEFAULT_SERVER_ROLE;
133
+ }
134
+ const role = roles[entityId];
135
+ if (role) {
136
+ return role;
137
+ }
138
+ return DEFAULT_SERVER_ROLE;
139
+ }
140
+ export async function findWorldsForOwner(runtime, entityId) {
141
+ if (!entityId) {
142
+ logger.error({ src: "core:roles", agentId: runtime.agentId }, "User ID is required to find server");
143
+ return null;
144
+ }
145
+ const worlds = await runtime.getAllWorlds();
146
+ if (!worlds || worlds.length === 0) {
147
+ logger.debug({ src: "core:roles", agentId: runtime.agentId }, "No worlds found for agent");
148
+ return null;
149
+ }
150
+ const ownerWorlds = [];
151
+ for (const world of worlds) {
152
+ const worldMetadata = world.metadata;
153
+ const worldMetadataOwnership = worldMetadata?.ownership;
154
+ if (worldMetadataOwnership && worldMetadataOwnership.ownerId === entityId) {
155
+ ownerWorlds.push(world);
156
+ }
157
+ }
158
+ return ownerWorlds.length ? ownerWorlds : null;
159
+ }
160
+ export function getConfiguredOwnerEntityIds(runtime) {
161
+ const configuredAdminEntityId = getRuntimeSettingString(runtime, CANONICAL_OWNER_SETTING_KEY);
162
+ const ownerContactsRaw = getRuntimeSettingString(runtime, OWNER_CONTACTS_SETTING_KEY);
163
+ const ownerContactEntityIds = parseOwnerContactEntityIds(ownerContactsRaw);
164
+ const deduped = new Set();
165
+ if (configuredAdminEntityId) {
166
+ deduped.add(configuredAdminEntityId);
167
+ }
168
+ for (const entityId of ownerContactEntityIds) {
169
+ deduped.add(entityId);
170
+ }
171
+ return [...deduped];
172
+ }
173
+ export function hasConfiguredCanonicalOwner(runtime) {
174
+ return getConfiguredOwnerEntityIds(runtime).length > 0;
175
+ }
176
+ export function resolveCanonicalOwnerId(runtime, metadata) {
177
+ const configuredOwnerIds = getConfiguredOwnerEntityIds(runtime);
178
+ if (configuredOwnerIds.length > 0) {
179
+ return configuredOwnerIds[0] ?? null;
180
+ }
181
+ const worldOwnerId = metadata?.ownership?.ownerId;
182
+ return typeof worldOwnerId === "string" && worldOwnerId.length > 0
183
+ ? worldOwnerId
184
+ : null;
185
+ }
186
+ function resolveOwnershipCandidateIds(runtime, metadata) {
187
+ const configuredOwnerIds = getConfiguredOwnerEntityIds(runtime);
188
+ if (configuredOwnerIds.length > 0) {
189
+ return configuredOwnerIds;
190
+ }
191
+ const ownerId = resolveCanonicalOwnerId(runtime, metadata);
192
+ return ownerId ? [ownerId] : [];
193
+ }
194
+ function connectorIdentityMatches(left, right) {
195
+ if (!left || !right)
196
+ return false;
197
+ for (const [connector, leftRaw] of Object.entries(left)) {
198
+ const leftConnector = asRecord(leftRaw);
199
+ const rightConnector = asRecord(right[connector]);
200
+ if (!leftConnector || !rightConnector) {
201
+ continue;
202
+ }
203
+ for (const field of CONNECTOR_STABLE_ID_FIELDS) {
204
+ const leftValue = leftConnector[field];
205
+ const rightValue = rightConnector[field];
206
+ if (typeof leftValue === "string" &&
207
+ leftValue.length > 0 &&
208
+ leftValue === rightValue) {
209
+ return true;
210
+ }
211
+ }
212
+ }
213
+ return false;
214
+ }
215
+ async function hasConfirmedIdentityLink(runtime, entityId, ownerId) {
216
+ const linkedIds = await getConfirmedLinkedEntityIds(runtime, entityId);
217
+ return linkedIds.includes(ownerId);
218
+ }
219
+ async function getConfirmedLinkedEntityIds(runtime, entityId) {
220
+ if (typeof runtime.getRelationships !== "function") {
221
+ return [];
222
+ }
223
+ try {
224
+ const relationships = await runtime.getRelationships({
225
+ entityIds: [entityId],
226
+ tags: ["identity_link"],
227
+ });
228
+ const linkedIds = new Set();
229
+ for (const relationship of relationships) {
230
+ const metadata = asRecord(relationship.metadata);
231
+ if (metadata?.status !== "confirmed") {
232
+ continue;
233
+ }
234
+ if (relationship.sourceEntityId === entityId &&
235
+ typeof relationship.targetEntityId === "string") {
236
+ linkedIds.add(relationship.targetEntityId);
237
+ }
238
+ if (relationship.targetEntityId === entityId &&
239
+ typeof relationship.sourceEntityId === "string") {
240
+ linkedIds.add(relationship.sourceEntityId);
241
+ }
242
+ }
243
+ return [...linkedIds];
244
+ }
245
+ catch (error) {
246
+ logger.warn(`[roles] Failed to load identity links for ${entityId}: ${formatError(error)}`);
247
+ return [];
248
+ }
249
+ }
250
+ async function resolveOwnershipRole(runtime, metadata, entityId, options) {
251
+ const ownerIds = resolveOwnershipCandidateIds(runtime, metadata);
252
+ if (ownerIds.length === 0) {
253
+ return null;
254
+ }
255
+ const senderMetadata = options?.liveEntityMetadata ?? (await getEntityMetadata(runtime, entityId));
256
+ for (const ownerId of ownerIds) {
257
+ if (ownerId === entityId) {
258
+ return "OWNER";
259
+ }
260
+ if (await hasConfirmedIdentityLink(runtime, entityId, ownerId)) {
261
+ return "OWNER";
262
+ }
263
+ const ownerMetadata = await getEntityMetadata(runtime, ownerId);
264
+ if (!ownerMetadata) {
265
+ continue;
266
+ }
267
+ if (connectorIdentityMatches(senderMetadata, ownerMetadata)) {
268
+ return "OWNER";
269
+ }
270
+ }
271
+ return null;
272
+ }
273
+ function resolveWorldIdFromMessageMetadata(runtime, message) {
274
+ const source = getMessageSource(message);
275
+ const metadata = getMemoryMetadata(message);
276
+ if (source === "discord") {
277
+ const serverId = typeof metadata?.discordServerId === "string"
278
+ ? metadata.discordServerId
279
+ : typeof metadata?.discordChannelId === "string"
280
+ ? metadata.discordChannelId
281
+ : null;
282
+ if (!serverId) {
283
+ return null;
284
+ }
285
+ return createUniqueUuid(runtime, serverId);
286
+ }
287
+ return null;
288
+ }
289
+ export function setConnectorAdminWhitelist(runtime, whitelist) {
290
+ if (typeof runtime.setSetting !== "function") {
291
+ return;
292
+ }
293
+ const normalized = normalizeConnectorAdminWhitelist(whitelist);
294
+ if (Object.keys(normalized).length === 0) {
295
+ runtime.setSetting(CONNECTOR_ADMINS_SETTING_KEY, null);
296
+ return;
297
+ }
298
+ runtime.setSetting(CONNECTOR_ADMINS_SETTING_KEY, JSON.stringify(normalized));
299
+ }
300
+ export function getConnectorAdminWhitelist(runtime) {
301
+ const raw = getRuntimeSettingString(runtime, CONNECTOR_ADMINS_SETTING_KEY);
302
+ if (!raw) {
303
+ return {};
304
+ }
305
+ try {
306
+ const parsed = JSON.parse(raw);
307
+ return normalizeConnectorAdminWhitelist(parsed);
308
+ }
309
+ catch (error) {
310
+ logger.warn(`[roles] Failed to parse ${CONNECTOR_ADMINS_SETTING_KEY}: ${formatError(error)}`);
311
+ return {};
312
+ }
313
+ }
314
+ export function matchEntityToConnectorAdminWhitelist(entityMetadata, whitelist) {
315
+ if (!entityMetadata || typeof entityMetadata !== "object")
316
+ return null;
317
+ const normalizedWhitelist = normalizeConnectorAdminWhitelist(whitelist);
318
+ for (const [connector, platformIds] of Object.entries(normalizedWhitelist)) {
319
+ const connectorMeta = asRecord(entityMetadata[connector]);
320
+ if (!connectorMeta) {
321
+ continue;
322
+ }
323
+ for (const field of CONNECTOR_ID_FIELDS) {
324
+ const value = connectorMeta[field];
325
+ if (typeof value === "string" && platformIds.includes(value)) {
326
+ return { connector, matchedValue: value, matchedField: field };
327
+ }
328
+ }
329
+ }
330
+ return null;
331
+ }
332
+ export function normalizeRole(raw) {
333
+ const upper = (raw ?? "").toUpperCase();
334
+ if (upper === "OWNER" || upper === "ADMIN" || upper === "USER")
335
+ return upper;
336
+ return "GUEST";
337
+ }
338
+ export function getEntityRole(metadata, entityId) {
339
+ if (!metadata?.roles)
340
+ return "GUEST";
341
+ return normalizeRole(metadata.roles[entityId]);
342
+ }
343
+ function getStoredRoleSource(metadata, entityId) {
344
+ return normalizeRoleGrantSource(metadata?.roleSources?.[entityId]);
345
+ }
346
+ async function resolveStoredRoleSource(runtime, metadata, entityId, options) {
347
+ const storedSource = getStoredRoleSource(metadata, entityId);
348
+ if (storedSource) {
349
+ return storedSource;
350
+ }
351
+ const storedRole = getEntityRole(metadata, entityId);
352
+ if (storedRole === "GUEST") {
353
+ return null;
354
+ }
355
+ if (storedRole === "OWNER") {
356
+ return "owner";
357
+ }
358
+ const entityMetadata = options?.liveEntityId === entityId
359
+ ? (options.liveEntityMetadata ?? undefined)
360
+ : undefined;
361
+ const matchedWhitelist = matchEntityToConnectorAdminWhitelist(entityMetadata ?? (await getEntityMetadata(runtime, entityId)), getConnectorAdminWhitelist(runtime));
362
+ if (storedRole === "ADMIN" && matchedWhitelist) {
363
+ return "connector_admin";
364
+ }
365
+ return "manual";
366
+ }
367
+ async function resolveExplicitGrantedRole(runtime, metadata, entityId, options) {
368
+ const directRole = getEntityRole(metadata, entityId);
369
+ const directSource = await resolveStoredRoleSource(runtime, metadata, entityId, options);
370
+ if (directRole !== "GUEST" && directSource === "manual") {
371
+ return { role: directRole, source: "manual" };
372
+ }
373
+ const linkedIds = await getConfirmedLinkedEntityIds(runtime, entityId);
374
+ let bestRole = null;
375
+ for (const linkedEntityId of linkedIds) {
376
+ const linkedRole = getEntityRole(metadata, linkedEntityId);
377
+ if (linkedRole === "GUEST") {
378
+ continue;
379
+ }
380
+ const linkedSource = await resolveStoredRoleSource(runtime, metadata, linkedEntityId);
381
+ if (linkedSource !== "manual") {
382
+ continue;
383
+ }
384
+ if (!bestRole || ROLE_RANK[linkedRole] > ROLE_RANK[bestRole]) {
385
+ bestRole = linkedRole;
386
+ }
387
+ }
388
+ return bestRole ? { role: bestRole, source: "linked_manual" } : null;
389
+ }
390
+ export function getLiveEntityMetadataFromMessage(message) {
391
+ // Only trust connector identity stamped into the Memory itself.
392
+ // content.metadata can come from untrusted chat clients, so it must not
393
+ // participate in role resolution.
394
+ return getConnectorMetadataFromMemory(message);
395
+ }
396
+ export async function resolveEntityRole(runtime, _world, metadata, entityId, options) {
397
+ const explicitRole = getEntityRole(metadata, entityId);
398
+ const explicitSource = await resolveStoredRoleSource(runtime, metadata, entityId, options);
399
+ const ownershipRole = await resolveOwnershipRole(runtime, metadata, entityId, options);
400
+ if (ownershipRole === "OWNER") {
401
+ return "OWNER";
402
+ }
403
+ const whitelist = getConnectorAdminWhitelist(runtime);
404
+ const liveMatched = matchEntityToConnectorAdminWhitelist(options?.liveEntityMetadata ?? undefined, whitelist);
405
+ if (explicitRole !== "GUEST") {
406
+ if (explicitRole === "OWNER") {
407
+ return hasConfiguredCanonicalOwner(runtime) ? "GUEST" : "OWNER";
408
+ }
409
+ if (explicitSource === "connector_admin") {
410
+ if (Object.keys(whitelist).length === 0) {
411
+ return "GUEST";
412
+ }
413
+ if (liveMatched) {
414
+ return "ADMIN";
415
+ }
416
+ const entityMetadata = await getEntityMetadata(runtime, entityId);
417
+ const matched = matchEntityToConnectorAdminWhitelist(entityMetadata, whitelist);
418
+ if (matched) {
419
+ return "ADMIN";
420
+ }
421
+ return "GUEST";
422
+ }
423
+ return explicitRole;
424
+ }
425
+ if (Object.keys(whitelist).length === 0) {
426
+ return explicitRole;
427
+ }
428
+ if (liveMatched) {
429
+ return "ADMIN";
430
+ }
431
+ const entityMetadata = await getEntityMetadata(runtime, entityId);
432
+ const matched = matchEntityToConnectorAdminWhitelist(entityMetadata, whitelist);
433
+ if (!matched) {
434
+ return explicitRole;
435
+ }
436
+ return "ADMIN";
437
+ }
438
+ export async function checkSenderPrivateAccess(runtime, message) {
439
+ const resolved = await resolveWorldForMessage(runtime, message);
440
+ if (!resolved)
441
+ return null;
442
+ const { world, metadata } = resolved;
443
+ const entityId = message.entityId;
444
+ const options = {
445
+ liveEntityMetadata: getLiveEntityMetadataFromMessage(message),
446
+ liveEntityId: entityId,
447
+ };
448
+ const role = await resolveEntityRole(runtime, world, metadata, entityId, options);
449
+ const ownershipRole = await resolveOwnershipRole(runtime, metadata, entityId, options);
450
+ if (ownershipRole === "OWNER") {
451
+ return {
452
+ entityId,
453
+ role,
454
+ isOwner: true,
455
+ isAdmin: true,
456
+ canManageRoles: true,
457
+ hasPrivateAccess: true,
458
+ accessRole: "OWNER",
459
+ accessSource: "owner",
460
+ };
461
+ }
462
+ const explicitAccess = await resolveExplicitGrantedRole(runtime, metadata, entityId, options);
463
+ return {
464
+ entityId,
465
+ role,
466
+ isOwner: false,
467
+ isAdmin: role === "OWNER" || role === "ADMIN",
468
+ canManageRoles: role === "OWNER" || role === "ADMIN",
469
+ hasPrivateAccess: explicitAccess !== null,
470
+ accessRole: explicitAccess?.role ?? null,
471
+ accessSource: explicitAccess?.source ?? null,
472
+ };
473
+ }
474
+ export function canModifyRole(actorRole, targetCurrentRole, newRole) {
475
+ if (targetCurrentRole === newRole)
476
+ return false;
477
+ const actorRank = ROLE_RANK[actorRole];
478
+ const targetRank = ROLE_RANK[targetCurrentRole];
479
+ if (actorRole === "OWNER")
480
+ return true;
481
+ if (actorRole === "ADMIN") {
482
+ if (targetRank >= actorRank)
483
+ return false;
484
+ if (newRole === "OWNER")
485
+ return false;
486
+ return true;
487
+ }
488
+ return false;
489
+ }
490
+ export async function resolveWorldForMessage(runtime, message) {
491
+ const room = await runtime.getRoom(message.roomId);
492
+ const worldId = room?.worldId ?? resolveWorldIdFromMessageMetadata(runtime, message);
493
+ if (!worldId)
494
+ return null;
495
+ const world = await runtime.getWorld(worldId);
496
+ if (!world)
497
+ return null;
498
+ const metadata = (world.metadata ?? {});
499
+ return { world, metadata };
500
+ }
501
+ export async function resolveCanonicalOwnerIdForMessage(runtime, message) {
502
+ const configuredOwnerId = resolveCanonicalOwnerId(runtime);
503
+ if (configuredOwnerId) {
504
+ return configuredOwnerId;
505
+ }
506
+ const resolved = await resolveWorldForMessage(runtime, message);
507
+ return resolveCanonicalOwnerId(runtime, resolved?.metadata);
508
+ }
509
+ export async function checkSenderRole(runtime, message) {
510
+ const resolved = await resolveWorldForMessage(runtime, message);
511
+ if (!resolved)
512
+ return null;
513
+ const { world, metadata } = resolved;
514
+ const entityId = message.entityId;
515
+ const role = await resolveEntityRole(runtime, world, metadata, entityId, {
516
+ liveEntityMetadata: getLiveEntityMetadataFromMessage(message),
517
+ liveEntityId: entityId,
518
+ });
519
+ return {
520
+ entityId,
521
+ role,
522
+ isOwner: role === "OWNER",
523
+ isAdmin: role === "OWNER" || role === "ADMIN",
524
+ canManageRoles: role === "OWNER" || role === "ADMIN",
525
+ };
526
+ }
527
+ export async function setEntityRole(runtime, message, targetEntityId, newRole, source = "manual") {
528
+ const resolved = await resolveWorldForMessage(runtime, message);
529
+ if (!resolved)
530
+ throw new Error("Cannot resolve world for role assignment");
531
+ const { world, metadata } = resolved;
532
+ if (!metadata.roles)
533
+ metadata.roles = {};
534
+ metadata.roleSources ??= {};
535
+ metadata.roles[targetEntityId] = newRole;
536
+ if (newRole === "GUEST") {
537
+ delete metadata.roleSources[targetEntityId];
538
+ }
539
+ else {
540
+ metadata.roleSources[targetEntityId] = source;
541
+ }
542
+ world.metadata = metadata;
543
+ await runtime.updateWorld(world);
544
+ return { ...metadata.roles };
545
+ }
546
+ //# sourceMappingURL=eliza-core-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eliza-core-roles.js","sourceRoot":"","sources":["../src/eliza-core-roles.ts"],"names":[],"mappings":"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"}
package/env-utils.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared environment variable utilities.
3
+ */
4
+ export { isTruthyEnvValue } from "./env-utils.impl.js";
5
+ //# sourceMappingURL=env-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-utils.d.ts","sourceRoot":"","sources":["../src/env-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isTruthyEnvValue(value: string | undefined | null): boolean;
2
+ //# sourceMappingURL=env-utils.impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-utils.impl.d.ts","sourceRoot":"","sources":["../src/env-utils.impl.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAK1E"}
@@ -0,0 +1,17 @@
1
+ const TRUTHY_ENV_VALUES = new Set([
2
+ "1",
3
+ "true",
4
+ "yes",
5
+ "y",
6
+ "on",
7
+ "enabled",
8
+ ]);
9
+ export function isTruthyEnvValue(value) {
10
+ if (typeof value !== "string")
11
+ return false;
12
+ const normalized = value.trim().toLowerCase();
13
+ if (!normalized)
14
+ return false;
15
+ return TRUTHY_ENV_VALUES.has(normalized);
16
+ }
17
+ //# sourceMappingURL=env-utils.impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-utils.impl.js","sourceRoot":"","sources":["../src/env-utils.impl.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,GAAG;IACH,MAAM;IACN,KAAK;IACL,GAAG;IACH,IAAI;IACJ,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,OAAO,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC"}
package/env-utils.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared environment variable utilities.
3
+ */
4
+ export { isTruthyEnvValue } from "./env-utils.impl.js";
5
+ //# sourceMappingURL=env-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-utils.js","sourceRoot":"","sources":["../src/env-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}