@el4cteo/rbx-studio-mcp 0.8.4 → 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.
Files changed (65) hide show
  1. package/README.md +20 -3
  2. package/dist/bridge/rpc.js +1 -1
  3. package/dist/bridge/rpc.js.map +1 -1
  4. package/dist/index.js +7 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/apidump.js +75 -0
  7. package/dist/lib/apidump.js.map +1 -1
  8. package/dist/lib/errors.js +5 -4
  9. package/dist/lib/errors.js.map +1 -1
  10. package/dist/lib/format.js +92 -25
  11. package/dist/lib/format.js.map +1 -1
  12. package/dist/lib/notices.js +29 -0
  13. package/dist/lib/notices.js.map +1 -0
  14. package/dist/lib/protocol.js.map +1 -1
  15. package/dist/lib/sync.js +1141 -0
  16. package/dist/lib/sync.js.map +1 -0
  17. package/dist/lib/syncplan.js +338 -0
  18. package/dist/lib/syncplan.js.map +1 -0
  19. package/dist/lib/tool.js +9 -2
  20. package/dist/lib/tool.js.map +1 -1
  21. package/dist/tools/discover.js +6 -1
  22. package/dist/tools/discover.js.map +1 -1
  23. package/dist/tools/exec.js +5 -0
  24. package/dist/tools/exec.js.map +1 -1
  25. package/dist/tools/instances.js +2 -2
  26. package/dist/tools/instances.js.map +1 -1
  27. package/dist/tools/perf.js +28 -3
  28. package/dist/tools/perf.js.map +1 -1
  29. package/dist/tools/screenshot.js +7 -3
  30. package/dist/tools/screenshot.js.map +1 -1
  31. package/dist/tools/scripts.js +110 -28
  32. package/dist/tools/scripts.js.map +1 -1
  33. package/dist/tools/sync.js +169 -0
  34. package/dist/tools/sync.js.map +1 -0
  35. package/package.json +4 -4
  36. package/plugin/src/Config.luau +1 -1
  37. package/plugin/src/Dispatch.luau +131 -90
  38. package/plugin/src/ExecRuntime.luau +190 -168
  39. package/plugin/src/LogBuffer.luau +38 -9
  40. package/plugin/src/Paths.luau +42 -0
  41. package/plugin/src/Phrase.luau +41 -0
  42. package/plugin/src/ScriptEdit.luau +94 -8
  43. package/plugin/src/Serialize.luau +16 -1
  44. package/plugin/src/Transport.luau +5 -2
  45. package/plugin/src/Undo.luau +74 -10
  46. package/plugin/src/handlers/Capture.luau +818 -809
  47. package/plugin/src/handlers/Debug.luau +19 -16
  48. package/plugin/src/handlers/Discover.luau +31 -1
  49. package/plugin/src/handlers/Perf.luau +100 -21
  50. package/plugin/src/handlers/Scripts.luau +274 -90
  51. package/plugin/src/handlers/Sync.luau +968 -0
  52. package/plugin/src/init.server.luau +33 -2
  53. package/scripts/build.mjs +14 -0
  54. package/scripts/sync-fake.mjs +191 -0
  55. package/scripts/test-live-sync-scale.mjs +150 -0
  56. package/scripts/test-live-sync.mjs +232 -0
  57. package/scripts/test-live-tools.mjs +6 -1
  58. package/scripts/test-plugin.mjs +16 -0
  59. package/scripts/test-results.mjs +41 -0
  60. package/scripts/test-sync-more.mjs +228 -0
  61. package/scripts/test-sync.mjs +245 -0
  62. package/dist/tools/spatial.js +0 -135
  63. package/dist/tools/spatial.js.map +0 -1
  64. package/dist/tools/upload.js +0 -294
  65. package/dist/tools/upload.js.map +0 -1
@@ -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
- "Matches come from the script editor's live buffer, so unsaved edits are " +
431
- "searched too.",
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 alternation = !args.literal && args.pattern.includes("|");
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
- "Search one alternative per call, or set `literal`."
495
- : args.literal
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
- const lines = [];
501
- let previousPath = "";
502
- for (const match of response.items) {
503
- // Context blocks get a separator; a flat list of adjacent lines is
504
- // otherwise impossible to tell apart from a run of separate matches.
505
- if (match.path !== previousPath) {
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
- const trailer = [`[searched ${response.searched} scripts]`];
519
- const nextOffset = offset + response.items.length;
520
- if (nextOffset < response.total) {
521
- trailer.unshift(`[showing ${response.items.length} of ${response.total} matches — call again ` +
522
- `with cursor: "${encodeCursor(nextOffset)}"]`);
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
- return body([...lines, "", ...trailer].join("\n"), "re-run with a smaller `limit` or a narrower `path`");
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAC;AAC/J,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAuD9D;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,OAAoB,EAAE,UAAmB;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6E,CAAC;IACpG,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBAC5E,KAAK,EAAE,IAAI,GAAG,EAAE;gBAChB,IAAI,EAAE,IAAI,GAAG,EAAE;aAChB,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;gBAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,KAAK,CAAC,GAAG,CACb,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI;YACR,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CAAC;QACF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;gBAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;SACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;aAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,SAAiB;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;SAC7E,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,MAAgB,EAChB,KAA4B,EAC5B,QAAuB;IAEvB,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe;QAAE,OAAO,KAAK,CAAC;IAElD,MAAM,MAAM,GAAG,eAAe,GAAG,GAAG,CAAC;IACrC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC7D,KAAK,IAAI,SAAS,GAAG,KAAK,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,0CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1F,IAAI,IAAI,KAAK,EAAE;YAAE,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC;QAC3C,MAAM,IAAI,GACR,IAAI,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAC1C,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,kBAAkB,QAAQ,OAAO,IAAI,CAAC,SAAS,kBAAkB;gBAC7E,YAAY,IAAI,CAAC,IAAI,iBAAiB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC5D,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,KAAK;YACP,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,iBAAiB,iBAAiB,CAAC;QAC1D,OAAO,GAAG,KAAK,mBAAmB,eAAe,gBAAgB,IAAI,GAAG,IAAI,GAAG,CAAC;IAClF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAoB;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,qEAAqE;YACrE,0CAA0C;YAC1C,4EAA4E;YAC5E,2EAA2E;YAC3E,6EAA6E;YAC7E,WAAW;YACX,oEAAoE;YACpE,0EAA0E;YAC1E,yEAAyE;YACzE,0EAA0E;YAC1E,sBAAsB;YACtB,yEAAyE;YACzE,qEAAqE;YACrE,sEAAsE;YACtE,cAAc;YACd,0EAA0E;YAC1E,yEAAyE;YACzE,uEAAuE;YACvE,6BAA6B;YAC7B,wEAAwE;YACxE,+DAA+D;YAC/D,oEAAoE;YACpE,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,kEAAkE;YAClE,qEAAqE;YACrE,kDAAkD;QACpD,WAAW,EAAE;YACX,EAAE,EAAE,CAAC;iBACF,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACtB,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACP,mEAAmE;gBACjE,sDAAsD,CACzD;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,uCAAuC,CAAC;YACpD,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACxB,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,CACP,4DAA4D;gBAC1D,kDAAkD,CACrD;YACH,IAAI,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,kEAAkE;gBAChE,gDAAgD,CACnD;YACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAChF,KAAK,EAAE,CAAC;iBACL,KAAK,CACJ,CAAC,CAAC,KAAK,CAAC;gBACN,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;gBACnD,CAAC,CAAC,MAAM,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBAChD,SAAS,EAAE,CAAC;yBACT,MAAM,EAAE;yBACR,GAAG,EAAE;yBACL,GAAG,CAAC,CAAC,CAAC;yBACN,QAAQ,EAAE;yBACV,QAAQ,CAAC,kEAAkE,CAAC;oBAC/E,OAAO,EAAE,CAAC;yBACP,MAAM,EAAE;yBACR,GAAG,EAAE;yBACL,GAAG,CAAC,CAAC,CAAC;yBACN,QAAQ,EAAE;yBACV,QAAQ,CAAC,qDAAqD,CAAC;iBACnE,CAAC;aACH,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CACP,kEAAkE;gBAChE,wDAAwD,CAC3D;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,gEAAgE;gBAC9D,sCAAsC,CACzC;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,sEAAsE;gBACpE,kBAAkB,CACrB;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACpF;QACD,uEAAuE;QACvE,yDAAyD;QACzD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;KACnB,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,sBAAsB,CAAC,MAAM,EAAE;gBACnC,UAAU;gBACV,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBACrE,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;YAE/D,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,mEAAmE;gBACnE,gDAAgD;gBAChD,MAAM,EAAE,GACN,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;oBACnC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE;oBAChB,CAAC,CAAC,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;oBAC/C,UAAU;oBACV,OAAO;oBACP,UAAU,EAAE,EAAE,CAAC,EAAE;oBACjB,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAmC,CAAC;gBAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,IAAI,CACT,iBAAiB,MAAM,IAAI,UAAU,kCAAkC;wBACrE,sCAAsC,CACzC,CAAC;gBACJ,CAAC;gBACD,OAAO,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC,oCAAoC,CAAC,CAAC;YACjF,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE;gBAC3C,UAAU;gBACV,OAAO;gBACP,UAAU,EAAE,EAAE,CAAC,EAAE;aAClB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,IAAI,CACT,GAAG,MAAM,SAAS,IAAI,CAAC,WAAW,CAAC,2BAA2B;oBAC5D,4CAA4C,CAC/C,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACvB;;;;eAIG;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,aAAa,EACb,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACzB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;YACF,OAAO,IAAI,CACT,UAAU,MAAM,CAAC,IAAI,YAAY;gBAC/B,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9D,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,2CAA2C;oBACvE,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,aAAa,EACb,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EACvE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B,CAAC;QAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAE5E,qEAAqE;YACrE,wEAAwE;YACxE,gEAAgE;YAChE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,aAAa,CAAC;gBACvD,CAAC;gBACD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,SAAS,CAAC;gBAC5E,sEAAsE;gBACtE,qEAAqE;gBACrE,YAAY;gBACZ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChE,OAAO,CACL,GAAG,MAAM,IAAI;wBACb,4BAA4B,IAAI,CAAC,OAAO,uBAAuB;wBAC/D,GAAG,IAAI,CAAC,SAAS,8CAA8C,CAChE,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,KAAK,SAAS;oBACxB,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;oBAC3C,CAAC,CAAC,QAAQ,IAAI,CAAC,SAAS,UAAU,CAAC;gBACvC,OAAO,CACL,GAAG,MAAM,IAAI;oBACb,GAAG,KAAK,qCAAqC,IAAI,CAAC,SAAS,GAAG,CAC/D,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GACT,KAAK,KAAK,IAAI,CAAC,SAAS;gBACtB,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,QAAQ;gBAC3B,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YACnF,yEAAyE;YACzE,oEAAoE;YACpE,oCAAoC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E;;;;eAIG;YACH,MAAM,MAAM,GACV,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,kDAAkD,IAAI,CAAC,QAAQ,qBAAqB;oBACpF,4EAA4E;gBAC9E,CAAC,CAAC,EAAE,CAAC;YACT,OAAO,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAClH,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GACZ,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,CAAC,MAAM,aAAa;gBACvD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC,CACF,CAAC;IAEF,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,0EAA0E;YAC1E,0CAA0C;YAC1C,wEAAwE;YACxE,2EAA2E;YAC3E,qEAAqE;YACrE,wBAAwB;YACxB,qCAAqC;YACrC,4EAA4E;YAC5E,oEAAoE;YACpE,qEAAqE;YACrE,0EAA0E;YAC1E,6EAA6E;YAC7E,0DAA0D;YAC1D,2EAA2E;YAC3E,8DAA8D;YAC9D,yEAAyE;YACzE,qEAAqE;YACrE,6DAA6D;YAC7D,sEAAsE;YACtE,yEAAyE;YACzE,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,wBAAwB;YACxB,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,0DAA0D;YAC1D,oEAAoE;YACpE,+DAA+D;YAC/D,mEAAmE;YACnE,mEAAmE;YACnE,mCAAmC;YACnC,kEAAkE;YAClE,kEAAkE;YAClE,mDAAmD;QACrD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACxB,OAAO,CAAC,QAAQ,CAAC;iBACjB,QAAQ,CACP,iEAAiE;gBAC/D,+DAA+D;gBAC/D,OAAO,CACV;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YAC/F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC7E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAChF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACvE,KAAK,EAAE,CAAC;iBACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC;qBACJ,MAAM,EAAE;qBACR,QAAQ,CAAC,4DAA4D,CAAC;gBACzE,IAAI,EAAE,CAAC;qBACJ,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,mEAAmE;oBACjE,iBAAiB,CACpB;gBACH,OAAO,EAAE,CAAC;qBACP,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,uEAAuE,CAAC;gBACpF,UAAU,EAAE,CAAC;qBACV,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CACP,gEAAgE;oBAC9D,mDAAmD,CACtD;gBACH,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,EAAE;qBACV,QAAQ,CAAC,+CAA+C,CAAC;gBAC5D,OAAO,EAAE,CAAC;qBACP,MAAM,EAAE;qBACR,GAAG,EAAE;qBACL,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,EAAE;qBACV,QAAQ,CACP,mEAAmE;oBACjE,6DAA6D,CAChE;gBACH,WAAW,EAAE,CAAC;qBACX,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,0DAA0D,CAAC;gBACvE,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,2DAA2D,CAAC;gBACxE,QAAQ,EAAE,CAAC;qBACR,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,qEAAqE;oBACnE,mEAAmE;oBACnE,+CAA+C,CAClD;aACJ,CAAC,CACH;iBACA,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF;gBAClF,mFAAmF,CACtF;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACpF;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5C,MAAM,IAAI,SAAS,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CACjB,eAAe,EACf,gDAAgD,EAChD,qEAAqE;oBACnE,wDAAwD,CAC3D,CAAC;YACJ,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,sBAAsB,CAAC,MAAM,EAAE;gBACnC,UAAU;gBACV,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBACrE,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,IAAI,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,KAAK,aAAa,IAAI,EAAE,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;gBACnG,MAAM,IAAI,SAAS,CACjB,YAAY,EACZ,GAAG,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC,SAAS,iCAAiC,CACnE,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CACT,MAAM,eAAe,CAAC,WAAW,EAAE;gBACjC,UAAU;gBACV,OAAO;gBACP,UAAU,EAAE,EAAE,CAAC,EAAE;gBACjB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,YAAY,EAAE,kDAAkD,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,aAAa,EACb,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EACrB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAC/C,CAAC;QAEF,OAAO,KAAK,CACV,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,EAC/D,QAAQ,CAAC,KAAkD,CAC5D,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,0EAA0E;YAC1E,wCAAwC;YACxC,0EAA0E;YAC1E,wEAAwE;YACxE,4EAA4E;YAC5E,sEAAsE;YACtE,4EAA4E;YAC5E,4CAA4C;YAC5C,8EAA8E;YAC9E,4EAA4E;YAC5E,+EAA+E;YAC/E,+DAA+D;YAC/D,4EAA4E;YAC5E,uEAAuE;YACvE,iCAAiC;QACnC,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACpF,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,qEAAqE,CAAC;YAClF,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;iBAClC,OAAO,CAAC,OAAO,CAAC;iBAChB,QAAQ,CAAC,4GAA4G,CAAC;YACzH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+EAA+E,CAAC;YAC5F,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,0DAA0D,CAAC;YACvE,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,uEAAuE;gBACrE,oDAAoD,CACvD;YACH,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,OAAO,CAAC,CAAC,CAAC;iBACV,QAAQ,CAAC,qDAAqD,CAAC;YAClE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,YAAY;YACpB,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,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CAAC,YAAY,EAAE,gEAAgE,CAAC,CAAC;QACtG,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,aAAa,EACb;YACE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM;SACP,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAC/C,CAAC;QAEF,0EAA0E;QAC1E,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;gBACV,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;gBACxC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7F,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CACT,IAAI,CAAC,IAAI;oBACP,CAAC,CAAC,qBAAqB,IAAI,CAAC,IAAI,cAAc;oBAC9C,CAAC,CAAC,iCAAiC,CACtC,CAAC;YACJ,CAAC;YACD,yEAAyE;YACzE,sCAAsC;YACtC,wEAAwE;YACxE,wEAAwE;YACxE,kEAAkE;YAClE,+CAA+C;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;YAC5D,MAAM,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnE,OAAO,IAAI,CACT,iBAAiB,QAAQ,CAAC,QAAQ,eAAe;gBAC/C,CAAC,WAAW;oBACV,CAAC,CAAC,iEAAiE;wBACjE,kEAAkE;wBAClE,8CAA8C;oBAChD,CAAC,CAAC,OAAO;wBACP,CAAC,CAAC,sEAAsE;wBACxE,CAAC,CAAC,qEAAqE;4BACrE,4CAA4C,CAAC,CACtD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAkD,EAAE;gBACtH,MAAM;gBACN,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,YAAY,QAAQ,CAAC,QAAQ,UAAU;aAC9C,CAAC,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,+DAA+D;QAC/D,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,eAAe,GAAG,GAAG,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM;oBAAE,GAAG,GAAG,MAAM,CAAC;;oBACjG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,KAAK,GAAG,GAAG,CAAC;YACZ,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;gBAAE,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,0CAA0C,CAAC;QACpH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;QAClC,MAAM,OAAO,GACX,UAAU,GAAG,QAAQ,CAAC,KAAK;YACzB,CAAC,CAAC,YAAY,KAAK,OAAO,QAAQ,CAAC,KAAK,sBAAsB,QAAQ,CAAC,QAAQ,uCAAuC,YAAY,CAAC,UAAU,CAAC,IAAI;YAClJ,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,SAAS,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,QAAQ,CAAC,QAAQ,WAAW,CAAC;QAC5G,OAAO,IAAI,CAAC,GAAG,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC,CACF,CAAC;IAEF,UAAU,CACR,OAAO,EACP;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,8EAA8E;YAC9E,mEAAmE;YACnE,yEAAyE;YACzE,wEAAwE;YACxE,wEAAwE;YACxE,0EAA0E;YAC1E,2EAA2E;YAC3E,sEAAsE;YACtE,gBAAgB;YAChB,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,kCAAkC;YAClC,2DAA2D;QAC7D,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,CAAC,kEAAkE,CAAC;gBAC/E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBACrD,SAAS,EAAE,CAAC;qBACT,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;qBAC/C,QAAQ,CAAC,iCAAiC,CAAC;gBAC9C,MAAM,EAAE,CAAC;qBACN,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,sDAAsD,CAAC;gBACnE,UAAU,EAAE,CAAC;qBACV,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;qBACpC,QAAQ,EAAE;qBACV,QAAQ,CACP,mEAAmE;oBACjE,oDAAoD,CACvD;gBACH,QAAQ,EAAE,CAAC;qBACR,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,8DAA8D,CAAC;aAC5E,CAAC,CACH;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACpF;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,eAAe,EACf,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;QACzB,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,mEAAmE;QACnE,4BAA4B;QAC5B,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAC/C,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,CACnB,CAAC,MAAM,EAAE,WAAW,CAAC,EACrB,QAAQ,CAAC,KAAkD,EAC3D;YACE,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACrB,CAAC,CAAC,0BAA0B,QAAQ,CAAC,QAAQ,wBAAwB;oBACnE,2BAA2B;gBAC7B,CAAC,CAAC,mEAAmE;oBACnE,kBAAkB;SACvB,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAEzE,sEAAsE;QACtE,gCAAgC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,IAAI,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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",
4
- "description": "MCP server for Roblox Studio. 34 tools, push-based SSE bridge, editor-safe script edits, one-step undo.",
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": "tsc",
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",
@@ -9,7 +9,7 @@
9
9
 
10
10
  local Config = {}
11
11
 
12
- Config.PLUGIN_VERSION = "0.8.4"
12
+ Config.PLUGIN_VERSION = "0.8.6"
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