@quenty/studio-bridge 0.1.1-canary.656.73a74af.0 → 0.2.0

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 (45) hide show
  1. package/CHANGELOG.md +37 -1
  2. package/build-scripts/transform-add-session-attribute.luau +17 -0
  3. package/dist/src/index.d.ts +0 -1
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +0 -1
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/plugin/plugin-injector.d.ts.map +1 -1
  8. package/dist/src/plugin/plugin-injector.js +11 -34
  9. package/dist/src/plugin/plugin-injector.js.map +1 -1
  10. package/dist/src/process/index.d.ts +0 -2
  11. package/dist/src/process/index.d.ts.map +1 -1
  12. package/dist/src/process/index.js +0 -1
  13. package/dist/src/process/index.js.map +1 -1
  14. package/dist/src/server/studio-bridge-server.d.ts +1 -1
  15. package/dist/src/server/studio-bridge-server.d.ts.map +1 -1
  16. package/dist/src/server/studio-bridge-server.js +38 -12
  17. package/dist/src/server/studio-bridge-server.js.map +1 -1
  18. package/dist/src/server/studio-bridge-server.test.js +94 -19
  19. package/dist/src/server/studio-bridge-server.test.js.map +1 -1
  20. package/dist/src/server/web-socket-protocol.d.ts +7 -1
  21. package/dist/src/server/web-socket-protocol.d.ts.map +1 -1
  22. package/dist/src/server/web-socket-protocol.js +8 -4
  23. package/dist/src/server/web-socket-protocol.js.map +1 -1
  24. package/dist/src/server/web-socket-protocol.smoke.test.js +18 -9
  25. package/dist/src/server/web-socket-protocol.smoke.test.js.map +1 -1
  26. package/dist/src/server/web-socket-protocol.test.js +47 -5
  27. package/dist/src/server/web-socket-protocol.test.js.map +1 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +5 -5
  30. package/src/index.ts +0 -1
  31. package/src/plugin/plugin-injector.ts +19 -45
  32. package/src/process/index.ts +0 -3
  33. package/src/server/studio-bridge-server.test.ts +113 -21
  34. package/src/server/studio-bridge-server.ts +66 -15
  35. package/src/server/web-socket-protocol.smoke.test.ts +18 -9
  36. package/src/server/web-socket-protocol.test.ts +61 -5
  37. package/src/server/web-socket-protocol.ts +15 -4
  38. package/templates/default-test-place/default.project.json +1 -1
  39. package/templates/studio-bridge-plugin/default.project.json +1 -1
  40. package/templates/studio-bridge-plugin/{plugin-template.server.lua → src/StudioBridgePlugin.server.lua} +18 -4
  41. package/dist/src/process/place-builder.d.ts +0 -16
  42. package/dist/src/process/place-builder.d.ts.map +0 -1
  43. package/dist/src/process/place-builder.js +0 -45
  44. package/dist/src/process/place-builder.js.map +0 -1
  45. package/src/process/place-builder.ts +0 -63
package/CHANGELOG.md CHANGED
@@ -3,7 +3,13 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## 0.1.1-canary.656.73a74af.0 (2026-02-17)
6
+ # 0.2.0 (2026-02-17)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Fix spinner design showing stuff ([814cd91](https://github.com/Quenty/NevermoreEngine/commit/814cd915358079f7d628a9739d0cd56e472b52f6))
12
+ * Local testing works consistently and in batch mode ([67d6ba1](https://github.com/Quenty/NevermoreEngine/commit/67d6ba1d3625dc76f7a54ac13e75da2cc82ccc64))
7
13
 
8
14
 
9
15
  ### Features
@@ -13,3 +19,33 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
13
19
  * Refactor studio bridge ([8afe642](https://github.com/Quenty/NevermoreEngine/commit/8afe6424b6635eaa0155734c085934051de88da6))
14
20
  * Use reporting system for studio bridge too (a bit ugly) ([20b675c](https://github.com/Quenty/NevermoreEngine/commit/20b675cb22cb46c88b556f4afdda2700dd1258dd))
15
21
  * Use yargs in studio-bridge cli ([2203601](https://github.com/Quenty/NevermoreEngine/commit/220360168e79d57cd576150134949d8f2325a38f))
22
+
23
+
24
+
25
+
26
+
27
+ # v0.2.0 (Tue Feb 17 2026)
28
+
29
+ #### 🚀 Enhancement
30
+
31
+ - feat: Open cloud deploy and testing results [#656](https://github.com/Quenty/NevermoreEngine/pull/656) ([@Quenty](https://github.com/Quenty))
32
+ - feat: Use yargs in studio-bridge cli ([@Quenty](https://github.com/Quenty))
33
+ - feat: Add a terminal mode to studio-bridge for easier debugging ([@Quenty](https://github.com/Quenty))
34
+ - feat: Use reporting system for studio bridge too (a bit ugly) ([@Quenty](https://github.com/Quenty))
35
+ - feat: Refactor studio bridge ([@Quenty](https://github.com/Quenty))
36
+ - feat: Add initial studio-bridge package that can replace run-in-roblox ([@Quenty](https://github.com/Quenty))
37
+
38
+ #### 🐛 Bug Fix
39
+
40
+ - fix: Fix spinner design showing stuff ([@Quenty](https://github.com/Quenty))
41
+ - fix: Local testing works consistently and in batch mode ([@Quenty](https://github.com/Quenty))
42
+ - refactor: plugin-template.server.lua -> StudioBridgePlugin ([@Quenty](https://github.com/Quenty))
43
+ - refactor: Handle studio brdige sessions appropriately ([@Quenty](https://github.com/Quenty))
44
+ - refactor: Lifecycle of constructed places is handled properly ([@Quenty](https://github.com/Quenty))
45
+ - refactor: Better life-cycle management of the build-context ([@Quenty](https://github.com/Quenty))
46
+ - refactor: Remove unused code and cleanup code here ([@Quenty](https://github.com/Quenty))
47
+ - refactor: Unify rojo building process in plugin ([@Quenty](https://github.com/Quenty))
48
+
49
+ #### Authors: 1
50
+
51
+ - James Onnen ([@Quenty](https://github.com/Quenty))
@@ -0,0 +1,17 @@
1
+ local fs = require("@lune/fs")
2
+ local process = require("@lune/process")
3
+ local roblox = require("@lune/roblox")
4
+
5
+ local inputPath = process.args[1]
6
+ local outputPath = process.args[2]
7
+ local sessionId = process.args[3]
8
+
9
+ if not inputPath or not outputPath or not sessionId then
10
+ process.exit(1)
11
+ end
12
+
13
+ local contents = fs.readFile(inputPath)
14
+ local game = roblox.deserializePlace(contents)
15
+ game:GetService("Workspace"):SetAttribute("StudioBridgeSessionId", sessionId)
16
+ local output = roblox.serializePlace(game)
17
+ fs.writeFile(outputPath, output)
@@ -12,7 +12,6 @@
12
12
  export { StudioBridgeServer as StudioBridge } from './server/studio-bridge-server.js';
13
13
  export type { StudioBridgeServerOptions, ExecuteOptions, StudioBridgeResult, StudioBridgePhase, } from './server/studio-bridge-server.js';
14
14
  export type { OutputLevel } from './server/web-socket-protocol.js';
15
- export { buildMinimalPlaceAsync } from './process/place-builder.js';
16
15
  export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './process/studio-process-manager.js';
17
16
  export { injectPluginAsync } from './plugin/plugin-injector.js';
18
17
  export { encodeMessage, decodePluginMessage, } from './server/web-socket-protocol.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACtF,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACtF,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,iCAAiC,CAAC"}
package/dist/src/index.js CHANGED
@@ -11,7 +11,6 @@
11
11
  */
12
12
  export { StudioBridgeServer as StudioBridge } from './server/studio-bridge-server.js';
13
13
  // Lower-level exports for advanced usage / testing
14
- export { buildMinimalPlaceAsync } from './process/place-builder.js';
15
14
  export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './process/studio-process-manager.js';
16
15
  export { injectPluginAsync } from './plugin/plugin-injector.js';
17
16
  export { encodeMessage, decodePluginMessage, } from './server/web-socket-protocol.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAStF,mDAAmD;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAStF,mDAAmD;AACnD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-injector.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CAwDzB"}
1
+ {"version":3,"file":"plugin-injector.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
@@ -2,9 +2,7 @@
2
2
  * Handles building and injecting the Studio plugin .rbxm file into Roblox
3
3
  * Studio's plugins folder via rojo, and cleaning it up afterwards.
4
4
  */
5
- import * as fs from 'fs/promises';
6
- import * as path from 'path';
7
- import { BuildContext, rojoBuildAsync, substituteTemplate, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
5
+ import { BuildContext, TemplateHelper, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
8
6
  import { findPluginsFolder } from '../process/studio-process-manager.js';
9
7
  const templateDir = resolveTemplatePath(import.meta.url, 'studio-bridge-plugin');
10
8
  /**
@@ -12,45 +10,24 @@ const templateDir = resolveTemplatePath(import.meta.url, 'studio-bridge-plugin')
12
10
  */
13
11
  export async function injectPluginAsync(options) {
14
12
  const { port, sessionId } = options;
15
- const luaTemplate = await fs.readFile(path.join(templateDir, 'plugin-template.server.lua'), 'utf-8');
16
- const luaSource = substituteTemplate(luaTemplate, {
17
- PORT: String(port),
18
- SESSION_ID: sessionId,
19
- });
20
- // Build plugin model in temp dir, output directly to Studio plugins folder
21
- const ctx = await BuildContext.createAsync({
22
- mode: 'temp',
13
+ const buildContext = await BuildContext.createAsync({
23
14
  prefix: 'studio-bridge-plugin-',
24
15
  });
25
16
  try {
26
- await ctx.writeFileAsync('plugin-template.server.lua', luaSource);
27
- // Copy the project JSON from the template dir into the temp build dir
28
- const projectJson = await fs.readFile(path.join(templateDir, 'default.project.json'), 'utf-8');
29
- const projectPath = await ctx.writeFileAsync('default.project.json', projectJson);
17
+ await TemplateHelper.createDirectoryContentsAsync(templateDir, buildContext.buildDir, { PORT: String(port), SESSION_ID: sessionId }, false);
30
18
  const pluginFileName = `studio-bridge-${sessionId}.rbxm`;
31
- await rojoBuildAsync({ projectPath, plugin: pluginFileName });
32
- await ctx.cleanupAsync();
33
- // Return handle for plugins-folder cleanup
34
- const pluginsFolder = findPluginsFolder();
35
- const pluginPath = path.join(pluginsFolder, pluginFileName);
36
- let cleaned = false;
19
+ const pluginPath = await buildContext.rojoBuildAsync({
20
+ projectPath: buildContext.resolvePath('default.project.json'),
21
+ plugin: pluginFileName,
22
+ pluginsFolder: findPluginsFolder(),
23
+ });
37
24
  return {
38
- pluginPath,
39
- cleanupAsync: async () => {
40
- if (cleaned)
41
- return;
42
- cleaned = true;
43
- try {
44
- await fs.unlink(pluginPath);
45
- }
46
- catch {
47
- // File may already be gone
48
- }
49
- },
25
+ pluginPath: pluginPath,
26
+ cleanupAsync: () => buildContext.cleanupAsync(),
50
27
  };
51
28
  }
52
29
  catch (err) {
53
- await ctx.cleanupAsync();
30
+ await buildContext.cleanupAsync();
54
31
  throw err;
55
32
  }
56
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-injector.js","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAcjF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,EACpD,OAAO,CACR,CAAC;IACF,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,EAAE;QAChD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,UAAU,EAAE,SAAS;KACtB,CAAC,CAAC;IAEH,2EAA2E;IAC3E,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;QACzC,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,cAAc,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;QAElE,sEAAsE;QACtE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,EAC9C,OAAO,CACR,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,CAC1C,sBAAsB,EACtB,WAAW,CACZ,CAAC;QAEF,MAAM,cAAc,GAAG,iBAAiB,SAAS,OAAO,CAAC;QACzD,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9D,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;QAEzB,2CAA2C;QAC3C,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,OAAO;YACL,UAAU;YACV,YAAY,EAAE,KAAK,IAAI,EAAE;gBACvB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plugin-injector.js","sourceRoot":"","sources":["../../../src/plugin/plugin-injector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,GAAG,mBAAmB,CACrC,MAAM,CAAC,IAAI,CAAC,GAAG,EACf,sBAAsB,CACvB,CAAC;AAcF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA4B;IAE5B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;QAClD,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,4BAA4B,CAC/C,WAAW,EACX,YAAY,CAAC,QAAQ,EACrB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAC7C,KAAK,CACN,CAAC;QAEF,MAAM,cAAc,GAAG,iBAAiB,SAAS,OAAO,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,sBAAsB,CAAC;YAC7D,MAAM,EAAE,cAAc;YACtB,aAAa,EAAE,iBAAiB,EAAE;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,UAAU,EAAE,UAAW;YACvB,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE;SAChD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,5 +1,3 @@
1
1
  export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './studio-process-manager.js';
2
2
  export type { StudioProcess } from './studio-process-manager.js';
3
- export { buildMinimalPlaceAsync } from './place-builder.js';
4
- export type { BuiltPlace } from './place-builder.js';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,3 +1,2 @@
1
1
  export { findStudioPathAsync, findPluginsFolder, launchStudioAsync, } from './studio-process-manager.js';
2
- export { buildMinimalPlaceAsync } from './place-builder.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC"}
@@ -42,7 +42,7 @@ export declare class StudioBridgeServer {
42
42
  private _wss;
43
43
  private _pluginHandle;
44
44
  private _studioProc;
45
- private _builtPlace;
45
+ private _placeBuildContext;
46
46
  private _connectedClient;
47
47
  constructor(options?: StudioBridgeServerOptions);
48
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"studio-bridge-server.d.ts","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAkBlC,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC;gEAC4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,gBAAgB,CAAwB;gBAEpC,OAAO,GAAE,yBAA8B;IAWnD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDjC;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0CxE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BhC,OAAO,CAAC,sBAAsB;IAmF9B,OAAO,CAAC,2BAA2B;YAsGrB,sBAAsB;CAiCrC"}
1
+ {"version":3,"file":"studio-bridge-server.d.ts","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAyBlC,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC;gEAC4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAoCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAwB;gBAEpC,OAAO,GAAE,yBAA8B;IAWnD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA6EjC;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2CxE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BhC,OAAO,CAAC,sBAAsB;IAwF9B,OAAO,CAAC,2BAA2B;YA6GrB,sBAAsB;CAiCrC"}
@@ -9,12 +9,15 @@
9
9
  * await server.stopAsync();
10
10
  */
11
11
  import { randomUUID } from 'crypto';
12
+ import * as path from 'path';
12
13
  import { WebSocketServer } from 'ws';
13
14
  import { OutputHelper } from '@quenty/cli-output-helpers';
15
+ import { BuildContext, resolvePackagePath, resolveTemplatePath, } from '@quenty/nevermore-template-helpers';
14
16
  import { encodeMessage, decodePluginMessage, } from './web-socket-protocol.js';
15
17
  import { injectPluginAsync, } from '../plugin/plugin-injector.js';
16
18
  import { launchStudioAsync, } from '../process/studio-process-manager.js';
17
- import { buildMinimalPlaceAsync, } from '../process/place-builder.js';
19
+ const defaultProjectPath = resolveTemplatePath(import.meta.url, path.join('default-test-place', 'default.project.json'));
20
+ const sessionAttributeTransformScript = resolvePackagePath(import.meta.url, 'build-scripts', 'transform-add-session-attribute.luau');
18
21
  // ---------------------------------------------------------------------------
19
22
  // Implementation
20
23
  // ---------------------------------------------------------------------------
@@ -45,7 +48,7 @@ export class StudioBridgeServer {
45
48
  _wss;
46
49
  _pluginHandle;
47
50
  _studioProc;
48
- _builtPlace;
51
+ _placeBuildContext;
49
52
  _connectedClient;
50
53
  constructor(options = {}) {
51
54
  this._sessionId = options.sessionId ?? randomUUID();
@@ -66,15 +69,26 @@ export class StudioBridgeServer {
66
69
  }
67
70
  this._state = 'starting';
68
71
  try {
72
+ this._placeBuildContext = await BuildContext.createAsync({
73
+ prefix: 'studio-bridge-',
74
+ });
69
75
  // 0. Build a minimal place if none was provided
70
76
  let placePath = this._placePath;
71
77
  if (!placePath) {
72
78
  this._onPhase?.('building');
73
- this._builtPlace = await buildMinimalPlaceAsync();
74
- placePath = this._builtPlace.placePath;
79
+ const builtPlacePath = this._placeBuildContext.resolvePath('minimal.rbxl');
80
+ await this._placeBuildContext.rojoBuildAsync({
81
+ projectPath: defaultProjectPath,
82
+ output: builtPlacePath,
83
+ });
84
+ placePath = builtPlacePath;
75
85
  }
76
- // 1. Start WebSocket server
77
- this._wss = new WebSocketServer({ port: 0 });
86
+ // 0b. Stamp session ID attribute onto the place file
87
+ const transformedPlacePath = this._placeBuildContext.resolvePath('studio-bridge-with-session-id.rbxl');
88
+ await this._placeBuildContext.executeLuneTransformScriptAsync(sessionAttributeTransformScript, placePath, transformedPlacePath, this._sessionId);
89
+ placePath = transformedPlacePath;
90
+ // 1. Start WebSocket server (unique path rejects wrong connections at HTTP upgrade level)
91
+ this._wss = new WebSocketServer({ port: 0, path: `/${this._sessionId}` });
78
92
  const port = await startWsServerAsync(this._wss);
79
93
  OutputHelper.verbose(`[StudioBridge] WebSocket server listening on port ${port}`);
80
94
  // 2. Inject plugin (no scriptContent — scripts are sent via execute messages)
@@ -118,6 +132,7 @@ export class StudioBridgeServer {
118
132
  // Send execute message
119
133
  this._connectedClient.send(encodeMessage({
120
134
  type: 'execute',
135
+ sessionId: this._sessionId,
121
136
  payload: { script: options.scriptContent },
122
137
  }));
123
138
  // Wait for result
@@ -150,7 +165,11 @@ export class StudioBridgeServer {
150
165
  // Send shutdown to connected client
151
166
  if (this._connectedClient) {
152
167
  try {
153
- this._connectedClient.send(encodeMessage({ type: 'shutdown', payload: {} }));
168
+ this._connectedClient.send(encodeMessage({
169
+ type: 'shutdown',
170
+ sessionId: this._sessionId,
171
+ payload: {},
172
+ }));
154
173
  }
155
174
  catch {
156
175
  // ignore
@@ -179,14 +198,17 @@ export class StudioBridgeServer {
179
198
  if (!msg || msg.type !== 'hello') {
180
199
  return;
181
200
  }
182
- if (msg.payload.sessionId !== this._sessionId) {
183
- OutputHelper.verbose(`[StudioBridge] Ignoring hello with wrong session ID: ${msg.payload.sessionId}`);
201
+ if (msg.sessionId !== this._sessionId ||
202
+ msg.payload.sessionId !== this._sessionId) {
203
+ OutputHelper.verbose(`[StudioBridge] Rejecting hello with wrong session ID`);
204
+ ws.close();
184
205
  return;
185
206
  }
186
207
  // Handshake accepted
187
208
  OutputHelper.verbose('[StudioBridge] Handshake accepted');
188
209
  ws.send(encodeMessage({
189
210
  type: 'welcome',
211
+ sessionId: this._sessionId,
190
212
  payload: { sessionId: this._sessionId },
191
213
  }));
192
214
  ws.off('message', onMessage);
@@ -256,6 +278,10 @@ export class StudioBridgeServer {
256
278
  OutputHelper.verbose(`[StudioBridge] Ignoring malformed message: ${data.slice(0, 200)}`);
257
279
  return;
258
280
  }
281
+ if (msg.sessionId !== this._sessionId) {
282
+ OutputHelper.verbose(`[StudioBridge] Ignoring message with wrong session ID`);
283
+ return;
284
+ }
259
285
  switch (msg.type) {
260
286
  case 'output': {
261
287
  for (const entry of msg.payload.messages) {
@@ -317,9 +343,9 @@ export class StudioBridgeServer {
317
343
  this._pluginHandle = undefined;
318
344
  }
319
345
  // Remove auto-built place
320
- if (this._builtPlace) {
321
- await this._builtPlace.cleanupAsync();
322
- this._builtPlace = undefined;
346
+ if (this._placeBuildContext) {
347
+ await this._placeBuildContext.cleanupAsync();
348
+ this._placeBuildContext = undefined;
323
349
  }
324
350
  // Close WebSocket server — terminate lingering connections first so
325
351
  // the 'close' callback fires promptly.
@@ -1 +1 @@
1
- {"version":3,"file":"studio-bridge-server.js","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio-bridge-server.js","sourceRoot":"","sources":["../../../src/server/studio-bridge-server.ts"],"names":[],"mappings":"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"}