Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use ironclaw_host_api::UserId;
use ironclaw_product_workflow::{AutomationName, AutomationProductFacade, RebornAutomationState};
use ironclaw_triggers::{InMemoryTriggerRepository, TriggerId, TriggerRepository, TriggerState};

use crate::automation::RebornAutomationProductFacade;
use crate::automation::facade::RebornAutomationProductFacade;

use super::{caller, make_record, now};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use ironclaw_triggers::{
};
use ironclaw_turns::TurnRunId;

use crate::automation::RebornAutomationProductFacade;
use crate::automation::facade::RebornAutomationProductFacade;

// ---------------------------------------------------------------------------
// Shared test helpers
Expand Down
7 changes: 7 additions & 0 deletions crates/ironclaw_reborn_composition/src/automation/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//! Reborn automation cluster — the product automations facade and the
//! trigger-poller that backs it. Grouped behind one internal module; the
//! crate root re-exports the same public items so the public API is unchanged.

pub(crate) mod facade;
pub(crate) mod trigger_poller;
pub(crate) mod trigger_poller_trusted_submit;
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ use rand::RngExt;
use tokio::task::JoinHandle;
use tokio_util::sync::CancellationToken;

pub(crate) use crate::automation::trigger_poller_trusted_submit::AccessCheckerTriggerFireAuthorizer;
pub(crate) use crate::automation::trigger_poller_trusted_submit::ConversationContentRefMaterializer;
#[cfg(any(test, feature = "test-support"))]
pub(crate) use crate::automation::trigger_poller_trusted_submit::TenantScopedTrustedTriggerFireAuthorizer;
Comment on lines +24 to +27

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since trigger_poller and trigger_poller_trusted_submit are sibling submodules within the same automation module, it is more idiomatic and robust to use relative imports (super::) instead of absolute paths (crate::automation::). This prevents the imports from breaking if the parent automation module is ever renamed or relocated.

pub(crate) use super::trigger_poller_trusted_submit::AccessCheckerTriggerFireAuthorizer;
pub(crate) use super::trigger_poller_trusted_submit::ConversationContentRefMaterializer;
#[cfg(any(test, feature = 
References
  1. When importing items from a parent module into a child module in Rust, use super:: for relative imports instead of the full crate path. This makes the import more idiomatic and concise.

use crate::runtime_input::TriggerPollerSettings;
#[cfg(feature = "slack-v2-host-beta")]
use crate::slack::slack_delivery::PostSubmitDeliveryHook;
pub(crate) use crate::trigger_poller_trusted_submit::AccessCheckerTriggerFireAuthorizer;
pub(crate) use crate::trigger_poller_trusted_submit::ConversationContentRefMaterializer;
#[cfg(any(test, feature = "test-support"))]
pub(crate) use crate::trigger_poller_trusted_submit::TenantScopedTrustedTriggerFireAuthorizer;

mod active_run_lookup;
pub(crate) use active_run_lookup::SnapshotActiveRunLookup;
Expand Down
4 changes: 1 addition & 3 deletions crates/ironclaw_reborn_composition/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ mod runtime_profile_approval_policy;
mod support;
#[cfg(feature = "test-support")]
pub mod test_support;
mod trigger_poller;
mod trigger_poller_trusted_submit;
mod turn_run_snapshot;
mod web_access;
mod webui;
Expand All @@ -86,7 +84,7 @@ mod webui_serve;
mod webui_ws_origin;

pub use admin_token::AdminApiTokenMinter;
pub use automation::RebornAutomationProductFacade;
pub use automation::facade::RebornAutomationProductFacade;
pub use error::RebornBuildError;
pub use extension_host::extension_lifecycle_command::{
RebornExtensionLifecycleCommand, RebornExtensionLifecycleCommandError,
Expand Down
24 changes: 14 additions & 10 deletions crates/ironclaw_reborn_composition/src/runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,17 +135,17 @@ impl OutboundDeliveryTargetProvider for StaticOutboundDeliveryTargetProvider {
Ok(vec![self.entry.clone()])
}
}
use crate::runtime_input::{
PollSettings, RebornRuntimeIdentity, RebornRuntimeInput, TriggerPollerAuthorizerConfig,
TriggerPollerSettings,
};
#[cfg(any(test, feature = "test-support"))]
use crate::trigger_poller::TenantScopedTrustedTriggerFireAuthorizer;
use crate::trigger_poller::{
use crate::automation::trigger_poller::TenantScopedTrustedTriggerFireAuthorizer;
use crate::automation::trigger_poller::{
AccessCheckerTriggerFireAuthorizer, ConversationContentRefMaterializer,
SnapshotActiveRunLookup, TRIGGER_POLLER_SHUTDOWN_TIMEOUT, TriggerPollerCompositionDeps,
TriggerPollerRuntimeHandle, spawn_trigger_poller,
};
use crate::runtime_input::{
PollSettings, RebornRuntimeIdentity, RebornRuntimeInput, TriggerPollerAuthorizerConfig,
TriggerPollerSettings,
};
use crate::{
RebornBuildError, RebornCompositionProfile, RebornProductAuthServices, RebornReadiness,
RebornReadinessState, RebornServices, build_reborn_services,
Expand Down Expand Up @@ -950,8 +950,10 @@ fn build_trigger_fire_authorizer(
authorizer_config: TriggerPollerAuthorizerConfig,
access_checker: Option<Arc<dyn crate::runtime_input::TriggerFireAccessChecker>>,
tenant_id: TenantId,
) -> Result<Arc<dyn crate::trigger_poller_trusted_submit::TriggerFireAuthorizer>, RebornRuntimeError>
{
) -> Result<
Arc<dyn crate::automation::trigger_poller_trusted_submit::TriggerFireAuthorizer>,
RebornRuntimeError,
> {
#[cfg(not(any(test, feature = "test-support")))]
let _ = tenant_id;
match authorizer_config {
Expand All @@ -962,7 +964,9 @@ fn build_trigger_fire_authorizer(
TriggerPollerAuthorizerConfig::CreatorAccessRequired => access_checker
.map(|checker| {
Arc::new(AccessCheckerTriggerFireAuthorizer::new(checker))
as Arc<dyn crate::trigger_poller_trusted_submit::TriggerFireAuthorizer>
as Arc<
dyn crate::automation::trigger_poller_trusted_submit::TriggerFireAuthorizer,
>
})
.ok_or_else(trigger_poller_authorization_required_error),
}
Expand All @@ -979,7 +983,7 @@ fn build_trigger_poller_services_from_conversation_services<B, S>(
turn_coordinator: Arc<dyn TurnCoordinator>,
thread_service: Arc<dyn SessionThreadService>,
default_agent_id: AgentId,
authorizer: Arc<dyn crate::trigger_poller_trusted_submit::TriggerFireAuthorizer>,
authorizer: Arc<dyn crate::automation::trigger_poller_trusted_submit::TriggerFireAuthorizer>,
) -> TriggerPollerServicesInner
where
B: ironclaw_conversations::ConversationBindingService + Clone + 'static,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,5 @@ use ironclaw_triggers::TriggerRepository;
pub fn local_dev_automation_product_facade_for_test(
trigger_repository: Arc<dyn TriggerRepository>,
) -> Arc<dyn AutomationProductFacade> {
Arc::new(crate::automation::RebornAutomationProductFacade::new(
trigger_repository,
))
Arc::new(crate::automation::facade::RebornAutomationProductFacade::new(trigger_repository))
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ pub async fn materialize_trigger_prompt_for_test(
),
ironclaw_triggers::TriggerError,
> {
crate::trigger_poller_trusted_submit::materialize_trigger_prompt_for_test(
crate::automation::trigger_poller_trusted_submit::materialize_trigger_prompt_for_test(
binding_service,
thread_service,
default_agent_id,
Expand Down
2 changes: 1 addition & 1 deletion docs/plans/composition-pubuse.snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ pub use product_auth::api::auth_prompt::{
AuthChallengeProvider, AuthChallengeView, BlockedAuthFlowCanceller,
};
pub use admin_token::AdminApiTokenMinter;
pub use automation::RebornAutomationProductFacade;
pub use automation::facade::RebornAutomationProductFacade;
pub use error::RebornBuildError;
pub use extension_host::extension_lifecycle_command::{
RebornExtensionLifecycleCommand, RebornExtensionLifecycleCommandError,
Expand Down
Loading