v0.5.1
Bug Fix
Unhandled exception in SharedSet creation step — _apply_create_negative_keyword_list wraps its 3 sequential API calls (create SharedSet → add keywords → attach to campaign) in try/except blocks so that failures return a structured partial_failure response. However, step 1 (SharedSet creation via mutate_shared_sets) was missing the try/except — if it failed (duplicate name, quota error, auth failure), the exception propagated raw instead of returning the same {partial_failure, shared_set_resource, completed_steps, failed_step, error} response shape that steps 2 and 3 already used.
Now all three steps handle errors identically. Step 1 failures return shared_set_resource: null and completed_steps: [] since nothing was created yet.
119 tests passing.