Compare commits

..

263 Commits

Author SHA1 Message Date
Mohamed Hegazy
66a63f2c43 security-guidance: probe for a non-PATH 3.10+ interpreter on HOOK_PY_INCOMPATIBLE (2.0.6 → 2.0.7)
Instrument-first for the macOS Python-3.9 cohort.

v2.0.6 telemetry: ~13.6% of macOS sessions (~6,337 users) run on Apple's
Python 3.9 → HOOK_PY_INCOMPATIBLE → the agentic reviewer can't load (needs
3.10+ syntax). That's ~12x macOS's build-failure rate and the single
biggest macOS degradation. sg-python.sh only probes `python3.1x` on PATH,
so these users have nothing newer ON PATH — but they may still have a
3.10+ installed at a standard location that isn't on the hook's PATH
(Homebrew /opt/homebrew, python.org framework, etc.).

Before building an explicit-path interpreter search, size the RECOVERABLE
fraction: `_probe_alt_python()` checks Homebrew / python.org / distro
locations for a 3.10+ binary and emits the highest found as `sdk_alt_py`
(major*100+minor, or 0 = genuinely 3.9-only). Telemetry-only; probed ONLY
on the HOOK_PY_INCOMPATIBLE path, so healthy sessions never run it.

After a data cycle: non-zero sdk_alt_py = recoverable by an explicit-path
search in sg-python.sh; 0 = needs a user-side Python install (the one-time
notice is the only lever). That decides whether the search is worth building.

Verified locally on macOS Python 3.13:
  - py_compile clean; probe returns 314 on this Mac (homebrew 3.14 present).
  - 7 new tests (test_altpython_probe.py): highest-version selection,
    0-when-none (mocked os.access), framework/distro path parsing, only
    counts 3.10+, and emit gated on outcome==HOOK_PY_INCOMPATIBLE.
  - Full suite 575/575 + 2 skipped.

No behavior change — purely additive telemetry on the incompatible path.
Version 2.0.6 -> 2.0.7 per the per-PR-bump policy (#2114).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-15 12:57:33 -07:00
abibbs-ant
ad34eb0fa6 Merge pull request #2852 from anthropics/add-lovable
Add lovable plugin
2026-06-15 11:35:09 -07:00
github-actions[bot]
6ff128bdcc bump(sap-fiori-mcp-server): b204616c → 384fb88f (#2847)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:19:34 -05:00
github-actions[bot]
0ea860bff1 bump(adobe-for-creativity): cdf87381 → c467bf83 (#2831)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:19:10 -05:00
github-actions[bot]
c6335cc27b bump(aws-startup-advisor): 944e5b17 → 3eae1312 (#2832)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:18:44 -05:00
github-actions[bot]
2d25650f94 bump(carta-cap-table): 9de95825 → 5e119d78 (#2834)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:18:18 -05:00
github-actions[bot]
1e37280cf9 bump(datarobot-agent-skills): 9e12eca2 → 6937e65a (#2840)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:17:54 -05:00
github-actions[bot]
75c62a9197 bump(migration-to-aws): 944e5b17 → 3eae1312 (#2842)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:17:29 -05:00
github-actions[bot]
999e8e0c57 bump(carta-crm): 9de95825 → 5e119d78 (#2835)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:17:03 -05:00
Bryan Thompson
00667be766 Add lovable plugin 2026-06-15 13:17:01 -05:00
github-actions[bot]
41fc10261c bump(carta-investors): 9de95825 → 5e119d78 (#2836)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:16:35 -05:00
github-actions[bot]
2cba8f077a bump(nvidia-skills): 5b2a1e80 → b0c4c9ab (#2843)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:16:07 -05:00
github-actions[bot]
ce64e6bf3c bump(vibe-prospecting): aa5903f5 → 14cb2971 (#2850)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:15:39 -05:00
github-actions[bot]
554d4cb80e bump(azure): 966330ee → 82492494 (#2833)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:15:18 -05:00
github-actions[bot]
e5f6c09bcb bump(cloudflare): e16d698f → 8ff55f2a (#2837)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:15:10 -05:00
github-actions[bot]
658af9f960 bump(codspeed): 32229fdf → 9e21a9c0 (#2838)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:14:41 -05:00
github-actions[bot]
e2debd8290 bump(dash0): 19f4a5f9 → e1a46f08 (#2839)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:14:11 -05:00
github-actions[bot]
25ceefbdb5 bump(hyperframes): b158870d → 3b3ece81 (#2841)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:13:39 -05:00
github-actions[bot]
ea6c6c54bf bump(posthog): fd9992ff → 071b9b84 (#2844)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:13:08 -05:00
github-actions[bot]
8796a01308 bump(rc): 473fd504 → e0470e8f (#2845)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:12:37 -05:00
github-actions[bot]
ff082f171c bump(revenuecat): 473fd504 → e0470e8f (#2846)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:12:05 -05:00
github-actions[bot]
de0381871c bump(sentry): d65bd23b → 765cca46 (#2848)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:11:32 -05:00
github-actions[bot]
9738aaa20d bump(sonarqube): 5434d7f5 → 25460dd5 (#2849)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:10:58 -05:00
github-actions[bot]
2f345cc812 bump(wix): a62c26eb → 561315d2 (#2851)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 13:10:23 -05:00
github-actions[bot]
0df7ab970a bump(aws-data-analytics): 7cd875e7 → a9d1c70f (#2814)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:51:51 -05:00
github-actions[bot]
0fceb8daac bump(aws-agents): 7cd875e7 → a9d1c70f (#2812)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:51:29 -05:00
github-actions[bot]
be6628629b bump(aws-core): 7cd875e7 → a9d1c70f (#2813)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:51:06 -05:00
github-actions[bot]
17452b1f98 bump(quarkus-agent): a2b67f59 → bcab0174 (#2819)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:50:43 -05:00
github-actions[bot]
8bc9295a04 bump(airwallex): d7727170 → 683a7536 (#2811)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:50:18 -05:00
github-actions[bot]
eb3de173b5 bump(buildkite): a43e944f → e6c7784f (#2815)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:49:54 -05:00
github-actions[bot]
c386685e3f bump(codspeed): ba5799e3 → 32229fdf (#2816)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:49:29 -05:00
github-actions[bot]
7a0e1d4465 bump(dash0): 71b44017 → 19f4a5f9 (#2817)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:49:02 -05:00
github-actions[bot]
ed419734e6 bump(hyperframes): e6da47d8 → b158870d (#2818)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:48:34 -05:00
github-actions[bot]
e5cf040923 bump(sonarqube): 8c46904b → 5434d7f5 (#2820)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:48:06 -05:00
github-actions[bot]
795a4fe72a bump(wix): 75bb86e4 → a62c26eb (#2821)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-15 08:47:35 -05:00
github-actions[bot]
be88f154f6 bump(adobe-for-creativity): 253f5690 → cdf87381 (#2799)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:06:11 -05:00
github-actions[bot]
54045e575d bump(atomic-agents): dfe17760 → 94220182 (#2800)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:05:48 -05:00
github-actions[bot]
914872e672 bump(quarkus-agent): 0b5e6445 → a2b67f59 (#2802)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:05:26 -05:00
github-actions[bot]
5f010ddcaa bump(teamcity-cli): 67e21f0b → 4865b1b7 (#2803)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:05:04 -05:00
github-actions[bot]
f5c23eb5b2 bump(hyperframes): 5c8b6373 → e6da47d8 (#2801)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:04:42 -05:00
github-actions[bot]
d55675f380 bump(ui5): 6d72751f → 80f2d932 (#2804)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 21:04:19 -05:00
github-actions[bot]
093e3563c3 bump(atomic-agents): 32439940 → dfe17760 (#2546)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 20:59:40 -05:00
github-actions[bot]
ed282ece77 bump(vercel): 6e51924c → b73bc956 (#2501)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 20:35:31 -05:00
william qian
d029127f7d Update frontend-design skill (#2540) 2026-06-14 20:35:08 -05:00
github-actions[bot]
ac1881863e bump(cloudflare): 12520fd6 → e16d698f (#2798)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 19:02:17 -05:00
github-actions[bot]
b1b442f791 bump(hyperframes): 211e0adb → 5c8b6373 (#2792)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 13:06:17 -05:00
github-actions[bot]
be167462cc bump(neon): 6d454c6d → e09dafdc (#2793)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 13:05:56 -05:00
github-actions[bot]
e23bff59eb bump(sap-fiori-mcp-server): 5f573157 → b204616c (#2795)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 13:05:19 -05:00
github-actions[bot]
0154872782 bump(nimble): bcc5159d → e72345e2 (#2794)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 13:05:12 -05:00
github-actions[bot]
055f924478 bump(wix): 1d441e5f → 75bb86e4 (#2796)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 13:04:48 -05:00
github-actions[bot]
2ab3fbe4c8 bump(neon): 7c3839a1 → 6d454c6d (#2783)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 09:41:28 -05:00
github-actions[bot]
19bf5d5c3c bump(stripe): ea0ad237 → 7e7f72eb (#2784)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 09:08:29 -05:00
github-actions[bot]
8de280a576 bump(wix): def21835 → 1d441e5f (#2785)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 09:08:07 -05:00
github-actions[bot]
aa310d1d9c bump(hyperframes): a241f259 → 211e0adb (#2782)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-14 09:07:49 -05:00
github-actions[bot]
3134d2866d bump(hyperframes): fbc3cdf2 → a241f259 (#2778)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 19:03:12 -05:00
github-actions[bot]
2b8b2c33a0 bump(neon): 03fbe572 → 7c3839a1 (#2779)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 19:02:51 -05:00
github-actions[bot]
5ec330764a bump(sumup): 5b9b2d72 → b69ff6f5 (#2780)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 19:02:30 -05:00
github-actions[bot]
3d2f32464d bump(carta-crm): fd503bbc → 9de95825 (#2765)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:07:19 -05:00
github-actions[bot]
f1adf52e8c bump(qdrant-skills): 0814a087 → 80f1980d (#2770)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:06:58 -05:00
github-actions[bot]
24d9c6d418 bump(codspeed): 41f4db99 → ba5799e3 (#2766)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:06:36 -05:00
github-actions[bot]
9e279a304e bump(hyperframes): ca1574f2 → fbc3cdf2 (#2767)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:06:13 -05:00
github-actions[bot]
58259dd01d bump(neon): 240e2e18 → 03fbe572 (#2768)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:05:50 -05:00
github-actions[bot]
f8f51e7aa1 bump(posthog): f674efef → fd9992ff (#2769)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 13:05:27 -05:00
github-actions[bot]
f2a86b756c bump(hyperframes): 583b47b0 → ca1574f2 (#2753)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:42:54 -05:00
github-actions[bot]
dd3df95e96 bump(railway): d096b092 → aa1e055b (#2757)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:42:33 -05:00
github-actions[bot]
fcea04d3c2 bump(nvidia-skills): 26058fed → 5b2a1e80 (#2756)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:41:56 -05:00
github-actions[bot]
7562bf611d bump(sentry-cli): f1f60303 → 4fda3dc1 (#2758)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:41:33 -05:00
github-actions[bot]
057071a55c bump(stripe): 2b60be10 → ea0ad237 (#2759)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:41:23 -05:00
github-actions[bot]
b27e8e4ba5 bump(nightvision): 73a9d846 → a510be06 (#2755)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:37:12 -05:00
github-actions[bot]
580329d98a bump(carta-crm): 4b579651 → fd503bbc (#2623)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-13 08:25:41 -05:00
github-actions[bot]
ac16ffafcd bump(oracle-ai-data-platform-workbench-spark-connectors): 0d8efd1f → fd54df54 (#2746)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:14:15 -05:00
github-actions[bot]
fffaefee8e bump(data-agent-kit-starter-pack): 79790536 → 65a480a0 (#2739)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:13:54 -05:00
github-actions[bot]
8738e640b2 bump(sap-fiori-mcp-server): 0582fe33 → 5f573157 (#2749)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:13:33 -05:00
github-actions[bot]
de665302a9 bump(carta-cap-table): 7b98067b → 9de95825 (#2737)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:13:11 -05:00
github-actions[bot]
00cc11a4db bump(datarobot-agent-skills): 574dd2df → 9e12eca2 (#2740)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:12:49 -05:00
github-actions[bot]
16685443cd bump(carta-investors): 7b98067b → 9de95825 (#2738)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:12:26 -05:00
github-actions[bot]
92b8b3b1a4 bump(nvidia-skills): d8694ba7 → 26058fed (#2745)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:12:02 -05:00
github-actions[bot]
2abc0187cc bump(sentry-cli): 209ed4bd → f1f60303 (#2750)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:11:38 -05:00
github-actions[bot]
e845d1fc75 bump(dataverse): 2c373943 → 11750217 (#2741)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:11:14 -05:00
github-actions[bot]
cb551fda9d bump(hyperframes): 740f244c → 583b47b0 (#2742)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:10:48 -05:00
github-actions[bot]
980f770293 bump(neon): 58ec9227 → 240e2e18 (#2743)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:10:22 -05:00
github-actions[bot]
b309b87f4a bump(nightvision): 7d7a3f34 → 73a9d846 (#2744)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:09:55 -05:00
github-actions[bot]
39b572829e bump(outputai): 306c1366 → bd6bd496 (#2747)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:09:28 -05:00
github-actions[bot]
eb35b09fcc bump(railway): 836d42c1 → d096b092 (#2748)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:09:00 -05:00
github-actions[bot]
b4817997ae bump(sagemaker-ai): 58373593 → 7a17df71 (#2734)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:07:26 -05:00
github-actions[bot]
fa8b8dcca9 bump(quarkus-agent): 7c92e192 → 0b5e6445 (#2733)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:07:16 -05:00
github-actions[bot]
a3ccf58c9c bump(aikido): 603d5eac → 01e8cf54 (#2708)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 19:06:09 -05:00
Bryan Thompson
eb1510e138 Add langfuse-observability plugin (#2613) 2026-06-12 12:27:03 -07:00
github-actions[bot]
3da3a87d3a bump(airwallex): a49ef1ec → d7727170 (#2709)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:30:09 -05:00
github-actions[bot]
30c7e63900 bump(dash0): 37fd498b → 71b44017 (#2719)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:25:30 -05:00
github-actions[bot]
92335cde51 bump(expo): bba3c55d → 39d50f0c (#2723)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:25:17 -05:00
github-actions[bot]
0093cc4c19 bump(aws-agents): 2b92b90e → 7cd875e7 (#2711)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:24:35 -05:00
github-actions[bot]
0838a1dc8b bump(aws-amplify): 58373593 → 7a17df71 (#2712)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:24:07 -05:00
github-actions[bot]
3d211b8c96 bump(aws-serverless): 58373593 → 7a17df71 (#2715)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:23:35 -05:00
github-actions[bot]
631285244a bump(hyperframes): a0ee9721 → 740f244c (#2726)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:23:06 -05:00
github-actions[bot]
b7b93b44b5 bump(neon): 654f914a → 58ec9227 (#2728)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:22:58 -05:00
github-actions[bot]
b0fc21d5e9 bump(nimble): 9736dfc7 → bcc5159d (#2729)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:22:29 -05:00
github-actions[bot]
3d52574103 bump(42crunch-api-security-testing): 10f3e847 → bc781f96 (#2707)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:21:42 -05:00
github-actions[bot]
722a3a3135 bump(amazon-location-service): 58373593 → 7a17df71 (#2710)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:21:04 -05:00
github-actions[bot]
b424b366c1 bump(aws-data-analytics): 2b92b90e → 7cd875e7 (#2714)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:20:23 -05:00
github-actions[bot]
22b1d01458 bump(carta-cap-table): 191ed3cb → 7b98067b (#2716)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:19:41 -05:00
github-actions[bot]
9fcd733451 bump(chrome-devtools-mcp): 228cf393 → ed02047a (#2718)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:18:57 -05:00
github-actions[bot]
911a4a4948 bump(databases-on-aws): 58373593 → 7a17df71 (#2720)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:18:11 -05:00
github-actions[bot]
bb1dbb72c2 bump(datarobot-agent-skills): ec2ecdd4 → 574dd2df (#2721)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:17:29 -05:00
github-actions[bot]
91af1ec414 bump(deploy-on-aws): 58373593 → 7a17df71 (#2722)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:16:53 -05:00
github-actions[bot]
b00b3adfc4 bump(firestore-native): d7f42424 → d151daf6 (#2724)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:16:43 -05:00
github-actions[bot]
ff5936621d bump(oracle-ai-data-platform-workbench-spark-connectors): 451ec14c → 0d8efd1f (#2731)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:16:03 -05:00
github-actions[bot]
fec0d03aa8 bump(aws-core): 2b92b90e → 7cd875e7 (#2713)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:15:40 -05:00
github-actions[bot]
e8cb4b220b bump(knowledge-catalog): ed4eca83 → fe4e9403 (#2727)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:15:31 -05:00
github-actions[bot]
ab689eaaa3 bump(carta-investors): 191ed3cb → 7b98067b (#2717)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:15:29 -05:00
github-actions[bot]
2392bfb536 bump(outputai): 5a29fff6 → 306c1366 (#2732)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:15:19 -05:00
github-actions[bot]
8b2d46e39f bump(huggingface-skills): 7bf59b7f → c68f1b08 (#2725)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:15:16 -05:00
github-actions[bot]
a8498e96ec bump(nvidia-skills): 071d2fe0 → d8694ba7 (#2730)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:14:47 -05:00
github-actions[bot]
fe68bbd4cb bump(sap-fiori-mcp-server): ea691796 → 0582fe33 (#2735)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:14:19 -05:00
github-actions[bot]
29a9b7821b bump(sentry): 9780bfc1 → d65bd23b (#2736)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 13:13:55 -05:00
Mohamed Hegazy
3055453674 Merge pull request #2698 from anthropics/venv-signal-kill-cooldown
security-guidance: handle signal-killed venv builds (memory) + cooldown (2.0.5 → 2.0.6)
2026-06-12 08:06:38 -07:00
github-actions[bot]
df202fe49d bump(data-agent-kit-starter-pack): 23aab90c → 79790536 (#2703)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:49:54 -05:00
github-actions[bot]
13c87c4343 bump(aws-data-analytics): f5ba8108 → 2b92b90e (#2701)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:49:32 -05:00
github-actions[bot]
578a1e0424 bump(aws-agents): f5ba8108 → 2b92b90e (#2699)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:49:10 -05:00
github-actions[bot]
9a0431c4e2 bump(aws-core): f5ba8108 → 2b92b90e (#2700)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:48:47 -05:00
github-actions[bot]
811f8ad60f bump(knowledge-catalog): b3df58e8 → ed4eca83 (#2704)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:48:24 -05:00
github-actions[bot]
15097484e3 bump(convex): 002f9c83 → d184f547 (#2702)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:48:00 -05:00
github-actions[bot]
6c54d520d9 bump(stripe): d076d055 → 2b60be10 (#2705)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:47:35 -05:00
github-actions[bot]
fd1fb9b605 bump(42crunch-api-security-testing): 5cfa510f → 10f3e847 (#2680)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:44:40 -05:00
github-actions[bot]
2e51a286e1 bump(sap-fiori-mcp-server): cf2d1ef7 → ea691796 (#2693)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:31:49 -05:00
github-actions[bot]
ddee31c6d0 bump(carta-cap-table): ab95e738 → 191ed3cb (#2681)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 07:31:26 -05:00
github-actions[bot]
f509ef5619 bump(carta-investors): ab95e738 → 191ed3cb (#2682)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 06:31:06 -05:00
github-actions[bot]
b86cb16f46 bump(netlify-skills): c594226e → ab80a6ed (#2688)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 06:30:41 -05:00
github-actions[bot]
3ca32ef77d bump(quarkus-agent): 0ecd6237 → 7c92e192 (#2692)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 05:30:52 -05:00
github-actions[bot]
a32fc1e5ee bump(sentry-cli): a55d2a80 → 209ed4bd (#2694)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 05:30:26 -05:00
github-actions[bot]
13ca790298 bump(expo): 1a5693e0 → bba3c55d (#2685)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 04:05:25 -05:00
github-actions[bot]
60b0b15e99 bump(hyperframes): c52165d1 → a0ee9721 (#2686)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 04:04:56 -05:00
github-actions[bot]
cbe3b82009 bump(neon): 58b84dfb → 654f914a (#2687)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 03:04:31 -05:00
github-actions[bot]
fbf287b7b1 bump(outputai): be9352cb → 5a29fff6 (#2690)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 03:04:03 -05:00
Mohamed Hegazy
4e56d19dd8 security-guidance: handle signal-killed venv builds (memory) + cooldown (2.0.5 → 2.0.6)
The real dominant Linux failure, identified by a CCR Linux repro.

A CCR container reproduced the production signature — non-zero exit +
EMPTY stdout + EMPTY stderr (~60k fires/day, 4,485 Linux users on 2.0.4):
running `python -m venv` under a tight memory limit (ulimit -v) kills the
memory-heavy venv+ensurepip/pip subprocess with SIGSEGV (-11, RLIMIT_AS)
or SIGKILL (-9, kernel OOM-killer) BEFORE it writes anything. This is
NOT the ensurepip/packaging case (that always writes to stderr, code 11)
and NOT fixable by --target (a --target pip install is also memory-heavy
and gets killed too). Three earlier hypotheses (stdout, packaging,
Option A fixes Linux) were wrong — the repro corrected them.

Changes:
  - Detect the signal kill (rc<0, or 128+sig: 134/137/139) in the venv/pip
    and --target paths → err_kind "signal_killed:<rc>" (new code 16). The
    returncode rides in a new sdk_bootstrap_rc metric so prod confirms
    which signal dominates (-9 OOM-killer vs -11 RLIMIT_AS).
  - Cooldown: on a signal kill, write a marker and return the new
    SKIP_COOLDOWN outcome (9) on subsequent sessions for 24h — stops the
    retry storm (every session was re-attempting a build that just gets
    re-killed, burning the user's memory/CPU). Retries once per window so a
    machine that frees memory still recovers.
  - --no-cache-dir on both pip installs (venv + --target) trims pip's peak
    memory; may get marginal machines under the OOM threshold.

No happy-path change: signal detection is at the top of the existing
failure handler; cooldown is checked only after all no-op probes
(NOOP_SYSTEM/VENV/TARGET short-circuit first).

Verified locally on macOS Python 3.13:
  - py_compile clean.
  - 35 new tests (test_signal_kill_cooldown.py): _is_signal_kill across
    signals/exit-codes, rc decode, signal_killed→code 16, cooldown
    lifecycle (none→write→expire), and an integration flow — simulated
    SIGKILL'd venv → BUILD_FAILED/signal_killed:-9 + cooldown written →
    2nd run SKIP_COOLDOWN without re-attempting → retry after window;
    non-signal failure does NOT cool down; --no-cache-dir present on both
    pip paths; sdk_bootstrap_rc emitted conditionally.
  - End-to-end harness: the full kill→categorize→cooldown→skip→retry
    chain confirmed in-process.

The original CCR repro (ulimit -v ≤7000 KB → rc=-11, empty streams) is
the ground truth this fix is built on. Can be re-validated on CCR with the
same ulimit approach.

Version 2.0.5 -> 2.0.6 per the per-PR-bump policy (#2114).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 00:53:02 -07:00
github-actions[bot]
1a0964045f bump(postman): 812678b3 → cb8e002e (#2691)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 02:47:20 -05:00
Mohamed Hegazy
96468b2393 Merge pull request #2696 from anthropics/venv-target-fallback
security-guidance: pip --target fallback when venv can't bootstrap pip (Option A, #2154) — 2.0.4 → 2.0.5
2026-06-12 00:17:17 -07:00
github-actions[bot]
3746985ced bump(oracle-ai-data-platform-workbench-spark-connectors): deadf8f8 → 451ec14c (#2689)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 01:46:39 -05:00
github-actions[bot]
a4b32dc171 bump(data-agent-kit-starter-pack): 6f60c83a → 23aab90c (#2684)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 01:46:11 -05:00
Mohamed Hegazy
e7fe15d9ba security-guidance: pip --target fallback when venv can't bootstrap pip (2.0.4 → 2.0.5)
Option A, the data-gated fix for venv_ensurepip_fail (#2154 follow-up).

v2.0.4 telemetry made the call: of the venv_ensurepip_fail cohort, ~95%
HAVE pip (sdk_has_pip=true) and run Python 3.11–3.14 — so it's not the
Apple-3.9 problem; it's modern interpreters where `python -m venv` can't
bootstrap pip (Debian python3-venv absent, or python.org/pyenv builds
without ensurepip) but pip itself works. `pip install --target` needs only
pip, so it recovers the agentic reviewer for them instead of degrading to
pattern + single-shot review.

Producer (ensure_agent_sdk.py):
  - New outcomes BUILT_TARGET=7, NOOP_TARGET=8; new phase pip_target=5.
  - _build_via_target(): `pip install --target <state>/agent-sdk-libs
    --upgrade --prefer-binary claude-agent-sdk`. Failures categorized via
    _pip_err_from_stderr (sibling of main()'s pip chain — kept separate to
    avoid disturbing the working venv categorizer); errno embedded for
    OSError-family exceptions.
  - _target_sdk_importable(): probes a prior target install → NOOP_TARGET.
    Dir-check short-circuits before any subprocess, and it's only reached
    when there's no working venv, so the 81% NOOP_VENV cohort never pays.
  - main() falls through to the target build ONLY on venv_ensurepip_fail;
    every other venv/pip failure stays terminal BUILD_FAILED. The sentinel
    is released before the target build so a retry isn't seen as SKIP_SENTINEL.

Consumer (llm.py):
  - _inject_agent_sdk_venv_into_syspath() adds the flat agent-sdk-libs dir
    (packages sit directly in it, not under site-packages). The existing
    pywin32 .pth bootstrap applies (target installs don't run .pth either).

No change to the happy path — the new branch is taken only on the
ensurepip failure, and the extra candidate dir is a no-op when absent.

Verified locally on macOS Python 3.13:
  - py_compile clean.
  - 30 new tests (test_venv_target_fallback.py): outcome/phase codes
    (append-only, 4 stays retired), _pip_err_from_stderr categories,
    _build_via_target success/CalledProcessError/timeout/exc+errno (mocked
    subprocess), _target_sdk_importable dir-short-circuit, main() wiring
    (ensurepip→target fallthrough + NOOP_TARGET probe + sentinel release),
    consumer adds the flat dir. Full suite 533/533 pass + 2 skipped.
  - END-TO-END harness (real install, simulated ensurepip failure):
    main() → BUILT_TARGET, target dir has claude_agent_sdk; 2nd run →
    NOOP_TARGET; consumer _inject → `import claude_agent_sdk` resolves
    FROM the --target dir. Full chain proven without needing a
    broken-ensurepip box.
  - Real `pip install --target` + import confirmed independently (exit 0,
    SDK imports from the flat layout).

NOT validated in tmux: the ensurepip failure can't be reproduced on macOS
(working ensurepip), so the fallback was proven via the real-install
harness above instead. The happy path (NOOP_VENV / normal agentic review)
is unchanged and covered by the existing hook-smoke suite.

Version 2.0.4 -> 2.0.5 per the per-PR-bump policy (#2114).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 23:31:55 -07:00
github-actions[bot]
e97f9a40b9 bump(zapier): 770167c5 → ea8ed6b4 (#2695)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-12 00:46:01 -05:00
github-actions[bot]
78fa3df8d6 bump(sentry-cli): a5f26c33 → a55d2a80 (#2675)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:30:11 -05:00
github-actions[bot]
56fd6abb97 bump(auth0): bdf0dc23 → b595bdb9 (#2652)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:23:13 -05:00
github-actions[bot]
c9b8f92b53 bump(cloudflare): c5b7b06b → 12520fd6 (#2662)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:23:04 -05:00
github-actions[bot]
7279412e77 bump(aws-startup-advisor): 3c5d6a7d → 944e5b17 (#2656)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:22:24 -05:00
github-actions[bot]
484653886e bump(chrome-devtools-mcp): 4f8eb7ad → 228cf393 (#2661)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:21:59 -05:00
github-actions[bot]
c7af5e02bc bump(carta-investors): fd503bbc → ab95e738 (#2660)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:21:23 -05:00
github-actions[bot]
8ea0761c82 bump(nvidia-skills): 24806dbd → 071d2fe0 (#2672)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:20:57 -05:00
github-actions[bot]
600c99b404 bump(knowledge-catalog): 8aa886f1 → b3df58e8 (#2667)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:20:31 -05:00
github-actions[bot]
d28241b7ef bump(netlify-skills): 99b990ce → c594226e (#2671)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:20:03 -05:00
github-actions[bot]
46c72e981f bump(huggingface-skills): d7223848 → 7bf59b7f (#2665)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:19:35 -05:00
github-actions[bot]
3f8fc630b8 bump(codspeed): 7e86f11b → 41f4db99 (#2663)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:19:24 -05:00
github-actions[bot]
fbd57be8e5 bump(carta-cap-table): fd503bbc → ab95e738 (#2659)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:19:01 -05:00
github-actions[bot]
413d293096 bump(aikido): 79ac524f → 603d5eac (#2651)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:18:48 -05:00
github-actions[bot]
e4a454a7eb bump(crowdstrike-falcon-foundry): 7e73f691 → a7e6a75a (#2664)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:18:13 -05:00
github-actions[bot]
d30ef44d74 bump(migration-to-aws): 3c5d6a7d → 944e5b17 (#2670)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:17:40 -05:00
github-actions[bot]
6ee4f1e1df bump(aws-agents): e089489e → f5ba8108 (#2653)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:17:08 -05:00
github-actions[bot]
c4b91a6e24 bump(aws-core): e089489e → f5ba8108 (#2654)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:16:34 -05:00
github-actions[bot]
e656f87725 bump(brightdata-plugin): bd5bd76b → 8d427e98 (#2658)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:16:00 -05:00
github-actions[bot]
eaa69c48cb bump(looker): e912c034 → ef389645 (#2668)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:15:46 -05:00
github-actions[bot]
46dc6920be bump(bigdata-com): 67c30be9 → 76a043a0 (#2657)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:15:40 -05:00
github-actions[bot]
92954b1b92 bump(hyperframes): 83662c11 → c52165d1 (#2666)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:15:12 -05:00
github-actions[bot]
0784122e63 bump(lusha): 8fc71d54 → affbc76b (#2669)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:14:59 -05:00
github-actions[bot]
7465bdcc27 bump(oracle-ai-data-platform-workbench-spark-connectors): 00cedef3 → deadf8f8 (#2673)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:13:58 -05:00
github-actions[bot]
7209a2ca09 bump(sap-fiori-mcp-server): 372f7644 → cf2d1ef7 (#2674)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:13:14 -05:00
github-actions[bot]
71941bb301 bump(aws-data-analytics): e089489e → f5ba8108 (#2655)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:12:28 -05:00
github-actions[bot]
eeb3316d51 bump(wix): 8cbffb9c → def21835 (#2676)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 13:11:57 -05:00
github-actions[bot]
66bca6b6f6 bump(data-agent-kit-starter-pack): c125eaea → 6f60c83a (#2639)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:54:40 -05:00
github-actions[bot]
be8b438e1a bump(sap-fiori-mcp-server): 67ad23a4 → 372f7644 (#2646)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:54:18 -05:00
github-actions[bot]
43297b9419 bump(aws-data-analytics): c0991f46 → e089489e (#2637)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:53:56 -05:00
github-actions[bot]
b110a96045 bump(crowdstrike-falcon-foundry): 2f34384c → 7e73f691 (#2638)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:53:33 -05:00
github-actions[bot]
9087f2c348 bump(databases-on-aws): f985fddc → 58373593 (#2640)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:53:08 -05:00
github-actions[bot]
9277728768 bump(deploy-on-aws): f985fddc → 58373593 (#2641)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:52:43 -05:00
github-actions[bot]
5518e4b87d bump(aws-agents): c0991f46 → e089489e (#2635)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:52:17 -05:00
github-actions[bot]
2bf67d3cfd bump(aws-core): c0991f46 → e089489e (#2636)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:51:51 -05:00
github-actions[bot]
c5fd33161c bump(knowledge-catalog): 317e96fd → 8aa886f1 (#2643)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:51:23 -05:00
github-actions[bot]
2b58efffc3 bump(quarkus-agent): f5c0dd4c → 0ecd6237 (#2644)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:50:53 -05:00
github-actions[bot]
f4cf218b9b bump(atlan): 789507c0 → 86bb1ad2 (#2634)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:50:26 -05:00
github-actions[bot]
db5b3d5999 bump(hyperframes): 868c56fd → 83662c11 (#2642)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:49:58 -05:00
github-actions[bot]
5316ced830 bump(railway): 72299c62 → 836d42c1 (#2645)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:49:29 -05:00
github-actions[bot]
13ac3cb075 bump(wix): cda44c29 → 8cbffb9c (#2647)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:48:59 -05:00
github-actions[bot]
5a20d10780 bump(zscaler): f84ce4f0 → a2162c38 (#2648)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-11 07:48:28 -05:00
github-actions[bot]
9eae436aa2 bump(valtown): 02631f99 → 1f792839 (#2633)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:15:46 -05:00
github-actions[bot]
ee7ce490f9 bump(carta-cap-table): 4b579651 → fd503bbc (#2622)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:15:09 -05:00
github-actions[bot]
460bc2b3a4 bump(crowdstrike-falcon-foundry): 57ae73b4 → 2f34384c (#2625)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:14:47 -05:00
github-actions[bot]
1a7db730cb bump(snowflake-cortex-code): 7d2c7e7e → 5a8f277f (#2632)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:14:25 -05:00
github-actions[bot]
3ebb9c7a85 bump(aws-amplify): f985fddc → 58373593 (#2620)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:14:03 -05:00
github-actions[bot]
9ef08d32aa bump(aws-serverless): f985fddc → 58373593 (#2621)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:13:39 -05:00
github-actions[bot]
b8e4462957 bump(carta-investors): 4b579651 → fd503bbc (#2624)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:13:13 -05:00
github-actions[bot]
2f9c3234ab bump(firestore-native): f88103bd → d7f42424 (#2626)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:12:47 -05:00
github-actions[bot]
c5660ed060 bump(netlify-skills): 22025ef6 → 99b990ce (#2628)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:12:22 -05:00
github-actions[bot]
9ecfe41bdd bump(sagemaker-ai): f985fddc → 58373593 (#2630)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:11:56 -05:00
github-actions[bot]
d5265b0377 bump(amplitude): e9b4e151 → fb22979d (#2619)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:11:30 -05:00
github-actions[bot]
c7f3eb4b8f bump(hyperframes): 8fcbb63a → 868c56fd (#2627)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:11:02 -05:00
github-actions[bot]
3b46b04964 bump(outputai): f8d698ea → be9352cb (#2629)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:10:30 -05:00
github-actions[bot]
a379ddd580 bump(sanity): be762f2f → 2d7b7c08 (#2631)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:09:49 -05:00
github-actions[bot]
8a0797c1eb bump(42crunch-api-security-testing): b7e131e3 → 5cfa510f (#2617)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:09:25 -05:00
github-actions[bot]
447aef7de0 bump(amazon-location-service): f985fddc → 58373593 (#2618)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:08:42 -05:00
github-actions[bot]
7e9d5e46d1 bump(deploy-on-aws): b13ce7f0 → f985fddc (#2595)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:07:53 -05:00
github-actions[bot]
14e6461b03 bump(databases-on-aws): b13ce7f0 → f985fddc (#2594)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 19:07:37 -05:00
Mohamed Hegazy
634ea8dfdf Merge pull request #2313 from anthropics/exc-failure-encoding
security-guidance: encode exception type + errno + ensurepip instrumentation for venv BUILD_FAILED (#2154 follow-up) — 2.0.3 → 2.0.4
2026-06-10 14:28:05 -07:00
github-actions[bot]
fa5b2907d3 bump(qt-development-skills): a7189a7b → 2be55aaf (#2604)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:30:13 -05:00
github-actions[bot]
f0a6e581ab bump(carta-crm): 4b60ca66 → 4b579651 (#2589)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:24:12 -05:00
github-actions[bot]
820c25f30e bump(carta-investors): 4b60ca66 → 4b579651 (#2590)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:23:59 -05:00
github-actions[bot]
62e1eee8ba bump(pydantic-ai): ddc7d005 → 1e7a4567 (#2603)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:23:30 -05:00
github-actions[bot]
1266fa54fe bump(sagemaker-ai): d8243e5f → f985fddc (#2605)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:23:01 -05:00
github-actions[bot]
662eb2a84d bump(sentry-cli): 18111b95 → a5f26c33 (#2609)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:22:31 -05:00
github-actions[bot]
b9fcf71aa3 bump(togetherai-skills): 8aa08ca1 → 86bdd662 (#2610)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:21:59 -05:00
github-actions[bot]
276c66d983 bump(figma): 54ad1560 → 2efd0e37 (#2597)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:21:27 -05:00
github-actions[bot]
96627692d8 bump(hyperframes): 81416ab3 → 8fcbb63a (#2598)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:20:56 -05:00
github-actions[bot]
2dad4fb0e9 bump(logfire): ddc7d005 → 1e7a4567 (#2599)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:20:24 -05:00
github-actions[bot]
764c85b81b bump(neon): 9695a225 → 58b84dfb (#2600)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:19:50 -05:00
github-actions[bot]
0fc58e49d1 bump(posthog): db4a8663 → f674efef (#2602)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:19:17 -05:00
github-actions[bot]
14207a6858 bump(sap-fiori-mcp-server): 81b88637 → 67ad23a4 (#2607)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:18:27 -05:00
github-actions[bot]
51081f898a bump(amazon-location-service): b13ce7f0 → f985fddc (#2584)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:17:53 -05:00
github-actions[bot]
c6cd307f91 bump(save-to-spotify): cd4ea681 → a62408bc (#2608)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:17:46 -05:00
github-actions[bot]
1f41ee16b7 bump(ui5-typescript-conversion): 6d72751f → 80f2d932 (#2612)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:17:12 -05:00
github-actions[bot]
0590b22bed bump(aws-amplify): b13ce7f0 → f985fddc (#2585)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:16:35 -05:00
github-actions[bot]
c0e06a05f0 bump(aws-serverless): b13ce7f0 → f985fddc (#2586)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:15:58 -05:00
github-actions[bot]
cb3f6930c7 bump(crowdstrike-falcon-foundry): 0a651a14 → 57ae73b4 (#2592)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:15:43 -05:00
github-actions[bot]
481d531f7d bump(base44): ec420cf2 → aef0fa35 (#2587)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:15:26 -05:00
github-actions[bot]
9d53eaee3b bump(outputai): 83742db5 → f8d698ea (#2601)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:15:19 -05:00
github-actions[bot]
887f70cb5d bump(codspeed): c6112f16 → 7e86f11b (#2591)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:15:13 -05:00
github-actions[bot]
a96db3dd4d bump(dash0): 5ff7aa5b → 37fd498b (#2593)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:14:43 -05:00
github-actions[bot]
5a4b44267a bump(expo): c3886024 → 1a5693e0 (#2596)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:14:04 -05:00
github-actions[bot]
627d4dd3c4 bump(carta-cap-table): 4b60ca66 → 4b579651 (#2588)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:13:37 -05:00
github-actions[bot]
4902efd113 bump(sanity): 66f0ec5d → be762f2f (#2606)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 13:13:17 -05:00
github-actions[bot]
cf6decf9e8 bump(data-agent-kit-starter-pack): b47cae53 → c125eaea (#2571)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:59:42 -05:00
github-actions[bot]
088593ec3b bump(sap-fiori-mcp-server): b9127510 → 81b88637 (#2576)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:59:20 -05:00
github-actions[bot]
206d02f684 bump(carta-cap-table): 7b4e568d → 4b60ca66 (#2568)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:58:57 -05:00
github-actions[bot]
e2be9a8197 bump(carta-crm): 7b4e568d → 4b60ca66 (#2569)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:58:34 -05:00
github-actions[bot]
68a97f85ba bump(carta-investors): 7b4e568d → 4b60ca66 (#2570)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:58:10 -05:00
github-actions[bot]
f1aaa8e4ce bump(qdrant-skills): 82337ccd → 0814a087 (#2573)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:57:45 -05:00
github-actions[bot]
5b6b55808d bump(quarkus-agent): 9700cfee → f5c0dd4c (#2574)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:57:20 -05:00
github-actions[bot]
db71168abe bump(neon): bd9ec7ff → 9695a225 (#2572)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:56:55 -05:00
github-actions[bot]
1f761e4c37 bump(sentry): 87de81a1 → 9780bfc1 (#2577)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:56:28 -05:00
github-actions[bot]
8f09d55614 bump(stripe): b8f6adcb → d076d055 (#2578)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:56:01 -05:00
github-actions[bot]
d0419b8ad5 bump(wix): 9666bc8d → cda44c29 (#2579)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:55:33 -05:00
github-actions[bot]
09404ab125 bump(hyperframes): acd8e117 → 81416ab3 (#2558)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-10 07:53:11 -05:00
github-actions[bot]
de573bd846 bump(outputai): 65cd0871 → 83742db5 (#2560)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:28:45 -05:00
github-actions[bot]
f92fc04666 bump(railway): 1df604eb → 72299c62 (#2562)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:28:39 -05:00
github-actions[bot]
2b8ae0bc72 bump(sonarqube): 712b9328 → 8c46904b (#2563)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:28:18 -05:00
github-actions[bot]
1b3d7c29eb bump(ui5): 9b3d7d80 → 6d72751f (#2564)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:27:56 -05:00
github-actions[bot]
26e06be79b bump(amazon-location-service): d8243e5f → b13ce7f0 (#2543)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:27:35 -05:00
github-actions[bot]
5e14a52052 bump(astronomer-data-agents): 7ce4a12d → 789b4544 (#2544)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:27:12 -05:00
github-actions[bot]
640704824b bump(carta-cap-table): c39482a4 → 7b4e568d (#2549)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:26:49 -05:00
github-actions[bot]
e53f64964b bump(chrome-devtools-mcp): 6bd8c916 → 4f8eb7ad (#2552)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:26:23 -05:00
github-actions[bot]
a9310efd27 bump(databases-on-aws): d8243e5f → b13ce7f0 (#2555)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:25:59 -05:00
github-actions[bot]
b6a4ea1f6a bump(datarobot-agent-skills): b5a8f7a4 → ec2ecdd4 (#2556)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:25:34 -05:00
github-actions[bot]
2057bc4652 bump(deploy-on-aws): d8243e5f → b13ce7f0 (#2557)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:25:08 -05:00
github-actions[bot]
0bcd12a7d1 bump(ui5-typescript-conversion): 9b3d7d80 → 6d72751f (#2565)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:24:41 -05:00
github-actions[bot]
f2691c1439 bump(aws-amplify): d8243e5f → b13ce7f0 (#2547)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:24:13 -05:00
github-actions[bot]
330492c3d6 bump(aws-serverless): d8243e5f → b13ce7f0 (#2548)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:23:44 -05:00
github-actions[bot]
e7e1e791cb bump(carta-crm): c39482a4 → 7b4e568d (#2550)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:23:14 -05:00
github-actions[bot]
0714e5b202 bump(carta-investors): c39482a4 → 7b4e568d (#2551)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:22:44 -05:00
github-actions[bot]
623b6704d3 bump(data-engineering): 7ce4a12d → 789b4544 (#2554)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:22:15 -05:00
github-actions[bot]
f5e552802c bump(nvidia-skills): fd1e6fd1 → 24806dbd (#2559)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:21:46 -05:00
github-actions[bot]
e69b3a26ef bump(quarkus-agent): 91c7986e → 9700cfee (#2561)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:21:15 -05:00
github-actions[bot]
475e5fe15f bump(atlassian): 9b52fb18 → f4911dba (#2545)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:20:44 -05:00
github-actions[bot]
b61e11909c bump(data): 7ce4a12d → 789b4544 (#2553)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:20:13 -05:00
github-actions[bot]
7eb80c4f5b bump(sap-fiori-mcp-server): 604f2895 → b9127510 (#2531)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:20:05 -05:00
github-actions[bot]
1e0be923c5 bump(aws-startup-advisor): b3e5ee48 → 3c5d6a7d (#2512)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-09 20:02:11 -05:00
Mohamed Hegazy
43fcf6d513 security-guidance: encode exception type + errno + ensurepip instrumentation for venv BUILD_FAILED (2.0.3 → 2.0.4)
Follow-up to #2154. v2.0.3 telemetry showed the venv BUILD_FAILED bucket
splits into two unexplained groups; this PR instruments both.

## 1. The exc: bucket — exception type + errno

The dominant remaining venv BUILD_FAILED (phase=venv, err=99) is ~99%
sdk_bootstrap_stderr_sig=NULL — Python exceptions caught by the generic
`except Exception` ("exc:<TypeName>"), not CalledProcessErrors with
categorizable stderr. ~56k/30h, all opaque (stderr_sig only covers
"other:<tail>").

  - Handler embeds errno for OSError-family: "exc:OSError:28", etc.
  - SDK_BOOTSTRAP_EXC_CODES maps the type → sdk_bootstrap_exc
    (FileNotFoundError=1 … OSError=6 … 99=other).
  - errno decoded → sdk_bootstrap_errno (ENOENT/EACCES/ENOSPC/…).

## 2. venv_ensurepip_fail instrumentation (the other category)

venv_ensurepip_fail (code 11) is the top categorizable venv failure, and
telemetry flipped the naive assumption: it's NOT just Debian/Ubuntu —
macOS has the MOST distinct affected users (466 vs 121 linux), and linux
is a retry storm (~172 fires/user). Before committing to a `pip install
--target` fallback (Option A) we need to know (a) which interpreter these
users run and (b) whether that interpreter even has pip (→ whether
--target would work, vs needing a system package).

  - sdk_hook_py (always emitted): interpreter version as major*100+minor
    (309/312). Disambiguates Apple-3.9 vs a 3.10+-with-broken-ensurepip,
    and also recovers the version for HOOK_PY_INCOMPATIBLE (whose "py_3.9"
    err_kind otherwise collapses to err=99).
  - sdk_has_pip (only on err==11, to avoid an extra subprocess per healthy
    session): whether `<interpreter> -m pip --version` works. has_pip=true
    → the --target fallback would fix them; has_pip=false → they need a
    system package (python3-venv / a complete Python).

Both #1 and #2 are purely additive telemetry on the existing BUILD_FAILED
path — no behavior change to the bootstrap. They de-risk the Option A
decision: ship A only if the affected cohort has pip.

Verified locally on macOS Python 3.13:
  - py_compile clean.
  - 39 tests in test_exc_failure_encoding.py (34 exc/errno + 5 ensurepip
    instrumentation): type-code map, errno extraction + round-trip,
    APPEND-ONLY stability, handler-embeds-errno, _probe_has_pip returns
    bool + true-on-this-machine, sdk_hook_py always-emitted as
    major*100+minor, sdk_has_pip gated on err==11.
  - Full suite: 503/503 pass + 2 skipped.

Version 2.0.3 -> 2.0.4 per the per-PR-bump policy (#2114).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-04 14:55:55 -07:00
4 changed files with 496 additions and 87 deletions

View File

@@ -19,7 +19,7 @@
"url": "https://github.com/42Crunch-AI/claude-plugins.git",
"path": "plugins/api-security-testing",
"ref": "v1.5.5",
"sha": "b7e131e30ff033be2176faf796c94c151a68c63a"
"sha": "bc781f96be8ce17a2972e8a9a3ef38b1ca7e8cc4"
},
"homepage": "https://42crunch.com"
},
@@ -35,7 +35,7 @@
"url": "https://github.com/adobe/skills.git",
"path": "plugins/creative-cloud/adobe-for-creativity",
"ref": "main",
"sha": "253f56901e058800ccb97ffd5bf1e3329d5f2e00"
"sha": "c467bf831064ebda26f39dd30c02d7cce03eb26c"
},
"homepage": "https://github.com/adobe/skills/tree/main/plugins/creative-cloud/adobe-for-creativity"
},
@@ -77,7 +77,7 @@
"source": {
"source": "url",
"url": "https://github.com/AikidoSec/aikido-claude-plugin.git",
"sha": "79ac524f87c9faa9a356ff3d495b8a5b77e01bbd"
"sha": "01e8cf542500e579cff948a0fa0365e4f819d7b4"
},
"homepage": "https://github.com/AikidoSec/aikido-claude-plugin"
},
@@ -109,7 +109,7 @@
"url": "https://github.com/airwallex/airwallex-marketplace.git",
"path": "plugins/airwallex",
"ref": "master",
"sha": "a49ef1ec801fd776adc4db9f2bb4a78463981bc9"
"sha": "683a7536f9445c07439d087607b44b0383b8c41d"
},
"homepage": "https://www.airwallex.com/docs"
},
@@ -150,7 +150,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/amazon-location-service",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -161,7 +161,7 @@
"url": "https://github.com/amplitude/mcp-marketplace.git",
"path": "plugins/amplitude",
"ref": "main",
"sha": "e9b4e15193666e1b513b5652ded23fab160bdc4e"
"sha": "fb22979da93d27dcb17b832dbd473e6b0caf2ca8"
},
"description": "Use Amplitude as an expert analyst — instrument Amplitude, discover product opportunities, analyze charts, create dashboards, manage experiments, and understand users and accounts.",
"category": "monitoring",
@@ -223,7 +223,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "7ce4a12d3cabb506294134c91a1b876d4b166a70"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -233,7 +233,7 @@
"source": {
"source": "url",
"url": "https://github.com/atlanhq/agent-toolkit.git",
"sha": "789507c02d2495235240d10d67aaac8b2051023a"
"sha": "86bb1ad27f80e189b328333d2271b360ae579f2b"
},
"homepage": "https://docs.atlan.com/"
},
@@ -244,7 +244,7 @@
"source": {
"source": "url",
"url": "https://github.com/atlassian/atlassian-mcp-server.git",
"sha": "9b52fb18e184edc307ce33f8bf4cdf148dedf1f2"
"sha": "f4911dba81f25782c88815b03deabf444cd46e0d"
},
"homepage": "https://github.com/atlassian/atlassian-mcp-server"
},
@@ -256,7 +256,7 @@
"source": "url",
"url": "https://github.com/BrainBlend-AI/atomic-agents.git",
"path": "claude-plugin/atomic-agents",
"sha": "324399402b9b5965313de6a34ea09d6bb149a200"
"sha": "94220182f88df0292a8b59d01b61170ff6c61fd4"
},
"homepage": "https://github.com/BrainBlend-AI/atomic-agents",
"tags": [
@@ -275,7 +275,7 @@
"url": "https://github.com/auth0/agent-skills.git",
"path": "plugins/auth0",
"ref": "main",
"sha": "bdf0dc23f8b17446b2c94bc9f2e5a58d3f1bc114"
"sha": "b595bdb9b574569e864eef86c3d48c06e2cf414c"
},
"homepage": "https://auth0.com/docs/quickstart/agent-skills"
},
@@ -291,7 +291,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-agents",
"ref": "main",
"sha": "c0991f463b54ac94af32a730d6d13293dcff98cf"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -304,7 +304,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/aws-amplify",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -320,7 +320,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-core",
"ref": "main",
"sha": "c0991f463b54ac94af32a730d6d13293dcff98cf"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -336,7 +336,7 @@
"url": "https://github.com/aws/agent-toolkit-for-aws.git",
"path": "plugins/aws-data-analytics",
"ref": "main",
"sha": "c0991f463b54ac94af32a730d6d13293dcff98cf"
"sha": "a9d1c70fe7442a97678e82b62c7c61bcb0deeaea"
},
"homepage": "https://github.com/aws/agent-toolkit-for-aws"
},
@@ -365,7 +365,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/aws-serverless",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -381,7 +381,7 @@
"url": "https://github.com/awslabs/startups.git",
"path": "advisor/plugins/aws-startup-advisor",
"ref": "main",
"sha": "b3e5ee487ed27d8c776d9b854d7e109f1514c75b"
"sha": "3eae13125da8cc923f010b19321137efd0e69a66"
},
"homepage": "https://github.com/awslabs/startups"
},
@@ -392,7 +392,7 @@
"source": {
"source": "url",
"url": "https://github.com/microsoft/azure-skills.git",
"sha": "966330ee4fc61978b6e324993687e917125a1f36"
"sha": "82492494405b948c8422766ddae390714bbd78ed"
},
"homepage": "https://github.com/microsoft/azure-skills"
},
@@ -414,7 +414,7 @@
"source": {
"source": "url",
"url": "https://github.com/base44/skills.git",
"sha": "ec420cf2edd2c7e9a523d5afe2e71498a6357fa4"
"sha": "aef0fa35f21b3c0c000d5ab8c0b068e6188618b6"
},
"homepage": "https://docs.base44.com"
},
@@ -430,7 +430,7 @@
"url": "https://github.com/Bigdata-com/bigdata-plugins-marketplace.git",
"path": "plugins/bigdata-com",
"ref": "main",
"sha": "67c30be97a0a3f46bc6e8d56df449ae108eda9c5"
"sha": "76a043a08c0a10eb73756d04031a613568017067"
},
"homepage": "https://docs.bigdata.com"
},
@@ -472,7 +472,7 @@
"source": {
"source": "url",
"url": "https://github.com/brightdata/skills.git",
"sha": "bd5bd76bc889f54b744bab3db3cbd42751a1e5b0"
"sha": "8d427e9871566efe3f0a1c8888f98b6fe8288831"
},
"homepage": "https://docs.brightdata.com"
},
@@ -486,7 +486,7 @@
"source": {
"source": "url",
"url": "https://github.com/buildkite/skills.git",
"sha": "a43e944f2017146d0a6b7d8ea2bf21b02484e1d3"
"sha": "e6c7784f46a2c070fdf7e6fe1b61cd3ca0e20166"
},
"homepage": "https://buildkite.com"
},
@@ -502,7 +502,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-cap-table",
"ref": "main",
"sha": "c39482a45c1e4c02922fe5cef3d61fb010a0b2d9"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -518,7 +518,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-crm",
"ref": "main",
"sha": "c39482a45c1e4c02922fe5cef3d61fb010a0b2d9"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -534,7 +534,7 @@
"url": "https://github.com/carta/plugins.git",
"path": "plugins/carta-investors",
"ref": "main",
"sha": "c39482a45c1e4c02922fe5cef3d61fb010a0b2d9"
"sha": "5e119d7848e1f495092df4e41ac43e609e3293d1"
},
"homepage": "https://carta.com"
},
@@ -561,7 +561,7 @@
"source": {
"source": "url",
"url": "https://github.com/ChromeDevTools/chrome-devtools-mcp.git",
"sha": "6bd8c91678035b5aa18ee40f72e1f630aa528837"
"sha": "ed02047ae90f25c4c15adb8fd7e224b963f43135"
},
"homepage": "https://github.com/ChromeDevTools/chrome-devtools-mcp"
},
@@ -720,7 +720,7 @@
"source": {
"source": "url",
"url": "https://github.com/cloudflare/skills.git",
"sha": "c5b7b06b073fa0b4abbd63964630f97d81da69c4"
"sha": "8ff55f2a574f498bbf89675279d92b7a61f4d521"
},
"description": "Skills for the Cloudflare developer platform: Workers, Durable Objects, Agents SDK, MCP servers, Wrangler CLI, and web performance.",
"category": "deployment",
@@ -804,7 +804,7 @@
"source": {
"source": "url",
"url": "https://github.com/CodSpeedHQ/codspeed.git",
"sha": "c6112f168b405df8e7310b12a9b80484cd01ac14"
"sha": "9e21a9c0415c848d1c6d7e66c221f7524433899d"
},
"homepage": "https://codspeed.io"
},
@@ -841,7 +841,7 @@
"source": {
"source": "url",
"url": "https://github.com/get-convex/convex-backend-skill.git",
"sha": "002f9c834cdb834ddef1e4867d87cb6e80f0acba"
"sha": "d184f54776d20dd834218b11b83feb42d5e2a065"
},
"homepage": "https://github.com/get-convex/convex-backend-skill",
"keywords": [
@@ -872,7 +872,7 @@
"source": {
"source": "url",
"url": "https://github.com/CrowdStrike/foundry-skills.git",
"sha": "0a651a1472e4c03603780517374c654236bcce8b"
"sha": "a7e6a75ad2d9aa4093771e8c07d455c1ce39aae1"
},
"homepage": "https://github.com/CrowdStrike/foundry-skills"
},
@@ -918,7 +918,7 @@
"source": {
"source": "url",
"url": "https://github.com/dash0hq/dash0-agent-plugin.git",
"sha": "5ff7aa5b8e52e10d10e45ea8e2f7cbebc86758bf"
"sha": "e1a46f085171787382465b7148070da36127119f"
},
"homepage": "https://dash0.com/"
},
@@ -929,7 +929,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "7ce4a12d3cabb506294134c91a1b876d4b166a70"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -943,7 +943,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack.git",
"sha": "b47cae53405e90dd97d1ecde890a8d4707d1f115"
"sha": "65a480a04dc09fe51fab66fde61b1a2baa443741"
},
"homepage": "https://github.com/gemini-cli-extensions/data-agent-kit-starter-pack"
},
@@ -953,7 +953,7 @@
"source": {
"source": "url",
"url": "https://github.com/astronomer/agents.git",
"sha": "7ce4a12d3cabb506294134c91a1b876d4b166a70"
"sha": "789b4544b85a989694501e4f405b522f2d711cf6"
},
"homepage": "https://github.com/astronomer/agents"
},
@@ -966,7 +966,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/databases-on-aws",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -1022,7 +1022,7 @@
"source": {
"source": "url",
"url": "https://github.com/datarobot-oss/datarobot-agent-skills.git",
"sha": "b5a8f7a4bc4d31a1f139a232efbba6127af0474a"
"sha": "6937e65a4f652ecc08b8b53bd7e79f6e3d1f69b3"
},
"homepage": "https://datarobot.com"
},
@@ -1035,7 +1035,7 @@
"url": "https://github.com/microsoft/Dataverse-skills.git",
"path": ".github/plugins/dataverse",
"ref": "main",
"sha": "2c37394346be1afc1db12cc5b89f5dee3617c45c"
"sha": "1175021761a2f135ea7505208f074ed0fae45255"
},
"homepage": "https://github.com/microsoft/Dataverse-skills"
},
@@ -1048,7 +1048,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/deploy-on-aws",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -1150,7 +1150,7 @@
"url": "https://github.com/expo/skills.git",
"path": "plugins/expo",
"ref": "main",
"sha": "c38860242118df93d4ec4381a34f4144fff61928"
"sha": "39d50f0caeacec8a17588534bb32aa962c677a3d"
},
"homepage": "https://github.com/expo/skills/blob/main/plugins/expo/README.md"
},
@@ -1198,7 +1198,7 @@
"source": {
"source": "url",
"url": "https://github.com/figma/mcp-server-guide.git",
"sha": "54ad156019d7362a56d8024b9adbe99952aa29b6"
"sha": "2efd0e37d10c35c4a7cf6d2b7381c9dc1a569bd4"
},
"homepage": "https://github.com/figma/mcp-server-guide"
},
@@ -1230,7 +1230,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/firestore-native.git",
"sha": "f88103bd0ccfe9e1e7a3a7d849de26d197978c9a"
"sha": "d151daf6a5fde7f46fde824292828ab630220282"
},
"homepage": "https://github.com/gemini-cli-extensions/firestore-native"
},
@@ -1333,7 +1333,7 @@
"source": {
"source": "url",
"url": "https://github.com/huggingface/skills.git",
"sha": "d7223848c3895fbd447faf2aec73e0a6cdd7fdcd"
"sha": "c68f1b08d9eb3af22cdc1d3fb60e9cdb78522556"
},
"homepage": "https://github.com/huggingface/skills.git"
},
@@ -1361,7 +1361,7 @@
"source": {
"source": "url",
"url": "https://github.com/heygen-com/hyperframes.git",
"sha": "acd8e11789a7bf92f0ed4fac24ff030cd758da37"
"sha": "3b3ece81d1a0b36038e67e58d9ca620e4a3122e9"
},
"homepage": "https://hyperframes.heygen.com"
},
@@ -1429,7 +1429,7 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/knowledge-catalog.git",
"sha": "317e96fdd12aa61778b950192aff627efdc21099"
"sha": "fe4e94035824fa41f7d06426531bbed7bec2520c"
},
"homepage": "https://github.com/gemini-cli-extensions/knowledge-catalog"
},
@@ -1458,6 +1458,20 @@
}
}
},
{
"name": "langfuse-observability",
"description": "The Langfuse x Claude Code Observability Plugin",
"author": {
"name": "Langfuse"
},
"category": "monitoring",
"source": {
"source": "url",
"url": "https://github.com/langfuse/claude-observability-plugin.git",
"sha": "597af67d6c6b369f3e55db6cfa2ebe444f1af46c"
},
"homepage": "https://langfuse.com/integrations/other/claude-code"
},
{
"name": "laravel-boost",
"description": "Laravel development toolkit MCP server. Provides intelligent assistance for Laravel applications including Artisan commands, Eloquent queries, routing, migrations, and framework-specific code generation.",
@@ -1540,7 +1554,7 @@
"url": "https://github.com/pydantic/skills.git",
"path": "plugins/logfire",
"ref": "main",
"sha": "ddc7d00569458f3838c6cf489f5be6c59afaf8c1"
"sha": "1e7a4567d8375e8ef07ad078d7f38bc03ce5e944"
},
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/logfire"
},
@@ -1554,10 +1568,24 @@
"source": {
"source": "url",
"url": "https://github.com/gemini-cli-extensions/looker.git",
"sha": "e912c0342f1bfd436e9236aaef7cc732239c80f7"
"sha": "ef38964514c9b6634ac9a211d3987222bb36bf6e"
},
"homepage": "https://github.com/gemini-cli-extensions/looker"
},
{
"name": "lovable",
"description": "Build, iterate on, deploy, and manage Lovable apps from Claude Code. Bundles the official Lovable MCP server (remote, OAuth 2.1) and adds focused commands for the common build/iterate/database workflows, with credit- and publish-safety prompts.",
"author": {
"name": "Lovable"
},
"category": "development",
"source": {
"source": "url",
"url": "https://github.com/lovablelabs/mcp.git",
"sha": "9321737a737cf719db44c8124507f75e0bd0d270"
},
"homepage": "https://lovable.dev"
},
{
"name": "lua-lsp",
"description": "Lua language server for code intelligence",
@@ -1602,7 +1630,7 @@
"source": {
"source": "url",
"url": "https://github.com/lusha-oss/lusha-mcp-plugin.git",
"sha": "8fc71d5473ea40e01a92001787f0f3caaf5ca30e"
"sha": "affbc76b03c1a46c0dffc5b7a374cf7af17b26e8"
},
"homepage": "https://www.lusha.com"
},
@@ -1708,7 +1736,7 @@
"url": "https://github.com/awslabs/startups.git",
"path": "migrate/plugins/migration-to-aws",
"ref": "main",
"sha": "3c5d6a7deb24c3318be8b78ef75545539ab1bbcd"
"sha": "3eae13125da8cc923f010b19321137efd0e69a66"
},
"homepage": "https://github.com/awslabs/startups"
},
@@ -1759,7 +1787,7 @@
"url": "https://github.com/neondatabase/agent-skills.git",
"path": "plugins/neon-postgres",
"ref": "main",
"sha": "bd9ec7ff273ce54bdd3ebe581d5b0802a3479618"
"sha": "e09dafdc62a11fc8a20134afcb70dc2aab2feb88"
},
"homepage": "https://github.com/neondatabase/agent-skills/tree/main/plugins/neon-postgres"
},
@@ -1770,7 +1798,7 @@
"source": {
"source": "url",
"url": "https://github.com/netlify/context-and-tools.git",
"sha": "22025ef6c9dc9ef88d0c9c047980c10cacb178ee"
"sha": "ab80a6ed2b6c4933a3f964101c82b45cab847b5b"
},
"homepage": "https://github.com/netlify/context-and-tools"
},
@@ -1802,7 +1830,7 @@
"source": {
"source": "url",
"url": "https://github.com/nvsecurity/nightvision-skills.git",
"sha": "7d7a3f342bbf4d02b6e012279800cf91ff0c1c97"
"sha": "a510be06ca7fb2a0b1ffe38d4163f56dbc3b9e93"
},
"homepage": "https://github.com/nvsecurity/nightvision-skills"
},
@@ -1812,7 +1840,7 @@
"source": {
"source": "url",
"url": "https://github.com/Nimbleway/agent-skills.git",
"sha": "9736dfc757f5ed4f05da0480b202af09e93a27de"
"sha": "e72345e283f977d4f7bb4d6d415b5964a385bdf1"
},
"homepage": "https://docs.nimbleway.com/integrations/agent-skills/plugin-installation"
},
@@ -1839,7 +1867,7 @@
"url": "https://github.com/NVIDIA/skills.git",
"path": "plugins/nvidia-skills",
"ref": "main",
"sha": "fd1e6fd1971eb7113a4dd206a028246fa4b3d8b4"
"sha": "b0c4c9abca3e0b493d96a1574c9678daf086c4b5"
},
"homepage": "https://github.com/NVIDIA/skills"
},
@@ -1855,7 +1883,7 @@
"url": "https://github.com/oracle-samples/oracle-aidp-samples.git",
"path": "ai/claude-code-plugins/oracle-ai-data-platform-workbench-spark-connectors",
"ref": "main",
"sha": "00cedef34c99d642d969f87965736768de01cbd6"
"sha": "fd54df54076da5fa95fdb4a63398d2edb8724edb"
},
"homepage": "https://docs.oracle.com/en/cloud/paas/ai-data-platform/index.html"
},
@@ -1885,7 +1913,7 @@
"url": "https://github.com/growthxai/output.git",
"path": "coding_assistants/claude/plugins/outputai",
"ref": "main",
"sha": "65cd087132dce880362c52384b8237eb9202ceea"
"sha": "bd6bd4960b00f340c1e345620a8eb42d6c696e5f"
},
"homepage": "https://output.ai"
},
@@ -1995,7 +2023,7 @@
"source": {
"source": "url",
"url": "https://github.com/PostHog/ai-plugin.git",
"sha": "db4a86632293ca66eec9a6d278786ddb22c1787e"
"sha": "071b9b841a987aa93409d4db1499237a5120bc63"
},
"homepage": "https://posthog.com/docs/model-context-protocol"
},
@@ -2016,7 +2044,7 @@
"source": {
"source": "url",
"url": "https://github.com/Postman-Devrel/postman-claude-code-plugin.git",
"sha": "812678b3d1d1956815252d8f25e3ccc10d1bca8f"
"sha": "cb8e002ec9b94d84e1d247bcb3e854dec4de0ace"
},
"homepage": "https://learning.postman.com/docs/developer/postman-mcp-server/"
},
@@ -2050,7 +2078,7 @@
"url": "https://github.com/pydantic/skills.git",
"path": "plugins/ai",
"ref": "main",
"sha": "ddc7d00569458f3838c6cf489f5be6c59afaf8c1"
"sha": "1e7a4567d8375e8ef07ad078d7f38bc03ce5e944"
},
"homepage": "https://github.com/pydantic/skills/tree/main/plugins/ai"
},
@@ -2088,7 +2116,7 @@
"source": {
"source": "url",
"url": "https://github.com/qdrant/skills.git",
"sha": "82337ccd4be601e52871f101844d57b2adbac52b"
"sha": "80f1980d126039c762664a3fe660bbad2eb1ec11"
},
"homepage": "https://skills.qdrant.tech"
},
@@ -2113,7 +2141,7 @@
"source": {
"source": "url",
"url": "https://github.com/TheQtCompanyRnD/agent-skills.git",
"sha": "a7189a7bc17e616b725e7ce4e46a4f5ebd50d94f"
"sha": "2be55aaf050cf0e5d92d62966c473d2c5f6d780a"
},
"homepage": "https://www.qt.io/"
},
@@ -2127,7 +2155,7 @@
"source": {
"source": "url",
"url": "https://github.com/quarkusio/quarkus-agent-mcp.git",
"sha": "91c7986e41234827db2632ed07770301468c9dbc"
"sha": "bcab0174a0f3a076a265958d9017da15c1f87d01"
},
"homepage": "https://quarkus.io"
},
@@ -2140,7 +2168,7 @@
"url": "https://github.com/railwayapp/railway-skills.git",
"path": "plugins/railway",
"ref": "main",
"sha": "1df604ebd18f528ff16b84975125ecff944cc036"
"sha": "aa1e055b0f18d13787232b164cfb7416b553bd03"
},
"homepage": "https://docs.railway.com/ai/claude-code-plugin"
},
@@ -2163,7 +2191,7 @@
"source": "url",
"url": "https://github.com/RevenueCat/rc-claude-code-plugin.git",
"path": "revenuecat",
"sha": "473fd504bf13d25e76bf4a0267b42be3794f6266"
"sha": "e0470e8f5413decb0dc67156057b4b5cfc6df447"
},
"homepage": "https://www.revenuecat.com"
},
@@ -2215,7 +2243,7 @@
"source": "url",
"url": "https://github.com/RevenueCat/rc-claude-code-plugin.git",
"path": "revenuecat",
"sha": "473fd504bf13d25e76bf4a0267b42be3794f6266"
"sha": "e0470e8f5413decb0dc67156057b4b5cfc6df447"
},
"homepage": "https://www.revenuecat.com"
},
@@ -2300,7 +2328,7 @@
"url": "https://github.com/awslabs/agent-plugins.git",
"path": "plugins/sagemaker-ai",
"ref": "main",
"sha": "d8243e5f8f3933d656b3bdfe09cd658a5d9b9fac"
"sha": "7a17df718d26f07414b876e77a7480fa25089b08"
},
"homepage": "https://github.com/awslabs/agent-plugins"
},
@@ -2314,7 +2342,7 @@
"source": {
"source": "url",
"url": "https://github.com/sanity-io/agent-toolkit.git",
"sha": "66f0ec5d9167b3ccb8b3450e5ec34f3b523d4139"
"sha": "2d7b7c08a31a6e5b613e33a9edc76456e4d7c052"
},
"homepage": "https://www.sanity.io"
},
@@ -2348,7 +2376,7 @@
"url": "https://github.com/SAP/open-ux-tools.git",
"path": "packages/fiori-mcp-server",
"ref": "main",
"sha": "604f28952b720579ca9369978ba73493092fdf13"
"sha": "384fb88f5b4662ec0f7e1ac81689ebccaa9d7cb8"
},
"homepage": "https://github.com/SAP/open-ux-tools/tree/main/packages/fiori-mcp-server"
},
@@ -2380,14 +2408,14 @@
"url": "https://github.com/spotify/save-to-spotify.git",
"path": "plugin",
"ref": "main",
"sha": "cd4ea68111d96769b09c0b0d2199e692cf00a73c"
"sha": "a62408bcfb5e5be686e1fdcc361398493b8c4160"
},
"homepage": "https://github.com/spotify/save-to-spotify"
},
{
"name": "security-guidance",
"description": "Security review for Claude-generated code. Pattern-based warnings on edits, LLM-powered diff review on Stop, and an agentic commit reviewer that catches injection, XSS, SSRF, hardcoded secrets, and 25+ other vulnerability classes.",
"version": "2.0.3",
"version": "2.0.7",
"author": {
"name": "Anthropic",
"email": "support@anthropic.com"
@@ -2415,7 +2443,7 @@
"source": {
"source": "url",
"url": "https://github.com/getsentry/sentry-for-claude.git",
"sha": "87de81a1300acc03fffa2438877fa2dcf078e703"
"sha": "765cca4683e77271900fdf3521a555a04528baaf"
},
"homepage": "https://github.com/getsentry/sentry-for-claude/tree/main"
},
@@ -2431,7 +2459,7 @@
"url": "https://github.com/getsentry/cli.git",
"path": "plugins/sentry-cli",
"ref": "main",
"sha": "18111b95ac8819d58e4f0334d4b8ee8f72513d1e"
"sha": "4fda3dc169b914a8dec53c18d127ccbe67dbbf3e"
},
"homepage": "https://sentry.io"
},
@@ -2534,7 +2562,7 @@
"url": "https://github.com/Snowflake-Labs/snowflake-ai-kit.git",
"path": "plugins/cortex-code",
"ref": "main",
"sha": "7d2c7e7e0788e255019a64a8690aa5f85d073a2c"
"sha": "5a8f277f623394838ee76399261f4704c19eaba7"
},
"homepage": "https://docs.snowflake.com/en/user-guide/cortex-code"
},
@@ -2548,7 +2576,7 @@
"source": {
"source": "url",
"url": "https://github.com/SonarSource/sonarqube-agent-plugins.git",
"sha": "712b93281f4e67c16ed9b81dde090e1f73f8bfc8"
"sha": "25460dd53961fb4dba3c4b9026b29dfbbd3d87e0"
},
"homepage": "https://www.sonarsource.com"
},
@@ -2608,7 +2636,7 @@
"url": "https://github.com/stripe/ai.git",
"path": "providers/claude/plugin",
"ref": "main",
"sha": "b8f6adcb5d05f6ff01334411561ee8cb1ec014c6"
"sha": "7e7f72eb42e06f79e7bc75f86e9395f4c8232c00"
},
"homepage": "https://github.com/stripe/ai/tree/main/providers/claude/plugin"
},
@@ -2620,7 +2648,7 @@
"source": "url",
"url": "https://github.com/sumup/sumup-skills.git",
"path": "providers/claude/plugin",
"sha": "5b9b2d72c63fefd9038db0a9c571d3d64ff6353c"
"sha": "b69ff6f5afcd5934af70529e529c0dd8abe46cbe"
},
"homepage": "https://www.sumup.com/"
},
@@ -2676,7 +2704,7 @@
"source": {
"source": "url",
"url": "https://github.com/JetBrains/teamcity-cli.git",
"sha": "67e21f0be908daa7ca1e04c8016d1bc81750baee"
"sha": "4865b1b75e77889355393a46dc56a0363ce3330d"
},
"homepage": "https://www.jetbrains.com/teamcity/"
},
@@ -2707,7 +2735,7 @@
"source": {
"source": "url",
"url": "https://github.com/togethercomputer/skills.git",
"sha": "8aa08ca126a50d5e76f6d378f47386cee4267984"
"sha": "86bdd6627675eac3f2055f028e4acdd4d1b03fb0"
},
"homepage": "https://www.together.ai"
},
@@ -2769,7 +2797,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5",
"ref": "main",
"sha": "9b3d7d80356f687725f9584988e4038dbead0d53"
"sha": "80f2d93287054f9d30dd990e842e15bcfca581c9"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -2787,7 +2815,7 @@
"url": "https://github.com/UI5/plugins-coding-agents.git",
"path": "plugins/ui5-typescript-conversion",
"ref": "main",
"sha": "9b3d7d80356f687725f9584988e4038dbead0d53"
"sha": "80f2d93287054f9d30dd990e842e15bcfca581c9"
},
"homepage": "https://github.com/UI5/plugins-coding-agents"
},
@@ -2803,7 +2831,7 @@
"url": "https://github.com/val-town/plugins.git",
"path": "plugin",
"ref": "main",
"sha": "02631f998eda9b88d73d699703b062db059d506b"
"sha": "1f7928397349f2ccb228302d8b062c7f20745871"
},
"homepage": "https://val.town"
},
@@ -2842,7 +2870,7 @@
"source": {
"source": "url",
"url": "https://github.com/vercel/vercel-plugin.git",
"sha": "6e51924cb249e2941de005d59f1ac6f768477b98"
"sha": "b73bc95636c4f4d749ea242b669e0f78f5e72751"
},
"homepage": "https://github.com/vercel/vercel-plugin"
},
@@ -2856,7 +2884,7 @@
"source": {
"source": "url",
"url": "https://github.com/explorium-ai/vibeprospecting-plugin.git",
"sha": "aa5903f52d79e7f2a5f9c324c6fff7d5a5d92631"
"sha": "14cb2971a99661382f5a56a9caa7c2d526c4e444"
},
"homepage": "https://www.vibeprospecting.ai/product/claude-plugin"
},
@@ -2881,7 +2909,7 @@
"source": {
"source": "url",
"url": "https://github.com/wix/skills.git",
"sha": "9666bc8d4856d9028e815610c23ab4f48d8ddd3b"
"sha": "561315d22a49544d6518d3a753973d3a95dfafcc"
},
"homepage": "https://dev.wix.com/docs/wix-cli/guides/development/about-wix-skills"
},
@@ -2934,7 +2962,7 @@
"url": "https://github.com/zapier/zapier-mcp.git",
"path": "plugins/zapier",
"ref": "main",
"sha": "770167c572deaf74c588b45d88003ddf2145d608"
"sha": "ea8ed6b4de66e9bb46c12b3a38da8286e3770ad9"
},
"homepage": "https://github.com/zapier/zapier-mcp/tree/main/plugins/zapier"
},
@@ -2988,7 +3016,7 @@
"source": {
"source": "url",
"url": "https://github.com/zscaler/zscaler-mcp-server.git",
"sha": "f84ce4f0ed48047614a4202ac311cbdf00ea9a10"
"sha": "a2162c384e1ffb68b3bf14783ea9a1a762c85ff5"
},
"homepage": "https://github.com/zscaler/zscaler-mcp-server"
}

View File

@@ -1,6 +1,6 @@
{
"name": "security-guidance",
"version": "2.0.3",
"version": "2.0.7",
"description": "Security review for Claude-generated code. Pattern-based warnings on edits, LLM-powered diff review on Stop, and an agentic commit reviewer that catches injection, XSS, SSRF, hardcoded secrets, and 25+ other vulnerability classes.",
"author": {
"name": "David Dworken",

View File

@@ -40,6 +40,26 @@ BUILD_FAILED = 3 # venv create or pip install raised/timed out
SKIP_SENTINEL = 5 # another SessionStart is currently building
HOOK_PY_INCOMPATIBLE = 6 # hook interpreter is <3.10 — SDK syntax can't load
# here no matter how the venv was built. See #2071.
# --target fallback: when `python -m venv` can't bootstrap pip (ensurepip
# missing — Debian python3-venv not installed, or a python.org/pyenv build
# without ensurepip), fall back to `pip install --target <dir>` which needs
# only the system pip, not venv/ensurepip. Telemetry (v2.0.4 sdk_has_pip
# probe) confirmed ~95% of venv_ensurepip_fail users HAVE pip, so this
# recovers the agentic reviewer for them instead of degrading to pattern +
# single-shot review. See #2154 follow-up.
BUILT_TARGET = 7 # venv ensurepip failed → SDK pip-installed via --target
NOOP_TARGET = 8 # --target libs already present and importable
SKIP_COOLDOWN = 9 # a recent build was signal-killed (memory pressure) — not
# retrying this session to avoid burning the user's
# memory/CPU on a build that keeps getting killed. CCR
# repro confirmed the dominant Linux BUILD_FAILED is a
# SIGKILL/SIGSEGV of the memory-heavy venv+pip subprocess
# (rc<0, empty streams). See #2154 follow-up.
# How long to skip rebuilds after a signal kill. Retries at most once per
# window so a machine whose memory frees up still recovers (just not every
# session). Keyed by marker mtime.
SIGNAL_KILL_COOLDOWN_SEC = 24 * 3600
# Phase + err-kind integer encoding for sdk_bootstrap_phase / sdk_bootstrap_err.
@@ -63,6 +83,7 @@ SDK_BOOTSTRAP_PHASE_CODES = {
"venv": 2, # python -m venv --clear
"pip": 3, # pip install
"main": 4, # uncaught exception above main()
"pip_target": 5, # `pip install --target` fallback (venv ensurepip failed)
}
SDK_BOOTSTRAP_ERR_CODES = {
"pip_no_match": 1,
@@ -75,6 +96,11 @@ SDK_BOOTSTRAP_ERR_CODES = {
"proxy_auth": 8,
"stderr_timeout": 9, # pip stderr containing "timeout"/"timed out"
"subprocess_timeout": 10, # subprocess.TimeoutExpired (>120s)
"signal_killed": 16, # venv/pip subprocess killed by a signal
# (rc<0 or 128+sig) — OOM-killer SIGKILL /
# RLIMIT_AS SIGSEGV, empty streams. The
# actual rc rides in sdk_bootstrap_rc. This
# is the dominant Linux failure (CCR repro).
# Venv-stage specific categories added after PR #2112 telemetry surfaced
# 2,406 phase=2/err=99 sessions in the first 3h of v2.0.1 — venv phase
# failing in ways the original pip-flavored patterns didn't catch. These
@@ -102,6 +128,41 @@ SDK_BOOTSTRAP_ERR_CODES = {
"_uncategorized": 99,
}
# Exception-type encoding for the "exc:<TypeName>" err_kinds (the generic
# `except Exception` path — venv/pip raised a Python exception rather than
# a CalledProcessError with categorizable stderr).
#
# #2154 telemetry surfaced that the dominant remaining venv BUILD_FAILED
# bucket (phase=venv, err=99) is ~99% `exc:` with stderr_sig=NULL — i.e.
# exceptions, not stderr-bearing subprocess failures — so the stderr_sig
# hash couldn't distinguish them. This maps the exception TYPE to a stable
# code so BQ can tell FileNotFoundError (python/venv binary missing) from
# PermissionError (read-only home) from a bare OSError, etc.
#
# All the FileNotFoundError/PermissionError/etc. entries are OSError
# subclasses, so they ALSO carry an errno (see _encode_errno) — the type
# code gives the Python class, errno gives the OS-level cause. APPEND-ONLY.
SDK_BOOTSTRAP_EXC_CODES = {
"FileNotFoundError": 1, # interpreter/venv path component missing
"PermissionError": 2, # read-only home, sandboxed FS
"NotADirectoryError": 3,
"IsADirectoryError": 4,
"FileExistsError": 5, # (sentinel race is handled separately; this
# is FileExistsError from elsewhere in venv)
"OSError": 6, # bare OSError — errno carries the real cause
"BlockingIOError": 7,
"BrokenPipeError": 8,
"ConnectionError": 9,
"TimeoutError": 10, # distinct from subprocess.TimeoutExpired
"InterruptedError": 11,
"MemoryError": 12,
"UnicodeDecodeError": 13,
"ValueError": 14,
"RuntimeError": 15,
# 1698 reserved; APPEND-ONLY.
"_other_exc": 99, # an exception type not in this map
}
def _encode_phase(s):
"""Map err_phase string to its telemetry integer code, or 0 if unset.
@@ -120,6 +181,10 @@ def _encode_err_kind(s):
return 0
if s in SDK_BOOTSTRAP_ERR_CODES:
return SDK_BOOTSTRAP_ERR_CODES[s]
# "signal_killed:<rc>" carries the returncode in sdk_bootstrap_rc; the
# category maps to the signal_killed code.
if s.startswith("signal_killed"):
return SDK_BOOTSTRAP_ERR_CODES["signal_killed"]
# Prefix matches for the catch-all categories
if s.startswith("exc:") or s.startswith("other:") or s == "other":
return SDK_BOOTSTRAP_ERR_CODES["_uncategorized"]
@@ -127,6 +192,52 @@ def _encode_err_kind(s):
return SDK_BOOTSTRAP_ERR_CODES["_uncategorized"]
def _encode_rc(err_kind):
"""Extract the subprocess returncode embedded in a 'signal_killed:<rc>'
err_kind (e.g. -11 SIGSEGV / -9 SIGKILL / 139 shell-wrapped). Emitted as
sdk_bootstrap_rc so BQ can tell OOM-killer (-9) from RLIMIT_AS (-11).
Returns 0 when absent/non-numeric."""
if not err_kind or not err_kind.startswith("signal_killed:"):
return 0
try:
return int(err_kind.split(":", 1)[1])
except (ValueError, IndexError):
return 0
def _is_signal_kill(returncode) -> bool:
"""A subprocess killed by a signal rather than a clean non-zero exit.
subprocess.run (no shell, as used here) reports negative rc = -signum
(SIGKILL→-9 OOM-killer, SIGSEGV→-11 RLIMIT_AS, SIGABRT→-6). The 128+sig
forms (134/137/139) are defensive for any shell-wrapped path. Paired with
empty stdout+stderr this is the memory-kill signature (CCR repro)."""
if returncode is None:
return False
return returncode < 0 or returncode in (134, 137, 139)
def _cooldown_remaining(state_dir) -> float:
"""Seconds left in the signal-kill cooldown (0 if none/expired). Reads the
marker's mtime; a missing/unreadable marker means not in cooldown."""
marker = Path(state_dir) / "agent-sdk-venv.cooldown"
try:
age = time.time() - marker.stat().st_mtime
except OSError:
return 0.0
return max(0.0, SIGNAL_KILL_COOLDOWN_SEC - age)
def _write_cooldown(state_dir) -> None:
"""Start/refresh the signal-kill cooldown so we stop re-attempting a build
that keeps getting killed every session. Best-effort."""
try:
Path(state_dir).mkdir(parents=True, exist_ok=True)
(Path(state_dir) / "agent-sdk-venv.cooldown").write_text(
time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()))
except OSError:
pass
def _encode_stderr_sig(err_kind):
"""Bounded integer hash of the stderr tail captured in "other:<tail>"
err_kinds. Lets us distinguish patterns INSIDE the _uncategorized
@@ -158,6 +269,190 @@ def _encode_stderr_sig(err_kind):
return int.from_bytes(h[:2], "big") % 1000
def _encode_exc_kind(err_kind):
"""Map an "exc:<TypeName>[:errno]" err_kind to its exception-type code
(SDK_BOOTSTRAP_EXC_CODES). Returns 0 for non-exc err_kinds (so the
sdk_bootstrap_exc field auto-omits on stderr/categorized failures).
Unmapped exception types → 99 (_other_exc)."""
if not err_kind or not err_kind.startswith("exc:"):
return 0
# "exc:OSError:28" → "OSError"; "exc:RuntimeError" → "RuntimeError"
name = err_kind[len("exc:"):].split(":", 1)[0].strip()
if not name:
return 0
return SDK_BOOTSTRAP_EXC_CODES.get(name, SDK_BOOTSTRAP_EXC_CODES["_other_exc"])
def _encode_errno(err_kind):
"""Extract the OS errno from an "exc:<TypeName>:<errno>" err_kind.
OSError-family exceptions embed their errno (ENOENT=2, EACCES=13,
ENOSPC=28, …) — the OS-level cause is far more actionable than the
Python class alone. Returns 0 when absent/non-numeric (field omitted)."""
if not err_kind or not err_kind.startswith("exc:"):
return 0
parts = err_kind.split(":")
if len(parts) < 3:
return 0
try:
return int(parts[2])
except (ValueError, IndexError):
return 0
def _probe_has_pip() -> bool:
"""True iff the current interpreter can run pip (`-m pip --version`).
Probed only on the venv_ensurepip_fail path (see __main__), NOT on the
happy path — it's an extra subprocess we only want when diagnosing a
failure. The result decides whether a `pip install --target` fallback
(Option A) is even viable for this machine: ensurepip/venv missing but
pip present → --target would work; pip also missing → it wouldn't, and
the user needs a system package (python3-venv / a complete Python)."""
try:
r = subprocess.run(
[sys.executable, "-m", "pip", "--version"],
capture_output=True, timeout=10,
)
return r.returncode == 0
except Exception:
return False
def _probe_alt_python() -> int:
"""When the hook interpreter is <3.10 (HOOK_PY_INCOMPATIBLE), look for a
3.10+ interpreter at well-known install locations that aren't necessarily
on the hook's PATH — Homebrew (/opt/homebrew, /usr/local), python.org
framework builds, and the `py`/distro layouts. Returns the HIGHEST version
found encoded as major*100+minor (e.g. 312), or 0 if none.
Purpose (telemetry only, for now): size how many of the macOS Python-3.9
cohort actually HAVE a newer interpreter that sg-python.sh's PATH probe
missed — i.e. how many are RECOVERABLE by an explicit-path search vs.
genuinely 3.9-only. Emitted as sdk_alt_py. Existence-checks the versioned
binaries (cheap); a later explicit-path search would version-verify before
exec'ing. Probed only on the incompatible path, so healthy sessions never
pay for it."""
candidates = []
for minor in (14, 13, 12, 11, 10):
candidates += [
f"/opt/homebrew/bin/python3.{minor}", # Apple-Silicon Homebrew
f"/usr/local/bin/python3.{minor}", # Intel Homebrew / python.org shim
f"/Library/Frameworks/Python.framework/Versions/3.{minor}/bin/python3", # python.org
f"/usr/bin/python3.{minor}", # distro-managed (Linux)
]
best = 0
for path in candidates:
try:
if os.access(path, os.X_OK):
# path name encodes the minor; parse it back to a code
base = os.path.basename(path)
minor = None
if base.startswith("python3."):
minor = int(base.split(".")[1])
elif "/Versions/3." in path:
minor = int(path.split("/Versions/3.")[1].split("/")[0])
if minor is not None:
best = max(best, 300 + minor)
except (OSError, ValueError, IndexError):
continue
return best
def _pip_err_from_stderr(stderr_b):
"""Categorize a pip-install stderr into a known err_kind (the pip subset
of SDK_BOOTSTRAP_ERR_CODES). Used by the --target fallback; mirrors the
pip branches of main()'s inline categorizer. Kept as a sibling rather
than extracting main()'s chain (which also has venv-phase branches) to
avoid disturbing the working venv categorization."""
if isinstance(stderr_b, bytes):
s = stderr_b.decode("utf-8", errors="replace")
else:
s = str(stderr_b or "")
low = s.lower()
if "no matching distribution" in low or "could not find a version" in low:
return "pip_no_match"
if ("name or service not known" in low or "name resolution" in low
or "nodename nor servname" in low or "temporary failure in name" in low):
return "dns_fail"
if "connection refused" in low or "connection reset" in low:
return "conn_refused"
if "ssl" in low and ("verify" in low or "certificate" in low):
return "ssl_verify"
if "permission denied" in low or "read-only file system" in low:
return "perm_denied"
if "no module named pip" in low or "no module named ensurepip" in low:
return "no_pip"
if "no space left" in low or "disk quota" in low:
return "disk_full"
if "proxy" in low and ("authent" in low or "tunnel" in low or "407" in low):
return "proxy_auth"
if "timeout" in low or "timed out" in low:
return "stderr_timeout"
tail = next((ln.strip() for ln in reversed(s.splitlines()) if ln.strip()), "")[:60]
return f"other:{tail}" if tail else "other"
def _target_dir(state_dir) -> Path:
return Path(state_dir) / "agent-sdk-libs"
def _target_sdk_importable(state_dir) -> bool:
"""True iff the --target libs dir has an importable claude_agent_sdk,
probed with THIS interpreter (the one llm.py will import it from) and the
target dir prepended to sys.path. Cheap dir-check first to avoid a
subprocess on the common no-target path."""
target = _target_dir(state_dir)
if not (target / "claude_agent_sdk").is_dir():
return False
try:
r = subprocess.run(
[sys.executable, "-c",
"import sys; sys.path.insert(0, sys.argv[1]); import claude_agent_sdk",
str(target)],
capture_output=True, timeout=10,
)
return r.returncode == 0
except Exception:
return False
def _build_via_target(state_dir) -> tuple[int, str, str]:
"""Fallback install when `python -m venv` can't bootstrap pip (ensurepip
missing — Debian python3-venv absent, or a python.org/pyenv build without
ensurepip). `pip install --target <dir>` needs only the system pip, not
venv/ensurepip. v2.0.4 telemetry (sdk_has_pip) confirmed ~95% of
venv_ensurepip_fail users have pip. The consumer (llm.py) adds this flat
dir to sys.path. Returns (outcome, err_phase, err_kind).
--upgrade so a stale/partial target dir from a prior failed attempt
doesn't make pip refuse; --prefer-binary mirrors the venv path's wheel
preference (ARM64 Windows cryptography)."""
target = _target_dir(state_dir)
try:
subprocess.run(
[sys.executable, "-m", "pip", "install",
"--target", str(target), "--upgrade",
"--disable-pip-version-check", "--prefer-binary", "--no-cache-dir",
"claude-agent-sdk"],
capture_output=True, timeout=120, check=True,
)
return BUILT_TARGET, "", ""
except subprocess.CalledProcessError as e:
# A --target pip install is also memory-heavy, so it too can be
# signal-killed under memory pressure — cool down, same as the venv path.
if _is_signal_kill(e.returncode):
_write_cooldown(state_dir)
return BUILD_FAILED, "pip_target", f"signal_killed:{e.returncode}"
return BUILD_FAILED, "pip_target", _pip_err_from_stderr(e.stderr)
except subprocess.TimeoutExpired:
return BUILD_FAILED, "pip_target", "subprocess_timeout"
except Exception as e:
errno = getattr(e, "errno", None)
if isinstance(errno, int):
return BUILD_FAILED, "pip_target", f"exc:{type(e).__name__}:{errno}"
return BUILD_FAILED, "pip_target", f"exc:{type(e).__name__}"
def _sdk_on_syspath() -> bool:
# find_spec is ~10ms; actually importing the SDK pulls in
# transitive deps and costs ~800ms — too heavy for a
@@ -246,6 +541,20 @@ def main() -> tuple[int, str, str]:
except Exception:
pass # broken venv; rebuild below
# If a prior run installed the SDK via the --target fallback (ensurepip
# path), reuse it. Only reached when there's no working venv, so healthy
# NOOP_VENV users never pay for this probe.
if _target_sdk_importable(state_dir):
return NOOP_TARGET, "", ""
# If a recent build was signal-killed (memory pressure), don't re-attempt
# this session — the memory-heavy venv+pip just gets killed again, burning
# the user's resources. Retry at most once per cooldown window. Reached
# only after all no-op probes, so a machine that later gets the SDK via
# system/venv/target still short-circuits above.
if _cooldown_remaining(state_dir) > 0:
return SKIP_COOLDOWN, "", ""
err_phase = ""
err_kind = ""
we_own_sentinel = False
@@ -278,14 +587,25 @@ def main() -> tuple[int, str, str]:
# --prefer-binary tells pip to pick it. Cross-platform safe: no-op
# on platforms where the latest version already has a wheel.
err_phase = "pip"
# --no-cache-dir trims pip's peak memory (no cache read/write/unpack
# buffering) — helps marginal low-memory machines get under the OOM
# threshold that kills the dominant Linux builds (CCR repro).
subprocess.run(
[str(venv_py), "-m", "pip", "install", "--quiet",
"--disable-pip-version-check", "--prefer-binary",
"--disable-pip-version-check", "--prefer-binary", "--no-cache-dir",
"claude-agent-sdk"],
capture_output=True, timeout=120, check=True,
)
return BUILT, "", ""
except subprocess.CalledProcessError as e:
# Signal kill (OOM-killer SIGKILL / RLIMIT_AS SIGSEGV) — rc<0, empty
# streams. The dominant Linux failure. Record the rc, start a cooldown
# so we stop retry-storming a build that keeps getting killed, and
# skip the stderr categorization (there's nothing in stderr). err_phase
# says whether it died creating the venv or installing via pip.
if _is_signal_kill(e.returncode):
_write_cooldown(state_dir)
return BUILD_FAILED, err_phase, f"signal_killed:{e.returncode}"
# Capture a stderr fingerprint so telemetry can split BUILD_FAILED by
# root cause (no-network, package-not-found, dns-fail, etc.).
# Categorize first, then keep a short raw tail for the long tail of
@@ -360,10 +680,27 @@ def main() -> tuple[int, str, str]:
"",
)[:60]
err_kind = f"other:{tail}" if tail else "other"
# venv couldn't bootstrap pip (ensurepip missing) but pip itself may
# work — fall back to a flat `pip install --target`. Only this one
# category falls through; every other venv/pip failure is terminal.
# The finally block unlinks our sentinel first (so the target build
# isn't blocked by it); _build_via_target does the target install.
if err_kind == "venv_ensurepip_fail":
if we_own_sentinel:
sentinel.unlink(missing_ok=True)
we_own_sentinel = False
return _build_via_target(state_dir)
return BUILD_FAILED, err_phase, err_kind
except subprocess.TimeoutExpired:
return BUILD_FAILED, err_phase, "subprocess_timeout"
except Exception as e:
# Embed errno for OSError-family exceptions ("exc:OSError:28") so
# telemetry can decode the OS-level cause (ENOENT/EACCES/ENOSPC/…),
# not just the Python class. #2154 follow-up: this is the dominant
# remaining venv BUILD_FAILED bucket. See _encode_exc_kind/_encode_errno.
errno = getattr(e, "errno", None)
if isinstance(errno, int):
return BUILD_FAILED, err_phase, f"exc:{type(e).__name__}:{errno}"
return BUILD_FAILED, err_phase, f"exc:{type(e).__name__}"
finally:
# Only remove the sentinel if THIS process created it. The
@@ -467,6 +804,44 @@ if __name__ == "__main__":
sig = _encode_stderr_sig(err_kind)
if sig:
metrics["sdk_bootstrap_stderr_sig"] = sig
# Exception-type + errno for the "exc:" bucket (the dominant
# remaining venv BUILD_FAILED mode per #2154 telemetry). Both
# auto-omit (0) on stderr/categorized failures.
exc = _encode_exc_kind(err_kind)
if exc:
metrics["sdk_bootstrap_exc"] = exc
exc_errno = _encode_errno(err_kind)
if exc_errno:
metrics["sdk_bootstrap_errno"] = exc_errno
# Subprocess returncode for signal kills (-9 OOM-killer / -11
# RLIMIT_AS / -6 abort). Confirms in prod which signal dominates the
# Linux memory-kill bucket. 0 (omitted) for non-signal failures.
rc = _encode_rc(err_kind)
if rc:
metrics["sdk_bootstrap_rc"] = rc
# venv_ensurepip_fail (code 11) is the top categorizable venv
# failure, and telemetry shows it's NOT just Debian — macOS has the
# most distinct affected users. Probe whether this interpreter has
# pip so we know if a `pip install --target` fallback (Option A)
# would actually help, vs the user needing a system package. Probed
# only here (not on the happy path) to avoid an extra subprocess
# per healthy session.
if _encode_err_kind(err_kind) == 11:
metrics["sdk_has_pip"] = _probe_has_pip()
# When the hook interpreter is <3.10 (HOOK_PY_INCOMPATIBLE), probe for a
# 3.10+ interpreter at known non-PATH locations. Non-zero sdk_alt_py =
# this user is RECOVERABLE by an explicit-path search in sg-python.sh; 0 =
# genuinely 3.9-only (needs a user install). Sizes the macOS Py-3.9 cohort
# (~13.6% of macOS sessions) before we build the search. Incompatible path
# only — healthy sessions never run it.
if outcome == HOOK_PY_INCOMPATIBLE:
metrics["sdk_alt_py"] = _probe_alt_python()
# Interpreter version (major*100 + minor, e.g. 309 / 312), emitted on
# every bootstrap. Disambiguates the macOS cohort (Apple 3.9 vs a 3.10+
# with broken ensurepip) for both venv_ensurepip_fail AND
# HOOK_PY_INCOMPATIBLE (whose "py_3.9" err_kind otherwise collapses to
# err=99, losing the version). Cheap — no subprocess, just sys.version_info.
metrics["sdk_hook_py"] = sys.version_info[0] * 100 + sys.version_info[1]
pv = _plugin_version_int()
if pv:
metrics["pv"] = pv

View File

@@ -55,6 +55,12 @@ def _inject_agent_sdk_venv_into_syspath(state_dir):
candidates = (
glob.glob(os.path.join(venv_root, "lib", "python*", "site-packages"))
+ glob.glob(os.path.join(venv_root, "Lib", "site-packages"))
# `pip install --target` fallback (ensure_agent_sdk BUILT_TARGET, used
# when venv can't bootstrap pip): a FLAT layout — packages sit directly
# in agent-sdk-libs/, not under a site-packages subdir. See #2154
# follow-up. The pywin32 .pth bootstrap below applies here too (target
# installs don't process .pth at runtime, same as a manual venv insert).
+ [os.path.join(state_dir, "agent-sdk-libs")]
)
added = False
for sp in candidates: