Skip to content

Commit 7ec5ded

Browse files
authored
feat: added similar feature gating of tangent to tangent mode and introspect tool (#2720)
1 parent 9607852 commit 7ec5ded

File tree

5 files changed

+37
-3
lines changed

5 files changed

+37
-3
lines changed

crates/chat-cli/src/cli/chat/cli/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ pub enum SlashCommand {
8989
Experiment(ExperimentArgs),
9090
/// Upgrade to a Q Developer Pro subscription for increased query limits
9191
Subscribe(SubscribeArgs),
92-
/// Toggle tangent mode for isolated conversations
92+
/// (Beta) Toggle tangent mode for isolated conversations. Requires "q settings
93+
/// chat.enableTangentMode true"
94+
#[command(hide = true)]
9395
Tangent(TangentArgs),
9496
#[command(flatten)]
9597
Persist(PersistSubcommand),

crates/chat-cli/src/cli/chat/cli/tangent.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,31 @@ use crate::cli::chat::{
1010
ChatSession,
1111
ChatState,
1212
};
13+
use crate::database::settings::Setting;
1314
use crate::os::Os;
1415

1516
#[derive(Debug, PartialEq, Args)]
1617
pub struct TangentArgs;
1718

1819
impl TangentArgs {
1920
pub async fn execute(self, os: &Os, session: &mut ChatSession) -> Result<ChatState, ChatError> {
21+
// Check if tangent mode is enabled
22+
if !os
23+
.database
24+
.settings
25+
.get_bool(Setting::EnabledTangentMode)
26+
.unwrap_or(false)
27+
{
28+
execute!(
29+
session.stderr,
30+
style::SetForegroundColor(Color::Red),
31+
style::Print("\nTangent mode is disabled. Enable it with: q settings chat.enableTangentMode true\n"),
32+
style::SetForegroundColor(Color::Reset)
33+
)?;
34+
return Ok(ChatState::PromptUser {
35+
skip_printing_tools: true,
36+
});
37+
}
2038
if session.conversation.is_in_tangent_mode() {
2139
// Get duration before exiting tangent mode
2240
let duration_seconds = session.conversation.get_tangent_duration_seconds().unwrap_or(0);

crates/chat-cli/src/cli/chat/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2092,8 +2092,13 @@ impl ChatSession {
20922092
if os
20932093
.database
20942094
.settings
2095-
.get_bool(Setting::IntrospectTangentMode)
2095+
.get_bool(Setting::EnabledTangentMode)
20962096
.unwrap_or(false)
2097+
&& os
2098+
.database
2099+
.settings
2100+
.get_bool(Setting::IntrospectTangentMode)
2101+
.unwrap_or(false)
20972102
&& !self.conversation.is_in_tangent_mode()
20982103
&& self
20992104
.tool_uses

crates/chat-cli/src/cli/chat/tools/introspect.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,13 @@ impl Introspect {
104104
if os
105105
.database
106106
.settings
107-
.get_bool(Setting::IntrospectTangentMode)
107+
.get_bool(Setting::EnabledTangentMode)
108108
.unwrap_or(false)
109+
&& os
110+
.database
111+
.settings
112+
.get_bool(Setting::IntrospectTangentMode)
113+
.unwrap_or(false)
109114
{
110115
let tangent_key_char = os
111116
.database

crates/chat-cli/src/database/settings.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ pub enum Setting {
4141
KnowledgeIndexType,
4242
#[strum(message = "Key binding for fuzzy search command (single character)")]
4343
SkimCommandKey,
44+
#[strum(message = "Enable tangent mode feature (boolean)")]
45+
EnabledTangentMode,
4446
#[strum(message = "Key binding for tangent mode toggle (single character)")]
4547
TangentModeKey,
4648
#[strum(message = "Auto-enter tangent mode for introspect questions (boolean)")]
@@ -90,6 +92,7 @@ impl AsRef<str> for Setting {
9092
Self::KnowledgeChunkOverlap => "knowledge.chunkOverlap",
9193
Self::KnowledgeIndexType => "knowledge.indexType",
9294
Self::SkimCommandKey => "chat.skimCommandKey",
95+
Self::EnabledTangentMode => "chat.enableTangentMode",
9396
Self::TangentModeKey => "chat.tangentModeKey",
9497
Self::IntrospectTangentMode => "introspect.tangentMode",
9598
Self::ChatGreetingEnabled => "chat.greeting.enabled",
@@ -133,6 +136,7 @@ impl TryFrom<&str> for Setting {
133136
"knowledge.chunkOverlap" => Ok(Self::KnowledgeChunkOverlap),
134137
"knowledge.indexType" => Ok(Self::KnowledgeIndexType),
135138
"chat.skimCommandKey" => Ok(Self::SkimCommandKey),
139+
"chat.enableTangentMode" => Ok(Self::EnabledTangentMode),
136140
"chat.tangentModeKey" => Ok(Self::TangentModeKey),
137141
"introspect.tangentMode" => Ok(Self::IntrospectTangentMode),
138142
"chat.greeting.enabled" => Ok(Self::ChatGreetingEnabled),

0 commit comments

Comments
 (0)