@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,96 @@
|
|
|
1
|
+
import { getSpecIndex } from './spec.js';
|
|
2
|
+
import { getGeneratedOperationInfo, } from './generatedOperations.js';
|
|
3
|
+
function isRecord(value) {
|
|
4
|
+
return Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
5
|
+
}
|
|
6
|
+
function getText(value) {
|
|
7
|
+
return typeof value === 'string' && value.trim() ? value : undefined;
|
|
8
|
+
}
|
|
9
|
+
function resolveLocalRef(raw, ref) {
|
|
10
|
+
if (!ref.startsWith('#/'))
|
|
11
|
+
return undefined;
|
|
12
|
+
let current = raw;
|
|
13
|
+
for (const part of ref.slice(2).split('/')) {
|
|
14
|
+
if (!isRecord(current))
|
|
15
|
+
return undefined;
|
|
16
|
+
current = current[part.replace(/~1/g, '/').replace(/~0/g, '~')];
|
|
17
|
+
}
|
|
18
|
+
return current;
|
|
19
|
+
}
|
|
20
|
+
function schemaDetails(schema, raw) {
|
|
21
|
+
if (!isRecord(schema))
|
|
22
|
+
return schema === undefined ? {} : { schema };
|
|
23
|
+
const ref = typeof schema.$ref === 'string' ? schema.$ref : undefined;
|
|
24
|
+
if (!ref)
|
|
25
|
+
return { schema };
|
|
26
|
+
const resolved = resolveLocalRef(raw, ref);
|
|
27
|
+
return { schema: resolved ?? schema, schemaRef: ref };
|
|
28
|
+
}
|
|
29
|
+
function rawOperation(raw, op) {
|
|
30
|
+
if (!isRecord(raw))
|
|
31
|
+
return undefined;
|
|
32
|
+
const paths = raw.paths;
|
|
33
|
+
if (!isRecord(paths))
|
|
34
|
+
return undefined;
|
|
35
|
+
const pathItem = paths[op.path];
|
|
36
|
+
if (!isRecord(pathItem))
|
|
37
|
+
return undefined;
|
|
38
|
+
const methodEntry = pathItem[op.method.toLowerCase()];
|
|
39
|
+
return isRecord(methodEntry) ? methodEntry : undefined;
|
|
40
|
+
}
|
|
41
|
+
function resolveRequestBody(raw, requestBody) {
|
|
42
|
+
if (!isRecord(requestBody))
|
|
43
|
+
return undefined;
|
|
44
|
+
const ref = typeof requestBody.$ref === 'string' ? requestBody.$ref : undefined;
|
|
45
|
+
const resolved = ref ? resolveLocalRef(raw, ref) : requestBody;
|
|
46
|
+
return isRecord(resolved) ? resolved : requestBody;
|
|
47
|
+
}
|
|
48
|
+
function firstRequestBodySchema(body) {
|
|
49
|
+
const content = body?.content;
|
|
50
|
+
if (!isRecord(content))
|
|
51
|
+
return {};
|
|
52
|
+
const contentTypes = Object.keys(content);
|
|
53
|
+
const json = content['application/json'];
|
|
54
|
+
const selected = isRecord(json) ? json : contentTypes.map((type) => content[type]).find(isRecord);
|
|
55
|
+
return {
|
|
56
|
+
contentTypes,
|
|
57
|
+
schema: isRecord(selected) ? selected.schema : undefined,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function buildRequestBodyDetails(input) {
|
|
61
|
+
if (!input.op.hasRequestBody)
|
|
62
|
+
return undefined;
|
|
63
|
+
const body = resolveRequestBody(input.raw, input.rawOp?.requestBody);
|
|
64
|
+
const { contentTypes, schema } = firstRequestBodySchema(body);
|
|
65
|
+
return {
|
|
66
|
+
required: Boolean(input.op.requestBodyRequired),
|
|
67
|
+
description: getText(body?.description) ?? input.op.requestBodyDescription,
|
|
68
|
+
contentTypes,
|
|
69
|
+
...schemaDetails(schema ?? input.op.requestBodySchema, input.raw),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export async function getOperationDetails(operationId) {
|
|
73
|
+
const index = await getSpecIndex();
|
|
74
|
+
const op = index.operations.get(operationId);
|
|
75
|
+
if (!op)
|
|
76
|
+
throw new Error(`Unknown operationId: ${operationId}`);
|
|
77
|
+
const rawOp = rawOperation(index.raw, op);
|
|
78
|
+
const generatedToolInfo = getGeneratedOperationInfo(op);
|
|
79
|
+
return {
|
|
80
|
+
operationId,
|
|
81
|
+
method: op.method,
|
|
82
|
+
path: op.path,
|
|
83
|
+
summary: getText(rawOp?.summary),
|
|
84
|
+
description: getText(rawOp?.description),
|
|
85
|
+
...generatedToolInfo,
|
|
86
|
+
parameters: op.parameters.map((param) => ({
|
|
87
|
+
name: param.name,
|
|
88
|
+
in: param.in,
|
|
89
|
+
required: param.required,
|
|
90
|
+
description: param.description,
|
|
91
|
+
...schemaDetails(param.schema, index.raw),
|
|
92
|
+
})),
|
|
93
|
+
requestBody: buildRequestBodyDetails({ raw: index.raw, op, rawOp }),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=operationDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationDetails.js","sourceRoot":"","sources":["../../../src/core/operationDetails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const CONTENT_MANAGEMENT_OPERATION_IDS = [
|
|
2
|
+
'createAvatar',
|
|
3
|
+
'updateAvatar',
|
|
4
|
+
'deleteAvatar',
|
|
5
|
+
'createWorld',
|
|
6
|
+
'updateWorld',
|
|
7
|
+
'deleteWorld',
|
|
8
|
+
'publishWorld',
|
|
9
|
+
'unpublishWorld',
|
|
10
|
+
];
|
|
11
|
+
const BLOCKED_OPERATION_REASONS = new Map([
|
|
12
|
+
[
|
|
13
|
+
'getGroupAnnouncements',
|
|
14
|
+
'group announcement endpoints are deprecated and unsafe.',
|
|
15
|
+
],
|
|
16
|
+
[
|
|
17
|
+
'createGroupAnnouncement',
|
|
18
|
+
'group announcement endpoints are deprecated and unsafe.',
|
|
19
|
+
],
|
|
20
|
+
[
|
|
21
|
+
'deleteGroupAnnouncement',
|
|
22
|
+
'group announcement endpoints are deprecated and unsafe.',
|
|
23
|
+
],
|
|
24
|
+
...CONTENT_MANAGEMENT_OPERATION_IDS.map((operationId) => [
|
|
25
|
+
operationId,
|
|
26
|
+
'avatar/world content-management endpoints are disabled by policy. Use ordinary view/select/favorite tools instead.',
|
|
27
|
+
]),
|
|
28
|
+
]);
|
|
29
|
+
export function getBlockedOperationReason(operationId) {
|
|
30
|
+
return BLOCKED_OPERATION_REASONS.get(operationId);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=operationPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationPolicy.js","sourceRoot":"","sources":["../../../src/core/operationPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,cAAc;IACd,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,gBAAgB;CACR,CAAC;AAEX,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAiB;IACxD;QACE,uBAAuB;QACvB,yDAAyD;KAC1D;IACD;QACE,yBAAyB;QACzB,yDAAyD;KAC1D;IACD;QACE,yBAAyB;QACzB,yDAAyD;KAC1D;IACD,GAAG,gCAAgC,CAAC,GAAG,CACrC,CAAC,WAAW,EAAE,EAAE,CACd;QACE,WAAW;QACX,oHAAoH;KAC5G,CACb;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,yBAAyB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,93 +1,47 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { getConfig } from '../config/index.js';
|
|
3
|
-
import { getSpecIndex } from './spec.js';
|
|
4
2
|
import { callReadOperation } from './readTools.js';
|
|
5
3
|
import { CallError } from './client.js';
|
|
6
|
-
import {
|
|
7
|
-
import { readToolName } from '../utils/toolNames.js';
|
|
4
|
+
import { toolName } from '../utils/toolNames.js';
|
|
8
5
|
import { toolError } from '../utils/toolResponses.js';
|
|
9
6
|
import { readOnlyToolAnnotations } from '../utils/toolAnnotations.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
function buildGeneratedReadToolDescription(operationId, op) {
|
|
13
|
-
const summary = op?.summary ?? op?.description ?? '';
|
|
14
|
-
const summaryLine = String(summary).split('\n')[0].trim();
|
|
15
|
-
const curated = getCuratedReadToolName(operationId);
|
|
16
|
-
const override = getGeneratedReadToolDescription(operationId);
|
|
17
|
-
if (override)
|
|
18
|
-
return override;
|
|
19
|
-
const fallback = summaryLine
|
|
20
|
-
? `Auto-generated read tool. ${summaryLine}`
|
|
21
|
-
: `Auto-generated read tool for ${operationId}.`;
|
|
22
|
-
if (curated)
|
|
23
|
-
return `${fallback} Prefer curated tool: ${curated}.`;
|
|
24
|
-
return `${fallback} Prefer curated tools when available.`;
|
|
25
|
-
}
|
|
26
|
-
function buildGeneratedReadToolInputSchema(input) {
|
|
27
|
-
const opDef = input.index.operations.get(input.operationId);
|
|
28
|
-
const paramsInfo = buildParamsSchema(opDef?.parameters ?? [], input.componentsSchemas, {
|
|
29
|
-
aliasNumberForN: true,
|
|
30
|
-
});
|
|
31
|
-
const shape = {};
|
|
32
|
-
if (paramsInfo.schema) {
|
|
33
|
-
shape.params = paramsInfo.required ? paramsInfo.schema : paramsInfo.schema.optional();
|
|
34
|
-
}
|
|
35
|
-
return z.object(shape).merge(input.readOptionsSchema).passthrough();
|
|
36
|
-
}
|
|
7
|
+
import { getAvailableGeneratedOperationIds } from './generatedOperations.js';
|
|
8
|
+
import { GeneratedReadToolInputSchema } from '../schemas/read.js';
|
|
37
9
|
export async function registerGeneratedReadTools(server, options) {
|
|
38
10
|
const config = getConfig();
|
|
39
|
-
if (config.generatedReadTools.
|
|
11
|
+
if (!config.generatedReadTools.enabled)
|
|
40
12
|
return 0;
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
readOptionsSchema: options.readOptionsSchema,
|
|
63
|
-
});
|
|
64
|
-
server.registerTool(toolName, {
|
|
65
|
-
description,
|
|
66
|
-
inputSchema,
|
|
67
|
-
outputSchema: options.readOutputSchema,
|
|
68
|
-
annotations: readOnlyToolAnnotations,
|
|
69
|
-
}, async (args) => {
|
|
70
|
-
try {
|
|
71
|
-
const { params = {}, fields, compact, maxArrayLength, includeMeta } = args ?? {};
|
|
72
|
-
const result = await callReadOperation(operationId, params, {
|
|
73
|
-
fields,
|
|
74
|
-
compact,
|
|
75
|
-
maxArrayLength,
|
|
76
|
-
includeMeta,
|
|
77
|
-
});
|
|
78
|
-
return options.respond(result, includeMeta);
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
if (err instanceof CallError && err.payload) {
|
|
82
|
-
return toolError(err.message, err.payload);
|
|
83
|
-
}
|
|
84
|
-
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
85
|
-
return toolError(message);
|
|
86
|
-
}
|
|
13
|
+
const availableOperationIds = await getAvailableGeneratedOperationIds('read');
|
|
14
|
+
if (availableOperationIds.size === 0)
|
|
15
|
+
return 0;
|
|
16
|
+
const inputSchema = GeneratedReadToolInputSchema;
|
|
17
|
+
server.registerTool(toolName('vrchat.read'), {
|
|
18
|
+
description: 'Call an available generated VRChat GET operation by operationId. Use vrchat_operations and vrchat_operation_details to discover params.',
|
|
19
|
+
inputSchema,
|
|
20
|
+
outputSchema: options.readOutputSchema,
|
|
21
|
+
annotations: readOnlyToolAnnotations,
|
|
22
|
+
}, async (args) => {
|
|
23
|
+
try {
|
|
24
|
+
const { operationId, params = {}, fields, compact, maxArrayLength, includeMeta, page } = inputSchema.parse(args ?? {});
|
|
25
|
+
if (!availableOperationIds.has(operationId)) {
|
|
26
|
+
return toolError(`Generated read operation ${operationId} is not available. Use vrchat_operation_details for status.`);
|
|
27
|
+
}
|
|
28
|
+
const result = await callReadOperation(operationId, params, {
|
|
29
|
+
fields,
|
|
30
|
+
compact,
|
|
31
|
+
maxArrayLength,
|
|
32
|
+
includeMeta,
|
|
33
|
+
page,
|
|
87
34
|
});
|
|
88
|
-
|
|
35
|
+
return options.respond(result, includeMeta);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (err instanceof CallError && err.payload) {
|
|
39
|
+
return toolError(err.message, err.payload);
|
|
40
|
+
}
|
|
41
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
42
|
+
return toolError(message);
|
|
89
43
|
}
|
|
90
|
-
}
|
|
91
|
-
return
|
|
44
|
+
});
|
|
45
|
+
return 1;
|
|
92
46
|
}
|
|
93
47
|
//# sourceMappingURL=readToolRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readToolRegistry.js","sourceRoot":"","sources":["../../../src/core/readToolRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readToolRegistry.js","sourceRoot":"","sources":["../../../src/core/readToolRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAUlE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAiB,EACjB,OAIC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACjD,MAAM,qBAAqB,GAAG,MAAM,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,4BAA4B,CAAC;IAEjD,MAAM,CAAC,YAAY,CACjB,QAAQ,CAAC,aAAa,CAAC,EACvB;QACE,WAAW,EACT,yIAAyI;QAC3I,WAAW;QACX,YAAY,EAAE,OAAO,CAAC,gBAAgB;QACtC,WAAW,EAAE,uBAAuB;KACrC,EACD,KAAK,EAAE,IAAa,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,GACpF,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAChC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,OAAO,SAAS,CACd,4BAA4B,WAAW,6DAA6D,CACrG,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE;gBAC1D,MAAM;gBACN,OAAO;gBACP,cAAc;gBACd,WAAW;gBACX,IAAI;aACL,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACrE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1,112 +1,70 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
1
|
import { getConfig } from '../config/index.js';
|
|
3
|
-
import { getSpecIndex } from './spec.js';
|
|
4
2
|
import { callOperation, CallError } from './client.js';
|
|
5
|
-
import {
|
|
6
|
-
import { writeToolName } from '../utils/toolNames.js';
|
|
3
|
+
import { toolName } from '../utils/toolNames.js';
|
|
7
4
|
import { toolError } from '../utils/toolResponses.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (curated)
|
|
41
|
-
return `${fallback} Prefer curated tool: ${curated}.`;
|
|
42
|
-
return `${fallback} Prefer curated tools when available.`;
|
|
43
|
-
}
|
|
44
|
-
function buildGeneratedWriteToolInputSchema(input) {
|
|
45
|
-
const opDef = input.index.operations.get(input.operationId);
|
|
46
|
-
const paramsInfo = buildParamsSchema(opDef?.parameters ?? [], input.componentsSchemas);
|
|
47
|
-
const bodyInfo = buildRequestBodySchema(opDef, input.componentsSchemas);
|
|
48
|
-
const shape = {};
|
|
49
|
-
if (paramsInfo.schema) {
|
|
50
|
-
shape.params = paramsInfo.required ? paramsInfo.schema : paramsInfo.schema.optional();
|
|
51
|
-
}
|
|
52
|
-
if (bodyInfo.schema) {
|
|
53
|
-
shape.body = bodyInfo.required ? bodyInfo.schema : bodyInfo.schema.optional();
|
|
54
|
-
}
|
|
55
|
-
return z.object(shape).merge(input.writeOptionsSchema).passthrough();
|
|
5
|
+
import { destructiveToolAnnotations, writeToolAnnotations } from '../utils/toolAnnotations.js';
|
|
6
|
+
import { getAvailableGeneratedOperationIds } from './generatedOperations.js';
|
|
7
|
+
import { GeneratedWriteToolInputSchema } from '../schemas/write.js';
|
|
8
|
+
function registerGeneratedWriteRouter(input) {
|
|
9
|
+
const inputSchema = GeneratedWriteToolInputSchema;
|
|
10
|
+
input.server.registerTool(input.toolNameValue, {
|
|
11
|
+
description: input.description,
|
|
12
|
+
inputSchema,
|
|
13
|
+
outputSchema: input.outputSchema,
|
|
14
|
+
annotations: input.destructive ? destructiveToolAnnotations : writeToolAnnotations,
|
|
15
|
+
}, async (args) => {
|
|
16
|
+
try {
|
|
17
|
+
const { operationId, params = {}, body, options: callOptions, includeMeta, } = inputSchema.parse(args ?? {});
|
|
18
|
+
if (!input.availableOperationIds.has(operationId)) {
|
|
19
|
+
return toolError(`Generated operation ${operationId} is not available through ${input.toolNameValue}. Use vrchat_operation_details for status.`);
|
|
20
|
+
}
|
|
21
|
+
const result = await callOperation({
|
|
22
|
+
operationId,
|
|
23
|
+
params,
|
|
24
|
+
body,
|
|
25
|
+
options: callOptions,
|
|
26
|
+
});
|
|
27
|
+
return input.respond(result, includeMeta);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
if (err instanceof CallError && err.payload) {
|
|
31
|
+
return toolError(err.message, err.payload);
|
|
32
|
+
}
|
|
33
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
34
|
+
return toolError(message);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
56
37
|
}
|
|
57
38
|
export async function registerGeneratedWriteTools(server, options) {
|
|
58
39
|
const config = getConfig();
|
|
59
|
-
if (config.generatedWriteTools.
|
|
40
|
+
if (!config.generatedWriteTools.enabled)
|
|
60
41
|
return 0;
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const spec = index.raw;
|
|
64
|
-
const paths = spec?.paths ?? {};
|
|
65
|
-
const componentsSchemas = spec?.components?.schemas;
|
|
42
|
+
const availableWriteOperationIds = await getAvailableGeneratedOperationIds('write');
|
|
43
|
+
const availableDeleteOperationIds = await getAvailableGeneratedOperationIds('delete');
|
|
66
44
|
let count = 0;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const input = (args ?? {});
|
|
91
|
-
const { params = {}, body, options: callOptions, includeMeta } = input;
|
|
92
|
-
const result = await callOperation({
|
|
93
|
-
operationId,
|
|
94
|
-
params,
|
|
95
|
-
body,
|
|
96
|
-
options: callOptions,
|
|
97
|
-
});
|
|
98
|
-
return options.respond(result, includeMeta);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
if (err instanceof CallError && err.payload) {
|
|
102
|
-
return toolError(err.message, err.payload);
|
|
103
|
-
}
|
|
104
|
-
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
105
|
-
return toolError(message);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
count += 1;
|
|
109
|
-
}
|
|
45
|
+
if (availableWriteOperationIds.size > 0) {
|
|
46
|
+
registerGeneratedWriteRouter({
|
|
47
|
+
server,
|
|
48
|
+
toolNameValue: toolName('vrchat.write'),
|
|
49
|
+
description: 'Call an available generated VRChat POST/PUT/PATCH operation by operationId. Use vrchat_operations and vrchat_operation_details to discover params/body.',
|
|
50
|
+
availableOperationIds: availableWriteOperationIds,
|
|
51
|
+
outputSchema: options.writeOutputSchema,
|
|
52
|
+
respond: options.respond,
|
|
53
|
+
destructive: false,
|
|
54
|
+
});
|
|
55
|
+
count += 1;
|
|
56
|
+
}
|
|
57
|
+
if (availableDeleteOperationIds.size > 0) {
|
|
58
|
+
registerGeneratedWriteRouter({
|
|
59
|
+
server,
|
|
60
|
+
toolNameValue: toolName('vrchat.delete'),
|
|
61
|
+
description: 'Call an available generated VRChat DELETE operation by operationId. Use vrchat_operations and vrchat_operation_details to discover params/body.',
|
|
62
|
+
availableOperationIds: availableDeleteOperationIds,
|
|
63
|
+
outputSchema: options.writeOutputSchema,
|
|
64
|
+
respond: options.respond,
|
|
65
|
+
destructive: true,
|
|
66
|
+
});
|
|
67
|
+
count += 1;
|
|
110
68
|
}
|
|
111
69
|
return count;
|
|
112
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeToolRegistry.js","sourceRoot":"","sources":["../../../src/core/writeToolRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writeToolRegistry.js","sourceRoot":"","sources":["../../../src/core/writeToolRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { schemas } from '../generated/vrchat-schemas.js';
|
|
3
|
+
import { ApiObjectSchema } from './common.js';
|
|
3
4
|
export const AvatarShapeSchema = z.object({
|
|
4
5
|
fields: z.array(z.string()).optional(),
|
|
5
6
|
compact: z.boolean().optional(),
|
|
@@ -11,7 +12,7 @@ export const AvatarProfileInputSchema = AvatarShapeSchema.extend({
|
|
|
11
12
|
export const AvatarProfileOutputSchema = z.object({
|
|
12
13
|
avatarId: schemas.AvatarID,
|
|
13
14
|
stale: z.boolean(),
|
|
14
|
-
avatar:
|
|
15
|
+
avatar: ApiObjectSchema,
|
|
15
16
|
vrcxMemo: z
|
|
16
17
|
.object({
|
|
17
18
|
editedAt: z.string().nullable(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatars.js","sourceRoot":"","sources":["../../../src/models/avatars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"avatars.js","sourceRoot":"","sources":["../../../src/models/avatars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAC/D,QAAQ,EAAE,OAAO,CAAC,QAAQ;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/models/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { schemas } from '../generated/vrchat-schemas.js';
|
|
3
|
+
import { ApiObjectSchema } from './common.js';
|
|
3
4
|
export const EventListShapeSchema = z.object({
|
|
4
5
|
fields: z.array(z.string()).optional(),
|
|
5
6
|
compact: z.boolean().optional(),
|
|
@@ -32,7 +33,7 @@ export const EventsUpcomingOutputSchema = z.object({
|
|
|
32
33
|
date: z.string(),
|
|
33
34
|
page: EventsPageSchema.optional(),
|
|
34
35
|
})),
|
|
35
|
-
events: z.array(
|
|
36
|
+
events: z.array(ApiObjectSchema),
|
|
36
37
|
});
|
|
37
38
|
export const EventsSearchInputSchema = EventListShapeSchema.extend({
|
|
38
39
|
searchTerm: z.string(),
|
|
@@ -49,7 +50,7 @@ export const EventsSearchOutputSchema = z.object({
|
|
|
49
50
|
totalEvents: z.number().int().min(0),
|
|
50
51
|
truncated: z.boolean(),
|
|
51
52
|
page: EventsPageSchema.optional(),
|
|
52
|
-
events: z.array(
|
|
53
|
+
events: z.array(ApiObjectSchema),
|
|
53
54
|
});
|
|
54
55
|
export const EventsDiscoverInputSchema = EventListShapeSchema.extend({
|
|
55
56
|
scope: schemas.CalendarEventDiscoveryScope.optional(),
|
|
@@ -82,7 +83,7 @@ export const EventsDiscoverOutputSchema = z.object({
|
|
|
82
83
|
truncated: z.boolean(),
|
|
83
84
|
nextCursor: z.string().optional(),
|
|
84
85
|
page: EventsCursorPageSchema,
|
|
85
|
-
events: z.array(
|
|
86
|
+
events: z.array(ApiObjectSchema),
|
|
86
87
|
});
|
|
87
88
|
export const CalendarEventCreateSchema = schemas.CreateCalendarEventRequest.extend({
|
|
88
89
|
groupId: schemas.GroupID,
|
|
@@ -101,6 +102,9 @@ export const CalendarEventUpdateSchema = schemas.UpdateCalendarEventRequest.exte
|
|
|
101
102
|
export const CalendarEventDeleteSchema = z.object({
|
|
102
103
|
groupId: schemas.GroupID,
|
|
103
104
|
calendarId: schemas.CalendarID,
|
|
105
|
+
targetKind: z
|
|
106
|
+
.enum(['single_event', 'occurrence', 'series'])
|
|
107
|
+
.describe('Required safety check. Use single_event for a non-recurring event, occurrence for a generated recurring occurrence, or series for the recurring parent series.'),
|
|
104
108
|
});
|
|
105
109
|
export const CalendarEventFollowSchema = z.object({
|
|
106
110
|
groupId: schemas.GroupID,
|
|
@@ -109,7 +113,7 @@ export const CalendarEventFollowSchema = z.object({
|
|
|
109
113
|
});
|
|
110
114
|
export const CalendarEventWriteOutputSchema = z.object({
|
|
111
115
|
status: z.enum(['created', 'updated', 'deleted', 'followed', 'unfollowed']),
|
|
112
|
-
event:
|
|
116
|
+
event: ApiObjectSchema.nullable().optional(),
|
|
113
117
|
result: schemas.Success.nullable().optional(),
|
|
114
118
|
});
|
|
115
119
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/models/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/models/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;KAClC,CAAC,CACH;IACD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACjE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACnE,KAAK,EAAE,OAAO,CAAC,2BAA2B,CAAC,QAAQ,EAAE;IACrD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IAC7D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAO,CAAC,+BAA+B,CAAC,QAAQ,EAAE;IACnE,kBAAkB,EAAE,OAAO,CAAC,+BAA+B,CAAC,QAAQ,EAAE;IACtE,mBAAmB,EAAE,OAAO,CAAC,+BAA+B,CAAC,QAAQ,EAAE;IACvE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,OAAO,CAAC,2BAA2B,CAAC,QAAQ,EAAE;IACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,sBAAsB;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC;IACjF,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,UAAU,EAAE,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,UAAU;SAC5D,QAAQ,EAAE;SACV,OAAO,CAAC,OAAO,CAAC;IACnB,wBAAwB,EACtB,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,wBAAwB;SAC9D,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC;IACjF,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,wBAAwB,EACtB,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,wBAAwB,CAAC,QAAQ,EAAE;CAC/E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC9C,QAAQ,CACP,gKAAgK,CACjK;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC3E,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
|