16#include "absl/strings/str_format.h"
17#include "absl/time/clock.h"
18#include "absl/time/time.h"
49 for (
size_t i = 0; i < tags.size(); ++i) {
53 result.append(tags[i]);
103 {
"Persona",
"Define persona and goals",
false},
104 {
"Tool Stack",
"Select the agent's tools",
false},
105 {
"Automation",
"Configure automation hooks",
false},
106 {
"Validation",
"Describe E2E validation",
false},
107 {
"E2E Checklist",
"Track readiness for end-to-end runs",
false}};
109 "Describe the persona, tone, and constraints for this agent.";
114 if (harness_telemetry_bridge_) {
115 harness_telemetry_bridge_->SetAgentChat(
nullptr);
117 harness_telemetry_bridge_.get());
118 harness_telemetry_bridge_.reset();
136 std::make_unique<AgentConfigurationPanel>(
138 window_manager->RegisterWindowContent(
140 window_manager->RegisterWindowContent(
141 std::make_unique<AgentPromptEditorPanel>(
143 window_manager->RegisterWindowContent(
144 std::make_unique<AgentBotProfilesPanel>(
146 window_manager->RegisterWindowContent(std::make_unique<AgentBuilderPanel>(
148 window_manager->RegisterWindowContent(
149 std::make_unique<AgentChatPanel>(
agent_chat_.get()));
152 window_manager->RegisterWindowContent(
153 std::make_unique<AgentKnowledgeBasePanel>([
this]() {
157 ImGui::TextDisabled(
"Knowledge service not available");
159 "Build with Z3ED_AI=ON to enable the knowledge service.");
163 window_manager->RegisterWindowContent(
164 std::make_unique<AgentMesenDebugPanel>(
167 window_manager->RegisterWindowContent(
168 std::make_unique<MesenScreenshotEditorPanel>(
171 window_manager->RegisterWindowContent(
172 std::make_unique<OracleStateLibraryEditorPanel>(
175 window_manager->RegisterWindowContent(
176 std::make_unique<FeatureFlagEditorEditorPanel>(
179 window_manager->RegisterWindowContent(std::make_unique<ManifestEditorPanel>(
182 window_manager->RegisterWindowContent(
183 std::make_unique<SramViewerEditorPanel>(
188 [window_manager](
const std::string& panel_id) {
189 if (!panel_id.empty()) {
190 window_manager->OpenWindow(panel_id);
210 ?
"http://localhost:11434"
216 ui.anthropic_key_buf);
220 ?
"https://api.openai.com"
240 if (std::filesystem::exists(profiles_dir)) {
241 for (
const auto& entry :
242 std::filesystem::directory_iterator(profiles_dir)) {
243 if (entry.path().extension() ==
".json") {
244 std::ifstream file(entry.path());
245 if (file.is_open()) {
246 std::string json_content((std::istreambuf_iterator<char>(file)),
247 std::istreambuf_iterator<char>());
249 if (profile_or.ok()) {
256 return absl::OkStatus();
267 return absl::OkStatus();
274 return absl::OkStatus();
void SetChatActive(bool active)
std::unique_ptr< MesenScreenshotPanel > mesen_screenshot_panel_
void SyncContextFromProfile()
KnowledgePanelCallback knowledge_panel_callback_
absl::StatusOr< BotProfile > JsonToProfile(const std::string &json) const
std::unique_ptr< OracleStateLibraryPanel > oracle_state_panel_
bool IsChatActive() const
void Initialize() override
AgentBuilderState builder_state_
AgentConfig current_config_
absl::Status Save() override
void DrawPromptEditorPanel()
void DrawFeatureFlagPanel()
std::unique_ptr< FeatureFlagEditorPanel > feature_flag_panel_
std::unique_ptr< AgentConfigPanel > config_panel_
absl::Status EnsureProfilesDirectory()
void SyncProfileUiState()
void SetContext(AgentUIContext *context)
std::unique_ptr< MesenDebugPanel > mesen_debug_panel_
void DrawSramViewerPanel()
AgentUIContext * context_
ProfileUiState profile_ui_state_
void DrawOracleStatePanel()
absl::Status SaveBotProfile(const BotProfile &profile)
std::filesystem::path GetProfilesDirectory() const
std::unique_ptr< TextEditor > common_tiles_editor_
void DrawMesenScreenshotPanel()
std::unique_ptr< TextEditor > prompt_editor_
std::unique_ptr< AgentCollaborationCoordinator > local_coordinator_
void DrawMesenDebugPanel()
std::unique_ptr< SramViewerPanel > sram_viewer_panel_
absl::Status Load() override
BotProfile current_profile_
void DrawBotProfilesPanel()
void MarkProfileUiDirty()
std::unique_ptr< AgentChat > agent_chat_
absl::Status Update() override
void DrawConfigurationPanel()
void ApplyUserSettingsDefaults(bool force=false)
std::unique_ptr< ManifestPanel > manifest_panel_
std::vector< BotProfile > loaded_profiles_
void DrawAgentBuilderPanel()
Unified context for agent UI components.
EditorContext context() const
EditorDependencies dependencies_
void RegisterWindowContent(std::unique_ptr< WindowContent > window)
Register a WindowContent instance for central drawing.
static TestManager & Get()
constexpr char kProviderMock[]
std::string BuildTagsString(const std::vector< std::string > &tags)
void CopyStringToBuffer(const std::string &src, char(&dest)[N])
static const LanguageDefinition & CPlusPlus()
std::string persona_notes
std::vector< Stage > stages
std::string anthropic_api_key
std::vector< std::string > tags
std::string openai_api_key
std::string openai_base_url
std::string gemini_api_key
WorkspaceWindowManager * window_manager