@forgeax/game 0.3.1 → 0.3.3
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 +61 -26
- package/assets/asset3d/vibegame-art-3d-asset-library-2.0.0.tgz +0 -0
- package/assets/asset3d/vibegame-art-3d-asset-library-2.0.0.tgz.sha256 +1 -0
- package/dist/main.js +594 -66
- package/docs/asset3d.md +32 -17
- package/docs/release-0.3.2.md +90 -0
- package/docs/release-0.3.3.md +73 -0
- package/package.json +3 -1
package/docs/asset3d.md
CHANGED
|
@@ -54,17 +54,22 @@ one-to-eight member set is sorted and encoded as compact JSON in
|
|
|
54
54
|
digest. The provider is responsible for enforcing that set on both initial and
|
|
55
55
|
redirect requests.
|
|
56
56
|
|
|
57
|
-
Normal installation writes the
|
|
58
|
-
absolute user credential-file path to
|
|
59
|
-
`
|
|
57
|
+
Normal installation writes the selected service root to `AW_API_BASE_URL`, the
|
|
58
|
+
matching `AW_API_DEPOT_NAME=aw|ea`, and an absolute user credential-file path to
|
|
59
|
+
`AW_API_CREDENTIAL_FILE`. The `AW_API_*` names are the packaged Provider's legacy
|
|
60
|
+
environment contract. Installation never writes `AW_API_SANDBOX_KEY` into project
|
|
61
|
+
MCP configuration. `--catalog-base-url` remains a
|
|
60
62
|
maintainer-only compatibility adapter for the retired directory service; when used,
|
|
61
63
|
its authority must also appear in `--download-origin`.
|
|
62
64
|
|
|
63
65
|
## Installation ownership
|
|
64
66
|
|
|
65
|
-
`asset3d enable`
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
`asset3d enable` keeps the public AW depot by default. `--library ea` selects the EA
|
|
68
|
+
depot and its office-network local gateway; `FORGEAX_ASSET_LIBRARY=ea` is the
|
|
69
|
+
deployment equivalent. Gateway selection precedence is explicit `--base-url`, then
|
|
70
|
+
`FORGEAX_ASSET_LIBRARY_BASE_URL`, then the selected library's built-in service.
|
|
71
|
+
Gateway overrides never change the selected depot. The first interactive run asks
|
|
72
|
+
for the Sandbox Key with terminal echo
|
|
68
73
|
disabled. Automation can supply `FORGEAX_ASSET3D_AW_SANDBOX_KEY` from a secret store;
|
|
69
74
|
command-line key arguments are deliberately unsupported.
|
|
70
75
|
|
|
@@ -107,6 +112,13 @@ idempotent. Uninstall removes only entries and Skill files that still match owne
|
|
|
107
112
|
digests, leaving user-modified or unrelated content in place and reporting the
|
|
108
113
|
collision.
|
|
109
114
|
|
|
115
|
+
For user-scoped MCP hosts such as Codex, Cursor, and Claude, `enable` additionally
|
|
116
|
+
registers a non-secret `asset3d-search` bridge command. The bridge resolves
|
|
117
|
+
`.forgeax/asset3d-install.json` and the owned `.forgeax/mcp.json` entry from the host
|
|
118
|
+
process working directory, rather than pinning a user config to one project. A
|
|
119
|
+
project without an Asset3D installation receives a healthy MCP handshake with an
|
|
120
|
+
empty tool list. Start a new Agent session after enabling so `search_asset` appears.
|
|
121
|
+
|
|
110
122
|
The workflow package is projected beneath `art-3d-asset-library/` in exactly these
|
|
111
123
|
mounts unless `--ide` selects a subset:
|
|
112
124
|
|
|
@@ -125,19 +137,22 @@ has its path, byte count, and digest in the ownership manifest.
|
|
|
125
137
|
|
|
126
138
|
1. `asset3d begin` records a private journal with a new execution UUID, query digest,
|
|
127
139
|
provider identity, exact Engine identity, requested count, and the only allowed
|
|
128
|
-
quarantine root.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
4.
|
|
140
|
+
quarantine root.
|
|
141
|
+
2. `search_asset` accepts that execution UUID instead of an output path. The Game
|
|
142
|
+
Plugin bridge verifies the exact queries and injects the transaction-owned
|
|
143
|
+
provider directory beneath its private `workspace/` root.
|
|
144
|
+
3. The configured provider writes beneath that directory and returns one checked
|
|
145
|
+
`forgeax.asset3d-search-result/1.0.0` TextContent JSON object. The bridge stores
|
|
146
|
+
those exact bytes against the execution; the agent does not copy the object.
|
|
147
|
+
4. `asset3d commit --execution <uuid>` reads the stored result (at most 1 MiB),
|
|
148
|
+
validates exact fields/counts/roles/digests/sorted relative paths, and ignores
|
|
149
|
+
`downloaded_to`.
|
|
150
|
+
5. The transaction rejects symlinks, special files, undeclared files, realpath escape,
|
|
136
151
|
byte mismatch, or digest mismatch before a project asset write.
|
|
137
|
-
|
|
152
|
+
6. A 30-second per-asset lock serializes publication at
|
|
138
153
|
`assets/3d/ea-3d/<safeAssetId>`. The complete prior directory is preserved as the
|
|
139
154
|
refresh/rollback snapshot.
|
|
140
|
-
|
|
155
|
+
7. With the game root as `cwd`, Game Plugin runs the exact released Engine CLI:
|
|
141
156
|
|
|
142
157
|
```text
|
|
143
158
|
asset add assets/3d/ea-3d/<safeAssetId> --reimport-policy semantic-only --json
|
|
@@ -149,7 +164,7 @@ has its path, byte count, and digest in the ownership manifest.
|
|
|
149
164
|
Each command must produce exactly one newline-terminated, at-most-1-MiB
|
|
150
165
|
`CommandEnvelope@1.0.0`. Game Plugin does not filter diagnostic stdout into a
|
|
151
166
|
synthetic success.
|
|
152
|
-
|
|
167
|
+
8. Only after Engine readback succeeds does `.forgeax-asset.json` publish the provider
|
|
153
168
|
commit, origin-set digest, exact Engine version/commit, per-file role/digest/bytes,
|
|
154
169
|
Engine rows, and catalog readback. An Engine failure restores the whole previous
|
|
155
170
|
asset directory.
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# `@forgeax/game` 0.3.3 release guide
|
|
2
|
+
|
|
3
|
+
Version `0.3.3` adds the EA depot without removing the public AW path. The packaged
|
|
4
|
+
provider is unchanged; one explicit library selection binds the matching depot and
|
|
5
|
+
gateway together.
|
|
6
|
+
|
|
7
|
+
> [!IMPORTANT]
|
|
8
|
+
> EA is currently available only through the office-network `local` gateway.
|
|
9
|
+
> There is no reachability-based fallback: silently changing libraries would make
|
|
10
|
+
> identical queries resolve to different assets.
|
|
11
|
+
|
|
12
|
+
## User contract
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Public/default
|
|
16
|
+
npx -y @forgeax/game@0.3.3 asset3d enable
|
|
17
|
+
|
|
18
|
+
# Office network
|
|
19
|
+
npx -y @forgeax/game@0.3.3 asset3d enable --library ea
|
|
20
|
+
|
|
21
|
+
npx -y @forgeax/game@0.3.3 asset3d doctor --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The selected mode writes these non-secret provider settings:
|
|
25
|
+
|
|
26
|
+
| Mode | Depot | Built-in gateway |
|
|
27
|
+
|:--|:--|:--|
|
|
28
|
+
| Default or `--library aw` | `aw` | Existing public AW service |
|
|
29
|
+
| `--library ea` | `ea` | `http://test-ultrongw.woa.com/trpc.oasismetric.omcontentserver.http` |
|
|
30
|
+
|
|
31
|
+
`FORGEAX_ASSET_LIBRARY=aw|ea` is the deployment selector. `--base-url` and
|
|
32
|
+
`FORGEAX_ASSET_LIBRARY_BASE_URL` remain gateway overrides and never change the
|
|
33
|
+
selected depot. The project stores only the service URL, depot name, private
|
|
34
|
+
credential-file path, and live-derived download origins.
|
|
35
|
+
|
|
36
|
+
## Transaction-bound search
|
|
37
|
+
|
|
38
|
+
`search_asset` accepts the execution UUID returned by `asset3d begin`; it no longer
|
|
39
|
+
accepts a caller-selected `output_dir`. The Game Plugin bridge verifies the execution
|
|
40
|
+
and exact query list, then injects the private quarantine path before invoking the
|
|
41
|
+
packaged provider. This removes agent path guesses such as `assets` from the tool
|
|
42
|
+
contract while preserving the existing provider implementation.
|
|
43
|
+
|
|
44
|
+
The bridge also persists the exact checked TextContent by execution. A normal commit
|
|
45
|
+
is now `asset3d commit --execution <uuid> --json`; agents no longer reconstruct large
|
|
46
|
+
provider JSON as shell input.
|
|
47
|
+
|
|
48
|
+
`asset3d enable` now installs the generic `asset3d-search` bridge into every Agent
|
|
49
|
+
host previously selected by `install`. The user-level launch command carries no key
|
|
50
|
+
and no project path; it discovers the active project's owned Provider configuration
|
|
51
|
+
from its working directory. Disabled projects advertise zero Asset3D tools. Start a
|
|
52
|
+
new Agent session after enabling so the host refreshes its MCP tool inventory.
|
|
53
|
+
|
|
54
|
+
## Verified migration
|
|
55
|
+
|
|
56
|
+
- [x] EA access check succeeded through the packaged provider.
|
|
57
|
+
- [x] Query `wooden barrel` returned EA asset `SM_Prop_Bucket_001.zip`.
|
|
58
|
+
- [x] The provider downloaded and converted the result to GLB.
|
|
59
|
+
- [x] Delivered result was 565,650 bytes with SHA-256
|
|
60
|
+
`17897a89e652170e7ab98b08dd71f10c4289e58b38caac52e0b41e44b5f72185`.
|
|
61
|
+
- [x] The primary GLB was 314,908 bytes.
|
|
62
|
+
- [ ] Registry publication and registry-downloaded tarball verification.
|
|
63
|
+
|
|
64
|
+
## Release gates
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
bun run typecheck
|
|
68
|
+
bun test test/*.test.ts
|
|
69
|
+
FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> bun run build
|
|
70
|
+
FORGEAX_ASSET3D_PROVIDER_BUNDLE=<audited-provider-archive> \
|
|
71
|
+
npm pack --ignore-scripts --json --pack-destination <audited-directory>
|
|
72
|
+
bun scripts/check-package-artifact.ts <audited-directory>/forgeax-game-0.3.3.tgz
|
|
73
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageManager": "bun@1.3.14",
|
|
3
3
|
"name": "@forgeax/game",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.3",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"description": "@forgeax/game — an MCP/CLI connector for exact released ForgeaX Engine games and Engine-owned Preview.",
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"docs/asset3d.md",
|
|
24
24
|
"docs/release-0.3.0.md",
|
|
25
25
|
"docs/release-0.3.1.md",
|
|
26
|
+
"docs/release-0.3.2.md",
|
|
27
|
+
"docs/release-0.3.3.md",
|
|
26
28
|
"README.md"
|
|
27
29
|
],
|
|
28
30
|
"scripts": {
|