@darkclaw921/umgt 0.0.0-stage → 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 (295) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -2
  3. package/architecture.md +105 -0
  4. package/bin/lm-game-hub.js +7 -0
  5. package/dist/server/activity.d.ts +17 -0
  6. package/dist/server/activity.js +55 -0
  7. package/dist/server/activity.js.map +1 -0
  8. package/dist/server/agents/activity.d.ts +36 -0
  9. package/dist/server/agents/activity.js +117 -0
  10. package/dist/server/agents/activity.js.map +1 -0
  11. package/dist/server/agents/claude.d.ts +5 -0
  12. package/dist/server/agents/claude.js +107 -0
  13. package/dist/server/agents/claude.js.map +1 -0
  14. package/dist/server/agents/codex.d.ts +5 -0
  15. package/dist/server/agents/codex.js +128 -0
  16. package/dist/server/agents/codex.js.map +1 -0
  17. package/dist/server/agents/core-tools.d.ts +23 -0
  18. package/dist/server/agents/core-tools.js +298 -0
  19. package/dist/server/agents/core-tools.js.map +1 -0
  20. package/dist/server/agents/core.d.ts +9 -0
  21. package/dist/server/agents/core.js +106 -0
  22. package/dist/server/agents/core.js.map +1 -0
  23. package/dist/server/agents/index.d.ts +5 -0
  24. package/dist/server/agents/index.js +41 -0
  25. package/dist/server/agents/index.js.map +1 -0
  26. package/dist/server/agents/kimi.d.ts +5 -0
  27. package/dist/server/agents/kimi.js +123 -0
  28. package/dist/server/agents/kimi.js.map +1 -0
  29. package/dist/server/agents/rpc.d.ts +19 -0
  30. package/dist/server/agents/rpc.js +102 -0
  31. package/dist/server/agents/rpc.js.map +1 -0
  32. package/dist/server/agents/types.d.ts +51 -0
  33. package/dist/server/agents/types.js +7 -0
  34. package/dist/server/agents/types.js.map +1 -0
  35. package/dist/server/app.d.ts +21 -0
  36. package/dist/server/app.js +38 -0
  37. package/dist/server/app.js.map +1 -0
  38. package/dist/server/asset-catalog.d.ts +5 -0
  39. package/dist/server/asset-catalog.js +525 -0
  40. package/dist/server/asset-catalog.js.map +1 -0
  41. package/dist/server/asset-media.d.ts +16 -0
  42. package/dist/server/asset-media.js +170 -0
  43. package/dist/server/asset-media.js.map +1 -0
  44. package/dist/server/asset-selection.d.ts +71 -0
  45. package/dist/server/asset-selection.js +273 -0
  46. package/dist/server/asset-selection.js.map +1 -0
  47. package/dist/server/assets.d.ts +69 -0
  48. package/dist/server/assets.js +669 -0
  49. package/dist/server/assets.js.map +1 -0
  50. package/dist/server/browser-gateway.d.ts +82 -0
  51. package/dist/server/browser-gateway.js +285 -0
  52. package/dist/server/browser-gateway.js.map +1 -0
  53. package/dist/server/chat-computer.d.ts +13 -0
  54. package/dist/server/chat-computer.js +29 -0
  55. package/dist/server/chat-computer.js.map +1 -0
  56. package/dist/server/chat-games.d.ts +38 -0
  57. package/dist/server/chat-games.js +202 -0
  58. package/dist/server/chat-games.js.map +1 -0
  59. package/dist/server/chat.d.ts +42 -0
  60. package/dist/server/chat.js +318 -0
  61. package/dist/server/chat.js.map +1 -0
  62. package/dist/server/cli.d.ts +14 -0
  63. package/dist/server/cli.js +117 -0
  64. package/dist/server/cli.js.map +1 -0
  65. package/dist/server/core-client.d.ts +69 -0
  66. package/dist/server/core-client.js +357 -0
  67. package/dist/server/core-client.js.map +1 -0
  68. package/dist/server/directory-picker.d.ts +14 -0
  69. package/dist/server/directory-picker.js +113 -0
  70. package/dist/server/directory-picker.js.map +1 -0
  71. package/dist/server/engine.d.ts +36 -0
  72. package/dist/server/engine.js +507 -0
  73. package/dist/server/engine.js.map +1 -0
  74. package/dist/server/events.d.ts +12 -0
  75. package/dist/server/events.js +137 -0
  76. package/dist/server/events.js.map +1 -0
  77. package/dist/server/game-launch.d.ts +16 -0
  78. package/dist/server/game-launch.js +143 -0
  79. package/dist/server/game-launch.js.map +1 -0
  80. package/dist/server/html5.d.ts +9 -0
  81. package/dist/server/html5.js +107 -0
  82. package/dist/server/html5.js.map +1 -0
  83. package/dist/server/interview.d.ts +241 -0
  84. package/dist/server/interview.js +190 -0
  85. package/dist/server/interview.js.map +1 -0
  86. package/dist/server/mcp.d.ts +27 -0
  87. package/dist/server/mcp.js +91 -0
  88. package/dist/server/mcp.js.map +1 -0
  89. package/dist/server/plugins.d.ts +8 -0
  90. package/dist/server/plugins.js +144 -0
  91. package/dist/server/plugins.js.map +1 -0
  92. package/dist/server/process.d.ts +15 -0
  93. package/dist/server/process.js +89 -0
  94. package/dist/server/process.js.map +1 -0
  95. package/dist/server/publication-materials.d.ts +18 -0
  96. package/dist/server/publication-materials.js +104 -0
  97. package/dist/server/publication-materials.js.map +1 -0
  98. package/dist/server/publication-mcp.d.ts +3 -0
  99. package/dist/server/publication-mcp.js +43 -0
  100. package/dist/server/publication-mcp.js.map +1 -0
  101. package/dist/server/publication.d.ts +54 -0
  102. package/dist/server/publication.js +334 -0
  103. package/dist/server/publication.js.map +1 -0
  104. package/dist/server/push.d.ts +81 -0
  105. package/dist/server/push.js +122 -0
  106. package/dist/server/push.js.map +1 -0
  107. package/dist/server/reports.d.ts +4 -0
  108. package/dist/server/reports.js +40 -0
  109. package/dist/server/reports.js.map +1 -0
  110. package/dist/server/roblox-assets.d.ts +41 -0
  111. package/dist/server/roblox-assets.js +131 -0
  112. package/dist/server/roblox-assets.js.map +1 -0
  113. package/dist/server/roblox-connection.d.ts +54 -0
  114. package/dist/server/roblox-connection.js +331 -0
  115. package/dist/server/roblox-connection.js.map +1 -0
  116. package/dist/server/roblox-install.d.ts +4 -0
  117. package/dist/server/roblox-install.js +170 -0
  118. package/dist/server/roblox-install.js.map +1 -0
  119. package/dist/server/roblox-mcp.d.ts +2 -0
  120. package/dist/server/roblox-mcp.js +34 -0
  121. package/dist/server/roblox-mcp.js.map +1 -0
  122. package/dist/server/roblox-play.d.ts +23 -0
  123. package/dist/server/roblox-play.js +84 -0
  124. package/dist/server/roblox-play.js.map +1 -0
  125. package/dist/server/roblox-project-tools.d.ts +11 -0
  126. package/dist/server/roblox-project-tools.js +119 -0
  127. package/dist/server/roblox-project-tools.js.map +1 -0
  128. package/dist/server/roblox-setup.d.ts +37 -0
  129. package/dist/server/roblox-setup.js +206 -0
  130. package/dist/server/roblox-setup.js.map +1 -0
  131. package/dist/server/roblox-skills.d.ts +15 -0
  132. package/dist/server/roblox-skills.js +15 -0
  133. package/dist/server/roblox-skills.js.map +1 -0
  134. package/dist/server/roblox.d.ts +30 -0
  135. package/dist/server/roblox.js +248 -0
  136. package/dist/server/roblox.js.map +1 -0
  137. package/dist/server/routes.d.ts +11 -0
  138. package/dist/server/routes.js +223 -0
  139. package/dist/server/routes.js.map +1 -0
  140. package/dist/server/security.d.ts +4 -0
  141. package/dist/server/security.js +64 -0
  142. package/dist/server/security.js.map +1 -0
  143. package/dist/server/skills.d.ts +4 -0
  144. package/dist/server/skills.js +123 -0
  145. package/dist/server/skills.js.map +1 -0
  146. package/dist/server/store.d.ts +25 -0
  147. package/dist/server/store.js +89 -0
  148. package/dist/server/store.js.map +1 -0
  149. package/dist/server/templates/roblox-coin-run.d.ts +2 -0
  150. package/dist/server/templates/roblox-coin-run.js +326 -0
  151. package/dist/server/templates/roblox-coin-run.js.map +1 -0
  152. package/dist/server/templates/roblox-skills.json +55 -0
  153. package/dist/server/templates/yandex-sdk.d.ts +3 -0
  154. package/dist/server/templates/yandex-sdk.js +177 -0
  155. package/dist/server/templates/yandex-sdk.js.map +1 -0
  156. package/dist/server/updates.d.ts +28 -0
  157. package/dist/server/updates.js +99 -0
  158. package/dist/server/updates.js.map +1 -0
  159. package/dist/server/video-media.d.ts +47 -0
  160. package/dist/server/video-media.js +224 -0
  161. package/dist/server/video-media.js.map +1 -0
  162. package/dist/server/video-routes.d.ts +7 -0
  163. package/dist/server/video-routes.js +91 -0
  164. package/dist/server/video-routes.js.map +1 -0
  165. package/dist/server/video.d.ts +214 -0
  166. package/dist/server/video.js +301 -0
  167. package/dist/server/video.js.map +1 -0
  168. package/dist/server/web-build.d.ts +16 -0
  169. package/dist/server/web-build.js +232 -0
  170. package/dist/server/web-build.js.map +1 -0
  171. package/dist/server/workflow.d.ts +221 -0
  172. package/dist/server/workflow.js +826 -0
  173. package/dist/server/workflow.js.map +1 -0
  174. package/dist/server/yandex-config.d.ts +33 -0
  175. package/dist/server/yandex-config.js +12 -0
  176. package/dist/server/yandex-config.js.map +1 -0
  177. package/dist/server/yandex-godot.d.ts +5 -0
  178. package/dist/server/yandex-godot.js +107 -0
  179. package/dist/server/yandex-godot.js.map +1 -0
  180. package/dist/shared/aspects.d.ts +48 -0
  181. package/dist/shared/aspects.js +22 -0
  182. package/dist/shared/aspects.js.map +1 -0
  183. package/dist/shared/assistant.d.ts +7 -0
  184. package/dist/shared/assistant.js +36 -0
  185. package/dist/shared/assistant.js.map +1 -0
  186. package/dist/shared/chat.d.ts +46 -0
  187. package/dist/shared/chat.js +2 -0
  188. package/dist/shared/chat.js.map +1 -0
  189. package/dist/shared/settings.d.ts +11 -0
  190. package/dist/shared/settings.js +25 -0
  191. package/dist/shared/settings.js.map +1 -0
  192. package/dist/shared/types.d.ts +510 -0
  193. package/dist/shared/types.js +2 -0
  194. package/dist/shared/types.js.map +1 -0
  195. package/dist/web/apple-touch-icon.png +0 -0
  196. package/dist/web/assets/AgentActivity-sYJeY5Yf.js +9 -0
  197. package/dist/web/assets/ArrowRight.es-9w41WqD8.js +1 -0
  198. package/dist/web/assets/ArrowUpRight.es-BmIrpjWN.js +1 -0
  199. package/dist/web/assets/AssetMediaPreview-D2cd6oQO.js +1 -0
  200. package/dist/web/assets/AssetSelectionWizard-a43_6NO7.js +1 -0
  201. package/dist/web/assets/CaretDown.es-Cq33NYip.js +1 -0
  202. package/dist/web/assets/CheckCircle.es-D5B3hdvz.js +1 -0
  203. package/dist/web/assets/CoreAccount-D4ZC8CWv.js +1 -0
  204. package/dist/web/assets/DownloadSimple.es-DwOWFbs2.js +1 -0
  205. package/dist/web/assets/FileText.es-D83IIiOG.js +1 -0
  206. package/dist/web/assets/ImageSquare.es-DxCFt99_.js +1 -0
  207. package/dist/web/assets/KidsApp-BXWaALoK.css +1 -0
  208. package/dist/web/assets/KidsApp-D-8t3HPy.js +2 -0
  209. package/dist/web/assets/MagnifyingGlass.es-rkdOU2rH.js +1 -0
  210. package/dist/web/assets/PaperPlaneRight.es-U0twumpP.js +1 -0
  211. package/dist/web/assets/PencilSimple.es-JVHwRvGx.js +1 -0
  212. package/dist/web/assets/PlainChat-BC4K_tmj.css +1 -0
  213. package/dist/web/assets/PlainChat-CMxYwKko.js +1 -0
  214. package/dist/web/assets/Sparkle.es-CmGpvnNm.js +1 -0
  215. package/dist/web/assets/Square.es-BjNN9Ypc.js +1 -0
  216. package/dist/web/assets/UploadSimple.es-DxIuxpCC.js +1 -0
  217. package/dist/web/assets/WarningCircle.es-D63H8cL9.js +1 -0
  218. package/dist/web/assets/WorkflowJournal-Did0sRta.js +1 -0
  219. package/dist/web/assets/YandexConfigFields-DDL22Bfw.js +1 -0
  220. package/dist/web/assets/YandexGamesView-R64RSJRL.js +2 -0
  221. package/dist/web/assets/bg-build-DIalyCDw.svg +3 -0
  222. package/dist/web/assets/bg-idea-DHcE-Dhs.svg +3 -0
  223. package/dist/web/assets/bg-materials-UDVFaueI.svg +3 -0
  224. package/dist/web/assets/bg-plan-DpfwIsqJ.svg +3 -0
  225. package/dist/web/assets/bg-play-CNc1QZFK.svg +3 -0
  226. package/dist/web/assets/dist-7vx7MTaJ.js +1 -0
  227. package/dist/web/assets/index-Izzbh11U.css +1 -0
  228. package/dist/web/assets/index-sNciOZYG.js +13 -0
  229. package/dist/web/assets/jsx-runtime-CdVFa8IP.js +1 -0
  230. package/dist/web/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2 +0 -0
  231. package/dist/web/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 +0 -0
  232. package/dist/web/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
  233. package/dist/web/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
  234. package/dist/web/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 +0 -0
  235. package/dist/web/assets/resources-DppXCagL.js +1 -0
  236. package/dist/web/assets/robot-happy-B6YvlU94.svg +24 -0
  237. package/dist/web/assets/robot-hello-CCsQgsS-.svg +24 -0
  238. package/dist/web/assets/robot-listen-Buuz9xII.svg +24 -0
  239. package/dist/web/assets/robot-sad-CRtiNVWs.svg +24 -0
  240. package/dist/web/assets/robot-think-CJ5fDBTm.svg +24 -0
  241. package/dist/web/assets/star-big-CSFDKjws.svg +22 -0
  242. package/dist/web/assets/star-empty-CC-5vioJ.svg +3 -0
  243. package/dist/web/assets/star-next-ztuDjOHU.svg +9 -0
  244. package/dist/web/assets/star-on-l_krO3aV.svg +10 -0
  245. package/dist/web/assets/ui-wHE_yBK0.js +41 -0
  246. package/dist/web/assets/umgt-logo-DAOkTN9u.png +0 -0
  247. package/dist/web/assets/unbounded-cyrillic-wght-normal-C627f1f8.woff2 +0 -0
  248. package/dist/web/assets/unbounded-latin-ext-wght-normal-D6H-S6MW.woff2 +0 -0
  249. package/dist/web/assets/unbounded-latin-wght-normal-D5afBTBx.woff2 +0 -0
  250. package/dist/web/assets/unbounded-vietnamese-wght-normal-rat7GD3o.woff2 +0 -0
  251. package/dist/web/assets/workflow-BhcU9uvG.css +1 -0
  252. package/dist/web/assets/workflow-BrIKN5ER.js +34 -0
  253. package/dist/web/favicon.ico +0 -0
  254. package/dist/web/icons/favicon-16.png +0 -0
  255. package/dist/web/icons/favicon-32.png +0 -0
  256. package/dist/web/icons/icon-192.png +0 -0
  257. package/dist/web/icons/icon-512.png +0 -0
  258. package/dist/web/icons/maskable-192.png +0 -0
  259. package/dist/web/icons/maskable-512.png +0 -0
  260. package/dist/web/index.html +28 -0
  261. package/dist/web/manifest.webmanifest +19 -0
  262. package/dist/web/sw.js +25 -0
  263. package/docs/agent-activity-ui.md +33 -0
  264. package/docs/agent-activity.md +43 -0
  265. package/docs/agent-permissions-ui.md +15 -0
  266. package/docs/api.md +145 -0
  267. package/docs/approval-journal.md +13 -0
  268. package/docs/asset-media.md +27 -0
  269. package/docs/asset-providers.md +34 -0
  270. package/docs/asset-selection.md +31 -0
  271. package/docs/automatic-approvals.md +15 -0
  272. package/docs/background-game-launch.md +17 -0
  273. package/docs/billing-validation.md +23 -0
  274. package/docs/core-isolation.md +37 -0
  275. package/docs/core.md +45 -0
  276. package/docs/generated-text-ui.md +41 -0
  277. package/docs/interactive-interview-ui.md +29 -0
  278. package/docs/interactive-interview.md +52 -0
  279. package/docs/local-codex.md +51 -0
  280. package/docs/local-meshy.md +13 -0
  281. package/docs/markdown.md +11 -0
  282. package/docs/permission-ui.md +11 -0
  283. package/docs/plan.md +47 -0
  284. package/docs/remote-core-deployment.md +47 -0
  285. package/docs/roblox.md +90 -0
  286. package/docs/validation.md +228 -0
  287. package/docs/video-reference.md +35 -0
  288. package/docs/workflow-journal-ui.md +21 -0
  289. package/docs/yandex-foundation.md +27 -0
  290. package/docs/yandex-games.md +45 -0
  291. package/package.json +95 -4
  292. package/scripts/create-roblox-demo.mjs +31 -0
  293. package/scripts/diagnose-roblox-mcp.mjs +45 -0
  294. package/scripts/open-hub-chrome.mjs +60 -0
  295. package/scripts/smoke-agent.mjs +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/server/video.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type Server } from 'node:http';
2
+ import type { Project, GameBuild, BuildValidation } from '../shared/types.js';
3
+ export declare function yandexConfigHash(project: Project): string;
4
+ export declare function webContentHash(directory: string): Promise<string>;
5
+ /** Deterministic store-only ZIP writer. No executable shell/archive dependency. */
6
+ export declare function zipDirectory(directory: string, path: string): Promise<void>;
7
+ /** Validates actual ZIP bytes and bounded uncompressed entries, never extracts user paths. */
8
+ export declare function validateWebZip(path: string, options?: {
9
+ yandex?: boolean;
10
+ }): Promise<BuildValidation>;
11
+ export declare function recordWebBuild(project: Project, directory: string, platform?: 'web' | 'yandex-games'): Promise<GameBuild>;
12
+ /** Loopback-only preview, fixed official development SDK upstream, never opens a browser. */
13
+ export declare function startWebPreview(directory: string, yandex?: boolean): Promise<{
14
+ server: Server;
15
+ url: string;
16
+ }>;
@@ -0,0 +1,232 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { crc32 } from 'node:zlib';
3
+ import { mkdir, readdir, lstat, readFile, writeFile, realpath, cp } from 'node:fs/promises';
4
+ import { join, sep, extname } from 'node:path';
5
+ import { createReadStream } from 'node:fs';
6
+ import { createServer } from 'node:http';
7
+ import yauzl from 'yauzl';
8
+ import { yandexConfig } from './yandex-config.js';
9
+ const maxBuild = 100_000_000;
10
+ const safeName = /^[a-zA-Z0-9_./@+-]+$/;
11
+ export function yandexConfigHash(project) { return createHash('sha256').update(JSON.stringify(yandexConfig(project))).digest('hex'); }
12
+ async function collect(root, prefix = '', budget = { bytes: 0, files: 0 }) {
13
+ const files = [];
14
+ for (const entry of await readdir(join(root, prefix), { withFileTypes: true })) {
15
+ const name = prefix ? `${prefix}/${entry.name}` : entry.name;
16
+ const path = join(root, name);
17
+ if (entry.isSymbolicLink())
18
+ throw new Error(`Symlink is not allowed in release: ${name}`);
19
+ if (entry.isDirectory())
20
+ files.push(...await collect(root, name, budget));
21
+ else if (entry.isFile()) {
22
+ budget.bytes += (await lstat(path)).size;
23
+ if (budget.bytes > maxBuild || ++budget.files > 20000)
24
+ throw new Error('Build exceeds 100 MB or 20000 files');
25
+ files.push({ name, data: await readFile(path) });
26
+ }
27
+ }
28
+ if (files.reduce((total, item) => total + item.data.length, 0) > maxBuild)
29
+ throw new Error('Uncompressed build exceeds 100 MB');
30
+ return files;
31
+ }
32
+ export async function webContentHash(directory) { const files = await collect(directory); const hash = createHash('sha256'); for (const file of files.sort((a, b) => a.name.localeCompare(b.name, 'en'))) {
33
+ hash.update(file.name);
34
+ hash.update('\0');
35
+ hash.update(createHash('sha256').update(file.data).digest());
36
+ } return hash.digest('hex'); }
37
+ /** Deterministic store-only ZIP writer. No executable shell/archive dependency. */
38
+ export async function zipDirectory(directory, path) {
39
+ const files = await collect(directory);
40
+ const local = [];
41
+ const central = [];
42
+ let offset = 0;
43
+ for (const file of files) {
44
+ const name = Buffer.from(file.name);
45
+ const crc = crc32(file.data);
46
+ const header = Buffer.alloc(30);
47
+ header.writeUInt32LE(0x04034b50);
48
+ header.writeUInt16LE(20, 4);
49
+ header.writeUInt16LE(0x800, 6);
50
+ header.writeUInt32LE(crc, 14);
51
+ header.writeUInt32LE(file.data.length, 18);
52
+ header.writeUInt32LE(file.data.length, 22);
53
+ header.writeUInt16LE(name.length, 26);
54
+ local.push(header, name, file.data);
55
+ const dir = Buffer.alloc(46);
56
+ dir.writeUInt32LE(0x02014b50);
57
+ dir.writeUInt16LE(20, 4);
58
+ dir.writeUInt16LE(20, 6);
59
+ dir.writeUInt16LE(0x800, 8);
60
+ dir.writeUInt32LE(crc, 16);
61
+ dir.writeUInt32LE(file.data.length, 20);
62
+ dir.writeUInt32LE(file.data.length, 24);
63
+ dir.writeUInt16LE(name.length, 28);
64
+ dir.writeUInt32LE(offset, 42);
65
+ central.push(dir, name);
66
+ offset += header.length + name.length + file.data.length;
67
+ }
68
+ const end = Buffer.alloc(22);
69
+ end.writeUInt32LE(0x06054b50);
70
+ end.writeUInt16LE(files.length, 8);
71
+ end.writeUInt16LE(files.length, 10);
72
+ end.writeUInt32LE(central.reduce((sum, item) => sum + item.length, 0), 12);
73
+ end.writeUInt32LE(offset, 16);
74
+ await writeFile(path, Buffer.concat([...local, ...central, end]), { flag: 'wx' });
75
+ }
76
+ /** Validates actual ZIP bytes and bounded uncompressed entries, never extracts user paths. */
77
+ export async function validateWebZip(path, options = {}) {
78
+ const issues = [];
79
+ let files = 0;
80
+ let bytes = 0;
81
+ let index = '';
82
+ let hasIndex = false;
83
+ let sdkRuntime = false;
84
+ const names = new Set();
85
+ const issue = (code, message, file) => issues.push({ code, message, file, severity: 'error' });
86
+ try {
87
+ if ((await lstat(path)).size > maxBuild + 2 * 1024 * 1024)
88
+ throw new Error('ZIP exceeds maximum size');
89
+ await new Promise((resolve, reject) => {
90
+ yauzl.open(path, { lazyEntries: true, validateEntrySizes: true }, (error, zip) => {
91
+ if (error || !zip) {
92
+ reject(error);
93
+ return;
94
+ }
95
+ let settled = false;
96
+ const fail = (error) => { if (settled)
97
+ return; settled = true; zip.close(); reject(error); };
98
+ zip.on('error', fail);
99
+ zip.on('end', () => { if (!settled) {
100
+ settled = true;
101
+ resolve();
102
+ } });
103
+ zip.on('entry', (entry) => {
104
+ void (async () => {
105
+ const name = entry.fileName;
106
+ if (++files > 20000)
107
+ throw new Error('Too many ZIP files');
108
+ bytes += entry.uncompressedSize;
109
+ if (bytes > maxBuild)
110
+ throw new Error('Uncompressed build exceeds 100 MB');
111
+ if (!safeName.test(name) || name.startsWith('/') || name.split('/').some(part => part === '..' || part === '.'))
112
+ issue('filename', 'Use ASCII filenames without spaces and traversal segments', name);
113
+ if (names.has(name))
114
+ issue('duplicate', 'Duplicate ZIP entry', name);
115
+ names.add(name);
116
+ if (((entry.externalFileAttributes >>> 16) & 0xf000) === 0xa000)
117
+ issue('symlink', 'Symbolic links are not allowed', name);
118
+ if (/(?:^|\/)(?:node_modules|\.git|\.agents|\.claude|\.lm-game-hub|tests?|verification|test-results|playwright-report)(?:\/|$)|\.env(?:\.|$)|\.(?:sqlite(?:-(?:wal|shm))?|db|log|tsx?|map|pem|key)$/i.test(name))
119
+ issue('private_file', 'Development or private file in release', name);
120
+ if (/(?:^|\/)sdk\.js$/.test(name))
121
+ issue('bundled_sdk', 'The Yandex SDK must be loaded from /sdk.js, not included in the ZIP', name);
122
+ if (/mock[-_.]?(?:sdk|yandex)|(?:sdk|yandex)[-_.]?mock/i.test(name))
123
+ issue('mock_sdk', 'Mock SDK must not ship in production', name);
124
+ if (name.endsWith('/')) {
125
+ zip.readEntry();
126
+ return;
127
+ }
128
+ const data = await new Promise((res, rej) => zip.openReadStream(entry, (error, stream) => { if (error || !stream) {
129
+ rej(error);
130
+ return;
131
+ } const chunks = []; let size = 0; stream.on('data', (chunk) => { size += chunk.length; if (size > entry.uncompressedSize || size > maxBuild) {
132
+ stream.destroy(new Error('ZIP size mismatch'));
133
+ return;
134
+ } chunks.push(chunk); }); stream.on('error', rej); stream.on('end', () => res(Buffer.concat(chunks))); }));
135
+ if (crc32(data) !== entry.crc32)
136
+ issue('checksum', 'ZIP entry checksum mismatch', name);
137
+ if (name === 'index.html') {
138
+ index = data.toString('utf8');
139
+ hasIndex = true;
140
+ }
141
+ if (/\.(?:js|html)$/.test(name)) {
142
+ const text = data.toString('utf8');
143
+ if (text.includes('LoadingAPI') && text.includes('GameplayAPI'))
144
+ sdkRuntime = true;
145
+ if (text.includes('yandex-dev-adapter.js') || text.includes('LMGH_MOCK_SDK'))
146
+ issue('development_sdk', 'Development/mock SDK reference must not ship', name);
147
+ }
148
+ zip.readEntry();
149
+ })().catch(fail);
150
+ });
151
+ zip.readEntry();
152
+ });
153
+ });
154
+ }
155
+ catch (error) {
156
+ issue('invalid_zip', error instanceof Error ? error.message : String(error));
157
+ }
158
+ if (!hasIndex)
159
+ issue('entrypoint', 'index.html must be at the archive root');
160
+ if (options.yandex !== false) {
161
+ if (hasIndex && !/<script\b[^>]*\bsrc\s*=\s*["']\/sdk\.js["']/i.test(index))
162
+ issue('sdk_loader', 'index.html must load the platform /sdk.js before game initialization');
163
+ if (!sdkRuntime)
164
+ issue('sdk_lifecycle', 'LoadingAPI and GameplayAPI integration is missing from the web build');
165
+ }
166
+ return { ok: !issues.some(item => item.severity === 'error'), files, bytes, issues, checkedAt: new Date().toISOString() };
167
+ }
168
+ export async function recordWebBuild(project, directory, platform = 'yandex-games') {
169
+ const id = randomUUID();
170
+ const root = join(project.path, 'builds', platform, id);
171
+ await mkdir(root, { recursive: true });
172
+ const realProject = await realpath(project.path);
173
+ if (!(await realpath(root)).startsWith(realProject + sep))
174
+ throw new Error('Build directory outside project');
175
+ const files = join(root, 'files');
176
+ await cp(directory, files, { recursive: true, dereference: false, errorOnExist: true, force: false });
177
+ const path = join(root, 'game.zip');
178
+ await zipDirectory(files, path);
179
+ const validation = await validateWebZip(path, { yandex: platform === 'yandex-games' });
180
+ return { id, projectId: project.id, engine: project.engine, platform, createdAt: new Date().toISOString(), path, sha256: createHash('sha256').update(await readFile(path)).digest('hex'), validation, ...(platform === 'yandex-games' ? { configHash: yandexConfigHash(project) } : {}), contentHash: await webContentHash(files) };
181
+ }
182
+ const mime = { '.html': 'text/html; charset=utf-8', '.js': 'text/javascript; charset=utf-8', '.css': 'text/css', '.json': 'application/json', '.wasm': 'application/wasm', '.png': 'image/png', '.svg': 'image/svg+xml', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', '.webp': 'image/webp', '.gif': 'image/gif', '.ogg': 'audio/ogg', '.mp3': 'audio/mpeg', '.wav': 'audio/wav', '.mp4': 'video/mp4', '.webm': 'video/webm', '.pck': 'application/octet-stream' };
183
+ /** Loopback-only preview, fixed official development SDK upstream, never opens a browser. */
184
+ export async function startWebPreview(directory, yandex = true) {
185
+ const root = await realpath(directory);
186
+ let sdk;
187
+ const server = createServer((request, response) => {
188
+ void (async () => {
189
+ if (!/^127\.0\.0\.1:\d+$/.test(request.headers.host ?? '') || !['GET', 'HEAD'].includes(request.method ?? '')) {
190
+ response.writeHead(403).end();
191
+ return;
192
+ }
193
+ const path = decodeURIComponent(new URL(request.url ?? '/', 'http://127.0.0.1').pathname);
194
+ if (path === '/sdk.js' && yandex) {
195
+ sdk ??= (async () => { const result = await fetch('https://yastatic.net/s3/games-static/sdk-dev/yandex-dev-adapter.js', { signal: AbortSignal.timeout(15000), redirect: 'error' }); if (!result.ok || !result.body)
196
+ throw new Error('SDK unavailable'); if (Number(result.headers.get('content-length') ?? 0) > 5 * 1024 * 1024) {
197
+ await result.body.cancel();
198
+ throw new Error('SDK too large');
199
+ } const chunks = []; let size = 0; for await (const chunk of result.body) {
200
+ size += chunk.length;
201
+ if (size > 5 * 1024 * 1024)
202
+ throw new Error('SDK too large');
203
+ chunks.push(chunk);
204
+ } return Buffer.concat(chunks); })().catch(error => { sdk = undefined; throw error; });
205
+ const source = await sdk;
206
+ response.writeHead(200, { 'Content-Type': 'text/javascript', 'X-LMGH-SDK-Mode': 'development', 'X-Content-Type-Options': 'nosniff' });
207
+ response.end(request.method === 'HEAD' ? undefined : source);
208
+ return;
209
+ }
210
+ const relative = path === '/' ? 'index.html' : path.slice(1);
211
+ if (relative.split('/').some(part => part === '..' || part.startsWith('.'))) {
212
+ response.writeHead(404).end();
213
+ return;
214
+ }
215
+ const file = await realpath(join(root, relative));
216
+ if (!file.startsWith(root + sep) || (await lstat(file)).isDirectory()) {
217
+ response.writeHead(404).end();
218
+ return;
219
+ }
220
+ response.writeHead(200, { 'Content-Type': mime[extname(file)] ?? 'application/octet-stream', 'X-Content-Type-Options': 'nosniff', 'Cache-Control': 'no-store' });
221
+ if (request.method === 'HEAD')
222
+ response.end();
223
+ else
224
+ createReadStream(file).pipe(response);
225
+ })().catch(() => { if (!response.headersSent)
226
+ response.writeHead(502); response.end('Preview resource unavailable'); });
227
+ });
228
+ await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', resolve); });
229
+ const address = server.address();
230
+ return { server, url: `http://127.0.0.1:${typeof address === 'object' && address ? address.port : 0}/` };
231
+ }
232
+ //# sourceMappingURL=web-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-build.js","sourceRoot":"","sources":["../../src/server/web-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import { z } from 'zod';
2
+ import type { HubContext } from './app.js';
3
+ import type { Project, Plan, Epic, Task, Run, Permission, InterviewMessage, InterviewRound, HubSettings, Asset, AssetChoice } from '../shared/types.js';
4
+ import { createDefaultSettings } from '../shared/settings.js';
5
+ import { type AgentAdapter, type PermissionAnswer } from './agents/index.js';
6
+ import { verifyProject, type GodotDiagnostic } from './engine.js';
7
+ import { AssetSelections, type AssetSelectionOptions } from './asset-selection.js';
8
+ import { assetMcpConfig } from './mcp.js';
9
+ import { Videos } from './video.js';
10
+ import type { VideoMedia } from './video-media.js';
11
+ export declare const conflict: (message: string) => Error & {
12
+ statusCode: number;
13
+ };
14
+ export declare const badRequest: (message: string) => Error & {
15
+ statusCode: number;
16
+ };
17
+ export declare const defaultSettings: typeof createDefaultSettings;
18
+ export declare function platformRequirements(project: Project): string;
19
+ export declare function describeToolchain(engine: GodotDiagnostic): {
20
+ godotExecutable: string | undefined;
21
+ godotVersion: string | undefined;
22
+ hostPlatform: NodeJS.Platform;
23
+ templateDirectory: string | undefined;
24
+ exportTemplates: {
25
+ web: boolean;
26
+ desktop: boolean;
27
+ };
28
+ };
29
+ export declare const isInteractiveInput: (method: string) => boolean;
30
+ export declare const planOutput: z.ZodObject<{
31
+ markdown: z.ZodString;
32
+ }, z.core.$strip>;
33
+ export declare const taskOutput: z.ZodObject<{
34
+ epics: z.ZodArray<z.ZodObject<{
35
+ id: z.ZodString;
36
+ title: z.ZodString;
37
+ description: z.ZodString;
38
+ phase: z.ZodNumber;
39
+ }, z.core.$strip>>;
40
+ tasks: z.ZodArray<z.ZodObject<{
41
+ id: z.ZodString;
42
+ epicId: z.ZodString;
43
+ title: z.ZodString;
44
+ description: z.ZodString;
45
+ acceptance: z.ZodArray<z.ZodString>;
46
+ dependencies: z.ZodArray<z.ZodString>;
47
+ priority: z.ZodDefault<z.ZodNumber>;
48
+ estimateMinutes: z.ZodDefault<z.ZodNumber>;
49
+ }, z.core.$strip>>;
50
+ }, z.core.$strip>;
51
+ export declare function parseAgentJson(text: string): unknown;
52
+ export declare function validateTaskGraph(value: unknown): {
53
+ epics: {
54
+ id: string;
55
+ title: string;
56
+ description: string;
57
+ phase: number;
58
+ }[];
59
+ tasks: {
60
+ id: string;
61
+ epicId: string;
62
+ title: string;
63
+ description: string;
64
+ acceptance: string[];
65
+ dependencies: string[];
66
+ priority: number;
67
+ estimateMinutes: number;
68
+ }[];
69
+ };
70
+ export interface WorkflowOptions {
71
+ adapters?: Record<Project['agent'], AgentAdapter>;
72
+ verify?: typeof verifyProject;
73
+ autoExecute?: boolean;
74
+ videoMedia?: VideoMedia;
75
+ assetSelection?: AssetSelectionOptions;
76
+ mcp?: (project: Project) => ReturnType<typeof assetMcpConfig>;
77
+ assetDetails?: (project: Project, provider: string, id: string) => Promise<Asset>;
78
+ robloxMcp?: (project: Project, signal: AbortSignal) => Promise<{
79
+ server?: import('./agents/types.js').AgentMcpServer;
80
+ message: string;
81
+ }>;
82
+ }
83
+ /** Appended to model prompts when the interface language is English; default prompts ask for Russian. */
84
+ export declare const englishOutputNote = "\nLANGUAGE: The user interface language is English. Write every user-facing text (messages, questions, option labels, summaries, plan text, task titles and descriptions, asset need titles and explanations, reports) in English, even where the instructions above say Russian. Keep JSON keys, identifiers and file names unchanged.";
85
+ export declare class Workflow {
86
+ readonly hub: HubContext;
87
+ private options;
88
+ private active;
89
+ private editing;
90
+ readonly selections: AssetSelections;
91
+ readonly videos: Videos;
92
+ constructor(hub: HubContext, options?: WorkflowOptions);
93
+ project(id: string): Project;
94
+ settings(): HubSettings;
95
+ externalGuard?: (id: string) => void;
96
+ assertIdle(id: string): void;
97
+ assertAgentIdle(id: string): void;
98
+ isActive(id: string): boolean;
99
+ signal(id: string): AbortSignal | undefined;
100
+ snapshot(id: string): {
101
+ activities: import("../shared/types.js").AgentActivity[];
102
+ activity?: import("../shared/types.js").AgentActivity;
103
+ interviewRounds: InterviewRound[];
104
+ interviewRound: InterviewRound | undefined;
105
+ project: Project;
106
+ messages: InterviewMessage[];
107
+ plans: Plan[];
108
+ decomposition: Run | undefined;
109
+ video: {
110
+ name: string;
111
+ bytes: number;
112
+ offset: number;
113
+ status: 'uploading' | 'ready';
114
+ duration?: number;
115
+ width?: number;
116
+ height?: number;
117
+ hasAudio?: boolean;
118
+ mime?: string;
119
+ createdAt: string;
120
+ updatedAt: string;
121
+ comment: string;
122
+ fingerprint?: string;
123
+ videoId: string;
124
+ id: string;
125
+ } | undefined;
126
+ videoAnalysis: {
127
+ videoId: string;
128
+ revision: number;
129
+ status: 'queued' | 'processing' | 'paused' | 'stopped' | 'interrupted' | 'failed' | 'completed';
130
+ phase: 'waiting' | 'frames' | 'audio' | 'analysis' | 'synthesis' | 'ready';
131
+ completedSegments: number;
132
+ totalSegments: number;
133
+ processedSeconds: number;
134
+ duration: number;
135
+ currentSegment?: number;
136
+ packetIndex?: number;
137
+ packetCount?: number;
138
+ error?: string;
139
+ report?: string;
140
+ createdAt: string;
141
+ updatedAt: string;
142
+ agent: import("../shared/types.js").AgentId;
143
+ model?: string;
144
+ language: 'ru' | 'en';
145
+ analysisId: string;
146
+ id: string;
147
+ } | undefined;
148
+ videoAccepted: boolean;
149
+ assetSelection: import("../shared/types.js").AssetSelection | undefined;
150
+ assetReadiness: import("../shared/types.js").AssetReadiness;
151
+ planNeedsUpdate: boolean;
152
+ tasks: Task[];
153
+ epics: Epic[];
154
+ run: Run | null;
155
+ permissions: Permission[];
156
+ extensions: unknown[];
157
+ assets: {
158
+ id: string;
159
+ provider: string;
160
+ name: string;
161
+ type: string;
162
+ thumbnail?: string;
163
+ media?: import("../shared/types.js").AssetMedia[];
164
+ mediaTotal?: number;
165
+ mediaGalleryUrl?: string;
166
+ previewVideoUrl?: string;
167
+ sourceUrl: string;
168
+ license: string;
169
+ author?: string;
170
+ tags: string[];
171
+ downloadUrl?: string;
172
+ formats?: string[];
173
+ importMode: 'automatic' | 'manual';
174
+ previewAudioUrl?: string;
175
+ licenseUrl?: string;
176
+ attribution?: string;
177
+ provenanceUrl?: string;
178
+ verifiedAt?: string;
179
+ files?: string[];
180
+ }[];
181
+ };
182
+ recover(): void;
183
+ private emit;
184
+ private saveRun;
185
+ private stage;
186
+ private finishStages;
187
+ private message;
188
+ private launch;
189
+ private ask;
190
+ private supersedeInterview;
191
+ private conductInterview;
192
+ answerInterview(id: string, roundId: string, input: unknown): Run;
193
+ chat(id: string, text: string, mode: 'interview' | 'chat'): Run;
194
+ plan(id: string, brief?: string): Run;
195
+ savePlan(id: string, markdown: string, requireIdle?: boolean): Promise<Plan>;
196
+ approve(id: string, planId: string): Run;
197
+ approvePrototype(id: string, planId: string): Run;
198
+ execute(id: string): Run;
199
+ selectionAccess(id: string, selectionId: string): import("../shared/types.js").AssetSelection;
200
+ startSelection(id: string, planId?: string): {
201
+ selection: import("../shared/types.js").AssetSelection;
202
+ run: Run | undefined;
203
+ };
204
+ searchSelection(id: string, selectionId: string, needId: string, revision: number, query: string): Promise<import("../shared/types.js").AssetSelection>;
205
+ chooseAsset(id: string, selectionId: string, needId: string, revision: number, choice: AssetChoice): import("../shared/types.js").AssetSelection;
206
+ confirmSelection(id: string, selectionId: string, revision: number): import("../shared/types.js").AssetSelection;
207
+ retrySelection(id: string, selectionId: string): import("../shared/types.js").AssetSelection;
208
+ attachAsset(id: string, taskId: string, reference: {
209
+ provider: string;
210
+ id: string;
211
+ }): Promise<Task>;
212
+ retryTask(id: string, taskId: string): Task;
213
+ reviseTask(id: string, taskId: string, value: unknown): Task;
214
+ control(id: string, action: 'pause' | 'stop' | 'resume'): Run | null;
215
+ applyApprovalPolicy(): void;
216
+ answer(id: string, permissionId: string, answer: PermissionAnswer): void;
217
+ settle(id: string): Promise<void>;
218
+ close(): Promise<void>;
219
+ analyzeVideo(id: string, resume?: boolean): Run;
220
+ acceptVideo(id: string): Run;
221
+ }