@forgeax/game 0.3.7 → 0.3.9

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 CHANGED
@@ -9,8 +9,8 @@ creation, build, and Preview to the exact Engine SDK instead of carrying a secon
9
9
  runtime.
10
10
 
11
11
  > [!IMPORTANT]
12
- > The published package carries `forgeax-game` and scoped `game` binary aliases and resolves the exact
13
- > `@forgeax/engine-sdk@0.1.26` and `pnpm@11.7.0` dependencies. It has no
12
+ > The package carries `forgeax-game` and scoped `game` binary aliases and resolves the exact
13
+ > `@forgeax/engine-sdk@0.2.1` and `pnpm@11.7.0` dependencies. It has no
14
14
  > `@forgeax/game-runtime` dependency and no static Preview fallback.
15
15
 
16
16
  ## Supported flow
@@ -22,8 +22,8 @@ flowchart LR
22
22
  CARRIER["Exact npm SDK carrier"] --> GAME
23
23
  PLUGIN["@forgeax/game"] --> INSTALL
24
24
  PLUGIN --> INIT
25
- GAME --> BUILD["Exact Engine CLI build --json"]
26
- BUILD --> PREVIEW["Exact Engine CLI preview --json"]
25
+ GAME --> BUILD["Exact Engine CLI project build --json"]
26
+ BUILD --> PREVIEW["Exact Engine CLI project preview --json"]
27
27
  PREVIEW --> PROOF["Release-aware readiness proof"]
28
28
  ```
29
29
 
@@ -47,8 +47,6 @@ npx -y @forgeax/game init
47
47
  The first command writes the `forgeax` MCP member in the canonical Codex,
48
48
  Cursor, and Claude Code user configs. It preserves unrelated bytes and values,
49
49
  reports `CURRENT` on an idempotent rerun, and says which host must restart or reload.
50
- Existing older package-owned Asset3D MCP entries are also refreshed; absent or
51
- custom Asset3D entries are not added or overwritten.
52
50
  The second command must run from the intended blank directory. It creates the Engine
53
51
  game there, binds the exact release identity, and reports the canonical root and
54
52
  host-skill result. Existing exact games are read back and bound without recreation;
@@ -65,36 +63,21 @@ npx -y @forgeax/game@latest update --ide codex
65
63
  `plugin 0.3.4 -> 0.3.5`. It refreshes configuration, skills, and routing from the
66
64
  package being executed; it does not independently fetch another package.
67
65
 
68
- See [0.3.5 compatibility notes](docs/release-0.3.5.md) before upgrading games pinned
69
- to older Engine versions. This release recognizes strict v2 manifests without
70
- requiring the removed `entry` field, but does not migrate game dependencies.
66
+ This version consumes the exact Engine SDK pin in package.json; it does not migrate game dependencies.
71
67
 
72
68
  > [!NOTE]
73
- > Asset3D is optional and **disabled by default**. The two commands above never contact
74
- > the internal asset catalog, provision the bundled platform Provider, or add
75
- > `asset3d-search` to the project. Enable it only in an already initialized project:
76
- >
77
- > ```bash
78
- > npx -y @forgeax/game asset3d enable
79
- > ```
80
- >
81
- > With no override, `enable` keeps the public AW depot. On the office network, pass
82
- > `--library ea` to select the EA depot and its local gateway. `--base-url` overrides
83
- > only the selected library's gateway. The first enable prompts for the Sandbox Key
84
- > with hidden input, validates it through
85
- > the packaged Provider, and stores it outside the project in a private user
86
- > credential file.
69
+ > Asset3D is optional and disabled by default. After init, run
70
+ > `npx -y @forgeax/game asset3d enable`. It directly validates the selected
71
+ > service and stores credentials outside the project. See [Asset3D](docs/asset3d.md).
87
72
 
88
73
  ## Agent completion contract
89
74
 
90
75
  `init` records `.forgeax/game-authoring-baseline.json` before gameplay authoring. An
91
- untouched Empty template remains runnable, but once gameplay or assets change the
92
- connector refuses Preview until the Agent has replaced the template identity, kept a
93
- single game README heading, removed the Empty package output name, updated gameplay
94
- tests, and documented controls. A valid behavior test imports a named game-specific
95
- state transition or rule and exercises it with an assertion; merely renaming an Empty
96
- template test does not qualify. Authoring layout follows the installed Engine and
97
- `forge.json` (v2 uses `assets/` and `plugins[]`); the Studio-hosted
76
+ untouched Empty template remains runnable. After making a game, replace the Empty
77
+ identity and README, document controls, and test a real gameplay rule rather than
78
+ renaming the template test. The connector checks completion evidence before Preview.
79
+ Authoring layout follows the installed Engine and
80
+ `forge.json` (Engine 0.2.1 uses `assets/` Packs and `roots`); the Studio-hosted
98
81
  `.forgeax/games/<slug>` layout is never created by this package.
99
82
 
100
83
  Every supported host receives the same packaged `forgeax-game` Skill and routing rule.
@@ -104,10 +87,10 @@ Preview `ready` verifies startup and ownership, not playable behavior. Agents us
104
87
  available browser tools for task-relevant interaction checks, or clearly report
105
88
  gameplay as unverified and provide manual checks. This guidance does not prescribe
106
89
  a game genre, UI implementation, browser brand, or additional blocking gate.
107
- An explicit request for an existing/library 3D asset requires the separately installed
108
- project-local `asset3d-search/search_asset` tool. When it is absent, Agents must report
109
- `BLOCKED(asset-library-tools-missing)` instead of relabeling procedural geometry or
110
- generation as an asset-library result.
90
+ An explicit request for an existing/library 3D asset uses the enabled project's
91
+ `asset3d candidates` and `asset3d import` CLI commands. No separate Agent MCP tool
92
+ is required. Report CLI failures rather than relabeling procedural geometry or
93
+ generation as an asset-library result. See the [Skill + CLI integration standard](docs/plugin-integration-standard.md).
111
94
 
112
95
  ## MCP transports
113
96
 
@@ -137,13 +120,11 @@ root and never accepts a caller-provided `target_dir`.
137
120
  | `forgeax_game_read_logs` | HTTP tool | Read a bounded Preview log tail for remote diagnosis |
138
121
  | `forgeax_game_write_file` | HTTP tool | Atomically create or hash-guard replacement of a text file |
139
122
 
140
- The build plus Preview-readiness deadline is 150 seconds. Preview readiness starts
141
- with one bounded `CommandEnvelope@1.0.0`. Engines that expose
142
- `GET /.forgeax/preview-health` are bearer-authenticated and must echo the canonical
143
- root, exact release, build digest, and instance ID. Released Engine 0.1.7 emits the
144
- documented minimal Preview envelope instead; the connector binds its already verified
145
- release and fresh instance ID, then reads the served `forgeax-dist.json` and requires
146
- its SHA-256 to equal the build it just produced.
123
+ The build plus Preview-readiness deadline is 150 seconds. Engine 0.2.1 emits
124
+ structured `project build` and `project preview` envelopes. Where authenticated
125
+ `GET /.forgeax/preview-health` is available, it must echo the canonical root,
126
+ exact release, build digest, and instance ID; the connector also checks the
127
+ served build artifact against the build it just produced.
147
128
 
148
129
  Any build or Preview failure is an MCP `isError` result. Agents must not probe or
149
130
  reuse an existing localhost port after a failed call: HTTP 200 is not ownership
@@ -178,107 +159,15 @@ Stop and cancellation signal only the verified owning Preview process, with a bo
178
159
  TERM/KILL cleanup. Dead state is removed under the lock; a matching orphan is adopted;
179
160
  a live unverifiable PID fails closed as `preview_ownership_unverified`.
180
161
 
181
- ## Asset3D installation and transaction
162
+ ## Asset3D: Skill + CLI
182
163
 
183
- Asset3D is an opt-in, project-local MCP integration for AW or EA HybridSearch. Run it
184
- only after `init`. The no-argument command remains public-network compatible; select
185
- EA explicitly when connected to the office network:
164
+ The installed `art-3d-asset-library` Skill guides candidate selection and result use.
165
+ The package CLI calls the asset API directly, safely downloads Pack/GLB sources,
166
+ and delegates import/build/catalog identity to Engine. There is no Asset3D MCP,
167
+ Python Provider, per-platform bundle or legacy Skill payload.
186
168
 
187
- ```bash
188
- # Public/default
189
- npx -y @forgeax/game asset3d enable
190
-
191
- # Office network
192
- npx -y @forgeax/game asset3d enable --library ea
193
-
194
- forgeax-game asset3d doctor --json
195
- ```
196
-
197
- The library selection precedence is `--library`, then
198
- `FORGEAX_ASSET_LIBRARY`, then `aw`. Each library selects its matching built-in
199
- gateway. Gateway precedence is explicit `--base-url`, then
200
- `FORGEAX_ASSET_LIBRARY_BASE_URL`, then that library's built-in service. An override
201
- accepts either a gateway root or the full
202
- `trpc.oasismetric.omcontentserver.http` service root. On first use, `enable` reads the
203
- key with hidden TTY input. Non-interactive automation must inject
204
- `FORGEAX_ASSET3D_AW_SANDBOX_KEY` from its secret store. The key is validated by the
205
- Provider against the selected depot's `HybridSearch` before the command
206
- reports success.
207
-
208
- The validated key is stored in
209
- `~/.forgeax/credentials/asset3d-aw.json` as an owned, non-symlink `0600` file. Project
210
- `.forgeax/mcp.json` contains only the selected service URL, matching
211
- `AW_API_DEPOT_NAME=aw|ea`, and the credential-file path; it never contains the key or
212
- a signed asset URL. The `AW_API_*` names are the packaged Provider's legacy
213
- environment contract. The Provider access check returns only the exact download
214
- origins required by the sandbox. Failed validation or installation rolls back a
215
- newly written credential.
216
-
217
- The npm package carries digest-pinned Darwin arm64 and Linux x64 Provider archives
218
- as inert assets. `enable` selects only the archive matching the current host and
219
- reuses the exact verified Provider from
220
- `~/.forgeax/providers/asset3d-search/<sha256>/`, or provisions that packaged archive
221
- when the cache is absent. It never downloads Provider code from GitHub or another
222
- repository. Only after Provider verification and its MCP handshake succeed does it merge the `forgeax` and
223
- `asset3d-search` entries into `.forgeax/mcp.json` and project the approved Asset3D
224
- workflow into the Agent hosts selected during `install`.
225
-
226
- `enable` also registers a project-aware `asset3d-search` bridge in those hosts. The
227
- bridge entry contains no project path or credential: on each new Agent session it
228
- resolves the current directory's project-local Provider. In projects where Asset3D
229
- has not been enabled, the bridge connects normally but advertises no tools. Restart
230
- the selected Agent after the first successful `enable` so it discovers `search_asset`.
231
-
232
- > [!IMPORTANT]
233
- > Asset3D uses the shared `X-Sandbox-Key` contract. It never reads
234
- > `ANTHROPIC_API_KEY` or another model-provider key. Do not pass keys as command-line
235
- > arguments, commit the user credential file, or copy a key into project MCP config.
236
-
237
- The transaction commands are normally driven by the installed Agent workflow:
238
-
239
- ```bash
240
-
241
- forgeax-game asset3d begin --query "weathered oak tree" --json
242
- # Call asset3d-search/search_asset with the exact queries and returned execution UUID.
243
- # The bridge validates the transaction, injects its private output directory, and
244
- # stores the exact provider result for commit:
245
- forgeax-game asset3d commit --execution <uuid> --json
246
-
247
- forgeax-game asset3d doctor --json
248
- forgeax-game asset3d uninstall
249
- ```
250
-
251
- <details>
252
- <summary>Maintainer-only local bundle installation</summary>
253
-
254
- The low-level command remains available for producing and validating platform bundle
255
- artifacts. It is not the user onboarding path.
256
-
257
- ```bash
258
- forgeax-game asset3d install \
259
- --provider-bundle ./asset3d-search-provider-<commit>-<os>-<arch>.tar.gz \
260
- --sha256 <archive-sha256> \
261
- --download-origin https://<approved-download-host>:443 \
262
- --aw-base-url <ea-gateway-or-service-url> \
263
- --aw-credential-file /absolute/path/to/private-credential.json
264
- ```
265
-
266
- `--catalog-base-url` remains an explicit compatibility-only adapter for the retired
267
- directory service; normal users should not select it.
268
-
269
- </details>
270
-
271
- Provider output is checked at a 1 MiB stdin boundary. The transaction ignores
272
- `downloaded_to`, accepts only declared relative manifest paths contained by its
273
- private quarantine, and publishes the whole asset directory under
274
- `assets/3d/ea-3d/<providerAssetId>`. It invokes only the exact released Engine CLI
275
- with `asset add ... --reimport-policy semantic-only --json`, then requires
276
- verify/list/inspect readback before committing provenance. Same-digest content is
277
- reused only after live file and catalog checks; changed content requires `--refresh`
278
- and rolls back the entire prior directory on failure.
279
-
280
- See [docs/asset3d.md](docs/asset3d.md) for the platform, origin, ownership, recovery,
281
- and evidence boundaries.
169
+ See [usage and configuration](docs/asset3d.md) and the
170
+ [capability authoring template](docs/plugin-integration-standard.md).
282
171
 
283
172
  ## Scope boundary
284
173
 
@@ -289,11 +178,4 @@ and evidence boundaries.
289
178
  > acceptance gates.
290
179
 
291
180
  See [docs/runtime.md](docs/runtime.md) for the exact artifact and lifecycle contract.
292
- For the current AW-default plus explicit EA environment contract and maintainer
293
- publish checklist, see [docs/release-0.3.4.md](docs/release-0.3.4.md). The AW-default
294
- plus explicit EA environment contract was introduced in
295
- [docs/release-0.3.3.md](docs/release-0.3.3.md). The original AW
296
- production default is recorded in [docs/release-0.3.2.md](docs/release-0.3.2.md), authenticated Provider
297
- delivery is documented in [docs/release-0.3.1.md](docs/release-0.3.1.md),
298
- and the original two-command onboarding contract remains documented in
299
- [docs/release-0.3.0.md](docs/release-0.3.0.md).
181
+ For current asset configuration and the breaking simplification, see [Asset3D](docs/asset3d.md).