@hypersoniclabs/helix-mcp 0.2.5 → 0.2.13-helix3.177

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +81 -11
  2. package/dist/continuumCanary.d.ts +17 -0
  3. package/dist/continuumCanary.js +17 -0
  4. package/dist/continuumCanary.js.map +1 -0
  5. package/dist/server.d.ts +14 -1
  6. package/dist/server.js +4059 -163
  7. package/dist/server.js.map +1 -1
  8. package/dist/tsconfig.build.tsbuildinfo +1 -1
  9. package/dist/vehicleTools.d.ts +86 -0
  10. package/dist/vehicleTools.js +229 -0
  11. package/dist/vehicleTools.js.map +1 -0
  12. package/docs/avatar-face.md +115 -0
  13. package/docs/bridge.md +98 -0
  14. package/docs/bring-your-world.md +117 -0
  15. package/docs/catalog.md +69 -1
  16. package/docs/character-animation.md +442 -0
  17. package/docs/character-attachments.md +166 -0
  18. package/docs/character-world.md +785 -130
  19. package/docs/continuum.md +153 -0
  20. package/docs/items.md +73 -0
  21. package/docs/lighting-world.md +667 -0
  22. package/docs/locomotion-clip-spec.md +294 -0
  23. package/docs/manifest.md +31 -6
  24. package/docs/multiplayer-logic.md +460 -17
  25. package/docs/multiplayer-templates/chrono-orchard.md +36 -22
  26. package/docs/multiplayer-templates/collect-a-thon.md +28 -38
  27. package/docs/multiplayer-templates/collections.md +24 -24
  28. package/docs/multiplayer-templates/hangout.md +124 -111
  29. package/docs/multiplayer-templates/npc-wave.md +310 -0
  30. package/docs/multiplayer-templates/obby.md +13 -16
  31. package/docs/multiplayer-templates/persistent-progress.md +218 -0
  32. package/docs/multiplayer-templates/physics-bumper.md +27 -9
  33. package/docs/multiplayer-templates/physics-football.md +22 -8
  34. package/docs/multiplayer-templates/relic-bearers.md +12 -15
  35. package/docs/multiplayer-templates/server-motion.md +16 -19
  36. package/docs/multiplayer-templates/shooter-range.md +275 -0
  37. package/docs/multiplayer-templates/team-control.md +28 -15
  38. package/docs/multiplayer-templates/turn-arena.md +31 -22
  39. package/docs/multiplayer-templates/voice-radio.md +166 -0
  40. package/docs/multiplayer-templates/wave-survival.md +7 -8
  41. package/docs/multiplayer-templates/world-shop.md +240 -0
  42. package/docs/multiplayer-world.md +222 -129
  43. package/docs/npc-world.md +623 -0
  44. package/docs/publishing.md +108 -28
  45. package/docs/purchases.md +223 -0
  46. package/docs/scene-performance.md +64 -0
  47. package/docs/screenshots.md +140 -0
  48. package/docs/sdk.md +324 -5
  49. package/docs/shooter-worlds.md +537 -0
  50. package/docs/terrain.md +173 -0
  51. package/docs/upgrades.md +324 -0
  52. package/docs/vehicles.md +727 -0
  53. package/docs/world-inspect.md +156 -0
  54. package/docs/world-look.md +241 -0
  55. package/docs/world-recipe.md +65 -6
  56. package/package.json +15 -4
  57. package/skills/README.md +91 -0
  58. package/skills/helix-assets/SKILL.md +491 -0
  59. package/skills/helix-assets/references/asset-sources.md +143 -0
  60. package/skills/helix-assets/references/vault-api.md +105 -0
  61. package/skills/helix-avatar-qa/SKILL.md +85 -0
  62. package/skills/helix-avatars/SKILL.md +206 -0
  63. package/skills/helix-avatars/references/contract.md +166 -0
  64. package/skills/helix-avatars/references/dynamics.md +367 -0
  65. package/skills/helix-avatars/references/face.md +50 -0
  66. package/skills/helix-avatars/references/publish.md +76 -0
  67. package/skills/helix-avatars/references/qa.md +251 -0
  68. package/skills/helix-avatars/references/rigging.md +88 -0
  69. package/skills/helix-avatars/references/source-generated.md +190 -0
  70. package/skills/helix-avatars/references/source-model.md +90 -0
  71. package/skills/helix-avatars/references/source-rigid.md +90 -0
  72. package/skills/helix-avatars/references/source-vrm.md +61 -0
  73. package/skills/helix-gauntlet/SKILL.md +128 -0
  74. package/skills/helix-multiplayer/SKILL.md +150 -0
  75. package/skills/helix-multiplayer/references/dsl-capability-map.md +107 -0
  76. package/skills/helix-vehicles/SKILL.md +218 -0
  77. package/skills/helix-vehicles/references/addons.md +212 -0
  78. package/skills/helix-vehicles/references/appearance.md +339 -0
  79. package/skills/helix-vehicles/references/audio-import.md +138 -0
  80. package/skills/helix-vehicles/references/audio.md +580 -0
  81. package/skills/helix-vehicles/references/cabin.md +225 -0
  82. package/skills/helix-vehicles/references/host-manifest.md +174 -0
  83. package/skills/helix-vehicles/references/physics-from-specs.md +463 -0
  84. package/skills/helix-vehicles/references/publish.md +224 -0
  85. package/skills/helix-vehicles/references/qa.md +177 -0
  86. package/skills/helix-vehicles/references/reference-package.json +3481 -0
  87. package/skills/helix-vehicles/references/reference-package.md +69 -0
  88. package/skills/helix-vehicles/references/source-beamng.md +167 -0
  89. package/skills/helix-vehicles/references/source-concept.md +38 -0
  90. package/skills/helix-vehicles/references/source-model.md +100 -0
  91. package/skills/helix-vehicles/references/source-scratch.md +60 -0
  92. package/skills/helix-world-build/SKILL.md +376 -0
  93. package/skills/helix-world-build/references/config-gates.md +104 -0
  94. package/skills/helix-world-director/SKILL.md +210 -0
  95. package/skills/helix-world-qa/SKILL.md +371 -0
  96. package/skills/helix-world-qa/references/perf-budgets.md +240 -0
  97. package/skills/helix-world-qa/references/perf-handle.md +125 -0
  98. 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** — gives AI coding agents the platform contract so they can inspect
4
- it, generate a compatible world, validate it, and publish it. Resources expose the docs an agent
5
- reads before generating; tools run the same code paths as the human `helix` CLI (it depends on
6
- `@hypersoniclabs/helix-cli`). Login stays human (`helix login` once); agents check `whoami`.
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`, `list_my_worlds`,
29
- `list_systems`, `list_abilities`, `get_package_manifest`, `check_for_updates`.
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}` — the agent
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
- This package is intentionally thin: it depends on `@hypersoniclabs/helix-cli` for all publish/validate/discovery
45
- logic, so the CLI and MCP can never drift. The `humanoid-character` system, its abilities, and
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
- export {};
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:";