Read executor skill packages directly (#38167)

## Why

Executor skills required a `skills.list` lookup before their contents could be
read, even when the catalog already identified the skill.

## What changed

- Render executor skill catalog entries as package locators, including shortened
  locators when skill roots are aliased.
- Tell the model to pass those packages directly to `skills.read`, while keeping
  `skills.list` as the fallback when no package is available.
- Use the shorter package locators when applying the skills context budget.

## Testing

Update catalog, aliasing, budget-pressure, and selected-skill coverage, including
an executor package ID containing a literal backslash.

GitOrigin-RevId: 2ace5e527dc4f29651a8f3214475ccc90d52c73f
This commit is contained in:
rphilizaire-openai authored and copyberry committed 2026-08-12 10:34:25 +00:00
1 parent 3fe19fcd81
commit 69ae78291d
7 files changed
+70 -50

No files matched your search

@@ -608,7 +608,7 @@ fn assert_selected_skill_catalog_available(request: &ResponsesRequest) {
let catalog_fragment = latest_selected_skill_update(request)
.expect("selected skill catalog update should be model-visible");
assert!(catalog_fragment.contains(SKILL_DESCRIPTION));
assert!(catalog_fragment.contains("environment resource:"));
assert!(catalog_fragment.contains("executor package:"));
}
fn latest_selected_skill_update(request: &ResponsesRequest) -> Option<String> {