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.";
127 std::make_unique<AgentConfigurationPanel>(
129 window_manager->RegisterWindowContent(
131 window_manager->RegisterWindowContent(
132 std::make_unique<AgentPromptEditorPanel>(
134 window_manager->RegisterWindowContent(
135 std::make_unique<AgentBotProfilesPanel>(
137 window_manager->RegisterWindowContent(std::make_unique<AgentBuilderPanel>(
139 window_manager->RegisterWindowContent(
140 std::make_unique<AgentChatPanel>(
agent_chat_.get()));
143 window_manager->RegisterWindowContent(
144 std::make_unique<AgentKnowledgeBasePanel>([
this]() {
148 ImGui::TextDisabled(
"Knowledge service not available");
150 "Build with Z3ED_AI=ON to enable the knowledge service.");
154 window_manager->RegisterWindowContent(
155 std::make_unique<AgentMesenDebugPanel>(
158 window_manager->RegisterWindowContent(
159 std::make_unique<MesenScreenshotEditorPanel>(
162 window_manager->RegisterWindowContent(
163 std::make_unique<OracleStateLibraryEditorPanel>(
166 window_manager->RegisterWindowContent(
167 std::make_unique<FeatureFlagEditorEditorPanel>(
170 window_manager->RegisterWindowContent(std::make_unique<ManifestEditorPanel>(
173 window_manager->RegisterWindowContent(
174 std::make_unique<SramViewerEditorPanel>(
179 [window_manager](
const std::string& panel_id) {
180 if (!panel_id.empty()) {
181 window_manager->OpenWindow(panel_id);
201 ?
"http://localhost:11434"
207 ui.anthropic_key_buf);
211 ?
"https://api.openai.com"
231 if (std::filesystem::exists(profiles_dir)) {
232 for (
const auto& entry :
233 std::filesystem::directory_iterator(profiles_dir)) {
234 if (entry.path().extension() ==
".json") {
235 std::ifstream file(entry.path());
236 if (file.is_open()) {
237 std::string json_content((std::istreambuf_iterator<char>(file)),
238 std::istreambuf_iterator<char>());
240 if (profile_or.ok()) {
247 return absl::OkStatus();
258 return absl::OkStatus();
265 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.
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