feat: drop CodexExtension (#22140)

Drop `CodexExtension` as not needed for now
This commit is contained in:
jif-oai
2026-05-11 14:19:51 +02:00
committed by GitHub
Unverified
parent 95bfea847d
commit ebd3d53451
7 changed files with 21 additions and 81 deletions
@@ -1,29 +1,23 @@
#[path = "enabled_extensions/shared_state_extension.rs"]
mod shared_state_extension;
use std::sync::Arc;
use codex_extension_api::ExtensionData;
use codex_extension_api::ExtensionRegistryBuilder;
use shared_state_extension::SharedStateExtension;
use shared_state_extension::recorded_style_contributions;
use shared_state_extension::recorded_usage_contributions;
fn main() {
// 1. Build the extension value owned by the host.
let extension = Arc::new(SharedStateExtension);
// 1. Install the contributors for the thread-start input type this host exposes.
let mut builder = ExtensionRegistryBuilder::<()>::new();
shared_state_extension::install(&mut builder);
let registry = builder.build();
// 2. Install it into the registry for the thread-start input type this host exposes.
let registry = ExtensionRegistryBuilder::<()>::new()
.with_extension(extension)
.build();
// 3. The host decides which stores are shared.
// 2. The host decides which stores are shared.
let session_store = ExtensionData::new();
let first_thread_store = ExtensionData::new();
let second_thread_store = ExtensionData::new();
// 4. Reusing the same session store shares session state across threads.
// 3. Reusing the same session store shares session state across threads.
let first_thread_fragments = contribute_prompt(&registry, &session_store, &first_thread_store);
contribute_prompt(&registry, &session_store, &first_thread_store);
contribute_prompt(&registry, &session_store, &second_thread_store);
@@ -2,21 +2,15 @@ use std::sync::Arc;
use std::sync::atomic::AtomicU64;
use std::sync::atomic::Ordering;
use codex_extension_api::CodexExtension;
use codex_extension_api::ContextContributor;
use codex_extension_api::ExtensionData;
use codex_extension_api::ExtensionRegistryBuilder;
use codex_extension_api::PromptFragment;
/// Small tutorial extension that installs two prompt contributors.
#[derive(Debug, Default)]
pub struct SharedStateExtension;
impl CodexExtension<()> for SharedStateExtension {
fn install(self: Arc<Self>, registry: &mut ExtensionRegistryBuilder<()>) {
registry.prompt_contributor(Arc::new(StyleContributor));
registry.prompt_contributor(Arc::new(UsageContributor));
}
/// Installs the tutorial contributors used by the example host.
pub fn install(registry: &mut ExtensionRegistryBuilder<()>) {
registry.prompt_contributor(Arc::new(StyleContributor));
registry.prompt_contributor(Arc::new(UsageContributor));
}
#[derive(Debug)]
@@ -1,12 +0,0 @@
use std::sync::Arc;
use crate::ExtensionRegistryBuilder;
/// First-party extension that can install one or more typed runtime contributions.
///
/// Implementations should use [`Self::install`] only to register the concrete
/// providers they own.
pub trait CodexExtension<C>: Send + Sync {
/// Registers this extension's concrete typed contributions.
fn install(self: Arc<Self>, registry: &mut ExtensionRegistryBuilder<C>);
}
-2
View File
@@ -1,5 +1,4 @@
mod contributors;
mod extension;
mod registry;
mod state;
@@ -14,7 +13,6 @@ pub use contributors::ToolContributor;
pub use contributors::ToolHandler;
pub use contributors::TurnItemContributionFuture;
pub use contributors::TurnItemContributor;
pub use extension::CodexExtension;
pub use registry::ExtensionRegistry;
pub use registry::ExtensionRegistryBuilder;
pub use registry::empty_extension_registry;
+2 -21
View File
@@ -1,13 +1,12 @@
use std::sync::Arc;
use crate::ApprovalInterceptorContributor;
use crate::CodexExtension;
use crate::ContextContributor;
use crate::ThreadStartContributor;
use crate::ToolContributor;
use crate::TurnItemContributor;
/// Mutable registry used while extensions install their typed contributions.
/// Mutable registry used while hosts register typed runtime contributions.
pub struct ExtensionRegistryBuilder<C> {
thread_start_contributors: Vec<Arc<dyn ThreadStartContributor<C>>>,
context_contributors: Vec<Arc<dyn ContextContributor>>,
@@ -34,24 +33,6 @@ impl<C> ExtensionRegistryBuilder<C> {
Self::default()
}
/// Installs one extension and returns the builder.
#[must_use]
pub fn with_extension<E>(mut self, extension: Arc<E>) -> Self
where
E: CodexExtension<C> + 'static,
{
self.install_extension(extension);
self
}
/// Installs one extension into the registry under construction.
pub fn install_extension<E>(&mut self, extension: Arc<E>)
where
E: CodexExtension<C> + 'static,
{
extension.install(self);
}
/// Registers one approval interceptor contributor.
pub fn approval_interceptor_contributor(
&mut self,
@@ -128,7 +109,7 @@ impl<C> ExtensionRegistry<C> {
}
}
/// Creates an empty shared registry for hosts that do not install extensions.
/// Creates an empty shared registry for hosts that do not register contributions.
pub fn empty_extension_registry<C>() -> Arc<ExtensionRegistry<C>> {
Arc::new(ExtensionRegistryBuilder::new().build())
}