@helix3/helix-cli 0.1.13-helix3.122 → 0.1.13-helix3.124
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 +31 -0
- package/dist/bundle.js +31 -0
- package/dist/bundle.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init.js +4 -3
- package/dist/init.js.map +1 -1
- package/dist/install.d.ts +3 -0
- package/dist/install.js +87 -12
- package/dist/install.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -124,6 +124,37 @@ worktrees resolve through.
|
|
|
124
124
|
|
|
125
125
|
## Publish flow
|
|
126
126
|
|
|
127
|
+
### Platform system updates
|
|
128
|
+
|
|
129
|
+
`helix install` records platform-owned systems in `public/helix.runtime.json`.
|
|
130
|
+
Compatible ranges such as `^0.2` are externalized and resolved to an active,
|
|
131
|
+
immutable catalog module when a world launches, so a compatible platform fix can
|
|
132
|
+
reach an already-published world without creator edits or republishing. Exact
|
|
133
|
+
versions such as `0.2.43` map directly to the immutable catalog URL and remain
|
|
134
|
+
pinned. A custom Vite config is never rewritten: install reports
|
|
135
|
+
`legacy-bundled` until the creator explicitly externalizes `@helix/*`.
|
|
136
|
+
|
|
137
|
+
That update contract is deliberately narrower than "the SDK updates itself":
|
|
138
|
+
|
|
139
|
+
| World dependency | What the built bytes contain | What can advance without republishing |
|
|
140
|
+
| --- | --- | --- |
|
|
141
|
+
| Platform systems (`@helix/humanoid-character`, `@helix/engine-core` and declared subpaths) with a compatible range | Bare imports plus a generated import-map entry | The compatible catalog target on the next fresh launch |
|
|
142
|
+
| Platform systems with an exact version | Bare imports plus the exact immutable catalog URL | Nothing; the pin stays byte-identical |
|
|
143
|
+
| Creator SDK (`@helix3/helix-sdk`) | The SDK module graph bundled into the world's own JavaScript | Nothing; SDK changes require rebuilding and republishing the world |
|
|
144
|
+
| Installed abilities (`public/helix_modules/*`) | Verified ability code/assets copied into the world build and indexed by `installed.json` | Nothing; update/install and republish are explicit creator actions |
|
|
145
|
+
| Creator game code and assets | The world's own immutable build files | Nothing; the platform never rewrites a published creator bundle |
|
|
146
|
+
|
|
147
|
+
The generated import map, `helix.runtime.json`, and
|
|
148
|
+
`helix_modules/installed.json` are the authoritative way to inspect which side
|
|
149
|
+
of this boundary a particular build uses. Browser or proxy caching may serve a
|
|
150
|
+
previous compatible resolver response during a transient outage; the descriptor's
|
|
151
|
+
`lastKnownGood` field is provenance metadata, not an executable in-world fallback.
|
|
152
|
+
Without a cached resolver response, a cold resolver failure fails closed.
|
|
153
|
+
|
|
154
|
+
The runtime descriptor is mandatory for bundles that declare systems. It makes
|
|
155
|
+
the delivery boundary inspectable by the CLI, MCP, backend, and fleet census;
|
|
156
|
+
it does not execute code or silently rewrite an old minified bundle.
|
|
157
|
+
|
|
127
158
|
`helix publish` maps directly onto the backend's Instant World API:
|
|
128
159
|
|
|
129
160
|
1. `checkBundle` validates `helix.json` + files via `@hypersoniclabs/helix-manifest`.
|
package/dist/bundle.js
CHANGED
|
@@ -49,6 +49,8 @@ function walk(dir, root, out) {
|
|
|
49
49
|
// player a menu that grants entitlements and fakes purchases. Matching the literal specifier is what
|
|
50
50
|
// keeps a minified bundle that never imported it from tripping the rule.
|
|
51
51
|
const DEV_SHELL_SPECIFIER = 'helix-sdk/dev-shell';
|
|
52
|
+
const RUNTIME_DESCRIPTOR_FILENAME = 'helix.runtime.json';
|
|
53
|
+
const RUNTIME_DELIVERY_MODES = new Set(['compatible', 'pinned', 'mixed', 'legacy-bundled']);
|
|
52
54
|
// Local validation with the exact same rules the server enforces at publish — shared via
|
|
53
55
|
// @hypersoniclabs/helix-manifest, so "validate passed but publish failed" can't happen for contract
|
|
54
56
|
// reasons. ONE rule is CLI-only: the dev-simulator scan below, also the first rule here reading CONTENT.
|
|
@@ -98,6 +100,35 @@ function checkBundle(root) {
|
|
|
98
100
|
if (manifest && !files.some((f) => f.path === manifest.entry)) {
|
|
99
101
|
errors.push(`entry "${manifest.entry}" does not exist in the bundle`);
|
|
100
102
|
}
|
|
103
|
+
const manifestSystems = manifest
|
|
104
|
+
? manifest.systems ?? {}
|
|
105
|
+
: {};
|
|
106
|
+
if (Object.keys(manifestSystems).length > 0) {
|
|
107
|
+
const descriptorFile = files.find((file) => file.path === RUNTIME_DESCRIPTOR_FILENAME);
|
|
108
|
+
if (!descriptorFile) {
|
|
109
|
+
errors.push(`platform systems are declared but ${RUNTIME_DESCRIPTOR_FILENAME} is missing — run \`helix install\`, rebuild, and validate again`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
try {
|
|
113
|
+
const descriptor = JSON.parse((0, node_fs_1.readFileSync)(descriptorFile.absolutePath, 'utf8'));
|
|
114
|
+
if (descriptor.version !== 1 || typeof descriptor.delivery !== 'string' || !RUNTIME_DELIVERY_MODES.has(descriptor.delivery) || !Array.isArray(descriptor.systems)) {
|
|
115
|
+
errors.push(`${RUNTIME_DESCRIPTOR_FILENAME} has an unsupported schema`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const described = new Map(descriptor.systems.map((system) => [system.slug, system.requestedRange]));
|
|
119
|
+
for (const [slug, range] of Object.entries(manifestSystems)) {
|
|
120
|
+
if (described.get(slug) !== range)
|
|
121
|
+
errors.push(`${RUNTIME_DESCRIPTOR_FILENAME} does not match ${slug}@${range} in helix.json — run \`helix install --update\``);
|
|
122
|
+
}
|
|
123
|
+
if (descriptor.delivery === 'legacy-bundled')
|
|
124
|
+
warnings.push(`${RUNTIME_DESCRIPTOR_FILENAME} marks this build legacy-bundled; compatible platform updates require an explicit @helix/* external rule before republishing`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
errors.push(`${RUNTIME_DESCRIPTOR_FILENAME} is not valid JSON`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
101
132
|
// v0.2+ worlds embed system/ability CODE under helix_modules/ but never HELIX assets —
|
|
102
133
|
// those stream from the CDN. A clip/texture under helix_modules/ is a licensing leak.
|
|
103
134
|
// v0.3 gets the same gate — MUST stay in sync with the backend's build gate (instant-world-builds.service.ts).
|
package/dist/bundle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":";;;AA2CA,8CAaC;
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -248,6 +248,7 @@ program
|
|
|
248
248
|
const abl = result.abilities.map((a) => `${a.slug}@${a.version}`).join(', ') || '(none)';
|
|
249
249
|
console.log(`✔ ${result.reresolved ? 'Resolved' : 'Replayed lock'} — systems: ${sys}; abilities: ${abl}`);
|
|
250
250
|
console.log(` code -> public/${ability_1.MODULES_DIR}/ · assets stream from the CDN · lock -> ${lib_1.LOCKFILE}`);
|
|
251
|
+
console.log(` platform runtime delivery -> ${result.delivery}`);
|
|
251
252
|
if (result.runtime) {
|
|
252
253
|
console.log(` three ${result.runtime.threeVersion} -> import map + src/helix.runtime.ts wired to the hosted runtime`);
|
|
253
254
|
}
|