@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
|
@@ -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".
|