Conversation
|
✨ Fix all issues with BitsAI or with Cursor
|
Codecov Report❌ Patch coverage is ❌ Your patch status has failed because the patch coverage (85.09%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #3581 +/- ##
==========================================
+ Coverage 62.21% 68.60% +6.38%
==========================================
Files 141 165 +24
Lines 13388 18666 +5278
Branches 1753 1772 +19
==========================================
+ Hits 8330 12806 +4476
- Misses 4260 5056 +796
- Partials 798 804 +6
... and 3 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
f4914c3 to
2fc2654
Compare
bbc593e to
192a4a1
Compare
Benchmarks [ appsec ]Benchmark execution time: 2026-02-23 12:07:07 Comparing candidate commit 09fce31 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics. |
Benchmarks [ tracer ]Benchmark execution time: 2026-02-23 12:45:19 Comparing candidate commit 09fce31 in PR branch Found 4 performance improvements and 0 performance regressions! Performance is the same for 189 metrics, 1 unstable metrics. scenario:ComposerTelemetryBench/benchTelemetryParsing
scenario:MessagePackSerializationBench/benchMessagePackSerialization
scenario:MessagePackSerializationBench/benchMessagePackSerialization-opcache
scenario:TraceSerializationBench/benchSerializeTrace
|
fb4432d to
8d1029e
Compare
|
This PR is so large that github will only permit me to review it one file at a time. I didn't even know that was a thing! You're going to need to break it down into a series of smaller PRs, probably. |
a218cd6 to
332fd93
Compare
|
@morrisonlevi I've had success for very big PRs with the PHPStorm/CLion github integrations in the past. Doesn't matter for small PRs, but can definitely recommend it for extra-large PRs :-) |
fc9100c to
718f800
Compare
d68a588 to
5d247e2
Compare
Changes the request_exec message format from [rasp_rule, data] to [data, options_map]. The options map supports: - rasp_rule: string (same as before) - subctx_id: optional string (accepted but ignored) - subctx_last_call: optional bool (accepted but ignored) This prepares the protocol for curl/subcontext support while maintaining backwards compatibility. The subcontext fields are accepted by the protocol but not implemented in the business logic. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Upgrade testcontainers - Add some assertions - Better debug output for metrics
5d247e2 to
57bcc57
Compare
Adds helper_runtime identification to distinguish Rust helper from C++ helper in telemetry and tracing:
Protocol changes:
- Both helpers send runtime type ("rust" or "cpp") in client_init response as 6th field
- Extension extracts and stores helper runtime in thread-local storage
Span metadata:
- Tag `_dd.appsec.helper_runtime:rust` added to ALL spans when using Rust helper
- Tag added only for Rust helper; C++ helper does not add this span tag
- Tags added via dd_tags_add_tags() in tags.c
Telemetry:
- Extension adds `helper_runtime:rust` tag to appsec telemetry metrics (only for Rust)
- Rust helper adds `helper_runtime:rust` tag to all telemetry (metrics and logs) downstream in submitters
Tests:
- Updated protocol tests to expect 6th field in client_init response
- Updated integration tests to conditionally check for helper_runtime tag
- Updated mock helper to send correct protocol format
- Removed test cases from request_exec.phpt that pass non-array values to request_exec()
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
62aaf55 to
0d242c6
Compare
d4571c9 to
dd440cb
Compare
Update test expectations for the new client_init response format: - The helper_runtime field is now a dedicated optional field in the response structure, not part of the meta map - BrokerTest.SendClientInit: pack 6 elements including helper_runtime - ClientTest.ClientInit/ClientInitInvalidRules: check helper_runtime field instead of meta["helper_runtime"], adjust meta.size() to 2 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add CI job to build the Rust appsec helper and include it alongside the C++ helper in the final packages. This enables distribution of both helper implementations. Changes: - Add build-appsec-helper-rust.sh script for building the Rust helper - Add "compile appsec helper rust" CI job in generate-package.php - Update generate-final-artifact.sh to include libddappsec-helper-rust.so - Update generate-ssi-package.sh to include libddappsec-helper-rust.so
Add a new configuration setting DD_APPSEC_HELPER_RUST_REDIRECTION that enables automatic redirection to the Rust helper if available. When enabled (and DD_APPSEC_HELPER_RUST_REDIRECTION=true), the extension will look for libddappsec-helper-rust.so in the same directory as the configured DD_APPSEC_HELPER_PATH. If found, the Rust helper is used instead of the C++ helper. The setting defaults to: - true on PHP 8.5+ - false on earlier PHP versions This allows gradual migration to the Rust helper while maintaining backward compatibility.
…helper-rust-redirection
Description
Passing integration and system-tests.
Further integration into sidecar and protocol changes pending.
Reviewer checklist