pub struct InternalHookEvent {
pub event_type: InternalHookEventType,
pub action: InternalHookAction,
pub session_key: Option<String>,
pub context: Value,
pub timestamp: DateTime<Utc>,
pub messages: Vec<String>,
}Expand description
内部钩子事件
表示系统中发生的一个内部事件,包含事件类型、动作、上下文数据等信息。 事件可以被注册的处理器监听和处理。
§字段
event_type: 事件类型(Agent、Session、Tool、Command、Gateway)action: 事件动作(如 Start、Stop、Create 等)session_key: 可选的会话键,用于关联特定会话context: JSON 格式的上下文数据,包含事件相关的详细信息timestamp: 事件发生的 UTC 时间戳messages: 消息列表,处理器可以向其中推送消息
§事件键
事件键格式为 type:action(如 agent:start、session:create),
用于在注册表中匹配处理器。
§示例
ⓘ
use aster::hooks::internal::{InternalHookEvent, InternalHookEventType, InternalHookAction};
use serde_json::json;
// 创建一个 Agent 启动事件
let event = InternalHookEvent::new(
InternalHookEventType::Agent,
InternalHookAction::Start,
Some("user:session:123".to_string()),
json!({
"agent_id": "agent-001",
"agent_type": "coding"
}),
);
assert_eq!(event.event_key(), "agent:start");Fields§
§event_type: InternalHookEventType事件类型
标识事件所属的系统组件类别。
action: InternalHookAction事件动作
描述事件的具体动作,如启动、停止、创建等。
session_key: Option<String>会话键(可选)
用于关联特定会话的标识符。对于与会话相关的事件, 此字段通常包含会话的唯一标识。
context: Value上下文数据
JSON 格式的上下文数据,包含事件相关的详细信息。 不同类型的事件有不同的上下文结构:
- Agent 事件:
agent_id、agent_type、workspace_dir、error - Session 事件:
session_id、session_key、source、reason - Command 事件:
command_name、command_args、raw_input - Gateway 事件:
connection_id、channel、message
timestamp: DateTime<Utc>时间戳
事件发生的 UTC 时间戳,由 new() 构造函数自动填充。
messages: Vec<String>消息列表
处理器可以向此列表推送消息,用于向用户反馈信息。 初始为空列表。
Implementations§
Source§impl InternalHookEvent
impl InternalHookEvent
Sourcepub fn new(
event_type: InternalHookEventType,
action: InternalHookAction,
session_key: Option<String>,
context: Value,
) -> Self
pub fn new( event_type: InternalHookEventType, action: InternalHookAction, session_key: Option<String>, context: Value, ) -> Self
创建新的内部钩子事件
自动填充 timestamp 为当前 UTC 时间,messages 初始化为空列表。
§参数
event_type: 事件类型action: 事件动作session_key: 可选的会话键context: 上下文数据(JSON 格式)
§示例
ⓘ
use aster::hooks::internal::{InternalHookEvent, InternalHookEventType, InternalHookAction};
use serde_json::json;
let event = InternalHookEvent::new(
InternalHookEventType::Agent,
InternalHookAction::Start,
None,
json!({"agent_id": "agent-001"}),
);
assert!(event.timestamp <= chrono::Utc::now());
assert!(event.messages.is_empty());Sourcepub fn event_key(&self) -> String
pub fn event_key(&self) -> String
获取事件键
返回格式为 type:action 的事件键,用于在注册表中匹配处理器。
§返回值
事件键字符串,如 "agent:start"、"session:create"。
§示例
ⓘ
use aster::hooks::internal::{InternalHookEvent, InternalHookEventType, InternalHookAction};
use serde_json::json;
let event = InternalHookEvent::new(
InternalHookEventType::Session,
InternalHookAction::Create,
None,
json!({}),
);
assert_eq!(event.event_key(), "session:create");Trait Implementations§
Source§impl Clone for InternalHookEvent
impl Clone for InternalHookEvent
Source§fn clone(&self) -> InternalHookEvent
fn clone(&self) -> InternalHookEvent
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for InternalHookEvent
impl Debug for InternalHookEvent
Source§impl<'de> Deserialize<'de> for InternalHookEvent
impl<'de> Deserialize<'de> for InternalHookEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for InternalHookEvent
impl RefUnwindSafe for InternalHookEvent
impl Send for InternalHookEvent
impl Sync for InternalHookEvent
impl Unpin for InternalHookEvent
impl UnsafeUnpin for InternalHookEvent
impl UnwindSafe for InternalHookEvent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.