@basicbit/vrchat-mcp 0.1.5 → 0.1.7
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.
- package/CHANGELOG.md +11 -0
- package/LICENSE +21 -21
- package/README.md +39 -9
- package/assets/logo.svg +58 -39
- package/dist/package.json +10 -4
- package/dist/src/auth/index.js +65 -3
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/config/defaults.json +4 -2
- package/dist/src/config/index.js +23 -12
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/core/client.js +27 -4
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/generatedOperations.js +133 -0
- package/dist/src/core/generatedOperations.js.map +1 -0
- package/dist/src/core/generatedToolDescriptions.js +26 -0
- package/dist/src/core/generatedToolDescriptions.js.map +1 -0
- package/dist/src/core/generatedToolOverrides.js +19 -61
- package/dist/src/core/generatedToolOverrides.js.map +1 -1
- package/dist/src/core/generatedToolSkips.js +6 -23
- package/dist/src/core/generatedToolSkips.js.map +1 -1
- package/dist/src/core/operationDetails.js +96 -0
- package/dist/src/core/operationDetails.js.map +1 -0
- package/dist/src/core/operationPolicy.js +32 -0
- package/dist/src/core/operationPolicy.js.map +1 -0
- package/dist/src/core/readToolRegistry.js +35 -81
- package/dist/src/core/readToolRegistry.js.map +1 -1
- package/dist/src/core/writeToolRegistry.js +59 -101
- package/dist/src/core/writeToolRegistry.js.map +1 -1
- package/dist/src/models/avatars.js +2 -1
- package/dist/src/models/avatars.js.map +1 -1
- package/dist/src/models/common.js +4 -0
- package/dist/src/models/common.js.map +1 -0
- package/dist/src/models/events.js +8 -4
- package/dist/src/models/events.js.map +1 -1
- package/dist/src/models/favorites.js +120 -0
- package/dist/src/models/favorites.js.map +1 -0
- package/dist/src/models/friends.js +7 -6
- package/dist/src/models/friends.js.map +1 -1
- package/dist/src/models/groups.js +91 -5
- package/dist/src/models/groups.js.map +1 -1
- package/dist/src/models/invites.js +81 -3
- package/dist/src/models/invites.js.map +1 -1
- package/dist/src/models/statusPage.js +9 -0
- package/dist/src/models/statusPage.js.map +1 -1
- package/dist/src/models/users.js +3 -2
- package/dist/src/models/users.js.map +1 -1
- package/dist/src/models/worlds.js +2 -1
- package/dist/src/models/worlds.js.map +1 -1
- package/dist/src/schemas/read.js +22 -9
- package/dist/src/schemas/read.js.map +1 -1
- package/dist/src/schemas/write.js +17 -3
- package/dist/src/schemas/write.js.map +1 -1
- package/dist/src/services/api/client.js +20 -0
- package/dist/src/services/api/client.js.map +1 -1
- package/dist/src/services/events/curated.js +37 -3
- package/dist/src/services/events/curated.js.map +1 -1
- package/dist/src/services/favorites/index.js +106 -0
- package/dist/src/services/favorites/index.js.map +1 -0
- package/dist/src/services/groups/index.js +1 -0
- package/dist/src/services/groups/index.js.map +1 -1
- package/dist/src/services/groups/roles.js +75 -0
- package/dist/src/services/groups/roles.js.map +1 -0
- package/dist/src/services/invites/bulk.js +310 -0
- package/dist/src/services/invites/bulk.js.map +1 -0
- package/dist/src/services/invites/curated.js +203 -5
- package/dist/src/services/invites/curated.js.map +1 -1
- package/dist/src/services/invites/messages.js +65 -0
- package/dist/src/services/invites/messages.js.map +1 -0
- package/dist/src/services/statusPage/curated.js +42 -5
- package/dist/src/services/statusPage/curated.js.map +1 -1
- package/dist/src/tools/auth.js +4 -4
- package/dist/src/tools/auth.js.map +1 -1
- package/dist/src/tools/curated/events.js +4 -3
- package/dist/src/tools/curated/events.js.map +1 -1
- package/dist/src/tools/curated/favorites.js +79 -0
- package/dist/src/tools/curated/favorites.js.map +1 -0
- package/dist/src/tools/curated/groups.js +88 -3
- package/dist/src/tools/curated/groups.js.map +1 -1
- package/dist/src/tools/curated/invites.js +78 -2
- package/dist/src/tools/curated/invites.js.map +1 -1
- package/dist/src/tools/generated.js +4 -4
- package/dist/src/tools/generated.js.map +1 -1
- package/dist/src/tools/raw.js +4 -7
- package/dist/src/tools/raw.js.map +1 -1
- package/dist/src/tools/read/system.js +98 -0
- package/dist/src/tools/read/system.js.map +1 -1
- package/dist/src/tools/registerAllTools.js +2 -0
- package/dist/src/tools/registerAllTools.js.map +1 -1
- package/dist/src/utils/toolNames.js +0 -6
- package/dist/src/utils/toolNames.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/curated-tools.md +28 -5
- package/docs/privacy.md +23 -0
- package/docs/robust-notes.md +29 -0
- package/docs/tools-guide.md +9 -3
- package/docs/tools.md +3641 -8201
- package/docs/vrcx.md +1 -1
- package/package.json +10 -4
- package/server.json +3 -3
- package/skills/vrchat-mcp/SKILL.md +16 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { callOperation } from '../../core/client.js';
|
|
2
|
+
import { fetchFriends } from '../friends/fetch.js';
|
|
3
|
+
import { normalizeName } from '../friends/match.js';
|
|
4
|
+
const DEFAULT_RETRY = {
|
|
5
|
+
maxAttempts: 4,
|
|
6
|
+
baseDelayMs: 1_000,
|
|
7
|
+
maxDelayMs: 30_000,
|
|
8
|
+
};
|
|
9
|
+
export const DEFAULT_BULK_WRITE_DELAY_MS = 500;
|
|
10
|
+
const RETRYABLE_STATUS_MIN = 500;
|
|
11
|
+
export function normalizeRetryOptions(input) {
|
|
12
|
+
return {
|
|
13
|
+
maxAttempts: input.retry?.maxAttempts ?? DEFAULT_RETRY.maxAttempts,
|
|
14
|
+
baseDelayMs: input.retry?.baseDelayMs ?? DEFAULT_RETRY.baseDelayMs,
|
|
15
|
+
maxDelayMs: input.retry?.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function getContinueOnError(input) {
|
|
19
|
+
return input.continueOnError !== false;
|
|
20
|
+
}
|
|
21
|
+
export function getDryRun(input) {
|
|
22
|
+
return input.dryRun === true;
|
|
23
|
+
}
|
|
24
|
+
export function asRecord(value) {
|
|
25
|
+
return value && typeof value === 'object' && !Array.isArray(value)
|
|
26
|
+
? value
|
|
27
|
+
: null;
|
|
28
|
+
}
|
|
29
|
+
function errorRetryAfter(err) {
|
|
30
|
+
if (!err || typeof err !== 'object')
|
|
31
|
+
return undefined;
|
|
32
|
+
const retryAfter = err.retryAfter;
|
|
33
|
+
return typeof retryAfter === 'string' ? retryAfter : undefined;
|
|
34
|
+
}
|
|
35
|
+
function errorMessage(err) {
|
|
36
|
+
return err instanceof Error ? err.message : 'Unknown error';
|
|
37
|
+
}
|
|
38
|
+
function errorStatus(err) {
|
|
39
|
+
if (!err || typeof err !== 'object')
|
|
40
|
+
return undefined;
|
|
41
|
+
const direct = err.status;
|
|
42
|
+
if (typeof direct === 'number')
|
|
43
|
+
return direct;
|
|
44
|
+
const payload = asRecord(err.payload);
|
|
45
|
+
const status = payload?.status;
|
|
46
|
+
return typeof status === 'number' ? status : undefined;
|
|
47
|
+
}
|
|
48
|
+
function retryAfterMs(err) {
|
|
49
|
+
const header = errorRetryAfter(err);
|
|
50
|
+
if (!header)
|
|
51
|
+
return undefined;
|
|
52
|
+
const seconds = Number(header);
|
|
53
|
+
if (Number.isFinite(seconds) && seconds >= 0)
|
|
54
|
+
return seconds * 1_000;
|
|
55
|
+
const date = Date.parse(header);
|
|
56
|
+
if (!Number.isNaN(date))
|
|
57
|
+
return Math.max(0, date - Date.now());
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
function isRetryable(err) {
|
|
61
|
+
const status = errorStatus(err);
|
|
62
|
+
return status === 429 || (typeof status === 'number' && status >= RETRYABLE_STATUS_MIN);
|
|
63
|
+
}
|
|
64
|
+
function shouldStopAfterError(err) {
|
|
65
|
+
return errorStatus(err) === 401;
|
|
66
|
+
}
|
|
67
|
+
async function sleep(ms) {
|
|
68
|
+
if (ms <= 0)
|
|
69
|
+
return;
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
71
|
+
}
|
|
72
|
+
function retryDelayMs(attempt, retry, err) {
|
|
73
|
+
const retryAfter = retryAfterMs(err);
|
|
74
|
+
if (retryAfter !== undefined)
|
|
75
|
+
return Math.min(retryAfter, retry.maxDelayMs);
|
|
76
|
+
const exponential = retry.baseDelayMs * 2 ** Math.max(0, attempt - 1);
|
|
77
|
+
const jitter = retry.baseDelayMs > 0 ? Math.floor(Math.random() * retry.baseDelayMs) : 0;
|
|
78
|
+
return Math.min(exponential + jitter, retry.maxDelayMs);
|
|
79
|
+
}
|
|
80
|
+
async function callWithRetry(operation, retry) {
|
|
81
|
+
let attempt = 1;
|
|
82
|
+
for (;;) {
|
|
83
|
+
try {
|
|
84
|
+
return { data: await operation(), attempts: attempt };
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (attempt >= retry.maxAttempts || !isRetryable(err))
|
|
88
|
+
throw err;
|
|
89
|
+
await sleep(retryDelayMs(attempt, retry, err));
|
|
90
|
+
attempt += 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function collectTargetInputs(input) {
|
|
95
|
+
if (input.user && input.users) {
|
|
96
|
+
throw new Error('Provide either user or users, not both. Each entry may be a usr_ id or exact display name.');
|
|
97
|
+
}
|
|
98
|
+
if (input.self && (input.user || input.users)) {
|
|
99
|
+
throw new Error('self=true cannot be combined with user or users.');
|
|
100
|
+
}
|
|
101
|
+
if (input.self)
|
|
102
|
+
return [];
|
|
103
|
+
if (input.user)
|
|
104
|
+
return [input.user];
|
|
105
|
+
if (input.users)
|
|
106
|
+
return input.users;
|
|
107
|
+
throw new Error('Provide self=true, user, or users.');
|
|
108
|
+
}
|
|
109
|
+
export function collectRequiredUserTargets(input) {
|
|
110
|
+
if (input.user && input.users) {
|
|
111
|
+
throw new Error('Provide either user or users, not both. Each entry may be a usr_ id or exact display name.');
|
|
112
|
+
}
|
|
113
|
+
if (input.user)
|
|
114
|
+
return [input.user];
|
|
115
|
+
if (input.users)
|
|
116
|
+
return input.users;
|
|
117
|
+
throw new Error('Provide user or users. Each entry may be a usr_ id or exact display name.');
|
|
118
|
+
}
|
|
119
|
+
function looksLikeUserId(target) {
|
|
120
|
+
return target.startsWith('usr_');
|
|
121
|
+
}
|
|
122
|
+
function toResolvedUserFromRecord(target, record) {
|
|
123
|
+
const userId = typeof record.id === 'string' ? record.id : undefined;
|
|
124
|
+
if (!userId)
|
|
125
|
+
return null;
|
|
126
|
+
const displayName = typeof record.displayName === 'string' ? record.displayName : undefined;
|
|
127
|
+
return { target, userId, displayName };
|
|
128
|
+
}
|
|
129
|
+
function recordDisplayName(record) {
|
|
130
|
+
return typeof record.displayName === 'string' ? record.displayName : '';
|
|
131
|
+
}
|
|
132
|
+
class UserTargetResolver {
|
|
133
|
+
friends = null;
|
|
134
|
+
async resolve(target) {
|
|
135
|
+
const trimmed = target.trim();
|
|
136
|
+
if (!trimmed)
|
|
137
|
+
throw new Error('Target user entries must be non-empty strings.');
|
|
138
|
+
if (looksLikeUserId(trimmed))
|
|
139
|
+
return { target, userId: trimmed };
|
|
140
|
+
const friendMatch = await this.resolveFriend(trimmed);
|
|
141
|
+
if (friendMatch)
|
|
142
|
+
return friendMatch;
|
|
143
|
+
return this.resolveSearchUser(trimmed);
|
|
144
|
+
}
|
|
145
|
+
async resolveFriend(target) {
|
|
146
|
+
this.friends ??= await fetchFriends({ includeOffline: true, pageSize: 100, maxPages: 200 });
|
|
147
|
+
const normalized = normalizeName(target);
|
|
148
|
+
const matches = this.friends.filter((friend) => normalizeName(recordDisplayName(friend)) === normalized);
|
|
149
|
+
if (matches.length > 1) {
|
|
150
|
+
throw new Error(`Display name "${target}" matched multiple friends. Pass a usr_ userId instead.`);
|
|
151
|
+
}
|
|
152
|
+
if (matches.length === 0)
|
|
153
|
+
return null;
|
|
154
|
+
const match = matches[0];
|
|
155
|
+
const userId = typeof match.id === 'string' ? match.id : undefined;
|
|
156
|
+
if (!userId)
|
|
157
|
+
throw new Error(`Friend "${target}" did not include a userId.`);
|
|
158
|
+
return {
|
|
159
|
+
target,
|
|
160
|
+
userId,
|
|
161
|
+
displayName: typeof match.displayName === 'string' ? match.displayName : undefined,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
async resolveSearchUser(target) {
|
|
165
|
+
const result = await callOperation({
|
|
166
|
+
operationId: 'searchUsers',
|
|
167
|
+
params: { search: target, n: 25 },
|
|
168
|
+
});
|
|
169
|
+
const users = Array.isArray(result.data) ? result.data : [];
|
|
170
|
+
const normalized = normalizeName(target);
|
|
171
|
+
const matches = users
|
|
172
|
+
.map((entry) => asRecord(entry))
|
|
173
|
+
.filter((entry) => Boolean(entry))
|
|
174
|
+
.filter((entry) => normalizeName(recordDisplayName(entry)) === normalized);
|
|
175
|
+
if (matches.length === 0) {
|
|
176
|
+
throw new Error(`No user found with exact display name "${target}". Try vrchat_friends_search or pass a usr_ userId.`);
|
|
177
|
+
}
|
|
178
|
+
if (matches.length > 1) {
|
|
179
|
+
throw new Error(`Display name "${target}" matched multiple users. Pass a usr_ userId instead.`);
|
|
180
|
+
}
|
|
181
|
+
const resolved = toResolvedUserFromRecord(target, matches[0]);
|
|
182
|
+
if (!resolved)
|
|
183
|
+
throw new Error(`User "${target}" did not include a userId.`);
|
|
184
|
+
return resolved;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export async function resolveUserTargets(targets, continueOnError) {
|
|
188
|
+
const resolver = new UserTargetResolver();
|
|
189
|
+
const resolvedTargets = [];
|
|
190
|
+
const results = [];
|
|
191
|
+
const seen = new Set();
|
|
192
|
+
let stopped = false;
|
|
193
|
+
for (const target of targets) {
|
|
194
|
+
try {
|
|
195
|
+
const resolved = await resolver.resolve(target);
|
|
196
|
+
if (seen.has(resolved.userId)) {
|
|
197
|
+
results.push({
|
|
198
|
+
target,
|
|
199
|
+
userId: resolved.userId,
|
|
200
|
+
displayName: resolved.displayName,
|
|
201
|
+
status: 'skipped',
|
|
202
|
+
error: 'Duplicate target user.',
|
|
203
|
+
});
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
seen.add(resolved.userId);
|
|
207
|
+
resolvedTargets.push(resolved);
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
results.push({ target, status: 'failed', error: errorMessage(err) });
|
|
211
|
+
if (!continueOnError) {
|
|
212
|
+
stopped = true;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return { targets: resolvedTargets, results, stopped };
|
|
218
|
+
}
|
|
219
|
+
export function summarizeBulk(input) {
|
|
220
|
+
const sent = input.results.filter((result) => result.status === 'sent').length;
|
|
221
|
+
const failed = input.results.filter((result) => result.status === 'failed').length;
|
|
222
|
+
const skipped = input.results.filter((result) => result.status === 'skipped').length;
|
|
223
|
+
const payload = {
|
|
224
|
+
status: input.dryRun ? 'dry_run' : 'completed',
|
|
225
|
+
dryRun: input.dryRun,
|
|
226
|
+
continueOnError: input.continueOnError,
|
|
227
|
+
totalTargets: input.totalTargets ?? input.results.length,
|
|
228
|
+
sent,
|
|
229
|
+
failed,
|
|
230
|
+
skipped,
|
|
231
|
+
results: input.results,
|
|
232
|
+
};
|
|
233
|
+
if (input.stoppedAfterFailure)
|
|
234
|
+
payload.stoppedAfterFailure = true;
|
|
235
|
+
return payload;
|
|
236
|
+
}
|
|
237
|
+
export async function executeResolvedUserWrites(input) {
|
|
238
|
+
const results = [...(input.initialResults ?? [])];
|
|
239
|
+
let stoppedAfterFailure = input.stoppedAfterFailure === true;
|
|
240
|
+
const dryRunStatus = input.dryRunStatus ?? 'would_send';
|
|
241
|
+
const interRequestDelayMs = input.interRequestDelayMs ?? DEFAULT_BULK_WRITE_DELAY_MS;
|
|
242
|
+
let writesAttempted = 0;
|
|
243
|
+
for (const target of input.targets) {
|
|
244
|
+
if (input.dryRun) {
|
|
245
|
+
results.push({
|
|
246
|
+
target: target.target,
|
|
247
|
+
userId: target.userId,
|
|
248
|
+
displayName: target.displayName,
|
|
249
|
+
status: dryRunStatus,
|
|
250
|
+
attempts: 0,
|
|
251
|
+
});
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
if (writesAttempted > 0) {
|
|
255
|
+
await sleep(interRequestDelayMs);
|
|
256
|
+
}
|
|
257
|
+
writesAttempted += 1;
|
|
258
|
+
try {
|
|
259
|
+
const { data, attempts } = await callWithRetry(() => input.send(target), input.retry);
|
|
260
|
+
const result = {
|
|
261
|
+
target: target.target,
|
|
262
|
+
userId: target.userId,
|
|
263
|
+
displayName: target.displayName,
|
|
264
|
+
status: 'sent',
|
|
265
|
+
attempts,
|
|
266
|
+
data,
|
|
267
|
+
};
|
|
268
|
+
const notification = asRecord(data);
|
|
269
|
+
if (notification)
|
|
270
|
+
result.notification = notification;
|
|
271
|
+
results.push(result);
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
results.push({
|
|
275
|
+
target: target.target,
|
|
276
|
+
userId: target.userId,
|
|
277
|
+
displayName: target.displayName,
|
|
278
|
+
status: 'failed',
|
|
279
|
+
error: errorMessage(err),
|
|
280
|
+
});
|
|
281
|
+
if (!input.continueOnError || shouldStopAfterError(err)) {
|
|
282
|
+
stoppedAfterFailure = true;
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return summarizeBulk({
|
|
288
|
+
dryRun: input.dryRun,
|
|
289
|
+
continueOnError: input.continueOnError,
|
|
290
|
+
results,
|
|
291
|
+
totalTargets: input.totalTargets,
|
|
292
|
+
stoppedAfterFailure,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
export async function executeBulkUserWrites(input) {
|
|
296
|
+
const resolution = await resolveUserTargets(input.targets, input.continueOnError);
|
|
297
|
+
return executeResolvedUserWrites({
|
|
298
|
+
targets: resolution.targets,
|
|
299
|
+
initialResults: resolution.results,
|
|
300
|
+
totalTargets: input.targets.length,
|
|
301
|
+
stoppedAfterFailure: resolution.stopped,
|
|
302
|
+
dryRun: input.dryRun,
|
|
303
|
+
continueOnError: input.continueOnError,
|
|
304
|
+
retry: input.retry,
|
|
305
|
+
send: input.send,
|
|
306
|
+
dryRunStatus: input.dryRunStatus,
|
|
307
|
+
interRequestDelayMs: input.interRequestDelayMs,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=bulk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk.js","sourceRoot":"","sources":["../../../../src/services/invites/bulk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { callOperation } from '../../core/client.js';
|
|
2
|
+
import { callReadOperationParsed, callWriteOperationParsed } from '../api/client.js';
|
|
3
|
+
import { checkGroupAllowed, resolveGroupId } from '../groups/index.js';
|
|
4
|
+
import { collectRequiredUserTargets, collectTargetInputs, executeBulkUserWrites, executeResolvedUserWrites, getContinueOnError, getDryRun, normalizeRetryOptions, resolveUserTargets, summarizeBulk, } from './bulk.js';
|
|
5
|
+
import { resolveInviteMessagePlan } from './messages.js';
|
|
2
6
|
export function resolveInviteLocation(args) {
|
|
3
7
|
if (args.location) {
|
|
4
8
|
const parts = args.location.split(':');
|
|
@@ -52,10 +56,11 @@ export async function sendUserInvite(userId, request) {
|
|
|
52
56
|
const result = await callWriteOperationParsed('inviteUser', { userId }, request);
|
|
53
57
|
return result.data ?? null;
|
|
54
58
|
}
|
|
55
|
-
|
|
59
|
+
async function resolveCurrentInviteContext() {
|
|
56
60
|
const currentResult = await callReadOperationParsed('getCurrentUser', {});
|
|
57
61
|
const currentUser = currentResult.data;
|
|
58
62
|
const location = typeof currentUser?.location === 'string' ? currentUser.location : '';
|
|
63
|
+
const userId = typeof currentUser?.id === 'string' ? currentUser.id : undefined;
|
|
59
64
|
if (!location?.includes(':')) {
|
|
60
65
|
throw new Error('Could not determine your current joinable instance from location. Join an instance first or provide instanceId/location explicitly via vrchat_invite_user.');
|
|
61
66
|
}
|
|
@@ -65,10 +70,14 @@ export async function resolveCurrentInviteLocation() {
|
|
|
65
70
|
if (!worldId || !instanceId) {
|
|
66
71
|
throw new Error('Current location is malformed; unable to extract worldId/instanceId. Use vrchat_invite_user with explicit instanceId/location.');
|
|
67
72
|
}
|
|
73
|
+
return { worldId, instanceId, location, userId };
|
|
74
|
+
}
|
|
75
|
+
export async function resolveCurrentInviteLocation() {
|
|
76
|
+
const current = await resolveCurrentInviteContext();
|
|
68
77
|
return {
|
|
69
|
-
worldId,
|
|
70
|
-
instanceId,
|
|
71
|
-
location,
|
|
78
|
+
worldId: current.worldId,
|
|
79
|
+
instanceId: current.instanceId,
|
|
80
|
+
location: current.location,
|
|
72
81
|
};
|
|
73
82
|
}
|
|
74
83
|
export async function inviteUserToCurrentInstance(input) {
|
|
@@ -87,4 +96,193 @@ export async function inviteUserToCurrentInstance(input) {
|
|
|
87
96
|
notification,
|
|
88
97
|
};
|
|
89
98
|
}
|
|
99
|
+
async function resolveInviteDestination(input) {
|
|
100
|
+
const hasHere = input.here === true;
|
|
101
|
+
const hasLocation = typeof input.location === 'string' && input.location.trim().length > 0;
|
|
102
|
+
const hasWorldId = typeof input.worldId === 'string' && input.worldId.trim().length > 0;
|
|
103
|
+
const hasInstanceId = typeof input.instanceId === 'string' && input.instanceId.trim().length > 0;
|
|
104
|
+
const styles = [hasHere, hasLocation, hasWorldId || hasInstanceId].filter(Boolean).length;
|
|
105
|
+
if (styles !== 1) {
|
|
106
|
+
throw new Error('Provide exactly one destination: here=true, location="wrld_:instance", worldId + instanceId, or bare instanceId for user invites.');
|
|
107
|
+
}
|
|
108
|
+
if (hasWorldId && !hasInstanceId) {
|
|
109
|
+
throw new Error('worldId requires instanceId.');
|
|
110
|
+
}
|
|
111
|
+
if (!hasWorldId && hasInstanceId) {
|
|
112
|
+
if (input.self) {
|
|
113
|
+
throw new Error('Self-invite requires a full destination because VRChat needs worldId and instanceId. Use here=true, location="wrld_:instance", or worldId + instanceId. Bare instanceId is only valid when inviting other users.');
|
|
114
|
+
}
|
|
115
|
+
return { destination: { kind: 'instance', instanceId: input.instanceId } };
|
|
116
|
+
}
|
|
117
|
+
if (hasWorldId && hasInstanceId) {
|
|
118
|
+
return {
|
|
119
|
+
destination: {
|
|
120
|
+
kind: 'world_instance',
|
|
121
|
+
worldId: input.worldId,
|
|
122
|
+
instanceId: input.instanceId,
|
|
123
|
+
location: `${input.worldId}:${input.instanceId}`,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
if (hasLocation) {
|
|
128
|
+
const location = input.location?.trim() ?? '';
|
|
129
|
+
if (!location.includes(':')) {
|
|
130
|
+
throw new Error('location must be a full VRChat location string like "wrld_:instance". Use instanceId for bare instance IDs.');
|
|
131
|
+
}
|
|
132
|
+
const parts = location.split(':');
|
|
133
|
+
const worldId = parts[0];
|
|
134
|
+
const instanceId = parts.slice(1).join(':');
|
|
135
|
+
if (!worldId || !instanceId) {
|
|
136
|
+
throw new Error('location must include both worldId and instanceId, like "wrld_:instance".');
|
|
137
|
+
}
|
|
138
|
+
return { destination: { kind: 'location', location, worldId, instanceId } };
|
|
139
|
+
}
|
|
140
|
+
const current = await resolveCurrentInviteContext();
|
|
141
|
+
return {
|
|
142
|
+
destination: {
|
|
143
|
+
kind: 'here',
|
|
144
|
+
location: current.location,
|
|
145
|
+
worldId: current.worldId,
|
|
146
|
+
instanceId: current.instanceId,
|
|
147
|
+
},
|
|
148
|
+
currentUserId: current.userId,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function inviteRequestForDestination(destination, messagePlan) {
|
|
152
|
+
if (!destination.instanceId) {
|
|
153
|
+
throw new Error('Unable to resolve invite instanceId.');
|
|
154
|
+
}
|
|
155
|
+
const request = { instanceId: destination.instanceId };
|
|
156
|
+
if (typeof messagePlan?.slot === 'number')
|
|
157
|
+
request.messageSlot = messagePlan.slot;
|
|
158
|
+
return request;
|
|
159
|
+
}
|
|
160
|
+
function assertSelfInviteDestination(destination) {
|
|
161
|
+
if (!destination.worldId || !destination.instanceId) {
|
|
162
|
+
throw new Error('Self-invite requires here=true, location="wrld_:instance", or worldId + instanceId.');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export async function inviteUsers(input) {
|
|
166
|
+
const dryRun = getDryRun(input);
|
|
167
|
+
const continueOnError = getContinueOnError(input);
|
|
168
|
+
const retry = normalizeRetryOptions(input);
|
|
169
|
+
const destinationContext = await resolveInviteDestination(input);
|
|
170
|
+
const { destination } = destinationContext;
|
|
171
|
+
const targetInputs = collectTargetInputs(input);
|
|
172
|
+
if (input.self) {
|
|
173
|
+
if (input.message || typeof input.overwriteMessageSlot === 'number') {
|
|
174
|
+
throw new Error('Self-invite cannot use message or overwriteMessageSlot.');
|
|
175
|
+
}
|
|
176
|
+
assertSelfInviteDestination(destination);
|
|
177
|
+
const result = {
|
|
178
|
+
target: 'self',
|
|
179
|
+
status: dryRun ? 'would_send' : 'sent',
|
|
180
|
+
attempts: dryRun ? 0 : 1,
|
|
181
|
+
};
|
|
182
|
+
if (!dryRun) {
|
|
183
|
+
const notification = await sendSelfInvite({
|
|
184
|
+
worldId: destination.worldId,
|
|
185
|
+
instanceId: destination.instanceId,
|
|
186
|
+
});
|
|
187
|
+
if (notification)
|
|
188
|
+
result.notification = notification;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
...summarizeBulk({ dryRun, continueOnError, results: [result] }),
|
|
192
|
+
destination,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
const resolution = await resolveUserTargets(targetInputs, continueOnError);
|
|
196
|
+
if (resolution.targets.length === 0) {
|
|
197
|
+
return {
|
|
198
|
+
...summarizeBulk({
|
|
199
|
+
dryRun,
|
|
200
|
+
continueOnError,
|
|
201
|
+
results: resolution.results,
|
|
202
|
+
totalTargets: targetInputs.length,
|
|
203
|
+
stoppedAfterFailure: resolution.stopped,
|
|
204
|
+
}),
|
|
205
|
+
destination,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const messagePlan = await resolveInviteMessagePlan(input, dryRun, destinationContext.currentUserId);
|
|
209
|
+
const request = inviteRequestForDestination(destination, messagePlan);
|
|
210
|
+
const summary = await executeResolvedUserWrites({
|
|
211
|
+
targets: resolution.targets,
|
|
212
|
+
initialResults: resolution.results,
|
|
213
|
+
totalTargets: targetInputs.length,
|
|
214
|
+
stoppedAfterFailure: resolution.stopped,
|
|
215
|
+
dryRun,
|
|
216
|
+
continueOnError,
|
|
217
|
+
retry,
|
|
218
|
+
send: (target) => sendUserInvite(target.userId, request),
|
|
219
|
+
});
|
|
220
|
+
return { ...summary, destination, message: messagePlan };
|
|
221
|
+
}
|
|
222
|
+
export async function inviteUsersToGroup(input) {
|
|
223
|
+
const resolved = await resolveGroupId({ groupId: input.groupId, shortCode: input.shortCode });
|
|
224
|
+
if (!resolved.ok)
|
|
225
|
+
throw new Error(resolved.reason);
|
|
226
|
+
const allowed = checkGroupAllowed(resolved.groupId);
|
|
227
|
+
if (!allowed.ok)
|
|
228
|
+
throw new Error(allowed.reason);
|
|
229
|
+
const dryRun = getDryRun(input);
|
|
230
|
+
const continueOnError = getContinueOnError(input);
|
|
231
|
+
const summary = await executeBulkUserWrites({
|
|
232
|
+
targets: collectRequiredUserTargets(input),
|
|
233
|
+
dryRun,
|
|
234
|
+
continueOnError,
|
|
235
|
+
retry: normalizeRetryOptions(input),
|
|
236
|
+
send: async (target) => {
|
|
237
|
+
const result = await callOperation({
|
|
238
|
+
operationId: 'createGroupInvite',
|
|
239
|
+
params: { groupId: resolved.groupId },
|
|
240
|
+
body: {
|
|
241
|
+
userId: target.userId,
|
|
242
|
+
confirmOverrideBlock: input.confirmOverrideBlock === true,
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
return result.data ?? null;
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
return { ...summary, groupId: resolved.groupId };
|
|
249
|
+
}
|
|
250
|
+
export async function sendFriendRequests(input) {
|
|
251
|
+
return executeBulkUserWrites({
|
|
252
|
+
targets: collectRequiredUserTargets(input),
|
|
253
|
+
dryRun: getDryRun(input),
|
|
254
|
+
continueOnError: getContinueOnError(input),
|
|
255
|
+
retry: normalizeRetryOptions(input),
|
|
256
|
+
send: async (target) => {
|
|
257
|
+
const result = await callOperation({
|
|
258
|
+
operationId: 'friend',
|
|
259
|
+
params: { userId: target.userId },
|
|
260
|
+
});
|
|
261
|
+
return result.data ?? null;
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
export async function sendBoops(input) {
|
|
266
|
+
return executeBulkUserWrites({
|
|
267
|
+
targets: collectRequiredUserTargets(input),
|
|
268
|
+
dryRun: getDryRun(input),
|
|
269
|
+
continueOnError: getContinueOnError(input),
|
|
270
|
+
retry: normalizeRetryOptions(input),
|
|
271
|
+
send: async (target) => {
|
|
272
|
+
const body = {};
|
|
273
|
+
if (input.emojiId)
|
|
274
|
+
body.emojiId = input.emojiId;
|
|
275
|
+
if (typeof input.emojiVersion === 'number')
|
|
276
|
+
body.emojiVersion = input.emojiVersion;
|
|
277
|
+
if (input.inventoryItemId)
|
|
278
|
+
body.inventoryItemId = input.inventoryItemId;
|
|
279
|
+
const result = await callOperation({
|
|
280
|
+
operationId: 'boop',
|
|
281
|
+
params: { userId: target.userId },
|
|
282
|
+
body,
|
|
283
|
+
});
|
|
284
|
+
return result.data ?? null;
|
|
285
|
+
},
|
|
286
|
+
});
|
|
287
|
+
}
|
|
90
288
|
//# sourceMappingURL=curated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curated.js","sourceRoot":"","sources":["../../../../src/services/invites/curated.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"curated.js","sourceRoot":"","sources":["../../../../src/services/invites/curated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { callOperation } from '../../core/client.js';
|
|
2
|
+
import { asRecord } from './bulk.js';
|
|
3
|
+
async function getCurrentUserId() {
|
|
4
|
+
const result = await callOperation({ operationId: 'getCurrentUser', params: {} });
|
|
5
|
+
const user = asRecord(result.data);
|
|
6
|
+
const userId = typeof user?.id === 'string' ? user.id : '';
|
|
7
|
+
if (!userId)
|
|
8
|
+
throw new Error('Unable to resolve current user id.');
|
|
9
|
+
return userId;
|
|
10
|
+
}
|
|
11
|
+
function inviteMessageRecords(data) {
|
|
12
|
+
return Array.isArray(data)
|
|
13
|
+
? data.map((entry) => asRecord(entry)).filter((entry) => Boolean(entry))
|
|
14
|
+
: [];
|
|
15
|
+
}
|
|
16
|
+
async function fetchInviteMessages(userId) {
|
|
17
|
+
const result = await callOperation({
|
|
18
|
+
operationId: 'getInviteMessages',
|
|
19
|
+
params: { userId, messageType: 'message' },
|
|
20
|
+
});
|
|
21
|
+
return inviteMessageRecords(result.data);
|
|
22
|
+
}
|
|
23
|
+
function findInviteMessageSlot(messages, message) {
|
|
24
|
+
const match = messages.find((entry) => entry.message === message && typeof entry.slot === 'number');
|
|
25
|
+
return typeof match?.slot === 'number' ? Math.floor(match.slot) : null;
|
|
26
|
+
}
|
|
27
|
+
function getMessageSlotRecord(messages, slot) {
|
|
28
|
+
return messages.find((entry) => entry.slot === slot) ?? null;
|
|
29
|
+
}
|
|
30
|
+
export async function resolveInviteMessagePlan(input, dryRun, currentUserId) {
|
|
31
|
+
const message = typeof input.message === 'string' ? input.message.trim() : '';
|
|
32
|
+
if (!message)
|
|
33
|
+
return undefined;
|
|
34
|
+
if (input.self) {
|
|
35
|
+
throw new Error('Self-invite cannot use invite messages because VRChat self-invite has no message slot body.');
|
|
36
|
+
}
|
|
37
|
+
const userId = currentUserId ?? await getCurrentUserId();
|
|
38
|
+
const messages = await fetchInviteMessages(userId);
|
|
39
|
+
const existingSlot = findInviteMessageSlot(messages, message);
|
|
40
|
+
if (existingSlot !== null) {
|
|
41
|
+
return { requested: message, slot: existingSlot, matchedExisting: true };
|
|
42
|
+
}
|
|
43
|
+
const overwriteSlot = input.overwriteMessageSlot;
|
|
44
|
+
if (typeof overwriteSlot !== 'number') {
|
|
45
|
+
throw new Error('No saved invite message exactly matches message. Provide overwriteMessageSlot (0-11) to update a saved invite message slot, then send using it. Updating a slot may be rate-limited by VRChat.');
|
|
46
|
+
}
|
|
47
|
+
const slotRecord = getMessageSlotRecord(messages, overwriteSlot);
|
|
48
|
+
const canBeUpdated = slotRecord?.canBeUpdated !== false;
|
|
49
|
+
const cooldown = typeof slotRecord?.remainingCooldownMinutes === 'number'
|
|
50
|
+
? Math.floor(slotRecord.remainingCooldownMinutes)
|
|
51
|
+
: 0;
|
|
52
|
+
if (!canBeUpdated || cooldown > 0) {
|
|
53
|
+
throw new Error(`Invite message slot ${overwriteSlot} cannot be updated right now. Remaining cooldown: ${cooldown} minute(s).`);
|
|
54
|
+
}
|
|
55
|
+
if (dryRun) {
|
|
56
|
+
return { requested: message, slot: overwriteSlot, wouldOverwriteSlot: overwriteSlot };
|
|
57
|
+
}
|
|
58
|
+
await callOperation({
|
|
59
|
+
operationId: 'updateInviteMessage',
|
|
60
|
+
params: { userId, messageType: 'message', slot: overwriteSlot },
|
|
61
|
+
body: { message },
|
|
62
|
+
});
|
|
63
|
+
return { requested: message, slot: overwriteSlot, overwrittenSlot: overwriteSlot };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/services/invites/messages.ts"],"names":[],"mappings":"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"}
|