@hypersoniclabs/helix-mcp 0.2.4 → 0.2.12
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/README.md +81 -11
- package/dist/continuumCanary.d.ts +17 -0
- package/dist/continuumCanary.js +17 -0
- package/dist/continuumCanary.js.map +1 -0
- package/dist/server.d.ts +14 -1
- package/dist/server.js +4058 -162
- package/dist/server.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/vehicleTools.d.ts +86 -0
- package/dist/vehicleTools.js +229 -0
- package/dist/vehicleTools.js.map +1 -0
- package/docs/avatar-face.md +115 -0
- package/docs/bridge.md +98 -0
- package/docs/bring-your-world.md +117 -0
- package/docs/catalog.md +69 -1
- package/docs/character-animation.md +442 -0
- package/docs/character-attachments.md +166 -0
- package/docs/character-world.md +785 -130
- package/docs/continuum.md +153 -0
- package/docs/items.md +73 -0
- package/docs/lighting-world.md +667 -0
- package/docs/locomotion-clip-spec.md +294 -0
- package/docs/manifest.md +31 -6
- package/docs/multiplayer-logic.md +460 -17
- package/docs/multiplayer-templates/chrono-orchard.md +36 -22
- package/docs/multiplayer-templates/collect-a-thon.md +28 -38
- package/docs/multiplayer-templates/collections.md +24 -24
- package/docs/multiplayer-templates/hangout.md +124 -111
- package/docs/multiplayer-templates/npc-wave.md +310 -0
- package/docs/multiplayer-templates/obby.md +13 -16
- package/docs/multiplayer-templates/persistent-progress.md +218 -0
- package/docs/multiplayer-templates/physics-bumper.md +27 -9
- package/docs/multiplayer-templates/physics-football.md +22 -8
- package/docs/multiplayer-templates/relic-bearers.md +12 -15
- package/docs/multiplayer-templates/server-motion.md +16 -19
- package/docs/multiplayer-templates/shooter-range.md +275 -0
- package/docs/multiplayer-templates/team-control.md +28 -15
- package/docs/multiplayer-templates/turn-arena.md +31 -22
- package/docs/multiplayer-templates/voice-radio.md +166 -0
- package/docs/multiplayer-templates/wave-survival.md +7 -8
- package/docs/multiplayer-templates/world-shop.md +240 -0
- package/docs/multiplayer-world.md +222 -129
- package/docs/npc-world.md +623 -0
- package/docs/publishing.md +108 -28
- package/docs/purchases.md +223 -0
- package/docs/scene-performance.md +64 -0
- package/docs/screenshots.md +140 -0
- package/docs/sdk.md +324 -5
- package/docs/shooter-worlds.md +537 -0
- package/docs/terrain.md +173 -0
- package/docs/upgrades.md +324 -0
- package/docs/vehicles.md +727 -0
- package/docs/world-inspect.md +156 -0
- package/docs/world-look.md +241 -0
- package/docs/world-recipe.md +65 -6
- package/package.json +15 -4
- package/skills/README.md +91 -0
- package/skills/helix-assets/SKILL.md +491 -0
- package/skills/helix-assets/references/asset-sources.md +143 -0
- package/skills/helix-assets/references/vault-api.md +105 -0
- package/skills/helix-avatar-qa/SKILL.md +85 -0
- package/skills/helix-avatars/SKILL.md +206 -0
- package/skills/helix-avatars/references/contract.md +166 -0
- package/skills/helix-avatars/references/dynamics.md +367 -0
- package/skills/helix-avatars/references/face.md +50 -0
- package/skills/helix-avatars/references/publish.md +76 -0
- package/skills/helix-avatars/references/qa.md +251 -0
- package/skills/helix-avatars/references/rigging.md +88 -0
- package/skills/helix-avatars/references/source-generated.md +190 -0
- package/skills/helix-avatars/references/source-model.md +90 -0
- package/skills/helix-avatars/references/source-rigid.md +90 -0
- package/skills/helix-avatars/references/source-vrm.md +61 -0
- package/skills/helix-gauntlet/SKILL.md +128 -0
- package/skills/helix-multiplayer/SKILL.md +150 -0
- package/skills/helix-multiplayer/references/dsl-capability-map.md +107 -0
- package/skills/helix-vehicles/SKILL.md +218 -0
- package/skills/helix-vehicles/references/addons.md +212 -0
- package/skills/helix-vehicles/references/appearance.md +339 -0
- package/skills/helix-vehicles/references/audio-import.md +138 -0
- package/skills/helix-vehicles/references/audio.md +580 -0
- package/skills/helix-vehicles/references/cabin.md +225 -0
- package/skills/helix-vehicles/references/host-manifest.md +174 -0
- package/skills/helix-vehicles/references/physics-from-specs.md +463 -0
- package/skills/helix-vehicles/references/publish.md +214 -0
- package/skills/helix-vehicles/references/qa.md +177 -0
- package/skills/helix-vehicles/references/reference-package.json +3481 -0
- package/skills/helix-vehicles/references/reference-package.md +69 -0
- package/skills/helix-vehicles/references/source-beamng.md +167 -0
- package/skills/helix-vehicles/references/source-concept.md +38 -0
- package/skills/helix-vehicles/references/source-model.md +100 -0
- package/skills/helix-vehicles/references/source-scratch.md +60 -0
- package/skills/helix-world-build/SKILL.md +376 -0
- package/skills/helix-world-build/references/config-gates.md +104 -0
- package/skills/helix-world-director/SKILL.md +210 -0
- package/skills/helix-world-qa/SKILL.md +371 -0
- package/skills/helix-world-qa/references/perf-budgets.md +240 -0
- package/skills/helix-world-qa/references/perf-handle.md +125 -0
- package/skills/helix-world-qa/references/visual-scorecard.md +85 -0
package/README.md
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
# @hypersoniclabs/helix-mcp
|
|
2
2
|
|
|
3
|
-
The **HELIX Instant MCP server**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
The **HELIX Instant MCP server** gives AI coding agents the platform contract and tells them how
|
|
4
|
+
to use the `helix` creator CLI. Resources expose the docs an agent reads before building; tool
|
|
5
|
+
schemas route arguments into CLI commands. Login stays human (`helix login` once).
|
|
6
|
+
|
|
7
|
+
## Architecture boundary
|
|
8
|
+
|
|
9
|
+
Feature and operational logic, validation, file mutation, network behavior, and their tests belong
|
|
10
|
+
in `helix-creator-cli`. This package contains only MCP transport, schemas, resources, instructions,
|
|
11
|
+
and thin CLI delegation. Do not implement a platform feature here.
|
|
12
|
+
|
|
13
|
+
**Engine systems are ranges.** Docs, recipes, skills and tool descriptions here say `^0.3`-style ranges for
|
|
14
|
+
`helix.json` `systems`; the CLI's `validate`/`publish` (and so `validate_world`/`publish_world`) refuse an exact
|
|
15
|
+
engine pin unless a human passes `--allow-exact-engine-pin "<reason>"` (logged). To ship an engine fix to Worlds,
|
|
16
|
+
promote it (`POST /api/v1/instant-packages/<slug>/versions/<version>/rollout`); do not pin.
|
|
7
17
|
|
|
8
18
|
## Use it
|
|
9
19
|
|
|
@@ -25,13 +35,74 @@ unauthenticated, publishing needs `helix login` (a client token).
|
|
|
25
35
|
|
|
26
36
|
## Tools
|
|
27
37
|
|
|
28
|
-
`get_started`, `read_doc`, `whoami`, `validate_world`, `publish_world`,
|
|
29
|
-
`list_systems`, `list_abilities`, `get_package_manifest`,
|
|
38
|
+
World lifecycle: `get_started`, `read_doc`, `whoami`, `validate_world`, `publish_world`,
|
|
39
|
+
`list_my_worlds`, `list_systems`, `list_abilities`, `get_package_manifest`,
|
|
40
|
+
`check_for_updates`, and `analyze_scene_performance`. The performance analyzer reads the exact
|
|
41
|
+
Scene resource closure and optional runtime receipt, reports authored and submitted costs
|
|
42
|
+
separately, and returns specific fixes without predicting FPS from static counts. Measurement comes
|
|
43
|
+
before pixels on every surface, so each pair is
|
|
44
|
+
measure-then-look: `inspect_world` / `capture_world_screenshot` for layout, `inspect_gesture` /
|
|
45
|
+
`capture_gesture` for poses, and `inspect_npc` / `capture_npc` for NPC behaviour — the latter runs
|
|
46
|
+
the built world headlessly and reports distance walked vs gained, stuck windows, arrived edges and
|
|
47
|
+
the state timelines, then films a captioned strip of it.
|
|
48
|
+
|
|
49
|
+
Continuum lifecycle: `publish_continuum_source_map`,
|
|
50
|
+
`publish_continuum_scratch_world`, `publish_continuum_package`,
|
|
51
|
+
`publish_owned_item`, `dry_run_continuum_canary`, `publish_continuum_canary`, and
|
|
52
|
+
`get_continuum_publication_receipt`. These are thin Creator delegates; MCP does
|
|
53
|
+
not compile Scenes, persist checkpoints, or grant public Listing authority. The
|
|
54
|
+
canary tools call the bundled Creator library directly and accept only one
|
|
55
|
+
descriptor path; public Listing confirmation remains exclusively human-operated
|
|
56
|
+
CLI authority.
|
|
57
|
+
|
|
58
|
+
Vehicle lifecycle: `get_started({ kind: "vehicle" })` serves the `helix-vehicles` skill (the
|
|
59
|
+
workflow), `read_doc({ name: "vehicles" })` the HELIX Vehicle Contract (the rules), and
|
|
60
|
+
`read_skill` the skill's references (source bridges for BeamNG, downloaded models, concepts and
|
|
61
|
+
from-scratch builds; physics from real specs; audio; add-ons; publication; QA; a complete live
|
|
62
|
+
reference package). New vehicle content follows the sealed Package workflow; the former vehicle
|
|
63
|
+
Item-first MCP publisher routes are retired. `visual_qa_item` judges a candidate `packageVersion`. `item_thumbnail`
|
|
64
|
+
re-renders (`action: "refresh"`, with `force` / `dryRun`) or replaces (`action: "set"`, `imagePath`) a
|
|
65
|
+
published item's thumbnail in-process through the creator's own credentials.
|
|
66
|
+
|
|
67
|
+
Avatar lifecycle: `get_started({ kind: "avatar" })` serves the `helix-avatars` skill: any source
|
|
68
|
+
(VRM, generated image-to-3D, rigged game model, robot/CAD) to a published avatar — the
|
|
69
|
+
`helix-humanoid@1` contract and all-LOD budgets, rigging, `helix/dynamics@1` physics bones for hair,
|
|
70
|
+
tails, ears and cloth, faces, publish and version moves, and the motion-vs-control QA that catches
|
|
71
|
+
what the gates miss. `import_character` takes `boneMap`, `fit`, `bake`, `lockBorder`, `ktxMode` and
|
|
72
|
+
`provenance`; VRMs go through `bridge_import`.
|
|
73
|
+
|
|
74
|
+
`read_skill` serves any first-party skill in `skills/` to agents that only have this server.
|
|
75
|
+
|
|
76
|
+
Device lifecycle: `create_device`, `validate_device`, `test_device`. These delegate to the bundled
|
|
77
|
+
Creator CLI, which owns GLB/node validation and deterministic single-/two-client simulation. Device
|
|
78
|
+
authoring is intentionally MCP/CLI-only; the website has no parallel Device workbench.
|
|
79
|
+
|
|
80
|
+
Vault lifecycle:
|
|
81
|
+
|
|
82
|
+
- `search_assets`, `get_asset`, `list_asset_versions`, `install_asset`, `track_asset`,
|
|
83
|
+
`update_asset_metadata`
|
|
84
|
+
- `list_voices` for safe text-to-speech voice discovery and pagination
|
|
85
|
+
- `start_asset_generation`, `poll_asset_generation`
|
|
86
|
+
- convenience tools `generate_asset` (prop/character, with optional deterministic character reference sheet), `generate_image`, `generate_material`,
|
|
87
|
+
`generate_audio`, `generate_environment_splat`, and the explicit `generate_animation` stub
|
|
88
|
+
|
|
89
|
+
Vault tools return commands for the environment-matched HELIX CLI. The CLI owns authentication,
|
|
90
|
+
network calls, polling, checksum verification, installation receipts, mutation, and failure
|
|
91
|
+
semantics; MCP does not carry a second implementation.
|
|
92
|
+
|
|
93
|
+
Call `list_voices` before text-to-speech generation; it returns selectable voice ids, supported
|
|
94
|
+
languages, preview URLs, and default/recommended choices without exposing vendor credentials or
|
|
95
|
+
voice administration. `generate_audio` executes that packaged CLI directly and supports the full
|
|
96
|
+
shared audio route: `sound_effect` (default), `music`, and `text_to_speech`. The tool exposes the
|
|
97
|
+
curated MP3 formats, mode-specific duration/model controls, and bounded TTS language, voice, seed,
|
|
98
|
+
voice-settings, and unique pronunciation-dictionary fields. It allows up to 35 minutes for the
|
|
99
|
+
CLI's durable generation, ingestion, and default-on Vault publication flow to finish, then returns
|
|
100
|
+
the CLI's JSON receipt.
|
|
30
101
|
|
|
31
102
|
## Resources
|
|
32
103
|
|
|
33
|
-
`helix://docs/{character-world,world-recipe,sdk,manifest,publishing,catalog}` —
|
|
34
|
-
documentation, served from `docs/`.
|
|
104
|
+
`helix://docs/{continuum,character-world,world-recipe,scene-performance,sdk,items,purchases,manifest,publishing,catalog,vehicles}` —
|
|
105
|
+
the agent documentation, served from `docs/`.
|
|
35
106
|
|
|
36
107
|
## Develop
|
|
37
108
|
|
|
@@ -41,6 +112,5 @@ npm run build # tsc → dist/ (bin: dist/server.js)
|
|
|
41
112
|
npm test # boots the server over stdio and asserts the tools register
|
|
42
113
|
```
|
|
43
114
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
asset-packs are authored in `helix-web-engine` and published to the catalog the agent discovers.
|
|
115
|
+
The `humanoid-character` system, its abilities, and asset-packs are authored in
|
|
116
|
+
`helix-web-engine` and published to the catalog the agent discovers.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type McpCanaryPublicationScope = {
|
|
2
|
+
package: {
|
|
3
|
+
id: string;
|
|
4
|
+
};
|
|
5
|
+
packagePublication?: {
|
|
6
|
+
visibility?: string;
|
|
7
|
+
};
|
|
8
|
+
listings: ReadonlyArray<{
|
|
9
|
+
listing: {
|
|
10
|
+
id: string;
|
|
11
|
+
visibility: string;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
/** MCP carries no human confirmation, so ambiguous or public canary scope fails closed. */
|
|
16
|
+
export declare function assertMcpCanaryPublicationScope(publications: ReadonlyArray<McpCanaryPublicationScope>): void;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertMcpCanaryPublicationScope = assertMcpCanaryPublicationScope;
|
|
4
|
+
/** MCP carries no human confirmation, so ambiguous or public canary scope fails closed. */
|
|
5
|
+
function assertMcpCanaryPublicationScope(publications) {
|
|
6
|
+
const publicListings = publications.flatMap((publication) => publication.listings
|
|
7
|
+
.filter(({ listing }) => listing.visibility === 'public')
|
|
8
|
+
.map(({ listing }) => listing.id));
|
|
9
|
+
const nonPrivatePackages = publications
|
|
10
|
+
.filter((publication) => publication.packagePublication?.visibility !== 'private')
|
|
11
|
+
.map(({ package: pkg }) => pkg.id);
|
|
12
|
+
if (publicListings.length > 0 || nonPrivatePackages.length > 0) {
|
|
13
|
+
throw new TypeError('MCP cannot authorize public Continuum Packages or Listings. Publish this canary as private/unlisted, ' +
|
|
14
|
+
'or have the human use the Creator CLI public-listing confirmation path.');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=continuumCanary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuumCanary.js","sourceRoot":"","sources":["../src/continuumCanary.ts"],"names":[],"mappings":";;AAOA,0EAiBC;AAlBD,2FAA2F;AAC3F,SAAgB,+BAA+B,CAC7C,YAAsD;IAEtD,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAC1D,WAAW,CAAC,QAAQ;SACjB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC;SACxD,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CACpC,CAAC;IACF,MAAM,kBAAkB,GAAG,YAAY;SACpC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,kBAAkB,EAAE,UAAU,KAAK,SAAS,CAAC;SACjF,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,SAAS,CACjB,uGAAuG;YACrG,yEAAyE,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,2 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* First line of every `cliDelegation` result, and a cross-repo CONTRACT: the
|
|
4
|
+
* Dreamer sandbox bridge matches on it to auto-run the command itself instead
|
|
5
|
+
* of handing the raw text to the model (`dreamer-worker`
|
|
6
|
+
* `src/mcp/bridgeClient.ts` → `detectDelegatedCommand`).
|
|
7
|
+
*
|
|
8
|
+
* That side cannot import this — separate package, separate deploy — so it
|
|
9
|
+
* keeps a pinned copy and its test asserts against this exact wording. Named
|
|
10
|
+
* here so the string has one owner and a grep finds both halves. Before this
|
|
11
|
+
* existed the worker matched a phrase that only ever appeared in a tool
|
|
12
|
+
* DESCRIPTION, so the auto-run never fired once and the agent shelled out to
|
|
13
|
+
* `npx …@latest` on its own (HYPR-5280). Change this and change that.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DELEGATED_RESULT_MARKER = "DELEGATED \u2014 RETURNS A COMMAND, NOT DATA. Run this through the HELIX creator CLI. The MCP transport does not implement this feature:";
|