summaryrefslogtreecommitdiff
path: root/makima/frontend/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'makima/frontend/src/lib')
-rw-r--r--makima/frontend/src/lib/api.ts74
1 files changed, 74 insertions, 0 deletions
diff --git a/makima/frontend/src/lib/api.ts b/makima/frontend/src/lib/api.ts
index 2ea1128..100a85a 100644
--- a/makima/frontend/src/lib/api.ts
+++ b/makima/frontend/src/lib/api.ts
@@ -1973,3 +1973,77 @@ export async function answerQuestion(
}
return res.json();
}
+
+// =============================================================================
+// Repository History Types and API
+// =============================================================================
+
+export interface RepositoryHistoryEntry {
+ id: string;
+ ownerId: string;
+ name: string;
+ repositoryUrl: string | null;
+ localPath: string | null;
+ sourceType: "remote" | "local";
+ useCount: number;
+ lastUsedAt: string;
+ createdAt: string;
+}
+
+export interface RepositoryHistoryListResponse {
+ entries: RepositoryHistoryEntry[];
+ total: number;
+}
+
+/**
+ * List all repository history entries.
+ * Returns entries ordered by use_count DESC, last_used_at DESC.
+ */
+export async function listRepositoryHistory(): Promise<RepositoryHistoryListResponse> {
+ const res = await authFetch(`${API_BASE}/api/v1/settings/repository-history`);
+ if (!res.ok) {
+ throw new Error(`Failed to list repository history: ${res.statusText}`);
+ }
+ return res.json();
+}
+
+/**
+ * Get repository suggestions based on history.
+ * Optionally filter by source type and search query.
+ */
+export async function getRepositorySuggestions(
+ sourceType?: "remote" | "local",
+ query?: string,
+ limit?: number
+): Promise<RepositoryHistoryListResponse> {
+ const params = new URLSearchParams();
+ if (sourceType) params.append("source_type", sourceType);
+ if (query) params.append("query", query);
+ if (limit) params.append("limit", limit.toString());
+
+ const queryString = params.toString();
+ const url = `${API_BASE}/api/v1/settings/repository-history/suggestions${
+ queryString ? `?${queryString}` : ""
+ }`;
+
+ const res = await authFetch(url);
+ if (!res.ok) {
+ throw new Error(`Failed to get repository suggestions: ${res.statusText}`);
+ }
+ return res.json();
+}
+
+/**
+ * Delete a repository history entry.
+ */
+export async function deleteRepositoryHistory(id: string): Promise<void> {
+ const res = await authFetch(
+ `${API_BASE}/api/v1/settings/repository-history/${id}`,
+ {
+ method: "DELETE",
+ }
+ );
+ if (!res.ok) {
+ throw new Error(`Failed to delete repository history: ${res.statusText}`);
+ }
+}