/feedback opens the Kigi GitHub issues page

Feedback about an unofficial community build belongs on its own issue
tracker, not Moonshot's feedback endpoint — and this mirrors the
official kimi-cli, whose /feedback opens its repo's issues page
(ISSUE_URL in ui/shell/slash.py). /feedback now returns
Action::OpenUrl(https://github.com/ZacharyZhang-NY/Kigi-CLI/issues),
the same battle-tested browser path /docs web uses.

The now-dead TUI text-feedback pipeline is excised: PromptInputMode::
Feedback (~ prefix composer mode), Action::{EnterFeedbackMode,
SendFeedback}, Effect::SendFeedback (the kigi/feedback ACP POST),
TaskResult::{FeedbackComplete,FeedbackFailed}, and their dispatchers.
The shell-side kigi/feedback ACP extension stays: it is protocol
surface for editor embeddings, OAuth-gated, and shared with kigi/btw.

Gates: workspace check/clippy --all-targets 0/0, fmt, kigi-tui lib
6621 passed / 0 failed.
This commit is contained in:
ZacharyZhang-NY committed 2026-07-18 11:51:13 -04:00
1 parent 0692198719
commit 0dc98a34a6
11 files changed
+74 -221

No files matched your search

@@ -2599,61 +2599,6 @@ pub(crate) fn execute(
}
});
}
Effect::SendFeedback { agent_id, session_id, feedback_text } => {
use kigi_shell::session::ClientType;
use kigi_shell::session::acp_types::ClientFeedbackInput;
let terminal_info = Some(
crate::terminal::terminal_context().feedback_info(),
);
let tx = acp_tx.clone();
tasks
.spawn(async move {
let input = ClientFeedbackInput {
session_id: session_id.0.to_string(),
client_type: ClientType::Tui,
rating_type: None,
rating_value: None,
feedback_text: Some(feedback_text),
feedback_categories: vec![],
context_type: None,
turn_number: None,
request_id: None,
client_version: Some(kigi_version::VERSION.to_string()),
metadata: None,
terminal_info,
};
let raw_params = match serde_json::value::to_raw_value(&input) {
Ok(v) => v,
Err(e) => {
return TaskResult::FeedbackFailed {
agent_id,
error: sanitize_user_error(
&format!("couldn't serialize feedback: {e}"),
),
};
}
};
let request = acp::ExtRequest::new(
"kigi/feedback",
raw_params.into(),
);
match acp_send(request, &tx).await {
Ok(_) => {
TaskResult::FeedbackComplete {
agent_id,
}
}
Err(e) => {
TaskResult::FeedbackFailed {
agent_id,
error: sanitize_user_error(
&format!("couldn't send feedback: {e}"),
),
}
}
}
});
}
Effect::RewriteMemoryNote {
agent_id,
session_id,