@el4cteo/rbx-studio-mcp 0.8.3 → 0.8.6
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/README.md +24 -6
- package/dist/bridge/rpc.js +1 -1
- package/dist/bridge/rpc.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/apidump.js +75 -0
- package/dist/lib/apidump.js.map +1 -1
- package/dist/lib/errors.js +5 -4
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/format.js +92 -25
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/notices.js +29 -0
- package/dist/lib/notices.js.map +1 -0
- package/dist/lib/protocol.js.map +1 -1
- package/dist/lib/sync.js +1141 -0
- package/dist/lib/sync.js.map +1 -0
- package/dist/lib/syncplan.js +338 -0
- package/dist/lib/syncplan.js.map +1 -0
- package/dist/lib/tool.js +9 -2
- package/dist/lib/tool.js.map +1 -1
- package/dist/tools/discover.js +6 -1
- package/dist/tools/discover.js.map +1 -1
- package/dist/tools/exec.js +5 -0
- package/dist/tools/exec.js.map +1 -1
- package/dist/tools/instances.js +2 -2
- package/dist/tools/instances.js.map +1 -1
- package/dist/tools/perf.js +28 -3
- package/dist/tools/perf.js.map +1 -1
- package/dist/tools/screenshot.js +7 -3
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/scripts.js +110 -28
- package/dist/tools/scripts.js.map +1 -1
- package/dist/tools/sync.js +169 -0
- package/dist/tools/sync.js.map +1 -0
- package/package.json +4 -4
- package/plugin/src/Commands.luau +72 -5
- package/plugin/src/Config.luau +65 -65
- package/plugin/src/Console.luau +5 -0
- package/plugin/src/Dispatch.luau +131 -90
- package/plugin/src/ExecRuntime.luau +190 -168
- package/plugin/src/LogBuffer.luau +38 -9
- package/plugin/src/Paths.luau +42 -0
- package/plugin/src/Phrase.luau +41 -0
- package/plugin/src/Prompt.luau +23 -3
- package/plugin/src/ScriptEdit.luau +94 -8
- package/plugin/src/Serialize.luau +16 -1
- package/plugin/src/Transport.luau +5 -2
- package/plugin/src/Undo.luau +74 -10
- package/plugin/src/handlers/Capture.luau +818 -809
- package/plugin/src/handlers/Debug.luau +19 -16
- package/plugin/src/handlers/Discover.luau +31 -1
- package/plugin/src/handlers/Perf.luau +100 -21
- package/plugin/src/handlers/Scripts.luau +274 -90
- package/plugin/src/handlers/Sync.luau +968 -0
- package/plugin/src/init.server.luau +47 -2
- package/scripts/build.mjs +14 -0
- package/scripts/sync-fake.mjs +191 -0
- package/scripts/test-live-sync-scale.mjs +150 -0
- package/scripts/test-live-sync.mjs +232 -0
- package/scripts/test-live-tools.mjs +6 -1
- package/scripts/test-plugin.mjs +17 -0
- package/scripts/test-results.mjs +41 -0
- package/scripts/test-sync-more.mjs +228 -0
- package/scripts/test-sync.mjs +245 -0
- package/dist/tools/spatial.js +0 -135
- package/dist/tools/spatial.js.map +0 -1
- package/dist/tools/upload.js +0 -294
- package/dist/tools/upload.js.map +0 -1
package/dist/tools/scripts.js
CHANGED
|
@@ -4,6 +4,49 @@ import { ToolError } from "../lib/errors.js";
|
|
|
4
4
|
import { liveChildren, liveInstance, liveScriptWrite, resolveLivePath } from "../lib/liveops.js";
|
|
5
5
|
import { assertTargetsOpenPlace, requireCredentials, requirePlace, requireUniverse, } from "../lib/opencloud.js";
|
|
6
6
|
import { defineTool } from "../lib/tool.js";
|
|
7
|
+
/**
|
|
8
|
+
* Matches grouped under one header per script, context merged.
|
|
9
|
+
*
|
|
10
|
+
* With context on, neighbouring matches share lines, and printing each match's
|
|
11
|
+
* window separately showed the same lines two and three times -- some of them
|
|
12
|
+
* as context under one match while being a match themselves. One block per
|
|
13
|
+
* script, each line once, `:` for a match and `-` for context, as grep does.
|
|
14
|
+
*/
|
|
15
|
+
function renderMatches(matches, tagNeedles) {
|
|
16
|
+
const groups = new Map();
|
|
17
|
+
for (const match of matches) {
|
|
18
|
+
let group = groups.get(match.path);
|
|
19
|
+
if (group === undefined) {
|
|
20
|
+
group = {
|
|
21
|
+
header: match.revision ? `${match.path} rev=${match.revision}` : match.path,
|
|
22
|
+
lines: new Map(),
|
|
23
|
+
hits: new Set(),
|
|
24
|
+
};
|
|
25
|
+
groups.set(match.path, group);
|
|
26
|
+
}
|
|
27
|
+
const first = match.line - (match.before?.length ?? 0);
|
|
28
|
+
for (const [index, line] of (match.before ?? []).entries()) {
|
|
29
|
+
if (!group.hits.has(first + index))
|
|
30
|
+
group.lines.set(first + index, line);
|
|
31
|
+
}
|
|
32
|
+
group.hits.add(match.line);
|
|
33
|
+
group.lines.set(match.line, match.text +
|
|
34
|
+
(match.truncated ? " [line cut; read it with script_read]" : "") +
|
|
35
|
+
(tagNeedles && match.needles ? ` [patterns ${match.needles.join(",")}]` : ""));
|
|
36
|
+
for (const [index, line] of (match.after ?? []).entries()) {
|
|
37
|
+
if (!group.hits.has(match.line + index + 1))
|
|
38
|
+
group.lines.set(match.line + index + 1, line);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return [...groups.values()]
|
|
42
|
+
.map((group) => {
|
|
43
|
+
const body = [...group.lines]
|
|
44
|
+
.sort(([a], [b]) => a - b)
|
|
45
|
+
.map(([number, line]) => `${number}${group.hits.has(number) ? ":" : "-"} ${line}`);
|
|
46
|
+
return [group.header, ...body].join("\n");
|
|
47
|
+
})
|
|
48
|
+
.join("\n\n");
|
|
49
|
+
}
|
|
7
50
|
/**
|
|
8
51
|
* Prefixes each line with its number, right-aligned to the widest one.
|
|
9
52
|
*
|
|
@@ -427,12 +470,29 @@ export function registerScriptTools(context) {
|
|
|
427
470
|
"instead of backslash, there is no alternation, and `-` means a lazy " +
|
|
428
471
|
"quantifier. Set `literal` to search for text exactly as written, which is " +
|
|
429
472
|
"usually what you want for identifiers.\n\n" +
|
|
430
|
-
"
|
|
431
|
-
"
|
|
473
|
+
"To look for several identifiers, pass them together as `patterns` (literal, " +
|
|
474
|
+
"up to 16): one pass over the place instead of one per name, and each line " +
|
|
475
|
+
"says which of them it matched. `mode=\"files\"` lists matching scripts only; " +
|
|
476
|
+
"`mode=\"counts\"` gives matching-line counts per pattern.\n\n" +
|
|
477
|
+
"Results are grouped by script with its `rev`, which `script_edit` accepts " +
|
|
478
|
+
"as `revision`. Matches come from the script editor's live buffer, so " +
|
|
479
|
+
"unsaved edits are searched too.",
|
|
432
480
|
inputSchema: {
|
|
433
481
|
pattern: z
|
|
434
482
|
.string()
|
|
483
|
+
.min(1)
|
|
484
|
+
.optional()
|
|
435
485
|
.describe('Lua pattern, or exact text when `literal` is set, e.g. "PlayerAdded".'),
|
|
486
|
+
patterns: z
|
|
487
|
+
.array(z.string().min(1))
|
|
488
|
+
.min(1)
|
|
489
|
+
.max(16)
|
|
490
|
+
.optional()
|
|
491
|
+
.describe("Several literal strings searched in one pass, instead of `pattern`."),
|
|
492
|
+
mode: z
|
|
493
|
+
.enum(["lines", "files", "counts"])
|
|
494
|
+
.default("lines")
|
|
495
|
+
.describe("'lines': matching lines. 'files': one row per matching script. 'counts': matching-line counts per pattern."),
|
|
436
496
|
path: z
|
|
437
497
|
.string()
|
|
438
498
|
.optional()
|
|
@@ -463,9 +523,15 @@ export function registerScriptTools(context) {
|
|
|
463
523
|
},
|
|
464
524
|
readOnly: true,
|
|
465
525
|
}, async (args) => {
|
|
526
|
+
if ((args.pattern === undefined) === (args.patterns === undefined)) {
|
|
527
|
+
throw new ToolError("BAD_PARAMS", "Pass either `pattern` or `patterns`, not both and not neither.");
|
|
528
|
+
}
|
|
529
|
+
const needles = args.patterns ?? [args.pattern];
|
|
466
530
|
const offset = decodeCursor(args.cursor);
|
|
467
531
|
const response = await bridge.call("script.grep", {
|
|
468
532
|
pattern: args.pattern,
|
|
533
|
+
patterns: args.patterns,
|
|
534
|
+
mode: args.mode,
|
|
469
535
|
path: args.path,
|
|
470
536
|
literal: args.literal,
|
|
471
537
|
ignoreCase: args.ignoreCase,
|
|
@@ -474,6 +540,14 @@ export function registerScriptTools(context) {
|
|
|
474
540
|
limit: args.limit,
|
|
475
541
|
offset,
|
|
476
542
|
}, { studioId: args.studioId, timeoutMs: 30_000 });
|
|
543
|
+
// Before the no-match branch: a zero is exactly what counts exist to say.
|
|
544
|
+
if (args.mode === "counts") {
|
|
545
|
+
return json({
|
|
546
|
+
searched: response.searched,
|
|
547
|
+
matchedFiles: response.matchedFiles ?? 0,
|
|
548
|
+
counts: needles.map((pattern, index) => ({ pattern, lines: response.counts?.[index] ?? 0 })),
|
|
549
|
+
});
|
|
550
|
+
}
|
|
477
551
|
if (response.total === 0) {
|
|
478
552
|
if (response.searched === 0) {
|
|
479
553
|
return text(args.path
|
|
@@ -486,42 +560,50 @@ export function registerScriptTools(context) {
|
|
|
486
560
|
// silently. A regex habit writes `foo|bar`, Lua reads it as the literal
|
|
487
561
|
// characters, nothing matches, and the empty result looks like an
|
|
488
562
|
// answer rather than like a malformed pattern.
|
|
489
|
-
const
|
|
563
|
+
const literal = args.literal || args.patterns !== undefined;
|
|
564
|
+
const alternation = !literal && (args.pattern ?? "").includes("|");
|
|
490
565
|
return text(`No matches in ${response.searched} script(s).\n` +
|
|
491
566
|
(alternation
|
|
492
567
|
? "This pattern contains `|`, which Lua patterns do not support — " +
|
|
493
568
|
"there is no alternation, so `|` matched as a literal character. " +
|
|
494
|
-
"
|
|
495
|
-
:
|
|
569
|
+
"Pass the alternatives as `patterns` instead."
|
|
570
|
+
: literal
|
|
496
571
|
? "The match is literal and case-sensitive unless you set `ignoreCase`."
|
|
497
572
|
: "Check case, and remember patterns are Lua patterns — set `literal` " +
|
|
498
573
|
"to search for the text exactly as written."));
|
|
499
574
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
if (previousPath !== "")
|
|
507
|
-
lines.push("");
|
|
508
|
-
previousPath = match.path;
|
|
509
|
-
}
|
|
510
|
-
for (const [index, before] of (match.before ?? []).entries()) {
|
|
511
|
-
lines.push(`${match.path}-${match.line - (match.before?.length ?? 0) + index}- ${before}`);
|
|
512
|
-
}
|
|
513
|
-
lines.push(`${match.path}:${match.line}: ${match.text}`);
|
|
514
|
-
for (const [index, after] of (match.after ?? []).entries()) {
|
|
515
|
-
lines.push(`${match.path}-${match.line + index + 1}- ${after}`);
|
|
516
|
-
}
|
|
575
|
+
if (args.mode === "files") {
|
|
576
|
+
return table(["path", "className", "revision", "matches"], response.items, {
|
|
577
|
+
offset,
|
|
578
|
+
total: response.total,
|
|
579
|
+
more: `searched ${response.searched} scripts`,
|
|
580
|
+
});
|
|
517
581
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
582
|
+
// Clipped by whole matches, so the cursor resumes at the first one not
|
|
583
|
+
// shown rather than skipping whatever a character cut dropped.
|
|
584
|
+
let shown = response.items.length;
|
|
585
|
+
let listing = renderMatches(response.items, needles.length > 1);
|
|
586
|
+
const budget = CHARACTER_LIMIT - 500;
|
|
587
|
+
if (listing.length > budget) {
|
|
588
|
+
let low = 1;
|
|
589
|
+
let high = shown;
|
|
590
|
+
while (low < high) {
|
|
591
|
+
const middle = Math.ceil((low + high) / 2);
|
|
592
|
+
if (renderMatches(response.items.slice(0, middle), needles.length > 1).length <= budget)
|
|
593
|
+
low = middle;
|
|
594
|
+
else
|
|
595
|
+
high = middle - 1;
|
|
596
|
+
}
|
|
597
|
+
shown = low;
|
|
598
|
+
listing = renderMatches(response.items.slice(0, shown), needles.length > 1);
|
|
599
|
+
if (listing.length > budget)
|
|
600
|
+
listing = `${listing.slice(0, budget - 60)} [cut; read the script with script_read]`;
|
|
523
601
|
}
|
|
524
|
-
|
|
602
|
+
const nextOffset = offset + shown;
|
|
603
|
+
const trailer = nextOffset < response.total
|
|
604
|
+
? `[showing ${shown} of ${response.total} matches, searched ${response.searched} scripts — call again with cursor: "${encodeCursor(nextOffset)}"]`
|
|
605
|
+
: `[${response.total} match${response.total === 1 ? "" : "es"}, searched ${response.searched} scripts]`;
|
|
606
|
+
return text(`${listing}\n\n${trailer}`);
|
|
525
607
|
});
|
|
526
608
|
defineTool(context, {
|
|
527
609
|
name: "script_create",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/tools/scripts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/tools/scripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { json, text } from "../lib/format.js";
|
|
3
|
+
import { resolveDir, runBuild, runExport, runSync, startWatch, stopWatch, summarise, watchState, } from "../lib/sync.js";
|
|
4
|
+
import { defineTool } from "../lib/tool.js";
|
|
5
|
+
/** Per-file lines past this are counted, not listed. */
|
|
6
|
+
const LINE_LIMIT = 60;
|
|
7
|
+
function render(report, heading) {
|
|
8
|
+
const out = [`${heading}: ${summarise(report)} (${report.place} <-> ${report.dir})`];
|
|
9
|
+
if (report.undoStep)
|
|
10
|
+
out.push(`Studio changes are one undo step, "${report.undoStep}".`);
|
|
11
|
+
const lines = report.lines.slice(0, LINE_LIMIT);
|
|
12
|
+
if (lines.length > 0)
|
|
13
|
+
out.push("", ...lines);
|
|
14
|
+
if (report.lines.length > LINE_LIMIT)
|
|
15
|
+
out.push(`… and ${report.lines.length - LINE_LIMIT} more`);
|
|
16
|
+
if (report.conflicts.length > 0) {
|
|
17
|
+
out.push("", "Conflicts (nothing was written for these):");
|
|
18
|
+
for (const conflict of report.conflicts.slice(0, LINE_LIMIT))
|
|
19
|
+
out.push(` ${conflict.file}: ${conflict.reason}`);
|
|
20
|
+
out.push('Settle them by editing one side to match the other, or rerun with prefer: "studio" or "disk" to let one side win.');
|
|
21
|
+
}
|
|
22
|
+
if (report.held.length > 0) {
|
|
23
|
+
out.push("", `Held back by the direction (${report.held.length}):`, ...report.held.slice(0, 20).map((line) => ` ${line}`));
|
|
24
|
+
}
|
|
25
|
+
if (report.failures.length > 0) {
|
|
26
|
+
out.push("", "Failed:", ...report.failures.slice(0, LINE_LIMIT).map((failure) => ` ${failure.file}: ${failure.reason}`));
|
|
27
|
+
}
|
|
28
|
+
if (report.builds.length > 0) {
|
|
29
|
+
out.push("", report.dryRun ? "Build files that would rebuild:" : "Rebuilt from build files:", ...report.builds.map((file) => ` ${file}`));
|
|
30
|
+
}
|
|
31
|
+
if (report.fileSynced.length > 0) {
|
|
32
|
+
out.push("", `${report.fileSynced.length} script(s) left alone: Studio's own Script Sync already binds them to files.`);
|
|
33
|
+
}
|
|
34
|
+
return out.join("\n");
|
|
35
|
+
}
|
|
36
|
+
export function registerSyncTools(context) {
|
|
37
|
+
const { bridge } = context;
|
|
38
|
+
defineTool(context, {
|
|
39
|
+
name: "sync",
|
|
40
|
+
title: "Sync scripts with files on disk",
|
|
41
|
+
description: "Mirrors the place's scripts into a folder on disk, so you can work on code with your own " +
|
|
42
|
+
"file tools -- read a window, search, edit in place, diff -- and then send it back to Studio " +
|
|
43
|
+
"in one call. Studio stays where the game runs: use playtest, screenshot, console and input " +
|
|
44
|
+
"to check the result.\n\n" +
|
|
45
|
+
"Layout mirrors the instance tree, Rojo-style: `ServerScriptService/Main.server.luau` is a " +
|
|
46
|
+
"Script, `.client.luau` a LocalScript, `.luau` a ModuleScript, and a script with scripts " +
|
|
47
|
+
"inside is a folder holding `init.server.luau` (or `init.client.luau`, `init.luau`). New " +
|
|
48
|
+
"files become new scripts, and a file moved or renamed moves the script itself, keeping its " +
|
|
49
|
+
"identity.\n\n" +
|
|
50
|
+
"Ops: `status` shows what would change without changing anything. `sync` goes both ways, " +
|
|
51
|
+
"`pull` only Studio -> disk, `push` only disk -> Studio. `watch` keeps them in step until " +
|
|
52
|
+
"`stop`: edit files and Studio follows within a second, and edits in Studio land on disk.\n\n" +
|
|
53
|
+
"Nothing is overwritten blind. The last sync is remembered per file, so a file changed on " +
|
|
54
|
+
"both sides is a conflict, reported and left alone -- settle it, or pass `prefer`. Deleting " +
|
|
55
|
+
"a file deletes the script (one Ctrl+Z in Studio); a script deleted in Studio moves its file " +
|
|
56
|
+
"to `.rbx-sync/trash`. Nothing is deleted on a first sync.\n\n" +
|
|
57
|
+
"UI and other instance trees: `export` writes one as a build file (e.g. " +
|
|
58
|
+
"`StarterGui/Shop.build.json`, the same fields `create` takes, only non-default " +
|
|
59
|
+
"properties). Edit it, then `build` -- or any sync -- rebuilds the tree in one undo step, " +
|
|
60
|
+
"keeping the scripts inside it. Build files are two-way too: a tree edited in Studio is written " +
|
|
61
|
+
"back to its file, and edits on both sides are a conflict rather than one silently undoing the other.\n\n" +
|
|
62
|
+
"Conflicts leave Studio's version in `.rbx-sync/conflicts/`. Merge into the file (or fix Studio) " +
|
|
63
|
+
"and sync again: whichever side changed since the conflict wins. While `watch` runs, new conflicts " +
|
|
64
|
+
"and errors are appended to your next tool reply.",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
op: z
|
|
67
|
+
.enum(["status", "sync", "pull", "push", "watch", "stop", "export", "build"])
|
|
68
|
+
.describe("'status': dry run. 'sync': both ways. 'pull': Studio -> disk. 'push': disk -> Studio. " +
|
|
69
|
+
"'watch'/'stop': continuous two-way sync. 'export': instance trees -> build files. " +
|
|
70
|
+
"'build': build files -> instance trees."),
|
|
71
|
+
dir: z
|
|
72
|
+
.string()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe('Sync folder, relative to the working directory. Default "studio".'),
|
|
75
|
+
roots: z
|
|
76
|
+
.array(z.string())
|
|
77
|
+
.optional()
|
|
78
|
+
.describe('Studio paths to sync, e.g. ["ServerScriptService", "ReplicatedStorage.Shared"]. Default: every ' +
|
|
79
|
+
"service scripts are authored in. Remembered for the folder once given."),
|
|
80
|
+
prefer: z
|
|
81
|
+
.enum(["studio", "disk"])
|
|
82
|
+
.optional()
|
|
83
|
+
.describe("Settle conflicts in favour of one side instead of reporting them."),
|
|
84
|
+
paths: z
|
|
85
|
+
.array(z.string())
|
|
86
|
+
.optional()
|
|
87
|
+
.describe('export: instances to write as build files, e.g. ["StarterGui.Shop"].'),
|
|
88
|
+
files: z
|
|
89
|
+
.array(z.string())
|
|
90
|
+
.optional()
|
|
91
|
+
.describe('build: build files to apply, relative to the folder. Default: those changed since last built.'),
|
|
92
|
+
confirmDeletes: z
|
|
93
|
+
.boolean()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe("Allow a run that deletes most of what the folder tracks. Check `status` first."),
|
|
96
|
+
rebind: z
|
|
97
|
+
.boolean()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe("Let a folder synced with one place follow a different place. Almost never what you want."),
|
|
100
|
+
studioId: z.string().optional().describe("Target Studio; omit for the active one."),
|
|
101
|
+
},
|
|
102
|
+
}, async (args) => {
|
|
103
|
+
const dir = resolveDir(args.dir);
|
|
104
|
+
const base = {
|
|
105
|
+
dir,
|
|
106
|
+
roots: args.roots,
|
|
107
|
+
studioId: args.studioId,
|
|
108
|
+
prefer: args.prefer,
|
|
109
|
+
confirmDeletes: args.confirmDeletes,
|
|
110
|
+
rebind: args.rebind,
|
|
111
|
+
};
|
|
112
|
+
switch (args.op) {
|
|
113
|
+
case "status": {
|
|
114
|
+
const report = await runSync(bridge, { ...base, direction: "both", dryRun: true });
|
|
115
|
+
const watching = watchState(dir);
|
|
116
|
+
const lines = [render(report, "Would sync")];
|
|
117
|
+
if (watching) {
|
|
118
|
+
lines.push("", `Watching since ${new Date(watching.since).toISOString()}: ${watching.cycles} sync(s), ${watching.echoes} echo(es) skipped` +
|
|
119
|
+
(watching.lastCycle ? `; last change: ${watching.lastCycle.summary} (${watching.lastCycle.ms}ms)` : "") +
|
|
120
|
+
(watching.lastError ? `; last error: ${watching.lastError.message}` : ""));
|
|
121
|
+
}
|
|
122
|
+
return text(lines.join("\n"));
|
|
123
|
+
}
|
|
124
|
+
case "sync":
|
|
125
|
+
case "pull":
|
|
126
|
+
case "push": {
|
|
127
|
+
const direction = args.op === "sync" ? "both" : args.op;
|
|
128
|
+
const report = await runSync(bridge, { ...base, direction });
|
|
129
|
+
return text(render(report, args.op === "sync" ? "Synced" : args.op === "pull" ? "Pulled" : "Pushed"));
|
|
130
|
+
}
|
|
131
|
+
case "watch": {
|
|
132
|
+
const { state, first, already } = await startWatch(bridge, { ...base, direction: "both" });
|
|
133
|
+
if (already)
|
|
134
|
+
return text(`Already watching ${state.dir}. op="status" shows how it is going.`);
|
|
135
|
+
return text([
|
|
136
|
+
first.lines.length > 0 || first.conflicts.length > 0 ? render(first, "First sync") : "Already in step.",
|
|
137
|
+
"",
|
|
138
|
+
`Watching ${state.dir}: file edits reach Studio within a second, Studio edits reach the files. ` +
|
|
139
|
+
'Conflicts are left alone and listed by op="status". Stop with op="stop".',
|
|
140
|
+
].join("\n"));
|
|
141
|
+
}
|
|
142
|
+
case "stop": {
|
|
143
|
+
const state = stopWatch(dir);
|
|
144
|
+
return text(state
|
|
145
|
+
? `Stopped watching ${dir} after ${state.cycles} run(s).`
|
|
146
|
+
: `Nothing was watching ${dir}.`);
|
|
147
|
+
}
|
|
148
|
+
case "export": {
|
|
149
|
+
if (!args.paths || args.paths.length === 0) {
|
|
150
|
+
return text('export needs `paths`, e.g. ["StarterGui.Shop"].');
|
|
151
|
+
}
|
|
152
|
+
const written = await runExport(bridge, { ...base, direction: "both", paths: args.paths });
|
|
153
|
+
return json(written.map((entry) => ({
|
|
154
|
+
path: entry.path,
|
|
155
|
+
file: entry.file,
|
|
156
|
+
instances: entry.instances,
|
|
157
|
+
// Scripts are synced as files, not written into the build file.
|
|
158
|
+
scriptsLeftAsFiles: entry.scripts,
|
|
159
|
+
...(entry.skipped.length > 0 ? { propertiesNotExported: entry.skipped.slice(0, 30) } : {}),
|
|
160
|
+
})), "Edit the file, then sync op=\"build\" (or any push) rebuilds the tree in one undo step.");
|
|
161
|
+
}
|
|
162
|
+
case "build": {
|
|
163
|
+
const report = await runBuild(bridge, { ...base, direction: "push", files: args.files });
|
|
164
|
+
return text(render(report, "Built"));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/tools/sync.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@el4cteo/rbx-studio-mcp",
|
|
3
|
-
"version": "0.8.
|
|
4
|
-
"description": "MCP server for Roblox Studio.
|
|
3
|
+
"version": "0.8.6",
|
|
4
|
+
"description": "MCP server for Roblox Studio. 35 tools, push-based SSE bridge, two-way script sync with files, editor-safe script edits, one-step undo.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"node": ">=22.15"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "
|
|
27
|
+
"build": "node scripts/build.mjs",
|
|
28
28
|
"watch": "tsc --watch",
|
|
29
29
|
"typecheck": "tsc --noEmit",
|
|
30
30
|
"start": "node dist/index.js",
|
|
31
31
|
"build:plugin": "node scripts/check-plugin.mjs && node scripts/build-plugin.mjs",
|
|
32
32
|
"sourcemap": "node scripts/sourcemap.mjs",
|
|
33
33
|
"test:live": "node scripts/test-live.mjs",
|
|
34
|
-
"test": "node scripts/test-plugin.mjs && node scripts/test-transport.mjs && node scripts/test-server.mjs && node scripts/test-bridge.mjs && node scripts/test-console.mjs && node scripts/test-failover.mjs && node scripts/test-tools.mjs && node scripts/test-apidump.mjs",
|
|
34
|
+
"test": "node scripts/test-plugin.mjs && node scripts/test-transport.mjs && node scripts/test-server.mjs && node scripts/test-bridge.mjs && node scripts/test-console.mjs && node scripts/test-failover.mjs && node scripts/test-tools.mjs && node scripts/test-results.mjs && node scripts/test-sync.mjs && node scripts/test-sync-more.mjs && node scripts/test-apidump.mjs",
|
|
35
35
|
"build:all": "npm run build && npm run build:plugin",
|
|
36
36
|
"install:plugin": "node scripts/install-plugin.mjs",
|
|
37
37
|
"check:plugin": "node scripts/check-plugin.mjs",
|
package/plugin/src/Commands.luau
CHANGED
|
@@ -46,6 +46,9 @@ export type Hooks = {
|
|
|
46
46
|
-- Whether the panel may open itself on load, and the setter for it.
|
|
47
47
|
autoOpen: () -> boolean,
|
|
48
48
|
saveAutoOpen: (boolean) -> (),
|
|
49
|
+
-- Whether a line that is not a command is sent to an agent, and the setter.
|
|
50
|
+
chat: () -> boolean,
|
|
51
|
+
saveChat: (boolean) -> (),
|
|
49
52
|
-- The transport's own view of the connection, which the console only ever
|
|
50
53
|
-- receives second-hand as a string to display.
|
|
51
54
|
status: () -> string,
|
|
@@ -137,11 +140,16 @@ define({
|
|
|
137
140
|
for _, entry in entries do
|
|
138
141
|
Console.log("dim", " " .. entry.usage, entry.summary)
|
|
139
142
|
end
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
local current = hooks
|
|
144
|
+
if current ~= nil and current.chat() then
|
|
145
|
+
Console.log(
|
|
146
|
+
"dim",
|
|
147
|
+
" anything else",
|
|
148
|
+
"sent to a coding agent -- run `agent` to see which"
|
|
149
|
+
)
|
|
150
|
+
else
|
|
151
|
+
Console.log("dim", " anything else", "ignored -- `chat on` sends it to a coding agent")
|
|
152
|
+
end
|
|
145
153
|
end,
|
|
146
154
|
})
|
|
147
155
|
|
|
@@ -334,6 +342,56 @@ define({
|
|
|
334
342
|
end,
|
|
335
343
|
})
|
|
336
344
|
|
|
345
|
+
--[[
|
|
346
|
+
Whether a sentence typed at the prompt reaches an agent.
|
|
347
|
+
|
|
348
|
+
Off by default. A prompt starts a real agent -- a separate session, billed
|
|
349
|
+
separately -- so a line typed into the panel by habit, or pasted by mistake,
|
|
350
|
+
should not spend anything until the user has said they want that. Commands
|
|
351
|
+
are unaffected either way, and so are `agent` and `stop`.
|
|
352
|
+
]]
|
|
353
|
+
define({
|
|
354
|
+
name = "chat",
|
|
355
|
+
usage = "chat [on|off]",
|
|
356
|
+
summary = "let a coding agent answer sentences typed here; OFF by default",
|
|
357
|
+
run = function(args)
|
|
358
|
+
local current = hooks
|
|
359
|
+
if current == nil then
|
|
360
|
+
return
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
local wanted = args[1]
|
|
364
|
+
if #args > 1 or (wanted ~= nil and wanted ~= "on" and wanted ~= "off") then
|
|
365
|
+
Console.log("error", "usage: chat [on|off]")
|
|
366
|
+
return
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
if wanted == nil then
|
|
370
|
+
Console.log(
|
|
371
|
+
"dim",
|
|
372
|
+
if current.chat()
|
|
373
|
+
then "chat on -- a sentence is sent to a coding agent"
|
|
374
|
+
else "chat off -- a sentence is ignored; `chat on` to let an agent answer"
|
|
375
|
+
)
|
|
376
|
+
return
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
local value = wanted == "on"
|
|
380
|
+
if value == current.chat() then
|
|
381
|
+
Console.log("dim", string.format("already chat %s", wanted))
|
|
382
|
+
return
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
current.saveChat(value)
|
|
386
|
+
Console.setPromptChat(value)
|
|
387
|
+
if value then
|
|
388
|
+
Console.log("ok", "chat on", "type a sentence and a coding agent answers; `agent` shows which")
|
|
389
|
+
else
|
|
390
|
+
Console.log("ok", "chat off", "sentences are ignored; commands still run")
|
|
391
|
+
end
|
|
392
|
+
end,
|
|
393
|
+
})
|
|
394
|
+
|
|
337
395
|
define({
|
|
338
396
|
name = "place",
|
|
339
397
|
usage = "place",
|
|
@@ -648,6 +706,15 @@ function Commands.run(line: string)
|
|
|
648
706
|
return
|
|
649
707
|
end
|
|
650
708
|
end
|
|
709
|
+
local current = hooks
|
|
710
|
+
if current == nil or not current.chat() then
|
|
711
|
+
Console.log(
|
|
712
|
+
"dim",
|
|
713
|
+
"not a command, and chat is off -- nothing was sent",
|
|
714
|
+
"run `chat on` to let a coding agent answer sentences, or `help` for commands"
|
|
715
|
+
)
|
|
716
|
+
return
|
|
717
|
+
end
|
|
651
718
|
Console.setPromptBusy(true)
|
|
652
719
|
remote("prompt", words, trimmed)
|
|
653
720
|
return
|