pub struct UpdateCertificateTool;Expand description
Corrects the name printed on an already-issued certificate, and optionally the date it was issued on, after the admin confirms. The certificate image is rendered from the row on every view, so both corrections take effect on the existing link.
Trait Implementations§
Source§impl ChatbotToolDeclaration for UpdateCertificateTool
impl ChatbotToolDeclaration for UpdateCertificateTool
Source§const NAME: &'static str = "update_certificate"
const NAME: &'static str = "update_certificate"
The name the LLM calls this tool by. The registries dispatch on it and
Self::get_tool_definition must advertise it, so the two cannot drift apart.
Source§const CATEGORY: ToolCategory = ToolCategory::AdminSupportLearningProgress
const CATEGORY: ToolCategory = ToolCategory::AdminSupportLearningProgress
Which configured category of tools this belongs to. A chatbot offers it only if its
configuration lists this category; the caller must still be authorized for it.
Source§fn offer_requirements(user_context: &ChatbotTurnContext) -> Vec<ToolRequirement>
fn offer_requirements(user_context: &ChatbotTurnContext) -> Vec<ToolRequirement>
What the caller must be allowed to do against the turn itself for this tool to be offered
to the LLM at all. Read more
Source§fn get_tool_definition() -> AzureLLMFunctionToolDefinition
fn get_tool_definition() -> AzureLLMFunctionToolDefinition
The definition sent to the LLM as part of a chat request. Azure rejects it unless
strict
is true and the parameter schema forbids additional properties.Source§impl ConfirmableActionTool for UpdateCertificateTool
impl ConfirmableActionTool for UpdateCertificateTool
type Arguments = UpdateCertificateArguments
Source§type Facts = UpdateCertificateFacts
type Facts = UpdateCertificateFacts
Extra facts Self::execute gathers while performing the mutation, used only to decide
what Self::output_description_instructions should mention for this particular call.
()
for a tool with nothing worth gating on.Source§fn call_requirements(
arguments: &Self::Arguments,
_user_context: &ChatbotTurnContext,
) -> Vec<ToolRequirement>
fn call_requirements( arguments: &Self::Arguments, _user_context: &ChatbotTurnContext, ) -> Vec<ToolRequirement>
What the caller must be allowed to do against what this call actually targets. Checked
before the turn suspends on the call and again immediately before the mutation runs.
fn parse_arguments(arguments: &str) -> ChatbotResult<Self::Arguments>
Source§async fn execute(
conn: &mut PgConnection,
_app_config: &ApplicationConfiguration,
arguments: &Self::Arguments,
_authorization: &ToolAuthorization<Self>,
) -> ChatbotResult<(ExecutedAction, Self::Facts)>
async fn execute( conn: &mut PgConnection, _app_config: &ApplicationConfiguration, arguments: &Self::Arguments, _authorization: &ToolAuthorization<Self>, ) -> ChatbotResult<(ExecutedAction, Self::Facts)>
Performs the mutation. Must re-verify every model-supplied display field against the
database (case-insensitively for emails) and refuse with a descriptive error rather than
mutate on a mismatch, so a wrong or stale display can never mutate a row it doesn’t
describe.
authorization both proves the confirming admin was checked against
this call’s own requirements and names them, so the mutation cannot run ahead of the
check and the audit row cannot credit anyone else.Source§fn output_description_instructions(
arguments: &Self::Arguments,
facts: Option<&Self::Facts>,
app_config: &ApplicationConfiguration,
) -> Option<String>
fn output_description_instructions( arguments: &Self::Arguments, facts: Option<&Self::Facts>, app_config: &ApplicationConfiguration, ) -> Option<String>
Just-in-time instructions for the LLM on how to describe the outcome.
facts is None on
a declined answer (nothing executed) and Some after a successful Self::execute, so
instructions can be conditioned on what this call actually did instead of always
including everything that could ever be true. app_config is available on both branches
(unlike facts) so a verification link can be offered even on a decline.fn declined_output(_arguments: &Self::Arguments) -> String
Auto Trait Implementations§
impl Freeze for UpdateCertificateTool
impl RefUnwindSafe for UpdateCertificateTool
impl Send for UpdateCertificateTool
impl Sync for UpdateCertificateTool
impl Unpin for UpdateCertificateTool
impl UnsafeUnpin for UpdateCertificateTool
impl UnwindSafe for UpdateCertificateTool
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more