наблюдаемость: завершить базовый контур Community
Добавить структурированные журналы, метрики, трассировку и безопасный канал критических ошибок. Усилить границы рантайма, тесты, проверку зависимостей и сценарии развёртывания.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
use crank_core::{ApprovalRequest, OperationApprovalPolicy};
|
||||
use crank_registry::PublishedAgentTool;
|
||||
use serde_json::{Value, json};
|
||||
|
||||
pub(super) fn approval_required_response(
|
||||
tool: &PublishedAgentTool,
|
||||
approval: &ApprovalRequest,
|
||||
policy: &OperationApprovalPolicy,
|
||||
) -> Value {
|
||||
let approval_url = format!(
|
||||
"/v1/{}/{}/approvals/{}",
|
||||
tool.workspace_slug,
|
||||
tool.agent_slug,
|
||||
approval.id.as_str()
|
||||
);
|
||||
json!({
|
||||
"status": "approval_required",
|
||||
"approval_id": approval.id.as_str(),
|
||||
"approval_url": approval_url,
|
||||
"approve": {
|
||||
"method": "POST",
|
||||
"url": format!("{approval_url}/approve"),
|
||||
"body": { "approve": "yes" }
|
||||
},
|
||||
"deny": {
|
||||
"method": "POST",
|
||||
"url": format!("{approval_url}/deny"),
|
||||
"body": { "approve": "no" }
|
||||
},
|
||||
"expires_at": approval.expires_at,
|
||||
"risk_level": approval.risk_level,
|
||||
"payload_preview": if policy.show_payload_preview {
|
||||
approval.request_payload.clone()
|
||||
} else {
|
||||
Value::Null
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user