@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.
- package/LICENSE +21 -0
- package/README.md +161 -2
- package/architecture.md +105 -0
- package/bin/lm-game-hub.js +7 -0
- package/dist/server/activity.d.ts +17 -0
- package/dist/server/activity.js +55 -0
- package/dist/server/activity.js.map +1 -0
- package/dist/server/agents/activity.d.ts +36 -0
- package/dist/server/agents/activity.js +117 -0
- package/dist/server/agents/activity.js.map +1 -0
- package/dist/server/agents/claude.d.ts +5 -0
- package/dist/server/agents/claude.js +107 -0
- package/dist/server/agents/claude.js.map +1 -0
- package/dist/server/agents/codex.d.ts +5 -0
- package/dist/server/agents/codex.js +128 -0
- package/dist/server/agents/codex.js.map +1 -0
- package/dist/server/agents/core-tools.d.ts +23 -0
- package/dist/server/agents/core-tools.js +298 -0
- package/dist/server/agents/core-tools.js.map +1 -0
- package/dist/server/agents/core.d.ts +9 -0
- package/dist/server/agents/core.js +106 -0
- package/dist/server/agents/core.js.map +1 -0
- package/dist/server/agents/index.d.ts +5 -0
- package/dist/server/agents/index.js +41 -0
- package/dist/server/agents/index.js.map +1 -0
- package/dist/server/agents/kimi.d.ts +5 -0
- package/dist/server/agents/kimi.js +123 -0
- package/dist/server/agents/kimi.js.map +1 -0
- package/dist/server/agents/rpc.d.ts +19 -0
- package/dist/server/agents/rpc.js +102 -0
- package/dist/server/agents/rpc.js.map +1 -0
- package/dist/server/agents/types.d.ts +51 -0
- package/dist/server/agents/types.js +7 -0
- package/dist/server/agents/types.js.map +1 -0
- package/dist/server/app.d.ts +21 -0
- package/dist/server/app.js +38 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/asset-catalog.d.ts +5 -0
- package/dist/server/asset-catalog.js +525 -0
- package/dist/server/asset-catalog.js.map +1 -0
- package/dist/server/asset-media.d.ts +16 -0
- package/dist/server/asset-media.js +170 -0
- package/dist/server/asset-media.js.map +1 -0
- package/dist/server/asset-selection.d.ts +71 -0
- package/dist/server/asset-selection.js +273 -0
- package/dist/server/asset-selection.js.map +1 -0
- package/dist/server/assets.d.ts +69 -0
- package/dist/server/assets.js +669 -0
- package/dist/server/assets.js.map +1 -0
- package/dist/server/browser-gateway.d.ts +82 -0
- package/dist/server/browser-gateway.js +285 -0
- package/dist/server/browser-gateway.js.map +1 -0
- package/dist/server/chat-computer.d.ts +13 -0
- package/dist/server/chat-computer.js +29 -0
- package/dist/server/chat-computer.js.map +1 -0
- package/dist/server/chat-games.d.ts +38 -0
- package/dist/server/chat-games.js +202 -0
- package/dist/server/chat-games.js.map +1 -0
- package/dist/server/chat.d.ts +42 -0
- package/dist/server/chat.js +318 -0
- package/dist/server/chat.js.map +1 -0
- package/dist/server/cli.d.ts +14 -0
- package/dist/server/cli.js +117 -0
- package/dist/server/cli.js.map +1 -0
- package/dist/server/core-client.d.ts +69 -0
- package/dist/server/core-client.js +357 -0
- package/dist/server/core-client.js.map +1 -0
- package/dist/server/directory-picker.d.ts +14 -0
- package/dist/server/directory-picker.js +113 -0
- package/dist/server/directory-picker.js.map +1 -0
- package/dist/server/engine.d.ts +36 -0
- package/dist/server/engine.js +507 -0
- package/dist/server/engine.js.map +1 -0
- package/dist/server/events.d.ts +12 -0
- package/dist/server/events.js +137 -0
- package/dist/server/events.js.map +1 -0
- package/dist/server/game-launch.d.ts +16 -0
- package/dist/server/game-launch.js +143 -0
- package/dist/server/game-launch.js.map +1 -0
- package/dist/server/html5.d.ts +9 -0
- package/dist/server/html5.js +107 -0
- package/dist/server/html5.js.map +1 -0
- package/dist/server/interview.d.ts +241 -0
- package/dist/server/interview.js +190 -0
- package/dist/server/interview.js.map +1 -0
- package/dist/server/mcp.d.ts +27 -0
- package/dist/server/mcp.js +91 -0
- package/dist/server/mcp.js.map +1 -0
- package/dist/server/plugins.d.ts +8 -0
- package/dist/server/plugins.js +144 -0
- package/dist/server/plugins.js.map +1 -0
- package/dist/server/process.d.ts +15 -0
- package/dist/server/process.js +89 -0
- package/dist/server/process.js.map +1 -0
- package/dist/server/publication-materials.d.ts +18 -0
- package/dist/server/publication-materials.js +104 -0
- package/dist/server/publication-materials.js.map +1 -0
- package/dist/server/publication-mcp.d.ts +3 -0
- package/dist/server/publication-mcp.js +43 -0
- package/dist/server/publication-mcp.js.map +1 -0
- package/dist/server/publication.d.ts +54 -0
- package/dist/server/publication.js +334 -0
- package/dist/server/publication.js.map +1 -0
- package/dist/server/push.d.ts +81 -0
- package/dist/server/push.js +122 -0
- package/dist/server/push.js.map +1 -0
- package/dist/server/reports.d.ts +4 -0
- package/dist/server/reports.js +40 -0
- package/dist/server/reports.js.map +1 -0
- package/dist/server/roblox-assets.d.ts +41 -0
- package/dist/server/roblox-assets.js +131 -0
- package/dist/server/roblox-assets.js.map +1 -0
- package/dist/server/roblox-connection.d.ts +54 -0
- package/dist/server/roblox-connection.js +331 -0
- package/dist/server/roblox-connection.js.map +1 -0
- package/dist/server/roblox-install.d.ts +4 -0
- package/dist/server/roblox-install.js +170 -0
- package/dist/server/roblox-install.js.map +1 -0
- package/dist/server/roblox-mcp.d.ts +2 -0
- package/dist/server/roblox-mcp.js +34 -0
- package/dist/server/roblox-mcp.js.map +1 -0
- package/dist/server/roblox-play.d.ts +23 -0
- package/dist/server/roblox-play.js +84 -0
- package/dist/server/roblox-play.js.map +1 -0
- package/dist/server/roblox-project-tools.d.ts +11 -0
- package/dist/server/roblox-project-tools.js +119 -0
- package/dist/server/roblox-project-tools.js.map +1 -0
- package/dist/server/roblox-setup.d.ts +37 -0
- package/dist/server/roblox-setup.js +206 -0
- package/dist/server/roblox-setup.js.map +1 -0
- package/dist/server/roblox-skills.d.ts +15 -0
- package/dist/server/roblox-skills.js +15 -0
- package/dist/server/roblox-skills.js.map +1 -0
- package/dist/server/roblox.d.ts +30 -0
- package/dist/server/roblox.js +248 -0
- package/dist/server/roblox.js.map +1 -0
- package/dist/server/routes.d.ts +11 -0
- package/dist/server/routes.js +223 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/security.d.ts +4 -0
- package/dist/server/security.js +64 -0
- package/dist/server/security.js.map +1 -0
- package/dist/server/skills.d.ts +4 -0
- package/dist/server/skills.js +123 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/store.d.ts +25 -0
- package/dist/server/store.js +89 -0
- package/dist/server/store.js.map +1 -0
- package/dist/server/templates/roblox-coin-run.d.ts +2 -0
- package/dist/server/templates/roblox-coin-run.js +326 -0
- package/dist/server/templates/roblox-coin-run.js.map +1 -0
- package/dist/server/templates/roblox-skills.json +55 -0
- package/dist/server/templates/yandex-sdk.d.ts +3 -0
- package/dist/server/templates/yandex-sdk.js +177 -0
- package/dist/server/templates/yandex-sdk.js.map +1 -0
- package/dist/server/updates.d.ts +28 -0
- package/dist/server/updates.js +99 -0
- package/dist/server/updates.js.map +1 -0
- package/dist/server/video-media.d.ts +47 -0
- package/dist/server/video-media.js +224 -0
- package/dist/server/video-media.js.map +1 -0
- package/dist/server/video-routes.d.ts +7 -0
- package/dist/server/video-routes.js +91 -0
- package/dist/server/video-routes.js.map +1 -0
- package/dist/server/video.d.ts +214 -0
- package/dist/server/video.js +301 -0
- package/dist/server/video.js.map +1 -0
- package/dist/server/web-build.d.ts +16 -0
- package/dist/server/web-build.js +232 -0
- package/dist/server/web-build.js.map +1 -0
- package/dist/server/workflow.d.ts +221 -0
- package/dist/server/workflow.js +826 -0
- package/dist/server/workflow.js.map +1 -0
- package/dist/server/yandex-config.d.ts +33 -0
- package/dist/server/yandex-config.js +12 -0
- package/dist/server/yandex-config.js.map +1 -0
- package/dist/server/yandex-godot.d.ts +5 -0
- package/dist/server/yandex-godot.js +107 -0
- package/dist/server/yandex-godot.js.map +1 -0
- package/dist/shared/aspects.d.ts +48 -0
- package/dist/shared/aspects.js +22 -0
- package/dist/shared/aspects.js.map +1 -0
- package/dist/shared/assistant.d.ts +7 -0
- package/dist/shared/assistant.js +36 -0
- package/dist/shared/assistant.js.map +1 -0
- package/dist/shared/chat.d.ts +46 -0
- package/dist/shared/chat.js +2 -0
- package/dist/shared/chat.js.map +1 -0
- package/dist/shared/settings.d.ts +11 -0
- package/dist/shared/settings.js +25 -0
- package/dist/shared/settings.js.map +1 -0
- package/dist/shared/types.d.ts +510 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/web/apple-touch-icon.png +0 -0
- package/dist/web/assets/AgentActivity-sYJeY5Yf.js +9 -0
- package/dist/web/assets/ArrowRight.es-9w41WqD8.js +1 -0
- package/dist/web/assets/ArrowUpRight.es-BmIrpjWN.js +1 -0
- package/dist/web/assets/AssetMediaPreview-D2cd6oQO.js +1 -0
- package/dist/web/assets/AssetSelectionWizard-a43_6NO7.js +1 -0
- package/dist/web/assets/CaretDown.es-Cq33NYip.js +1 -0
- package/dist/web/assets/CheckCircle.es-D5B3hdvz.js +1 -0
- package/dist/web/assets/CoreAccount-D4ZC8CWv.js +1 -0
- package/dist/web/assets/DownloadSimple.es-DwOWFbs2.js +1 -0
- package/dist/web/assets/FileText.es-D83IIiOG.js +1 -0
- package/dist/web/assets/ImageSquare.es-DxCFt99_.js +1 -0
- package/dist/web/assets/KidsApp-BXWaALoK.css +1 -0
- package/dist/web/assets/KidsApp-D-8t3HPy.js +2 -0
- package/dist/web/assets/MagnifyingGlass.es-rkdOU2rH.js +1 -0
- package/dist/web/assets/PaperPlaneRight.es-U0twumpP.js +1 -0
- package/dist/web/assets/PencilSimple.es-JVHwRvGx.js +1 -0
- package/dist/web/assets/PlainChat-BC4K_tmj.css +1 -0
- package/dist/web/assets/PlainChat-CMxYwKko.js +1 -0
- package/dist/web/assets/Sparkle.es-CmGpvnNm.js +1 -0
- package/dist/web/assets/Square.es-BjNN9Ypc.js +1 -0
- package/dist/web/assets/UploadSimple.es-DxIuxpCC.js +1 -0
- package/dist/web/assets/WarningCircle.es-D63H8cL9.js +1 -0
- package/dist/web/assets/WorkflowJournal-Did0sRta.js +1 -0
- package/dist/web/assets/YandexConfigFields-DDL22Bfw.js +1 -0
- package/dist/web/assets/YandexGamesView-R64RSJRL.js +2 -0
- package/dist/web/assets/bg-build-DIalyCDw.svg +3 -0
- package/dist/web/assets/bg-idea-DHcE-Dhs.svg +3 -0
- package/dist/web/assets/bg-materials-UDVFaueI.svg +3 -0
- package/dist/web/assets/bg-plan-DpfwIsqJ.svg +3 -0
- package/dist/web/assets/bg-play-CNc1QZFK.svg +3 -0
- package/dist/web/assets/dist-7vx7MTaJ.js +1 -0
- package/dist/web/assets/index-Izzbh11U.css +1 -0
- package/dist/web/assets/index-sNciOZYG.js +13 -0
- package/dist/web/assets/jsx-runtime-CdVFa8IP.js +1 -0
- package/dist/web/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2 +0 -0
- package/dist/web/assets/manrope-greek-wght-normal-DL7QRZyv.woff2 +0 -0
- package/dist/web/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/dist/web/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/dist/web/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2 +0 -0
- package/dist/web/assets/resources-DppXCagL.js +1 -0
- package/dist/web/assets/robot-happy-B6YvlU94.svg +24 -0
- package/dist/web/assets/robot-hello-CCsQgsS-.svg +24 -0
- package/dist/web/assets/robot-listen-Buuz9xII.svg +24 -0
- package/dist/web/assets/robot-sad-CRtiNVWs.svg +24 -0
- package/dist/web/assets/robot-think-CJ5fDBTm.svg +24 -0
- package/dist/web/assets/star-big-CSFDKjws.svg +22 -0
- package/dist/web/assets/star-empty-CC-5vioJ.svg +3 -0
- package/dist/web/assets/star-next-ztuDjOHU.svg +9 -0
- package/dist/web/assets/star-on-l_krO3aV.svg +10 -0
- package/dist/web/assets/ui-wHE_yBK0.js +41 -0
- package/dist/web/assets/umgt-logo-DAOkTN9u.png +0 -0
- package/dist/web/assets/unbounded-cyrillic-wght-normal-C627f1f8.woff2 +0 -0
- package/dist/web/assets/unbounded-latin-ext-wght-normal-D6H-S6MW.woff2 +0 -0
- package/dist/web/assets/unbounded-latin-wght-normal-D5afBTBx.woff2 +0 -0
- package/dist/web/assets/unbounded-vietnamese-wght-normal-rat7GD3o.woff2 +0 -0
- package/dist/web/assets/workflow-BhcU9uvG.css +1 -0
- package/dist/web/assets/workflow-BrIKN5ER.js +34 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/icons/favicon-16.png +0 -0
- package/dist/web/icons/favicon-32.png +0 -0
- package/dist/web/icons/icon-192.png +0 -0
- package/dist/web/icons/icon-512.png +0 -0
- package/dist/web/icons/maskable-192.png +0 -0
- package/dist/web/icons/maskable-512.png +0 -0
- package/dist/web/index.html +28 -0
- package/dist/web/manifest.webmanifest +19 -0
- package/dist/web/sw.js +25 -0
- package/docs/agent-activity-ui.md +33 -0
- package/docs/agent-activity.md +43 -0
- package/docs/agent-permissions-ui.md +15 -0
- package/docs/api.md +145 -0
- package/docs/approval-journal.md +13 -0
- package/docs/asset-media.md +27 -0
- package/docs/asset-providers.md +34 -0
- package/docs/asset-selection.md +31 -0
- package/docs/automatic-approvals.md +15 -0
- package/docs/background-game-launch.md +17 -0
- package/docs/billing-validation.md +23 -0
- package/docs/core-isolation.md +37 -0
- package/docs/core.md +45 -0
- package/docs/generated-text-ui.md +41 -0
- package/docs/interactive-interview-ui.md +29 -0
- package/docs/interactive-interview.md +52 -0
- package/docs/local-codex.md +51 -0
- package/docs/local-meshy.md +13 -0
- package/docs/markdown.md +11 -0
- package/docs/permission-ui.md +11 -0
- package/docs/plan.md +47 -0
- package/docs/remote-core-deployment.md +47 -0
- package/docs/roblox.md +90 -0
- package/docs/validation.md +228 -0
- package/docs/video-reference.md +35 -0
- package/docs/workflow-journal-ui.md +21 -0
- package/docs/yandex-foundation.md +27 -0
- package/docs/yandex-games.md +45 -0
- package/package.json +95 -4
- package/scripts/create-roblox-demo.mjs +31 -0
- package/scripts/diagnose-roblox-mcp.mjs +45 -0
- package/scripts/open-hub-chrome.mjs +60 -0
- 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
|
+
}
|