@forgeax/game 0.3.7 → 0.3.8

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.
@@ -1,361 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "forgeax.asset3d-search-result/1.0.0",
4
- "title": "ForgeaX Asset3D Search Result",
5
- "type": "object",
6
- "additionalProperties": false,
7
- "required": [
8
- "schemaVersion",
9
- "total",
10
- "succeeded",
11
- "failed",
12
- "results"
13
- ],
14
- "properties": {
15
- "schemaVersion": {
16
- "const": "forgeax.asset3d-search-result/1.0.0"
17
- },
18
- "total": {
19
- "type": "integer",
20
- "minimum": 1,
21
- "maximum": 16
22
- },
23
- "succeeded": {
24
- "type": "integer",
25
- "minimum": 0,
26
- "maximum": 16
27
- },
28
- "failed": {
29
- "type": "integer",
30
- "minimum": 0,
31
- "maximum": 16
32
- },
33
- "results": {
34
- "type": "array",
35
- "minItems": 1,
36
- "maxItems": 16,
37
- "items": {
38
- "oneOf": [
39
- {
40
- "$ref": "#/$defs/success"
41
- },
42
- {
43
- "$ref": "#/$defs/packSuccess"
44
- },
45
- {
46
- "$ref": "#/$defs/error"
47
- }
48
- ]
49
- }
50
- },
51
- "receipt": {
52
- "$ref": "receipt-1.0.0.json"
53
- }
54
- },
55
- "allOf": [
56
- {
57
- "if": {
58
- "properties": {
59
- "succeeded": {
60
- "minimum": 1
61
- }
62
- }
63
- },
64
- "then": {
65
- "required": [
66
- "receipt"
67
- ]
68
- }
69
- }
70
- ],
71
- "$defs": {
72
- "queryIndex": {
73
- "type": "integer",
74
- "minimum": 0,
75
- "maximum": 15
76
- },
77
- "safeId": {
78
- "type": "string",
79
- "minLength": 1,
80
- "maxLength": 128,
81
- "pattern": "^[A-Za-z0-9._-]+$",
82
- "not": {
83
- "enum": [
84
- ".",
85
- ".."
86
- ]
87
- }
88
- },
89
- "sha256": {
90
- "type": "string",
91
- "pattern": "^[0-9a-f]{64}$"
92
- },
93
- "relativePath": {
94
- "type": "string",
95
- "minLength": 1,
96
- "maxLength": 512,
97
- "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)[^\\u0000]+$"
98
- },
99
- "manifestEntry": {
100
- "type": "object",
101
- "additionalProperties": false,
102
- "required": [
103
- "path",
104
- "role",
105
- "bytes",
106
- "sha256"
107
- ],
108
- "properties": {
109
- "path": {
110
- "$ref": "#/$defs/relativePath"
111
- },
112
- "role": {
113
- "enum": [
114
- "primary-model",
115
- "animation",
116
- "auxiliary-model",
117
- "texture",
118
- "metadata"
119
- ]
120
- },
121
- "bytes": {
122
- "type": "integer",
123
- "minimum": 1,
124
- "maximum": 134217728
125
- },
126
- "sha256": {
127
- "$ref": "#/$defs/sha256"
128
- }
129
- }
130
- },
131
- "success": {
132
- "type": "object",
133
- "additionalProperties": false,
134
- "required": [
135
- "status",
136
- "queryIndex",
137
- "query",
138
- "provider",
139
- "providerAssetId",
140
- "assetName",
141
- "deliveredFormat",
142
- "sha256",
143
- "bytes",
144
- "primaryModel",
145
- "manifest",
146
- "originSetDigest"
147
- ],
148
- "properties": {
149
- "status": {
150
- "const": "ok"
151
- },
152
- "queryIndex": {
153
- "$ref": "#/$defs/queryIndex"
154
- },
155
- "query": {
156
- "type": "string",
157
- "minLength": 1,
158
- "maxLength": 200
159
- },
160
- "provider": {
161
- "const": "ea-3d"
162
- },
163
- "providerAssetId": {
164
- "$ref": "#/$defs/safeId"
165
- },
166
- "assetName": {
167
- "type": "string",
168
- "minLength": 1,
169
- "maxLength": 128
170
- },
171
- "deliveredFormat": {
172
- "const": "glb"
173
- },
174
- "sha256": {
175
- "$ref": "#/$defs/sha256"
176
- },
177
- "bytes": {
178
- "type": "integer",
179
- "minimum": 1,
180
- "maximum": 268435456
181
- },
182
- "primaryModel": {
183
- "$ref": "#/$defs/relativePath"
184
- },
185
- "manifest": {
186
- "type": "array",
187
- "minItems": 1,
188
- "maxItems": 1024,
189
- "items": {
190
- "$ref": "#/$defs/manifestEntry"
191
- }
192
- },
193
- "originSetDigest": {
194
- "$ref": "#/$defs/sha256"
195
- },
196
- "downloaded_to": {
197
- "type": "string",
198
- "minLength": 1,
199
- "maxLength": 512,
200
- "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)[^\\u0000]+$"
201
- }
202
- }
203
- },
204
- "error": {
205
- "type": "object",
206
- "additionalProperties": false,
207
- "required": [
208
- "status",
209
- "queryIndex",
210
- "query",
211
- "code",
212
- "retryable",
213
- "message"
214
- ],
215
- "properties": {
216
- "status": {
217
- "const": "error"
218
- },
219
- "queryIndex": {
220
- "$ref": "#/$defs/queryIndex"
221
- },
222
- "query": {
223
- "type": "string",
224
- "minLength": 1,
225
- "maxLength": 200
226
- },
227
- "code": {
228
- "enum": [
229
- "asset_not_found",
230
- "asset_identity_missing",
231
- "search_timeout",
232
- "search_upstream_error",
233
- "download_timeout",
234
- "download_origin_rejected",
235
- "download_too_large",
236
- "archive_rejected",
237
- "conversion_failed",
238
- "digest_failed",
239
- "batch_timeout",
240
- "internal_error"
241
- ]
242
- },
243
- "retryable": {
244
- "type": "boolean"
245
- },
246
- "message": {
247
- "type": "string",
248
- "minLength": 1,
249
- "maxLength": 256,
250
- "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
251
- }
252
- }
253
- },
254
- "packManifestEntry": {
255
- "type": "object",
256
- "additionalProperties": false,
257
- "required": [
258
- "path",
259
- "role",
260
- "bytes",
261
- "sha256"
262
- ],
263
- "properties": {
264
- "path": {
265
- "$ref": "#/$defs/relativePath"
266
- },
267
- "role": {
268
- "enum": [
269
- "primary-pack",
270
- "auxiliary-pack",
271
- "animation",
272
- "auxiliary-model",
273
- "texture",
274
- "metadata"
275
- ]
276
- },
277
- "bytes": {
278
- "type": "integer",
279
- "minimum": 1,
280
- "maximum": 134217728
281
- },
282
- "sha256": {
283
- "$ref": "#/$defs/sha256"
284
- }
285
- }
286
- },
287
- "packSuccess": {
288
- "type": "object",
289
- "additionalProperties": false,
290
- "required": [
291
- "status",
292
- "queryIndex",
293
- "query",
294
- "provider",
295
- "providerAssetId",
296
- "assetName",
297
- "deliveredFormat",
298
- "sha256",
299
- "bytes",
300
- "primaryPack",
301
- "manifest",
302
- "originSetDigest"
303
- ],
304
- "properties": {
305
- "status": {
306
- "const": "ok"
307
- },
308
- "queryIndex": {
309
- "$ref": "#/$defs/queryIndex"
310
- },
311
- "query": {
312
- "type": "string",
313
- "minLength": 1,
314
- "maxLength": 200
315
- },
316
- "provider": {
317
- "const": "ea-3d"
318
- },
319
- "providerAssetId": {
320
- "$ref": "#/$defs/safeId"
321
- },
322
- "assetName": {
323
- "type": "string",
324
- "minLength": 1,
325
- "maxLength": 128
326
- },
327
- "deliveredFormat": {
328
- "const": "pack"
329
- },
330
- "sha256": {
331
- "$ref": "#/$defs/sha256"
332
- },
333
- "bytes": {
334
- "type": "integer",
335
- "minimum": 1,
336
- "maximum": 268435456
337
- },
338
- "manifest": {
339
- "type": "array",
340
- "minItems": 1,
341
- "maxItems": 1024,
342
- "items": {
343
- "$ref": "#/$defs/packManifestEntry"
344
- }
345
- },
346
- "originSetDigest": {
347
- "$ref": "#/$defs/sha256"
348
- },
349
- "downloaded_to": {
350
- "type": "string",
351
- "minLength": 1,
352
- "maxLength": 512,
353
- "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)[^\\u0000]+$"
354
- },
355
- "primaryPack": {
356
- "$ref": "#/$defs/relativePath"
357
- }
358
- }
359
- }
360
- }
361
- }
@@ -1 +0,0 @@
1
- 4937fe00e2b919319c70c82db53ebe359b275ed662c026153ecb97f7601262b4 vibegame-art-3d-asset-library-2.0.0.tgz
@@ -1,100 +0,0 @@
1
- # `@forgeax/game` 0.3.0 release guide
2
-
3
- ## User-visible contract
4
-
5
- Version `0.3.0` makes the public onboarding flow exactly two commands:
6
-
7
- ```bash
8
- npx -y @forgeax/game install --ide codex,cursor,claude
9
- cd /path/to/a-genuinely-empty-directory
10
- npx -y @forgeax/game init
11
- ```
12
-
13
- Restart or reload an Agent host when the install command asks. `init` creates the
14
- Engine-owned standalone game in the current directory through the exact
15
- `@forgeax/engine-sdk@0.1.7` carrier, then installs the same Game Plugin Skill/routing
16
- contract for every selected host. Users do not run `forgeax new` separately.
17
-
18
- Standalone author source is `<game-root>/src`. `.forgeax/games/<slug>` belongs to the
19
- Studio-hosted project model and is not created by this package.
20
-
21
- ## Agent authoring and Preview
22
-
23
- After `init`, ask the Agent to create a game and open Preview. A valid completion must
24
- include all of the following:
25
-
26
- - concrete `forge.json` id/name and a non-template package name;
27
- - one coherent README with controls and no Empty package-output residue;
28
- - a behavior test that imports and exercises a named game-specific state transition or
29
- rule; renaming an Empty template test is insufficient;
30
- - UI mounted under Engine Host `uiRoot` or `#game-ui`; direct `document.body` mutation
31
- is rejected because the released standalone Host provides `#game-ui`;
32
- - a successful `forgeax_run_current_game` response containing
33
- `preview.status: ready`, the exact root, Engine release, build digest, Preview
34
- instance ID, and the returned loopback URL.
35
-
36
- An MCP error, a bare HTTP 200, a PID, an old build, or a localhost URL discovered by
37
- shell probing is not Preview evidence. When another game owns the Preview port, stop
38
- that exact verified game first:
39
-
40
- ```bash
41
- forgeax-game preview stop --target-dir /path/to/the-running-game
42
- ```
43
-
44
- The internal 3D catalog is disabled by default and is not contacted by `install` or
45
- ordinary `init`. A user opts one initialized project in with:
46
-
47
- ```bash
48
- npx -y @forgeax/game asset3d enable
49
- ```
50
-
51
- The current `http://21.214.216.8:5180` catalog is network-gated and its body-free
52
- access probe requires no API Key. In particular, `ANTHROPIC_API_KEY` is unrelated and
53
- must not be supplied. If the service changes to `401`/`403` without publishing a
54
- supported authentication contract, enablement fails closed. If
55
- `asset3d-search/search_asset` is absent, the Agent must report
56
- `BLOCKED(asset-library-tools-missing)`. Procedural meshes and `forgeax_generate_3d`
57
- are not evidence that the reusable asset library is available.
58
-
59
- ## Upgrade and compatibility
60
-
61
- - Node.js `>=22.13.0` is required.
62
- - Existing exact Engine games can rerun `forgeax-game init` to refresh project Skill,
63
- routing, and authoring baseline without recreating gameplay source.
64
- - `install` and `init` are idempotent for already-current owned state.
65
- - Unknown non-empty directories fail before carrier execution or workspace mutation.
66
- - Engine-owned `forgeax-engine-*` Skills remain supplied by the selected Engine game;
67
- this release changes only the Game Plugin-owned `forgeax-game` Skill and rule.
68
-
69
- ## Release verification
70
-
71
- Before publishing, maintainers must run:
72
-
73
- ```bash
74
- bun run typecheck
75
- bun test test/*.test.ts
76
- bun run build
77
- npm pack --json
78
- bun scripts/check-package-artifact.ts /absolute/path/to/forgeax-game-0.3.0.tgz
79
- ```
80
-
81
- Then use the TGZ from a fresh consumer to verify:
82
-
83
- 1. blank-directory `init`;
84
- 2. identical Skill/rule projection for configured hosts;
85
- 3. changed gameplay with stale template identity/tests fails closed;
86
- 4. Engine build diagnostics before the terminal JSON frame are accepted;
87
- 5. duplicate JSON or post-frame diagnostics fail closed;
88
- 6. Preview failure is returned with MCP `isError: true`;
89
- 7. a different game's occupied port is never reported as the new game's Preview;
90
- 8. after stopping the old verified Preview, the new game returns its own exact
91
- root/build/instance identity and loopback URL.
92
-
93
- Publishing and npm dist-tag changes remain separate maintainer actions after the MR
94
- and required checks are approved.
95
-
96
- > [!CAUTION]
97
- > Do not publish the npm dist-tag until every advertised host target has a Provider
98
- > release artifact at the exact URL pinned by the package and its SHA-256 has been
99
- > verified. The current source pins only `darwin-arm64`; other targets intentionally
100
- > fail with `asset3d_provider_target_unreleased`.
@@ -1,107 +0,0 @@
1
- # `@forgeax/game` 0.3.1 release guide
2
-
3
- Version `0.3.1` keeps the two-command ForgeaX onboarding contract from `0.3.0` and
4
- replaces the Asset3D default route with the documented AW `HybridSearch` contract.
5
- Asset3D remains optional and disabled until a user explicitly enables it.
6
-
7
- ## User contract
8
-
9
- The ordinary setup flow is unchanged:
10
-
11
- ```bash
12
- npx -y @forgeax/game install --ide codex,cursor,claude
13
- cd /path/to/a-genuinely-empty-directory
14
- npx -y @forgeax/game init
15
- ```
16
-
17
- Inside an initialized project, enable AW Asset3D separately:
18
-
19
- ```bash
20
- npx -y @forgeax/game asset3d enable --base-url <aw-gateway-or-service-url>
21
- npx -y @forgeax/game asset3d doctor --json
22
- ```
23
-
24
- `--base-url` can be replaced by `FORGEAX_ASSET_LIBRARY_BASE_URL`. The first
25
- interactive enable asks for the AW Sandbox Key with hidden input. CI or another
26
- non-interactive host must inject `FORGEAX_ASSET3D_AW_SANDBOX_KEY` from its own secret
27
- store.
28
-
29
- > [!IMPORTANT]
30
- > Do not place the key on the command line, in `.forgeax/mcp.json`, in a repository
31
- > `.env`, or in a release artifact. `ANTHROPIC_API_KEY` is unrelated and is never
32
- > accepted as an Asset3D credential.
33
-
34
- ## What changed
35
-
36
- | Area | `0.3.0` | `0.3.1` |
37
- |:--|:--|:--|
38
- | Search adapter | Explicit internal directory catalog | AW `HybridSearch` through the packaged Provider |
39
- | Authentication | Network gate, reported `authentication=none` | Required `X-Sandbox-Key`, validated before success |
40
- | Service address | Compiled catalog origin | Explicit `--base-url` or environment configuration |
41
- | Credential storage | None | User-level versioned JSON, directory `0700`, file `0600` |
42
- | Project MCP config | Catalog origin and download origins | AW service URL, credential-file path, exact download origins |
43
- | Failure behavior | Failed when an unknown auth contract appeared | Invalid key/network/address fails closed; new credential is rolled back |
44
- | Provider delivery | Private external release URL | Digest-pinned archive embedded in the npm package |
45
-
46
- The Provider accepts either an AW gateway root or the complete
47
- `trpc.oasismetric.omcontentserver.http` service root and appends `HybridSearch`
48
- exactly once. Its request includes `depot_name`, `asset_type=1`, text content type,
49
- the query, `similarity_score`, and page size. Short-lived signed `res_url` values stay
50
- inside the Provider; the access check exposes only their canonical origins for the
51
- download sandbox.
52
-
53
- ## Security and artifact gates
54
-
55
- Before publishing, the exact npm tarball and Provider archive must pass all of these
56
- checks:
57
-
58
- - [ ] TypeScript typecheck, full Game Plugin test suite, and build.
59
- - [ ] Provider AW/catalog/security tests and Python compile check.
60
- - [ ] Two independently built Provider archives are byte-identical.
61
- - [ ] Provider verifier provisions the archive under its exact SHA-256 cache key.
62
- - [ ] Real AW access check succeeds without printing the key or a signed URL.
63
- - [ ] Real search/download and Engine import/readback succeed in a fresh project.
64
- - [ ] Package artifact gate accepts only the declared files and immutable digests.
65
- - [ ] Secret scan covers source diff, npm tarball, its embedded workflow TGZ and
66
- Provider archive, manifests, and file names.
67
- - [ ] Registry-downloaded npm tarball is byte-identical to the audited candidate.
68
-
69
- > [!WARNING]
70
- > A successful search or download is not Preview acceptance. Release evidence must
71
- > report Provider access, download, Engine import/readback, and visible Play as
72
- > separate gates. AW responses do not establish license or commercial-use clearance;
73
- > those remain asset-release requirements.
74
-
75
- ## Provider inclusion
76
-
77
- The pinned Darwin arm64 Provider identity for this release is:
78
-
79
- ```text
80
- provider commit: c181c48fbffc933a7ce9a0836f7878ca5e6d77e1
81
- archive sha256: c8d2afd7ba68ae4b3540c927a2ff7133a82ea90975d09cab1d10b003fbbdeed3
82
- ```
83
-
84
- The exact archive is embedded beneath `assets/asset3d/provider/` in the npm tarball.
85
- `asset3d enable` verifies this SHA-256 before provisioning and does not fetch Provider
86
- code from GitHub, Gongfeng, or another repository. This makes cache-empty enablement
87
- depend only on npm installation, local Python 3.11/3.12, the explicitly configured AW
88
- service, and a valid user-supplied AW key.
89
-
90
- The repository intentionally does not track the generated 17.2 MB Provider binary.
91
- Release packaging injects the already audited archive through
92
- `FORGEAX_ASSET3D_PROVIDER_BUNDLE`; the package artifact gate rejects any tarball that
93
- omits it or contains different bytes.
94
-
95
- ## Maintainer commands
96
-
97
- ```bash
98
- bun run typecheck
99
- bun test test/*.test.ts
100
- FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> bun run build
101
- FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> \
102
- npm pack --ignore-scripts --json --pack-destination <audited-directory>
103
- bun scripts/check-package-artifact.ts <audited-directory>/forgeax-game-0.3.1.tgz
104
- ```
105
-
106
- Publishing, npm registry readback, and any merge request are separate irreversible or
107
- remote-state steps. Record the exact Git heads and artifact digests at each boundary.
@@ -1,90 +0,0 @@
1
- # `@forgeax/game` 0.3.2 release guide
2
-
3
- Version `0.3.2` keeps Asset3D opt-in while making the documented AW production
4
- service the default selected by `asset3d enable`. Test and pre-release environments
5
- remain explicit overrides.
6
-
7
- ## User contract
8
-
9
- The ordinary setup flow is unchanged:
10
-
11
- ```bash
12
- npx -y @forgeax/game install --ide codex,cursor,claude
13
- cd /path/to/a-genuinely-empty-directory
14
- npx -y @forgeax/game init
15
- ```
16
-
17
- Inside an initialized project, enable production Asset3D without passing an address:
18
-
19
- ```bash
20
- npx -y @forgeax/game asset3d enable
21
- npx -y @forgeax/game asset3d doctor --json
22
- ```
23
-
24
- > [!IMPORTANT]
25
- > Asset3D remains disabled until the user runs `asset3d enable`. A no-argument enable
26
- > selects production; it does not make `install` or `init` contact AW.
27
-
28
- To select a non-production environment, pass its gateway or complete service URL:
29
-
30
- ```bash
31
- npx -y @forgeax/game asset3d enable \
32
- --base-url <test-gateway-or-service-url>
33
- ```
34
-
35
- ## Environment selection
36
-
37
- | Priority | Input | Selected environment |
38
- |--:|:--|:--|
39
- | 1 | `--base-url` | Explicit caller-selected service, normally test or pre-release |
40
- | 2 | `FORGEAX_ASSET_LIBRARY_BASE_URL` | Automation or deployment override |
41
- | 3 | No override | Documented AW production service |
42
-
43
- The built-in production root is:
44
-
45
- ```text
46
- http://lb-pl74wsqg-5wi8ujmy1fq2746r.clb.usw-tencentclb.com:8008/trpc.oasismetric.omcontentserver.http
47
- ```
48
-
49
- Every selection is normalized so `HybridSearch` is appended exactly once. The
50
- selected endpoint is validated by the packaged Provider before project configuration
51
- is published.
52
-
53
- ## Authentication and safety
54
-
55
- The first enable reads an AW Sandbox Key with hidden terminal input. Automation may
56
- inject `FORGEAX_ASSET3D_AW_SANDBOX_KEY` from a secret store. The plugin never accepts
57
- `ANTHROPIC_API_KEY` or another model credential as an Asset3D key.
58
-
59
- The key remains in the private user credential file. Project MCP configuration
60
- contains only the selected service URL and the credential-file path. Failed access
61
- validation or installation rolls back a newly written credential and leaves the
62
- project disabled.
63
-
64
- ## Release gates
65
-
66
- - [ ] Default resolution selects the exact documented production root.
67
- - [ ] Explicit CLI URL overrides the environment and production default.
68
- - [ ] Environment URL overrides the production default when CLI input is absent.
69
- - [ ] Real production access check succeeds with a valid AW Sandbox Key.
70
- - [ ] Real production `search_asset` downloads a valid GLB.
71
- - [ ] Game Plugin transaction validates and commits the asset through Engine.
72
- - [ ] `doctor` reports the production Provider live in a fresh installed project.
73
- - [ ] Exact npm tarball and embedded Provider pass the package and secret gates.
74
- - [ ] Registry-downloaded tarball matches the audited candidate.
75
-
76
- > [!WARNING]
77
- > Provider access and Engine import do not prove visible Play acceptance. If a game
78
- > consumes the imported asset, verify that game separately in its owned Preview and
79
- > report the Play result as a distinct gate.
80
-
81
- ## Maintainer commands
82
-
83
- ```bash
84
- bun run typecheck
85
- bun test test/*.test.ts
86
- FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> bun run build
87
- FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> \
88
- npm pack --ignore-scripts --json --pack-destination <audited-directory>
89
- bun scripts/check-package-artifact.ts <audited-directory>/forgeax-game-0.3.2.tgz
90
- ```