* feat(artifacts): select extraction entries and output destination
Refs morluto/rea#3490
* fix(artifacts): omit absent selection from execution parameters
* fix(artifacts): protect source directories and verify public selection
* fix(artifacts): keep optional selection inputs JSON-safe
* fix(artifacts): separate reader ownership from selected destinations
Validate complete reader inventory independently from collisions among selected output entries. Use occurrence-parent ownership instead of filename prefixes so independently owned PyInstaller entries remain selectable while nested-reader members remain refused. Validate advertised MCP schemas through the shared acceptance helper and add real PyInstaller/ASAR and excluded-entry regressions.
* fix(artifacts): advertise absolute extraction destinations
Reuse the shared host-absolute local path schema instead of an opaque refinement so SDK-converted JSON Schema preserves the runtime constraint. Extend the advertised-path and MCP-handler regression matrix for extract_artifact.output_root.
* fix(contracts): advertise unique extraction occurrence IDs
---------
Co-authored-by: gensokyo-dev <gensokyo-dev@users.noreply.github.com>