use std::collections::BTreeMap;
use schemars::JsonSchema;
use serde::Deserialize;
use serde_json::Value;
pub(super) const LOOK_LINES_MIN: u64 = 1;
pub(super) const LOOK_LINES_MAX: u64 = 1000;
pub(super) const LIST_SESSIONS_SCHEMA_VERSION: &str = "1";
pub(super) const LIST_COMMAND_SESSIONS: &str = "sessions";
pub(super) const TOOL_HELP: &str = "help";
pub(super) const TOOL_LIST: &str = "list";
pub(super) const TOOL_LOOK: &str = "look";
pub(super) const TOOL_RAWW: &str = "raww";
pub(super) const TOOL_SEND: &str = "send";
pub(super) const TOOL_GRANT: &str = "grant";
pub(super) const GRANT_COMMAND_LIST: &str = "list";
pub(super) const GRANT_COMMAND_RESOLVE: &str = "resolve";
pub(super) const GRANT_OUTCOME_SELECTED: &str = "selected";
pub(super) const GRANT_OUTCOME_CANCELLED: &str = "cancelled";
pub(super) const NAMESPACE_AGENTMUX: &str = "agentmux";
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct ListParams {
#[serde(default)]
pub(super) command: Option<String>,
#[schemars(with = "std::collections::BTreeMap<String, serde_json::Value>")]
#[serde(default)]
pub(super) args: Value,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct HelpParams {
#[serde(default)]
pub(super) query: Option<String>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct ListArgs {
#[serde(default)]
pub(super) bundle_name: Option<String>,
#[serde(default)]
pub(super) all: bool,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct SendParams {
#[serde(default)]
pub(super) request_id: Option<String>,
pub(super) message: String,
#[serde(default)]
pub(super) targets: Vec<String>,
#[serde(default)]
pub(super) broadcast: bool,
#[serde(default)]
pub(super) quiescence_timeout_ms: Option<u64>,
#[serde(default)]
pub(super) acp_turn_timeout_ms: Option<u64>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct LookParams {
pub(super) target_session: String,
#[serde(default)]
pub(super) bundle_name: Option<String>,
#[serde(default)]
pub(super) lines: Option<u64>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct GrantParams {
#[serde(default)]
pub(super) command: Option<String>,
#[schemars(with = "std::collections::BTreeMap<String, serde_json::Value>")]
#[serde(default)]
pub(super) args: Value,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct GrantListArgs {
#[serde(default)]
pub(super) bundle_name: Option<String>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Default, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct GrantResolveArgs {
#[serde(default)]
pub(super) permission_request_id: Option<String>,
#[serde(default)]
pub(super) outcome: Option<String>,
#[serde(default)]
pub(super) option_id: Option<String>,
#[serde(default)]
pub(super) bundle_name: Option<String>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}
#[derive(Debug, Deserialize, JsonSchema)]
#[schemars(deny_unknown_fields)]
pub(super) struct RawwParams {
pub(super) target_session: String,
pub(super) text: String,
#[serde(default)]
pub(super) no_enter: bool,
#[serde(default)]
pub(super) request_id: Option<String>,
#[serde(flatten, default)]
#[schemars(skip)]
pub(super) extra_fields: BTreeMap<String, Value>,
}