assistant.rs

 1mod assistant_panel;
 2mod message_editor;
 3
 4use command_palette_hooks::CommandPaletteFilter;
 5use feature_flags::{Assistant2FeatureFlag, FeatureFlagAppExt};
 6use gpui::{actions, AppContext};
 7
 8pub use crate::assistant_panel::AssistantPanel;
 9
10actions!(assistant2, [ToggleFocus, NewThread, ToggleModelSelector]);
11
12const NAMESPACE: &str = "assistant2";
13
14/// Initializes the `assistant2` crate.
15pub fn init(cx: &mut AppContext) {
16    assistant_panel::init(cx);
17    feature_gate_assistant2_actions(cx);
18}
19
20fn feature_gate_assistant2_actions(cx: &mut AppContext) {
21    const ASSISTANT1_NAMESPACE: &str = "assistant";
22
23    CommandPaletteFilter::update_global(cx, |filter, _cx| {
24        filter.hide_namespace(NAMESPACE);
25    });
26
27    cx.observe_flag::<Assistant2FeatureFlag, _>(move |is_enabled, cx| {
28        if is_enabled {
29            CommandPaletteFilter::update_global(cx, |filter, _cx| {
30                filter.show_namespace(NAMESPACE);
31                filter.hide_namespace(ASSISTANT1_NAMESPACE);
32            });
33        } else {
34            CommandPaletteFilter::update_global(cx, |filter, _cx| {
35                filter.hide_namespace(NAMESPACE);
36                filter.show_namespace(ASSISTANT1_NAMESPACE);
37            });
38        }
39    })
40    .detach();
41}