@hypersoniclabs/helix-mcp 0.2.2 → 0.2.4
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/dist/server.js +304 -26
- package/dist/server.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/character-world.md +27 -9
- package/docs/manifest.md +32 -6
- package/docs/multiplayer-logic.md +394 -0
- package/docs/multiplayer-templates/chrono-orchard.md +123 -0
- package/docs/multiplayer-templates/collect-a-thon.md +126 -0
- package/docs/multiplayer-templates/collections.md +116 -0
- package/docs/multiplayer-templates/hangout.md +184 -0
- package/docs/multiplayer-templates/obby.md +84 -0
- package/docs/multiplayer-templates/physics-bumper.md +153 -0
- package/docs/multiplayer-templates/physics-football.md +133 -0
- package/docs/multiplayer-templates/relic-bearers.md +140 -0
- package/docs/multiplayer-templates/server-motion.md +128 -0
- package/docs/multiplayer-templates/team-control.md +98 -0
- package/docs/multiplayer-templates/turn-arena.md +159 -0
- package/docs/multiplayer-templates/wave-survival.md +141 -0
- package/docs/multiplayer-world.md +231 -0
- package/docs/publishing.md +44 -7
- package/docs/sdk.md +14 -2
- package/docs/world-recipe.md +1 -1
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
//
|
|
7
7
|
// Resources = the contract (docs an agent reads before generating).
|
|
8
8
|
// Tools = the actions (same code paths as the human `helix` CLI).
|
|
9
|
-
//
|
|
9
|
+
// The sign-in itself stays human (browser + website session); start_login /
|
|
10
|
+
// check_login let the agent orchestrate it — the token never reaches the agent.
|
|
10
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
12
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
12
13
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
@@ -16,8 +17,51 @@ const node_path_1 = require("node:path");
|
|
|
16
17
|
const helix_cli_1 = require("@hypersoniclabs/helix-cli");
|
|
17
18
|
const DOCS_DIR = (0, node_path_1.join)(__dirname, '..', 'docs');
|
|
18
19
|
const doc = (name) => (0, node_fs_1.readFileSync)((0, node_path_1.join)(DOCS_DIR, name), 'utf8');
|
|
20
|
+
const TEMPLATES_DIR = (0, node_path_1.join)(DOCS_DIR, 'multiplayer-templates');
|
|
21
|
+
const listTemplateNames = () => (0, node_fs_1.readdirSync)(TEMPLATES_DIR)
|
|
22
|
+
.filter((f) => f.endsWith('.md'))
|
|
23
|
+
.map((f) => f.slice(0, -3))
|
|
24
|
+
.sort();
|
|
19
25
|
// This MCP server's own version (independent of the CLI it depends on).
|
|
20
26
|
const VERSION = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, '..', 'package.json'), 'utf8')).version;
|
|
27
|
+
// Toolchain package names in THIS build's scope (HELIX_SCOPE comes from the bundled
|
|
28
|
+
// CLI: @helixdev on staging, @helix3 on helix3, @hypersoniclabs in production) — used
|
|
29
|
+
// in install hints and the docs an agent acts on.
|
|
30
|
+
const CLI_PKG = `${helix_cli_1.HELIX_SCOPE}/helix-cli`;
|
|
31
|
+
const MCP_PKG = `${helix_cli_1.HELIX_SCOPE}/helix-mcp`;
|
|
32
|
+
const SDK_PKG = `${helix_cli_1.HELIX_SCOPE}/helix-sdk`;
|
|
33
|
+
let sdkSpecsPromise;
|
|
34
|
+
const sdkSpecs = () => (sdkSpecsPromise ??= (async () => {
|
|
35
|
+
const latest = await (0, helix_cli_1.latestOnNpm)(SDK_PKG, { timeoutMs: 2500 });
|
|
36
|
+
if (helix_cli_1.HELIX_ENV === 'production') {
|
|
37
|
+
return {
|
|
38
|
+
dep: latest ? `^${latest.split('.').slice(0, 2).join('.')}` : '^0.1',
|
|
39
|
+
install: '@hypersoniclabs/helix-sdk',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const dep = `npm:${SDK_PKG}@${latest ?? 'latest'}`;
|
|
43
|
+
return { dep, install: `@hypersoniclabs/helix-sdk@${dep}` };
|
|
44
|
+
})());
|
|
45
|
+
// Non-prod lanes: docs that reference the SDK get a one-line reminder that the import
|
|
46
|
+
// specifier is env-invariant (dependency VALUES in the doc are already lane-substituted).
|
|
47
|
+
const LANE_SDK_NOTE = `> **${helix_cli_1.HELIX_ENV} toolchain (${helix_cli_1.HELIX_SCOPE}).** Keep every \`@hypersoniclabs/helix-sdk\` import exactly as written — ` +
|
|
48
|
+
`package.json dependency values in this doc are already aliased to the ${helix_cli_1.HELIX_ENV} SDK.`;
|
|
49
|
+
const withSdkNote = (content) => helix_cli_1.HELIX_ENV !== 'production' && content.includes('@hypersoniclabs/helix-sdk')
|
|
50
|
+
? `${LANE_SDK_NOTE}\n\n${content}`
|
|
51
|
+
: content;
|
|
52
|
+
// Docs are templates: {{CLI_PKG}}/{{MCP_PKG}}/{{SDK_DEP_SPEC}}/{{SDK_INSTALL_SPEC}} resolve to
|
|
53
|
+
// THIS build's environment, so the served text is literally correct on every lane (prod included).
|
|
54
|
+
// Every doc/template/resource read goes through here — never serve doc() raw.
|
|
55
|
+
async function serveDoc(file) {
|
|
56
|
+
let content = doc(file).replaceAll('{{CLI_PKG}}', CLI_PKG).replaceAll('{{MCP_PKG}}', MCP_PKG);
|
|
57
|
+
if (content.includes('{{SDK_DEP_SPEC}}') || content.includes('{{SDK_INSTALL_SPEC}}')) {
|
|
58
|
+
const specs = await sdkSpecs();
|
|
59
|
+
content = content
|
|
60
|
+
.replaceAll('{{SDK_DEP_SPEC}}', specs.dep)
|
|
61
|
+
.replaceAll('{{SDK_INSTALL_SPEC}}', specs.install);
|
|
62
|
+
}
|
|
63
|
+
return withSdkNote(content);
|
|
64
|
+
}
|
|
21
65
|
const server = new mcp_js_1.McpServer({ name: 'helix-instant', version: VERSION }, {
|
|
22
66
|
instructions: [
|
|
23
67
|
'HELIX Instant: build browser worlds with AI and publish them to a play-from-a-link platform.',
|
|
@@ -25,9 +69,9 @@ const server = new mcp_js_1.McpServer({ name: 'helix-instant', version: VERSION
|
|
|
25
69
|
'NEVER GUESS SETTINGS OR CAPABILITIES — read them. get_package_manifest returns the full tunable surface + what a package can do: for a SYSTEM, `config` (every tunable with defaults/ranges: camera modes, body, locomotion, …) + `capabilities` (input actions, blackboard conventions, built-in abilities, API); for an ABILITY, ability.json incl. its configSchema. Read it before you pin OR configure a system/ability — do not invent config keys.',
|
|
26
70
|
'TUNABLES LIVE IN THE MANIFEST `config`, NOT THE TYPESCRIPT CLASS API. Speed, spawn, look-sensitivity, initial look direction, FOV, slope, jump feel — almost everything a designer reaches for is a config VALUE, not a method. If you inspect the Character/LocomotionAbility class and conclude "no setting for X exists", you looked in the wrong place — re-read the manifest `config`. Set values two ways: initial via `Character.create({ config: { locomotion: { runSpeed: 7 }, character: { spawn:{x,z}, camera:{ mode, initialYaw, lookSensitivity } } } })`, or live via `character.config.set("ns.key", value)` (read every tick — use it for timed buffs, re-facing, difficulty). Runtime-only actions (teleport/applyImpulse/respawn/setEnabled/camera.setYaw/addTrauma) are in `capabilities.api`. The character-world recipe has worked examples (timed speed-boost, camera re-face, top-down/2.5D).',
|
|
27
71
|
'MATCH THE CONTROLS TO THE GENRE — every `allow*` gate DEFAULTS TO ON, so you must DISABLE what does not fit, or the player keeps a control the game should not have. A first-person game MUST set `character.camera.allowModeToggle:false` or pressing T still flips to third-person; top-down sets `allowRotate:false`+`allowZoom:false`; a no-jump walking sim/puzzle sets `locomotion.allowJump:false`. Pick the camera mode AND lock the gates that contradict it whenever you configure a character.',
|
|
28
|
-
'PICK THE FOUNDATION: if the world has a player character — ANY camera framing: first-person, third-person, 3D top-down (twin-stick/ARPG/MOBA), 2.5D / side-on (platformer), an avatar that walks/runs/jumps, or behaviors like fly / swim / shoot — build on the humanoid-character system: call get_started({ kind: "character" }). Top-down & 2.5D are just camera/movement config on this system. For a bare scene with no character, get_started({ kind: "scene" }).',
|
|
29
|
-
'THEN BUILD: follow the recipe get_started returns EXACTLY (do NOT guess the format) → generate the files → npm install (
|
|
30
|
-
|
|
72
|
+
'PICK THE FOUNDATION: if the world has a player character — ANY camera framing: first-person, third-person, 3D top-down (twin-stick/ARPG/MOBA), 2.5D / side-on (platformer), an avatar that walks/runs/jumps, or behaviors like fly / swim / shoot — build on the humanoid-character system: call get_started({ kind: "character" }). Top-down & 2.5D are just camera/movement config on this system. If players must SEE EACH OTHER or share a game (a hangout, co-op, an arena, a shared-object game), call get_started({ kind: "multiplayer" }) — the hub: a capability-indexed template index (then list_templates + read_template for a complete worked world) plus the declarative game-logic DSL (read_doc multiplayer-logic). You write no server code. For a bare scene with no character, get_started({ kind: "scene" }).',
|
|
73
|
+
'THEN BUILD: follow the recipe get_started returns EXACTLY (do NOT guess the format) → generate the files → npm install → install_world_packages on the project dir (any world that pins systems/abilities; resolves the pins in-process against THIS environment) → npm run build → validate_world on dist/ and fix every problem → whoami (not logged in? start_login opens the browser sign-in for the human, then check_login) → publish_world on dist/ for the public play link.',
|
|
74
|
+
`Deeper references via read_doc (character-world, multiplayer-world, multiplayer-logic, sdk, manifest, publishing, catalog). For shared game state beyond presence (scores, teams, server objects, rules) read multiplayer-logic. Run check_for_updates to confirm the toolchain (CLI/MCP) + a project’s ${SDK_PKG} are current.`,
|
|
31
75
|
].join('\n'),
|
|
32
76
|
});
|
|
33
77
|
// ---- Resources: the platform contract --------------------------------------
|
|
@@ -38,6 +82,18 @@ const RESOURCES = [
|
|
|
38
82
|
file: 'character-world.md',
|
|
39
83
|
description: 'Recipe for a world with a player character on the humanoid-character system: discover + pin systems/abilities, helix install, the Character/ability flow, first/third-person, top-down/2.5D, and the single-three + assets-from-CDN rules.',
|
|
40
84
|
},
|
|
85
|
+
{
|
|
86
|
+
uri: 'helix://docs/multiplayer-world',
|
|
87
|
+
name: 'Multiplayer hub (start here for multiplayer)',
|
|
88
|
+
file: 'multiplayer-world.md',
|
|
89
|
+
description: 'The multiplayer HUB — the entry point for worlds where players share a space and/or a game. The model + the v0.3 manifest opt-in (maxPlayers + the multiplayer permission) + a presence on-ramp (joinRoom, ReplicaScene/NetworkDriver, sendState), and a capability-indexed index of 12 worked templates (presence, server/owned/shared/physics entities, collections, state machine, time, checkpoints, teams) routing to read_template + the multiplayer-logic DSL. Platform-owned authoritative room; you write no server code.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
uri: 'helix://docs/multiplayer-logic',
|
|
93
|
+
name: 'Multiplayer logic — the declarative DSL reference',
|
|
94
|
+
file: 'multiplayer-logic.md',
|
|
95
|
+
description: 'Reference for HELIX server-authoritative multiplayer GAME LOGIC declared as data in helix.json (you write no server code): roomVars/playerVars, the when/if/then rule DSL, server- and client-hosted entities, zones, timers, a state machine, broadcast events, client actions, structured collections, and ownership/presence. Read this when a world needs shared game state beyond presence (scores, teams, objects, rules).',
|
|
96
|
+
},
|
|
41
97
|
{
|
|
42
98
|
uri: 'helix://docs/world-recipe',
|
|
43
99
|
name: 'World project recipe',
|
|
@@ -46,7 +102,7 @@ const RESOURCES = [
|
|
|
46
102
|
},
|
|
47
103
|
{
|
|
48
104
|
uri: 'helix://docs/sdk',
|
|
49
|
-
name:
|
|
105
|
+
name: `SDK contract (${SDK_PKG})`,
|
|
50
106
|
file: 'sdk.md',
|
|
51
107
|
description: 'Full SDK API contract: Helix.init(), auth APIs, login overlay behavior, standalone mode.',
|
|
52
108
|
},
|
|
@@ -70,7 +126,7 @@ const RESOURCES = [
|
|
|
70
126
|
},
|
|
71
127
|
];
|
|
72
128
|
for (const r of RESOURCES) {
|
|
73
|
-
server.registerResource(r.name, r.uri, { description: r.description, mimeType: 'text/markdown' }, () => ({ contents: [{ uri: r.uri, mimeType: 'text/markdown', text:
|
|
129
|
+
server.registerResource(r.name, r.uri, { description: r.description, mimeType: 'text/markdown' }, async () => ({ contents: [{ uri: r.uri, mimeType: 'text/markdown', text: await serveDoc(r.file) }] }));
|
|
74
130
|
}
|
|
75
131
|
// ---- Tools ------------------------------------------------------------------
|
|
76
132
|
const text = (s) => ({ content: [{ type: 'text', text: s }] });
|
|
@@ -82,37 +138,132 @@ const GET_STARTED_ROUTER = [
|
|
|
82
138
|
' first-person, third-person, 3D top-down (twin-stick/ARPG/MOBA), 2.5D / side-on platformer, an',
|
|
83
139
|
' avatar that walks/runs/jumps, or behaviors like fly/swim/shoot. Built on the published',
|
|
84
140
|
' humanoid-character system. Discover the abilities you can pin first: list_abilities.',
|
|
141
|
+
'- get_started({ kind: "multiplayer" }) — a world where players SHARE a space and/or a GAME: presence',
|
|
142
|
+
' (see each other move) AND declarative game logic — scores, teams, server/owned/physics entities, zones,',
|
|
143
|
+
' timers, turns. Built on the character system; you write NO server code. It returns the HUB (a',
|
|
144
|
+
' capability-indexed index of 12 worked templates) → list_templates + read_template for a complete world,',
|
|
145
|
+
' plus read_doc({ name: "multiplayer-logic" }) for the full DSL.',
|
|
85
146
|
'- get_started({ kind: "scene" }) — a BARE scene with no character (a spinning object, a data viz, a',
|
|
86
147
|
' menu, an ambient experience).',
|
|
87
148
|
'',
|
|
88
149
|
'Unsure? If the user controls a character, or the world has movement or abilities, it is a character world',
|
|
89
|
-
'— regardless of camera angle (top-down and 2.5D included).',
|
|
150
|
+
'— regardless of camera angle (top-down and 2.5D included). If players share a space OR any shared game',
|
|
151
|
+
'state (seeing each other, scores, teams, shared objects), it is multiplayer.',
|
|
90
152
|
].join('\n');
|
|
91
153
|
server.registerTool('get_started', {
|
|
92
|
-
description: 'REQUIRED FIRST STEP before building any HELIX Instant world. Returns the complete project recipe. Pass kind="character" for a world with a player character in ANY camera framing — all built on the humanoid-character system. Pass kind="scene" for a bare scene with no character. Omit kind to get the decision guide.',
|
|
154
|
+
description: 'REQUIRED FIRST STEP before building any HELIX Instant world. Returns the complete project recipe. Pass kind="character" for a world with a player character in ANY camera framing — all built on the humanoid-character system. Pass kind="multiplayer" for a world where players share a space and/or a game — presence PLUS declarative game logic (scores, teams, entities, physics, turns); returns the multiplayer HUB that routes to 12 worked templates + the multiplayer-logic DSL (you write no server code). Pass kind="scene" for a bare scene with no character. Omit kind to get the decision guide.',
|
|
93
155
|
inputSchema: {
|
|
94
|
-
kind: zod_1.z.enum(['character', 'scene']).optional().describe('"character" = humanoid-character world; "scene" = bare world; omit for the decision guide'),
|
|
156
|
+
kind: zod_1.z.enum(['character', 'multiplayer', 'scene']).optional().describe('"character" = humanoid-character world; "multiplayer" = shared world (presence + declarative game logic; the hub + 12 templates + the DSL); "scene" = bare world; omit for the decision guide'),
|
|
95
157
|
},
|
|
96
|
-
}, ({ kind }) => {
|
|
158
|
+
}, async ({ kind }) => {
|
|
97
159
|
if (kind === 'character')
|
|
98
|
-
return text(
|
|
160
|
+
return text(await serveDoc('character-world.md'));
|
|
161
|
+
if (kind === 'multiplayer')
|
|
162
|
+
return text(await serveDoc('multiplayer-world.md'));
|
|
99
163
|
if (kind === 'scene')
|
|
100
|
-
return text(
|
|
164
|
+
return text(await serveDoc('world-recipe.md'));
|
|
101
165
|
return text(GET_STARTED_ROUTER);
|
|
102
166
|
});
|
|
103
167
|
server.registerTool('read_doc', {
|
|
104
|
-
description:
|
|
105
|
-
inputSchema: { name: zod_1.z.enum(['character-world', 'sdk', 'manifest', 'publishing', 'catalog']) },
|
|
106
|
-
}, ({ name }) => text(
|
|
168
|
+
description: `Read a HELIX Instant reference document: "character-world", "multiplayer-world" (shared-presence worlds: join flow, replicas, sendState), "multiplayer-logic" (the declarative game-logic DSL: declared state, when/if/then rules, entities, zones, timers, state machine, collections, ownership), "sdk" (full ${SDK_PKG} API), "manifest" (every helix.json field + bundle rules), "publishing" (pipeline, login, error semantics), "catalog" (platform systems/abilities/asset-packs).`,
|
|
169
|
+
inputSchema: { name: zod_1.z.enum(['character-world', 'multiplayer-world', 'multiplayer-logic', 'sdk', 'manifest', 'publishing', 'catalog']) },
|
|
170
|
+
}, async ({ name }) => text(await serveDoc(`${name}.md`)));
|
|
171
|
+
server.registerTool('list_templates', {
|
|
172
|
+
description: 'List the available multiplayer world TEMPLATES — complete, publish-shaped worked worlds, one per capability cluster (presence, server/owned/shared/physics entities, collections, state machine, time, checkpoints, teams). After get_started({kind:"multiplayer"}), pick the closest and read it with read_template({name}).',
|
|
173
|
+
inputSchema: {},
|
|
174
|
+
}, () => {
|
|
175
|
+
const names = listTemplateNames();
|
|
176
|
+
if (names.length === 0)
|
|
177
|
+
return text('No multiplayer templates available yet.');
|
|
178
|
+
return text(`Multiplayer templates (read one with read_template({ name })):\n${names.map((n) => `- ${n}`).join('\n')}`);
|
|
179
|
+
});
|
|
180
|
+
server.registerTool('read_template', {
|
|
181
|
+
description: 'Read a complete, publish-shaped multiplayer world template: its DSL checklist, the full public/helix.json (incl. the multiplayer block), the client src/main.ts delta, and build/publish steps. Pick the name from the hub (get_started multiplayer) or list_templates — e.g. "hangout".',
|
|
182
|
+
inputSchema: { name: zod_1.z.string().describe('Template name, e.g. "hangout" (see list_templates)') },
|
|
183
|
+
}, async ({ name }) => {
|
|
184
|
+
const names = listTemplateNames();
|
|
185
|
+
if (!names.includes(name))
|
|
186
|
+
return errText(`No template "${name}". Available: ${names.join(', ') || '(none yet)'}.`);
|
|
187
|
+
return text(await serveDoc(`multiplayer-templates/${name}.md`));
|
|
188
|
+
});
|
|
107
189
|
server.registerTool('whoami', {
|
|
108
|
-
description: 'Check HELIX login state. Publishing requires a logged-in creator account; if not logged in,
|
|
190
|
+
description: 'Check HELIX login state. Publishing requires a logged-in creator account; if not logged in, drive the browser sign-in with start_login (the human completes it on the website).',
|
|
109
191
|
inputSchema: {},
|
|
110
192
|
}, () => {
|
|
111
193
|
const status = (0, helix_cli_1.authStatus)();
|
|
112
194
|
if (!status.loggedIn) {
|
|
113
|
-
return text(
|
|
195
|
+
return text(`Not logged in. Call start_login to open the browser sign-in (or the human can run: npm i -g ${CLI_PKG} && helix login).`);
|
|
114
196
|
}
|
|
115
|
-
|
|
197
|
+
const okLine = `Logged in as ${status.username} against ${status.apiUrl} (token valid until ${status.expiresAt ?? 'unknown'}).`;
|
|
198
|
+
const warn = (0, helix_cli_1.credsEnvMismatchWarning)(status.apiUrl);
|
|
199
|
+
return text(warn ? `${okLine}\n\n⚠ ${warn}` : okLine);
|
|
200
|
+
});
|
|
201
|
+
let pendingLogin = null;
|
|
202
|
+
const loginElapsedSec = (p) => Math.round((Date.now() - p.startedAt) / 1000);
|
|
203
|
+
server.registerTool('start_login', {
|
|
204
|
+
description: `Begin the HELIX browser sign-in for the ${helix_cli_1.HELIX_ENV} environment (${helix_cli_1.DEFAULT_WEB_URL}): opens the human's browser to the sign-in page and returns the URL — relay it if the browser did not open. The human completes the sign-in on the website; the minted token is captured and saved locally by this process (never returned to you). Poll check_login for the outcome. No-ops when already logged in to this environment.`,
|
|
205
|
+
inputSchema: {
|
|
206
|
+
openBrowser: zod_1.z.boolean().optional().describe("Open the human's browser automatically (default true); false = only return the URL to relay"),
|
|
207
|
+
force: zod_1.z.boolean().optional().describe('Sign in again even when already logged in to this environment (switch accounts)'),
|
|
208
|
+
},
|
|
209
|
+
}, async ({ openBrowser, force }) => {
|
|
210
|
+
const status = (0, helix_cli_1.authStatus)();
|
|
211
|
+
if (!force && status.loggedIn && !(0, helix_cli_1.credsEnvMismatchWarning)(status.apiUrl)) {
|
|
212
|
+
return text(`Already logged in as ${status.username} against ${status.apiUrl} — no sign-in needed (pass force:true to switch accounts).`);
|
|
213
|
+
}
|
|
214
|
+
if (pendingLogin?.status === 'pending') {
|
|
215
|
+
return text(`A sign-in is already waiting (${loginElapsedSec(pendingLogin)}s elapsed). Ask the human to open:\n${pendingLogin.url}\nThen call check_login.`);
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
let resolveUrl;
|
|
219
|
+
const urlReady = new Promise((res) => (resolveUrl = res));
|
|
220
|
+
const login = (0, helix_cli_1.browserLogin)({
|
|
221
|
+
webUrl: helix_cli_1.DEFAULT_WEB_URL,
|
|
222
|
+
name: (0, helix_cli_1.defaultClientTokenName)(),
|
|
223
|
+
openBrowser: openBrowser !== false,
|
|
224
|
+
onUrl: resolveUrl,
|
|
225
|
+
});
|
|
226
|
+
// A loopback bind failure rejects `login` before onUrl ever fires — racing them surfaces it here.
|
|
227
|
+
const url = await Promise.race([urlReady, login.then(() => urlReady)]);
|
|
228
|
+
const entry = { url, startedAt: Date.now(), status: 'pending' };
|
|
229
|
+
pendingLogin = entry;
|
|
230
|
+
login
|
|
231
|
+
.then(async ({ token }) => {
|
|
232
|
+
const api = new helix_cli_1.HelixApi(helix_cli_1.DEFAULT_API_URL, token);
|
|
233
|
+
const user = await (0, helix_cli_1.whoAmI)(api); // validates the token before persisting it
|
|
234
|
+
(0, helix_cli_1.saveCredentials)({ apiUrl: helix_cli_1.DEFAULT_API_URL, token, expiresAt: (0, helix_cli_1.jwtExpiresAtIso)(token), username: user.username });
|
|
235
|
+
entry.status = 'done';
|
|
236
|
+
entry.username = user.username;
|
|
237
|
+
})
|
|
238
|
+
.catch((err) => {
|
|
239
|
+
entry.status = 'failed';
|
|
240
|
+
entry.error = err instanceof helix_cli_1.ApiError ? err.render() : err instanceof Error ? err.message : String(err);
|
|
241
|
+
});
|
|
242
|
+
return text([
|
|
243
|
+
`Sign-in started for ${helix_cli_1.HELIX_ENV} (${helix_cli_1.DEFAULT_WEB_URL}).`,
|
|
244
|
+
openBrowser !== false ? "The human's browser should have opened; if it didn't, ask them to open:" : 'Ask the human to open:',
|
|
245
|
+
url,
|
|
246
|
+
'',
|
|
247
|
+
'When they finish signing in, call check_login (the flow times out after 5 minutes).',
|
|
248
|
+
].join('\n'));
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
return errText(`Could not start the sign-in: ${err instanceof Error ? err.message : String(err)}`);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
server.registerTool('check_login', {
|
|
255
|
+
description: 'Check the outcome of a start_login flow: pending (the human is still signing in — wait and re-check), done (logged in; credentials saved), or failed (timeout/denied — start_login again to retry).',
|
|
256
|
+
inputSchema: {},
|
|
257
|
+
}, () => {
|
|
258
|
+
if (!pendingLogin)
|
|
259
|
+
return text('No sign-in in progress. Call start_login first (or whoami to inspect the stored login).');
|
|
260
|
+
if (pendingLogin.status === 'pending') {
|
|
261
|
+
return text(`Still waiting for the human to finish signing in (${loginElapsedSec(pendingLogin)}s elapsed). URL:\n${pendingLogin.url}`);
|
|
262
|
+
}
|
|
263
|
+
if (pendingLogin.status === 'done') {
|
|
264
|
+
return text(`Logged in as ${pendingLogin.username} against ${helix_cli_1.DEFAULT_API_URL}. Credentials saved — publishing is unlocked.`);
|
|
265
|
+
}
|
|
266
|
+
return errText(`Sign-in failed: ${pendingLogin.error}\nCall start_login to retry.`);
|
|
116
267
|
});
|
|
117
268
|
server.registerTool('validate_world', {
|
|
118
269
|
description: 'Validate a built world bundle directory (the Vite dist/ folder containing helix.json) against the exact rules the platform enforces at publish. Run this after building and fix every reported problem before publishing.',
|
|
@@ -132,6 +283,9 @@ server.registerTool('publish_world', {
|
|
|
132
283
|
const creds = (0, helix_cli_1.loadCredentials)();
|
|
133
284
|
if (!creds)
|
|
134
285
|
return errText('Not logged in. Ask the human to run: helix login');
|
|
286
|
+
const warn = (0, helix_cli_1.credsEnvMismatchWarning)(creds.apiUrl);
|
|
287
|
+
if (warn)
|
|
288
|
+
return errText(`Refusing to publish:\n${warn}`);
|
|
135
289
|
try {
|
|
136
290
|
const result = await (0, helix_cli_1.publishWorld)((0, node_path_1.resolve)(directory), creds);
|
|
137
291
|
return text([
|
|
@@ -144,6 +298,43 @@ server.registerTool('publish_world', {
|
|
|
144
298
|
return errText(err instanceof helix_cli_1.ApiError ? err.render() : `Publish failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
145
299
|
}
|
|
146
300
|
});
|
|
301
|
+
server.registerTool('set_preview_video', {
|
|
302
|
+
description: "Set (or clear) a published world's preview video from a YouTube link. It plays as an extra slide in the world detail carousel; the world's thumbnail stays the cover. " +
|
|
303
|
+
'Video is REFERENCED, never uploaded — there is deliberately no way to upload an mp4/webm (the preview slot takes images only; YouTube does the transcoding, streaming and moderation). ' +
|
|
304
|
+
'Accepts any usual shape — https://www.youtube.com/watch?v=ID, https://youtu.be/ID, /embed/ID, /shorts/ID, /live/ID, or a bare 11-character id; extra params like &t= are discarded. ' +
|
|
305
|
+
'The link is normalised and host-checked server-side, so a non-YouTube URL is rejected rather than stored. ' +
|
|
306
|
+
'Requires login (check whoami first) and a world you own — publish it first, then set its video.',
|
|
307
|
+
inputSchema: {
|
|
308
|
+
slug: zod_1.z.string().describe('The world slug (as published; see list_my_worlds)'),
|
|
309
|
+
url: zod_1.z
|
|
310
|
+
.string()
|
|
311
|
+
.optional()
|
|
312
|
+
.describe('YouTube link or bare video id. Omit together with clear:true to remove the video.'),
|
|
313
|
+
clear: zod_1.z.boolean().optional().describe("Remove the world's preview video instead of setting one"),
|
|
314
|
+
},
|
|
315
|
+
}, async ({ slug, url, clear }) => {
|
|
316
|
+
const creds = (0, helix_cli_1.loadCredentials)();
|
|
317
|
+
if (!creds)
|
|
318
|
+
return errText('Not logged in. Ask the human to run: helix login');
|
|
319
|
+
if (!clear && !url)
|
|
320
|
+
return errText('Pass a YouTube link, or clear: true to remove the video.');
|
|
321
|
+
try {
|
|
322
|
+
const result = clear
|
|
323
|
+
? await (0, helix_cli_1.clearWorldPreviewVideo)(slug, creds)
|
|
324
|
+
: await (0, helix_cli_1.setWorldPreviewVideo)(slug, url, creds);
|
|
325
|
+
return text(result.previewYoutubeId
|
|
326
|
+
? [
|
|
327
|
+
`Preview video set for "${result.title}".`,
|
|
328
|
+
`Video id: ${result.previewYoutubeId}`,
|
|
329
|
+
`Embed: ${result.previewYoutubeUrl}`,
|
|
330
|
+
'It appears as the last slide of the world detail carousel.',
|
|
331
|
+
].join('\n')
|
|
332
|
+
: `Preview video cleared for "${result.title}".`);
|
|
333
|
+
}
|
|
334
|
+
catch (err) {
|
|
335
|
+
return errText(err instanceof helix_cli_1.ApiError ? err.render() : `Failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
147
338
|
server.registerTool('list_my_worlds', {
|
|
148
339
|
description: 'List the worlds owned by the logged-in creator (including drafts), with their slugs and build state.',
|
|
149
340
|
inputSchema: {},
|
|
@@ -153,16 +344,102 @@ server.registerTool('list_my_worlds', {
|
|
|
153
344
|
return errText('Not logged in. Ask the human to run: helix login');
|
|
154
345
|
try {
|
|
155
346
|
const worlds = await (0, helix_cli_1.listMyWorlds)(creds);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
347
|
+
const warn = (0, helix_cli_1.credsEnvMismatchWarning)(creds.apiUrl);
|
|
348
|
+
const listing = worlds.length === 0
|
|
349
|
+
? 'No worlds yet.'
|
|
350
|
+
: worlds.map((w) => `- ${w.slug} ("${w.title}") — ${w.status}, hasActiveBuild: ${w.hasActiveBuild}`).join('\n');
|
|
351
|
+
return text(warn ? `⚠ ${warn}\n\n${listing}` : listing);
|
|
159
352
|
}
|
|
160
353
|
catch (err) {
|
|
161
354
|
return errText(err instanceof helix_cli_1.ApiError ? err.render() : `Failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
162
355
|
}
|
|
163
356
|
});
|
|
357
|
+
server.registerTool('import_character', {
|
|
358
|
+
description: 'Convert an external biped character GLB (a Meshy AI export, or any Mixamo-named rig) into a helix-humanoid@1 character asset. ' +
|
|
359
|
+
'Conforms the mesh onto the canonical skeleton AT ITS OWN PROPORTIONS (the platform’s shared locomotion clips then drive it), generates the LOD chain ' +
|
|
360
|
+
'(micro-chart baked atlases are auto-rebaked: weld → re-unwrap → closest-point texture transfer), and KTX2-encodes the textures — all in-process, no native tools, ' +
|
|
361
|
+
'no extra files (the canonical helix-humanoid@1 skeleton is bundled; a world’s installed humanoid-character pack or `canonical` overrides it). ' +
|
|
362
|
+
'Outputs <output>/<name>.web.glb (multi-scene: scene i = LOD i; the head is sliced into a FaceMesh node per level so first-person mode can hide it, like the stock face part), plus <output>/anims/<clipName>.glb when `anim` is given. ' +
|
|
363
|
+
'Use when the human supplies a custom character model instead of the stock bodies. ' +
|
|
364
|
+
'Validated example — a Meshy AI character with its walk animation, everything else default: ' +
|
|
365
|
+
'{ "body": "C:/downloads/Meshy_AI_Warrior_biped_Character_output.glb", "anim": "C:/downloads/Meshy_AI_Warrior_biped_Animation_Walking_withSkin.glb", ' +
|
|
366
|
+
'"name": "warrior", "output": "./characters" } ' +
|
|
367
|
+
'→ characters/warrior.web.glb (~3MB, LOD tris ≈10000/5000/1500 at 1024/512/256px KTX2, UASTC up close + ETC1S far) + characters/anims/locomotion.warriorWalk.glb.',
|
|
368
|
+
inputSchema: {
|
|
369
|
+
body: zod_1.z.string().describe('Absolute path to the source biped character GLB (skinned body)'),
|
|
370
|
+
anim: zod_1.z.string().optional().describe('Optional animation GLB on the SAME source rig — retargeted onto the canonical skeleton'),
|
|
371
|
+
clipName: zod_1.z.string().optional().describe("Clip name for `anim` (default 'locomotion.warriorWalk')"),
|
|
372
|
+
canonical: zod_1.z.string().optional().describe('Canonical helix body GLB override; omit to use the world’s installed humanoid-character pack when present, else the bundled helix-humanoid@1 skeleton'),
|
|
373
|
+
worldDir: zod_1.z.string().optional().describe('World directory searched for the installed pack and used as the base for a relative `output` (default: cwd)'),
|
|
374
|
+
output: zod_1.z.string().optional().describe("Output directory (default './character-out')"),
|
|
375
|
+
name: zod_1.z.string().optional().describe('Output basename → <name>.web.glb (default: derived from the body file name)'),
|
|
376
|
+
texSize: zod_1.z.number().int().positive().optional().describe('Texture longest-edge cap, halved per LOD level (default 1024)'),
|
|
377
|
+
lodTris: zod_1.z.array(zod_1.z.number().int().positive()).optional().describe('Triangle target per LOD level, high→low (default [10000, 5000, 1500])'),
|
|
378
|
+
},
|
|
379
|
+
}, async ({ body, anim, clipName, canonical, worldDir, output, name, texSize, lodTris }) => {
|
|
380
|
+
const progress = [];
|
|
381
|
+
try {
|
|
382
|
+
const result = await (0, helix_cli_1.importCharacter)({
|
|
383
|
+
body: (0, node_path_1.resolve)(body),
|
|
384
|
+
...(anim !== undefined && { anim: (0, node_path_1.resolve)(anim) }),
|
|
385
|
+
...(clipName !== undefined && { clipName }),
|
|
386
|
+
...(canonical !== undefined && { canonical: (0, node_path_1.resolve)(canonical) }),
|
|
387
|
+
...(worldDir !== undefined && { cwd: (0, node_path_1.resolve)(worldDir) }),
|
|
388
|
+
...(output !== undefined && { output }),
|
|
389
|
+
...(name !== undefined && { name }),
|
|
390
|
+
...(texSize !== undefined && { texSize }),
|
|
391
|
+
...(lodTris !== undefined && { lodTris }),
|
|
392
|
+
onProgress: (message) => progress.push(message),
|
|
393
|
+
});
|
|
394
|
+
return text([
|
|
395
|
+
...progress,
|
|
396
|
+
'',
|
|
397
|
+
`Character ready: ${result.bodyPath}`,
|
|
398
|
+
`LOD tris: ${result.lodTris.join(' / ')} · textures: ${result.textureSizes.join('/')}px KTX2 (${result.ktx2.modes.join('/')})`,
|
|
399
|
+
result.clip ? `Clip: ${result.clip.name} (${result.clip.frames} frames, ${result.clip.duration}s) → ${result.clip.path}` : 'No clip retargeted (pass `anim` to bring one over).',
|
|
400
|
+
].join('\n'));
|
|
401
|
+
}
|
|
402
|
+
catch (err) {
|
|
403
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
404
|
+
return errText([...progress, '', `import_character failed: ${detail}`].join('\n'));
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
server.registerTool('install_world_packages', {
|
|
408
|
+
description: "Resolve a world's helix.json system/ability pins against the platform catalog, download their code into public/helix_modules/, and wire the hosted three runtime (import map + src/helix.runtime.ts). Run it in the world project after `npm install` and after every pin edit, before `npm run build`. Replays the committed helix.lock.json when present; pass update:true to re-resolve ranges to newer versions and rewrite the lock. Same code path as the human `helix install`, but resolution happens in-process against THIS toolchain's environment — no PATH ambiguity.",
|
|
409
|
+
inputSchema: {
|
|
410
|
+
directory: zod_1.z.string().describe('Absolute path to the world project directory (the one containing helix.json or public/helix.json)'),
|
|
411
|
+
update: zod_1.z.boolean().optional().describe('Re-resolve pins against the live catalog and rewrite helix.lock.json (default: replay the existing lock)'),
|
|
412
|
+
},
|
|
413
|
+
}, async ({ directory, update }) => {
|
|
414
|
+
const progress = [];
|
|
415
|
+
try {
|
|
416
|
+
const result = await (0, helix_cli_1.installWorld)((0, node_path_1.resolve)(directory), {
|
|
417
|
+
apiUrl: helix_cli_1.DEFAULT_API_URL,
|
|
418
|
+
...(update !== undefined && { update }),
|
|
419
|
+
onProgress: (message) => progress.push(message),
|
|
420
|
+
});
|
|
421
|
+
const sys = result.systems.map((s) => `${s.slug}@${s.version}`).join(', ') || '(none)';
|
|
422
|
+
const abl = result.abilities.map((a) => `${a.slug}@${a.version}`).join(', ') || '(none)';
|
|
423
|
+
return text([
|
|
424
|
+
...progress,
|
|
425
|
+
'',
|
|
426
|
+
`${result.reresolved ? 'Resolved' : 'Replayed lock'} — systems: ${sys}; abilities: ${abl}`,
|
|
427
|
+
'code -> public/helix_modules/ · assets stream from the CDN · lock -> helix.lock.json',
|
|
428
|
+
...(result.runtime
|
|
429
|
+
? [`three ${result.runtime.threeVersion} -> import map + src/helix.runtime.ts wired to the hosted runtime`]
|
|
430
|
+
: []),
|
|
431
|
+
].join('\n'));
|
|
432
|
+
}
|
|
433
|
+
catch (err) {
|
|
434
|
+
const detail = err instanceof helix_cli_1.ApiError ? err.render() : err instanceof Error ? err.message : String(err);
|
|
435
|
+
return errText([...progress, '', `install_world_packages failed: ${detail}`].join('\n'));
|
|
436
|
+
}
|
|
437
|
+
});
|
|
164
438
|
// ---- Catalog discovery (read-only; publishing is admin-only) ----------------
|
|
165
|
-
|
|
439
|
+
// Catalog reads always target this build's environment (HELIX_API_URL overrides) — never
|
|
440
|
+
// the stored login, which may point at another lane (see credsEnvMismatchWarning). Matches
|
|
441
|
+
// `helix install` semantics, so discovery and pin resolution can't diverge.
|
|
442
|
+
const catalogApiUrl = () => helix_cli_1.DEFAULT_API_URL;
|
|
166
443
|
const formatPackage = (p) => {
|
|
167
444
|
const sys = p.targetSystem ? ` [system: ${p.targetSystem.id}${p.targetSystem.range ? `@${p.targetSystem.range}` : ''}]` : '';
|
|
168
445
|
return `- ${p.slug}@${p.latestVersion ?? '?'} — ${p.title}${sys}`;
|
|
@@ -204,14 +481,14 @@ server.registerTool('get_package_manifest', {
|
|
|
204
481
|
}, async ({ slug, version }) => {
|
|
205
482
|
try {
|
|
206
483
|
const manifest = await (0, helix_cli_1.getPackageManifest)(catalogApiUrl(), slug, version);
|
|
207
|
-
return text(`${JSON.stringify(manifest, null, 2)}\n\nTo use this: pin it in your world's helix.json (under "systems" or "abilities") and
|
|
484
|
+
return text(`${JSON.stringify(manifest, null, 2)}\n\nTo use this: pin it in your world's helix.json (under "systems" or "abilities") and call \`install_world_packages\`. Full recipe: get_started({ kind: "character" }).`);
|
|
208
485
|
}
|
|
209
486
|
catch (err) {
|
|
210
487
|
return errText(err instanceof helix_cli_1.ApiError ? err.render() : `Failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
211
488
|
}
|
|
212
489
|
});
|
|
213
490
|
server.registerTool('check_for_updates', {
|
|
214
|
-
description:
|
|
491
|
+
description: `Check whether the HELIX @helix toolchain is current: compares the installed CLI / MCP / SDK / manifest against the latest published on npm and returns the exact update command for any that are behind. Pass the world/ability project dir to also check its pinned deps (e.g. ${SDK_PKG}).`,
|
|
215
492
|
inputSchema: {
|
|
216
493
|
projectDir: zod_1.z.string().optional().describe('Absolute path to a world/ability project, to also check its pinned @helix dependencies'),
|
|
217
494
|
},
|
|
@@ -219,7 +496,7 @@ server.registerTool('check_for_updates', {
|
|
|
219
496
|
try {
|
|
220
497
|
const rows = await (0, helix_cli_1.checkForUpdates)({
|
|
221
498
|
projectDir: projectDir ? (0, node_path_1.resolve)(projectDir) : undefined,
|
|
222
|
-
installed: { '@hypersoniclabs/helix-
|
|
499
|
+
installed: { '@hypersoniclabs/helix-mcp': VERSION },
|
|
223
500
|
});
|
|
224
501
|
const lines = rows.map((r) => {
|
|
225
502
|
const installed = r.installed ?? '—';
|
|
@@ -230,7 +507,8 @@ server.registerTool('check_for_updates', {
|
|
|
230
507
|
return `• ${r.name}: latest ${r.latest ?? '?'} (installed version not detected here) — ${r.updateHint}`;
|
|
231
508
|
});
|
|
232
509
|
const stale = rows.filter((r) => r.status === 'update-available').length;
|
|
233
|
-
|
|
510
|
+
const header = `HELIX toolchain — environment: ${helix_cli_1.HELIX_ENV} (${helix_cli_1.HELIX_SCOPE}) · API ${helix_cli_1.DEFAULT_API_URL} · website ${helix_cli_1.DEFAULT_WEB_URL}`;
|
|
511
|
+
return text([header, `${stale} update${stale === 1 ? '' : 's'} available:`, ...lines].join('\n'));
|
|
234
512
|
}
|
|
235
513
|
catch (err) {
|
|
236
514
|
return errText(`Update check failed: ${err instanceof Error ? err.message : String(err)}`);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|