rbxstudio-mcp 2.3.1 → 2.4.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 (175) hide show
  1. package/README.md +67 -14
  2. package/dist/__tests__/bridge-service.test.js +25 -13
  3. package/dist/__tests__/bridge-service.test.js.map +1 -1
  4. package/dist/__tests__/bridge-session.test.d.ts +2 -0
  5. package/dist/__tests__/bridge-session.test.d.ts.map +1 -0
  6. package/dist/__tests__/bridge-session.test.js +171 -0
  7. package/dist/__tests__/bridge-session.test.js.map +1 -0
  8. package/dist/__tests__/chunker.test.d.ts +2 -0
  9. package/dist/__tests__/chunker.test.d.ts.map +1 -0
  10. package/dist/__tests__/chunker.test.js +201 -0
  11. package/dist/__tests__/chunker.test.js.map +1 -0
  12. package/dist/__tests__/docs-core.test.d.ts +2 -0
  13. package/dist/__tests__/docs-core.test.d.ts.map +1 -0
  14. package/dist/__tests__/docs-core.test.js +137 -0
  15. package/dist/__tests__/docs-core.test.js.map +1 -0
  16. package/dist/__tests__/docs-fetcher.test.d.ts +2 -0
  17. package/dist/__tests__/docs-fetcher.test.d.ts.map +1 -0
  18. package/dist/__tests__/docs-fetcher.test.js +173 -0
  19. package/dist/__tests__/docs-fetcher.test.js.map +1 -0
  20. package/dist/__tests__/helpers.d.ts +8 -0
  21. package/dist/__tests__/helpers.d.ts.map +1 -0
  22. package/dist/__tests__/helpers.js +23 -0
  23. package/dist/__tests__/helpers.js.map +1 -0
  24. package/dist/__tests__/http-routes.test.d.ts +2 -0
  25. package/dist/__tests__/http-routes.test.d.ts.map +1 -0
  26. package/dist/__tests__/http-routes.test.js +233 -0
  27. package/dist/__tests__/http-routes.test.js.map +1 -0
  28. package/dist/__tests__/http-server.test.js +13 -6
  29. package/dist/__tests__/http-server.test.js.map +1 -1
  30. package/dist/__tests__/integration.test.js +9 -4
  31. package/dist/__tests__/integration.test.js.map +1 -1
  32. package/dist/__tests__/semantic-search.test.d.ts +2 -0
  33. package/dist/__tests__/semantic-search.test.d.ts.map +1 -0
  34. package/dist/__tests__/semantic-search.test.js +202 -0
  35. package/dist/__tests__/semantic-search.test.js.map +1 -0
  36. package/dist/__tests__/smoke.test.js +7 -3
  37. package/dist/__tests__/smoke.test.js.map +1 -1
  38. package/dist/__tests__/studio-client.test.d.ts +2 -0
  39. package/dist/__tests__/studio-client.test.d.ts.map +1 -0
  40. package/dist/__tests__/studio-client.test.js +25 -0
  41. package/dist/__tests__/studio-client.test.js.map +1 -0
  42. package/dist/__tests__/tool-nudges.test.d.ts +2 -0
  43. package/dist/__tests__/tool-nudges.test.d.ts.map +1 -0
  44. package/dist/__tests__/tool-nudges.test.js +60 -0
  45. package/dist/__tests__/tool-nudges.test.js.map +1 -0
  46. package/dist/__tests__/tool-registry.test.d.ts +2 -0
  47. package/dist/__tests__/tool-registry.test.d.ts.map +1 -0
  48. package/dist/__tests__/tool-registry.test.js +365 -0
  49. package/dist/__tests__/tool-registry.test.js.map +1 -0
  50. package/dist/__tests__/tools-bridge.test.d.ts +2 -0
  51. package/dist/__tests__/tools-bridge.test.d.ts.map +1 -0
  52. package/dist/__tests__/tools-bridge.test.js +396 -0
  53. package/dist/__tests__/tools-bridge.test.js.map +1 -0
  54. package/dist/__tests__/tools-docs.test.d.ts +2 -0
  55. package/dist/__tests__/tools-docs.test.d.ts.map +1 -0
  56. package/dist/__tests__/tools-docs.test.js +112 -0
  57. package/dist/__tests__/tools-docs.test.js.map +1 -0
  58. package/dist/__tests__/tools-guards.test.d.ts +2 -0
  59. package/dist/__tests__/tools-guards.test.d.ts.map +1 -0
  60. package/dist/__tests__/tools-guards.test.js +131 -0
  61. package/dist/__tests__/tools-guards.test.js.map +1 -0
  62. package/dist/__tests__/tools-runtime.test.d.ts +2 -0
  63. package/dist/__tests__/tools-runtime.test.d.ts.map +1 -0
  64. package/dist/__tests__/tools-runtime.test.js +214 -0
  65. package/dist/__tests__/tools-runtime.test.js.map +1 -0
  66. package/dist/__tests__/tools-visual.test.d.ts +2 -0
  67. package/dist/__tests__/tools-visual.test.d.ts.map +1 -0
  68. package/dist/__tests__/tools-visual.test.js +149 -0
  69. package/dist/__tests__/tools-visual.test.js.map +1 -0
  70. package/dist/bridge-service.d.ts +99 -12
  71. package/dist/bridge-service.d.ts.map +1 -1
  72. package/dist/bridge-service.js +238 -21
  73. package/dist/bridge-service.js.map +1 -1
  74. package/dist/docs/cache.d.ts +50 -0
  75. package/dist/docs/cache.d.ts.map +1 -0
  76. package/dist/docs/cache.js +123 -0
  77. package/dist/docs/cache.js.map +1 -0
  78. package/dist/docs/embeddings/chunker.d.ts +120 -0
  79. package/dist/docs/embeddings/chunker.d.ts.map +1 -0
  80. package/dist/docs/embeddings/chunker.js +395 -0
  81. package/dist/docs/embeddings/chunker.js.map +1 -0
  82. package/dist/docs/embeddings/embedder.d.ts +41 -0
  83. package/dist/docs/embeddings/embedder.d.ts.map +1 -0
  84. package/dist/docs/embeddings/embedder.js +113 -0
  85. package/dist/docs/embeddings/embedder.js.map +1 -0
  86. package/dist/docs/embeddings/index.d.ts +102 -0
  87. package/dist/docs/embeddings/index.d.ts.map +1 -0
  88. package/dist/docs/embeddings/index.js +250 -0
  89. package/dist/docs/embeddings/index.js.map +1 -0
  90. package/dist/docs/embeddings/manager.d.ts +68 -0
  91. package/dist/docs/embeddings/manager.d.ts.map +1 -0
  92. package/dist/docs/embeddings/manager.js +97 -0
  93. package/dist/docs/embeddings/manager.js.map +1 -0
  94. package/dist/docs/fetcher.d.ts +29 -0
  95. package/dist/docs/fetcher.d.ts.map +1 -0
  96. package/dist/docs/fetcher.js +244 -0
  97. package/dist/docs/fetcher.js.map +1 -0
  98. package/dist/docs/reference.d.ts +37 -0
  99. package/dist/docs/reference.d.ts.map +1 -0
  100. package/dist/docs/reference.js +108 -0
  101. package/dist/docs/reference.js.map +1 -0
  102. package/dist/docs/search.d.ts +194 -0
  103. package/dist/docs/search.d.ts.map +1 -0
  104. package/dist/docs/search.js +733 -0
  105. package/dist/docs/search.js.map +1 -0
  106. package/dist/http-server.d.ts.map +1 -1
  107. package/dist/http-server.js +52 -5
  108. package/dist/http-server.js.map +1 -1
  109. package/dist/index.d.ts +8 -9
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +35 -1035
  112. package/dist/index.js.map +1 -1
  113. package/dist/instructions.d.ts +15 -0
  114. package/dist/instructions.d.ts.map +1 -0
  115. package/dist/instructions.js +26 -0
  116. package/dist/instructions.js.map +1 -0
  117. package/dist/tools/defs/attributes.d.ts +6 -0
  118. package/dist/tools/defs/attributes.d.ts.map +1 -0
  119. package/dist/tools/defs/attributes.js +85 -0
  120. package/dist/tools/defs/attributes.js.map +1 -0
  121. package/dist/tools/defs/docs.d.ts +17 -0
  122. package/dist/tools/defs/docs.d.ts.map +1 -0
  123. package/dist/tools/defs/docs.js +151 -0
  124. package/dist/tools/defs/docs.js.map +1 -0
  125. package/dist/tools/defs/execute.d.ts +6 -0
  126. package/dist/tools/defs/execute.d.ts.map +1 -0
  127. package/dist/tools/defs/execute.js +21 -0
  128. package/dist/tools/defs/execute.js.map +1 -0
  129. package/dist/tools/defs/inspection.d.ts +7 -0
  130. package/dist/tools/defs/inspection.d.ts.map +1 -0
  131. package/dist/tools/defs/inspection.js +202 -0
  132. package/dist/tools/defs/inspection.js.map +1 -0
  133. package/dist/tools/defs/objects.d.ts +6 -0
  134. package/dist/tools/defs/objects.d.ts.map +1 -0
  135. package/dist/tools/defs/objects.js +111 -0
  136. package/dist/tools/defs/objects.js.map +1 -0
  137. package/dist/tools/defs/properties.d.ts +6 -0
  138. package/dist/tools/defs/properties.d.ts.map +1 -0
  139. package/dist/tools/defs/properties.js +71 -0
  140. package/dist/tools/defs/properties.js.map +1 -0
  141. package/dist/tools/defs/runtime.d.ts +6 -0
  142. package/dist/tools/defs/runtime.d.ts.map +1 -0
  143. package/dist/tools/defs/runtime.js +145 -0
  144. package/dist/tools/defs/runtime.js.map +1 -0
  145. package/dist/tools/defs/scripts.d.ts +18 -0
  146. package/dist/tools/defs/scripts.d.ts.map +1 -0
  147. package/dist/tools/defs/scripts.js +163 -0
  148. package/dist/tools/defs/scripts.js.map +1 -0
  149. package/dist/tools/defs/tags.d.ts +6 -0
  150. package/dist/tools/defs/tags.d.ts.map +1 -0
  151. package/dist/tools/defs/tags.js +74 -0
  152. package/dist/tools/defs/tags.js.map +1 -0
  153. package/dist/tools/defs/visual.d.ts +7 -0
  154. package/dist/tools/defs/visual.d.ts.map +1 -0
  155. package/dist/tools/defs/visual.js +208 -0
  156. package/dist/tools/defs/visual.js.map +1 -0
  157. package/dist/tools/index.d.ts +101 -25
  158. package/dist/tools/index.d.ts.map +1 -1
  159. package/dist/tools/index.js +580 -63
  160. package/dist/tools/index.js.map +1 -1
  161. package/dist/tools/nudges.d.ts +25 -0
  162. package/dist/tools/nudges.d.ts.map +1 -0
  163. package/dist/tools/nudges.js +34 -0
  164. package/dist/tools/nudges.js.map +1 -0
  165. package/dist/tools/registry.d.ts +20 -0
  166. package/dist/tools/registry.d.ts.map +1 -0
  167. package/dist/tools/registry.js +65 -0
  168. package/dist/tools/registry.js.map +1 -0
  169. package/dist/tools/types.d.ts +24 -0
  170. package/dist/tools/types.d.ts.map +1 -0
  171. package/dist/tools/types.js +2 -0
  172. package/dist/tools/types.js.map +1 -0
  173. package/package.json +7 -6
  174. package/studio-plugin/MCPPlugin.rbxmx +3 -238
  175. package/studio-plugin/plugin.luau +2041 -365
@@ -3,12 +3,43 @@ export interface TestSessionLogEntry {
3
3
  message: string;
4
4
  messageType: string;
5
5
  timestamp: number;
6
- source: 'server' | 'plugin';
6
+ source: 'server' | 'plugin' | 'client';
7
7
  }
8
8
  export interface TestSessionCommand {
9
- cmd: 'end';
9
+ cmd: 'end' | 'eval';
10
10
  args?: any;
11
11
  }
12
+ export interface EvalReplyPayload {
13
+ ok: boolean;
14
+ values?: any[];
15
+ errorType?: 'compile_error' | 'runtime_error' | 'timeout' | 'loadstring_disabled' | 'companion_error';
16
+ error?: string;
17
+ traceback?: string;
18
+ logs?: Array<{
19
+ message: string;
20
+ messageType: string;
21
+ timestamp: number;
22
+ }>;
23
+ durationMs?: number;
24
+ }
25
+ export interface TestClientState {
26
+ userId: number;
27
+ name: string;
28
+ loadstringReady: boolean;
29
+ ready: boolean;
30
+ registeredAt: number;
31
+ lastPolledAt: number;
32
+ pendingCommands: TestSessionCommand[];
33
+ }
34
+ interface PendingEvalReply {
35
+ resolve: (payload: EvalReplyPayload) => void;
36
+ timeoutHandle: ReturnType<typeof setTimeout>;
37
+ target: 'server' | {
38
+ client: number;
39
+ };
40
+ claimed: boolean;
41
+ startedAt: number;
42
+ }
12
43
  export interface TestSessionState {
13
44
  sessionId: string;
14
45
  status: 'active' | 'ended';
@@ -16,9 +47,14 @@ export interface TestSessionState {
16
47
  endedAt: number | null;
17
48
  endReason: string | null;
18
49
  endValue: any;
19
- pendingCommands: TestSessionCommand[];
50
+ serverReady: boolean;
51
+ serverLoadstringReady: boolean;
52
+ serverLastPolledAt: number;
53
+ clients: Map<number, TestClientState>;
54
+ pendingCommandsServer: TestSessionCommand[];
20
55
  outputBuffer: TestSessionLogEntry[];
21
56
  outputSeq: number;
57
+ evalReplies: Map<string, PendingEvalReply>;
22
58
  endWaiters: Array<(ended: boolean) => void>;
23
59
  }
24
60
  export declare class BridgeService {
@@ -56,22 +92,38 @@ export declare class BridgeService {
56
92
  */
57
93
  endTestSession(sessionId: string, reason: string, value?: any): boolean;
58
94
  /**
59
- * Queue a command for the companion to pick up on its next poll.
60
- * Currently the only command is 'end'.
95
+ * Queue a command for either the server companion or a specific client
96
+ * companion. Defaults to the server queue (preserves prior call-site
97
+ * behavior for the existing 'end' command path).
98
+ *
99
+ * Returns false if the targeted queue doesn't exist (e.g. no such
100
+ * client), the session is null/ended, etc.
61
101
  */
62
- enqueueTestCommand(cmd: TestSessionCommand): boolean;
102
+ enqueueTestCommand(cmd: TestSessionCommand, target?: 'server' | {
103
+ client: number;
104
+ }): boolean;
63
105
  /**
64
- * Companion poll: returns the oldest pending command, or null if none.
65
- * If the session was already marked ended, signals that so the companion
66
- * stops polling.
106
+ * Companion poll: returns the oldest pending command for this target,
107
+ * or null if none. If the session was already marked ended, signals
108
+ * that so the companion stops polling.
109
+ *
110
+ * The hello payload (sent by a companion on its first poll) registers
111
+ * its readiness state. Server companion sends `{ loadstringReady }`;
112
+ * client companions add `{ userId, name, loadstringReady }`.
67
113
  */
68
- popTestCommand(sessionId: string): {
114
+ popTestCommand(sessionId: string, target?: 'server' | 'client', options?: {
115
+ userId?: number;
116
+ playerName?: string;
117
+ hello?: {
118
+ loadstringReady?: boolean;
119
+ };
120
+ }): {
69
121
  command: TestSessionCommand | null;
70
122
  ended: boolean;
71
123
  sessionMatch: boolean;
72
124
  };
73
125
  /**
74
- * Append a batch of log entries from the companion. Drops oldest entries
126
+ * Append a batch of log entries from a companion. Drops oldest entries
75
127
  * if the buffer would exceed MAX_OUTPUT_BUFFER. Each entry gets a
76
128
  * monotonically increasing seq for "since" cursor support.
77
129
  */
@@ -79,7 +131,7 @@ export declare class BridgeService {
79
131
  message: string;
80
132
  messageType: string;
81
133
  timestamp: number;
82
- }>, source?: 'server' | 'plugin'): {
134
+ }>, source?: 'server' | 'plugin' | 'client'): {
83
135
  accepted: number;
84
136
  sessionMatch: boolean;
85
137
  };
@@ -107,5 +159,40 @@ export declare class BridgeService {
107
159
  * active session, resolves true immediately.
108
160
  */
109
161
  waitForTestEnd(timeoutMs: number): Promise<boolean>;
162
+ /**
163
+ * Snapshot of companion readiness for diagnostic / pre-flight callers.
164
+ * Returns null if no session is tracked.
165
+ */
166
+ getTestSessionStatus(): null | {
167
+ sessionId: string;
168
+ status: 'active' | 'ended';
169
+ serverReady: boolean;
170
+ serverLoadstringReady: boolean;
171
+ clients: Array<{
172
+ userId: number;
173
+ name: string;
174
+ ready: boolean;
175
+ loadstringReady: boolean;
176
+ }>;
177
+ };
178
+ /**
179
+ * Register a pending eval and return a Promise that resolves with the
180
+ * companion's reply (or a synthetic timeout reply).
181
+ *
182
+ * The watchdog fires at `timeoutMs + EVAL_GRACE_MS`, capped at
183
+ * EVAL_HARD_CAP_MS. If the command was never claimed by a companion,
184
+ * we surface `companion_error` (companion unreachable) rather than
185
+ * `timeout` so the AI can distinguish "infinite loop in user code"
186
+ * from "no companion picked up the work".
187
+ */
188
+ registerEvalReply(replyId: string, target: 'server' | {
189
+ client: number;
190
+ }, timeoutMs: number): Promise<EvalReplyPayload>;
191
+ /**
192
+ * Companion-side eval result delivery. Idempotent w.r.t. the same
193
+ * replyId. Returns true if the reply was matched and dispatched.
194
+ */
195
+ resolveEvalReply(sessionId: string, replyId: string, payload: EvalReplyPayload): boolean;
110
196
  }
197
+ export {};
111
198
  //# sourceMappingURL=bridge-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-service.d.ts","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,KAAK,CAAC;IACX,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,GAAG,CAAC;IACd,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;CAC7C;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAS;IAK/B,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAEtC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB5D,iBAAiB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI;IAuB3F,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAQ/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAS3C,kBAAkB;IAWlB,uBAAuB;IAWvB;;;;;OAKG;IACH,gBAAgB,IAAI,MAAM;IAwB1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO;IAQvE;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO;IAOpD;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAYhH;;;;OAIG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EAC5E,MAAM,GAAE,QAAQ,GAAG,QAAmB,GACrC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAwB9C;;;;;OAKG;IACH,aAAa,CAAC,IAAI,GAAE;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG;QACP,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QACpC,OAAO,EAAE,mBAAmB,EAAE,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB;IAkCD;;;;OAIG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAcpD"}
1
+ {"version":3,"file":"bridge-service.d.ts","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
- import { v4 as uuidv4 } from 'uuid';
1
+ import { randomUUID } from 'node:crypto';
2
2
  const MAX_OUTPUT_BUFFER = 5000;
3
+ // How long after the user-supplied timeoutMs we keep waiting before giving
4
+ // up entirely. Accounts for HTTP RTT + companion poll latency.
5
+ const EVAL_GRACE_MS = 1500;
6
+ // Hard cap on how long a single eval can take before we abandon the reply
7
+ // slot regardless of what the companion claims.
8
+ const EVAL_HARD_CAP_MS = 60_000;
3
9
  export class BridgeService {
4
10
  pendingRequests = new Map();
5
11
  requestTimeout = 30000; // 30 seconds timeout
@@ -8,24 +14,24 @@ export class BridgeService {
8
14
  // startTestSession call.
9
15
  testSession = null;
10
16
  async sendRequest(endpoint, data) {
11
- const requestId = uuidv4();
17
+ const requestId = randomUUID();
12
18
  return new Promise((resolve, reject) => {
19
+ const timeoutHandle = setTimeout(() => {
20
+ if (this.pendingRequests.has(requestId)) {
21
+ this.pendingRequests.delete(requestId);
22
+ reject(new Error('Request timeout'));
23
+ }
24
+ }, this.requestTimeout);
13
25
  const request = {
14
26
  id: requestId,
15
27
  endpoint,
16
28
  data,
17
29
  timestamp: Date.now(),
30
+ timeoutHandle,
18
31
  resolve,
19
32
  reject
20
33
  };
21
34
  this.pendingRequests.set(requestId, request);
22
- // Set timeout
23
- setTimeout(() => {
24
- if (this.pendingRequests.has(requestId)) {
25
- this.pendingRequests.delete(requestId);
26
- reject(new Error('Request timeout'));
27
- }
28
- }, this.requestTimeout);
29
35
  });
30
36
  }
31
37
  getPendingRequest() {
@@ -51,6 +57,7 @@ export class BridgeService {
51
57
  const request = this.pendingRequests.get(requestId);
52
58
  if (request) {
53
59
  this.pendingRequests.delete(requestId);
60
+ clearTimeout(request.timeoutHandle);
54
61
  request.resolve(response);
55
62
  }
56
63
  }
@@ -58,6 +65,7 @@ export class BridgeService {
58
65
  const request = this.pendingRequests.get(requestId);
59
66
  if (request) {
60
67
  this.pendingRequests.delete(requestId);
68
+ clearTimeout(request.timeoutHandle);
61
69
  request.reject(error);
62
70
  }
63
71
  }
@@ -67,6 +75,7 @@ export class BridgeService {
67
75
  for (const [id, request] of this.pendingRequests.entries()) {
68
76
  if (now - request.timestamp > this.requestTimeout) {
69
77
  this.pendingRequests.delete(id);
78
+ clearTimeout(request.timeoutHandle);
70
79
  request.reject(new Error('Request timeout'));
71
80
  }
72
81
  }
@@ -74,6 +83,7 @@ export class BridgeService {
74
83
  // Force cleanup all pending requests (used on disconnect)
75
84
  clearAllPendingRequests() {
76
85
  for (const [, request] of this.pendingRequests.entries()) {
86
+ clearTimeout(request.timeoutHandle);
77
87
  request.reject(new Error('Connection closed'));
78
88
  }
79
89
  this.pendingRequests.clear();
@@ -94,7 +104,7 @@ export class BridgeService {
94
104
  if (this.testSession && this.testSession.status === 'active') {
95
105
  this.markTestSessionEnded('superseded');
96
106
  }
97
- const sessionId = uuidv4();
107
+ const sessionId = randomUUID();
98
108
  this.testSession = {
99
109
  sessionId,
100
110
  status: 'active',
@@ -102,9 +112,14 @@ export class BridgeService {
102
112
  endedAt: null,
103
113
  endReason: null,
104
114
  endValue: null,
105
- pendingCommands: [],
115
+ serverReady: false,
116
+ serverLoadstringReady: false,
117
+ serverLastPolledAt: 0,
118
+ clients: new Map(),
119
+ pendingCommandsServer: [],
106
120
  outputBuffer: [],
107
121
  outputSeq: 0,
122
+ evalReplies: new Map(),
108
123
  endWaiters: [],
109
124
  };
110
125
  return sessionId;
@@ -121,6 +136,17 @@ export class BridgeService {
121
136
  session.endedAt = Date.now();
122
137
  session.endReason = reason;
123
138
  session.endValue = value ?? null;
139
+ // Reject any in-flight eval waiters — the test died before the
140
+ // companion could reply. Clear their watchdog timers too.
141
+ for (const [replyId, pending] of session.evalReplies.entries()) {
142
+ clearTimeout(pending.timeoutHandle);
143
+ pending.resolve({
144
+ ok: false,
145
+ errorType: 'companion_error',
146
+ error: `Play test ended (${reason}) before eval reply could be delivered.`,
147
+ });
148
+ session.evalReplies.delete(replyId);
149
+ }
124
150
  const waiters = session.endWaiters.splice(0);
125
151
  for (const w of waiters) {
126
152
  try {
@@ -144,34 +170,107 @@ export class BridgeService {
144
170
  return true;
145
171
  }
146
172
  /**
147
- * Queue a command for the companion to pick up on its next poll.
148
- * Currently the only command is 'end'.
173
+ * Queue a command for either the server companion or a specific client
174
+ * companion. Defaults to the server queue (preserves prior call-site
175
+ * behavior for the existing 'end' command path).
176
+ *
177
+ * Returns false if the targeted queue doesn't exist (e.g. no such
178
+ * client), the session is null/ended, etc.
149
179
  */
150
- enqueueTestCommand(cmd) {
180
+ enqueueTestCommand(cmd, target = 'server') {
151
181
  const session = this.testSession;
152
182
  if (!session || session.status !== 'active')
153
183
  return false;
154
- session.pendingCommands.push(cmd);
184
+ if (target === 'server') {
185
+ session.pendingCommandsServer.push(cmd);
186
+ return true;
187
+ }
188
+ const client = session.clients.get(target.client);
189
+ if (!client)
190
+ return false;
191
+ client.pendingCommands.push(cmd);
155
192
  return true;
156
193
  }
157
194
  /**
158
- * Companion poll: returns the oldest pending command, or null if none.
159
- * If the session was already marked ended, signals that so the companion
160
- * stops polling.
195
+ * Companion poll: returns the oldest pending command for this target,
196
+ * or null if none. If the session was already marked ended, signals
197
+ * that so the companion stops polling.
198
+ *
199
+ * The hello payload (sent by a companion on its first poll) registers
200
+ * its readiness state. Server companion sends `{ loadstringReady }`;
201
+ * client companions add `{ userId, name, loadstringReady }`.
161
202
  */
162
- popTestCommand(sessionId) {
203
+ popTestCommand(sessionId, target = 'server', options = {}) {
163
204
  const session = this.testSession;
164
205
  if (!session || session.sessionId !== sessionId) {
165
206
  return { command: null, ended: true, sessionMatch: false };
166
207
  }
208
+ // Update handshake/poll-time bookkeeping regardless of status, so
209
+ // late polls after end still update lastPolledAt for diagnostics.
210
+ if (target === 'server') {
211
+ if (!session.serverReady) {
212
+ session.serverReady = true;
213
+ session.serverLoadstringReady = !!options.hello?.loadstringReady;
214
+ }
215
+ else if (options.hello && typeof options.hello.loadstringReady === 'boolean') {
216
+ // Allow re-handshake (e.g. companion re-checked).
217
+ session.serverLoadstringReady = options.hello.loadstringReady;
218
+ }
219
+ session.serverLastPolledAt = Date.now();
220
+ }
221
+ else {
222
+ // Client target: require userId for routing.
223
+ const userId = typeof options.userId === 'number' ? options.userId : null;
224
+ if (userId === null) {
225
+ return { command: null, ended: session.status === 'ended', sessionMatch: true };
226
+ }
227
+ let client = session.clients.get(userId);
228
+ if (!client) {
229
+ client = {
230
+ userId,
231
+ name: options.playerName || `User_${userId}`,
232
+ loadstringReady: !!options.hello?.loadstringReady,
233
+ ready: true,
234
+ registeredAt: Date.now(),
235
+ lastPolledAt: Date.now(),
236
+ pendingCommands: [],
237
+ };
238
+ session.clients.set(userId, client);
239
+ }
240
+ else {
241
+ client.lastPolledAt = Date.now();
242
+ if (options.playerName)
243
+ client.name = options.playerName;
244
+ if (options.hello && typeof options.hello.loadstringReady === 'boolean') {
245
+ client.loadstringReady = options.hello.loadstringReady;
246
+ }
247
+ }
248
+ }
167
249
  if (session.status === 'ended') {
168
250
  return { command: null, ended: true, sessionMatch: true };
169
251
  }
170
- const command = session.pendingCommands.shift() ?? null;
252
+ let command = null;
253
+ if (target === 'server') {
254
+ command = session.pendingCommandsServer.shift() ?? null;
255
+ }
256
+ else {
257
+ const userId = typeof options.userId === 'number' ? options.userId : null;
258
+ if (userId !== null) {
259
+ const client = session.clients.get(userId);
260
+ command = client?.pendingCommands.shift() ?? null;
261
+ }
262
+ }
263
+ // If we just popped an eval, mark its reply slot as claimed so the
264
+ // watchdog knows the companion at least picked it up.
265
+ if (command && command.cmd === 'eval' && command.args && typeof command.args.replyId === 'string') {
266
+ const slot = session.evalReplies.get(command.args.replyId);
267
+ if (slot)
268
+ slot.claimed = true;
269
+ }
171
270
  return { command, ended: false, sessionMatch: true };
172
271
  }
173
272
  /**
174
- * Append a batch of log entries from the companion. Drops oldest entries
273
+ * Append a batch of log entries from a companion. Drops oldest entries
175
274
  * if the buffer would exceed MAX_OUTPUT_BUFFER. Each entry gets a
176
275
  * monotonically increasing seq for "since" cursor support.
177
276
  */
@@ -260,5 +359,123 @@ export class BridgeService {
260
359
  setTimeout(() => finish(false), timeoutMs);
261
360
  });
262
361
  }
362
+ // ==========================================================================
363
+ // run_live_lua eval reply tracking
364
+ // ==========================================================================
365
+ /**
366
+ * Snapshot of companion readiness for diagnostic / pre-flight callers.
367
+ * Returns null if no session is tracked.
368
+ */
369
+ getTestSessionStatus() {
370
+ const session = this.testSession;
371
+ if (!session)
372
+ return null;
373
+ return {
374
+ sessionId: session.sessionId,
375
+ status: session.status,
376
+ serverReady: session.serverReady,
377
+ serverLoadstringReady: session.serverLoadstringReady,
378
+ clients: [...session.clients.values()].map((c) => ({
379
+ userId: c.userId,
380
+ name: c.name,
381
+ ready: c.ready,
382
+ loadstringReady: c.loadstringReady,
383
+ })),
384
+ };
385
+ }
386
+ /**
387
+ * Register a pending eval and return a Promise that resolves with the
388
+ * companion's reply (or a synthetic timeout reply).
389
+ *
390
+ * The watchdog fires at `timeoutMs + EVAL_GRACE_MS`, capped at
391
+ * EVAL_HARD_CAP_MS. If the command was never claimed by a companion,
392
+ * we surface `companion_error` (companion unreachable) rather than
393
+ * `timeout` so the AI can distinguish "infinite loop in user code"
394
+ * from "no companion picked up the work".
395
+ */
396
+ registerEvalReply(replyId, target, timeoutMs) {
397
+ const session = this.testSession;
398
+ if (!session || session.status !== 'active') {
399
+ return Promise.resolve({
400
+ ok: false,
401
+ errorType: 'companion_error',
402
+ error: 'No active play test session.',
403
+ });
404
+ }
405
+ const watchdogMs = Math.min(EVAL_HARD_CAP_MS, Math.max(1000, timeoutMs + EVAL_GRACE_MS));
406
+ return new Promise((resolve) => {
407
+ let done = false;
408
+ const finish = (payload) => {
409
+ if (done)
410
+ return;
411
+ done = true;
412
+ const cur = this.testSession;
413
+ if (cur && cur.sessionId === session.sessionId) {
414
+ const slot = cur.evalReplies.get(replyId);
415
+ if (slot) {
416
+ clearTimeout(slot.timeoutHandle);
417
+ cur.evalReplies.delete(replyId);
418
+ }
419
+ }
420
+ resolve(payload);
421
+ };
422
+ const timeoutHandle = setTimeout(() => {
423
+ const cur = this.testSession;
424
+ if (!cur || cur.sessionId !== session.sessionId) {
425
+ finish({
426
+ ok: false,
427
+ errorType: 'companion_error',
428
+ error: 'Play test session changed while waiting for eval reply.',
429
+ });
430
+ return;
431
+ }
432
+ const slot = cur.evalReplies.get(replyId);
433
+ if (!slot) {
434
+ // Reply already arrived and removed the slot — race with timeout.
435
+ finish({
436
+ ok: false,
437
+ errorType: 'companion_error',
438
+ error: 'Eval reply slot vanished before resolution (internal race).',
439
+ });
440
+ return;
441
+ }
442
+ if (!slot.claimed) {
443
+ finish({
444
+ ok: false,
445
+ errorType: 'companion_error',
446
+ error: 'Companion never picked up the eval command within the watchdog window. The injected companion script may have died, or its HTTP polling is blocked.',
447
+ });
448
+ }
449
+ else {
450
+ finish({
451
+ ok: false,
452
+ errorType: 'timeout',
453
+ error: `Eval did not complete within ${timeoutMs}ms (watchdog fired after ${watchdogMs}ms grace).`,
454
+ });
455
+ }
456
+ }, watchdogMs);
457
+ session.evalReplies.set(replyId, {
458
+ resolve: finish,
459
+ timeoutHandle,
460
+ target,
461
+ claimed: false,
462
+ startedAt: Date.now(),
463
+ });
464
+ });
465
+ }
466
+ /**
467
+ * Companion-side eval result delivery. Idempotent w.r.t. the same
468
+ * replyId. Returns true if the reply was matched and dispatched.
469
+ */
470
+ resolveEvalReply(sessionId, replyId, payload) {
471
+ const session = this.testSession;
472
+ if (!session || session.sessionId !== sessionId)
473
+ return false;
474
+ const slot = session.evalReplies.get(replyId);
475
+ if (!slot)
476
+ return false;
477
+ slot.resolve(payload);
478
+ return true;
479
+ }
263
480
  }
264
481
  //# sourceMappingURL=bridge-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-service.js","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-service.js","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Cache layout for the Roblox creator-docs mirror.
3
+ *
4
+ * <cacheDir>/
5
+ * meta.json ← bookkeeping (sha, downloadedAt, …)
6
+ * content/ ← extracted, scope-filtered docs tree
7
+ * en-us/
8
+ * reference/engine/classes/Part.yaml
9
+ * reference/engine/datatypes/CFrame.yaml
10
+ * …
11
+ *
12
+ * Cache directory is resolved by `env-paths` (cross-platform) but can be
13
+ * overridden via `RBXSTUDIO_DOCS_DIR` for tests, sandboxes, or users with
14
+ * non-standard layouts.
15
+ */
16
+ export interface DocsMeta {
17
+ /** Repo we cloned from, e.g. "Roblox/creator-docs". */
18
+ repo: string;
19
+ /** Branch/ref we tracked, e.g. "main". */
20
+ branch: string;
21
+ /** Commit SHA of the snapshot on disk. Empty if cache is empty. */
22
+ sha: string;
23
+ /** ISO timestamp of when the tarball was last extracted. */
24
+ downloadedAt: string;
25
+ /** ISO timestamp of when we last hit the GitHub API to check freshness. */
26
+ lastCheckedAt: string;
27
+ /** How many files survived scope-filtering and are sitting in `content/`. */
28
+ fileCount: number;
29
+ /** Approximate bytes-on-disk for the extracted tree. */
30
+ bytesOnDisk: number;
31
+ /** Schema version — bump if we change the layout incompatibly. */
32
+ schemaVersion: number;
33
+ }
34
+ export declare function resolveCacheDir(): string;
35
+ export declare function metaPath(cacheDir: string): string;
36
+ export declare function contentRoot(cacheDir: string): string;
37
+ export declare function readMeta(cacheDir: string): Promise<DocsMeta | null>;
38
+ export declare function writeMeta(cacheDir: string, meta: Omit<DocsMeta, 'schemaVersion'>): Promise<void>;
39
+ export declare function ensureCacheDir(cacheDir: string): Promise<void>;
40
+ /**
41
+ * Wipe the extracted content tree (but keep the cacheDir itself, so users
42
+ * can `tail -F` it if they want to).
43
+ */
44
+ export declare function clearContent(cacheDir: string): Promise<void>;
45
+ /**
46
+ * Best-effort byte-count of the content tree. Used for status reporting
47
+ * only; not safety-critical, so errors are swallowed.
48
+ */
49
+ export declare function approxSizeOnDisk(dir: string): Promise<number>;
50
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/docs/cache.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,QAAQ;IACvB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;CACvB;AAkBD,wBAAgB,eAAe,IAAI,MAAM,CAYxC;AAqBD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAezE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAItG;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBnE"}