@el4cteo/rbx-studio-mcp 0.7.6 → 0.7.8
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/dist/bridge/harness.js +6 -2
- package/dist/bridge/harness.js.map +1 -1
- package/dist/bridge/remote.js +26 -5
- package/dist/bridge/remote.js.map +1 -1
- package/dist/bridge/rpc.js +66 -10
- package/dist/bridge/rpc.js.map +1 -1
- package/dist/bridge/server.js +28 -8
- package/dist/bridge/server.js.map +1 -1
- package/dist/lib/credentials.js +8 -3
- package/dist/lib/credentials.js.map +1 -1
- package/dist/lib/opencloud.js +3 -1
- package/dist/lib/opencloud.js.map +1 -1
- package/dist/tools/perf.js +35 -13
- package/dist/tools/perf.js.map +1 -1
- package/dist/tools/playtest.js +34 -13
- package/dist/tools/playtest.js.map +1 -1
- package/package.json +1 -1
- package/plugin/src/ClientRelay.luau +128 -1
- package/plugin/src/Config.luau +1 -1
- package/plugin/src/LogBuffer.luau +356 -277
- package/plugin/src/Net.luau +1 -1
- package/plugin/src/Transport.luau +65 -12
- package/plugin/src/handlers/Perf.luau +913 -889
- package/plugin/src/handlers/Playtest.luau +6 -1
- package/plugin/src/init.server.luau +3 -0
- package/scripts/test-bridge.mjs +81 -3
- package/scripts/test-live.mjs +106 -1
- package/scripts/test-plugin.mjs +2 -0
- package/scripts/test-tools.mjs +55 -1
package/dist/lib/credentials.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
1
|
+
import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
/**
|
|
@@ -43,11 +43,15 @@ async function writeStored(next) {
|
|
|
43
43
|
* Worth doing anyway: this server runs on macOS and Linux too, where a
|
|
44
44
|
* world-readable key in a home directory is a real exposure.
|
|
45
45
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
// Written beside the real file and renamed over it, so a crash mid-write
|
|
47
|
+
// cannot leave a truncated file that reads back as "nothing stored".
|
|
48
|
+
const staging = `${FILE}.${process.pid}.tmp`;
|
|
49
|
+
await writeFile(staging, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
|
|
50
|
+
await chmod(staging, 0o600).catch(() => {
|
|
48
51
|
// Best effort: a filesystem that does not do permissions is not a reason to
|
|
49
52
|
// refuse to save.
|
|
50
53
|
});
|
|
54
|
+
await rename(staging, FILE);
|
|
51
55
|
}
|
|
52
56
|
/**
|
|
53
57
|
* The credentials to upload with, or null when the setup is incomplete.
|
|
@@ -158,6 +162,7 @@ export async function testCredentials(apiKey) {
|
|
|
158
162
|
try {
|
|
159
163
|
response = await fetch("https://apis.roblox.com/assets/v1/operations/0", {
|
|
160
164
|
headers: { "x-api-key": apiKey },
|
|
165
|
+
signal: AbortSignal.timeout(15_000),
|
|
161
166
|
});
|
|
162
167
|
}
|
|
163
168
|
catch (cause) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/opencloud.js
CHANGED
|
@@ -41,7 +41,9 @@ export async function requireCredentials() {
|
|
|
41
41
|
*/
|
|
42
42
|
export async function universeForPlace(placeId) {
|
|
43
43
|
try {
|
|
44
|
-
const response = await fetch(`${BASE}/universes/v1/places/${encodeURIComponent(placeId)}/universe
|
|
44
|
+
const response = await fetch(`${BASE}/universes/v1/places/${encodeURIComponent(placeId)}/universe`,
|
|
45
|
+
// Best effort, so it must not be able to hang the call that asked.
|
|
46
|
+
{ signal: AbortSignal.timeout(10_000) });
|
|
45
47
|
if (!response.ok)
|
|
46
48
|
return null;
|
|
47
49
|
const body = (await response.json());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencloud.js","sourceRoot":"","sources":["../../src/lib/opencloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,IAAI,GAAG,yBAAyB,CAAC;AAwCvC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjC,MAAM,IAAI,SAAS,CACjB,gBAAgB,EAChB,sDAAsD,EACtD,yEAAyE;QACvE,0EAA0E;QAC1E,+BAA+B,CAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,IAAI,wBAAwB,kBAAkB,CAAC,OAAO,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"opencloud.js","sourceRoot":"","sources":["../../src/lib/opencloud.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/perf.js
CHANGED
|
@@ -26,11 +26,16 @@ export function registerPerfTools(context) {
|
|
|
26
26
|
defineTool(context, {
|
|
27
27
|
name: "console",
|
|
28
28
|
title: "Read Studio output",
|
|
29
|
-
description: "Reads
|
|
29
|
+
description: "Reads Studio or playtest client output — prints, warnings and runtime errors, " +
|
|
30
30
|
"newest last.\n\n" +
|
|
31
31
|
"This is how to find out what actually happened after a playtest or an " +
|
|
32
32
|
"`execute_luau` call. An error here usually names the script and line, " +
|
|
33
33
|
"which `script_read` can then open directly.\n\n" +
|
|
34
|
+
"Use `target=\"client\"` with the playtest server studioId to read continuously " +
|
|
35
|
+
"captured client output. In multiplayer, select a player by name. " +
|
|
36
|
+
"Pass the returned `nextCursor` as `since` to read only newer lines; " +
|
|
37
|
+
"cursors belong to one session and player. Evicted or limit-skipped lines " +
|
|
38
|
+
"are reported.\n\n" +
|
|
34
39
|
"Filter with `level` to see only errors, or `pattern` to follow one " +
|
|
35
40
|
"subsystem's logging. Up to 2000 lines are held, so prefer a filter over " +
|
|
36
41
|
"a large `limit`.\n\n" +
|
|
@@ -38,12 +43,9 @@ export function registerPerfTools(context) {
|
|
|
38
43
|
"plugin loaded — the editor session and a running playtest server do not " +
|
|
39
44
|
"share one. To read what a playtest printed, target the playtest's " +
|
|
40
45
|
"studioId (see `list_studios`); the editor's log will not have it. " +
|
|
41
|
-
"Nothing printed before the plugin loaded is recoverable
|
|
42
|
-
"the playtest *client* is not reachable at all, because Studio forbids " +
|
|
43
|
-
"client sessions from making HTTP requests." +
|
|
46
|
+
"Nothing printed before the plugin or client relay loaded is recoverable." +
|
|
44
47
|
"\n\n" +
|
|
45
|
-
"A quiet log is not proof nothing was said.
|
|
46
|
-
"printed is never here. Messages Studio itself emits — the ones the " +
|
|
48
|
+
"A quiet log is not proof nothing was said. Messages Studio itself emits — the ones the " +
|
|
47
49
|
"Output window attributes to \"Studio\" rather than to a script — are " +
|
|
48
50
|
"inconsistent, and they arrive in the session that RAISED them, which is " +
|
|
49
51
|
"not always the one you are looking at: the warning that a Script with a " +
|
|
@@ -54,6 +56,9 @@ export function registerPerfTools(context) {
|
|
|
54
56
|
"explains, check the Output window yourself, or ask the user what it " +
|
|
55
57
|
"says.",
|
|
56
58
|
inputSchema: {
|
|
59
|
+
target: z.enum(["studio", "client"]).default("studio").describe("Output source; client requires a running playtest server studioId."),
|
|
60
|
+
player: z.string().optional().describe("Client only: player name, required when multiple players are present."),
|
|
61
|
+
since: z.string().optional().describe("Opaque nextCursor from a previous console response; return only newer matching lines."),
|
|
57
62
|
level: z
|
|
58
63
|
.enum(["print", "info", "warning", "error"])
|
|
59
64
|
.optional()
|
|
@@ -68,28 +73,32 @@ export function registerPerfTools(context) {
|
|
|
68
73
|
},
|
|
69
74
|
readOnly: true,
|
|
70
75
|
}, async (args) => {
|
|
71
|
-
const response = await bridge.call("perf.console", { level: args.level, pattern: args.pattern, limit: args.limit }, { studioId: args.studioId });
|
|
76
|
+
const response = await bridge.call("perf.console", { level: args.level, pattern: args.pattern, limit: args.limit, target: args.target, player: args.player, since: args.since }, { studioId: args.studioId });
|
|
72
77
|
if (response.items.length === 0) {
|
|
73
78
|
// "Empty" on its own is ambiguous, and the ambiguity is the whole
|
|
74
79
|
// problem: in a playtest the plugin starts recording at the same moment
|
|
75
80
|
// the place's own scripts run, so anything logged during startup can be
|
|
76
81
|
// missed. Saying how long the window has been open lets the reader tell
|
|
77
82
|
// "nothing was logged" from "recording started after the event".
|
|
78
|
-
const window = response.recordingSeconds !== undefined
|
|
83
|
+
const window = !args.since && response.recordingSeconds !== undefined
|
|
79
84
|
? ` This session has been recording for ${response.recordingSeconds}s, ` +
|
|
80
85
|
"since its plugin loaded; anything logged before that is not recoverable."
|
|
81
86
|
: "";
|
|
82
87
|
return text((args.level || args.pattern
|
|
83
88
|
? "No output matched. Try dropping the filter, or run a playtest first."
|
|
84
|
-
: "Nothing has been logged in this session.") + window
|
|
89
|
+
: args.since ? "No newer output matched." : "Nothing has been logged in this session.") + window +
|
|
90
|
+
(args.target === "client" && response.capturing === false ? " The client diagnostic relay is still connecting." : "") +
|
|
91
|
+
(response.evicted ? ` ${response.evicted} older lines were evicted.` : "") +
|
|
92
|
+
`\n[nextCursor: ${response.nextCursor}]`);
|
|
85
93
|
}
|
|
86
94
|
// An error's stack trace is indented under it rather than given its own
|
|
87
95
|
// line, so the association survives being skimmed and the trace does not
|
|
88
96
|
// read as further unrelated output.
|
|
89
|
-
|
|
90
|
-
const
|
|
97
|
+
let lines = response.items.map((entry) => {
|
|
98
|
+
const when = args.target === "client" && entry.timestamp ? ` ${new Date(entry.timestamp * 1000).toISOString()}` : "";
|
|
99
|
+
const head = `[${entry.level}${when}] ${entry.message}`;
|
|
91
100
|
if (!entry.stack)
|
|
92
|
-
return head;
|
|
101
|
+
return head + (entry.source ? `\n in ${entry.source}` : "");
|
|
93
102
|
const trace = entry.stack
|
|
94
103
|
.split("\n")
|
|
95
104
|
.map((line) => line.trim())
|
|
@@ -100,6 +109,19 @@ export function registerPerfTools(context) {
|
|
|
100
109
|
return trace ? `${head}${origin}\n${trace}` : `${head}${origin}`;
|
|
101
110
|
});
|
|
102
111
|
const notes = [];
|
|
112
|
+
// Keep the newest complete entries under the tool's response budget.
|
|
113
|
+
// A noisy script must never turn one console read into a huge prompt.
|
|
114
|
+
let sizeOmitted = 0;
|
|
115
|
+
let size = lines.reduce((sum, line) => sum + line.length + 1, 0);
|
|
116
|
+
while (lines.length > 1 && size > 20_000) {
|
|
117
|
+
size -= lines.shift().length + 1;
|
|
118
|
+
sizeOmitted += 1;
|
|
119
|
+
}
|
|
120
|
+
if (lines.length === 1 && lines[0].length > 20_000) {
|
|
121
|
+
lines = [`${lines[0].slice(0, 19_900)}… [entry truncated]`];
|
|
122
|
+
}
|
|
123
|
+
if (sizeOmitted > 0)
|
|
124
|
+
notes.push(`${sizeOmitted} older matching lines omitted to fit the response`);
|
|
103
125
|
if (response.dropped > 0) {
|
|
104
126
|
notes.push(`showing the newest ${response.items.length} of ${response.total} matching lines`);
|
|
105
127
|
}
|
|
@@ -108,7 +130,7 @@ export function registerPerfTools(context) {
|
|
|
108
130
|
if (response.evicted) {
|
|
109
131
|
notes.push(`${response.evicted} older lines have fallen out of the buffer and cannot be recovered`);
|
|
110
132
|
}
|
|
111
|
-
const trailer = notes.length > 0 ?
|
|
133
|
+
const trailer = `\n\n[${notes.length > 0 ? `${notes.join("; ")}; ` : ""}nextCursor: ${response.nextCursor}]`;
|
|
112
134
|
return text(lines.join("\n") + trailer);
|
|
113
135
|
});
|
|
114
136
|
defineTool(context, {
|
package/dist/tools/perf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perf.js","sourceRoot":"","sources":["../../src/tools/perf.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"perf.js","sourceRoot":"","sources":["../../src/tools/perf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAmB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAkH9D;;;;;;;;;;;;;GAaG;AACH,SAAS,aAAa,CAAC,KAAmB;IACxC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,gFAAgF;YAChF,kBAAkB;YAClB,wEAAwE;YACxE,wEAAwE;YACxE,iDAAiD;YACjD,iFAAiF;YACjF,mEAAmE;YACnE,sEAAsE;YACtE,2EAA2E;YAC3E,mBAAmB;YACnB,qEAAqE;YACrE,0EAA0E;YAC1E,sBAAsB;YACtB,yEAAyE;YACzE,0EAA0E;YAC1E,oEAAoE;YACpE,oEAAoE;YACpE,0EAA0E;YAC1E,MAAM;YACN,yFAAyF;YACzF,uEAAuE;YACvE,0EAA0E;YAC1E,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,uEAAuE;YACvE,mEAAmE;YACnE,sEAAsE;YACtE,OAAO;QACT,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YACrI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YAC/G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAC9H,KAAK,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sEAAsE;gBACpE,4CAA4C,CAC/C;YACH,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACpF;QACD,QAAQ,EAAE,IAAI;KACf,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,cAAc,EACd,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAC5H,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;QAEF,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,kEAAkE;YAClE,wEAAwE;YACxE,wEAAwE;YACxE,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,MAAM,GACV,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS;gBACpD,CAAC,CAAC,wCAAwC,QAAQ,CAAC,gBAAgB,KAAK;oBACtE,0EAA0E;gBAC5E,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,IAAI,CACT,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO;gBACzB,CAAC,CAAC,sEAAsE;gBACxE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0CAA0C,CAAC,GAAG,MAAM;gBAChG,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrH,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,kBAAkB,QAAQ,CAAC,UAAU,GAAG,CAC3C,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,yEAAyE;QACzE,oCAAoC;QACpC,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrH,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;iBACtB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;iBAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACpD,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,WAAW,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,mDAAmD,CAAC,CAAC;QACnG,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,sBAAsB,QAAQ,CAAC,KAAK,CAAC,MAAM,OAAO,QAAQ,CAAC,KAAK,iBAAiB,CAClF,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CACR,GAAG,QAAQ,CAAC,OAAO,oEAAoE,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,eAAe,QAAQ,CAAC,UAAU,GAAG,CAAC;QAC7G,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,uEAAuE;YACvE,0EAA0E;YAC1E,sEAAsE;YACtE,sEAAsE;YACtE,gEAAgE;YAChE,0EAA0E;YAC1E,wEAAwE;YACxE,wEAAwE;YACxE,6EAA6E;YAC7E,2EAA2E;YAC3E,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,wEAAwE;YACxE,2EAA2E;YAC3E,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,0EAA0E;YAC1E,oGAAoG;YACpG,0EAA0E;YAC1E,4EAA4E;YAC5E,0EAA0E;YAC1E,uEAAuE;YACvE,oEAAoE;YACpE,yEAAyE;YACzE,qEAAqE;YACrE,0EAA0E;YAC1E,wEAAwE;YACxE,gEAAgE;YAChE,0EAA0E;YAC1E,mBAAmB;YACnB,0EAA0E;YAC1E,sEAAsE;YACtE,mEAAmE;YACnE,oEAAoE;YACpE,yEAAyE;YACzE,uEAAuE;YACvE,sEAAsE;YACtE,yEAAyE;YACzE,UAAU;YACV,0EAA0E;YAC1E,wEAAwE;YACxE,uCAAuC;YACvC,mEAAmE;YACnE,kEAAkE;QACpE,WAAW,EAAE;YACX,EAAE,EAAE,CAAC;iBACF,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;iBAC3D,OAAO,CAAC,UAAU,CAAC;iBACnB,QAAQ,CACP,oEAAoE;gBAClE,mEAAmE;gBACnE,+DAA+D;gBAC/D,qCAAqC,CACxC;YACH,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC;gBACJ,aAAa;gBACb,WAAW;gBACX,cAAc;gBACd,iBAAiB;gBACjB,aAAa;gBACb,YAAY;aACb,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CACP,yDAAyD,CAC1D;YACH,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,uEAAuE;gBACrE,+DAA+D;gBAC/D,mEAAmE;gBACnE,sBAAsB,CACzB;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,GAAG,CAAC;iBACR,GAAG,CAAC,KAAK,CAAC;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,wEAAwE,CAAC;YACrF,cAAc,EAAE,CAAC;iBACd,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,sEAAsE;gBACpE,+DAA+D;gBAC/D,sBAAsB,CACzB;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACpF;QACD,QAAQ,EAAE,IAAI;KACf,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,eAAe,EACf,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACvB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;YAEF,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,IAAI,CACT,QAAQ,CAAC,GAAG,EACZ,wEAAwE;oBACtE,sEAAsE,CACzE,CAAC;YACJ,CAAC;YACD,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC;;;;;;;;;;;;;;;mBAeG;gBACH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;gBAE1C,MAAM,IAAI,GAAG,WAAW;oBACtB,CAAC,CAAC,sBAAsB,QAAQ,CAAC,OAAO,CAAC,MAAM,eAAe,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;wBAC5F,0EAA0E;wBAC1E,4EAA4E;wBAC5E,yEAAyE;oBAC3E,CAAC,CAAC,yCAAyC;wBACzC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;4BACjB,CAAC,CAAC,sCAAsC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gCAC7D,uEAAuE;gCACvE,sEAAsE;gCACtE,wEAAwE;gCACxE,wBAAwB;4BAC1B,CAAC,CAAC,iEAAiE;gCACjE,8BAA8B,CAAC;wBACnC,2EAA2E;wBAC3E,wEAAwE;wBACxE,mDAAmD,CAAC;gBAExD,oEAAoE;gBACpE,qEAAqE;gBACrE,mEAAmE;gBACnE,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACnD,CAAC,CAAC,iEAAiE;wBACjE,+DAA+D;wBAC/D,uCAAuC;oBACzC,CAAC,CAAC,EAAE,CAAC;gBAET,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;gBAC5C,OAAO,IAAI,CACT,IAAI;oBACF,OAAO;oBACP,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;wBACtD,CAAC,CAAC,wCAAwC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBAC5E,CAAC,CAAC,EAAE,CAAC;oBACP,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;wBAChB,CAAC,CAAC,2BAA2B,MAAM;6BAC9B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;6BAChD,IAAI,CAAC,IAAI,CAAC,GAAG;wBAClB,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CACpB,KAAK,CACH,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,CAAC,EACxD,QAAQ,CAAC,OAAoD,EAC7D,EAAE,IAAI,EAAE,kEAAkE,EAAE,CAC7E,CACF,CAAC;YAEF,yEAAyE;YACzE,2DAA2D;YAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO;iBAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,cAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE1E,uEAAuE;YACvE,yCAAyC;YACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE3E,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,sEAAsE;YACtE,wEAAwE;YACxE,qEAAqE;YACrE,iEAAiE;YACjE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CACX,qEAAqE;oBACnE,kEAAkE;oBAClE,mEAAmE;oBACnE,gCAAgC,CACnC,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B;;;;;;;;;;;;;mBAaG;gBACH,QAAQ,CAAC,IAAI,CACX,wCAAwC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBACnF,oEAAoE;oBACpE,mEAAmE;oBACnE,kEAAkE;oBAClE,mEAAmE;oBACnE,yCAAyC,CAC5C,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAC7B,YAAY,EACZ,EAAE;YACF,mEAAmE;YACnE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAChD,CAAC;YAEF,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CACT,mBAAmB,KAAK,CAAC,SAAS,gDAAgD;oBAChF,KAAK,CAAC,IAAI;yBACP,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC;yBACzD,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CACT,cAAc,KAAK,CAAC,UAAU,KAAK;oBACjC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjF,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9E,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CACT,qBAAqB,KAAK,CAAC,eAAe,CAAC,MAAM,OAAO;oBACtD,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CACrC,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CACT,wBAAwB,KAAK,CAAC,cAAc,CAAC,MAAM,8FAA8F;oBAC/I,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CACpC,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GACR,GAAG,KAAK,CAAC,OAAO,8BAA8B,KAAK,CAAC,OAAO,sBAAsB;gBACjF,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,CAAC,KAAK,CAAC,UAAU;oBACf,CAAC,CAAC,yEAAyE;wBACzE,wEAAwE;oBAC1E,CAAC,CAAC,EAAE,CAAC,CAAC;YAEV,OAAO,IAAI,CACT,MAAM,CAAC,MAAM,KAAK,CAAC;gBACjB,CAAC,CAAC,yBAAyB,IAAI,EAAE;gBACjC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CACxC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,YAAY,EACZ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EACzB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAC/C,CAAC;YAEF,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,wEAAwE;YACxE,wEAAwE;YACxE,gEAAgE;YAChE,MAAM,KAAK,GAAG;gBACZ,aAAa;gBACb,WAAW;gBACX,cAAc;gBACd,iBAAiB;gBACjB,aAAa;gBACb,YAAY;aACb,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAClD,CAAC;YAEF;;;;;;eAMG;YACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAEhD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;gBACtC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,kBAAkB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;oBACvD,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CAC5C,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5D,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,KAAK,SAAS;oBAC1B,CAAC,CAAC,GAAG,IAAI,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;yBACxC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;yBACtD,IAAI,CAAC,IAAI,CAAC,EAAE;oBACjB,CAAC,CAAC,GAAG,IAAI,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxC,CAAC,CAAC,GAAG,QAAQ,6GAA6G;oBAC1H,CAAC,CAAC,QAAQ,CAAC;gBAEb,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,mEAAmE;oBACnE,oEAAoE;oBACpE,oEAAoE;oBACpE,gEAAgE;oBAChE,MAAM,CAAC,IAAI,CACT,GAAG,OAAO,OACR,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;wBACtB,CAAC,CAAC,iDAAiD;wBACnD,CAAC,CAAC,WACN,EAAE,CACH,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,uEAAuE;gBACvE,oEAAoE;gBACpE,iEAAiE;gBACjE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,KAAK;qBACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,KAAK,SAAS;wBACtB,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;wBACzC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;4BAC7B,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE;4BAC3F,CAAC,CAAC,EAAE,CAAC;oBACX,+DAA+D;oBAC/D,oEAAoE;oBACpE,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;wBACrC,CAAC,CAAC,KAAK,MAAM,eAAe,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACjE,CAAC,CAAC,EAAE,CAAC;oBACT,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;gBAClD,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,cAAc,EACd,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YACpD,qEAAqE;YACrE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CACpE,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CACT,0BAA0B,QAAQ,CAAC,OAAO,aAAa;oBACrD,kEAAkE;oBAClE,iEAAiE,CACpE,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;iBAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;gBAChE,qEAAqE;gBACrE,uEAAuE;gBACvE,uEAAuE;gBACvE,8CAA8C;iBAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;iBAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;iBACvE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACf,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,UAAU;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI;gBAC/D,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC1C,CAAC,CAAC,CAAC;YAEN,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CACT,mBAAmB,QAAQ,CAAC,OAAO,kCAAkC;oBACnE,8BAA8B;oBAC9B,qEAAqE;oBACrE,6BAA6B,CAChC,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE;gBAC/D,IAAI,EACF,WAAW,QAAQ,CAAC,OAAO,QAAQ,QAAQ,CAAC,SAAS,MAAM;oBAC3D,kDAAkD;aACrD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,eAAe,EACf,EAAE,EACF,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;QAEF,yEAAyE;QACzE,qEAAqE;QACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG;YACZ,MAAM,CACJ,IAAI,CAAC;gBACH,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO;aACvC,CAAC,CACH;SACF,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,8BAA8B;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CACvD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,qDAAqD;YACrD,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,MAAM,CAAC,eAAe,KAAK,KAAK;gBACvC,CAAC,CAAC,8EAA8E;gBAChF,CAAC,CAAC,2BACE,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,+BAC7B,GAAG,CACR,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CACR,wEAAwE;gBACtE,qEAAqE;gBACrE,oEAAoE;gBACpE,iEAAiE;gBACjE,0BAA0B,CAC7B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/playtest.js
CHANGED
|
@@ -9,17 +9,17 @@ import { defineTool } from "../lib/tool.js";
|
|
|
9
9
|
* after this tool started a test, since the new session has never been queried
|
|
10
10
|
* and its context is exactly what the caller needs.
|
|
11
11
|
*/
|
|
12
|
-
async function findPlaytestSession(bridge) {
|
|
12
|
+
async function findPlaytestSession(bridge, exclude = new Set()) {
|
|
13
13
|
const sessions = (await bridge.sessions()).list;
|
|
14
|
-
const cached = sessions.find((session) => session.context?.includes("playtest"));
|
|
14
|
+
const cached = sessions.find((session) => !exclude.has(session.studioId) && session.context?.includes("playtest") && !session.context?.includes("client"));
|
|
15
15
|
if (cached)
|
|
16
16
|
return cached.studioId;
|
|
17
|
-
const unknown = sessions.filter((session) => session.context === undefined);
|
|
17
|
+
const unknown = sessions.filter((session) => !exclude.has(session.studioId) && session.context === undefined);
|
|
18
18
|
const probed = await Promise.all(unknown.map(async (session) => {
|
|
19
19
|
try {
|
|
20
20
|
const status = await bridge.call("studio.status", {}, { studioId: session.studioId, timeoutMs: 3_000 });
|
|
21
21
|
await bridge.notePlaceName(session.studioId, status.placeName, status.context);
|
|
22
|
-
return status.context?.includes("playtest") ? session.studioId : null;
|
|
22
|
+
return status.context?.includes("playtest") && !status.context?.includes("client") ? session.studioId : null;
|
|
23
23
|
}
|
|
24
24
|
catch {
|
|
25
25
|
return null;
|
|
@@ -38,11 +38,10 @@ export function registerPlaytestTools(context) {
|
|
|
38
38
|
"fires. `run` is Run mode, which executes scripts with no player at all. " +
|
|
39
39
|
"`multiplayer` starts a test with several players for testing " +
|
|
40
40
|
"replication. `state` reports without changing anything.\n\n" +
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"playtest.\n\n" +
|
|
41
|
+
"Play and multiplayer return the playtest server's studioId once it connects. " +
|
|
42
|
+
"Use that ID directly for `console`, `performance` and `execute_luau`; " +
|
|
43
|
+
"the editor session has a separate log. If connection takes too long, " +
|
|
44
|
+
"the reply says so and `list_studios` can find it later.\n\n" +
|
|
46
45
|
"A test does not block this call: it starts and the reply reports the " +
|
|
47
46
|
"state reached. Studio only ends it when something inside calls " +
|
|
48
47
|
"`StudioTestService:EndTest(value)` or when `stop` is used here; whatever " +
|
|
@@ -148,6 +147,8 @@ export function registerPlaytestTools(context) {
|
|
|
148
147
|
}
|
|
149
148
|
}
|
|
150
149
|
}
|
|
150
|
+
const starting = args.op === "play" || args.op === "multiplayer";
|
|
151
|
+
const before = starting ? new Set((await bridge.sessions()).list.map((session) => session.studioId)) : new Set();
|
|
151
152
|
const response = await bridge.call("playtest.control", { op: args.op, players: args.players, args: args.args }, { studioId: args.studioId, timeoutMs: 30_000 });
|
|
152
153
|
const notes = [];
|
|
153
154
|
if (args.op !== "state" && !response.changed) {
|
|
@@ -160,11 +161,31 @@ export function registerPlaytestTools(context) {
|
|
|
160
161
|
// it, and every subsequent read has to go to that one instead. Said here
|
|
161
162
|
// because the alternative is an agent reading the editor's empty log and
|
|
162
163
|
// concluding the playtest did nothing.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
let runtime;
|
|
165
|
+
if (starting && response.changed && response.state.testPending) {
|
|
166
|
+
const deadline = Date.now() + 6_000;
|
|
167
|
+
do {
|
|
168
|
+
const id = runtime?.studioId ?? await findPlaytestSession(bridge, before);
|
|
169
|
+
if (id) {
|
|
170
|
+
runtime ??= { studioId: id };
|
|
171
|
+
try {
|
|
172
|
+
const state = await bridge.call("playtest.control", { op: "state" }, { studioId: id, timeoutMs: 2_000 });
|
|
173
|
+
runtime.players = state.state.players;
|
|
174
|
+
}
|
|
175
|
+
catch { /* A connecting session can already be listed before it answers. */ }
|
|
176
|
+
if ((runtime.players?.length ?? 0) >= (args.op === "multiplayer" ? args.players : 1))
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
if (Date.now() >= deadline)
|
|
180
|
+
break;
|
|
181
|
+
await new Promise((resolve) => setTimeout(resolve, 300));
|
|
182
|
+
} while (true);
|
|
183
|
+
if (!runtime)
|
|
184
|
+
notes.push("The playtest server has not connected yet. Use list_studios later to find its studioId.");
|
|
185
|
+
else if (!runtime.players?.length)
|
|
186
|
+
notes.push("The playtest server connected, but players are still joining. Query playtest state later for names.");
|
|
166
187
|
}
|
|
167
|
-
return json(response.state, notes.length > 0 ? notes.join("\n") : undefined);
|
|
188
|
+
return json(runtime ? { ...response.state, ...runtime } : response.state, notes.length > 0 ? notes.join("\n") : undefined);
|
|
168
189
|
});
|
|
169
190
|
}
|
|
170
191
|
//# sourceMappingURL=playtest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playtest.js","sourceRoot":"","sources":["../../src/tools/playtest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"playtest.js","sourceRoot":"","sources":["../../src/tools/playtest.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,136 @@
|
|
|
1
1
|
--!strict
|
|
2
|
-
--
|
|
2
|
+
-- Shared client relay lifecycles for temporary calls and persistent diagnostics.
|
|
3
3
|
local Players = game:GetService("Players")
|
|
4
4
|
local RunService = game:GetService("RunService")
|
|
5
5
|
local Dispatch = require(script.Parent.Dispatch)
|
|
6
|
+
local LogBuffer = require(script.Parent.LogBuffer)
|
|
6
7
|
local ClientRelay = {}
|
|
8
|
+
|
|
9
|
+
-- Long-lived diagnostics use the same LocalScript/RemoteEvent replication path
|
|
10
|
+
-- as temporary client calls. The server owns the buffers and validates the
|
|
11
|
+
-- sender; the client never needs HTTP access.
|
|
12
|
+
local DIAGNOSTIC_SOURCE = [==[
|
|
13
|
+
local LogService = game:GetService("LogService")
|
|
14
|
+
local ScriptContext = game:GetService("ScriptContext")
|
|
15
|
+
local report = script:WaitForChild("Report", 10)
|
|
16
|
+
if not report then return end
|
|
17
|
+
local open = true
|
|
18
|
+
local connections = {}
|
|
19
|
+
local levels = {
|
|
20
|
+
[Enum.MessageType.MessageOutput] = "print",
|
|
21
|
+
[Enum.MessageType.MessageInfo] = "info",
|
|
22
|
+
[Enum.MessageType.MessageWarning] = "warning",
|
|
23
|
+
[Enum.MessageType.MessageError] = "error",
|
|
24
|
+
}
|
|
25
|
+
local function send(payload)
|
|
26
|
+
if open and report.Parent then report:FireServer(payload) end
|
|
27
|
+
end
|
|
28
|
+
table.insert(connections, LogService.MessageOut:Connect(function(message, kind)
|
|
29
|
+
send({level = levels[kind] or "print", message = string.sub(message, 1, 2000), timestamp = os.time()})
|
|
30
|
+
end))
|
|
31
|
+
pcall(function()
|
|
32
|
+
table.insert(connections, ScriptContext.Error:Connect(function(message, stack, source)
|
|
33
|
+
local path
|
|
34
|
+
if typeof(source) == "Instance" then
|
|
35
|
+
local ok, full = pcall(function() return source:GetFullName() end)
|
|
36
|
+
path = if ok then full else source.Name
|
|
37
|
+
end
|
|
38
|
+
send({kind = "trace", message = string.sub(message, 1, 2000), stack = string.sub(stack, 1, 4000), source = path})
|
|
39
|
+
end))
|
|
40
|
+
end)
|
|
41
|
+
script.Destroying:Connect(function()
|
|
42
|
+
open = false
|
|
43
|
+
for _, connection in connections do connection:Disconnect() end
|
|
44
|
+
end)
|
|
45
|
+
send({kind = "ready"})
|
|
46
|
+
]==]
|
|
47
|
+
|
|
48
|
+
local diagnosticsStarted = false
|
|
49
|
+
local diagnosticConnections: { [Player]: RBXScriptConnection } = {}
|
|
50
|
+
local diagnosticRelays: { [Player]: LocalScript } = {}
|
|
51
|
+
local diagnosticInstalling: { [Player]: boolean } = {}
|
|
52
|
+
local characterConnections: { [Player]: RBXScriptConnection } = {}
|
|
53
|
+
local playerAddedConnection: RBXScriptConnection? = nil
|
|
54
|
+
local playerRemovingConnection: RBXScriptConnection? = nil
|
|
55
|
+
local function installDiagnostics(player: Player)
|
|
56
|
+
if diagnosticInstalling[player] or diagnosticConnections[player] then return end
|
|
57
|
+
diagnosticInstalling[player] = true
|
|
58
|
+
task.spawn(function()
|
|
59
|
+
-- PlayerGui is server-visible (PlayerScripts is created on the client).
|
|
60
|
+
local gui = player:FindFirstChildOfClass("PlayerGui") or player:WaitForChild("PlayerGui", 15)
|
|
61
|
+
if not diagnosticsStarted or not gui or player.Parent ~= Players then diagnosticInstalling[player] = nil; return end
|
|
62
|
+
local old = gui:FindFirstChild("MCPDiagnosticsRelay")
|
|
63
|
+
if old then old:Destroy() end
|
|
64
|
+
LogBuffer.startClient(player)
|
|
65
|
+
local relay = Instance.new("LocalScript")
|
|
66
|
+
local remote = Instance.new("RemoteEvent")
|
|
67
|
+
local ok = pcall(function()
|
|
68
|
+
relay.Name = "MCPDiagnosticsRelay"
|
|
69
|
+
relay:SetAttribute("MCPClientRelay", true)
|
|
70
|
+
relay.Source = DIAGNOSTIC_SOURCE
|
|
71
|
+
remote.Name = "Report"
|
|
72
|
+
remote.Parent = relay
|
|
73
|
+
diagnosticConnections[player] = remote.OnServerEvent:Connect(function(from, payload)
|
|
74
|
+
if from == player then LogBuffer.pushClient(player, payload) end
|
|
75
|
+
end)
|
|
76
|
+
relay.Parent = gui
|
|
77
|
+
diagnosticRelays[player] = relay
|
|
78
|
+
end)
|
|
79
|
+
if not ok then
|
|
80
|
+
if diagnosticConnections[player] then diagnosticConnections[player]:Disconnect() end
|
|
81
|
+
diagnosticConnections[player] = nil
|
|
82
|
+
relay:Destroy()
|
|
83
|
+
LogBuffer.stopClient(player)
|
|
84
|
+
end
|
|
85
|
+
diagnosticInstalling[player] = nil
|
|
86
|
+
if not characterConnections[player] then
|
|
87
|
+
characterConnections[player] = player.CharacterAdded:Connect(function()
|
|
88
|
+
task.delay(0.5, function()
|
|
89
|
+
if not diagnosticsStarted or player.Parent ~= Players then return end
|
|
90
|
+
local currentGui = player:FindFirstChildOfClass("PlayerGui")
|
|
91
|
+
local current = diagnosticRelays[player]
|
|
92
|
+
if current and current.Parent == currentGui then return end
|
|
93
|
+
if diagnosticConnections[player] then diagnosticConnections[player]:Disconnect() end
|
|
94
|
+
diagnosticConnections[player], diagnosticRelays[player] = nil, nil
|
|
95
|
+
installDiagnostics(player)
|
|
96
|
+
end)
|
|
97
|
+
end)
|
|
98
|
+
end
|
|
99
|
+
end)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
function ClientRelay.startDiagnostics()
|
|
103
|
+
if diagnosticsStarted or not RunService:IsRunning() or not RunService:IsServer() then return end
|
|
104
|
+
diagnosticsStarted = true
|
|
105
|
+
playerAddedConnection = Players.PlayerAdded:Connect(installDiagnostics)
|
|
106
|
+
playerRemovingConnection = Players.PlayerRemoving:Connect(function(player)
|
|
107
|
+
if diagnosticConnections[player] then diagnosticConnections[player]:Disconnect() end
|
|
108
|
+
diagnosticConnections[player] = nil
|
|
109
|
+
if diagnosticRelays[player] then diagnosticRelays[player]:Destroy() end
|
|
110
|
+
diagnosticRelays[player] = nil
|
|
111
|
+
if characterConnections[player] then characterConnections[player]:Disconnect() end
|
|
112
|
+
characterConnections[player] = nil
|
|
113
|
+
LogBuffer.stopClient(player)
|
|
114
|
+
end)
|
|
115
|
+
for _, player in Players:GetPlayers() do installDiagnostics(player) end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
function ClientRelay.stopDiagnostics()
|
|
119
|
+
if not diagnosticsStarted then return end
|
|
120
|
+
diagnosticsStarted = false
|
|
121
|
+
if playerAddedConnection then playerAddedConnection:Disconnect() end
|
|
122
|
+
if playerRemovingConnection then playerRemovingConnection:Disconnect() end
|
|
123
|
+
playerAddedConnection, playerRemovingConnection = nil, nil
|
|
124
|
+
for player, connection in diagnosticConnections do
|
|
125
|
+
connection:Disconnect()
|
|
126
|
+
if diagnosticRelays[player] then diagnosticRelays[player]:Destroy() end
|
|
127
|
+
LogBuffer.stopClient(player)
|
|
128
|
+
end
|
|
129
|
+
for _, connection in characterConnections do connection:Disconnect() end
|
|
130
|
+
table.clear(diagnosticConnections)
|
|
131
|
+
table.clear(diagnosticRelays)
|
|
132
|
+
table.clear(characterConnections)
|
|
133
|
+
end
|
|
7
134
|
function ClientRelay.playerFor(name: string?): Player
|
|
8
135
|
if not RunService:IsRunning() then
|
|
9
136
|
Dispatch.fail("NOT_RUNNING", "Client access needs a running playtest; this is an edit session.")
|
package/plugin/src/Config.luau
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
local Config = {}
|
|
11
11
|
|
|
12
|
-
Config.PLUGIN_VERSION = "0.7.
|
|
12
|
+
Config.PLUGIN_VERSION = "0.7.8"
|
|
13
13
|
|
|
14
14
|
-- Fingerprint of plugin/src, stamped in by scripts/build-plugin.mjs. The server
|
|
15
15
|
-- computes the same hash from its own copy of the sources and compares, so a
|