-
- {transformedContent}
-
+ {isLoading && (
+
+
+
+ )}
+ {error && (
+
+ {t(I18nKey.MICROAGENT_MANAGEMENT$ERROR_LOADING_MICROAGENT_CONTENT)}
+
+ )}
+ {microagentData && !isLoading && !error && (
+
+ {microagentData.content}
+
+ )}
);
}
diff --git a/frontend/src/hooks/query/use-repository-microagent-content.ts b/frontend/src/hooks/query/use-repository-microagent-content.ts
new file mode 100644
index 0000000000..4b1979ce62
--- /dev/null
+++ b/frontend/src/hooks/query/use-repository-microagent-content.ts
@@ -0,0 +1,17 @@
+import { useQuery } from "@tanstack/react-query";
+import OpenHands from "#/api/open-hands";
+
+export const useRepositoryMicroagentContent = (
+ owner: string,
+ repo: string,
+ filePath: string,
+ cacheDisabled: boolean = false,
+) =>
+ useQuery({
+ queryKey: ["repository", "microagent", "content", owner, repo, filePath],
+ queryFn: () =>
+ OpenHands.getRepositoryMicroagentContent(owner, repo, filePath),
+ enabled: !!owner && !!repo && !!filePath,
+ staleTime: cacheDisabled ? 0 : 1000 * 60 * 5, // 5 minutes
+ gcTime: cacheDisabled ? 0 : 1000 * 60 * 15, // 15 minutes
+ });
diff --git a/frontend/src/i18n/declaration.ts b/frontend/src/i18n/declaration.ts
index 8894dec247..b7c100d8eb 100644
--- a/frontend/src/i18n/declaration.ts
+++ b/frontend/src/i18n/declaration.ts
@@ -734,4 +734,5 @@ export enum I18nKey {
MICROAGENT_MANAGEMENT$WHAT_YOU_WOULD_LIKE_TO_KNOW_ABOUT_THIS_REPO = "MICROAGENT_MANAGEMENT$WHAT_YOU_WOULD_LIKE_TO_KNOW_ABOUT_THIS_REPO",
MICROAGENT_MANAGEMENT$DESCRIBE_WHAT_TO_KNOW_ABOUT_THIS_REPO = "MICROAGENT_MANAGEMENT$DESCRIBE_WHAT_TO_KNOW_ABOUT_THIS_REPO",
MICROAGENT_MANAGEMENT$UPDATE_MICROAGENT_MODAL_DESCRIPTION = "MICROAGENT_MANAGEMENT$UPDATE_MICROAGENT_MODAL_DESCRIPTION",
+ MICROAGENT_MANAGEMENT$ERROR_LOADING_MICROAGENT_CONTENT = "MICROAGENT_MANAGEMENT$ERROR_LOADING_MICROAGENT_CONTENT",
}
diff --git a/frontend/src/i18n/translation.json b/frontend/src/i18n/translation.json
index cb6e6e3c5f..7129030498 100644
--- a/frontend/src/i18n/translation.json
+++ b/frontend/src/i18n/translation.json
@@ -11742,5 +11742,21 @@
"tr": "OpenHands, talimatlarınıza göre mikro ajanı güncelleyecektir.",
"de": "OpenHands aktualisiert den Microagenten basierend auf Ihren Anweisungen.",
"uk": "OpenHands оновить мікроагента відповідно до ваших інструкцій."
+ },
+ "MICROAGENT_MANAGEMENT$ERROR_LOADING_MICROAGENT_CONTENT": {
+ "en": "Error loading microagent content.",
+ "ja": "マイクロエージェントのコンテンツの読み込み中にエラーが発生しました。",
+ "zh-CN": "加载微代理内容时出错。",
+ "zh-TW": "載入微代理內容時發生錯誤。",
+ "ko-KR": "마이크로에이전트 콘텐츠를 불러오는 중 오류가 발생했습니다.",
+ "no": "Feil ved lasting av mikroagent-innhold.",
+ "it": "Errore durante il caricamento del contenuto del microagente.",
+ "pt": "Erro ao carregar o conteúdo do microagente.",
+ "es": "Error al cargar el contenido del microagente.",
+ "ar": "حدث خطأ أثناء تحميل محتوى الوكيل الدقيق.",
+ "fr": "Erreur lors du chargement du contenu du microagent.",
+ "tr": "Mikro ajan içeriği yüklenirken hata oluştu.",
+ "de": "Fehler beim Laden des Microagent-Inhalts.",
+ "uk": "Помилка під час завантаження вмісту мікроагента."
}
}
diff --git a/frontend/src/types/microagent-management.tsx b/frontend/src/types/microagent-management.tsx
index 6d7752728c..d26ba5fe62 100644
--- a/frontend/src/types/microagent-management.tsx
+++ b/frontend/src/types/microagent-management.tsx
@@ -4,11 +4,6 @@ export type TabType = "personal" | "repositories" | "organizations";
export interface RepositoryMicroagent {
name: string;
- type: "repo" | "knowledge";
- content: string;
- triggers: string[];
- inputs: string[];
- tools: string[];
created_at: string;
git_provider: string;
path: string;
diff --git a/frontend/src/utils/utils.ts b/frontend/src/utils/utils.ts
index 7a113a8a23..134f9237f4 100644
--- a/frontend/src/utils/utils.ts
+++ b/frontend/src/utils/utils.ts
@@ -207,3 +207,22 @@ export const constructMicroagentUrl = (
return "";
}
};
+
+/**
+ * Extract repository owner, repo name, and file path from repository and microagent data
+ * @param selectedRepository The selected repository object with full_name property
+ * @param microagent The microagent object with path property
+ * @returns Object containing owner, repo, and filePath
+ *
+ * @example
+ * const { owner, repo, filePath } = extractRepositoryInfo(selectedRepository, microagent);
+ */
+export const extractRepositoryInfo = (
+ selectedRepository: { full_name?: string } | null | undefined,
+ microagent: { path?: string } | null | undefined,
+) => {
+ const [owner, repo] = selectedRepository?.full_name?.split("/") || [];
+ const filePath = microagent?.path || "";
+
+ return { owner, repo, filePath };
+};