Implement native AIS inventory reconciliation (#63)
All checks were successful
Native code generation / deterministic (push) Successful in 13m18s
Imaging and meshing gate / native (push) Successful in 4m12s
Native Rust workspace compile / compile (push) Successful in 4m12s

This commit is contained in:
2026-08-10 06:41:29 +00:00
parent 61d6721287
commit d5c318d280
16 changed files with 1896 additions and 161 deletions

View File

@@ -69,3 +69,27 @@ snapshot subscribers before invoking them. Focused coverage lives in
`inventory_manager_semantics`, `task_inventory_semantics`, and the native
`inventory_manager::tests` fake-packet cases for callback isolation, bulk-copy
completion, stale folder versions, offers, capability events, and bounded Xfer.
## Inventory API v3
`InventoryAISClient` implements the `InventoryAPIv3` and `LibraryAPIv3`
capability resources for categories, children, links, individual items, the
current outfit folder, orphans, and trash. Requests preserve the AIS verbs and
resource shapes, including `COPY` with its `Destination` header, transaction
IDs, depth/subset queries, and LLSD XML request content type. The client uses
the injected capability HTTP transport, so tests and applications can record
requests deterministically without replacing inventory logic.
Successful response bodies are fully decoded and validated before any local
state changes. Embedded folders, concrete items, and links are parsed together;
object or mesh links with the legacy texture inventory type are corrected to
attachments. Side-effect removals and category version updates are combined
with returned objects and installed atomically through a detached candidate
inventory graph. Malformed, oversized, cancelled, or timed-out responses leave
the live store unchanged, and no store lock crosses an await or callback.
AIS remains capability-optional. Missing capabilities and HTTP failures return
the fixed false/empty compatibility results, while cancellation is propagated.
The existing `InventoryManager` UDP fallback remains the contract-correct path
for operations whose capability is absent; AIS reconciliation shares that
manager's transport-independent store and observer ordering.