Implement native PrimInspector
All checks were successful
Native Rust workspace compile / compile (push) Successful in 21m40s
All checks were successful
Native Rust workspace compile / compile (push) Successful in 21m40s
This commit is contained in:
@@ -10,7 +10,7 @@ here so a source entry is never mistaken for a completed port.
|
||||
| `osd-inspector` | OSDInspector | Implemented and tested offline |
|
||||
| `simple-bot` | SimpleBot | Implemented with live and deterministic fake-grid modes |
|
||||
| `packet-dump` | PacketDump | Implemented with live and deterministic fake-grid capture |
|
||||
| `prim-inspector` | PrimInspector | Pending milestone 11 issue #88 |
|
||||
| `prim-inspector` | PrimInspector | Implemented with live and deterministic fake-grid discovery |
|
||||
| `inventory-explorer` | InventoryExplorer | Pending milestone 11 issue #89 |
|
||||
| `irc-gateway` | IRCGateway | Pending milestone 11 issue #90 |
|
||||
| `test-client` | TestClient | Pending milestone 11 issues #91–#94 |
|
||||
@@ -148,3 +148,44 @@ cargo test -p libremetaverse-programs --test packet_dump_cli --locked
|
||||
cargo test -p libremetaverse --test packet_wire --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test wire_semantics --locked
|
||||
```
|
||||
|
||||
## PrimInspector
|
||||
|
||||
`prim-inspector` preserves the upstream positional login and search arguments:
|
||||
|
||||
```text
|
||||
prim-inspector FIRSTNAME LASTNAME PASSWORD [SEARCH_TERM]
|
||||
GRID_FIRST_NAME=... GRID_LAST_NAME=... GRID_PASSWORD=... prim-inspector
|
||||
```
|
||||
|
||||
The native client disables multiple-simulator connections, allows 30 seconds
|
||||
for login, collects object updates for two seconds, and snapshots the current
|
||||
simulator's real primitive table. It requests missing properties through
|
||||
`ObjectManager::SelectObject`, sharing a three-second deadline across at most
|
||||
1,024 outstanding requests. A disconnect, simulator change, or Ctrl-C cancels
|
||||
the operation and still removes handlers, logs out, and disposes the client.
|
||||
|
||||
Names are filtered case-insensitively after available properties are hydrated.
|
||||
Matches are ordered by distance from the agent, with local ID and UUID tie
|
||||
breakers, and the nearest ten are shown by default. `--limit` accepts one
|
||||
through 100 objects. Output covers transforms, construction data, flags,
|
||||
parentage, sculpt, light, flexible, ownership, creator, description, sale, and
|
||||
hover-text details. Status text, descriptions, and names suppress URLs and
|
||||
credential-like assignments, and `--max-output-bytes` bounds the complete
|
||||
buffer before anything is written.
|
||||
|
||||
For offline validation, `--fake-grid FILE [--search SEARCH_TERM]` reads an LLSD
|
||||
JSON map containing `region`, `agent_position`, and an `objects` array. Object
|
||||
maps use the public `Primitive::from_osd` fields and may add `owner`, `creator`,
|
||||
`sale_type`, `sale_price`, `hover_text`, and `property_state`. The latter is
|
||||
`ready`, `delayed`, or `missing`; delayed and missing fixtures record the same
|
||||
selection/property-timeout decisions as a live session. Input is limited to 8
|
||||
MiB, 100,000 objects, LLSD depth/allocation limits, nonzero UUID/local IDs, and
|
||||
validated property/sale states. No live grid is contacted by the tests.
|
||||
|
||||
Run the isolated CLI golden tests and the related translated primitive cases:
|
||||
|
||||
```sh
|
||||
cargo test -p libremetaverse-programs --test prim_inspector_cli --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test world_object_semantics --locked
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user