feat: RUST with CMF and extensions.#44
Merged
Merged
Conversation
added 8 commits
April 14, 2026 17:01
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Teryl Taylor <terylt@ibm.com>
Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com>
araujof
added a commit
that referenced
this pull request
May 7, 2026
* feat: initial revision rust core. Signed-off-by: Teryl Taylor <terylt@ibm.com> * fix: addressed comments in PR. Updated PluginContext to match spec. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added yaml and routing rule support. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added example code to show how to load manager and plugins. Signed-off-by: Teryl Taylor <terylt@ibm.com> * fixes: updated plugin errors, configs to more match python. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: RUST CMF initial revision. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added invoke named support, added constants, fixed reviewed code. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added owned extensions and did some refactoring. Signed-off-by: Teryl Taylor <terylt@ibm.com> --------- Signed-off-by: Teryl Taylor <terylt@ibm.com> Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com> Co-authored-by: Teryl Taylor <terylt@ibm.com> Co-authored-by: Frederico Araujo <frederico.araujo@ibm.com>
monshri
pushed a commit
to monshri/contextforge-plugins-framework
that referenced
this pull request
May 27, 2026
* feat: initial revision rust core. Signed-off-by: Teryl Taylor <terylt@ibm.com> * fix: addressed comments in PR. Updated PluginContext to match spec. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added yaml and routing rule support. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added example code to show how to load manager and plugins. Signed-off-by: Teryl Taylor <terylt@ibm.com> * fixes: updated plugin errors, configs to more match python. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: RUST CMF initial revision. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added invoke named support, added constants, fixed reviewed code. Signed-off-by: Teryl Taylor <terylt@ibm.com> * feat: added owned extensions and did some refactoring. Signed-off-by: Teryl Taylor <terylt@ibm.com> --------- Signed-off-by: Teryl Taylor <terylt@ibm.com> Signed-off-by: Frederico Araujo <frederico.araujo@ibm.com> Co-authored-by: Teryl Taylor <terylt@ibm.com> Co-authored-by: Frederico Araujo <frederico.araujo@ibm.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds CMF (ContextForge Message Format) types, full extension model with 11 typed extensions, capability-gated
filtering, mutability tier enforcement (MonotonicSet, Guarded, WriteToken), and COW-based extension modification to
the CPEX Rust core.
Closes: #17
Changes
cmf/module — CMF Message, ContentPart (tagged enum), domain objects (ToolCall, ToolResult, Resource, etc.),enums, MessageView with OPA serialization
extensions/module — all 11 extension types matching Python: Security (with AgentIdentity), Http, Delegation,Agent, Request, Completion, Provenance, LLM, MCP, Framework, Meta
extensions/monotonic.rs—MonotonicSet<T>add-only set, noremove()at compile timeextensions/guarded.rs—Guarded<T>+WriteTokenfor capability-gated write accessextensions/filter.rs—filter_extensions()with granular security sub-field filtering, slot registry withpolicies
hooks/payload.rs—Extensionsexpanded to 11 slots with Arc immutable + owned mutable/monotonic,cow_copy()for zero-cost COW,
validate_immutable()for tamper detection, write token propagationexecutor.rs—filter_extensions()wired into all 4 phases, write tokens set from capabilities, tier validation(immutable + monotonic) on modified extensions
FilteredExtensionsremoved — singleExtensionstype, handlers receive&Extensions(immutable, zero-copy)cmf_capabilities_demoexample — CMF message + config-driven capability gating end-to-endrcfeature enabled for Arc serializationArchitecture highlights
&Extensions, no clone. 95% of plugins pay nothing.extensions.cow_copy()clones only mutable slots (Arc bumps for 8 of 12 immutableslots). Write tokens propagate from the executor, can't be forged (
pub(crate)constructor).MonotonicSethas noremove(),GuardedrequiresWriteTokenfor.write(). Plugin crates can't construct tokens.validate_immutable()usesArc::ptr_eqto detect immutable slot tampering. Monotonicsuperset check ensures labels only grow.
Arc<Extensions>shared across spawned tasks, one clone into the Arc, thenrefcount bumps per task.
Test plan
cargo run --example plugin_demoworkscargo run --example cmf_capabilities_demoworksNew test coverage