feat: add ICA metering exporter as first pure-Python plugin - #170
Conversation
…CI selection, and release info Signed-off-by: Jonathan Springer <jps@s390x.com>
…ugin Signed-off-by: Jonathan Springer <jps@s390x.com>
…ts shim in integration conftest Signed-off-by: Jonathan Springer <jps@s390x.com>
Signed-off-by: Jonathan Springer <jps@s390x.com>
…re routing Keep ci-install-built-wheel.yaml unchanged because it remains the Rust wheel-helper workflow. Signed-off-by: Jonathan Springer <jps@s390x.com>
…rkflows Signed-off-by: Jonathan Springer <jps@s390x.com>
Signed-off-by: Jonathan Springer <jps@s390x.com>
Signed-off-by: Jonathan Springer <jps@s390x.com>
lucarlig
left a comment
There was a problem hiding this comment.
LGTM
A few non-blocking follow-ups:
- Parse the gateway’s actual
ToolResultshape (_metaandcontent) so token counts and error messages aren’t dropped. - Reject duplicate plugin slugs across the Rust and Python roots.
- Add
capabilities: [read_headers]to the README configuration example.
Signed-off-by: Jonathan Springer <jps@s390x.com>
Signed-off-by: Jonathan Springer <jps@s390x.com>
Signed-off-by: Jonathan Springer <jps@s390x.com>
|
Thanks for the review, Luca. I've pushed three DCO-signed commits addressing each of the three summary items (there were no resolvable inline threads to mark):
Verification:
Branch |
…hon plugins After rebasing onto main (which added ica_metering_exporter as the first pure-Python plugin via PR #170), the combined repository now has 9 plugins: 8 Rust (including output_length_guard) + 1 Python (ica_metering_exporter). Update three assertions that were left with stale values after the rebase: - plugin_count field test: 8 -> 9 - rust_plugin_count split field: "7" -> "8" - test_ci_selection_reports_language_splits_and_counts: comment + assertion 7 -> 8 Signed-off-by: prakhar-singh1928 <prakhar.singh1928@ibm.com>
Summary
Ports the ICA Metering Exporter from IBM/mcp-context-forge PR #5696 at head commit
be937dd5743d0abbdc0ce8886b6be93f95c9d3dcinto cpex-plugins as the repository's first pure-Python plugin.Notable deviations from the source PR
request_headers_varaccess with the CPEX boundaryextensions.http.headers.headersNameError in the persona-header loop. This correction is worth feeding back upstream to IBM/mcp-context-forge.Design decisions
Test evidence
The complete local validation sequence is recorded in
.omo/evidence/task-*.txtsummaries (local execution evidence, intentionally not committed):detect-secretsscan/audit gates: green.Gateway capability and registration
Gateway registration must grant the plugin the
read_headerscapability for caller attribution throughextensions.http.headers; without it, the gateway strips inbound headers.Gateway-side registration in
mcp-context-forge/plugins/config.yamlis intentionally out of scope for this cpex-plugins pull request.