@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.
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 +4058 -162
  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 +214 -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
@@ -0,0 +1,153 @@
1
+ # Continuum Scene and Package publication
2
+
3
+ Continuum is HELIX's content-addressed publication path. The Creator package owns
4
+ every operation; MCP tools only pass an absolute descriptor path to the same
5
+ library used by its CLI.
6
+
7
+ Use `publish_continuum_source_map` for imported maps,
8
+ `publish_continuum_scratch_world` for semantic primitives, and
9
+ `publish_continuum_package` for an already-frozen Package/Build.
10
+ Use `pull_continuum_package` to fetch an exact creator source bundle before an
11
+ agent edits it. The tool delegates authorization, CID verification, path safety,
12
+ and extraction to Creator CLI; it never executes downloaded hooks. After the
13
+ agent updates the self-contained files and its included/compiler-produced
14
+ publication descriptor, `publish_continuum_package` creates the new immutable
15
+ Package Version through the normal fenced workflow.
16
+
17
+ For an existing creator-owned Item, `publish_owned_item` moves its Package pin
18
+ to one exact public, sealed, current Package Version using the approved
19
+ Publications workflow. It requires explicit content-rating attestation, creates
20
+ no Item or offer, and returns the Creator CLI result without MCP assuming its
21
+ receipt shape. Create Marketplace or World offers separately and only when
22
+ intended.
23
+
24
+ Devices use the same self-contained definition in both host contexts. An owned
25
+ Home placement persists only its declared durable variables to the Item Instance
26
+ CAS API. A World-embedded copy has no inventory identity, so the World host
27
+ selects session-only or World storage and a namespace for that instance. The
28
+ package never chooses its authority or storage destination; it emits the same
29
+ typed state changes in either host. Host-owned typed Ports/Links connect
30
+ compatible package instances without giving either package direct access to the
31
+ other. Link topology belongs to the containing Home/World/Build, so remixing a
32
+ World can rewire Devices without mutating their exact package versions.
33
+
34
+ `create_device` supports `standing-desk`, `clock`, and `television`. The TV
35
+ template demonstrates a surface-bound Screen/App, universal text input for a
36
+ YouTube URL/video id, browser-owned origin permission, playback/volume state,
37
+ and typed power/volume/audio ports. Cross-origin video is a sandboxed DOM
38
+ compositor aligned to the authored screen node (browser security does not allow
39
+ an arbitrary YouTube iframe to become a WebGL texture); local canvas/video apps
40
+ may use native CanvasTexture/VideoTexture adapters. Remote web content always
41
+ requires the viewer's global or per-package/per-origin grant.
42
+
43
+ Use `test_device` with `mode=both`, then publish, pull, edit, validate, test, and
44
+ publish a new version. A Package does not need a Marketplace or Vault Listing.
45
+ Device and other authored content must enter HELIX as a sealed Package Version
46
+ before it is offered as a product. MCP exposes Package publication here. The
47
+ upcoming Creator CLI commands `helix continuum publish-glb` and
48
+ `helix continuum make-item` are intended to seal GLB content and optionally
49
+ project an Item through the approved Publications workflow. Use them only after
50
+ that CLI release is available; consult its help for arguments and rely on its
51
+ response for the result.
52
+ Private and grant-scoped Package inspection/object reads stay ACL-protected even
53
+ when another user knows the exact Package id, version, manifest CID, or object
54
+ CID.
55
+
56
+ For the bounded Pacifica release canary, use `dry_run_continuum_canary` first and
57
+ then `publish_continuum_canary`. The canary composes the selected materials,
58
+ vehicle and character Packages and Builds, child Scenes, root Scene, Listings,
59
+ Universal Item pins, and World Release as one dependency-linked Package graph.
60
+ The MCP publication path is private/unlisted only. A public canary must be
61
+ confirmed by a human through the Creator CLI; MCP has no confirmation field and
62
+ cannot synthesize one.
63
+
64
+ ## Source and scratch descriptors
65
+
66
+ A source descriptor contains `projectId`, optional `sourceDigest`, `source`,
67
+ `compilation`, required `defaultRuntimeProfileId`, optional
68
+ `packagePublication`, `objects`, and optional `listing`.
69
+ The source form uses a `SourceSceneMap` (`actors`, shared `materials`, and
70
+ canonical material Package pins). The scratch form uses:
71
+
72
+ ```json
73
+ {
74
+ "projectId": "project.mall",
75
+ "defaultRuntimeProfileId": "web-balanced",
76
+ "source": {
77
+ "id": "scene.mall",
78
+ "title": "Mall",
79
+ "elements": [
80
+ { "id": "building.mall", "type": "building" },
81
+ { "id": "floor.spawn", "parentId": "building.mall", "type": "floor", "center": [0, 0], "elevation": 0, "size": [8, 8], "thickness": 0.2 },
82
+ { "id": "wall.front", "parentId": "building.mall", "type": "wall", "start": [-20, 0], "end": [20, 0], "height": 8, "thickness": 0.3 },
83
+ { "id": "spawn.main", "parentId": "building.mall", "type": "gameplay-anchor", "transform": { "position": [0, 0.2, 0], "rotation": [0, 0, 0, 1], "scale": [1, 1, 1] }, "runtimeModule": { "packageId": "40000000-0000-4000-8000-000000000002", "version": "1.0.0", "manifestCid": "cid:sha256:<spawn runtime manifest sha256>" }, "anchor": "spawn.main" },
84
+ { "id": "light.sun", "parentId": "building.mall", "type": "light", "kind": "directional", "transform": { "position": [0, 20, 0], "rotation": [0, 0, 0, 1], "scale": [1, 1, 1] }, "color": "#ffffff", "illuminanceLux": 10000 }
85
+ ]
86
+ },
87
+ "compilation": {
88
+ "packageId": "40000000-0000-4000-8000-000000000001",
89
+ "version": "1.0.0",
90
+ "provenance": { "kind": "authored", "source": "agent" },
91
+ "dependencyClosures": [{ "package": { "packageId": "40000000-0000-4000-8000-000000000002", "version": "1.0.0", "manifestCid": "cid:sha256:<spawn runtime manifest sha256>" }, "root": { "cid": "cid:sha256:<spawn runtime object sha256>", "bytes": 123, "mediaType": "application/json", "role": "gameplay-definition" }, "objects": [{ "cid": "cid:sha256:<spawn runtime object sha256>", "bytes": 123, "mediaType": "application/json", "role": "gameplay-definition" }] }],
92
+ "runtimeProfiles": [{ "schema": "helix.continuum.runtime-profile/1", "id": "web-balanced", "platform": "web", "renderer": "three-webgl2", "quality": "balanced", "contracts": { "continuum": 1, "scene": 2 }, "capabilities": ["render.primitive/1"] }],
93
+ "world": { "releaseId": "40000000-0000-4000-8000-000000000003", "worldId": "40000000-0000-4000-8000-000000000004", "maxPlayers": 32, "contentRating": "teen", "requiredCapabilities": ["render.primitive/1"] }
94
+ }
95
+ }
96
+ ```
97
+
98
+ Native structural elements support building/group/level/space hierarchy, walls,
99
+ floors, ceilings, host-bound openings, doors/windows bound to openings, stairs,
100
+ primitives, foliage, explicit-unit lights, portals, gameplay anchors, and child
101
+ Scenes. Interior spaces inherit portal residency. Mesh CIDs, multi-slot bindings,
102
+ trim sheets, source fallbacks, proxy/collider objects, and material Package pins
103
+ remain separate and exact.
104
+
105
+ During source-map preparation, convert an actor only when its structural meaning
106
+ is proven. Otherwise preserve the exact mesh object and material binding in the
107
+ same graph; never flatten it into a guessed primitive or emit a separate
108
+ per-actor Package graph.
109
+
110
+ World and Release IDs, generic Package IDs, and every referenced Package ID are
111
+ UUIDs. Source/scratch authoring may supply a stable symbolic label only for its
112
+ new root Scene Package or Release; Creator converts those labels to deterministic
113
+ UUIDs before any API call. `worldId` always names an existing owned World.
114
+ `defaultRuntimeProfileId` is required and must select a web `three-webgl2`
115
+ profile using Continuum 1 and Scene 2. Publication also requires a renderable
116
+ exterior/structural shell, explicit-unit lighting, a `spawn.*` gameplay anchor
117
+ whose Runtime Module is pinned in the dependency closure, authored collision
118
+ beneath spawn, and non-empty `beforeSpawn`/`firstFrame` ReadySets. Creator emits
119
+ the ReadySets; the backend repeats the exact spatial and closure proof.
120
+
121
+ ## Object sources
122
+
123
+ Every Package-owned object other than the generated Scene document appears once:
124
+
125
+ ```json
126
+ {
127
+ "reference": { "cid": "cid:sha256:<64 hex>", "bytes": 1234, "mediaType": "model/gltf-binary", "role": "source-mesh" },
128
+ "source": { "kind": "file", "path": "assets/chair.glb", "audience": "private" }
129
+ }
130
+ ```
131
+
132
+ `kind` is `file` (path relative to descriptor), `vault-adoption` (exact Vault
133
+ Asset Version ID), `instant-world-adoption` (Build ID + authoritative content
134
+ SHA-256), or `existing`. CID, size, media type, Package closure, dependencies, and
135
+ ReadySet reachability are validated before publication.
136
+
137
+ A creator-editable descriptor may also declare
138
+ `"sourceDirectory": { "path": "source", "audience": "private" }`. Creator CLI
139
+ packages that confined tree into one canonical source object and pins it in the
140
+ Package Version. A source edit changes the source CID and publication job
141
+ identity. Runtime-only legacy Packages remain usable, but `pull_continuum_package`
142
+ will explicitly report that they need source conversion before remix.
143
+
144
+ ## Resume, receipts, and public Listings
145
+
146
+ The lowercase-normalized source digest plus normalized intent yields a durable
147
+ job ID. A retry or a duplicate worker resumes missing stages and returns one sanitized receipt; use
148
+ `get_continuum_publication_receipt` later.
149
+
150
+ MCP can never grant public Listing authority. A public Vault or Marketplace
151
+ Listing succeeds only when an owner/editor previously configured the project
152
+ policy. Otherwise the operation fails before creating the Listing. A human may
153
+ instead run the same Creator CLI command with `--confirm-public-listing`.
package/docs/items.md ADDED
@@ -0,0 +1,73 @@
1
+ # Package backed Items and offers
2
+
3
+ Authored content enters HELIX as a sealed Continuum Package Version. Package
4
+ publication and Vault discovery do not create an Item or a creator copy. An
5
+ Item is an optional product projection of an exact Package Version. Marketplace
6
+ and World offers are explicit and use the Creator's approved Publications
7
+ workflow. Do not upload a loose GLB to create an unpinned Item.
8
+
9
+ Use `read_doc({ name: "continuum" })` and `publish_continuum_package` for Package
10
+ publication. The upcoming Creator CLI commands `helix continuum publish-glb`
11
+ and `helix continuum make-item` are intended for GLB-to-Package publication and
12
+ optional Item creation through the approved Publications workflow. Use them only
13
+ after that CLI release is available; consult its help for arguments and rely on
14
+ its response for the result. `publish_owned_item` is for moving an existing
15
+ creator-owned Item to an exact sealed Package Version; it does not mint an Item
16
+ or create an offer, and requires explicit content-rating attestation. This MCP
17
+ server does not expose a loose-mesh Item publish tool or define publication
18
+ receipt fields.
19
+
20
+ World-local consumables, currencies, passes and effects remain World Products.
21
+ They do not mint universal Items. There is no raw `grantItem(itemId)` API.
22
+
23
+ ## World code
24
+
25
+ World code requests an acquisition; the HELIX shell displays authoritative item,
26
+ issuer, price, edition, supply/remaining/next-serial facts, limits and schedule,
27
+ then requires a player click.
28
+
29
+ ```ts
30
+ await Helix.marketplace.purchaseDistributionKey('postcard', { quantity: 2 });
31
+ await Helix.marketplace.purchaseDistribution('public-distribution-id', { quantity: 1 });
32
+ await Helix.marketplace.purchaseListing('listing-for-serial-12');
33
+
34
+ const context = await Helix.marketplace.getPurchaseContext('dkey:postcard', { quantity: 2 });
35
+ ```
36
+
37
+ Only `dkey:`, `distribution:` and `listing:` are item-acquisition references.
38
+ Item-definition ids, raw internal product ids, caller-supplied prices and silent
39
+ grants are rejected.
40
+
41
+ ## Collectible resale economics
42
+
43
+ All resale uses HELIX Marketplace escrow. The creator royalty is fixed at 5%.
44
+ The seller platform fee is 10% for Free and 5% for Plus at launch; future Gold
45
+ is 2.5% and Diamond is 0%. Total seller deduction is therefore 15%, 10%, 7.5%
46
+ or 5%. The buyer has no surcharge. Creator self-sale omits a redundant royalty
47
+ transfer, and self-purchase is prohibited.
48
+
49
+ Every acquisition starts one unified 24-hour relisting cooldown. There is no
50
+ account-age or special first-resale delay. Basic requires email. General
51
+ **Verified** means one unique verified mobile plus good standing and allows
52
+ resale immediately subject only to that acquisition cooldown. Identity Verified
53
+ is reserved for later high-risk capabilities; tooling must also tolerate the
54
+ future Business Verified enum. Resale proceeds use a 3-day base payout hold that
55
+ risk may extend up to 15 days. Relisting eligibility and payout availability are
56
+ separate timestamps.
57
+
58
+ ## MCP contract
59
+
60
+ MCP delegates operations to the Creator CLI and exposes Package publication
61
+ through `publish_continuum_package` plus the approved existing-Item pin move
62
+ through `publish_owned_item`. It does not expose loose-mesh Item creation or
63
+ define Publications receipt fields.
64
+
65
+ ## Refresh a published item's thumbnail
66
+
67
+ `item_thumbnail` runs the same library as `helix item thumbnail refresh|set`
68
+ in-process (no CLI step) and needs a CLI that ships it (`helix.minCliVersion`).
69
+
70
+ - `action: "refresh"` re-renders the canonical thumbnail from the item's active Package Version. Start with `dryRun: true`; pass `force: true` to re-render a thumbnail the server reports as current.
71
+ - `action: "set"` with `imagePath` uploads your own png/jpg/webp (moderated). It is kept across version moves until a later forced refresh.
72
+ - To correct a Package-backed avatar mesh, seal a new Package Version and move the item onto it (the move refreshes the thumbnail unless you uploaded one), or refresh explicitly.
73
+ - Owner-only (403 otherwise). A backend that predates the routes answers 404, reported as "does not support thumbnail refresh yet".