type ask to target as Ident (#2621)
This commit is contained in:
parent
0ab6b764be
commit
3df565789c
6 changed files with 12 additions and 3 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -1556,6 +1556,7 @@ dependencies = [
|
|||
"hive-agent-sock",
|
||||
"hive-core-agent-sock",
|
||||
"hive-sh4re",
|
||||
"hive-types",
|
||||
"rmcp",
|
||||
"serde",
|
||||
"serde_json",
|
||||
|
|
@ -1662,6 +1663,7 @@ name = "hive-core-agent-sock"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"hive-sh4re",
|
||||
"hive-types",
|
||||
"serde",
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ clap.workspace = true
|
|||
hive-agent-sock.workspace = true
|
||||
hive-core-agent-sock.workspace = true
|
||||
hive-sh4re.workspace = true
|
||||
hive-types.workspace = true
|
||||
rmcp.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
|
|
|
|||
|
|
@ -181,13 +181,17 @@ impl AgentServer {
|
|||
async fn ask(&self, Parameters(args): Parameters<AskArgs>) -> String {
|
||||
let log = format!("{args:?}");
|
||||
run_tool_envelope("ask", log, async move {
|
||||
let to = match args.to.map(|t| hive_types::Ident::parse(&t)).transpose() {
|
||||
Ok(to) => to,
|
||||
Err(reason) => return format!("invalid `to` agent name: {reason}"),
|
||||
};
|
||||
let (resp, retries) = self
|
||||
.dispatch(hive_core_agent_sock::Request::Ask {
|
||||
question: args.question,
|
||||
options: args.options,
|
||||
multi: args.multi,
|
||||
ttl_seconds: args.ttl_seconds,
|
||||
to: args.to,
|
||||
to,
|
||||
})
|
||||
.await;
|
||||
let s = match resp {
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ pub(crate) async fn dispatch_shared(
|
|||
options,
|
||||
*multi,
|
||||
*ttl_seconds,
|
||||
to.as_deref(),
|
||||
to.as_ref().map(hive_types::Ident::as_str),
|
||||
)
|
||||
.map_or_else(
|
||||
|message| hive_core_agent_sock::Response::Err { message },
|
||||
|
|
|
|||
|
|
@ -8,4 +8,5 @@ workspace = true
|
|||
|
||||
[dependencies]
|
||||
hive-sh4re.workspace = true
|
||||
hive-types.workspace = true
|
||||
serde.workspace = true
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ use hive_sh4re::{
|
|||
CancelLooseEndKind, ContainerInfo, DeliveredMessage, InboxRow, JournalPriority, LooseEnd,
|
||||
MatrixIdentity, ReminderStats, ReminderTiming, SchedulePromptPayload, WireSchedule,
|
||||
};
|
||||
use hive_types::Ident;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// serde `default` helper for `Response::AgentMeta::running` (absent = true).
|
||||
|
|
@ -73,7 +74,7 @@ pub enum Request {
|
|||
#[serde(default)]
|
||||
ttl_seconds: Option<u64>,
|
||||
#[serde(default)]
|
||||
to: Option<String>,
|
||||
to: Option<Ident>,
|
||||
},
|
||||
/// Answer a question previously routed to this agent via
|
||||
/// `HelperEvent::QuestionAsked`. Authorised callers + threading
|
||||
|
|
|
|||
Loading…
Reference in a new issue